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 2019/03/09 13:01:00 UTC
svn commit: r1855106 -
/manifoldcf/branches/CONNECTORS-1566/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java
Author: kwright
Date: Sat Mar 9 13:01:00 2019
New Revision: 1855106
URL: http://svn.apache.org/viewvc?rev=1855106&view=rev
Log:
More work
Modified:
manifoldcf/branches/CONNECTORS-1566/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java
Modified: manifoldcf/branches/CONNECTORS-1566/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1566/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java?rev=1855106&r1=1855105&r2=1855106&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1566/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java (original)
+++ manifoldcf/branches/CONNECTORS-1566/connectors/csws/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/csws/CswsConnector.java Sat Mar 9 13:01:00 2019
@@ -29,9 +29,16 @@ import org.apache.manifoldcf.connectorco
import org.apache.manifoldcf.connectorcommon.common.InterruptibleSocketFactory;
import org.apache.manifoldcf.core.common.DateParser;
+import javax.xml.datatype.XMLGregorianCalendar;
import com.opentext.ecm.api.OTAuthentication;
-import com.opentext.livelink.service.core.FileAtts;
+import com.opentext.livelink.service.core.DataValue;
+import com.opentext.livelink.service.core.StringValue;
+import com.opentext.livelink.service.core.RealValue;
+import com.opentext.livelink.service.core.BooleanValue;
+import com.opentext.livelink.service.core.DateValue;
+import com.opentext.livelink.service.core.IntegerValue;
import com.opentext.livelink.service.docman.AttributeGroup;
+import com.opentext.livelink.service.docman.Metadata;
import com.opentext.livelink.service.docman.CategoryInheritance;
import com.opentext.livelink.service.docman.GetNodesInContainerOptions;
import com.opentext.livelink.service.docman.Node;
@@ -2856,9 +2863,13 @@ public class CswsConnector extends org.a
if (modifier != null)
rd.addField(GENERAL_MODIFIER,modifier.getName());
+ /* Old-style code. Category paths come out of description. Then
+ we look up the category path to get the category version for the
+ specific document. Then we iterate over all attribute names for the
+ category version, and fetch their values.
+
// Iterate over the metadata items. These are organized by category
// for speed of lookup.
-
Iterator<MetadataItem> catIter = desc.getItems(categoryPaths);
while (catIter.hasNext())
{
@@ -2889,6 +2900,58 @@ public class CswsConnector extends org.a
}
}
+ */
+ // New-style code. We have a list of AttributeGroup objects attached to the item. We iterate over them and
+ // use the ones we want.
+ final List<? extends AttributeGroup> attributeGroups = objInfo.getAttributeGroups();
+ for (final AttributeGroup g : attributeGroups) {
+ // Get the attribute name (qualified? Unqualified? Don't know)
+ // TBD
+ final String groupName = g.getKey();
+ // Get the data values
+ final List<? extends DataValue> dataValues = g.getValues();
+ for (final DataValue dv : dataValues) {
+ // Is this right? TBD
+ final String attrName = groupName + ":" + dv.getKey();
+ // We only know how to handle certain kinds of attributes, ones whose types are scalar
+ if (dv instanceof StringValue) {
+ final String[] attrValues = ((StringValue)dv).getValues().toArray(new String[0]);
+ rd.addField(attrName, attrValues);
+ } else if (dv instanceof RealValue) {
+ final List<? extends Double> realValues = ((RealValue)dv).getValues();
+ final String[] reals = new String[realValues.size()];
+ int i = 0;
+ for (final Double value : realValues) {
+ reals[i++] = value.toString();
+ }
+ rd.addField(attrName, reals);
+ } else if (dv instanceof BooleanValue) {
+ final List<? extends Boolean> boolValues = ((BooleanValue)dv).getValues();
+ final String[] bools = new String[boolValues.size()];
+ int i = 0;
+ for (final Boolean value : boolValues) {
+ bools[i++] = value.toString();
+ }
+ rd.addField(attrName, bools);
+ } else if (dv instanceof DateValue) {
+ final List<? extends XMLGregorianCalendar> dateValues = ((DateValue)dv).getValues();
+ final Date[] dates = new Date[dateValues.size()];
+ int i = 0;
+ for (final XMLGregorianCalendar c : dateValues) {
+ dates[i++] = new Date(c.toGregorianCalendar().getTimeInMillis());
+ }
+ rd.addField(attrName, dates);
+ } else if (dv instanceof IntegerValue) {
+ final List<? extends Long> longValues = ((LongValue)dv).getValues();
+ final String[] longs = new String[longValues.size()];
+ int i = 0;
+ for (final Long value : longValues) {
+ longs[i++] = value.toString();
+ }
+ rd.addField(attrName, longs);
+ }
+ }
+ }
if (actualAcls != null && denyAcls != null)
rd.setSecurity(RepositoryDocument.SECURITY_TYPE_DOCUMENT,actualAcls,denyAcls);
@@ -3206,6 +3269,7 @@ public class CswsConnector extends org.a
}
}
+ /* Unused -- done a different way
protected class GetCategoryVersionThread extends Thread
{
protected final long objID;
@@ -3225,8 +3289,6 @@ public class CswsConnector extends org.a
{
try
{
- // MHL - TBD
- /*
// Set up the right llvalues
// Object ID
@@ -3252,7 +3314,6 @@ public class CswsConnector extends org.a
}
rval = rvalue;
- */
}
catch (Throwable e)
{
@@ -3282,9 +3343,11 @@ public class CswsConnector extends org.a
}
}
-
+ */
+
/** Get a category version for document.
*/
+ /* Unused -- done a different way
protected LLValue getCatVersion(long objID, long catID)
throws ManifoldCFException, ServiceInterruption
{
@@ -3300,7 +3363,9 @@ public class CswsConnector extends org.a
throw new ManifoldCFException("Interrupted: "+e.getMessage(),e,ManifoldCFException.INTERRUPTED);
}
}
+ */
+ /* Unused; done a different way
protected class GetAttributeValueThread extends Thread
{
protected final LLValue categoryVersion;
@@ -3320,8 +3385,6 @@ public class CswsConnector extends org.a
{
try
{
- // MHL - TBD
- /*
// Set up the right llvalues
LLValue children = new LLValue();
int status = LLAttributes.AttrGetValues(categoryVersion,attributeName,
@@ -3351,7 +3414,6 @@ public class CswsConnector extends org.a
j++;
}
}
- */
}
catch (Throwable e)
{
@@ -3381,9 +3443,11 @@ public class CswsConnector extends org.a
}
}
-
+ */
+
/** Get an attribute value from a category version.
*/
+ /* Unused -- done a different way
protected String[] getAttributeValue(LLValue categoryVersion, String attributeName)
throws ManifoldCFException, ServiceInterruption
{
@@ -3399,7 +3463,8 @@ public class CswsConnector extends org.a
throw new ManifoldCFException("Interrupted: "+e.getMessage(),e,ManifoldCFException.INTERRUPTED);
}
}
-
+ */
+
protected class GetObjectRightsThread extends Thread
{
protected final long objID;
@@ -3857,6 +3922,23 @@ public class CswsConnector extends org.a
}
/**
+ * Get AttributeGroups
+ */
+ public List<? extends AttributeGroup> getAttributeGroups()
+ throws ManifoldCFException, ServiceInterruption
+ {
+ final Node elem = getObjectValue();
+ if (elem == null) {
+ return null;
+ }
+ final Metadata m = elem.getMetadata();
+ if (m == null) {
+ return new ArrayList<>(0);
+ }
+ return m.getAttributeGroups();
+ }
+
+ /**
* Returns the category ID specified by the path name.
* @param startPath is the folder name, ending in a category name (a string with slashes as separators)
*/