Add support for original size attribute

git-svn-id: https://svn.apache.org/repos/asf/manifoldcf/branches/CONNECTORS-1204@1682231 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java b/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java
index d7c806e..acd5cdd 100644
--- a/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java
+++ b/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java
@@ -100,6 +100,7 @@
   private final String allowAttributeName;
   private final String denyAttributeName;
   private final String idAttributeName;
+  private final String originalSizeAttributeName;
   private final String modifiedDateAttributeName;
   private final String createdDateAttributeName;
   private final String indexedDateAttributeName;
@@ -131,7 +132,7 @@
     int zkClientTimeout, int zkConnectTimeout,
     String updatePath, String removePath, String statusPath,
     String allowAttributeName, String denyAttributeName, String idAttributeName,
-    String modifiedDateAttributeName, String createdDateAttributeName, String indexedDateAttributeName,
+    String originalSizeAttributeName, String modifiedDateAttributeName, String createdDateAttributeName, String indexedDateAttributeName,
     String fileNameAttributeName, String mimeTypeAttributeName, String contentAttributeName,
     Long maxDocumentLength,
     String commitWithin, boolean useExtractUpdateHandler)
@@ -147,6 +148,7 @@
     this.allowAttributeName = allowAttributeName;
     this.denyAttributeName = denyAttributeName;
     this.idAttributeName = idAttributeName;
+    this.originalSizeAttributeName = originalSizeAttributeName;
     this.modifiedDateAttributeName = modifiedDateAttributeName;
     this.createdDateAttributeName = createdDateAttributeName;
     this.indexedDateAttributeName = indexedDateAttributeName;
@@ -179,7 +181,7 @@
     String updatePath, String removePath, String statusPath,
     String realm, String userID, String password,
     String allowAttributeName, String denyAttributeName, String idAttributeName,
-    String modifiedDateAttributeName, String createdDateAttributeName, String indexedDateAttributeName,
+    String originalSizeAttributeName, String modifiedDateAttributeName, String createdDateAttributeName, String indexedDateAttributeName,
     String fileNameAttributeName, String mimeTypeAttributeName, String contentAttributeName,
     IKeystoreManager keystoreManager, Long maxDocumentLength,
     String commitWithin, boolean useExtractUpdateHandler)
@@ -195,6 +197,7 @@
     this.allowAttributeName = allowAttributeName;
     this.denyAttributeName = denyAttributeName;
     this.idAttributeName = idAttributeName;
+    this.originalSizeAttributeName = originalSizeAttributeName;
     this.modifiedDateAttributeName = modifiedDateAttributeName;
     this.createdDateAttributeName = createdDateAttributeName;
     this.indexedDateAttributeName = indexedDateAttributeName;
@@ -995,6 +998,14 @@
       }
       
       // Write the rest of the attributes
