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 2013/02/12 00:46:09 UTC

svn commit: r1444994 - in /manifoldcf/trunk: CHANGES.txt connectors/elasticsearch/connector/src/main/java/org/apache/manifoldcf/agents/output/elasticsearch/ElasticSearchIndex.java

Author: kwright
Date: Mon Feb 11 23:46:08 2013
New Revision: 1444994

URL: http://svn.apache.org/r1444994
Log:
Final checkin for CONNECTORS-641.

Modified:
    manifoldcf/trunk/CHANGES.txt
    manifoldcf/trunk/connectors/elasticsearch/connector/src/main/java/org/apache/manifoldcf/agents/output/elasticsearch/ElasticSearchIndex.java

Modified: manifoldcf/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/CHANGES.txt?rev=1444994&r1=1444993&r2=1444994&view=diff
==============================================================================
--- manifoldcf/trunk/CHANGES.txt (original)
+++ manifoldcf/trunk/CHANGES.txt Mon Feb 11 23:46:08 2013
@@ -3,6 +3,10 @@ $Id$
 
 ======================= 1.2-dev =====================
 
+CONNECTORS-641: Add filename, mimetype, acls, and proper escaping
+to ElasticSearch connector.
+(Karl Wright)
+
 CONNECTORS-633: Remove dependency on custom version of xerces;
 extend the simple tag parser to be able to handle XML, and move it into
 core/fuzzyml for general use.

Modified: manifoldcf/trunk/connectors/elasticsearch/connector/src/main/java/org/apache/manifoldcf/agents/output/elasticsearch/ElasticSearchIndex.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/elasticsearch/connector/src/main/java/org/apache/manifoldcf/agents/output/elasticsearch/ElasticSearchIndex.java?rev=1444994&r1=1444993&r2=1444994&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/elasticsearch/connector/src/main/java/org/apache/manifoldcf/agents/output/elasticsearch/ElasticSearchIndex.java (original)
+++ manifoldcf/trunk/connectors/elasticsearch/connector/src/main/java/org/apache/manifoldcf/agents/output/elasticsearch/ElasticSearchIndex.java Mon Feb 11 23:46:08 2013
@@ -42,6 +42,11 @@ import org.apache.manifoldcf.crawler.sys
 public class ElasticSearchIndex extends ElasticSearchConnection
 {
 
+  /** The allow attribute name */
+  protected final static String allowAttributeName = "allow_token_";
+  /** The deny attribute name */
+  protected final static String denyAttributeName = "deny_token_";
+
   private class IndexRequestEntity implements HttpEntity
   {
 
@@ -90,31 +95,18 @@ public class ElasticSearchIndex extends 
       {
         pw.print("{");
         Iterator<String> i = document.getFields();
-        boolean existentFields = false;
+        boolean needComma = false;
         while (i.hasNext()){
           String fieldName = i.next();
           String[] fieldValues = document.getFieldAsStrings(fieldName);
-          if(fieldValues.length>1){
-            for(int j=0; j<fieldValues.length; j++){
-              String fieldValue = fieldValues[j];
-              pw.print(jsonStringEscape(fieldName)+" : "+jsonStringEscape(fieldValue));
-              if(j<fieldValues.length-1){
-                pw.print(",");
-              }
-              existentFields = true;
-            }
-          } else if(fieldValues.length==1){
-            String fieldValue = fieldValues[0];
-            pw.print(jsonStringEscape(fieldName)+" : "+jsonStringEscape(fieldValue));
-            if(i.hasNext()){
-              pw.print(",");
-            }
-            existentFields = true;
-          }
+          needComma = writeField(pw, needComma, fieldName, fieldValues);
         }
-        
+
+        needComma = writeACLs(pw, needComma, "document", document.getACL(), document.getDenyACL());
+        needComma = writeACLs(pw, needComma, "share", document.getShareACL(), document.getShareDenyACL());
+
         if(inputStream!=null){
-          if(existentFields){
+          if(needComma){
             pw.print(",");
           }
           pw.print("\"type\" : \"attachment\",");
@@ -158,6 +150,31 @@ public class ElasticSearchIndex extends 
 
   }
 
+  protected static boolean writeField(PrintWriter pw, boolean needComma,
+    String fieldName, String[] fieldValues)
+    throws IOException
+  {
+    for(int j=0; j<fieldValues.length; j++){
+      if (needComma)
+        pw.print(",");
+      String fieldValue = fieldValues[j];
+      pw.print(jsonStringEscape(fieldName)+" : "+jsonStringEscape(fieldValue));
+      needComma = true;
+    }
+    return needComma;
+  }
+  
+  /** Output an acl level */
+  protected static boolean writeACLs(PrintWriter pw, boolean needComma,
+    String aclType, String[] acl, String[] denyAcl)
+    throws IOException
+  {
+    String metadataACLName = allowAttributeName + aclType;
+    needComma = writeField(pw,needComma,metadataACLName,acl);
+    String metadataDenyACLName = denyAttributeName + aclType;
+    return writeField(pw,needComma,metadataDenyACLName,denyAcl);
+  }
+
   protected static String jsonStringEscape(String value)
   {
     StringBuilder sb = new StringBuilder("\"");
@@ -172,6 +189,7 @@ public class ElasticSearchIndex extends 
     return sb.toString();
   }
   
+
   public ElasticSearchIndex(HttpClient client, ElasticSearchConfig config)
   {
     super(config, client);