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:05 UTC

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

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);
       }