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