You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2012/12/07 21:46:00 UTC
svn commit: r1418466 -
/manifoldcf/branches/CONNECTORS-578/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java
Author: kwright
Date: Fri Dec 7 20:45:59 2012
New Revision: 1418466
URL: http://svn.apache.org/viewvc?rev=1418466&view=rev
Log:
Add general metadata support
Modified:
manifoldcf/branches/CONNECTORS-578/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java
Modified: manifoldcf/branches/CONNECTORS-578/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-578/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java?rev=1418466&r1=1418465&r2=1418466&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-578/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java (original)
+++ manifoldcf/branches/CONNECTORS-578/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java Fri Dec 7 20:45:59 2012
@@ -106,6 +106,15 @@ public class LivelinkConnector extends o
// allowed; they must be mapped to the appropriate volume object before
// being returned to the crawler.
+ // Metadata names for general metadata fields
+ protected final static String GENERAL_NAME_FIELD = "general_name";
+ protected final static String GENERAL_DESCRIPTION_FIELD = "general_description";
+ protected final static String GENERAL_CREATIONDATE_FIELD = "general_creationdate";
+ protected final static String GENERAL_MODIFYDATE_FIELD = "general_modifydate";
+ protected final static String GENERAL_OWNER = "general_owner";
+ protected final static String GENERAL_CREATOR = "general_creator";
+ protected final static String GENERAL_MODIFIER = "general_modifier";
+
// Signal that we have set up a connection properly
private boolean hasBeenSetup = false;
@@ -664,29 +673,6 @@ public class LivelinkConnector extends o
return viewBasePath+"?func=ll&objID="+documentIdentifier.substring(colonPosition+1)+"&objAction=download";
}
- /** Convert a document identifier to an object ID. MUST be a simple document, not a folder or project.
- *@param documentIdentifier is the document identifier.
- *@return the object id, or -1 if documentIdentifier does not describe a document.
- */
- protected static int convertToObjectID(String documentIdentifier)
- throws ManifoldCFException
- {
- if (!documentIdentifier.startsWith("D"))
- return -1;
- int colonPosition = documentIdentifier.indexOf(":",1);
- try
- {
- if (colonPosition == -1)
- return Integer.parseInt(documentIdentifier.substring(1));
- else
- return Integer.parseInt(documentIdentifier.substring(colonPosition+1));
- }
- catch (NumberFormatException e)
- {
- throw new ManifoldCFException("Bad document identifier: "+e.getMessage(),e);
- }
- }
-
/** Request arbitrary connector information.
* This method is called directly from the API in order to allow API users to perform any one of several connector-specific
* queries.
@@ -1364,13 +1350,13 @@ public class LivelinkConnector extends o
{
if (Logging.connectors.isDebugEnabled())
Logging.connectors.debug("Livelink: Processing document "+Integer.toString(vol)+":"+Integer.toString(objID));
- if (checkIngest(objID,spec))
+ if (checkIngest(llc,objID,spec))
{
if (Logging.connectors.isDebugEnabled())
Logging.connectors.debug("Livelink: Decided to ingest document "+Integer.toString(vol)+":"+Integer.toString(objID));
// Grab the access tokens for this file from the version string, inside ingest method.
- ingestFromLiveLink(documentIdentifiers[i],versions[i],activities,desc,sDesc);
+ ingestFromLiveLink(llc,documentIdentifiers[i],versions[i],activities,desc,sDesc);
}
else
{
@@ -3693,7 +3679,8 @@ public class LivelinkConnector extends o
* @param documentIdentifier is the document identifier (as far as the crawler knows).
* @param activities is the process activity structure, so we can ingest
*/
- protected void ingestFromLiveLink(String documentIdentifier, String version,
+ protected void ingestFromLiveLink(LivelinkContext llc,
+ String documentIdentifier, String version,
IProcessActivity activities,
MetadataDescription desc, SystemMetadataDescription sDesc)
throws ManifoldCFException, ServiceInterruption
@@ -3719,9 +3706,52 @@ public class LivelinkConnector extends o
RepositoryDocument rd = new RepositoryDocument();
+ int colonPos = documentIdentifier.indexOf(":",1);
+
+ int objID;
+ int vol;
+
+ if (colonPos == -1)
+ {
+ objID = new Integer(documentIdentifier.substring(1)).intValue();
+ vol = LLENTWK_VOL;
+ }
+ else
+ {
+ objID = new Integer(documentIdentifier.substring(colonPos+1)).intValue();
+ vol = new Integer(documentIdentifier.substring(1,colonPos)).intValue();
+ }
+
+ // Add general metadata
+ ObjectInformation objInfo = llc.getObjectInformation(vol,objID);
+ VersionInformation versInfo = llc.getVersionInformation(vol,objID,0);
+ if (!objInfo.exists())
+ {
+ Logging.connectors.debug("Livelink: No object "+contextMsg+": not ingesting");
+ return;
+ }
+ if (!versInfo.exists())
+ {
+ Logging.connectors.debug("Livelink: No version data "+contextMsg+": not ingesting");
+ return;
+ }
+
+ rd.addField(GENERAL_NAME_FIELD,objInfo.getName());
+ rd.addField(GENERAL_DESCRIPTION_FIELD,objInfo.getComments());
+ rd.addField(GENERAL_CREATIONDATE_FIELD,objInfo.getCreationDate().toString());
+ rd.addField(GENERAL_MODIFYDATE_FIELD,versInfo.getModifyDate().toString());
+ UserInformation owner = llc.getUserInformation(objInfo.getOwnerId().intValue());
+ UserInformation creator = llc.getUserInformation(objInfo.getCreatorId().intValue());
+ UserInformation modifier = llc.getUserInformation(versInfo.getOwnerId().intValue());
+ if (owner != null)
+ rd.addField(GENERAL_OWNER,owner.getName());
+ if (creator != null)
+ rd.addField(GENERAL_CREATOR,creator.getName());
+ if (modifier != null)
+ rd.addField(GENERAL_MODIFIER,modifier.getName());
+
// Iterate over the metadata items. These are organized by category
// for speed of lookup.
- int objID = convertToObjectID(documentIdentifier);
// Unpack version string
int startPos = 0;
@@ -5957,7 +5987,7 @@ public class LivelinkConnector extends o
*@param objID is the file ID.
*@param documentSpecification is the specification.
*/
- protected boolean checkIngest(int objID, DocumentSpecification documentSpecification)
+ protected boolean checkIngest(LivelinkContext llc, int objID, DocumentSpecification documentSpecification)
throws ManifoldCFException
{
// Since the only exclusions at this point are not based on file contents, this is a no-op.