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;
}