You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by ma...@apache.org on 2015/10/13 17:39:01 UTC

[1/9] oodt git commit: OODT-887 fix the remaning blockers

Repository: oodt
Updated Branches:
  refs/heads/master 944f662bd -> 3903325ce


OODT-887 fix the remaning blockers


Project: http://git-wip-us.apache.org/repos/asf/oodt/repo
Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/ef02b60c
Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/ef02b60c
Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/ef02b60c

Branch: refs/heads/master
Commit: ef02b60cf22bb026ed7c304ca6587b2163ac0b4d
Parents: 06b5dec
Author: Tom Barber <to...@analytical-labs.com>
Authored: Sat Oct 10 13:50:22 2015 +0100
Committer: Tom Barber <to...@analytical-labs.com>
Committed: Sat Oct 10 13:50:22 2015 +0100

----------------------------------------------------------------------
 .../cas/pushpull/protocol/ProtocolHandler.java  | 85 +++++++++++---------
 1 file changed, 47 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oodt/blob/ef02b60c/pushpull/src/main/java/org/apache/oodt/cas/pushpull/protocol/ProtocolHandler.java
----------------------------------------------------------------------
diff --git a/pushpull/src/main/java/org/apache/oodt/cas/pushpull/protocol/ProtocolHandler.java b/pushpull/src/main/java/org/apache/oodt/cas/pushpull/protocol/ProtocolHandler.java
index e572ee3..b8f3b61 100644
--- a/pushpull/src/main/java/org/apache/oodt/cas/pushpull/protocol/ProtocolHandler.java
+++ b/pushpull/src/main/java/org/apache/oodt/cas/pushpull/protocol/ProtocolHandler.java
@@ -129,49 +129,58 @@ public class ProtocolHandler {
   public Protocol getAppropriateProtocolBySite(RemoteSite remoteSite,
       boolean allowReuse) throws ProtocolException {
     Protocol protocol = null;
-    if ((allowReuse && ((protocol = reuseProtocols.get(remoteSite.getURL())) == null))
-        || !allowReuse) {
-      ProtocolFactory protocolFactory = this.urlAndProtocolFactory
-          .get(remoteSite.getURL());
-      if (protocolFactory == null) {
-        LinkedList<Class<ProtocolFactory>> protocolClasses = pi
-            .getProtocolClassesForProtocolType(remoteSite.getURL()
-                .getProtocol());
-        for (Class<ProtocolFactory> clazz : protocolClasses) {
-          try {
-            if ((protocol = (protocolFactory = clazz.newInstance())
-                .newInstance()) != null) {
-              if (!connect(protocol, remoteSite, true)) {
-                LOG.log(
-                    Level.WARNING,
-                    "ProtocolFactory "
-                        + protocolFactory.getClass().getCanonicalName()
-                        + " is not compatible with server at "
-                        + remoteSite.getURL());
-                protocol = null;
-              } else {
-                this.urlAndProtocolFactory.put(remoteSite.getURL().toURI(),
-                    protocolFactory);
-                break;
+    try {
+      if ((allowReuse && ((protocol = reuseProtocols.get(remoteSite.getURL().toURI())) == null))
+          || !allowReuse) {
+        ProtocolFactory protocolFactory = null;
+        try {
+          protocolFactory = this.urlAndProtocolFactory
+              .get(remoteSite.getURL().toURI());
+        } catch (URISyntaxException e) {
+          LOG.log(Level.SEVERE, "could not convert url to uri: Message: " + e.getMessage());
+        }
+        if (protocolFactory == null) {
+          LinkedList<Class<ProtocolFactory>> protocolClasses = pi
+              .getProtocolClassesForProtocolType(remoteSite.getURL()
+                                                           .getProtocol());
+          for (Class<ProtocolFactory> clazz : protocolClasses) {
+            try {
+              if ((protocol = (protocolFactory = clazz.newInstance())
+                  .newInstance()) != null) {
+                if (!connect(protocol, remoteSite, true)) {
+                  LOG.log(
+                      Level.WARNING,
+                      "ProtocolFactory "
+                          + protocolFactory.getClass().getCanonicalName()
+                          + " is not compatible with server at "
+                          + remoteSite.getURL());
+                  protocol = null;
+                } else {
+                  this.urlAndProtocolFactory.put(remoteSite.getURL().toURI(),
+                      protocolFactory);
+                  break;
+                }
               }
+            } catch (Exception e) {
+              LOG.log(Level.WARNING, "Failed to instanciate protocol " + clazz
+                  + " for " + remoteSite.getURL());
             }
-          } catch (Exception e) {
-            LOG.log(Level.WARNING, "Failed to instanciate protocol " + clazz
-                + " for " + remoteSite.getURL());
           }
+          if (protocol == null)
+            throw new ProtocolException("Failed to get appropriate protocol for "
+                + remoteSite);
+        } else {
+          connect(protocol = protocolFactory.newInstance(), remoteSite, false);
         }
-        if (protocol == null)
-          throw new ProtocolException("Failed to get appropriate protocol for "
-              + remoteSite);
-      } else {
-        connect(protocol = protocolFactory.newInstance(), remoteSite, false);
+        if (allowReuse)
+          try {
+            this.reuseProtocols.put(remoteSite.getURL().toURI(), protocol);
+          } catch (URISyntaxException e) {
+            LOG.log(Level.SEVERE, "Couildn't covert URL to URI Mesage: " + e.getMessage());
+          }
       }
-      if (allowReuse)
-        try {
-          this.reuseProtocols.put(remoteSite.getURL().toURI(), protocol);
-        } catch (URISyntaxException e) {
-          LOG.log(Level.SEVERE, "Couildn't covert URL to URI Mesage: " + e.getMessage());
-        }
+    } catch (URISyntaxException e) {
+      LOG.log(Level.SEVERE, "could not convert url to uri: Message: "+e.getMessage());
     }
     return protocol;
   }


[8/9] oodt git commit: OODT-889 Fix topN

Posted by ma...@apache.org.
OODT-889 Fix topN


Project: http://git-wip-us.apache.org/repos/asf/oodt/repo
Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/2a172a06
Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/2a172a06
Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/2a172a06

Branch: refs/heads/master
Commit: 2a172a06d3e0a716f7bf9fd22d00785658940ee9
Parents: d757222
Author: Tom Barber <to...@analytical-labs.com>
Authored: Tue Oct 13 16:19:40 2015 +0100
Committer: Tom Barber <to...@analytical-labs.com>
Committed: Tue Oct 13 16:19:40 2015 +0100

----------------------------------------------------------------------
 CHANGES.txt                                                   | 1 +
 .../org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java    | 7 ++++++-
 2 files changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oodt/blob/2a172a06/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index b339ec3..b3ca821 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -14,6 +14,7 @@ Release 0.11 - Current Development
 
 * OODT-888 Replace += with StringBuilders to improve performance (magicaltrout)
 
+* OODT-889 Fix TopN with Type
 Release 0.10 - 08/30/2015
 
 * OODT-871 Issues with OODT 0.10 RC#1 (lewismc, mattmann)

http://git-wip-us.apache.org/repos/asf/oodt/blob/2a172a06/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
----------------------------------------------------------------------
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
index 98e0eb5..c91060e 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
@@ -728,7 +728,12 @@ public class LuceneCatalog implements Catalog {
 
         for (int pageNum = 1; pageNum < numPages + 1; pageNum++) {
             List<Product> pageProducts = paginateQuery(query, type, pageNum, null);
-            products.addAll(pageProducts);
+            if(n<=pageProducts.size()) {
+                products.addAll(pageProducts.subList(0, n));
+            }
+            else{
+                products.addAll(pageProducts);
+            }
         }
 
         return products;


[6/9] oodt git commit: OODT-888 replace =+ with StringBuilder to improve concat performance

Posted by ma...@apache.org.
OODT-888 replace =+ with StringBuilder to improve concat performance


Project: http://git-wip-us.apache.org/repos/asf/oodt/repo
Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/4286c92a
Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/4286c92a
Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/4286c92a

Branch: refs/heads/master
Commit: 4286c92a1329319c6ab0d317523c85bb1e924c15
Parents: 631cd23
Author: Tom Barber <to...@analytical-labs.com>
Authored: Sat Oct 10 16:32:43 2015 +0100
Committer: Tom Barber <to...@analytical-labs.com>
Committed: Sat Oct 10 16:32:43 2015 +0100

----------------------------------------------------------------------
 .../view/prompts/QueryBuilderPrompt.java        |  39 ++--
 .../cas/filemgr/catalog/DataSourceCatalog.java  | 223 +++++++++----------
 2 files changed, 122 insertions(+), 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oodt/blob/4286c92a/app/fmbrowser/src/main/java/org/apache/oodt/cas/filemgr/browser/view/prompts/QueryBuilderPrompt.java
----------------------------------------------------------------------
diff --git a/app/fmbrowser/src/main/java/org/apache/oodt/cas/filemgr/browser/view/prompts/QueryBuilderPrompt.java b/app/fmbrowser/src/main/java/org/apache/oodt/cas/filemgr/browser/view/prompts/QueryBuilderPrompt.java
index 5204db5..b030ee6 100644
--- a/app/fmbrowser/src/main/java/org/apache/oodt/cas/filemgr/browser/view/prompts/QueryBuilderPrompt.java
+++ b/app/fmbrowser/src/main/java/org/apache/oodt/cas/filemgr/browser/view/prompts/QueryBuilderPrompt.java
@@ -17,35 +17,22 @@
 
 package org.apache.oodt.cas.filemgr.browser.view.prompts;
 
+import org.apache.oodt.cas.filemgr.browser.controller.WindowListener;
+import org.apache.oodt.cas.filemgr.browser.model.CasDB;
 import org.apache.oodt.cas.filemgr.structs.RangeQueryCriteria;
 import org.apache.oodt.cas.filemgr.structs.TermQueryCriteria;
 
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Font;
+import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.FocusEvent;
 import java.awt.event.FocusListener;
 
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
+import javax.swing.*;
 import javax.swing.border.CompoundBorder;
 import javax.swing.border.EmptyBorder;
 import javax.swing.border.LineBorder;
 
-import org.apache.oodt.cas.filemgr.browser.controller.WindowListener;
-import org.apache.oodt.cas.filemgr.browser.model.CasDB;
-
 public class QueryBuilderPrompt extends JFrame {
 
   protected CasDB database;
@@ -292,22 +279,22 @@ public class QueryBuilderPrompt extends JFrame {
     }
 
     public String getQuery() {
-      String q = new String();
+      StringBuilder q = new StringBuilder();
       for (int i = 0; i < this.getComponentCount(); i++) {
         Component c = this.getComponent(i);
         if (c instanceof TermQueryPanel) {
-          q += ((TermQueryPanel) c).getOp() + " ";
-          q += ((TermQueryPanel) c).getElement() + ":";
-          q += ((TermQueryPanel) c).getText() + " ";
+          q.append(((TermQueryPanel) c).getOp()).append(" ");
+          q.append(((TermQueryPanel) c).getElement()).append(":");
+          q.append(((TermQueryPanel) c).getText()).append(" ");
         } else if (c instanceof RangeQueryPanel) {
-          q += ((RangeQueryPanel) c).getOp() + " ";
-          q += ((RangeQueryPanel) c).getElement() + ":[";
-          q += ((RangeQueryPanel) c).getStart() + " TO ";
-          q += ((RangeQueryPanel) c).getStop() + "] ";
+          q.append(((RangeQueryPanel) c).getOp()).append(" ");
+          q.append(((RangeQueryPanel) c).getElement()).append(":[");
+          q.append(((RangeQueryPanel) c).getStart()).append(" TO ");
+          q.append(((RangeQueryPanel) c).getStop()).append("] ");
         }
       }
 
-      return q;
+      return q.toString();
     }
 
     public org.apache.oodt.cas.filemgr.structs.Query getCasQuery() {

http://git-wip-us.apache.org/repos/asf/oodt/blob/4286c92a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/DataSourceCatalog.java
----------------------------------------------------------------------
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/DataSourceCatalog.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/DataSourceCatalog.java
index 155e263..5a01e1f 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/DataSourceCatalog.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/DataSourceCatalog.java
@@ -828,15 +828,15 @@ public class DataSourceCatalog implements Catalog {
             conn = dataSource.getConnection();
             statement = conn.createStatement();
 
-            String getProductRefSql = "SELECT * FROM "
+            StringBuilder getProductRefSql = new StringBuilder("SELECT * FROM "
                     + product.getProductType().getName() + "_reference"
-		+ " WHERE product_id = " + quoteIt(product.getProductId());
+		+ " WHERE product_id = " + quoteIt(product.getProductId()));
 
-            if(this.orderedValues) getProductRefSql += " ORDER BY pkey";
+            if(this.orderedValues) getProductRefSql.append(" ORDER BY pkey");
 
             LOG.log(Level.FINE, "getProductReferences: Executing: "
                     + getProductRefSql);
-            rs = statement.executeQuery(getProductRefSql);
+            rs = statement.executeQuery(getProductRefSql.toString());
 
             references = new Vector<Reference>();
             while (rs.next()) {
@@ -1067,14 +1067,14 @@ public class DataSourceCatalog implements Catalog {
             conn = dataSource.getConnection();
             statement = conn.createStatement();
 
-            String metadataSql = "SELECT * FROM "
+            StringBuilder metadataSql = new StringBuilder("SELECT * FROM "
                     + product.getProductType().getName() + "_metadata"
-		+ " WHERE product_id = " + quoteIt(product.getProductId());
+		+ " WHERE product_id = " + quoteIt(product.getProductId()));
  
-	    if(this.orderedValues) metadataSql += " ORDER BY pkey";
+	    if(this.orderedValues) metadataSql.append(" ORDER BY pkey");
 
             LOG.log(Level.FINE, "getMetadata: Executing: " + metadataSql);
-            rs = statement.executeQuery(metadataSql);
+            rs = statement.executeQuery(metadataSql.toString());
             
             m = new Metadata();
             List<Element> elements = null;
@@ -1153,20 +1153,23 @@ public class DataSourceCatalog implements Catalog {
             conn = dataSource.getConnection();
             statement = conn.createStatement();
 
-            String elementIds = "";
+            StringBuilder elementIds = new StringBuilder("");
             if (elems.size() > 0) {
-                elementIds += " AND (element_id = '" + this.validationLayer.getElementByName(elems.get(0)).getElementId() + "'";
+                elementIds.append(" AND (element_id = '")
+                          .append(this.validationLayer.getElementByName(elems.get(0)).getElementId
+                              ()).append("'");
                 for (int i = 1; i < elems.size(); i++) 
-                    elementIds += " OR element_id = '" + this.validationLayer.getElementByName(elems.get(i)).getElementId() + "'";
-                elementIds += ")";
+                    elementIds.append(" OR element_id = '").append(this.validationLayer.getElementByName(elems.get(i))
+                                                                                       .getElementId()).append("'");
+                elementIds.append(")");
             }
-            String metadataSql = "SELECT element_id,metadata_value FROM "
+            StringBuilder metadataSql = new StringBuilder("SELECT element_id,metadata_value FROM "
                     + product.getProductType().getName() + "_metadata"
-		+ " WHERE product_id = " + quoteIt(product.getProductId()) + elementIds;
-            if(this.orderedValues) metadataSql += " ORDER BY pkey";
+		+ " WHERE product_id = " + quoteIt(product.getProductId()) + elementIds);
+            if(this.orderedValues) metadataSql.append(" ORDER BY pkey");
 
             LOG.log(Level.FINE, "getMetadata: Executing: " + metadataSql);
-            rs = statement.executeQuery(metadataSql);
+            rs = statement.executeQuery(metadataSql.toString());
 
             m = new Metadata();
             List<Element> elements = null;
@@ -1274,24 +1277,24 @@ public class DataSourceCatalog implements Catalog {
             statement = conn.createStatement();
             statement.setMaxRows(n);
 
-            String getProductSql = "SELECT products.* " + "FROM products ";
+            StringBuilder getProductSql = new StringBuilder("SELECT products.* " + "FROM products ");
 
             if (type != null && type.getProductTypeId() != null) {
                 if (fieldIdStringFlag) {
-                    getProductSql += "WHERE products.product_type_id = '"
-                            + type.getProductTypeId() + "' ";
+                    getProductSql.append("WHERE products.product_type_id = '").append(type.getProductTypeId())
+                                 .append("' ");
                 } else {
-                    getProductSql += "WHERE products.product_type_id = "
-                            + type.getProductTypeId() + " ";
+                    getProductSql.append("WHERE products.product_type_id = ").append(type.getProductTypeId())
+                                 .append(" ");
                 }
 
             }
 
-            getProductSql += "ORDER BY products.product_id DESC";
+            getProductSql.append("ORDER BY products.product_id DESC");
 
-            LOG.log(Level.FINE, "getTopNProducts: executing: " + getProductSql);
+            LOG.log(Level.FINE, "getTopNProducts: executing: " + getProductSql.toString());
 
-            rs = statement.executeQuery(getProductSql);
+            rs = statement.executeQuery(getProductSql.toString());
             products = new Vector<Product>();
 
             while (rs.next()) {
@@ -1374,23 +1377,21 @@ public class DataSourceCatalog implements Catalog {
             statement = conn.createStatement();
 
             // build up the sql statement
-            StringBuffer insertClauseSql = new StringBuffer();
-            StringBuffer valueClauseSql = new StringBuffer();
+          StringBuilder valueClauseSql = new StringBuilder();
 
-            insertClauseSql.append("INSERT INTO " + metadataTable
-                    + " (product_id, element_id, metadata_value) ");
-            valueClauseSql.append("VALUES ");
+          valueClauseSql.append("VALUES ");
 
             // now do the value clause
             if (fieldIdStringFlag) {
-                valueClauseSql.append("(" + product.getProductId() + ", '"
-                        + element.getElementId() + "', '" + value + "')");
+                valueClauseSql.append("(").append(product.getProductId()).append(", '").append(element.getElementId())
+                              .append("', '").append(value).append("')");
             } else {
-                valueClauseSql.append("(" + product.getProductId() + ", "
-                        + element.getElementId() + ", '" + value + "')");
+                valueClauseSql.append("(").append(product.getProductId()).append(", ").append(element.getElementId())
+                              .append(", '").append(value).append("')");
             }
 
-            String metaIngestSql = insertClauseSql.toString()
+            String metaIngestSql = ("INSERT INTO " + metadataTable
+                                    + " (product_id, element_id, metadata_value) ")
                     + valueClauseSql.toString();
             LOG
                     .log(Level.FINE, "addMetadataValue: Executing: "
@@ -1445,24 +1446,20 @@ public class DataSourceCatalog implements Catalog {
             statement = conn.createStatement();
 
             // build up the sql statement
-            String metRemoveSql = "DELETE FROM " + metadataTable + " WHERE ";
+            StringBuilder metRemoveSql = new StringBuilder("DELETE FROM " + metadataTable + " WHERE ");
             if (fieldIdStringFlag) {
-                metRemoveSql += "PRODUCT_ID = '" + product.getProductId()
-                        + "' AND ";
-                metRemoveSql += "ELEMENT_ID = '" + element.getElementId()
-                        + "' AND ";
-                metRemoveSql += "METADATA_VALUE = '" + value + "'";
+                metRemoveSql.append("PRODUCT_ID = '").append(product.getProductId()).append("' AND ");
+                metRemoveSql.append("ELEMENT_ID = '").append(element.getElementId()).append("' AND ");
+                metRemoveSql.append("METADATA_VALUE = '").append(value).append("'");
             } else {
-                metRemoveSql += "PRODUCT_ID = " + product.getProductId()
-                        + " AND ";
-                metRemoveSql += "ELEMENT_ID = " + element.getElementId()
-                        + " AND ";
-                metRemoveSql += "METADATA_VALUE = " + value;
+                metRemoveSql.append("PRODUCT_ID = ").append(product.getProductId()).append(" AND ");
+                metRemoveSql.append("ELEMENT_ID = ").append(element.getElementId()).append(" AND ");
+                metRemoveSql.append("METADATA_VALUE = ").append(value);
             }
 
             LOG.log(Level.FINE, "removeMetadataValue: Executing: "
                     + metRemoveSql);
-            statement.execute(metRemoveSql);
+            statement.execute(metRemoveSql.toString());
             conn.commit();
         } catch (Exception e) {
             e.printStackTrace();
@@ -1516,20 +1513,18 @@ public class DataSourceCatalog implements Catalog {
             conn.setAutoCommit(false);
             statement = conn.createStatement();
 
-            String getProductSql = "SELECT COUNT(products.product_id) AS numProducts "
-                    + "FROM products ";
+            StringBuilder getProductSql = new StringBuilder("SELECT COUNT(products.product_id) AS numProducts "
+                    + "FROM products ");
 
             if (fieldIdStringFlag) {
-                getProductSql += "WHERE products.product_type_id = '"
-                        + type.getProductTypeId() + "' ";
+                getProductSql.append("WHERE products.product_type_id = '").append(type.getProductTypeId()).append("' ");
             } else {
-                getProductSql += "WHERE products.product_type_id = "
-                        + type.getProductTypeId() + " ";
+                getProductSql.append("WHERE products.product_type_id = ").append(type.getProductTypeId()).append(" ");
             }
 
-            LOG.log(Level.FINE, "getNumProducts: executing: " + getProductSql);
+            LOG.log(Level.FINE, "getNumProducts: executing: " + getProductSql.toString());
 
-            rs = statement.executeQuery(getProductSql);
+            rs = statement.executeQuery(getProductSql.toString());
 
             while (rs.next()) {
                 numProducts = rs.getInt("numProducts");
@@ -1726,15 +1721,15 @@ public class DataSourceCatalog implements Catalog {
             conn = dataSource.getConnection();
             statement = conn.createStatement();
 
-            String getProductSql = "";
+            StringBuilder getProductSql = new StringBuilder("");
             String tableName = type.getName() + "_metadata";
             String subSelectQueryBase = "SELECT product_id FROM " + tableName
                     + " ";
-            StringBuffer selectClause = new StringBuffer(
+            StringBuilder selectClause = new StringBuilder(
                     "SELECT COUNT(DISTINCT p.product_id) AS numResults ");
-            StringBuffer fromClause = new StringBuffer("FROM " + tableName
+            StringBuilder fromClause = new StringBuilder("FROM " + tableName
                     + " p ");
-            StringBuffer whereClause = new StringBuffer("WHERE ");
+            StringBuilder whereClause = new StringBuilder("WHERE ");
 
             boolean gotFirstClause = false;
             int clauseNum = 0;
@@ -1752,14 +1747,13 @@ public class DataSourceCatalog implements Catalog {
                         elementIdStr = this.validationLayer.getElementByName(criteria.getElementName()).getElementId();
                     }
 
-                    String clause = null;
+                    StringBuilder clause = new StringBuilder();
 
                     if (!gotFirstClause) {
-                        clause = "(p.element_id = " + elementIdStr + " AND ";
+                        clause.append("(p.element_id = ").append(elementIdStr).append(" AND ");
                         if (criteria instanceof TermQueryCriteria) {
-                            clause += " metadata_value LIKE '%"
-                                    + ((TermQueryCriteria) criteria).getValue()
-                                    + "%') ";
+                            clause.append(" metadata_value LIKE '%").append(((TermQueryCriteria) criteria).getValue())
+                                  .append("%') ");
                         } else if (criteria instanceof RangeQueryCriteria) {
                             String startVal = ((RangeQueryCriteria) criteria)
                                     .getStartValue();
@@ -1770,46 +1764,43 @@ public class DataSourceCatalog implements Catalog {
 
                             if ((startVal != null && !startVal.equals(""))
                                     || (endVal != null && !endVal.equals(""))) {
-                                clause += " metadata_value ";
+                                clause.append(" metadata_value ");
 
                                 boolean gotStart = false;
 
                                 if (startVal != null && !startVal.equals("")) {
                                     if (inclusive)
-                                        clause += ">= '" + startVal + "'";
+                                        clause.append(">= '" + startVal + "'");
                                     else
-                                        clause += "> '" + startVal + "'";
+                                        clause.append("> '" + startVal + "'");
                                     gotStart = true;
                                 }
 
                                 if (endVal != null && !endVal.equals("")) {
                                     if (gotStart) {
                                         if (inclusive)
-                                            clause += " AND metadata_value <= '"
-                                                    + endVal + "'";
+                                            clause.append(" AND metadata_value <= '").append(endVal).append("'");
                                         else
-                                            clause += " AND metadata_value < '"
-                                                    + endVal + "'";
+                                            clause.append(" AND metadata_value < '").append(endVal).append("'");
                                     } else if (inclusive)
-                                        clause += "<= '" + endVal + "'";
+                                        clause.append("<= '").append(endVal).append("'");
                                     else
-                                        clause += "< '" + endVal + "'";
+                                        clause.append("< '").append(endVal).append("'");
                                 }
 
-                                clause += ") ";
+                                clause.append(") ");
                             }
                         }
                         whereClause.append(clause);
                         gotFirstClause = true;
                     } else {
                         String subSelectTblName = "p" + clauseNum;
-                        String subSelectQuery = subSelectQueryBase
+                        StringBuilder subSelectQuery = new StringBuilder(subSelectQueryBase
                                 + "WHERE (element_id = " + elementIdStr
-                                + " AND ";
+                                + " AND ");
                         if (criteria instanceof TermQueryCriteria) {
-                            subSelectQuery += " metadata_value LIKE '%"
-                                    + ((TermQueryCriteria) criteria).getValue()
-                                    + "%')";
+                            subSelectQuery.append(" metadata_value LIKE '%")
+                                          .append(((TermQueryCriteria) criteria).getValue()).append("%')");
                         } else if (criteria instanceof RangeQueryCriteria) {
                             String startVal = ((RangeQueryCriteria) criteria)
                                     .getStartValue();
@@ -1817,29 +1808,28 @@ public class DataSourceCatalog implements Catalog {
                                     .getEndValue();
 
                             if (startVal != null || endVal != null) {
-                                subSelectQuery += " metadata_value ";
+                                subSelectQuery.append(" metadata_value ");
 
                                 boolean gotStart = false;
 
                                 if (startVal != null && !startVal.equals("")) {
-                                    subSelectQuery += ">= '" + startVal + "'";
+                                    subSelectQuery.append(">= '").append(startVal).append("'");
                                     gotStart = true;
                                 }
 
                                 if (endVal != null && !endVal.equals("")) {
                                     if (gotStart) {
-                                        subSelectQuery += " AND metadata_value <= '"
-                                                + endVal + "'";
+                                        subSelectQuery.append(" AND metadata_value <= '").append(endVal).append("'");
                                     } else
-                                        subSelectQuery += "<= '" + endVal + "'";
+                                        subSelectQuery.append("<= '").append(endVal).append("'");
                                 }
 
-                                subSelectQuery += ") ";
+                                subSelectQuery.append(") ");
 
                             }
                         }
 
-                        fromClause.append("INNER JOIN (" + subSelectQuery
+                        fromClause.append("INNER JOIN (" + subSelectQuery.toString()
                                 + ") " + subSelectTblName + " ON "
                                 + subSelectTblName
                                 + ".product_id = p.product_id ");
@@ -1848,16 +1838,16 @@ public class DataSourceCatalog implements Catalog {
                 }
             }
 
-            getProductSql = selectClause.toString() + fromClause.toString();
+            getProductSql.append(selectClause.toString() + fromClause.toString());
             if (gotFirstClause) {
-                getProductSql += whereClause.toString();
+                getProductSql.append(whereClause.toString());
             }
 
 
             LOG.log(Level.FINE, "catalog get num results: executing: "
-                    + getProductSql);
+                    + getProductSql.toString());
 
-            rs = statement.executeQuery(getProductSql);
+            rs = statement.executeQuery(getProductSql.toString());
 
             while (rs.next()) {
                 resultCount = rs.getInt("numResults");
@@ -2014,36 +2004,38 @@ public class DataSourceCatalog implements Catalog {
             statement = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                     ResultSet.CONCUR_READ_ONLY);
 
-            String getProductSql = null;
+            StringBuilder getProductSql = new StringBuilder();
             
             if (!productIdString) {
             	
 	            if (query.getCriteria().size() == 0) {
-	                getProductSql = "SELECT DISTINCT product_id FROM " + type.getName() + "_metadata";
+	                getProductSql.append("SELECT DISTINCT product_id FROM " + type.getName() + "_metadata");
 	            }else if (query.getCriteria().size() == 1) {
-	                getProductSql = this.getSqlQuery(query.getCriteria().get(0), type);
+	                getProductSql.append(this.getSqlQuery(query.getCriteria().get(0), type));
 	            }else {
-	                getProductSql = this.getSqlQuery(new BooleanQueryCriteria(query.getCriteria(), BooleanQueryCriteria.AND), type);
+	                getProductSql.append(this.getSqlQuery(new BooleanQueryCriteria(query.getCriteria(), BooleanQueryCriteria
+                        .AND), type));
 	            }
-	            getProductSql += " ORDER BY product_id DESC ";
+	            getProductSql.append(" ORDER BY product_id DESC ");
             
             } else {
             	
               if (query.getCriteria().size() == 0) {
-                getProductSql = "SELECT DISTINCT products.product_id FROM products, " + type.getName() + "_metadata"
-                				      + " WHERE products.product_id="+type.getName() + "_metadata.product_id";
+                getProductSql.append("SELECT DISTINCT products.product_id FROM products, " + type.getName() + "_metadata"
+                				      + " WHERE products.product_id="+type.getName() + "_metadata.product_id");
               }	else if (query.getCriteria().size() == 1) {
-                getProductSql = this.getSqlQuery(query.getCriteria().get(0), type);
+                getProductSql.append(this.getSqlQuery(query.getCriteria().get(0), type));
               }	else {
-                getProductSql = this.getSqlQuery(new BooleanQueryCriteria(query.getCriteria(), BooleanQueryCriteria.AND), type);
+                getProductSql.append(this.getSqlQuery(new BooleanQueryCriteria(query.getCriteria(), BooleanQueryCriteria
+                    .AND), type));
               }
-              getProductSql += " ORDER BY products.product_datetime DESC ";
+              getProductSql.append(" ORDER BY products.product_datetime DESC ");
               
             }
             
-            LOG.log(Level.FINE, "catalog query: executing: " + getProductSql);
+            LOG.log(Level.FINE, "catalog query: executing: " + getProductSql.toString());
 
-            rs = statement.executeQuery(getProductSql);
+            rs = statement.executeQuery(getProductSql.toString());
 
             List<String> productIds = new Vector<String>();
             if (doSkip) {
@@ -2133,37 +2125,40 @@ public class DataSourceCatalog implements Catalog {
     }
     
     protected String getSqlQuery(QueryCriteria queryCriteria, ProductType type) throws ValidationLayerException, CatalogException {
-        String sqlQuery = null;
+        StringBuilder sqlQuery = new StringBuilder();
         if (queryCriteria instanceof BooleanQueryCriteria) {
             BooleanQueryCriteria bqc = (BooleanQueryCriteria) queryCriteria;
             if (bqc.getOperator() == BooleanQueryCriteria.NOT) {            	
             		if (!this.productIdString) {
-            			sqlQuery = "SELECT DISTINCT product_id FROM " + type.getName() + "_metadata WHERE product_id NOT IN (" + this.getSqlQuery(bqc.getTerms().get(0), type) + ")";
+            			sqlQuery.append("SELECT DISTINCT product_id FROM " + type.getName() + "_metadata WHERE product_id "
+                                 + "NOT IN (" + this.getSqlQuery(bqc.getTerms().get(0), type) + ")");
             		} else {
-            			sqlQuery = "SELECT DISTINCT products.product_id FROM products," + type.getName() + "_metadata"
+            			sqlQuery.append("SELECT DISTINCT products.product_id FROM products," + type.getName() + "_metadata"
             							 + " WHERE products.product_id="+type.getName() + "_metadata.product_id" 
-            							 + " AND products.product_id NOT IN (" + this.getSqlQuery(bqc.getTerms().get(0), type) + ")";
+            							 + " AND products.product_id NOT IN (" + this.getSqlQuery(bqc.getTerms().get
+                            (0), type) + ")");
             		}
             }else {
-                sqlQuery = "(" + this.getSqlQuery(bqc.getTerms().get(0), type);
+                sqlQuery.append("(" + this.getSqlQuery(bqc.getTerms().get(0), type));
                 String op = bqc.getOperator() == BooleanQueryCriteria.AND ? "INTERSECT" : "UNION";
                 for (int i = 1; i < bqc.getTerms().size(); i++) 
-                    sqlQuery += ") " + op + " (" + this.getSqlQuery(bqc.getTerms().get(i), type);
-                sqlQuery += ")";
+                    sqlQuery.append(") " + op + " (" + this.getSqlQuery(bqc.getTerms().get(i), type));
+                sqlQuery.append(")");
             }
         }else {
         	  String elementIdStr = this.validationLayer.getElementByName(queryCriteria.getElementName()).getElementId();
             if (fieldIdStringFlag) 
                 elementIdStr = "'" + elementIdStr + "'";
             if (!this.productIdString) {
-            	sqlQuery = "SELECT DISTINCT product_id FROM " + type.getName() + "_metadata WHERE element_id = " + elementIdStr + " AND ";
+            	sqlQuery.append("SELECT DISTINCT product_id FROM " + type.getName() + "_metadata WHERE element_id = " +
+                         elementIdStr + " AND ");
             } else {
-            	sqlQuery = "SELECT DISTINCT products.product_id FROM products," + type.getName() + "_metadata"
+            	sqlQuery.append("SELECT DISTINCT products.product_id FROM products," + type.getName() + "_metadata"
             	         + " WHERE products.product_id="+type.getName() + "_metadata.product_id" 
-            			     + " AND element_id = " + elementIdStr + " AND ";
+            			     + " AND element_id = " + elementIdStr + " AND ");
             }
             if (queryCriteria instanceof TermQueryCriteria) {
-                sqlQuery += "metadata_value = '" + ((TermQueryCriteria) queryCriteria).getValue() + "'";
+                sqlQuery.append("metadata_value = '" + ((TermQueryCriteria) queryCriteria).getValue() + "'");
             } else if (queryCriteria instanceof RangeQueryCriteria) {
                 RangeQueryCriteria rqc = (RangeQueryCriteria) queryCriteria;
                 String rangeSubQuery = null;
@@ -2175,13 +2170,13 @@ public class DataSourceCatalog implements Catalog {
                     else
                         rangeSubQuery = "(" + rangeSubQuery + " AND metadata_value" + (rqc.getInclusive() ? " <= " : " < ") + "'" + rqc.getEndValue() + "')";
                 }
-                sqlQuery += rangeSubQuery;
+                sqlQuery.append(rangeSubQuery);
             } else {
                 throw new CatalogException("Invalid QueryCriteria [" + queryCriteria.getClass().getCanonicalName() + "]");
             }
         }
 
-        return sqlQuery;
+        return sqlQuery.toString();
     }
 
     private synchronized void updateReferences(Product product)


[9/9] oodt git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/oodt

Posted by ma...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/oodt


Project: http://git-wip-us.apache.org/repos/asf/oodt/repo
Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/3903325c
Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/3903325c
Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/3903325c

Branch: refs/heads/master
Commit: 3903325ce448b65d7e2faa69d450186296e701a9
Parents: 2a172a0 944f662
Author: Tom Barber <to...@analytical-labs.com>
Authored: Tue Oct 13 16:19:43 2015 +0100
Committer: Tom Barber <to...@analytical-labs.com>
Committed: Tue Oct 13 16:19:43 2015 +0100

----------------------------------------------------------------------
 CHANGES.txt                                     |  3 ++
 .../preconditions/RegExExcludeComparator.java   | 49 ++++++++++++++++++++
 2 files changed, 52 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oodt/blob/3903325c/CHANGES.txt
----------------------------------------------------------------------


[3/9] oodt git commit: OODT-888 replace =+ with StringBuilder to improve concat performance

Posted by ma...@apache.org.
OODT-888 replace =+ with StringBuilder to improve concat performance


Project: http://git-wip-us.apache.org/repos/asf/oodt/repo
Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/616387d9
Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/616387d9
Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/616387d9

Branch: refs/heads/master
Commit: 616387d94e915ecdc8f64445c938c3bb8112e84c
Parents: e166944
Author: Tom Barber <to...@analytical-labs.com>
Authored: Sat Oct 10 14:19:18 2015 +0100
Committer: Tom Barber <to...@analytical-labs.com>
Committed: Sat Oct 10 14:19:18 2015 +0100

----------------------------------------------------------------------
 CHANGES.txt | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oodt/blob/616387d9/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 3322d8b..b30b5dd 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -10,7 +10,9 @@ Release 0.11 - Current Development
 
 * OODT-882 Merge dependency update into master (magicaltrout)
 
-* OODT-887 Prevent DNS resolution on URL Lookup
+* OODT-887 Prevent DNS resolution on URL Lookup (magicaltrout)
+
+* OODT-888 Replace =+ with StringBuilders to improve performance (magicaltrout)
 
 Release 0.10 - 08/30/2015
 


[2/9] oodt git commit: OODT-888 replace =+ with StringBuilder to improve concat performance

Posted by ma...@apache.org.
OODT-888 replace =+ with StringBuilder to improve concat performance


Project: http://git-wip-us.apache.org/repos/asf/oodt/repo
Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/e1669443
Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/e1669443
Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/e1669443

Branch: refs/heads/master
Commit: e1669443cf8917e3d3a061c0d06f2ec1c55141e4
Parents: ef02b60
Author: Tom Barber <to...@analytical-labs.com>
Authored: Sat Oct 10 14:18:24 2015 +0100
Committer: Tom Barber <to...@analytical-labs.com>
Committed: Sat Oct 10 14:18:24 2015 +0100

----------------------------------------------------------------------
 .../catalog/query/FreeTextQueryExpression.java  | 12 ++++---
 .../cas/catalog/query/QueryLogicalGroup.java    | 12 ++++---
 .../catalog/query/parser/ParseException.java    | 34 +++++++++++---------
 3 files changed, 32 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oodt/blob/e1669443/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java
----------------------------------------------------------------------
diff --git a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java
index 88278fc..12af21c 100644
--- a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java
+++ b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java
@@ -81,11 +81,13 @@ public class FreeTextQueryExpression extends TermQueryExpression {
      * @return The query as a String.
      */
     public String toString() {
-        String serial = "({" + this.bucketNames + "} " + this.term.getName() + " :|";
-        for (String value : this.term.getValues())
-            serial += "+" + value;
-        serial += "|: )";
-        return serial;
+        StringBuilder serial = new StringBuilder();
+        serial.append("({" + this.bucketNames + "} " + this.term.getName() + " :|");
+        for (String value : this.term.getValues()) {
+            serial.append("+" + value);
+            serial.append("|: )");
+        }
+        return serial.toString();
     }
     
 	@Override

http://git-wip-us.apache.org/repos/asf/oodt/blob/e1669443/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java
----------------------------------------------------------------------
diff --git a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java
index 60be735..c6b764b 100644
--- a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java
+++ b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java
@@ -56,7 +56,7 @@ public class QueryLogicalGroup extends QueryExpression {
 
     /**
      * 
-     * @param queryCriteria
+     * @param queryExpression
      */
     public void addExpression(QueryExpression queryExpression) {
     	this.queryExpressions.add(queryExpression);
@@ -64,7 +64,7 @@ public class QueryLogicalGroup extends QueryExpression {
     
     /**
      * 
-     * @param queryCriterias
+     * @param queryExpressions
      */
     public void addExpressions(List<QueryExpression> queryExpressions) {
     	this.queryExpressions.addAll(queryExpressions);
@@ -96,9 +96,11 @@ public class QueryLogicalGroup extends QueryExpression {
 
     @Override
     public String toString() {
-        String query = "({" + this.bucketNames + "} " + this.operator + " : ";
-        for (QueryExpression queryExpression : this.queryExpressions)
-            query += queryExpression.toString() + ",";
+        StringBuilder query = new StringBuilder();
+        query.append("({" + this.bucketNames + "} " + this.operator + " : ");
+        for (QueryExpression queryExpression : this.queryExpressions) {
+            query.append(queryExpression.toString() + ",");
+        }
         return query.substring(0, query.length() - 1) + ")";
     }
     

http://git-wip-us.apache.org/repos/asf/oodt/blob/e1669443/catalog/src/main/java/org/apache/oodt/cas/catalog/query/parser/ParseException.java
----------------------------------------------------------------------
diff --git a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/parser/ParseException.java b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/parser/ParseException.java
index 983b30e..1b8a696 100644
--- a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/parser/ParseException.java
+++ b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/parser/ParseException.java
@@ -89,7 +89,7 @@ public class ParseException extends Exception {
                            int[][] expectedTokenSequences,
                            String[] tokenImage) {
     String eol = System.getProperty("line.separator", "\n");
-    StringBuffer expected = new StringBuffer();
+    StringBuilder expected = new StringBuilder();
     int maxSize = 0;
     for (int i = 0; i < expectedTokenSequences.length; i++) {
       if (maxSize < expectedTokenSequences[i].length) {
@@ -103,29 +103,31 @@ public class ParseException extends Exception {
       }
       expected.append(eol).append("    ");
     }
-    String retval = "Encountered \"";
+    StringBuilder retval = new StringBuilder();
+    retval.append("Encountered \"");
     Token tok = currentToken.next;
     for (int i = 0; i < maxSize; i++) {
-      if (i != 0) retval += " ";
+      if (i != 0) retval.append(" ");
       if (tok.kind == 0) {
-        retval += tokenImage[0];
+        retval.append(tokenImage[0]);
         break;
       }
-      retval += " " + tokenImage[tok.kind];
-      retval += " \"";
-      retval += add_escapes(tok.image);
-      retval += " \"";
+      retval.append(" ").append(tokenImage[tok.kind]);
+      retval.append(" \"");
+      retval.append(add_escapes(tok.image));
+      retval.append(" \"");
       tok = tok.next;
     }
-    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
-    retval += "." + eol;
+    retval.append("\" at line ").append(currentToken.next.beginLine).append(", column ")
+          .append(currentToken.next.beginColumn);
+    retval.append(".").append(eol);
     if (expectedTokenSequences.length == 1) {
-      retval += "Was expecting:" + eol + "    ";
+      retval.append("Was expecting:").append(eol).append("    ");
     } else {
-      retval += "Was expecting one of:" + eol + "    ";
+      retval.append("Was expecting one of:").append(eol).append("    ");
     }
-    retval += expected.toString();
-    return retval;
+    retval.append(expected.toString());
+    return retval.toString();
   }
 
   /**
@@ -139,7 +141,7 @@ public class ParseException extends Exception {
    * string literal.
    */
   static String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
+      StringBuilder retval = new StringBuilder();
       char ch;
       for (int i = 0; i < str.length(); i++) {
         switch (str.charAt(i))
@@ -173,7 +175,7 @@ public class ParseException extends Exception {
            default:
               if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
                  String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+                 retval.append("\\u").append(s.substring(s.length() - 4, s.length()));
               } else {
                  retval.append(ch);
               }


[4/9] oodt git commit: OODT-888 replace =+ with StringBuilder to improve concat performance

Posted by ma...@apache.org.
OODT-888 replace =+ with StringBuilder to improve concat performance


Project: http://git-wip-us.apache.org/repos/asf/oodt/repo
Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/b2227f8a
Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/b2227f8a
Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/b2227f8a

Branch: refs/heads/master
Commit: b2227f8ab10276a1f66c4ae4ac81901d37405cec
Parents: 616387d
Author: Tom Barber <to...@analytical-labs.com>
Authored: Sat Oct 10 14:33:57 2015 +0100
Committer: Tom Barber <to...@analytical-labs.com>
Committed: Sat Oct 10 14:33:57 2015 +0100

----------------------------------------------------------------------
 CHANGES.txt                                     |  2 +-
 .../struct/impl/index/DataSourceIndex.java      | 98 ++++++++++----------
 2 files changed, 49 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oodt/blob/b2227f8a/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index b30b5dd..b339ec3 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -12,7 +12,7 @@ Release 0.11 - Current Development
 
 * OODT-887 Prevent DNS resolution on URL Lookup (magicaltrout)
 
-* OODT-888 Replace =+ with StringBuilders to improve performance (magicaltrout)
+* OODT-888 Replace += with StringBuilders to improve performance (magicaltrout)
 
 Release 0.10 - 08/30/2015
 

http://git-wip-us.apache.org/repos/asf/oodt/blob/b2227f8a/catalog/src/main/java/org/apache/oodt/cas/catalog/struct/impl/index/DataSourceIndex.java
----------------------------------------------------------------------
diff --git a/catalog/src/main/java/org/apache/oodt/cas/catalog/struct/impl/index/DataSourceIndex.java b/catalog/src/main/java/org/apache/oodt/cas/catalog/struct/impl/index/DataSourceIndex.java
index a046263..e7083ed 100644
--- a/catalog/src/main/java/org/apache/oodt/cas/catalog/struct/impl/index/DataSourceIndex.java
+++ b/catalog/src/main/java/org/apache/oodt/cas/catalog/struct/impl/index/DataSourceIndex.java
@@ -17,26 +17,6 @@
 package org.apache.oodt.cas.catalog.struct.impl.index;
 
 //JDK imports
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.Statement;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Vector;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-//SQL imports
-import javax.sql.DataSource;
-
-//OODT imports
 import org.apache.commons.lang.StringUtils;
 import org.apache.oodt.cas.catalog.exception.CatalogIndexException;
 import org.apache.oodt.cas.catalog.exception.IngestServiceException;
@@ -45,22 +25,26 @@ import org.apache.oodt.cas.catalog.page.IndexPager;
 import org.apache.oodt.cas.catalog.page.IngestReceipt;
 import org.apache.oodt.cas.catalog.page.PageInfo;
 import org.apache.oodt.cas.catalog.page.ProcessedPageInfo;
-import org.apache.oodt.cas.catalog.query.ComparisonQueryExpression;
-import org.apache.oodt.cas.catalog.query.NotQueryExpression;
-import org.apache.oodt.cas.catalog.query.QueryExpression;
-import org.apache.oodt.cas.catalog.query.QueryLogicalGroup;
-import org.apache.oodt.cas.catalog.query.StdQueryExpression;
-import org.apache.oodt.cas.catalog.struct.Index;
-import org.apache.oodt.cas.catalog.struct.IngestService;
-import org.apache.oodt.cas.catalog.struct.QueryService;
-import org.apache.oodt.cas.catalog.struct.TransactionId;
-import org.apache.oodt.cas.catalog.struct.TransactionIdFactory;
+import org.apache.oodt.cas.catalog.query.*;
+import org.apache.oodt.cas.catalog.struct.*;
 import org.apache.oodt.cas.catalog.struct.impl.transaction.UuidTransactionIdFactory;
 import org.apache.oodt.cas.catalog.term.Term;
 import org.apache.oodt.cas.catalog.term.TermBucket;
 import org.apache.oodt.commons.database.DatabaseConnectionBuilder;
 import org.apache.oodt.commons.date.DateUtils;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.sql.DataSource;
+
 /**
  * 
  * DataSource Indexer which supports both ingest and query
@@ -388,9 +372,11 @@ public class DataSourceIndex implements Index, IngestService, QueryService {
 		try {
 			conn = this.dataSource.getConnection();
 			stmt = conn.createStatement();
-			String sqlQuery = "SELECT DISTINCT transaction_id,transaction_date FROM transactions WHERE transaction_id IN (" + this.getSqlQuery(queryExpression) + ")";
+			String sqlQuery = "SELECT DISTINCT transaction_id,transaction_date FROM transactions "
+											  + "WHERE "
+							   + "transaction_id IN (" + this.getSqlQuery(queryExpression) + ")";
 	        LOG.log(Level.INFO, "Performing Query: " + sqlQuery);
-			rs = stmt.executeQuery(sqlQuery);	
+			rs = stmt.executeQuery(sqlQuery);
 
 			List<IngestReceipt> receipts = new Vector<IngestReceipt>();
 			while (rs.next()) 
@@ -418,9 +404,10 @@ public class DataSourceIndex implements Index, IngestService, QueryService {
 		try {
 			conn = this.dataSource.getConnection();
 			stmt = conn.createStatement();
-			String sqlQuery = "SELECT DISTINCT transaction_id,transaction_date FROM transactions WHERE transaction_id IN (" + this.getSqlQuery(queryExpression) + ")";
+			String sqlQuery = "SELECT DISTINCT transaction_id,transaction_date FROM transactions WHERE "
+							   + "transaction_id IN (" + this.getSqlQuery(queryExpression) + ")";
 	        LOG.log(Level.INFO, "Performing Query: " + sqlQuery);
-			rs = stmt.executeQuery(sqlQuery);	
+			rs = stmt.executeQuery(sqlQuery);
 
 			List<IngestReceipt> receipts = new Vector<IngestReceipt>();
 			int index = 0;
@@ -451,9 +438,11 @@ public class DataSourceIndex implements Index, IngestService, QueryService {
 		try {
 			conn = this.dataSource.getConnection();
 			stmt = conn.createStatement();
-			String sqlQuery = "SELECT COUNT(transaction_id) AS numTransactions FROM transactions WHERE transaction_id IN (" + this.getSqlQuery(queryExpression) + ")";
+			String sqlQuery = "SELECT COUNT(transaction_id) AS numTransactions FROM transactions "
+												+ "WHERE "
+							   + "transaction_id IN (" + this.getSqlQuery(queryExpression) + ")";
 	        LOG.log(Level.INFO, "Performing Query: " + sqlQuery);
-			rs = stmt.executeQuery(sqlQuery);	
+			rs = stmt.executeQuery(sqlQuery);
 
 			int numTransactions = 0;
             while (rs.next())
@@ -477,21 +466,24 @@ public class DataSourceIndex implements Index, IngestService, QueryService {
 	
 	
     private String getSqlQuery(QueryExpression queryExpression) throws QueryServiceException, UnsupportedEncodingException {
-        String sqlQuery = null;
-		String bucketNameFilter = "";
+        StringBuilder sqlQuery = new StringBuilder();
+		StringBuilder bucketNameFilter = new StringBuilder("");
 		if (queryExpression.getBucketNames() != null) {
 			if (queryExpression.getBucketNames().size() == 1)
-				bucketNameFilter += "bucket_name = '" + queryExpression.getBucketNames().iterator().next() + "' AND ";
+				bucketNameFilter.append("bucket_name = '").append(queryExpression.getBucketNames().iterator().next())
+								.append("' ").append("AND ");
 			else if (queryExpression.getBucketNames().size() > 1)
-				bucketNameFilter += "(bucket_name = '" + StringUtils.join(queryExpression.getBucketNames().iterator(), "' OR bucket_name = '") + "') AND ";
+				bucketNameFilter.append("(bucket_name = '")
+								.append(StringUtils.join(queryExpression.getBucketNames().iterator(),
+									"' OR bucket_name = '")).append("') AND ");
 		}
         if (queryExpression instanceof QueryLogicalGroup) {
         	QueryLogicalGroup qlg = (QueryLogicalGroup) queryExpression;
-            sqlQuery = "(" + this.getSqlQuery(qlg.getExpressions().get(0));
+            sqlQuery.append("(").append(this.getSqlQuery(qlg.getExpressions().get(0)));
             String op = qlg.getOperator() == QueryLogicalGroup.Operator.AND ? "INTERSECT" : "UNION";
             for (int i = 1; i < qlg.getExpressions().size(); i++) 
-                sqlQuery += ") " + op + " (" + this.getSqlQuery(qlg.getExpressions().get(i));
-            sqlQuery += ")";
+                sqlQuery.append(") ").append(op).append(" (").append(this.getSqlQuery(qlg.getExpressions().get(i)));
+            sqlQuery.append(")");
         }else if (queryExpression instanceof ComparisonQueryExpression){
         	ComparisonQueryExpression cqe = (ComparisonQueryExpression) queryExpression;
         	String operator = null;
@@ -509,23 +501,29 @@ public class DataSourceIndex implements Index, IngestService, QueryService {
                 throw new QueryServiceException("Invalid ComparisonQueryExpression Operator '" + cqe.getOperator() + "'");
             }
             
-            sqlQuery = "SELECT DISTINCT transaction_id FROM transaction_terms WHERE " + bucketNameFilter + " term_name = '" + cqe.getTerm().getName() + "' AND (";
+            sqlQuery.append("SELECT DISTINCT transaction_id FROM transaction_terms WHERE ")
+					.append(bucketNameFilter.toString()).append(" ").append("term_name = '")
+					.append(cqe.getTerm().getName()).append("' AND (");
         	for (int i = 0; i < cqe.getTerm().getValues().size(); i++) {
         		String value = cqe.getTerm().getValues().get(i);
-                sqlQuery += "term_value " + operator + " '" + (this.useUTF8 ? URLEncoder.encode(value, "UTF-8") : value) + "'";
+                sqlQuery.append("term_value ").append(operator).append(" '")
+						.append(this.useUTF8 ? URLEncoder.encode(value, "UTF-8") : value).append("'");
 	            if ((i + 1) < cqe.getTerm().getValues().size())
-	            	sqlQuery += " OR ";
+	            	sqlQuery.append(" OR ");
         	}
-        	sqlQuery += ")";
+        	sqlQuery.append(")");
         }else if (queryExpression instanceof NotQueryExpression) {
         	NotQueryExpression nqe = (NotQueryExpression) queryExpression;
-            sqlQuery = "SELECT DISTINCT transaction_id FROM transaction_terms WHERE " + bucketNameFilter + " NOT (" + this.getSqlQuery(nqe.getQueryExpression()) + ")";
+            sqlQuery.append("SELECT DISTINCT transaction_id FROM transaction_terms WHERE ")
+					.append(bucketNameFilter.toString()).append(" NOT (")
+					.append(this.getSqlQuery(nqe.getQueryExpression())).append(")");
         }else if (queryExpression instanceof StdQueryExpression) {
-            sqlQuery = "SELECT DISTINCT transaction_id FROM transaction_terms " + bucketNameFilter;
+            sqlQuery.append("SELECT DISTINCT transaction_id FROM transaction_terms ")
+					.append(bucketNameFilter.toString());
         }else {
             throw new QueryServiceException("Invalid QueryExpression '" + queryExpression.getClass().getCanonicalName() + "'");
         }
-        return sqlQuery;
+        return sqlQuery.toString();
     }
 
 }


[5/9] oodt git commit: OODT-888 replace =+ with StringBuilder to improve concat performance

Posted by ma...@apache.org.
OODT-888 replace =+ with StringBuilder to improve concat performance


Project: http://git-wip-us.apache.org/repos/asf/oodt/repo
Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/631cd23c
Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/631cd23c
Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/631cd23c

Branch: refs/heads/master
Commit: 631cd23cd4bc70e117ad7f22c8d3864f30f09313
Parents: b2227f8
Author: Tom Barber <to...@analytical-labs.com>
Authored: Sat Oct 10 15:53:16 2015 +0100
Committer: Tom Barber <to...@analytical-labs.com>
Committed: Sat Oct 10 15:53:16 2015 +0100

----------------------------------------------------------------------
 .../index/WorkflowManagerDataSourceIndex.java   | 70 +++++++-------
 .../oodt/cas/cli/printer/StdCmdLinePrinter.java | 98 +++++++-------------
 2 files changed, 69 insertions(+), 99 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oodt/blob/631cd23c/catalog/src/main/java/org/apache/oodt/cas/catalog/struct/impl/index/WorkflowManagerDataSourceIndex.java
----------------------------------------------------------------------
diff --git a/catalog/src/main/java/org/apache/oodt/cas/catalog/struct/impl/index/WorkflowManagerDataSourceIndex.java b/catalog/src/main/java/org/apache/oodt/cas/catalog/struct/impl/index/WorkflowManagerDataSourceIndex.java
index 8c619be..0facced 100644
--- a/catalog/src/main/java/org/apache/oodt/cas/catalog/struct/impl/index/WorkflowManagerDataSourceIndex.java
+++ b/catalog/src/main/java/org/apache/oodt/cas/catalog/struct/impl/index/WorkflowManagerDataSourceIndex.java
@@ -17,34 +17,11 @@
 package org.apache.oodt.cas.catalog.struct.impl.index;
 
 //JDK imports
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.Statement;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Vector;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-//SQL imports
-import javax.sql.DataSource;
-
-//OODT imports
 import org.apache.oodt.cas.catalog.exception.CatalogIndexException;
 import org.apache.oodt.cas.catalog.exception.QueryServiceException;
 import org.apache.oodt.cas.catalog.page.IndexPager;
 import org.apache.oodt.cas.catalog.page.IngestReceipt;
-import org.apache.oodt.cas.catalog.query.ComparisonQueryExpression;
-import org.apache.oodt.cas.catalog.query.NotQueryExpression;
-import org.apache.oodt.cas.catalog.query.QueryExpression;
-import org.apache.oodt.cas.catalog.query.QueryLogicalGroup;
-import org.apache.oodt.cas.catalog.query.StdQueryExpression;
+import org.apache.oodt.cas.catalog.query.*;
 import org.apache.oodt.cas.catalog.struct.Index;
 import org.apache.oodt.cas.catalog.struct.QueryService;
 import org.apache.oodt.cas.catalog.struct.TransactionId;
@@ -53,9 +30,23 @@ import org.apache.oodt.cas.catalog.struct.impl.transaction.LongTransactionIdFact
 import org.apache.oodt.cas.catalog.term.Term;
 import org.apache.oodt.cas.catalog.term.TermBucket;
 import org.apache.oodt.commons.database.DatabaseConnectionBuilder;
+import org.apache.oodt.commons.util.DateConvert;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.sql.DataSource;
+
+//SQL imports
+//OODT imports
 //EDA imports
-import org.apache.oodt.commons.util.DateConvert;
 
 /**
  * @author bfoster
@@ -259,17 +250,17 @@ public class WorkflowManagerDataSourceIndex implements Index, QueryService {
 	}
 	
     private String getSqlQuery(QueryExpression queryExpression) throws QueryServiceException, UnsupportedEncodingException {
-        String sqlQuery = null;
+        StringBuilder sqlQuery = new StringBuilder();
         if (queryExpression instanceof QueryLogicalGroup) {
         	QueryLogicalGroup qlg = (QueryLogicalGroup) queryExpression;
-            sqlQuery = "(" + this.getSqlQuery(qlg.getExpressions().get(0));
+            sqlQuery.append("(").append(this.getSqlQuery(qlg.getExpressions().get(0)));
             String op = qlg.getOperator() == QueryLogicalGroup.Operator.AND ? "INTERSECT" : "UNION";
             for (int i = 1; i < qlg.getExpressions().size(); i++) 
-                sqlQuery += ") " + op + " (" + this.getSqlQuery(qlg.getExpressions().get(i));
-            sqlQuery += ")";
+                sqlQuery.append(") ").append(op).append(" (").append(this.getSqlQuery(qlg.getExpressions().get(i)));
+            sqlQuery.append(")");
         }else if (queryExpression instanceof ComparisonQueryExpression){
         	ComparisonQueryExpression cqe = (ComparisonQueryExpression) queryExpression;
-        	String operator = null;
+        	String operator;
             if (cqe.getOperator().equals(ComparisonQueryExpression.Operator.EQUAL_TO)) {
             	operator = "=";
             } else if (cqe.getOperator().equals(ComparisonQueryExpression.Operator.GREATER_THAN)) {
@@ -284,23 +275,28 @@ public class WorkflowManagerDataSourceIndex implements Index, QueryService {
                 throw new QueryServiceException("Invalid ComparisonQueryExpression Operator '" + cqe.getOperator() + "'");
             }
             
-            sqlQuery = "SELECT DISTINCT workflow_instance_id FROM workflow_instance_metadata WHERE workflow_met_key = '" + cqe.getTerm().getName() + "' AND (";
+            sqlQuery.append(
+				"SELECT DISTINCT workflow_instance_id FROM workflow_instance_metadata WHERE " + "workflow_met_key = '")
+					.append(cqe.getTerm().getName()).append("' AND (");
         	for (int i = 0; i < cqe.getTerm().getValues().size(); i++) {
         		String value = cqe.getTerm().getValues().get(i);
-                sqlQuery += "workflow_met_val " + operator + " '" + URLEncoder.encode(value, "UTF-8") + "'";
+                sqlQuery.append("workflow_met_val ").append(operator).append(" '")
+						.append(URLEncoder.encode(value, "UTF-8")).append("'");
 	            if ((i + 1) < cqe.getTerm().getValues().size())
-	            	sqlQuery += "OR";
+	            	sqlQuery.append("OR");
         	}
-        	sqlQuery += ")";
+        	sqlQuery.append(")");
         }else if (queryExpression instanceof NotQueryExpression) {
         	NotQueryExpression nqe = (NotQueryExpression) queryExpression;
-            sqlQuery = "SELECT DISTINCT workflow_instance_id FROM workflow_instance_metadata WHERE NOT (" + this.getSqlQuery(nqe.getQueryExpression()) + ")";
+            sqlQuery.append("SELECT DISTINCT workflow_instance_id FROM workflow_instance_metadata WHERE NOT (")
+					.append(this
+						.getSqlQuery(nqe.getQueryExpression())).append(")");
         }else if (queryExpression instanceof StdQueryExpression) {
-            sqlQuery = "SELECT DISTINCT workflow_instance_id FROM workflow_instance_metadata";
+            sqlQuery.append("SELECT DISTINCT workflow_instance_id FROM workflow_instance_metadata");
         }else {
             throw new QueryServiceException("Invalid QueryExpression '" + queryExpression.getClass().getCanonicalName() + "'");
         }
-        return sqlQuery;
+        return sqlQuery.toString();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/oodt/blob/631cd23c/cli/src/main/java/org/apache/oodt/cas/cli/printer/StdCmdLinePrinter.java
----------------------------------------------------------------------
diff --git a/cli/src/main/java/org/apache/oodt/cas/cli/printer/StdCmdLinePrinter.java b/cli/src/main/java/org/apache/oodt/cas/cli/printer/StdCmdLinePrinter.java
index 36c3fa1..9ebf32b 100644
--- a/cli/src/main/java/org/apache/oodt/cas/cli/printer/StdCmdLinePrinter.java
+++ b/cli/src/main/java/org/apache/oodt/cas/cli/printer/StdCmdLinePrinter.java
@@ -16,36 +16,19 @@
  */
 package org.apache.oodt.cas.cli.printer;
 
-//OODT static imports
-import static org.apache.oodt.cas.cli.util.CmdLineUtils.asGroupOption;
-import static org.apache.oodt.cas.cli.util.CmdLineUtils.determineOptional;
-import static org.apache.oodt.cas.cli.util.CmdLineUtils.determineRelevantSubOptions;
-import static org.apache.oodt.cas.cli.util.CmdLineUtils.determineRequired;
-import static org.apache.oodt.cas.cli.util.CmdLineUtils.determineRequiredSubOptions;
-import static org.apache.oodt.cas.cli.util.CmdLineUtils.getFormattedString;
-import static org.apache.oodt.cas.cli.util.CmdLineUtils.isGroupOption;
-import static org.apache.oodt.cas.cli.util.CmdLineUtils.sortActions;
-import static org.apache.oodt.cas.cli.util.CmdLineUtils.sortOptions;
-import static org.apache.oodt.cas.cli.util.CmdLineUtils.sortOptionsByRequiredStatus;
-
-//JDK imports
-import java.util.List;
-import java.util.Set;
 
-//Apache imports
-import org.apache.commons.lang.StringUtils;
+import com.google.common.collect.Lists;
 
-//OODT imports
+import org.apache.commons.lang.StringUtils;
 import org.apache.oodt.cas.cli.action.CmdLineAction;
-import org.apache.oodt.cas.cli.option.ActionCmdLineOption;
-import org.apache.oodt.cas.cli.option.AdvancedCmdLineOption;
-import org.apache.oodt.cas.cli.option.CmdLineOption;
-import org.apache.oodt.cas.cli.option.GroupCmdLineOption;
-import org.apache.oodt.cas.cli.option.GroupSubOption;
+import org.apache.oodt.cas.cli.option.*;
 import org.apache.oodt.cas.cli.option.validator.CmdLineOptionValidator.Result;
 
-//Google imports
-import com.google.common.collect.Lists;
+import java.util.List;
+import java.util.Set;
+
+import static org.apache.oodt.cas.cli.util.CmdLineUtils.*;
+
 
 /**
  * Standard {@link CmdLinePrinter}.
@@ -57,13 +40,8 @@ public class StdCmdLinePrinter implements CmdLinePrinter {
    @Override
    public String printActionHelp(CmdLineAction action,
          Set<CmdLineOption> options) {
-      StringBuffer sb = new StringBuffer("");
-      sb.append(getHeader(action)).append("\n");
-      sb.append(getDescription(action)).append("\n");
-      sb.append(getUsage(action, options)).append("\n");
-      sb.append(getExamples(action)).append("\n");
-      sb.append(getFooter(action)).append("\n");
-      return sb.toString();
+      return "" + getHeader(action) + "\n" + getDescription(action) + "\n" + getUsage(action, options) + "\n"
+             + getExamples(action) + "\n" + getFooter(action) + "\n";
    }
 
    protected String getHeader(CmdLineAction action) {
@@ -71,7 +49,7 @@ public class StdCmdLinePrinter implements CmdLinePrinter {
    }
 
    protected String getDescription(CmdLineAction action) {
-      StringBuffer sb = new StringBuffer("> DESCRIPTION:\n");
+      StringBuilder sb = new StringBuilder("> DESCRIPTION:\n");
       if (action.getDetailedDescription() != null) {
          sb.append(" ").append(action.getDetailedDescription()
                .replaceAll("^\\s*", "").replaceAll("\\s*$", ""));
@@ -86,7 +64,7 @@ public class StdCmdLinePrinter implements CmdLinePrinter {
    }
 
    protected String getUsage(CmdLineAction action, Set<CmdLineOption> options) {
-      StringBuffer sb = new StringBuffer("> USAGE:\n");
+      StringBuilder sb = new StringBuilder("> USAGE:\n");
       sb.append(getRequiredSubHeader()).append("\n");
       Set<CmdLineOption> requiredOptions = determineRequired(action, options);
       List<CmdLineOption> sortedRequiredOptions = sortOptions(requiredOptions);
@@ -130,7 +108,7 @@ public class StdCmdLinePrinter implements CmdLinePrinter {
    }
 
    protected String getExamples(CmdLineAction action) {
-      StringBuffer sb = new StringBuffer("> EXAMPLES:\n");
+      StringBuilder sb = new StringBuilder("> EXAMPLES:\n");
       if (action.getExamples() != null) {
          sb.append(" ").append(action.getExamples().replaceAll("^\\s*", "")
                .replaceAll("\\s*$", ""));
@@ -166,42 +144,39 @@ public class StdCmdLinePrinter implements CmdLinePrinter {
 
    protected String getGroupHelp(CmdLineAction action,
          GroupCmdLineOption option, String indent) {
-      String helpString = getOptionHelp(action, option, indent);
+      StringBuilder helpString = new StringBuilder(getOptionHelp(action, option, indent));
       Set<CmdLineOption> subOptions = determineRequiredSubOptions(action,
-            (GroupCmdLineOption) option);
+          option);
       if (subOptions.isEmpty()) {
          if (!option.getSubOptions().isEmpty()) {
-            helpString += "\n" + indent + "  One of:";
+            helpString.append("\n").append(indent).append("  One of:");
             for (GroupSubOption subOption : option.getSubOptions()) {
-               helpString += "\n"
-                     + getOptionHelp(action, subOption.getOption(), "   "
-                           + indent);
+               helpString.append("\n").append(getOptionHelp(action, subOption.getOption(), "   "
+                                                                                           + indent));
             }
          }
       } else {
          for (CmdLineOption subOption : determineRelevantSubOptions(action,
                option)) {
-            helpString += "\n";
+            helpString.append("\n");
             if (subOption instanceof GroupCmdLineOption) {
-               helpString += getGroupHelp(action,
-                     (GroupCmdLineOption) subOption, "  " + indent);
+               helpString.append(getGroupHelp(action,
+                     (GroupCmdLineOption) subOption, "  " + indent));
             } else {
-               helpString += getOptionHelp(action, subOption, "  " + indent);
+               helpString.append(getOptionHelp(action, subOption, "  " + indent));
             }
-            helpString += " "
-                  + (subOptions.contains(subOption) ? "(required)"
-                        : "(optional)");
+            helpString.append(" ").append(subOptions.contains(subOption) ? "(required)"
+                                                                         : "(optional)");
          }
       }
-      return helpString;
+      return helpString.toString();
    }
 
    @Override
    public String printActionsHelp(Set<CmdLineAction> actions) {
-      StringBuffer sb = new StringBuffer("");
+      StringBuilder sb = new StringBuilder("");
       sb.append("-----------------------------------------------------------------------------------------------------------------\n");
-      sb.append("|" + StringUtils.rightPad(" Action", 35) + "|"
-            + " Description\n");
+      sb.append("|").append(StringUtils.rightPad(" Action", 35)).append("|").append(" Description\n");
       sb.append("-----------------------------------------------------------------------------------------------------------------\n");
       for (CmdLineAction action : sortActions(actions)) {
          sb.append("  ").append(StringUtils.rightPad(action.getName(), 35));
@@ -213,7 +188,7 @@ public class StdCmdLinePrinter implements CmdLinePrinter {
 
    @Override
    public String printOptionsHelp(Set<CmdLineOption> options) {
-      StringBuffer sb = new StringBuffer("");
+      StringBuilder sb = new StringBuilder("");
       List<CmdLineOption> sortedOptions = sortOptionsByRequiredStatus(options);
       sb.append(getHeader()).append("\n");
       for (CmdLineOption option : sortedOptions) {
@@ -224,12 +199,11 @@ public class StdCmdLinePrinter implements CmdLinePrinter {
    }
 
    protected String getHeader() {
-      StringBuffer sb = new StringBuffer("");
-      sb.append("-----------------------------------------------------------------------------------------------------------------\n");
-      sb.append("|" + StringUtils.rightPad(" Short", 7) + "|"
-            + StringUtils.rightPad(" Long", 50) + "| Description\n");
-      sb.append("-----------------------------------------------------------------------------------------------------------------\n");
-      return sb.toString();
+      return ""
+             + "-----------------------------------------------------------------------------------------------------------------\n"
+             + "|" + StringUtils.rightPad(" Short", 7) + "|"
+             + StringUtils.rightPad(" Long", 50) + "| Description\n"
+             + "-----------------------------------------------------------------------------------------------------------------\n";
    }
 
    protected String getOptionHelp(CmdLineOption option, String indent) {
@@ -290,7 +264,7 @@ public class StdCmdLinePrinter implements CmdLinePrinter {
 
    @Override
    public String printOptionValidationErrors(List<Result> results) {
-      StringBuffer sb = new StringBuffer("Validation Failures:");
+      StringBuilder sb = new StringBuilder("Validation Failures:");
       for (Result result : results) {
          sb.append(" - ").append(result.getMessage()).append("\n");
       }
@@ -300,7 +274,7 @@ public class StdCmdLinePrinter implements CmdLinePrinter {
    @Override
    public String printRequiredOptionsMissingError(
          Set<CmdLineOption> missingOptions) {
-      StringBuffer sb = new StringBuffer("Missing required options:\n");
+      StringBuilder sb = new StringBuilder("Missing required options:\n");
       for (CmdLineOption option : missingOptions) {
          sb.append(" - ").append(option.toString()).append("\n");
       }
@@ -309,7 +283,7 @@ public class StdCmdLinePrinter implements CmdLinePrinter {
 
    @Override
    public String printActionMessages(List<String> messages) {
-      StringBuffer sb = new StringBuffer("");
+      StringBuilder sb = new StringBuilder("");
       for (String message : messages) {
          sb.append(message);
       }


[7/9] oodt git commit: OODT-889 update file manager tests

Posted by ma...@apache.org.
OODT-889 update file manager tests


Project: http://git-wip-us.apache.org/repos/asf/oodt/repo
Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/d757222b
Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/d757222b
Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/d757222b

Branch: refs/heads/master
Commit: d757222b8847e839fb3326bec6cd08e96cea0fad
Parents: 4286c92
Author: Tom Barber <to...@analytical-labs.com>
Authored: Tue Oct 13 15:01:32 2015 +0100
Committer: Tom Barber <to...@analytical-labs.com>
Committed: Tue Oct 13 15:01:32 2015 +0100

----------------------------------------------------------------------
 .../catalog/query/FreeTextQueryExpression.java  |   4 +-
 .../cas/catalog/query/QueryLogicalGroup.java    |   4 +-
 .../oodt/cas/filemgr/catalog/LuceneCatalog.java |  53 +-
 .../oodt/cas/filemgr/catalog/TestAppender.java  |  29 ++
 .../filemgr/catalog/TestDataSourceCatalog.java  | 159 ++++--
 .../cas/filemgr/catalog/TestLuceneCatalog.java  | 520 ++++++++++++++++++-
 .../catalog/TestMappedDataSourceCatalog.java    |   1 -
 .../catalog/TestOrderedDataSourceCatalog.java   |   7 +-
 8 files changed, 675 insertions(+), 102 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java
----------------------------------------------------------------------
diff --git a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java
index 12af21c..c5268a9 100644
--- a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java
+++ b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java
@@ -82,9 +82,9 @@ public class FreeTextQueryExpression extends TermQueryExpression {
      */
     public String toString() {
         StringBuilder serial = new StringBuilder();
-        serial.append("({" + this.bucketNames + "} " + this.term.getName() + " :|");
+        serial.append("({").append(this.bucketNames).append("} ").append(this.term.getName()).append(" :|");
         for (String value : this.term.getValues()) {
-            serial.append("+" + value);
+            serial.append("+").append(value);
             serial.append("|: )");
         }
         return serial.toString();

http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java
----------------------------------------------------------------------
diff --git a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java
index c6b764b..df16b6b 100644
--- a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java
+++ b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java
@@ -97,9 +97,9 @@ public class QueryLogicalGroup extends QueryExpression {
     @Override
     public String toString() {
         StringBuilder query = new StringBuilder();
-        query.append("({" + this.bucketNames + "} " + this.operator + " : ");
+        query.append("({").append(this.bucketNames).append("} ").append(this.operator).append(" : ");
         for (QueryExpression queryExpression : this.queryExpressions) {
-            query.append(queryExpression.toString() + ",");
+            query.append(queryExpression.toString()).append(",");
         }
         return query.substring(0, query.length() - 1) + ")";
     }

http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
----------------------------------------------------------------------
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
index 5e375c4..98e0eb5 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
@@ -18,55 +18,33 @@
 package org.apache.oodt.cas.filemgr.catalog;
 
 //JDK imports
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-//Lucene imports
 import org.apache.lucene.analysis.standard.StandardAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.RangeQuery;
-import org.apache.lucene.search.Sort;
-import org.apache.lucene.search.SortField;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.search.WildcardQuery;
-
-//OODT imports
-import org.apache.oodt.cas.filemgr.structs.BooleanQueryCriteria;
-import org.apache.oodt.cas.filemgr.structs.Element;
-import org.apache.oodt.cas.filemgr.structs.Product;
-import org.apache.oodt.cas.filemgr.structs.ProductPage;
-import org.apache.oodt.cas.filemgr.structs.ProductType;
+import org.apache.lucene.search.*;
+import org.apache.oodt.cas.filemgr.structs.*;
 import org.apache.oodt.cas.filemgr.structs.Query;
-import org.apache.oodt.cas.filemgr.structs.QueryCriteria;
-import org.apache.oodt.cas.filemgr.structs.RangeQueryCriteria;
-import org.apache.oodt.cas.filemgr.structs.Reference;
-import org.apache.oodt.cas.filemgr.structs.TermQueryCriteria;
 import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException;
 import org.apache.oodt.cas.filemgr.structs.exceptions.ValidationLayerException;
 import org.apache.oodt.cas.filemgr.validation.ValidationLayer;
 import org.apache.oodt.cas.metadata.Metadata;
 import org.apache.oodt.commons.pagination.PaginationUtils;
-
-//JUG imports
 import org.safehaus.uuid.UUID;
 import org.safehaus.uuid.UUIDGenerator;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+//Lucene imports
+//OODT imports
+//JUG imports
+
 /**
  * @author mattmann
  * @author bfoster
@@ -846,6 +824,9 @@ public class LuceneCatalog implements Catalog {
      *      org.apache.oodt.cas.filemgr.structs.ProductPage)
      */
     public ProductPage getNextPage(ProductType type, ProductPage currentPage) {
+        if(type==null){
+            return null;
+        }
         if (currentPage == null) {
             return getFirstPage(type);
         }
@@ -886,6 +867,10 @@ public class LuceneCatalog implements Catalog {
      *      org.apache.oodt.cas.filemgr.structs.ProductPage)
      */
     public ProductPage getPrevPage(ProductType type, ProductPage currentPage) {
+        if(type==null){
+            return null;
+        }
+
         if (currentPage == null) {
             return getFirstPage(type);
         }

http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestAppender.java
----------------------------------------------------------------------
diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestAppender.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestAppender.java
new file mode 100644
index 0000000..5680428
--- /dev/null
+++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestAppender.java
@@ -0,0 +1,29 @@
+package org.apache.oodt.cas.filemgr.catalog;
+
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.spi.LoggingEvent;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class TestAppender extends AppenderSkeleton {
+    private final List<LoggingEvent> log = new ArrayList<LoggingEvent>();
+
+    @Override
+    public boolean requiresLayout() {
+        return false;
+    }
+
+    @Override
+    protected void append(final LoggingEvent loggingEvent) {
+        log.add(loggingEvent);
+    }
+
+    @Override
+    public void close() {
+    }
+
+    public List<LoggingEvent> getLog() {
+        return new ArrayList<LoggingEvent>(log);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestDataSourceCatalog.java
----------------------------------------------------------------------
diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestDataSourceCatalog.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestDataSourceCatalog.java
index eb3ef32..a108853 100644
--- a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestDataSourceCatalog.java
+++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestDataSourceCatalog.java
@@ -19,28 +19,28 @@
 package org.apache.oodt.cas.filemgr.catalog;
 
 //JDK imports
+import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys;
+import org.apache.oodt.cas.filemgr.structs.*;
+import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException;
+import org.apache.oodt.cas.filemgr.util.SqlParser;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.commons.database.DatabaseConnectionBuilder;
+import org.apache.oodt.commons.database.SqlScript;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
-import javax.sql.DataSource;
 
-//OODT imports
-import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys;
-import org.apache.oodt.cas.filemgr.structs.Product;
-import org.apache.oodt.cas.filemgr.structs.ProductPage;
-import org.apache.oodt.cas.filemgr.structs.ProductType;
-import org.apache.oodt.cas.filemgr.structs.Query;
-import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException;
-import org.apache.oodt.commons.database.DatabaseConnectionBuilder;
-import org.apache.oodt.commons.database.SqlScript;
-import org.apache.oodt.cas.filemgr.util.SqlParser;
-import org.apache.oodt.cas.metadata.Metadata;
+import javax.sql.DataSource;
 
-//Junit imports
 import junit.framework.TestCase;
 
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.junit.Assert.assertThat;
+
 /**
  * @author mattmann
  * @version $Revision$
@@ -71,7 +71,7 @@ public class TestDataSourceCatalog extends TestCase {
         properties.setProperty("java.util.logging.config.file", new File(
             loggingPropertiesUrl.getFile()).getAbsolutePath());
 
-        if(properties.getProperty("overrideProperties") == null){
+        if(properties.getProperty("overrideProperties") == null) {
 
             try {
                 URL filemgrPropertiesUrl = this.getClass().getResource(
@@ -83,42 +83,45 @@ public class TestDataSourceCatalog extends TestCase {
             }
 
 
-        // first load the example configuration
+            // first load the example configuration
 
 
-        // get a temp directory
-        File tempDir = null;
-        File tempFile = null;
+            // get a temp directory
+            File tempDir = null;
+            File tempFile = null;
 
-        try {
-            tempFile = File.createTempFile("foo", "bar");
-            tempFile.deleteOnExit();
-            tempDir = tempFile.getParentFile();
-        } catch (Exception e) {
-            fail(e.getMessage());
-        }
+            try {
+                tempFile = File.createTempFile("foo", "bar");
+                tempFile.deleteOnExit();
+                tempDir = tempFile.getParentFile();
+            } catch (Exception e) {
+                fail(e.getMessage());
+            }
 
-        tmpDirPath = tempDir.getAbsolutePath();
-        if (!tmpDirPath.endsWith("/")) {
-            tmpDirPath += "/";
-        }
+            tmpDirPath = tempDir.getAbsolutePath();
+            if (!tmpDirPath.endsWith("/")) {
+                tmpDirPath += "/";
+            }
 
-        tmpDirPath += "testCat";
+            tmpDirPath += "testCat";
 
-        // now override the catalog ones
-        properties.setProperty(
+            // now override the catalog ones
+            properties.setProperty(
                 "org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.url",
                 "jdbc:hsqldb:file:" + tmpDirPath + "/testCat;shutdown=true");
 
-        properties.setProperty(
+            properties.setProperty(
                 "org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.user",
                 "sa");
-        properties.setProperty(
+            properties.setProperty(
                 "org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.pass",
                 "");
-        properties.setProperty(
+            properties.setProperty(
                 "org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.driver",
                 "org.hsqldb.jdbcDriver");
+            properties.setProperty(
+                "org.apache.oodt.cas.filemgr.catalog.datasource.lenientFields",
+                "false");
         }
         else{
             try {
@@ -392,6 +395,37 @@ public class TestDataSourceCatalog extends TestCase {
         }
     }
 
+    public void testAddProductReferences() {
+
+        Product testProduct = getTestProduct();
+        testProduct.setProductId("1"); // need to link reference to prod
+
+        Reference ref = new Reference();
+
+        ref.setMimeType("text/plain");
+        ref.setFileSize(12345);
+        List<Reference> refs = new ArrayList<Reference>();
+        refs.add(ref);
+        testProduct.setProductReferences(refs);
+        try {
+            myCat.addProductReferences(testProduct);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+
+        try {
+            List<Reference> productReferences = myCat.getProductReferences(testProduct);
+            assertNotNull(productReferences);
+            assertFalse(productReferences.isEmpty());
+            assertEquals(productReferences.get(0).getMimeType().getName(), "text/plain");
+            assertEquals(productReferences.get(0).getFileSize(), 12345);
+        } catch (CatalogException e) {
+            fail(e.getMessage());
+        }
+
+    }
+
     public void testQuery() throws Exception {
         // ingest first file
         Product testProduct = getTestProduct();
@@ -453,6 +487,59 @@ public class TestDataSourceCatalog extends TestCase {
         assertEquals("[24, 23]", productIds.toString());
     }
 
+    public void testNullValidationLayer(){
+
+        setUpProperties();
+        System.setProperty(
+            "org.apache.oodt.cas.filemgr.catalog.datasource.lenientFields",
+            "true");
+        myCat = getCatalog();
+        // now create the basic schema for the DB
+        createSchema();
+
+        assertThat(myCat, instanceOf(LenientDataSourceCatalog.class));
+
+    }
+
+    public void testPassDatasource(){
+        String url = System
+            .getProperty("org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.url");
+        String user = System
+            .getProperty("org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.user");
+        String pass = System
+            .getProperty("org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.pass");
+        String driver = System.getProperty("org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.driver");
+
+        DataSource ds = DatabaseConnectionBuilder.buildDataSource(user,pass,driver,url);
+
+        myCat = new DataSourceCatalogFactory(ds).createCatalog();
+
+        Product testProduct = getTestProduct();
+        try {
+            myCat.addProduct(testProduct);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+
+        Product retProduct;
+        try {
+            retProduct = myCat.getProductByName("test");
+            assertNotNull(retProduct);
+            assertEquals("test", retProduct.getProductName());
+            assertEquals(Product.STRUCTURE_FLAT, retProduct
+                .getProductStructure());
+            assertNotNull(retProduct.getProductType());
+            assertEquals("urn:oodt:GenericFile", retProduct.getProductType()
+                                                           .getProductTypeId());
+            assertEquals(Product.STATUS_TRANSFER, retProduct
+                .getTransferStatus());
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+
+    }
     protected String getSchemaPath() {
         URL url = this.getClass().getResource(
           "/testcat.sql");
@@ -492,7 +579,7 @@ public class TestDataSourceCatalog extends TestCase {
 
     }
 
-    private static Product getTestProduct() {
+    protected static Product getTestProduct() {
         Product testProduct = Product.getDefaultFlatProduct("test",
                 "urn:oodt:GenericFile");
         testProduct.getProductType().setName("GenericFile");

http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java
----------------------------------------------------------------------
diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java
index 7079115..3115d10 100644
--- a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java
+++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java
@@ -18,29 +18,22 @@
 
 package org.apache.oodt.cas.filemgr.catalog;
 
-//JDK imports
+import com.google.common.collect.Lists;
+
+import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys;
+import org.apache.oodt.cas.filemgr.structs.*;
+import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.hamcrest.CoreMatchers;
+import org.junit.Assert;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.net.URL;
+import java.util.List;
 import java.util.Properties;
 import java.util.Vector;
 
-//OODT imports
-import org.apache.oodt.cas.filemgr.catalog.LuceneCatalog;
-import org.apache.oodt.cas.filemgr.catalog.LuceneCatalogFactory;
-import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys;
-import org.apache.oodt.cas.filemgr.structs.BooleanQueryCriteria;
-import org.apache.oodt.cas.filemgr.structs.Product;
-import org.apache.oodt.cas.filemgr.structs.ProductPage;
-import org.apache.oodt.cas.filemgr.structs.ProductType;
-import org.apache.oodt.cas.filemgr.structs.Query;
-import org.apache.oodt.cas.filemgr.structs.Reference;
-import org.apache.oodt.cas.filemgr.structs.TermQueryCriteria;
-import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException;
-import org.apache.oodt.cas.metadata.Metadata;
-import com.google.common.collect.Lists;
-
-//Junit imports
 import junit.framework.TestCase;
 
 /**
@@ -87,7 +80,7 @@ public class TestLuceneCatalog extends TestCase {
         // get a temp directory
 
         File tempDir = null;
-        File tempFile = null;
+        File tempFile;
 
         try {
             tempFile = File.createTempFile("foo", "bar");
@@ -124,6 +117,9 @@ public class TestLuceneCatalog extends TestCase {
                 "org.apache.oodt.cas.filemgr.catalog.lucene.mergeFactor",
                 "20");
 
+        properties.setProperty(
+            "org.apache.oodt.cas.filemgr.catalog.datasource.lenientFields",
+            "false");
         // now override the val layer ones
         URL examplesCoreUrl = this.getClass().getResource(
             "/examples/core");
@@ -156,8 +152,8 @@ public class TestLuceneCatalog extends TestCase {
             File[] tmpFiles = tmpDir.listFiles();
 
             if (tmpFiles != null && tmpFiles.length > 0) {
-                for (int i = 0; i < tmpFiles.length; i++) {
-                    tmpFiles[i].delete();
+                for (File tmpFile : tmpFiles) {
+                    tmpFile.delete();
                 }
 
                 tmpDir.delete();
@@ -315,7 +311,7 @@ public class TestLuceneCatalog extends TestCase {
         Product testProd = getTestProduct();
         Metadata met = getTestMetadata("test");
 
-        for (int i = 0; i < this.catPageSize; i++) {
+        for (int i = 0; i < catPageSize; i++) {
             try {
                 myCat.addProduct(testProd);
                 myCat.addMetadata(met, testProd);
@@ -354,10 +350,470 @@ public class TestLuceneCatalog extends TestCase {
         assertEquals(1, page.getPageProducts().size());
         assertEquals(2, page.getTotalPages());
         assertNotNull(page.getPageProducts().get(0));
-        Product retProd = ((Product) page.getPageProducts().get(0));
+        Product retProd = page.getPageProducts().get(0);
         assertEquals("ShouldBeFirstForPage.txt", retProd.getProductName());
     }
-    
+
+    public void testGetLastProductOnLastPage() {
+        // add catPageSize of the test Product
+        // then add a product called "ShouldBeFirstForPage.txt"
+        // make sure it's the first one on the 2nd page
+
+        Product testProd = getTestProduct();
+        Metadata met = getTestMetadata("test");
+
+        for (int i = 0; i < catPageSize; i++) {
+            try {
+                myCat.addProduct(testProd);
+                myCat.addMetadata(met, testProd);
+            } catch (Exception e) {
+                fail(e.getMessage());
+            }
+        }
+
+        testProd.setProductName("ShouldBeFirstForPage.txt");
+        met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt");
+
+        try {
+            myCat.addProduct(testProd);
+            myCat.addMetadata(met, testProd);
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        try {
+            assertNotNull(myCat.getProducts());
+            assertEquals(21, myCat.getProducts().size());
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        ProductType type = new ProductType();
+        type.setProductTypeId("urn:oodt:GenericFile");
+        type.setName("GenericFile");
+        assertNotNull(myCat.getLastProductPage(type));
+        assertNotNull(myCat.getLastProductPage(type).getPageProducts());
+        assertEquals(1, myCat.getLastProductPage(type).getPageProducts()
+                                       .size());
+        ProductPage page = myCat.getLastProductPage(type);
+        assertNotNull(page);
+        assertNotNull(page.getPageProducts());
+        assertEquals(1, page.getPageProducts().size());
+        assertEquals(2, page.getTotalPages());
+        List<Product> prods = page.getPageProducts();
+        assertNotNull(page.getPageProducts().get(0));
+        Product retProd = page.getPageProducts().get(0);
+        assertEquals("ShouldBeFirstForPage.txt", retProd.getProductName());
+    }
+
+    public void testGetTopNProducts() {
+        // add catPageSize of the test Product
+        // then add a product called "ShouldBeFirstForPage.txt"
+        // make sure it's the first one on the 2nd page
+
+        Product testProd = getTestProduct();
+        Metadata met = getTestMetadata("test");
+
+        for (int i = 0; i < catPageSize; i++) {
+            try {
+                myCat.addProduct(testProd);
+                myCat.addMetadata(met, testProd);
+            } catch (Exception e) {
+                fail(e.getMessage());
+            }
+        }
+
+        testProd.setProductName("ShouldBeFirstForPage.txt");
+        met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt");
+
+        try {
+            myCat.addProduct(testProd);
+            myCat.addMetadata(met, testProd);
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        try {
+            assertNotNull(myCat.getProducts());
+            assertEquals(21, myCat.getProducts().size());
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        try {
+            assertNotNull(myCat.getTopNProducts(5));
+            assertEquals(5, myCat.getTopNProducts(5).size());
+            Product retProd = myCat.getTopNProducts(5).get(0);
+            assertEquals("test", retProd.getProductName());
+        } catch (CatalogException e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    public void testGetNextPageNullType(){
+        Product testProd = getTestProduct();
+        Metadata met = getTestMetadata("test");
+
+        for (int i = 0; i < catPageSize; i++) {
+            try {
+                myCat.addProduct(testProd);
+                myCat.addMetadata(met, testProd);
+            } catch (Exception e) {
+                fail(e.getMessage());
+            }
+        }
+
+        testProd.setProductName("ShouldBeFirstForPage.txt");
+        met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt");
+
+        try {
+            myCat.addProduct(testProd);
+            myCat.addMetadata(met, testProd);
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        try {
+            assertNotNull(myCat.getProducts());
+            assertEquals(21, myCat.getProducts().size());
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        ProductType type = new ProductType();
+        type.setProductTypeId("urn:oodt:GenericFile");
+        type.setName("GenericFile");
+        assertNotNull(myCat.getFirstPage(type));
+        assertNotNull(myCat.getFirstPage(type).getPageProducts());
+        assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts()
+                                       .size());
+
+        ProductPage page = myCat.getNextPage(null, myCat.getFirstPage(type));
+
+
+        assertNull(page);
+    }
+
+    public void testGetNextPageNullCurrentPage(){
+        Product testProd = getTestProduct();
+        Metadata met = getTestMetadata("test");
+
+        for (int i = 0; i < catPageSize; i++) {
+            try {
+                myCat.addProduct(testProd);
+                myCat.addMetadata(met, testProd);
+            } catch (Exception e) {
+                fail(e.getMessage());
+            }
+        }
+
+        testProd.setProductName("ShouldBeFirstForPage.txt");
+        met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt");
+
+        try {
+            myCat.addProduct(testProd);
+            myCat.addMetadata(met, testProd);
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        try {
+            assertNotNull(myCat.getProducts());
+            assertEquals(21, myCat.getProducts().size());
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        ProductType type = new ProductType();
+        type.setProductTypeId("urn:oodt:GenericFile");
+        type.setName("GenericFile");
+        assertNotNull(myCat.getFirstPage(type));
+        assertNotNull(myCat.getFirstPage(type).getPageProducts());
+        assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts()
+                                       .size());
+        ProductPage page = myCat.getNextPage(type, null);
+        assertNotNull(page);
+        assertNotNull(page.getPageProducts());
+        assertEquals(20, page.getPageProducts().size());
+        assertEquals(2, page.getTotalPages());
+        assertNotNull(page.getPageProducts().get(0));
+        Product retProd = page.getPageProducts().get(0);
+        assertEquals("test", retProd.getProductName());
+    }
+
+    public void testGetNextPageCurrentPageIsLastPage(){
+        Product testProd = getTestProduct();
+        Metadata met = getTestMetadata("test");
+
+        for (int i = 0; i < catPageSize; i++) {
+            try {
+                myCat.addProduct(testProd);
+                myCat.addMetadata(met, testProd);
+            } catch (Exception e) {
+                fail(e.getMessage());
+            }
+        }
+
+        testProd.setProductName("ShouldBeFirstForPage.txt");
+        met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt");
+
+        try {
+            myCat.addProduct(testProd);
+            myCat.addMetadata(met, testProd);
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        try {
+            assertNotNull(myCat.getProducts());
+            assertEquals(21, myCat.getProducts().size());
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        ProductType type = new ProductType();
+        type.setProductTypeId("urn:oodt:GenericFile");
+        type.setName("GenericFile");
+        assertNotNull(myCat.getFirstPage(type));
+        assertNotNull(myCat.getFirstPage(type).getPageProducts());
+        assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts()
+                                       .size());
+        ProductPage page = myCat.getNextPage(type, myCat.getLastProductPage(type));
+        assertNotNull(page);
+        assertNotNull(page.getPageProducts());
+        assertEquals(1, page.getPageProducts().size());
+        assertEquals(2, page.getTotalPages());
+        assertNotNull(page.getPageProducts().get(0));
+        Product retProd = page.getPageProducts().get(0);
+        assertEquals("ShouldBeFirstForPage.txt", retProd.getProductName());
+    }
+
+    public void testGetPrevPage(){
+        Product testProd = getTestProduct();
+        Metadata met = getTestMetadata("test");
+
+        for (int i = 0; i < catPageSize; i++) {
+            try {
+                myCat.addProduct(testProd);
+                myCat.addMetadata(met, testProd);
+            } catch (Exception e) {
+                fail(e.getMessage());
+            }
+        }
+
+        testProd.setProductName("ShouldBeFirstForPage.txt");
+        met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt");
+
+        try {
+            myCat.addProduct(testProd);
+            myCat.addMetadata(met, testProd);
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        try {
+            assertNotNull(myCat.getProducts());
+            assertEquals(21, myCat.getProducts().size());
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        ProductType type = new ProductType();
+        type.setProductTypeId("urn:oodt:GenericFile");
+        type.setName("GenericFile");
+        assertNotNull(myCat.getFirstPage(type));
+        assertNotNull(myCat.getFirstPage(type).getPageProducts());
+        assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts()
+                                       .size());
+        ProductPage page2 = myCat.getNextPage(type, myCat.getFirstPage(type));
+        ProductPage page = myCat.getPrevPage(type, page2);
+        assertEquals(2, page2.getPageNum());
+        assertEquals(1, page.getPageNum());
+    }
+
+    public void testGetPrevPageNullCurrentPage(){
+        Product testProd = getTestProduct();
+        Metadata met = getTestMetadata("test");
+
+        for (int i = 0; i < catPageSize; i++) {
+            try {
+                myCat.addProduct(testProd);
+                myCat.addMetadata(met, testProd);
+            } catch (Exception e) {
+                fail(e.getMessage());
+            }
+        }
+
+        testProd.setProductName("ShouldBeFirstForPage.txt");
+        met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt");
+
+        try {
+            myCat.addProduct(testProd);
+            myCat.addMetadata(met, testProd);
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        try {
+            assertNotNull(myCat.getProducts());
+            assertEquals(21, myCat.getProducts().size());
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        ProductType type = new ProductType();
+        type.setProductTypeId("urn:oodt:GenericFile");
+        type.setName("GenericFile");
+        assertNotNull(myCat.getFirstPage(type));
+        assertNotNull(myCat.getFirstPage(type).getPageProducts());
+        assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts()
+                                       .size());
+        ProductPage page = myCat.getPrevPage(type, null);
+        assertNotNull(page);
+        assertNotNull(page.getPageProducts());
+        assertEquals(20, page.getPageProducts().size());
+        assertEquals(2, page.getTotalPages());
+        assertNotNull(page.getPageProducts().get(0));
+        Product retProd = page.getPageProducts().get(0);
+        assertEquals("test", retProd.getProductName());
+    }
+
+    public void testGetPrevPageCurrentPageIsFirstPage(){
+        Product testProd = getTestProduct();
+        Metadata met = getTestMetadata("test");
+
+        for (int i = 0; i < catPageSize; i++) {
+            try {
+                myCat.addProduct(testProd);
+                myCat.addMetadata(met, testProd);
+            } catch (Exception e) {
+                fail(e.getMessage());
+            }
+        }
+
+        testProd.setProductName("ShouldBeFirstForPage.txt");
+        met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt");
+
+        try {
+            myCat.addProduct(testProd);
+            myCat.addMetadata(met, testProd);
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        try {
+            assertNotNull(myCat.getProducts());
+            assertEquals(21, myCat.getProducts().size());
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        ProductType type = new ProductType();
+        type.setProductTypeId("urn:oodt:GenericFile");
+        type.setName("GenericFile");
+        assertNotNull(myCat.getFirstPage(type));
+        assertNotNull(myCat.getFirstPage(type).getPageProducts());
+        assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts()
+                                       .size());
+        ProductPage page = myCat.getPrevPage(type, myCat.getFirstPage(type));
+        assertNotNull(page);
+        assertNotNull(page.getPageProducts());
+        assertEquals(20, page.getPageProducts().size());
+        assertEquals(2, page.getTotalPages());
+        assertNotNull(page.getPageProducts().get(0));
+        Product retProd = page.getPageProducts().get(0);
+        assertEquals("test", retProd.getProductName());
+    }
+
+    public void testGetPrevPageNullProductType(){
+        Product testProd = getTestProduct();
+        Metadata met = getTestMetadata("test");
+
+        for (int i = 0; i < catPageSize; i++) {
+            try {
+                myCat.addProduct(testProd);
+                myCat.addMetadata(met, testProd);
+            } catch (Exception e) {
+                fail(e.getMessage());
+            }
+        }
+
+        testProd.setProductName("ShouldBeFirstForPage.txt");
+        met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt");
+
+        try {
+            myCat.addProduct(testProd);
+            myCat.addMetadata(met, testProd);
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        try {
+            assertNotNull(myCat.getProducts());
+            assertEquals(21, myCat.getProducts().size());
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        ProductType type = new ProductType();
+        type.setProductTypeId("urn:oodt:GenericFile");
+        type.setName("GenericFile");
+        assertNotNull(myCat.getFirstPage(type));
+        assertNotNull(myCat.getFirstPage(type).getPageProducts());
+        assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts()
+                                       .size());
+        ProductPage page2 = myCat.getNextPage(type, myCat.getFirstPage(type));
+        ProductPage page = myCat.getPrevPage(null, page2);
+        assertNull(page);
+
+    }
+
+    public void testGetTopNProductsByType() {
+
+        Product testProd = getTestProduct();
+        Metadata met = getTestMetadata("test");
+
+        for (int i = 0; i < catPageSize; i++) {
+            try {
+                myCat.addProduct(testProd);
+                myCat.addMetadata(met, testProd);
+            } catch (Exception e) {
+                fail(e.getMessage());
+            }
+        }
+
+        testProd.setProductName("ShouldBeFirstForPage.txt");
+        met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt");
+
+        try {
+            myCat.addProduct(testProd);
+            myCat.addMetadata(met, testProd);
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        try {
+            assertNotNull(myCat.getProducts());
+            assertEquals(21, myCat.getProducts().size());
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        ProductType type = new ProductType();
+        type.setProductTypeId("urn:oodt:GenericFile");
+        type.setName("GenericFile");
+        try {
+            assertNotNull(myCat.getTopNProducts(5, type));
+            assertEquals(5, myCat.getTopNProducts(5, type).size());
+            Product retProd = myCat.getTopNProducts(5, type).get(0);
+            assertEquals("test", retProd.getProductName());
+        } catch (CatalogException e) {
+            e.printStackTrace();
+        }
+
+    }
+
     /**
      * @since OODT-141
      */
@@ -524,7 +980,23 @@ public class TestLuceneCatalog extends TestCase {
     	assertEquals(page.getPageNum(), 1);
     	assertEquals(page.getTotalPages(), 1);
     }
-	
+
+    public void testNullIndexPath(){
+        System.clearProperty("org.apache.oodt.cas.filemgr.catalog.lucene.idxPath");
+        try{
+            LuceneCatalogFactory fact = new LuceneCatalogFactory();
+            fail( "Missing exception" );
+
+        } catch( IllegalArgumentException e ) {
+            Assert.assertThat(e.getMessage(), CoreMatchers.containsString("error initializing lucene catalog: "));
+        }
+    }
+
+    public void testCreateCatalogException(){
+
+        //TODO Use the TestAppender to make sure that an exception thrown is caught and logged.
+    }
+
     private static Product getTestProduct() {
         Product testProduct = Product.getDefaultFlatProduct("test",
                 "urn:oodt:GenericFile");

http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestMappedDataSourceCatalog.java
----------------------------------------------------------------------
diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestMappedDataSourceCatalog.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestMappedDataSourceCatalog.java
index b6efdb2..fa16e2a 100644
--- a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestMappedDataSourceCatalog.java
+++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestMappedDataSourceCatalog.java
@@ -71,5 +71,4 @@ public class TestMappedDataSourceCatalog extends TestDataSourceCatalog {
 
         return new File(url.getFile()).getAbsolutePath();
     }
-
 }

http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestOrderedDataSourceCatalog.java
----------------------------------------------------------------------
diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestOrderedDataSourceCatalog.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestOrderedDataSourceCatalog.java
index a06ed5e..5e87ddc 100644
--- a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestOrderedDataSourceCatalog.java
+++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestOrderedDataSourceCatalog.java
@@ -17,11 +17,12 @@
 
 package org.apache.oodt.cas.filemgr.catalog;
 
+import org.apache.oodt.cas.filemgr.structs.Product;
+import org.apache.oodt.cas.metadata.Metadata;
+
 import java.io.File;
 import java.net.URL;
 import java.util.Properties;
-import org.apache.oodt.cas.filemgr.structs.Product;
-import org.apache.oodt.cas.metadata.Metadata;
 
 /**
  * @author mattmann
@@ -98,7 +99,7 @@ public class TestOrderedDataSourceCatalog extends TestDataSourceCatalog {
 
   }
 
-  private static Product getTestProduct() {
+  protected static Product getTestProduct() {
     Product testProduct = Product.getDefaultFlatProduct("test",
         "urn:oodt:GenericFile");
     testProduct.getProductType().setName("GenericFile");