Author: kwilliams
Date: Tue Apr 25 21:36:17 2006
New Revision: 397085

URL: http://svn.apache.org/viewcvs?rev=397085&view=rev
Log:
Cleaning up Command interface (TUSCANY-230)

Modified:
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandFactoryImpl.java
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DatabaseObject.java
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java?rev=397085&r1=397084&r2=397085&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java
 Tue Apr 25 21:36:17 2006
@@ -214,70 +214,9 @@
        public void setConnection(Connection connection, boolean 
manageTransactions);
 
        /**
-        * Add relationship metadata necessary for processing query results. 
This is
-        * an alternative to providing the same information in a config file.
-        * 
-        * @param parent
-        *            a name identifying the relationship parent key (example:
-        *            "CUSTOMER.ID")
-        * @param child
-        *            a name identifying the relationship child key
-        *            ("ORDER.CUSTOMER_ID")
-        */
-       public void addRelationship(String parent, String child);
-
-       /**
-        * Add relationship metadata necessary for processing query results. 
This is
-        * an alternative to providing the same information in a config file.
-        * 
-        * @param parentKey
-        *            the parent key for the relationship
-        * @param childKey
-        *            the child key in the relationship
-        * @see Key
-        */
-       public void addRelationship(Key parentKey, Key childKey);
-
-       /**
-        * Add primary key metadata. This is an alternative to providing the 
same
-        * information in a config file.
-        * 
-        * @param pk
-        *            the string identifying a prmary key. (Example: 
"CUSTOMER.ID")
-        */
-       public void addPrimaryKey(String pk);
-
-       /**
-        * Add primary key metadata. This is an alternative to providing the 
same
-        * information in a config file.
-        * 
-        * @param key
-        *            the primary key
-        * @see Key
-        */
-       public void addPrimaryKey(Key key);
-
-       /**
-        * Associate a [EMAIL PROTECTED] Converter} with a column to be used by 
this command.
-        * This is an alternative to providing the same information in a config
-        * file.
-        * 
-        * @param name
-        *            the name of the column being assigned a converter 
(example:
-        *            "CUSTOMER.LASTNAME")
-        * @param converterName
-        *            the name of the converter instance being assigned 
(example:
-        *            org.company.project.StringConverter)
-        * @see Converter
-        */
-       public void addConverter(String name, String converterName);
-
-       /**
         * Cleans up and realeases all resources associated with this command. 
This
         * should be called when the application is done with this command.
         */
        public void close();
-
-
 
 }

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java?rev=397085&r1=397084&r2=397085&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
 Tue Apr 25 21:36:17 2006
@@ -210,6 +210,23 @@
                                + name + " in table " + t.getName());
                return null;
        }
+    
+    public Column getColumnByPropertyName(Table t, String propertyName) {
+        if (t == null)
+            return null;
+        Iterator i = t.getColumn().iterator();
+        while (i.hasNext()) {
+            Column c = (Column) i.next();
+            if (c.getName().equals(propertyName)) 
+                return c;
+            if (c.getPropertyName() != null && 
c.getPropertyName().equals(propertyName))
+               return c;
+        }
+        DebugUtil.debugln(getClass(), debug, "WARNING: Could not find column "
+                + propertyName + " in table " + t.getName());
+        return null;
+    }    
+    
 
        public String getColumnPropertyName(String tableName, String 
columnName) {
                Table t = getTable(tableName);

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandFactoryImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandFactoryImpl.java?rev=397085&r1=397084&r2=397085&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandFactoryImpl.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandFactoryImpl.java
 Tue Apr 25 21:36:17 2006
@@ -70,7 +70,7 @@
         case 'D':
             return new DeleteCommandImpl(sql);
         case '{':
-            return new SPCommandImpl(sql);
+            return new SPCommandImpl(sql, config);
         default:
             throw new Error("SQL => " + sql + " is not valid");
         }

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DatabaseObject.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DatabaseObject.java?rev=397085&r1=397084&r2=397085&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DatabaseObject.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DatabaseObject.java
 Tue Apr 25 21:36:17 2006
