Author: kwright
Date: Thu Nov 14 18:09:22 2013
New Revision: 1542002
URL: http://svn.apache.org/r1542002
Log:
Apply Benjamin Brandmeier's fix to recognize dc:creator in RSS 2.0 feeds.
Modified:
manifoldcf/trunk/connectors/rss/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/rss/RSSConnector.java
Modified:
manifoldcf/trunk/connectors/rss/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/rss/RSSConnector.java
URL:
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/rss/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/rss/RSSConnector.java?rev=1542002&r1=1542001&r2=1542002&view=diff
==============================================================================
---
manifoldcf/trunk/connectors/rss/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/rss/RSSConnector.java
(original)
+++
manifoldcf/trunk/connectors/rss/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/rss/RSSConnector.java
Thu Nov 14 18:09:22 2013
@@ -3850,6 +3850,7 @@ public class RSSConnector extends org.ap
protected String titleField = null;
protected String descriptionField = null;
protected String authorEmailField = null;
+ protected String authorNameField = null;
protected ArrayList categoryField = new ArrayList();
protected File contentsFile = null;
@@ -3894,6 +3895,11 @@ public class RSSConnector extends org.ap
// "author" tag, which contains email
return new
XMLStringParsingContext(theStream,namespace,localName,qName,atts);
}
+ else if (localName.equals("creator"))
+ {
+ // "creator" tag which contains name (like dc:creator)
+ return new
XMLStringParsingContext(theStream,namespace,localName,qName,atts);
+ }
else
{
// Handle potentially longer fields. Both "description" and "content"
fields can potentially be large; they are thus
@@ -3994,6 +4000,10 @@ public class RSSConnector extends org.ap
{
authorEmailField = ((XMLStringParsingContext)theContext).getValue();
}
+ else if (theTag.equals("creator"))
+ {
+ authorNameField = ((XMLStringParsingContext)theContext).getValue();
+ }
else
{
// What we want is: (a) if dechromed mode is NONE, just put the
description file in the description field; (b)
@@ -4091,7 +4101,7 @@ public class RSSConnector extends org.ap
if (contentsFile == null && filter.getChromedContentMode() !=
CHROMED_METADATA_ONLY)
{
// It's a reference! Add it.
- String[] dataNames = new
String[]{"pubdate","title","source","authoremail","category","description"};
+ String[] dataNames = new
String[]{"pubdate","title","source","authoremail","authorname","category","description"};
String[][] dataValues = new String[dataNames.length][];
if (origDate != null)
dataValues[0] = new String[]{origDate.toString()};
@@ -4100,15 +4110,17 @@ public class RSSConnector extends org.ap
dataValues[2] = new String[]{documentIdentifier};
if (authorEmailField != null)
dataValues[3] = new String[]{authorEmailField};
- dataValues[4] = new String[categoryField.size()];
+ if (authorNameField != null)
+ dataValues[4] = new String[]{authorNameField};
+ dataValues[5] = new String[categoryField.size()];
int q = 0;
while (q < categoryField.size())
{
- (dataValues[4])[q] = (String)categoryField.get(q);
+ (dataValues[5])[q] = (String)categoryField.get(q);
q++;
}
if (descriptionField != null)
- dataValues[5] = new String[]{descriptionField};
+ dataValues[6] = new String[]{descriptionField};
// Add document reference, not including the data to pass
down, but including a description
activities.addDocumentReference(newIdentifier,documentIdentifier,null,dataNames,dataValues,origDate);
}
@@ -4122,7 +4134,7 @@ public class RSSConnector extends org.ap
// Since the dechromed data is available from the feed, the
possibility remains of passing the document
// Now, set up the carrydown info
- String[] dataNames = new
String[]{"pubdate","title","source","authoremail","category","data","description"};
+ String[] dataNames = new
String[]{"pubdate","title","source","authoremail","authorname","category","data","description"};
Object[][] dataValues = new Object[dataNames.length][];
if (origDate != null)
dataValues[0] = new String[]{origDate.toString()};
@@ -4131,23 +4143,25 @@ public class RSSConnector extends org.ap
dataValues[2] = new String[]{documentIdentifier};
if (authorEmailField != null)
dataValues[3] = new String[]{authorEmailField};
- dataValues[4] = new String[categoryField.size()];
+ if (authorNameField != null)
+ dataValues[4] = new String[]{authorNameField};
+ dataValues[5] = new String[categoryField.size()];
int q = 0;
while (q < categoryField.size())
{
- (dataValues[4])[q] = (String)categoryField.get(q);
+ (dataValues[5])[q] = (String)categoryField.get(q);
q++;
}
if (descriptionField != null)
- dataValues[6] = new String[]{descriptionField};
+ dataValues[7] = new String[]{descriptionField};
if (contentsFile == null)
{
CharacterInput ci = new NullCharacterInput();
try
{
- dataValues[5] = new Object[]{ci};
+ dataValues[6] = new Object[]{ci};
// Add document reference, including the data to pass
down, and the dechromed content too
activities.addDocumentReference(newIdentifier,documentIdentifier,null,dataNames,dataValues,origDate);
@@ -4163,7 +4177,7 @@ public class RSSConnector extends org.ap
try
{
contentsFile = null;
- dataValues[5] = new Object[]{ci};
+ dataValues[6] = new Object[]{ci};
// Add document reference, including the data to pass
down, and the dechromed content too
activities.addDocumentReference(newIdentifier,documentIdentifier,null,dataNames,dataValues,origDate);