Author: kwright
Date: Thu Nov 29 23:22:34 2012
New Revision: 1415453

URL: http://svn.apache.org/viewvc?rev=1415453&view=rev
Log:
Fix for CONNECTORS-573. Add a way of overriding the default path separator in 
the Livelink connector.

Modified:
    manifoldcf/trunk/CHANGES.txt
    
manifoldcf/trunk/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java
    
manifoldcf/trunk/connectors/livelink/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/livelink/common_en_US.properties
    
manifoldcf/trunk/connectors/livelink/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/livelink/common_ja_JP.properties

Modified: manifoldcf/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/CHANGES.txt?rev=1415453&r1=1415452&r2=1415453&view=diff
==============================================================================
--- manifoldcf/trunk/CHANGES.txt (original)
+++ manifoldcf/trunk/CHANGES.txt Thu Nov 29 23:22:34 2012
@@ -3,6 +3,10 @@ $Id$
 
 ======================= 1.1-dev =====================
 
+CONNECTORS-573: Add the ability to specify path separator characters
+in the LiveLink connector.
+(David Morana, Karl Wright)
+
 CONNECTORS-571: MySQL timeout was not being handled properly.
 (Shigeki Kobayashi, Karl Wright)
 

Modified: 
manifoldcf/trunk/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java?rev=1415453&r1=1415452&r2=1415453&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java
 (original)
+++ 
manifoldcf/trunk/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java
 Thu Nov 29 23:22:34 2012
@@ -911,6 +911,7 @@ public class LivelinkConnector extends o
     // Look at the metadata attributes.
     // So that the version strings are comparable, we will put them in an 
array first, and sort them.
     String pathAttributeName = null;
+    String pathSeparator = null;
     HashMap holder = new HashMap();
     MatchMap matchMap = new MatchMap();
     boolean includeAllMetadata = false;
@@ -952,7 +953,12 @@ public class LivelinkConnector extends o
         }
       }
       else if (n.getType().equals("pathnameattribute"))
+      {
         pathAttributeName = n.getAttributeValue("value");
+        pathSeparator = n.getAttributeValue("separator");
+        if (pathSeparator == null)
+          pathSeparator = "/";
+      }
       else if (n.getType().equals("pathmap"))
       {
         // Path mapping info also needs to be looked at, because it affects 
what is
@@ -991,7 +997,7 @@ public class LivelinkConnector extends o
     // This starts with = since ; is used by another optional component (the 
forced acls)
     StringBuilder pathNameAttributeVersion = new StringBuilder();
     if (pathAttributeName != null)
-      
pathNameAttributeVersion.append("=").append(pathAttributeName).append(":").append(matchMap);
+      
pathNameAttributeVersion.append("=").append(pathAttributeName).append(":").append(pathSeparator).append(":").append(matchMap);
 
     // The version string includes the following:
     // 1) The modify date for the document
@@ -2332,7 +2338,7 @@ public class LivelinkConnector extends o
 "<table class=\"displaytable\">\n"+
 "  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"+
 "  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.Security")+"</nobr></td>\n"+
+"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.SecurityColon")+"</nobr></td>\n"+
 "    <td class=\"value\">\n"+
 "      <input type=\"radio\" name=\"specsecurity\" value=\"on\" 
"+(securityOn?"checked=\"true\"":"")+" 
/>"+Messages.getBodyString(locale,"LivelinkConnector.Enabled")+"\n"+
 "      <input type=\"radio\" name=\"specsecurity\" value=\"off\" 
"+((securityOn==false)?"checked=\"true\"":"")+" 
/>"+Messages.getBodyString(locale,"LivelinkConnector.Disabled")+"\n"+
@@ -2425,12 +2431,15 @@ public class LivelinkConnector extends o
     // Find the path-value metadata attribute name
     i = 0;
     String pathNameAttribute = "";
+    String pathNameSeparator = "/";
     while (i < ds.getChildCount())
     {
       SpecificationNode sn = ds.getChild(i++);
       if (sn.getType().equals("pathnameattribute"))
       {
         pathNameAttribute = sn.getAttributeValue("value");
+        if (sn.getAttributeValue("separator") != null)
+          pathNameSeparator = sn.getAttributeValue("separator");
       }
     }
 
@@ -2687,9 +2696,13 @@ public class LivelinkConnector extends o
 "  <tr><td class=\"separator\" colspan=\"4\"><hr/></td></tr>\n"+
 "  <tr>\n"+
 "    <td class=\"description\" 
colspan=\"1\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.PathAttributeName")+"</nobr></td>\n"+
-"    <td class=\"value\" colspan=\"3\">\n"+
+"    <td class=\"value\" colspan=\"1\">\n"+
 "      <input type=\"text\" name=\"specpathnameattribute\" size=\"20\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(pathNameAttribute)+"\"/>\n"+
 "    </td>\n"+