@@ -1,28 +1,30 @@
 /**
-*
-*  Copyright 2005 The Apache Software Foundation or its licensors, as 
applicable.
-*
-*  Licensed 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.
-*/
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as 
applicable.
+ *
+ *  Licensed 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.tuscany.das.rdb.impl;
 
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.tuscany.das.rdb.config.Column;
 import org.apache.tuscany.das.rdb.config.Config;
 import org.apache.tuscany.das.rdb.config.KeyPair;
 import org.apache.tuscany.das.rdb.config.Relationship;
+import org.apache.tuscany.das.rdb.config.Table;
 import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper;
 import org.apache.tuscany.das.rdb.util.DebugUtil;
 
@@ -37,96 +39,110 @@
  */
 public class DatabaseObject {
 
-       private final MappingWrapper mappingWrapper;
+    private final MappingWrapper mappingWrapper;
+
+    private final DataObject dataObject;
 
-       private final DataObject dataObject;
+    private Property parentReference;
 
-       private Property parentReference;
+    private static final boolean debug = false;
 
-       private static final boolean debug = false;
+    private HashMap keyMappings = new HashMap();
+
+    public DatabaseObject(Config model, DataObject changedObject) {
+        this.mappingWrapper = new MappingWrapper(model);
+        this.dataObject = changedObject;
+        initialize();
+    }
+
+    // Initialize Key Mappings
+    private void initialize() {
+        if (mappingWrapper.getConfig() != null) {
+            List relationships = mappingWrapper.getConfig().getRelationship();
+            Iterator i = relationships.iterator();
+            while (i.hasNext()) {
+                Relationship r = (Relationship) i.next();
+                DebugUtil.debugln(getClass(), debug, "Initializing 
relationship: " + r.getName());
+                if (r.getForeignKeyTable().equals(getTypeName())) {
+                    List pairs = r.getKeyPair();
+                    Iterator iter = pairs.iterator();
+                    while (iter.hasNext()) {
+                        KeyPair pair = (KeyPair) iter.next();
+                        keyMappings.put(pair.getForeignKeyColumn(), r);
+                    }
+                }
+            }
+        }
+    }
+
+    public Object get(String parameter) {
+
+        if (isPartOfPrimaryKey(parameter))
+            return dataObject.get(parameter);
+
+        Relationship r = (Relationship) keyMappings.get(parameter);
+        if (r == null)
+            return dataObject.get(parameter);
+
+        Property parentRef = getParentReference(r.getPrimaryKeyTable());
+        DataObject parent = dataObject.getDataObject(parentRef);
+        if (parent == null)
+            return null;
+        String parentKey = getParentKey(r, parameter);
+        return parent.get(parentKey);
+
+    }
+
+    private String getParentKey(Relationship r, String parameter) {
+        List keyPairs = r.getKeyPair();
+        Iterator i = keyPairs.iterator();
+        while (i.hasNext()) {
+            KeyPair pair = (KeyPair) i.next();
+            if (pair.getForeignKeyColumn().equals(parameter))
+                return pair.getPrimaryKeyColumn();
+        }
+        return null;
+    }
+
+    public Property getParentReference(String parentName) {
+        if (this.parentReference == null) {
+
+            Iterator i = dataObject.getType().getProperties().iterator();
+            while (i.hasNext()) {
+                Property ref = (Property) i.next();
+                if ((!ref.getType().isDataType()) && 
(ref.getType().getName().equals(parentName))) {
+                    this.parentReference = ref;
+                }
+            }
+        }
+        return this.parentReference;
+    }
+
+    public String getTableName() {
+        if (mappingWrapper.getConfig() != null)
+            return 
mappingWrapper.getTableByPropertyName(getTypeName()).getName();
+        else
+            return null;
+    }
+
+    public String getTypeName() {
+        return dataObject.getType().getName();
+    }
+
+    public void setPropagatedID(String propagatedID, int id) {
+        dataObject.setInt(propagatedID, id);
+    }
+
+    private boolean isPartOfPrimaryKey(String parameter) {
+        if (mappingWrapper.getConfig() == null)
+            return false;
+        Table t = mappingWrapper.getTable(getTableName());
+        if (t == null)
+            return false;
+        Column c = mappingWrapper.getColumnByPropertyName(t, parameter);
+        if (c == null)
+            return false;
+        return c.isPrimaryKey();
+    }
 
-       private HashMap keyMappings = new HashMap();
-
-       public DatabaseObject(Config model, DataObject changedObject) {
-               this.mappingWrapper = new MappingWrapper(model);
-               this.dataObject = changedObject;
-               initialize();
-       }
-
-       // Initialize Key Mappings
-       private void initialize() {
-               if (mappingWrapper.getConfig() != null) {
-                       List relationships = 
mappingWrapper.getConfig().getRelationship();
-                       Iterator i = relationships.iterator();
-                       while (i.hasNext()) {
-                               Relationship r = (Relationship) i.next();
-                               DebugUtil.debugln(getClass(), debug,
-                                               "Initializing relationship: " + 
r.getName());
-                               if 
(r.getForeignKeyTable().equals(getTypeName())) {
-                                       List pairs = r.getKeyPair();
-                                       Iterator iter = pairs.iterator();
-                                       while (iter.hasNext()) {
-                                               KeyPair pair = (KeyPair) 
iter.next();
-                                               
keyMappings.put(pair.getForeignKeyColumn(), r);
-                                       }
-                               }
-                       }
-               }
-       }
-
-       public Object get(String parameter) {
-               Relationship r = (Relationship) keyMappings.get(parameter);
-               if (r == null)
-                       return dataObject.get(parameter);
-
-               Property parentRef = getParentReference(r.getPrimaryKeyTable());
-               DataObject parent = dataObject.getDataObject(parentRef);
-               if ( parent == null ) 
-                       return null;
-               String parentKey = getParentKey(r, parameter);
-               return parent.get(parentKey);
-
-       }
-
-       private String getParentKey(Relationship r, String parameter) {
-               List keyPairs = r.getKeyPair();
-               Iterator i = keyPairs.iterator();
-               while (i.hasNext()) {
-                       KeyPair pair = (KeyPair) i.next();
-                       if (pair.getForeignKeyColumn().equals(parameter))
-                               return pair.getPrimaryKeyColumn();
-               }
-               return null;
-       }
-
-       public Property getParentReference(String parentName) {
-               if (this.parentReference == null) {
-
-                       Iterator i = 
dataObject.getType().getProperties().iterator();                                
                   
-                       while (i.hasNext()) {
-                               Property ref = (Property) i.next();
-                               if ((!ref.getType().isDataType()) && 
-                                               
(ref.getType().getName().equals(parentName))) {
-                                       this.parentReference = ref;
-                               }
-                       }
-               }
-               return this.parentReference;
-       }
-
-       public String getTableName() {
-               if (mappingWrapper.getConfig() != null)
-                       return 
mappingWrapper.getTableByPropertyName(getTypeName())
-                                       .getName();
-               else
-                       return null;
-       }
-
-       public String getTypeName() {
-               return dataObject.getType().getName();
-       }
-
-       public void setPropagatedID(String propagatedID, int id) {
-               dataObject.setInt(propagatedID, id);
-       }
 }

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java?rev=397085&r1=397084&r2=397085&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java
 Tue Apr 25 21:36:17 2006
@@ -19,6 +19,7 @@
 import java.sql.ResultSet;
 import java.sql.SQLException;
 
+import org.apache.tuscany.das.rdb.config.Config;
 import org.apache.tuscany.das.rdb.util.DebugUtil;
 
 import commonj.sdo.DataObject;
@@ -28,6 +29,10 @@
        public SPCommandImpl(String sqlString) {
                super(sqlString);
        }
+    
+    public SPCommandImpl(String sqlString, Config config) {
+        super(sqlString, config);
+    }
 
        public DataObject executeQuery() {
 


Reply via email to