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()));
     }
 
     /**