+"    <td class=\"description\" 
colspan=\"1\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.PathSeparatorString")+"</nobr></td>\n"+
+"    <td class=\"value\" colspan=\"1\">\n"+
+"      <input type=\"text\" name=\"specpathnameseparator\" size=\"20\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(pathNameSeparator)+"\"/>\n"+
+"    </td>\n"+
 "  </tr>\n"+
 "  <tr><td class=\"separator\" colspan=\"4\"><hr/></td></tr>\n"
       );
@@ -2770,6 +2783,7 @@ public class LivelinkConnector extends o
       out.print(
 "<input type=\"hidden\" name=\"metadatacount\" 
value=\""+Integer.toString(k)+"\"/>\n"+
 "<input type=\"hidden\" name=\"specpathnameattribute\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(pathNameAttribute)+"\"/>\n"+
+"<input type=\"hidden\" name=\"specpathnameseparator\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(pathNameSeparator)+"\"/>\n"+
 "<input type=\"hidden\" name=\"specmappingcount\" 
value=\""+Integer.toString(matchMap.getMatchCount())+"\"/>\n"
       );
       i = 0;
@@ -3201,6 +3215,9 @@ public class LivelinkConnector extends o
     xc = variableContext.getParameter("specpathnameattribute");
     if (xc != null)
     {
+      String separator = variableContext.getParameter("specpathnameseparator");
+      if (separator == null)
+        separator = "/";
       // Delete old one
       int i = 0;
       while (i < ds.getChildCount())
@@ -3215,6 +3232,7 @@ public class LivelinkConnector extends o
       {
         SpecificationNode node = new SpecificationNode("pathnameattribute");
         node.setAttribute("value",xc);
+        node.setAttribute("separator",separator);
         ds.addChild(ds.getChildCount(),node);
       }
     }
@@ -3384,7 +3402,7 @@ public class LivelinkConnector extends o
     }
     out.print(
 "  <tr>\n"+
-"    <td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.Security")+"</td>\n"+
+"    <td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.SecurityColon")+"</td>\n"+
 "    <td 
class=\"value\">"+(securityOn?Messages.getBodyString(locale,"LivelinkConnector.Enabled2"):Messages.getBodyString(locale,"LivelinkConnector.Disabled"))+"</td>\n"+
 "  </tr>\n"+
 "\n"+
@@ -3494,32 +3512,39 @@ public class LivelinkConnector extends o
     // Find the path-name metadata attribute name
     i = 0;
     String pathNameAttribute = "";
+    String pathSeparator = "/";
     while (i < ds.getChildCount())
     {
       SpecificationNode sn = ds.getChild(i++);
       if (sn.getType().equals("pathnameattribute"))
       {
         pathNameAttribute = sn.getAttributeValue("value");
+        if (sn.getAttributeValue("separator") != null)
+          pathSeparator = sn.getAttributeValue("separator");
       }
     }
