Handle the case where the attribute is repeated

git-svn-id: https://svn.apache.org/repos/asf/manifoldcf/branches/CONNECTORS-1313@1743120 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnector.java b/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnector.java
index 6ea6b5f..4128d0b 100644
--- a/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnector.java
+++ b/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnector.java
@@ -1819,6 +1819,24 @@
           i++;
       }
 
+      // Now, maybe do add
+      final String newAttributeName;
+      final String newAttributeOp = variableContext.getParameter(seqPrefix+"attr_op");
+      if (newAttributeOp != null && newAttributeOp.equals("Add"))
+      {
+        final String attributeName = variableContext.getParameter(seqPrefix+"attr_name");
+        final String attributeQuery = variableContext.getParameter(seqPrefix+"attr_query");
+        SpecificationNode node = new SpecificationNode(JDBCConstants.attributeQueryNode);
+        node.setAttribute(JDBCConstants.attributeName, attributeName);
+        newAttributeName = attributeName;
+        node.setValue(attributeQuery);
+        ds.addChild(ds.getChildCount(),node);
+      }
+      else
+      {
+        newAttributeName = null;
+      }
+
       int attributeCount = Integer.parseInt(xc);
       for (int attributeIndex = 0; attributeIndex < attributeCount; attributeIndex++)
       {
@@ -1827,25 +1845,16 @@
         {
           // Include this!!
           final String attributeName = variableContext.getParameter(seqPrefix+"attr_"+attributeIndex+"_name");
-          final String attributeQuery = variableContext.getParameter(seqPrefix+"attr_"+attributeIndex+"_query");
-          SpecificationNode node = new SpecificationNode(JDBCConstants.attributeQueryNode);
-          node.setAttribute(JDBCConstants.attributeName, attributeName);
-          node.setValue(attributeQuery);
-          ds.addChild(ds.getChildCount(),node);
+          if (newAttributeName == null || !attributeName.equals(newAttributeName)) {
+            final String attributeQuery = variableContext.getParameter(seqPrefix+"attr_"+attributeIndex+"_query");
+            SpecificationNode node = new SpecificationNode(JDBCConstants.attributeQueryNode);
+            node.setAttribute(JDBCConstants.attributeName, attributeName);
+            node.setValue(attributeQuery);
+            ds.addChild(ds.getChildCount(),node);
+          }
         }
       }
       
-      // Now, maybe do add
-      final String newAttributeOp = variableContext.getParameter(seqPrefix+"attr_op");
-      if (newAttributeOp != null && newAttributeOp.equals("Add"))
-      {
-        final String attributeName = variableContext.getParameter(seqPrefix+"attr_name");
-        final String attributeQuery = variableContext.getParameter(seqPrefix+"attr_query");
-        SpecificationNode node = new SpecificationNode(JDBCConstants.attributeQueryNode);
-        node.setAttribute(JDBCConstants.attributeName, attributeName);
-        node.setValue(attributeQuery);
-        ds.addChild(ds.getChildCount(),node);
-      }
     }
     
     xc = variableContext.getParameter(seqPrefix+"specsecurity");