Author: luca
Date: Mon Dec 17 21:22:54 2012
New Revision: 1423152
URL: http://svn.apache.org/viewvc?rev=1423152&view=rev
Log:
Allowing ordering of products from DataSourceCatalog in the case "product_id"
is of type string (OODT-544). See review board at:
https://reviews.apache.org/r/8648/.
Modified:
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/DataSourceCatalog.java
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LenientDataSourceCatalog.java
oodt/trunk/filemgr/src/main/resources/cas-filemgr-core-schema-oracle.sql
oodt/trunk/filemgr/src/main/resources/cas-filemgr-schema-mysql.sql
Modified:
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/DataSourceCatalog.java
URL:
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/DataSourceCatalog.java?rev=1423152&r1=1423151&r2=1423152&view=diff
==============================================================================
---
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/DataSourceCatalog.java
(original)
+++
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/DataSourceCatalog.java
Mon Dec 17 21:22:54 2012
@@ -1996,15 +1996,31 @@ public class DataSourceCatalog implement
ResultSet.CONCUR_READ_ONLY);
String getProductSql = null;
- if (query.getCriteria().size() == 0) {
- getProductSql = "SELECT DISTINCT product_id FROM " +
type.getName() + "_metadata";
- }else if (query.getCriteria().size() == 1) {
+
+ if (!productIdString) {
+
+ if (query.getCriteria().size() == 0) {
+ getProductSql = "SELECT DISTINCT product_id FROM " +
type.getName() + "_metadata";
+ }else if (query.getCriteria().size() == 1) {
+ getProductSql =
this.getSqlQuery(query.getCriteria().get(0), type);
+ }else {
+ getProductSql = this.getSqlQuery(new
BooleanQueryCriteria(query.getCriteria(), BooleanQueryCriteria.AND), type);
+ }
+ getProductSql += " 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";
+ } else if (query.getCriteria().size() == 1) {
getProductSql = this.getSqlQuery(query.getCriteria().get(0),
type);
- }else {
+ } else {
getProductSql = this.getSqlQuery(new
BooleanQueryCriteria(query.getCriteria(), BooleanQueryCriteria.AND), type);
+ }
+ getProductSql += " ORDER BY products.product_datetime DESC ";
}
- getProductSql += " ORDER BY product_id DESC ";
-
+
LOG.log(Level.FINE, "catalog query: executing: " + getProductSql);
rs = statement.executeQuery(getProductSql);
@@ -2100,8 +2116,14 @@ public class DataSourceCatalog implement
String sqlQuery = null;
if (queryCriteria instanceof BooleanQueryCriteria) {
BooleanQueryCriteria bqc = (BooleanQueryCriteria) queryCriteria;
- if (bqc.getOperator() == BooleanQueryCriteria.NOT) {
- sqlQuery = "SELECT DISTINCT product_id FROM " + type.getName()
+ "_metadata WHERE product_id NOT IN (" +
this.getSqlQuery(bqc.getTerms().get(0), type) + ")";
+ 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) + ")";
+ } 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) +
")";
+ }
}else {
sqlQuery = "(" + this.getSqlQuery(bqc.getTerms().get(0), type);
String op = bqc.getOperator() == BooleanQueryCriteria.AND ?
"INTERSECT" : "UNION";
@@ -2113,7 +2135,13 @@ public class DataSourceCatalog implement
String elementIdStr =
this.validationLayer.getElementByName(queryCriteria.getElementName()).getElementId();
if (fieldIdStringFlag)
elementIdStr = "'" + elementIdStr + "'";
- sqlQuery = "SELECT DISTINCT product_id FROM " + type.getName() +
"_metadata WHERE element_id = " + elementIdStr + " AND ";
+ if (!this.productIdString) {
+ sqlQuery = "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"
+ + " WHERE products.product_id="+type.getName() +
"_metadata.product_id"
+ + " AND element_id = " + elementIdStr + "
AND ";
+ }
if (queryCriteria instanceof TermQueryCriteria) {
sqlQuery += "metadata_value = '" + ((TermQueryCriteria)
queryCriteria).getValue() + "'";
} else if (queryCriteria instanceof RangeQueryCriteria) {
Modified:
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LenientDataSourceCatalog.java
URL:
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LenientDataSourceCatalog.java?rev=1423152&r1=1423151&r2=1423152&view=diff
==============================================================================
---
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LenientDataSourceCatalog.java
(original)
+++
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LenientDataSourceCatalog.java
Mon Dec 17 21:22:54 2012
@@ -753,8 +753,14 @@ public class LenientDataSourceCatalog ex
if (queryCriteria instanceof BooleanQueryCriteria) {
BooleanQueryCriteria bqc = (BooleanQueryCriteria) queryCriteria;
if (bqc.getOperator() == BooleanQueryCriteria.NOT) {
- sqlQuery = "SELECT DISTINCT product_id FROM " + type.getName() +
"_metadata WHERE product_id NOT IN (" + this.getSqlQuery(bqc.getTerms().get(0),
type) + ")";
- }else {
+ if (!this.productIdString) {
+ sqlQuery = "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) + ")";
+ }
+ } else {
sqlQuery = "(" + this.getSqlQuery(bqc.getTerms().get(0), type);
String op = bqc.getOperator() == BooleanQueryCriteria.AND ?
"INTERSECT" : "UNION";
for (int i = 1; i < bqc.getTerms().size(); i++)
@@ -769,7 +775,13 @@ public class LenientDataSourceCatalog ex
if (fieldIdStringFlag)
elementIdStr = "'" + elementIdStr + "'";
- sqlQuery = "SELECT DISTINCT product_id FROM " + type.getName() +
"_metadata WHERE element_id = " + elementIdStr + " AND ";
+ if (!this.productIdString) {
+ sqlQuery = "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"
+ + " WHERE products.product_id="+type.getName() +
"_metadata.product_id"
+ + " AND element_id = " + elementIdStr + "
AND ";
+ }
if (queryCriteria instanceof TermQueryCriteria) {
sqlQuery += "metadata_value = '" + ((TermQueryCriteria)
queryCriteria).getValue() + "'";
} else if (queryCriteria instanceof RangeQueryCriteria) {
Modified:
oodt/trunk/filemgr/src/main/resources/cas-filemgr-core-schema-oracle.sql
URL:
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/resources/cas-filemgr-core-schema-oracle.sql?rev=1423152&r1=1423151&r2=1423152&view=diff
==============================================================================
--- oodt/trunk/filemgr/src/main/resources/cas-filemgr-core-schema-oracle.sql
(original)
+++ oodt/trunk/filemgr/src/main/resources/cas-filemgr-core-schema-oracle.sql
Mon Dec 17 21:22:54 2012
@@ -26,6 +26,17 @@ CREATE TABLE PRODUCTS (
PRIMARY KEY (PRODUCT_ID)
);
+-- Example PRODUCTS table using PRODUCT_ID of type string
+-- CREATE TABLE PRODUCTS (
+-- PRODUCT_ID VARCHAR(100) NOT NULL ,
+-- PRODUCT_STRUCTURE VARCHAR(20) DEFAULT ''NOT NULL,
+-- PRODUCT_TYPE_ID number(11) DEFAULT '0'NOT NULL,
+-- PRODUCT_NAME VARCHAR(255) DEFAULT ''NOT NULL,
+-- PRODUCT_TRANSFER_STATUS VARCHAR(255) DEFAULT 'TRANSFERING' NOT NULL,
+-- PRODUCT_DATETIME DATE NOT NULL,
+-- PRIMARY KEY (PRODUCT_ID)
+--);
+
CREATE INDEX PRODUCTS_idx ON PRODUCTS(product_id);
EXIT;
Modified: oodt/trunk/filemgr/src/main/resources/cas-filemgr-schema-mysql.sql
URL:
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/resources/cas-filemgr-schema-mysql.sql?rev=1423152&r1=1423151&r2=1423152&view=diff
==============================================================================
--- oodt/trunk/filemgr/src/main/resources/cas-filemgr-schema-mysql.sql
(original)
+++ oodt/trunk/filemgr/src/main/resources/cas-filemgr-schema-mysql.sql Mon Dec
17 21:22:54 2012
@@ -68,3 +68,17 @@ CREATE TABLE `products` (
PRIMARY KEY (`product_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+# Example of 'products' table using a 'product_id' column of type string
+# Host: spawn
+# Database: test_cas
+# Table: 'products'
+#
+#CREATE TABLE `products` (
+# `product_id` varchar(100) NOT NULL,
+# `product_structure` varchar(20) NOT NULL default '',
+# `product_type_id` int(11) NOT NULL default '0',
+# `product_name` varchar(255) NOT NULL default '',
+# `product_transfer_status` varchar(255) NOT NULL default 'TRANSFERING',
+# `product_datetime` datetime NOT NULL,
+# PRIMARY KEY (`product_id`)
+#) ENGINE=MyISAM DEFAULT CHARSET=latin1;
\ No newline at end of file