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/04/22 15:22:03 UTC
svn commit: r1095929 - in
/incubator/isis/trunk/runtimes/dflt/objectstores/sql:
impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/
impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/installer/
src/docbkx/guide/ ...
Author: kevin
Date: Fri Apr 22 13:22:02 2011
New Revision: 1095929
URL: http://svn.apache.org/viewvc?rev=1095929&view=rev
Log:
Added JdbcColorValueMapper to handle colours as binary (there is a radix 16 conversion in the text parser, but the database is radix 10!).
Added:
incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcColorValueMapper.java (with props)
Modified:
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/installer/JdbcFieldMappingFactoryInstaller.java
incubator/isis/trunk/runtimes/dflt/objectstores/sql/src/docbkx/guide/isis-sql-objectstore.xml
incubator/isis/trunk/runtimes/dflt/objectstores/sql/tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommon.java
Added: incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcColorValueMapper.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/JdbcColorValueMapper.java?rev=1095929&view=auto
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcColorValueMapper.java (added)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcColorValueMapper.java Fri Apr 22 13:22:02 2011
@@ -0,0 +1,94 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.isis.runtimes.dflt.objectstores.sql.jdbc;
+
+import org.apache.isis.applib.value.Color;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.runtimes.dflt.objectstores.sql.Results;
+import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.FieldMapping;
+import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.FieldMappingFactory;
+import org.apache.isis.runtimes.dflt.runtime.context.IsisContext;
+
+/**
+ *
+ *
+ * @version $Rev$ $Date$
+ */
+public class JdbcColorValueMapper extends AbstractJdbcFieldMapping {
+
+ public static class Factory implements FieldMappingFactory {
+ private final String type;
+
+ public Factory(final String type) {
+ this.type = type;
+ }
+
+ @Override
+ public FieldMapping createFieldMapping(final ObjectAssociation field) {
+ return new JdbcColorValueMapper(field, type);
+ }
+ }
+
+ private final String type;
+
+ public JdbcColorValueMapper(ObjectAssociation field, String type) {
+ super(field);
+ this.type = type;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.isis.runtimes.dflt.objectstores.sql.jdbc.AbstractJdbcFieldMapping#columnType()
+ */
+ @Override
+ protected String columnType() {
+ return type;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.isis.runtimes.dflt.objectstores.sql.jdbc.AbstractJdbcFieldMapping#preparedStatementObject(org.apache
+ * .isis.core.metamodel.adapter.ObjectAdapter)
+ */
+ @Override
+ protected Object preparedStatementObject(ObjectAdapter value) {
+ Object o = value.getObject();
+ return ((Color) o).intValue();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.isis.runtimes.dflt.objectstores.sql.jdbc.AbstractJdbcFieldMapping#setFromDBColumn(org.apache.isis.
+ * runtimes.dflt.objectstores.sql.Results, java.lang.String,
+ * org.apache.isis.core.metamodel.spec.feature.ObjectAssociation)
+ */
+ @Override
+ protected ObjectAdapter setFromDBColumn(Results results, String columnName, ObjectAssociation field) {
+ ObjectAdapter restoredValue;
+ int intValue = results.getInt(columnName);
+ Color colorValue = new Color(intValue);
+ restoredValue = IsisContext.getPersistenceSession().getAdapterManager().adapterFor(colorValue);
+ return restoredValue;
+ }
+
+}
Propchange: incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcColorValueMapper.java
------------------------------------------------------------------------------
svn:executable = *
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=1095929&r1=1095928&r2=1095929&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 Fri Apr 22 13:22:02 2011
@@ -19,7 +19,6 @@
package org.apache.isis.runtimes.dflt.objectstores.sql.jdbc;
-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;
@@ -65,8 +64,6 @@ public class JdbcGeneralValueMapper exte
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 {
Modified: incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/installer/JdbcFieldMappingFactoryInstaller.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/installer/JdbcFieldMappingFactoryInstaller.java?rev=1095929&r1=1095928&r2=1095929&view=diff
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/installer/JdbcFieldMappingFactoryInstaller.java (original)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/installer/JdbcFieldMappingFactoryInstaller.java Fri Apr 22 13:22:02 2011
@@ -29,6 +29,7 @@ import org.apache.isis.applib.value.Time
import org.apache.isis.applib.value.TimeStamp;
import org.apache.isis.runtimes.dflt.objectstores.sql.FieldMappingFactoryInstaller;
import org.apache.isis.runtimes.dflt.objectstores.sql.FieldMappingLookup;
+import org.apache.isis.runtimes.dflt.objectstores.sql.jdbc.JdbcColorValueMapper;
import org.apache.isis.runtimes.dflt.objectstores.sql.jdbc.JdbcConnector;
import org.apache.isis.runtimes.dflt.objectstores.sql.jdbc.JdbcDateMapper;
import org.apache.isis.runtimes.dflt.objectstores.sql.jdbc.JdbcDateTimeMapper;
@@ -55,7 +56,7 @@ public class JdbcFieldMappingFactoryInst
lookup.addFieldMappingFactory(Percentage.class, new JdbcGeneralValueMapper.Factory("FLOAT"));
lookup
.addFieldMappingFactory(Password.class, new JdbcGeneralValueMapper.Factory(JdbcConnector.TYPE_PASSWORD()));
- lookup.addFieldMappingFactory(Color.class, new JdbcGeneralValueMapper.Factory(JdbcConnector.TYPE_SHORT()));
+ lookup.addFieldMappingFactory(Color.class, new JdbcColorValueMapper.Factory(JdbcConnector.TYPE_LONG()));
lookup.addFieldMappingFactory(String.class, new JdbcGeneralValueMapper.Factory(JdbcConnector.TYPE_STRING()));
lookup.addFieldMappingFactory(Date.class, new JdbcDateMapper.Factory());
Modified: incubator/isis/trunk/runtimes/dflt/objectstores/sql/src/docbkx/guide/isis-sql-objectstore.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/runtimes/dflt/objectstores/sql/src/docbkx/guide/isis-sql-objectstore.xml?rev=1095929&r1=1095928&r2=1095929&view=diff
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/src/docbkx/guide/isis-sql-objectstore.xml (original)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/src/docbkx/guide/isis-sql-objectstore.xml Fri Apr 22 13:22:02 2011
@@ -184,12 +184,12 @@
</simplelist></para>
<para><simplelist>
- <member>isis.persistor.sql.datatypes.short (INT) [short,
- Color]</member>
+ <member>isis.persistor.sql.datatypes.short (INT) [short]</member>
</simplelist></para>
<para><simplelist>
- <member>isis.persistor.sql.datatypes.long (INT) [long]</member>
+ <member>isis.persistor.sql.datatypes.long (INT) [long,
+ Color]</member>
</simplelist></para>
<para><simplelist>
@@ -307,6 +307,19 @@
<para>This means that a given child can only appear in one parent's
collection of the same name.</para>
</sect3>
+
+ <sect3>
+ <title>Multi-field values</title>
+
+ <para>Some value types need more than 1 field to store their values,
+ e.g. Money - some.package.class#price.</para>
+
+ <para>In this case, the SQL objectstore creates 2 fields, price1 and
+ price2.</para>
+
+ <para>See "<code>JdbcMoneyValueMapper</code>", which extends
+ "<code>AbstractJdbcMultiFieldMapping</code>".</para>
+ </sect3>
</sect2>
</sect1>
</chapter>
Modified: incubator/isis/trunk/runtimes/dflt/objectstores/sql/tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommon.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/runtimes/dflt/objectstores/sql/tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommon.java?rev=1095929&r1=1095928&r2=1095929&view=diff
==============================================================================
--- incubator/isis/trunk/runtimes/dflt/objectstores/sql/tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommon.java (original)
+++ incubator/isis/trunk/runtimes/dflt/objectstores/sql/tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommon.java Fri Apr 22 13:22:02 2011
@@ -100,7 +100,7 @@ public abstract class SqlIntegrationTest
private static final TimeStamp timeStamp = new TimeStamp(dateTime.millisSinceEpoch());
private static final Time time = new Time(14, 56);
- private static final Color color = Color.BLACK;
+ private static final Color color = Color.WHITE;
private static final Image image = new Image(new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } });
private static final Password password = new Password("password");
private static final Percentage percentage = new Percentage(42);
@@ -454,8 +454,9 @@ public abstract class SqlIntegrationTest
*/
public void testColor() {
SqlDataClass sqlDataClass = SqlIntegrationTestSingleton.getPerson();
- assertTrue("Color Black, expected " + color.toString() + " but got " + sqlDataClass.getColor().toString(),
- color.isEqualTo(sqlDataClass.getColor()));
+ assertEquals(color, sqlDataClass.getColor());
+ // assertTrue("Color Black, expected " + color.toString() + " but got " + sqlDataClass.getColor().toString(),
+ // color.isEqualTo(sqlDataClass.getColor()));
}
/**