You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ke...@apache.org on 2011/03/13 15:40:52 UTC

svn commit: r1081128 - in /incubator/isis/trunk/runtimes/dflt/objectstores/sql: ./ impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/ tests-served/src/test/jav...

Author: kevin
Date: Sun Mar 13 14:40:52 2011
New Revision: 1081128

URL: http://svn.apache.org/viewvc?rev=1081128&view=rev
Log:
Code cleanup - replacing valueAsDBString with preparedStatementObject. First pass - implement "Object preparedStatementObject(ObjectAdapter value)".

Modified:
    incubator/isis/trunk/runtimes/dflt/objectstores/sql/   (props changed)
    incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.java
    incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/AbstractJdbcFieldMapping.java
    incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcConnector.java
    incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateMapper.java
    incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateTimeMapper.java
    incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcGeneralValueMapper.java
    incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcTimeMapper.java
    incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcTimestampMapper.java
    incubator/isis/trunk/runtimes/dflt/objectstores/sql/tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PostgreSqlTest.java

Propchange: incubator/isis/trunk/runtimes/dflt/objectstores/sql/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sun Mar 13 14:40:52 2011
@@ -2,3 +2,4 @@
 .project
 .settings
 target
+persistor

Modified: incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.java?rev=1081128&r1=1081127&r2=1081128&view=diff
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.java (original)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.java Sun Mar 13 14:40:52 2011
@@ -100,7 +100,6 @@ public class CombinedCollectionMapper ex
         StringBuffer sql = new StringBuffer();
         sql.append("alter table ");
         sql.append(table);
-        // TODO MSSQL chokes: sql.append(" add column ");
         sql.append(" add ");
         foreignKeyMapping.appendColumnDefinitions(sql);
         connection.update(sql.toString());

Modified: incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/AbstractJdbcFieldMapping.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/AbstractJdbcFieldMapping.java?rev=1081128&r1=1081127&r2=1081128&view=diff
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/AbstractJdbcFieldMapping.java (original)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/AbstractJdbcFieldMapping.java Sun Mar 13 14:40:52 2011
@@ -92,7 +92,9 @@ public abstract class AbstractJdbcFieldM
 
     protected abstract String columnType();
 
+    //TODO: replace valueAsDBString with preparedStatementObject
     protected abstract String valueAsDBString(ObjectAdapter value, DatabaseConnector connector);
+    protected abstract Object preparedStatementObject(ObjectAdapter value);
 
     protected abstract ObjectAdapter setFromDBColumn(String encodeValue, ObjectAssociation field);
 

Modified: incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcConnector.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcConnector.java?rev=1081128&r1=1081127&r2=1081128&view=diff
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcConnector.java (original)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcConnector.java Sun Mar 13 14:40:52 2011
@@ -158,8 +158,15 @@ public class JdbcConnector extends Abstr
     static String TYPE_DATE;
     static String TYPE_TIME;
 
