diff options
Diffstat (limited to 'tags/java-M1-final/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java')
-rw-r--r-- | tags/java-M1-final/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/tags/java-M1-final/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java b/tags/java-M1-final/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java deleted file mode 100644 index 3243ba2388..0000000000 --- a/tags/java-M1-final/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java +++ /dev/null @@ -1,206 +0,0 @@ -/** -* -* 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.generator.impl; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -import org.apache.tuscany.das.rdb.Converter; -import org.apache.tuscany.das.rdb.Parameter; -import org.apache.tuscany.das.rdb.config.Column; -import org.apache.tuscany.das.rdb.config.Table; -import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper; -import org.apache.tuscany.das.rdb.config.wrapper.RelationshipWrapper; -import org.apache.tuscany.das.rdb.config.wrapper.TableWrapper; -import org.apache.tuscany.das.rdb.impl.OptimisticWriteCommandImpl; -import org.apache.tuscany.das.rdb.impl.ParameterImpl; -import org.apache.tuscany.das.rdb.impl.UpdateCommandImpl; -import org.apache.tuscany.das.rdb.util.DebugUtil; - -import commonj.sdo.ChangeSummary; -import commonj.sdo.DataObject; -import commonj.sdo.Property; -import commonj.sdo.Type; - -public class UpdateGenerator { - - private boolean debug = false; - - public static UpdateGenerator instance = new UpdateGenerator(); - - public UpdateGenerator() { - super(); - } - - public UpdateCommandImpl getUpdateCommand(MappingWrapper mapping, DataObject changedObject, Table table) { - ArrayList parameters = new ArrayList(); - Type type = changedObject.getType(); - TableWrapper t = new TableWrapper(table); - StringBuffer statement = new StringBuffer("update "); - statement.append(table.getName()); - statement.append(" set "); - - - ChangeSummary summary = changedObject.getDataGraph().getChangeSummary(); - Iterator i = getChangedFields(mapping, summary, changedObject).iterator(); - - while (i.hasNext()) { - Property attr = (Property) i.next(); - Column c = t.getColumnByPropertyName(attr.getName()); - if ((c != null) && (c.isCollision() || c.isPrimaryKey())) { - // get rid of comma if OCC or PK is last field - if (!i.hasNext()) { - statement - .delete(statement.length() - 2, statement.length()); - } - } else { - parameters.add(attr); - statement.append(c == null ? attr.getName() : c.getName()); - statement.append(" = ?"); - if (i.hasNext()) - statement.append(", "); - } - } - - statement.append(" where "); - - Iterator names = t.getPrimaryKeyNames().iterator(); - Iterator properties = t.getPrimaryKeyProperties().iterator(); - while (names.hasNext() && properties.hasNext()) { - String name = (String) names.next(); - String property = (String) properties.next(); - statement.append(name); - statement.append(" = ?"); - if (names.hasNext() && properties.hasNext()) - statement.append(" and "); - parameters.add(type.getProperty(property)); - } - - if (t.getCollisionColumn() != null) { - statement.append(" and "); - statement.append(t.getCollisionColumn().getName()); - statement.append(" = ?"); - parameters.add(type.getProperty(t.getCollisionColumnPropertyName())); - } - - - UpdateCommandImpl updateCommand; - if ( t.getCollisionColumn() != null ) - updateCommand = new OptimisticWriteCommandImpl(statement.toString()); - else - updateCommand = new UpdateCommandImpl(statement.toString()); - - Iterator params = parameters.iterator(); - for (int idx = 1; params.hasNext(); idx++ ) { - Property p = (Property)params.next(); - Parameter param = new ParameterImpl(); - param.setName(p.getName()); - param.setType(p.getType()); - param.setConverter(getConverter(t, p.getName())); - param.setIndex(idx); - updateCommand.addParameter(param); - } - DebugUtil.debugln(getClass(), debug, statement.toString()); - return updateCommand; - } - - private List getAttributeProperties(DataObject obj) { - ArrayList fields = new ArrayList(); - Iterator i = obj.getType().getProperties().iterator(); - while ( i.hasNext() ) { - Property p = (Property) i.next(); - if ( p.getType().isDataType()) - fields.add(p); - } - return fields; - } - - - private List getChangedFields(MappingWrapper mapping, ChangeSummary summary, DataObject obj) { - ArrayList changes = new ArrayList(); - Iterator i = summary.getOldValues(obj).iterator(); - while (i.hasNext()) { - ChangeSummary.Setting setting = (ChangeSummary.Setting) i.next(); - if (setting.getProperty().getType().isDataType()) { - changes.add(setting.getProperty()); - } else { - Property ref = setting.getProperty(); - if ( !ref.isMany() ) { - RelationshipWrapper r = new RelationshipWrapper(mapping.getRelationshipByReference(ref)); - - Iterator keys = r.getForeignKeys().iterator(); - while ( keys.hasNext()) { - String key = (String) keys.next(); - Property p = obj.getType().getProperty(key); - changes.add(p); - } - } - - } - } - return changes; - } - - - private Converter getConverter(TableWrapper tw, String name) { - String converter = tw.getConverter(name); - if ( converter != null ) { - try { - return (Converter) Class.forName(converter).newInstance(); - } catch (Exception ex) { - throw new RuntimeException(ex); - } - } - return null; - } - - public Collection getUpdateParameters(DataObject changedObject, Table table) { - Type type = changedObject.getType(); - TableWrapper wrapper = new TableWrapper(table); - Collection pkNames = wrapper.getPrimaryKeyProperties(); - ArrayList parameters = new ArrayList(); - ArrayList pkParams = new ArrayList(); - - Iterator i = getAttributeProperties(changedObject).iterator(); - while (i.hasNext()) { - Property attr = (Property) i.next(); - String field = attr.getName(); - - Parameter p = getParameter(wrapper, type.getProperty(field)); - if (pkNames.contains(field)) { - pkParams.add(p); - } else { - parameters.add(p); - } - } - parameters.addAll(pkParams); - return parameters; - - } - - private Parameter getParameter(TableWrapper wrapper, Property property) { - Parameter param = new ParameterImpl(); - param.setName(property.getName()); - param.setType(property.getType()); - param.setConverter(getConverter(wrapper, property.getName())); - - return param; - } -} - |