Remove string concat
Project: http://git-wip-us.apache.org/repos/asf/oodt/repo Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/5d6098ae Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/5d6098ae Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/5d6098ae Branch: refs/heads/master Commit: 5d6098ae482bce12075fbc770cba0484424924c4 Parents: c81e9b4 Author: Tom Barber <t...@analytical-labs.com> Authored: Fri Jan 8 22:31:06 2016 +0000 Committer: Tom Barber <t...@analytical-labs.com> Committed: Fri Jan 8 22:31:06 2016 +0000 ---------------------------------------------------------------------- .../catalog/LenientDataSourceCatalog.java | 50 +++++++++++--------- .../filemgr/structs/BooleanQueryCriteria.java | 19 ++++---- .../filemgr/structs/FreeTextQueryCriteria.java | 8 ++-- .../oodt/cas/filemgr/tools/CatalogSearch.java | 9 ++-- .../apache/oodt/cas/filemgr/util/SqlParser.java | 34 ++++++------- 5 files changed, 62 insertions(+), 58 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oodt/blob/5d6098ae/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LenientDataSourceCatalog.java ---------------------------------------------------------------------- diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LenientDataSourceCatalog.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LenientDataSourceCatalog.java index 83f9adb..b8219f7 100644 --- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LenientDataSourceCatalog.java +++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LenientDataSourceCatalog.java @@ -328,33 +328,34 @@ public class LenientDataSourceCatalog extends DataSourceCatalog { conn = dataSource.getConnection(); statement = conn.createStatement(); - String elementIds = ""; + StringBuilder elementIds = new StringBuilder(""); if (elems.size() > 0) { if (getValidationLayer()!=null) { // validation layer: column "element_id" contains the element identifier (e.g. "urn:oodt:ProductReceivedTime") - elementIds += " AND (element_id = '" + this.getValidationLayer().getElementByName(elems.get(0)).getElementId() + "'"; + elementIds.append(" AND (element_id = '" + this.getValidationLayer().getElementByName(elems.get(0)) + .getElementId() + "'"); for (int i = 1; i < elems.size(); i++) { - elementIds += + elementIds.append( " OR element_id = '" + this.getValidationLayer().getElementByName(elems.get(i)).getElementId() - + "'"; + + "'"); } - elementIds += ")"; + elementIds.append(")"); } else { // no validation layer: column "element_id" contains the element name (e.g. "CAS.ProductReceivedTime") - elementIds += " AND (element_id = '" + elems.get(0) + "'"; + elementIds.append(" AND (element_id = '" + elems.get(0) + "'"); for (int i = 1; i < elems.size(); i++) { - elementIds += " OR element_id = '" + elems.get(i) + "'"; + elementIds.append(" OR element_id = '" + elems.get(i) + "'"); } - elementIds += ")"; + elementIds.append(")"); } } String metadataSql = "SELECT element_id,metadata_value FROM " + product.getProductType().getName() + "_metadata" - + " WHERE product_id = " + quoteIt(product.getProductId()) + elementIds; + + " WHERE product_id = " + quoteIt(product.getProductId()) + elementIds.toString(); if(this.orderedValues) { metadataSql += " ORDER BY pkey"; } @@ -761,24 +762,26 @@ public class LenientDataSourceCatalog extends DataSourceCatalog { * Overridden method from superclass to allow for null validation layer. */ protected String getSqlQuery(QueryCriteria queryCriteria, ProductType type) throws ValidationLayerException, CatalogException { - String sqlQuery; + 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) + ")"; + new StringBuilder("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" - + " WHERE products.product_id="+type.getName() + "_metadata.product_id" - + " AND products.product_id NOT IN (" + this.getSqlQuery(bqc.getTerms().get(0), type) + ")"; + new StringBuilder("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) + + ")"); } } else { - sqlQuery = "(" + this.getSqlQuery(bqc.getTerms().get(0), type); + sqlQuery.append("(").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.append(") ").append(op).append(" (").append(this.getSqlQuery(bqc.getTerms().get(i), type)); } - sqlQuery += ")"; + sqlQuery.append(")"); } }else { String elementIdStr = queryCriteria.getElementName(); @@ -790,14 +793,15 @@ public class LenientDataSourceCatalog extends DataSourceCatalog { elementIdStr = "'" + elementIdStr + "'"; } if (!this.productIdString) { - sqlQuery = "SELECT DISTINCT product_id FROM " + type.getName() + "_metadata WHERE element_id = " + elementIdStr + " AND "; + new StringBuilder("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" + new StringBuilder("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; @@ -815,13 +819,13 @@ public class LenientDataSourceCatalog extends DataSourceCatalog { .getEndValue() + "')"; } } - sqlQuery += rangeSubQuery; + sqlQuery.append(rangeSubQuery); } else { throw new CatalogException("Invalid QueryCriteria [" + queryCriteria.getClass().getCanonicalName() + "]"); } } - return sqlQuery; + return sqlQuery.toString(); } } http://git-wip-us.apache.org/repos/asf/oodt/blob/5d6098ae/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/BooleanQueryCriteria.java ---------------------------------------------------------------------- diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/BooleanQueryCriteria.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/BooleanQueryCriteria.java index bf19b42..4b9a759 100644 --- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/BooleanQueryCriteria.java +++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/BooleanQueryCriteria.java @@ -18,11 +18,12 @@ package org.apache.oodt.cas.filemgr.structs; //JDK imports +import org.apache.oodt.cas.filemgr.structs.exceptions.QueryFormulationException; + import java.util.List; import java.util.Vector; //OODT imports -import org.apache.oodt.cas.filemgr.structs.exceptions.QueryFormulationException; /** * @author woollard @@ -159,22 +160,22 @@ public class BooleanQueryCriteria extends QueryCriteria { * @return string equivement of the query */ public String toString() { - String query = ""; + StringBuilder query = new StringBuilder(); if (operator == AND) { - query += "AND("; + query.append("AND("); } else if (operator == OR) { - query += "OR("; + query.append("OR("); } else { - query += "NOT("; + query.append("NOT("); } for (int i = 0; i < terms.size(); i++) { - query += ((QueryCriteria) terms.get(i)).toString(); + query.append(terms.get(i).toString()); if (i < (terms.size() - 1)) { - query += ", "; + query.append(", "); } } - query += ")"; - return query; + query.append(")"); + return query.toString(); } } http://git-wip-us.apache.org/repos/asf/oodt/blob/5d6098ae/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/FreeTextQueryCriteria.java ---------------------------------------------------------------------- diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/FreeTextQueryCriteria.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/FreeTextQueryCriteria.java index daf9fa3..4dde779 100644 --- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/FreeTextQueryCriteria.java +++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/FreeTextQueryCriteria.java @@ -158,12 +158,12 @@ public class FreeTextQueryCriteria extends QueryCriteria { * @return The query as a String. */ public String toString() { - String serial = elementName + ":("; + StringBuilder serial = new StringBuilder(elementName + ":("); for (String value : values) { - serial += "+" + (String) value; + serial.append("+").append(value); } - serial += ")"; - return serial; + serial.append(")"); + return serial.toString(); } } http://git-wip-us.apache.org/repos/asf/oodt/blob/5d6098ae/filemgr/src/main/java/org/apache/oodt/cas/filemgr/tools/CatalogSearch.java ---------------------------------------------------------------------- diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/tools/CatalogSearch.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/tools/CatalogSearch.java index 9ac780c..7fd77fe 100644 --- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/tools/CatalogSearch.java +++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/tools/CatalogSearch.java @@ -57,7 +57,6 @@ import java.util.logging.Logger; */ public class CatalogSearch { private static Logger LOG = Logger.getLogger(CatalogSearch.class.getName()); - private static QueryParser parser; private static XmlRpcFileManagerClient client; @@ -227,7 +226,7 @@ public class CatalogSearch { public static Query ParseQuery(String query) { // note that "__FREE__" is a control work for free text searching - parser = new QueryParser(freeTextBlock, new CASAnalyzer()); + QueryParser parser = new QueryParser(freeTextBlock, new CASAnalyzer()); Query luceneQ = null; try { luceneQ = (Query) parser.parse(query); @@ -317,12 +316,12 @@ public class CatalogSearch { System.out.println("Exiting..."); System.exit(0); } else if (com.equalsIgnoreCase("query")) { - String query = ""; + StringBuilder query = new StringBuilder(); while (tok.hasMoreTokens()) { - query += tok.nextToken() + " "; + query.append(tok.nextToken()).append(" "); } System.out.println("querying for: " + query); - Query parsedQuery = ParseQuery(query); + Query parsedQuery = ParseQuery(query.toString()); org.apache.oodt.cas.filemgr.structs.Query casQuery = new org.apache.oodt.cas.filemgr.structs.Query(); GenerateCASQuery(casQuery, parsedQuery); http://git-wip-us.apache.org/repos/asf/oodt/blob/5d6098ae/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/SqlParser.java ---------------------------------------------------------------------- diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/SqlParser.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/SqlParser.java index 0e1d35f..0e101fc 100644 --- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/SqlParser.java +++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/SqlParser.java @@ -173,32 +173,32 @@ public class SqlParser { } public static String getInfixCriteriaString(QueryCriteria criteria) { - String returnString = ""; + StringBuilder returnString = new StringBuilder(); if (criteria instanceof BooleanQueryCriteria) { BooleanQueryCriteria bqc = (BooleanQueryCriteria) criteria; List<QueryCriteria> terms = bqc.getTerms(); switch(bqc.getOperator()){ case 0: - returnString = "(" + getInfixCriteriaString((QueryCriteria) terms.get(0)); + returnString.append("(").append(getInfixCriteriaString(terms.get(0))); for (int i = 1; i < terms.size(); i++) { - returnString += " AND " + getInfixCriteriaString((QueryCriteria) terms.get(i)); + returnString.append(" AND ").append(getInfixCriteriaString(terms.get(i))); } - returnString += ")"; + returnString.append(")"); break; case 1: - returnString = "(" + getInfixCriteriaString((QueryCriteria) terms.get(0)); + returnString.append("(").append(getInfixCriteriaString(terms.get(0))); for (int i = 1; i < terms.size(); i++) { - returnString += " OR " + getInfixCriteriaString((QueryCriteria) terms.get(i)); + returnString.append(" OR ").append(getInfixCriteriaString(terms.get(i))); } - returnString += ")"; + returnString.append(")"); break; case 2: QueryCriteria qc = bqc.getTerms().get(0); if (qc instanceof TermQueryCriteria) { TermQueryCriteria tqc = (TermQueryCriteria) qc; - returnString = tqc.getElementName() + " != '" + tqc.getValue() + "'"; + returnString.append(tqc.getElementName()).append(" != '").append(tqc.getValue()).append("'"); }else { - returnString = "NOT(" + getInfixCriteriaString(qc) + ")"; + returnString.append("NOT(").append(getInfixCriteriaString(qc)).append(")"); } break; } @@ -210,12 +210,12 @@ public class SqlParser { }else { opString = "<" + opString + " '" + rqc.getEndValue() + "'"; } - returnString = rqc.getElementName() + " " + opString; + returnString.append(rqc.getElementName()).append(" ").append(opString); }else if (criteria instanceof TermQueryCriteria) { TermQueryCriteria tqc = (TermQueryCriteria) criteria; - returnString = tqc.getElementName() + " == '" + tqc.getValue() + "'"; + returnString.append(tqc.getElementName()).append(" == '").append(tqc.getValue()).append("'"); } - return returnString; + return returnString.toString(); } private static String stripOutSqlDefinition(String sqlStringQueryMethod) { @@ -346,14 +346,14 @@ public class SqlParser { } private static String listToString(List<String> list) { - String arrayString = ""; + StringBuilder arrayString = new StringBuilder(); if (list.size() > 0) { - arrayString = list.get(0); + arrayString.append(list.get(0)); for (int i = 1; i < list.size(); i++) { - arrayString += "," + list.get(i); + arrayString.append(",").append(list.get(i)); } - } - return arrayString; + } + return arrayString.toString(); }