Code that transports display URL through to list item indexing
git-svn-id: https://svn.apache.org/repos/asf/manifoldcf/branches/CONNECTORS-813@1544011 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/IFileStream.java b/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/IFileStream.java
index 1b67fb1..97355de 100644
--- a/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/IFileStream.java
+++ b/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/IFileStream.java
@@ -20,6 +20,6 @@
public interface IFileStream
{
- public void addFile(String relPath)
+ public void addFile(String relPath, String displayURI)
throws ManifoldCFException;
}
diff --git a/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SPSProxyHelper.java b/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SPSProxyHelper.java
index 87a8fd6..39d37b1 100644
--- a/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SPSProxyHelper.java
+++ b/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SPSProxyHelper.java
@@ -589,7 +589,7 @@
Object node = nodeDocs.get(j);
Logging.connectors.debug( node.toString() );
String relPath = docs.getData( docs.getElement( node, "FileRef" ) );
- fileStream.addFile( relPath );
+ fileStream.addFile( relPath, null );
}
}
else
@@ -634,7 +634,8 @@
{
resultCount++;
String relPath = result.getAttribute("FileRef");
- fileStream.addFile( relPath );
+ String displayURL = result.getAttribute("ListItemURL");
+ fileStream.addFile( relPath, displayURL );
}
}
diff --git a/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SharePointRepository.java b/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SharePointRepository.java
index 74af464..c0a5225 100644
--- a/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SharePointRepository.java
+++ b/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharepoint/SharePointRepository.java
@@ -782,13 +782,20 @@
String[] denyTokens = activities.retrieveParentData(documentIdentifier, "denyTokens");
String[] listIDs = activities.retrieveParentData(documentIdentifier, "guids");
String[] listFields = activities.retrieveParentData(documentIdentifier, "fields");
-
+ String[] displayURLs = activities.retrieveParentData(documentIdentifier, "displayURLs");
+
String listID;
if (listIDs.length >= 1)
listID = listIDs[0];
else
listID = null;
+ String displayURL;
+ if (displayURLs.length >= 1)
+ displayURL = displayURLs[0];
+ else
+ displayURL = null;
+
if (listID != null)
{
String[] sortedMetadataFields = getInterestingFieldSetSorted(metadataInfo,listFields);
@@ -803,7 +810,6 @@
metadataDescription.add("Created");
metadataDescription.add("ID");
metadataDescription.add("GUID");
- metadataDescription.add("EncodedAbsUrl");
// The document path includes the library, with no leading slash, and is decoded.
String decodedItemPathWithoutSite = decodedItemPath.substring(cutoff+1);
Map<String,String> values = proxy.getFieldValues( metadataDescription, encodedSitePath, listID, "/Lists/" + decodedItemPathWithoutSite, dspStsWorks );
@@ -811,7 +817,6 @@
String createdDate = values.get("Created");
String id = values.get("ID");
String guid = values.get("GUID");
- String absURL = values.get("EncodedAbsUrl");
if (modifiedDate != null)
{
// Item has a modified date so we presume it exists.
@@ -833,7 +838,7 @@
packDate(sb,createdDateValue);
pack(sb,id,'+');
pack(sb,guid,'+');
- pack(sb,absURL,'+');
+ pack(sb,displayURL,'+');
// The rest of this is unparseable
sb.append(versionToken);
sb.append(pathNameAttributeVersion);
@@ -1374,9 +1379,9 @@
String guid = guidBuffer.toString();
// List item URL
- StringBuilder absURLBuffer = new StringBuilder();
- startPosition = unpack(absURLBuffer,version,startPosition,'+');
- String absURL = absURLBuffer.toString();
+ StringBuilder relURLBuffer = new StringBuilder();
+ startPosition = unpack(relURLBuffer,version,startPosition,'+');
+ String relURL = relURLBuffer.toString();
// We need the list ID, which we've already fetched, so grab that from the parent data.
String[] listIDs = activities.retrieveParentData(documentIdentifier, "guids");
@@ -1441,9 +1446,9 @@
// Convert the modified document path to an unmodified one, plus a library path.
String encodedItemPath = encodePath(decodedListPath.substring(0,listCutoff) + "/Lists/" + decodedItemPath.substring(listCutoff+1));
-
// Generate the URL we are going to use
- String itemUrl = fileBaseUrl + encodedItemPath;
+ String itemUrl = fileBaseUrl + relURL; //fileBaseUrl + encodedItemPath;
+
if (Logging.connectors.isDebugEnabled())
Logging.connectors.debug( "SharePoint: Processing list item '"+documentIdentifier+"'; url: '" + itemUrl + "'" );
@@ -1492,7 +1497,7 @@
}
data.addField("GUID",guid);
- activities.ingestDocument( documentIdentifier, version, absURL , data );
+ activities.ingestDocument( documentIdentifier, version, itemUrl , data );
}
finally
{
@@ -2179,7 +2184,8 @@
this.dataValues[3] = fields;
}
- public void addFile(String relPath)
+ @Override
+ public void addFile(String relPath, String displayURL)
throws ManifoldCFException
{
@@ -2217,7 +2223,7 @@
}
}
- protected final static String[] listItemStreamDataNames = new String[]{"accessTokens", "denyTokens", "guids", "fields"};
+ protected final static String[] listItemStreamDataNames = new String[]{"accessTokens", "denyTokens", "guids", "fields", "displayURLs"};
protected class ListItemStream implements IFileStream
{
@@ -2247,7 +2253,8 @@
this.dataValues[3] = fields;
}
- public void addFile(String relPath)
+ @Override
+ public void addFile(String relPath, String displayURL)
throws ManifoldCFException
{
// First, convert the relative path to a full path
@@ -2256,6 +2263,8 @@
relPath = rootPath + sitePath + "/" + relPath;
}
+ String fullPath = relPath;
+
// Now, strip away what we don't want - namely, the root path. This makes the path relative to the root.
if ( relPath.startsWith(rootPath) )
{
@@ -2277,6 +2286,11 @@
// The way I've chosen to do this is to use a triple slash at that point, as a separator.
String modifiedPath = relPath.substring(0,siteListPath.length()) + "//" + relPath.substring(siteListPath.length());
+ if (displayURL != null)
+ dataValues[4] = new String[]{displayURL};
+ else
+ dataValues[4] = new String[]{fullPath};
+
activities.addDocumentReference( modifiedPath, documentIdentifier, null, listItemStreamDataNames, dataValues );
}
else