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


Reply via email to