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 2010/11/18 19:00:17 UTC

svn commit: r1036561 - in /incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql: ./ auto/ jdbc/

Author: kevin
Date: Thu Nov 18 18:00:17 2010
New Revision: 1036561

URL: http://svn.apache.org/viewvc?rev=1036561&view=rev
Log:
Commits to correct DB2 issues with prepared statements.

Modified:
    incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/IdMappingAbstract.java
    incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/SqlObjectStore.java
    incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/TitleMapping.java
    incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/VersionMapping.java
    incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/AutoMapper.java
    incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/CombinedCollectionMapper.java
    incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/ReversedAutoAssociationMapper.java
    incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/AbstractJdbcFieldMapping.java
    incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/JdbcConnector.java
    incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/JdbcGeneralValueMapper.java

Modified: incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/IdMappingAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/IdMappingAbstract.java?rev=1036561&r1=1036560&r2=1036561&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/IdMappingAbstract.java (original)
+++ incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/IdMappingAbstract.java Thu Nov 18 18:00:17 2010
@@ -66,7 +66,7 @@ public class IdMappingAbstract {
 	public void appendInsertValues(DatabaseConnector connector,
 			StringBuffer sql, ObjectAdapter object) {
 		if (object == null) {
-			sql.append(connector.addToQueryValues(null));
+			sql.append("NULL");
 		} else {
 			sql.append(connector.addToQueryValues(primaryKeyAsObject(object
 					.getOid())));

Modified: incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/SqlObjectStore.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/SqlObjectStore.java?rev=1036561&r1=1036560&r2=1036561&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/SqlObjectStore.java (original)
+++ incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/SqlObjectStore.java Thu Nov 18 18:00:17 2010
@@ -284,7 +284,6 @@ public final class SqlObjectStore implem
 		sql.append(" where ");
 		sql.append(Sql.identifier(ID_COLUMN));
 		sql.append(" = ?");
-		// sql.append(Sql.escapeAndQuoteValue(name));
 		connector.addToQueryValues(name);
 
 		Results results = connector.select(sql.toString());
@@ -346,7 +345,6 @@ public final class SqlObjectStore implem
 	@Override
 	public void registerService(final String name, final Oid oid) {
 		DatabaseConnector connector = connectionPool.acquire();
-		// String soid = ((SqlOid) oid).getPrimaryKey().stringValue();
 
 		StringBuffer sql = new StringBuffer();
 		sql.append("insert into ");
@@ -356,10 +354,6 @@ public final class SqlObjectStore implem
 		sql.append(", ");
 		sql.append(Sql.identifier(ID_COLUMN));
 		sql.append(") values (?,?)");
-		// sql.append(soid);
-		// sql.append(", ");
-		// sql.append(Sql.escapeAndQuoteValue(name));
-		// sql.append(")");
 
 		connector.addToQueryValues(((SqlOid) oid).getPrimaryKey()
 				.naturalValue());
@@ -408,8 +402,6 @@ public final class SqlObjectStore implem
 	@Override
 	public void close() {
 		objectMappingLookup.shutdown();
-		// DatabaseConnector connection = connectionPool.acquire();
-		// connection.update("SHUTDOWN");
 		connectionPool.shutdown();
 	}
 

Modified: incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/TitleMapping.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/TitleMapping.java?rev=1036561&r1=1036560&r2=1036561&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/TitleMapping.java (original)
+++ incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/TitleMapping.java Thu Nov 18 18:00:17 2010
@@ -53,8 +53,7 @@ public class TitleMapping {
     //TODO:KAM:here 
     public void appendInsertValues(DatabaseConnector connector, StringBuffer sql, ObjectAdapter object) {
         if (object == null) {
-            //sql.append("NULL");
-        	connector.addToQueryValues(null);
+            sql.append("NULL");
         } else {
             //appendTitle(sql, object.titleString());
         	connector.addToQueryValues(object.titleString().toLowerCase());

Modified: incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/VersionMapping.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/VersionMapping.java?rev=1036561&r1=1036560&r2=1036561&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/VersionMapping.java (original)
+++ incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/VersionMapping.java Thu Nov 18 18:00:17 2010
@@ -45,7 +45,11 @@ public class VersionMapping {
 	public String insertValues(DatabaseConnector connector,
 			SerialNumberVersion version) {
 		connector.addToQueryValues(version.getSequence());
-		connector.addToQueryValues(version.getUser());
+		String user = version.getUser();
+		if (user == ""){
+			user = "unknown";
+		}
+		connector.addToQueryValues(user);
 		connector.addToQueryValues(new Timestamp(new Date().getTime()));
 		return "?,?,?";
 	}

Modified: incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/AutoMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/AutoMapper.java?rev=1036561&r1=1036560&r2=1036561&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/AutoMapper.java (original)
+++ incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/AutoMapper.java Thu Nov 18 18:00:17 2010
@@ -72,8 +72,11 @@ public class AutoMapper extends Abstract
 		sql.append("insert into " + table + " (");
 		idMapping.appendColumnNames(sql);
 		sql.append(", ");
-		sql.append(columnList());
-		sql.append(", ");
+        String columnList = columnList();
+        if (columnList.length() > 0){
+        	sql.append(columnList);
+        	sql.append(", ");
+        }
 		titleMapping.appendColumnNames(sql);
 		sql.append(", ");
 		sql.append(versionMapping.insertColumns());
@@ -206,8 +209,11 @@ public class AutoMapper extends Abstract
 		sql.append("select ");
 		idMapping.appendColumnNames(sql);
 		sql.append(", ");
-		sql.append(columnList());
-		sql.append(", ");
+        String columnList = columnList();
+        if (columnList.length() > 0){
+        	sql.append(columnList);
+        	sql.append(", ");
+        }
 		sql.append(versionMapping.insertColumns());
 		sql.append(" from " + table);
 		return sql;

Modified: incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/CombinedCollectionMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/CombinedCollectionMapper.java?rev=1036561&r1=1036560&r2=1036561&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/CombinedCollectionMapper.java (original)
+++ incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/CombinedCollectionMapper.java Thu Nov 18 18:00:17 2010
@@ -116,8 +116,11 @@ public class CombinedCollectionMapper ex
             idMapping.appendColumnNames(sql);
             
             sql.append(", ");
-            sql.append(columnList());
-            sql.append(", ");
+            String columnList = columnList();
+            if (columnList.length() > 0){
+            	sql.append(columnList);
+            	sql.append(", ");
+            }
             sql.append(versionMapping.appendSelectColumns());
             sql.append(" from ");
             sql.append(table);

Modified: incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/ReversedAutoAssociationMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/ReversedAutoAssociationMapper.java?rev=1036561&r1=1036560&r2=1036561&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/ReversedAutoAssociationMapper.java (original)
+++ incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/ReversedAutoAssociationMapper.java Thu Nov 18 18:00:17 2010
@@ -154,8 +154,11 @@ public class ReversedAutoAssociationMapp
         sql.append("insert into " + table + " (");
         idMapping.appendColumnNames(sql);
         sql.append(", ");
-        sql.append(columnList());
-        sql.append(", ");
+        String columnList = columnList();
+        if (columnList.length() > 0){
+        	sql.append(columnList);
+        	sql.append(", ");
+        }
         sql.append(versionMapping.insertColumns());
         sql.append(") values (" );
         idMapping.appendInsertValues(connector, sql, parent);

Modified: incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/AbstractJdbcFieldMapping.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/AbstractJdbcFieldMapping.java?rev=1036561&r1=1036560&r2=1036561&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/AbstractJdbcFieldMapping.java (original)
+++ incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/AbstractJdbcFieldMapping.java Thu Nov 18 18:00:17 2010
@@ -52,8 +52,7 @@ public abstract class AbstractJdbcFieldM
     public void appendInsertValues(DatabaseConnector connector, StringBuffer sql, ObjectAdapter object) {
         ObjectAdapter fieldValue = field.get(object);
         if (fieldValue == null) {
-            //KAM sql.append("NULL");
-        	sql.append(connector.addToQueryValues(null));
+            sql.append("NULL");
         } else {
         	sql.append(valueAsDBString(fieldValue, connector));
         }

Modified: incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/JdbcConnector.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/JdbcConnector.java?rev=1036561&r1=1036560&r2=1036561&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/JdbcConnector.java (original)
+++ incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/JdbcConnector.java Thu Nov 18 18:00:17 2010
@@ -206,8 +206,14 @@ public class JdbcConnector extends Abstr
 			throws SQLException {
 		if (queryValues.size() > 0) {
 			int i = 1;
-			for (Object value : queryValues) {
-				statement.setObject(i++, value);
+			try {
+				for (Object value : queryValues) {
+					statement.setObject(i, value);
+					i++;
+				}
+			} catch (SQLException e) {
+				LOG.error("Error adding prepared value "+ i +" of type " + queryValues.get(i-1).getClass().getSimpleName(), e);
+				throw e;
 			}
 		}
 	}
@@ -356,12 +362,16 @@ public class JdbcConnector extends Abstr
 					metaData.storesUpperCaseIdentifiers());
 			debug.appendln("Upper case quoted",
 					metaData.storesUpperCaseQuotedIdentifiers());
+			debug.appendln("Max table name length",
+					metaData.getMaxTableNameLength() );
+			debug.appendln("Max column name length",
+					metaData.getMaxColumnNameLength());
+			
 		} catch (SQLException e) {
 			throw new SqlObjectStoreException("Metadata error", e);
 		}
 	}
 
-	// TODO:KAM All insert/update call must add their values via this
 	private final List<Object> queryValues = new ArrayList<Object>();
 
 	@Override

Modified: incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/JdbcGeneralValueMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/JdbcGeneralValueMapper.java?rev=1036561&r1=1036560&r2=1036561&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/JdbcGeneralValueMapper.java (original)
+++ incubator/isis/trunk/alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/jdbc/JdbcGeneralValueMapper.java Thu Nov 18 18:00:17 2010
@@ -23,6 +23,8 @@ import org.apache.isis.alternatives.obje
 import org.apache.isis.alternatives.objectstore.sql.mapping.FieldMapping;
 import org.apache.isis.alternatives.objectstore.sql.mapping.FieldMappingFactory;
 import org.apache.isis.applib.value.Color;
+import org.apache.isis.applib.value.Money;
+import org.apache.isis.applib.value.Password;
 import org.apache.isis.applib.value.Percentage;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
@@ -56,21 +58,32 @@ public class JdbcGeneralValueMapper exte
 	public String valueAsDBString(final ObjectAdapter value,
 			DatabaseConnector connector) {
 		if (value == null) {
-			connector.addToQueryValues(null);
+			return "null";
 		} else {
 			Object o = value.getObject();
-			if (o instanceof Color) {
-				connector.addToQueryValues(((Color) o).intValue());
+			if (o == 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);
 			} else {
-
-				EncodableFacet facet = value.getSpecification().getFacet(
-						EncodableFacet.class);
-				String encodedString = facet.toEncodedString(value);
-				connector.addToQueryValues(encodedString);
+				if (columnType().contains("CHAR")){
+					EncodableFacet facet = value.getSpecification().getFacet(
+							EncodableFacet.class);
+					String encodedString = facet.toEncodedString(value);
+					connector.addToQueryValues(encodedString);
+				} else {
+					connector.addToQueryValues(o);
+				}
 			}
-
 			/*
 			 * EncodableFacet facet =
 			 * value.getSpecification().getFacet(EncodableFacet.class); String