Author: luca
Date: Thu Dec 20 21:41:03 2012
New Revision: 1424715
URL: http://svn.apache.org/viewvc?rev=1424715&view=rev
Log:
Re-using existing values from product.getId() and CAS.ProductReceivedTime when
populating the MySQL metadata in the case "product_type" is a string (OODT-544)
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
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=1424715&r1=1424714&r2=1424715&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
Thu Dec 20 21:41:03 2012
@@ -36,6 +36,9 @@ import org.apache.oodt.cas.metadata.Meta
import org.apache.oodt.commons.pagination.PaginationUtils;
import org.apache.oodt.commons.util.DateConvert;
+//SPRING imports
+import org.springframework.util.StringUtils;
+
//JDK imports
import java.sql.Connection;
import java.sql.ResultSet;
@@ -292,8 +295,10 @@ public class DataSourceCatalog implement
} else {
- // generate a new UUID
string, insert in database
- String productId = UUID.randomUUID().toString();
+ // reuse the existing
product id if possible, or generate a new UUID string
+ String productId = product.getProductId();
+ if (!StringUtils.hasText(productId)) productId =
UUID.randomUUID().toString();
+ // insert product in database
addProductSql = "INSERT INTO products (product_id,
product_name, product_structure, product_transfer_status, product_type_id,
product_datetime) "
+ "VALUES ('"
+ productId
@@ -2020,6 +2025,7 @@ public class DataSourceCatalog implement
getProductSql = this.getSqlQuery(new
BooleanQueryCriteria(query.getCriteria(), BooleanQueryCriteria.AND), type);
}
getProductSql += " ORDER BY products.product_datetime DESC ";
+
}
LOG.log(Level.FINE, "catalog query: executing: " + getProductSql);
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=1424715&r1=1424714&r2=1424715&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
Thu Dec 20 21:41:03 2012
@@ -36,6 +36,7 @@ import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
+import java.text.SimpleDateFormat;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
@@ -58,6 +59,13 @@ public class LenientDataSourceCatalog ex
/* our log stream */
private static final Logger LOG =
Logger.getLogger(LenientDataSourceCatalog.class.getName());
+
+ // ISO date/time format for CAS.ProductReceivedTime
+ private SimpleDateFormat isoFormat = new
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
+
+ // date/time format for database
+ private SimpleDateFormat dbFormat = new
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+
/**
* <p>
@@ -435,6 +443,16 @@ public class LenientDataSourceCatalog ex
.log(Level.FINE, "addMetadataValue: Executing: "
+ metaIngestSql);
statement.execute(metaIngestSql);
+
+ // synchronize CAS.ProductReceivedTime with
products.product_datetime
+ if (key.equals("CAS.ProductReceivedTime") && this.productIdString)
{
+ // convert from "2012-12-18T09:00:14.068-08:00" -->
"2012-12-18T09:00:14.068-0800" --> "2012-12-18T10:00:14"
+ String datetime = dbFormat.format( isoFormat.parse(
value.replaceAll(":00$", "00") ));
+ String updateDateTimeSql = "UPDATE products SET
product_datetime='"+datetime+"' WHERE
product_id="+quoteIt(product.getProductId());
+ LOG.log(Level.FINE, "addMetadataValue: Executing:
"+updateDateTimeSql);
+ statement.execute(updateDateTimeSql);
+ }
+
conn.commit();
} catch (Exception e) {
e.printStackTrace();