+      if ( originalSizeAttributeName != null )
+      {
+        Long size = document.getOriginalSize();
+        if ( size != null )
+        {
+          outputDoc.addField( originalSizeAttributeName, size.toString() );
+        }
+      }
       if ( modifiedDateAttributeName != null )
       {
         Date date = document.getModifiedDate();
@@ -1067,6 +1078,13 @@
       // Write the id field
       writeField(out,LITERAL+idAttributeName,documentURI);
       // Write the rest of the attributes
+      if (originalSizeAttributeName != null)
+      {
+        Long size = document.getOriginalSize();
+        if (size != null)
+          // Write value
+          writeField(out,LITERAL+modifiedDateAttributeName,size.toString());
+      }
       if (modifiedDateAttributeName != null)
       {
         Date date = document.getModifiedDate();
diff --git a/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConfig.java b/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConfig.java
index c24e4d7..0ec1b57 100644
--- a/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConfig.java
+++ b/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConfig.java
@@ -83,6 +83,8 @@
   public static final String PARAM_STATUSPATH = "Server status handler";
   /** Id field */
   public static final String PARAM_IDFIELD = "Solr id field name";
+  /** Optional original size field */
+  public static final String PARAM_ORIGINALSIZEFIELD = "Solr original size field name";
   /** Optional modified date field */
   public static final String PARAM_MODIFIEDDATEFIELD = "Solr modified date field name";
   /** Optional created date field */
diff --git a/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java b/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java
index 9b55da9..d11dab6 100644
--- a/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java
+++ b/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java
@@ -85,6 +85,7 @@
   
   // Attributes going into Solr
   protected String idAttributeName = null;
+  protected String originalSizeAttributeName = null;
   protected String modifiedDateAttributeName = null;
   protected String createdDateAttributeName = null;
   protected String indexedDateAttributeName = null;
@@ -181,6 +182,7 @@
     excludedMimeTypesString = null;
     excludedMimeTypes = null;
     idAttributeName = null;
+    originalSizeAttributeName = null;
     modifiedDateAttributeName = null;
     createdDateAttributeName = null;
     indexedDateAttributeName = null;
@@ -214,6 +216,10 @@
       if (idAttributeName == null || idAttributeName.length() == 0)
         idAttributeName = "id";
 
+      originalSizeAttributeName = params.getParameter(SolrConfig.PARAM_ORIGINALSIZEFIELD);
+      if (originalSizeAttributeName == null || originalSizeAttributeName.length() == 0)
+        originalSizeAttributeName = null;
+      
       modifiedDateAttributeName = params.getParameter(SolrConfig.PARAM_MODIFIEDDATEFIELD);
       if (modifiedDateAttributeName == null || modifiedDateAttributeName.length() == 0)
         modifiedDateAttributeName = null;
@@ -355,7 +361,7 @@
             connectTimeout,socketTimeout,
             updatePath,removePath,statusPath,realm,userID,password,
             allowAttributeName,denyAttributeName,idAttributeName,
-            modifiedDateAttributeName,createdDateAttributeName,indexedDateAttributeName,
+            originalSizeAttributeName,modifiedDateAttributeName,createdDateAttributeName,indexedDateAttributeName,
             fileNameAttributeName,mimeTypeAttributeName,contentAttributeName,
             keystoreManager,maxDocumentLength,commitWithin,useExtractUpdateHandler);
           
@@ -411,7 +417,7 @@
             zkClientTimeout,zkConnectTimeout,
             updatePath,removePath,statusPath,
             allowAttributeName,denyAttributeName,idAttributeName,
-            modifiedDateAttributeName,createdDateAttributeName,indexedDateAttributeName,
+            originalSizeAttributeName,modifiedDateAttributeName,createdDateAttributeName,indexedDateAttributeName,
             fileNameAttributeName,mimeTypeAttributeName,contentAttributeName,
             maxDocumentLength,commitWithin,useExtractUpdateHandler);
           
@@ -1009,6 +1015,10 @@
     String idField = parameters.getParameter(SolrConfig.PARAM_IDFIELD);
     if (idField == null)
       idField = "id";
+
+    String originalSizeField = parameters.getParameter(SolrConfig.PARAM_ORIGINALSIZEFIELD);
+    if (originalSizeField == null)
+      originalSizeField = "";
     
     String modifiedDateField = parameters.getParameter(SolrConfig.PARAM_MODIFIEDDATEFIELD);
     if (modifiedDateField == null)
@@ -1463,6 +1473,12 @@
 "    </td>\n"+
 "  </tr>\n"+
 "  <tr>\n"+
+"    <td class=\"description\"><nobr>" + Messages.getBodyString(locale,"SolrConnector.OriginalSizeFieldName") + "</nobr></td>\n"+
+"    <td class=\"value\">\n"+
+"      <input name=\"originalsizefield\" type=\"text\" size=\"32\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(originalSizeField)+"\"/>\n"+
+"    </td>\n"+
+"  </tr>\n"+
+"  <tr>\n"+
 "    <td class=\"description\"><nobr>" + Messages.getBodyString(locale,"SolrConnector.ModifiedDateFieldName") + "</nobr></td>\n"+
 "    <td class=\"value\">\n"+
 "      <input name=\"modifieddatefield\" type=\"text\" size=\"32\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(modifiedDateField)+"\"/>\n"+