-    private void populateSqlDataTypes(final IsisConfiguration dataTypes, final String baseName) {
-        // TYPE_BOOLEAN = dataTypes.getString("boolean" , "CHAR(1)");
+    /**
+     * Default SQL data types used to define the fields in the database. By providing this method, we allow the user an
+     * opportunity to override these types by specifying alternatives in sql.properties (or which ever). 
+     * For example, Postgresql does not know about DATETIME, but can use TIMESTAMP instead.
+     *  
+     * @param dataTypes
+     * @param baseName
+     */
+    private static void populateSqlDataTypes(final IsisConfiguration dataTypes, final String baseName) {
         TYPE_TIMESTAMP = dataTypes.getString(baseName + "timestamp", "DATETIME");
         TYPE_DATETIME = dataTypes.getString(baseName + "datetime", "DATETIME");
         TYPE_DATE = dataTypes.getString(baseName + "date", "DATE");

Modified: incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateMapper.java?rev=1081128&r1=1081127&r2=1081128&view=diff
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateMapper.java (original)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateMapper.java Sun Mar 13 14:40:52 2011
@@ -43,15 +43,7 @@ public class JdbcDateMapper extends Abst
 
     //TODO:KAM:here XYZ
     public String valueAsDBString(final ObjectAdapter value, DatabaseConnector connector) {
-    	java.sql.Date xxx; 
-    	if (value.getObject() instanceof java.sql.Date){
-    		xxx = (java.sql.Date) value.getObject();
-    	}else {// if (value instanceof Date){
-    		Date asDate = (Date) value.getObject();
-        	xxx = new java.sql.Date(asDate.dateValue().getTime());
-    	} 
-    	//java.sql.Date xxx = java.sql.Date.valueOf(asDate.toString());
-    	connector.addToQueryValues(xxx);
+    	connector.addToQueryValues(preparedStatementObject(value));
     	return "?";
     	/*
         EncodableFacet encodeableFacet = value.getSpecification().getFacet(EncodableFacet.class);
@@ -63,6 +55,19 @@ public class JdbcDateMapper extends Abst
         return "'" + encodedWithAdaptions + "'";
         */
     }
+    
+    @Override
+    protected Object preparedStatementObject(ObjectAdapter value){
+        java.sql.Date date; 
+        if (value.getObject() instanceof java.sql.Date){
+            date = (java.sql.Date) value.getObject();
+        }else {// if (value instanceof Date){
+            Date asDate = (Date) value.getObject();
+            date = new java.sql.Date(asDate.dateValue().getTime());
+        }
+        return date;
+    }
+    
 
     public ObjectAdapter setFromDBColumn(final String encodedValue, final ObjectAssociation field) {
         String valueString;

Modified: incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateTimeMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateTimeMapper.java?rev=1081128&r1=1081127&r2=1081128&view=diff
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateTimeMapper.java (original)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateTimeMapper.java Sun Mar 13 14:40:52 2011
@@ -43,9 +43,7 @@ public class JdbcDateTimeMapper extends 
 
     //TODO:KAM:here XYZ
     public String valueAsDBString(final ObjectAdapter value, DatabaseConnector connector) {
-    	DateTime asDate = (DateTime) value.getObject();
-    	java.sql.Timestamp xxx = new java.sql.Timestamp(asDate.longValue());
-    	connector.addToQueryValues(xxx);
+        connector.addToQueryValues(preparedStatementObject(value));
     	return "?";
     	/*
         EncodableFacet encodeableFacet = value.getSpecification().getFacet(EncodableFacet.class);
@@ -59,6 +57,13 @@ public class JdbcDateTimeMapper extends 
         return "'" + encodedWithAdaptions + "'";
         */
     }
+    @Override
+    protected Object preparedStatementObject(ObjectAdapter value){
+        DateTime asDate = (DateTime) value.getObject();
+        java.sql.Timestamp dateTime = new java.sql.Timestamp(asDate.longValue());
+        return dateTime;
+    }
+    
 
     public ObjectAdapter setFromDBColumn(final String encodedValue, final ObjectAssociation field)             {
         // convert date to yyyymmddhhmm

Modified: incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcGeneralValueMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcGeneralValueMapper.java?rev=1081128&r1=1081127&r2=1081128&view=diff
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcGeneralValueMapper.java (original)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcGeneralValueMapper.java Sun Mar 13 14:40:52 2011
@@ -60,20 +60,14 @@ public class JdbcGeneralValueMapper exte
 		if (value == null) {
 			return "null";
 		} else {
-			Object o = value.getObject();
-			if (o == null){
+			Object valueObject = value.getObject();
+			if (valueObject == null){
 				return "null";
 			}
-			if (o instanceof Money) {
-				connector.addToQueryValues(((Money) o).floatValue());
-			} else if (o instanceof Percentage) {
-				connector.addToQueryValues(((Percentage) o).floatValue());
-			} else if (o instanceof Password) {
-				connector.addToQueryValues(((Password) o).getPassword());
-			} else if (o instanceof Color) {
-				connector.addToQueryValues(((Color) o).intValue());
-			} else if (o instanceof String) {
-				connector.addToQueryValues(o);
+			
+			valueObject = preparedStatementObject(value);
+			if (valueObject != null){
+                connector.addToQueryValues(valueObject);
 			} else {
 				if (columnType().contains("CHAR")){
 					EncodableFacet facet = value.getSpecification().getFacet(
@@ -81,7 +75,7 @@ public class JdbcGeneralValueMapper exte
 					String encodedString = facet.toEncodedString(value);
 					connector.addToQueryValues(encodedString);
 				} else {
-					connector.addToQueryValues(o);
+					connector.addToQueryValues(valueObject);
 				}
 			}
 			/*
@@ -97,6 +91,25 @@ public class JdbcGeneralValueMapper exte
 		return "?";
 
 	}
+	
+    protected Object preparedStatementObject(ObjectAdapter value){
+        Object o = value.getObject();
+        
+        if (o instanceof Money) {
+            return ((Money) o).floatValue();
+        } else if (o instanceof Percentage) {
+            return ((Percentage) o).floatValue();
+        } else if (o instanceof Password) {
+            return ((Password) o).getPassword();
+        } else if (o instanceof Color) {
+            return ((Color) o).intValue();
+        } else if (o instanceof String) {
+            return o;
+        } else {
+            return null;
+        }
+    }
+	
 
 	@Override
 	public ObjectAdapter setFromDBColumn(final String encodeValue,

Modified: incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcTimeMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcTimeMapper.java?rev=1081128&r1=1081127&r2=1081128&view=diff
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcTimeMapper.java (original)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcTimeMapper.java Sun Mar 13 14:40:52 2011
@@ -44,9 +44,7 @@ public class JdbcTimeMapper extends Abst
 	@Override
 	public String valueAsDBString(final ObjectAdapter value,
 			DatabaseConnector connector) {
-		Time asDate = (Time) value.getObject();
-		java.sql.Time xxx = java.sql.Time.valueOf(asDate.toString() + ":00");
-		connector.addToQueryValues(xxx);
+        connector.addToQueryValues(preparedStatementObject(value));
 		return "?";
 		/*
 		 * EncodableFacet encodeableFacet =
@@ -57,6 +55,12 @@ public class JdbcTimeMapper extends Abst
 		 * ":" + minute + ":00"; return "'" + encodedWithAdaptions + "'";
 		 */
 	}
+    @Override
+	protected Object preparedStatementObject(ObjectAdapter value){
+        Time asDate = (Time) value.getObject();
+        java.sql.Time time = java.sql.Time.valueOf(asDate.toString() + ":00");
+        return time;
+	}
 
 	@Override
 	public ObjectAdapter setFromDBColumn(final String encodedValue,

Modified: incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcTimestampMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcTimestampMapper.java?rev=1081128&r1=1081127&r2=1081128&view=diff
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcTimestampMapper.java (original)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcTimestampMapper.java Sun Mar 13 14:40:52 2011
@@ -19,13 +19,13 @@
 
 package org.apache.isis.runtimes.dflt.objectstores.sql.jdbc;
 
-import org.apache.isis.runtimes.dflt.objectstores.sql.DatabaseConnector;
-import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.FieldMapping;
-import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.FieldMappingFactory;
 import org.apache.isis.applib.value.TimeStamp;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.runtimes.dflt.objectstores.sql.DatabaseConnector;
+import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.FieldMapping;
+import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.FieldMappingFactory;
 
 public class JdbcTimestampMapper extends AbstractJdbcFieldMapping {
 
@@ -43,9 +43,7 @@ public class JdbcTimestampMapper extends
     // TODO:KAM:here XYZ
     @Override
     public String valueAsDBString(final ObjectAdapter value, DatabaseConnector connector) {
-        TimeStamp asDate = (TimeStamp) value.getObject();
-        java.sql.Timestamp xxx = new java.sql.Timestamp(asDate.longValue());
-        connector.addToQueryValues(xxx);
+        connector.addToQueryValues(preparedStatementObject(value));
         return "?";
         /*
          * EncodableFacet encodeableFacet = value.getSpecification().getFacet(EncodableFacet.class); String
@@ -57,6 +55,13 @@ public class JdbcTimestampMapper extends
          * millisecond; return "'" + encodedWithAdaptions + "'";
          */
     }
+    @Override
+    protected Object preparedStatementObject(ObjectAdapter value){
+        TimeStamp asDate = (TimeStamp) value.getObject();
+        java.sql.Timestamp timeStamp = new java.sql.Timestamp(asDate.longValue());
+        return timeStamp;
+    }
+    
 
     @Override
     public ObjectAdapter setFromDBColumn(final String encodedValue, final ObjectAssociation field) {

Modified: incubator/isis/trunk/runtimes/dflt/objectstores/sql/tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PostgreSqlTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/runtimes/dflt/objectstores/sql/tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PostgreSqlTest.java?rev=1081128&r1=1081127&r2=1081128&view=diff
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PostgreSqlTest.java (original)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PostgreSqlTest.java Sun Mar 13 14:40:52 2011
@@ -37,13 +37,13 @@ public class PostgreSqlTest extends SqlI
 		Properties properties = super.getProperties();
 		if (properties == null){
 			properties = new Properties();
+			// Only used if src/test/config/postgresql.properties does not exist.
 			properties.put(SqlObjectStore.BASE_NAME + ".jdbc.driver", "org.postgresql.Driver");
 			properties.put(SqlObjectStore.BASE_NAME + ".jdbc.connection", "jdbc:postgresql://abacus/noftest");
 			properties.put(SqlObjectStore.BASE_NAME + ".jdbc.user", "nof");
 			properties.put(SqlObjectStore.BASE_NAME + ".jdbc.password", "");
 			
-            properties.put(SqlObjectStore.BASE_NAME + ".datatypes.timestamp", "TIMESTAMP");
-            properties.put(SqlObjectStore.BASE_NAME + ".datetime", "TIMESTAMP");            
+            //properties.put(SqlObjectStore.BASE_NAME + ".datatypes.timestamp", "TIMESTAMP");
 		}
 		return properties;
 	}