-    out.print(
-"  <tr>\n"
-    );
     if (pathNameAttribute.length() > 0)
     {
       out.print(
+"  <tr>\n"+
 "    <td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.PathNameMetadataAttribute")+"</td>\n"+
-"    <td 
class=\"value\">"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(pathNameAttribute)+"</td>\n"
+"    <td 
class=\"value\">"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(pathNameAttribute)+"</td>\n"+
+"  </tr>\n"+
+"  <tr>\n"+
+"    <td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.PathSeparatorString")+"</td>\n"+
+"    <td 
class=\"value\">"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(pathSeparator)+"</td>\n"+
+"  </tr>\n"
       );
     }
     else
     {
       out.print(
-"    <td class=\"message\" 
colspan=\"2\">"+Messages.getBodyString(locale,"LivelinkConnector.NoPathNameMetadataAttributeSpecified")+"</td>\n"
+"  <tr>\n"+
+"    <td class=\"message\" 
colspan=\"2\">"+Messages.getBodyString(locale,"LivelinkConnector.NoPathNameMetadataAttributeSpecified")+"</td>\n"+
+"  </tr>\n"
       );
     }
     out.print(
-"  </tr>\n"+
 "\n"+
 "  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"+
 "\n"+
@@ -5708,6 +5733,9 @@ public class LivelinkConnector extends o
     // The path attribute name
     protected String pathAttributeName;
 
+    // The path separator
+    protected String pathSeparator;
+    
     // The node ID to path name mapping (which acts like a cache)
     protected Map pathMap = new HashMap();
 
@@ -5719,12 +5747,18 @@ public class LivelinkConnector extends o
       throws ManifoldCFException
     {
       pathAttributeName = null;
+      pathSeparator = null;
       int i = 0;
       while (i < spec.getChildCount())
       {
         SpecificationNode n = spec.getChild(i++);
         if (n.getType().equals("pathnameattribute"))
+        {
           pathAttributeName = n.getAttributeValue("value");
+          pathSeparator = n.getAttributeValue("separator");
+          if (pathSeparator == null)
+            pathSeparator = "/";
+        }
         else if (n.getType().equals("pathmap"))
         {
           String pathMatch = n.getAttributeValue("match");
@@ -5817,7 +5851,7 @@ public class LivelinkConnector extends o
           String parentPath = getNodePathString(parentIdentifier);
           if (parentPath == null)
             return null;
-          path = parentPath + "/"+ name;
+          path = parentPath + pathSeparator + name;
         }
 
         pathMap.put(documentIdentifier,path);

Modified: 
manifoldcf/trunk/connectors/livelink/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/livelink/common_en_US.properties
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/livelink/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/livelink/common_en_US.properties?rev=1415453&r1=1415452&r2=1415453&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/livelink/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/livelink/common_en_US.properties
 (original)
+++ 
manifoldcf/trunk/connectors/livelink/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/livelink/common_en_US.properties
 Thu Nov 29 23:22:34 2012
@@ -87,7 +87,7 @@ LivelinkConnector.NoIncludeExcludeFilesD
 LivelinkConnector.AddFileSpecification=Add file specification
 LivelinkConnector.Include=Include
 LivelinkConnector.Exclude=Exclude
-LivelinkConnector.Security=Security:
+LivelinkConnector.SecurityColon=Security:
 LivelinkConnector.Enabled=Enabled&nbsp;
 LivelinkConnector.Disabled=Disabled
 LivelinkConnector.DeleteToken=Delete token #
@@ -108,6 +108,7 @@ LivelinkConnector.PickAFolder=-- Pick a 
 LivelinkConnector.AddCategory=Add category
 LivelinkConnector.PickACategory=-- Pick a category --
 LivelinkConnector.PathAttributeName=Path attribute name:
+LivelinkConnector.PathSeparatorString=Path separator string:
 LivelinkConnector.DeleteMapping=Delete mapping #
 LivelinkConnector.NoMappingsSpecified=No mappings specified
 LivelinkConnector.AddToMappings=Add to mappings

Modified: 
manifoldcf/trunk/connectors/livelink/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/livelink/common_ja_JP.properties
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/livelink/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/livelink/common_ja_JP.properties?rev=1415453&r1=1415452&r2=1415453&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/livelink/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/livelink/common_ja_JP.properties
 (original)
+++ 
manifoldcf/trunk/connectors/livelink/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/livelink/common_ja_JP.properties
 Thu Nov 29 23:22:34 2012
@@ -87,7 +87,7 @@ LivelinkConnector.NoIncludeExcludeFilesD
 LivelinkConnector.AddFileSpecification=ファイルパターンを追加
 LivelinkConnector.Include=含む
 LivelinkConnector.Exclude=除外
-LivelinkConnector.Security=セキュリティ:
+LivelinkConnector.SecurityColon=セキュリティ:
 LivelinkConnector.Enabled=有効
 LivelinkConnector.Disabled=無効
 LivelinkConnector.DeleteToken=トークンを削除: #
@@ -108,6 +108,7 @@ LivelinkConnector.PickAFolder=-- フ�
 LivelinkConnector.AddCategory=カテゴリの追加
 LivelinkConnector.PickACategory=-- カテゴリを選択してください --
 LivelinkConnector.PathAttributeName=パス属性名:
+LivelinkConnector.PathSeparatorString=Path separator string:
 LivelinkConnector.DeleteMapping=マップを削除: #
 LivelinkConnector.NoMappingsSpecified=マップが指定されていません
 LivelinkConnector.AddToMappings=マップに追加
@@ -117,7 +118,8 @@ LivelinkConnector.FileSpecs=ファ
 
LivelinkConnector.NoFileSpecsSpecified=ファイルパターンは指定されていません
 LivelinkConnector.Enabled2=有効
 LivelinkConnector.AccessTokens=アクセストークン:
-LivelinkConnector.OnlySpecifiedMetadataWillBeIngested=指定されたメタデータのみを収集しますLivelinkConnector.AllDocumentMetadataWillBeIngested=すべてのコンテンツメタデータを収集します
+LivelinkConnector.OnlySpecifiedMetadataWillBeIngested=指定されたメタデータのみを収集します
+LivelinkConnector.AllDocumentMetadataWillBeIngested=すべてのコンテンツメタデータを収集します
 LivelinkConnector.MetadataSpecification=メタデータパターン:
 LivelinkConnector.SpecificMetadata=特定のメタデータ:
 
LivelinkConnector.NoMetadataSpecified=メタデータは指定されていません


Reply via email to