@@ -1526,6 +1542,7 @@
     {
       out.print(
 "<input type=\"hidden\" name=\"idfield\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(idField)+"\"/>\n"+
+"<input type=\"hidden\" name=\"originalsizefield\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(originalSizeField)+"\"/>\n"+
 "<input type=\"hidden\" name=\"modifieddatefield\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(modifiedDateField)+"\"/>\n"+
 "<input type=\"hidden\" name=\"createddatefield\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(createdDateField)+"\"/>\n"+
 "<input type=\"hidden\" name=\"indexeddatefield\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(indexedDateField)+"\"/>\n"+
@@ -1814,6 +1831,10 @@
     if (idField != null)
       parameters.setParameter(SolrConfig.PARAM_IDFIELD,idField);
 
+    String originalSizeField = variableContext.getParameter("originalsizefield");
+    if (originalSizeField != null)
+      parameters.setParameter(SolrConfig.PARAM_ORIGINALSIZEFIELD,originalSizeField);
+
     String modifiedDateField = variableContext.getParameter("modifieddatefield");
     if (modifiedDateField != null)
       parameters.setParameter(SolrConfig.PARAM_MODIFIEDDATEFIELD,modifiedDateField);
@@ -2255,6 +2276,14 @@
       else
         sb.append('-');
 
+      if (originalSizeAttributeName != null)
+      {
+          sb.append('+');
+          pack(sb,originalSizeAttributeName,'+');
+      }
+      else
+        sb.append('-');
+
       if (modifiedDateAttributeName != null)
       {
           sb.append('+');
diff --git a/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_en_US.properties b/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_en_US.properties
index 5978338..2e7400d 100644
--- a/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_en_US.properties
+++ b/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_en_US.properties
@@ -53,6 +53,7 @@
 SolrConnector.AddZookeeperHost=Add ZooKeeper host
 SolrConnector.Certificate=Certificate:
 SolrConnector.IDFieldName=ID field name:
+SolrConnector.OriginalSizeFieldName=Original size field name:
 SolrConnector.ModifiedDateFieldName=Modified date field name:
 SolrConnector.CreatedDateFieldName=Created date field name:
 SolrConnector.IndexedDateFieldName=Indexed date field name:
diff --git a/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_ja_JP.properties b/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_ja_JP.properties
index 8c4033a..910d3d3 100644
--- a/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_ja_JP.properties
+++ b/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_ja_JP.properties
@@ -53,6 +53,7 @@
 SolrConnector.AddZookeeperHost=ZooKeeperホストを追加
 SolrConnector.Certificate=証明証:
 SolrConnector.IDFieldName=IDフィールド名:
+SolrConnector.OriginalSizeFieldName=Original size field name:
 SolrConnector.ModifiedDateFieldName=更新日付フィールド名:
 SolrConnector.CreatedDateFieldName=作成日付フィールド名:
 SolrConnector.IndexedDateFieldName=Indexed date field name:
diff --git a/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_zh_CN.properties b/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_zh_CN.properties
index 2a15360..75cbf6a 100644
--- a/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_zh_CN.properties
+++ b/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_zh_CN.properties
@@ -53,6 +53,7 @@
 SolrConnector.AddZookeeperHost=添加ZooKeeper主机
 SolrConnector.Certificate=证书: 
 SolrConnector.IDFieldName=ID字段名: 
+SolrConnector.OriginalSizeFieldName=Original size field name:
 SolrConnector.ModifiedDateFieldName=更新日期字段名: 
 SolrConnector.CreatedDateFieldName=生成日期字段名: 
 SolrConnector.IndexedDateFieldName=索引化的日期字段名: