User: dsundstrom Date: 01/07/25 20:06:40 Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCDestroyCommand.java JDBCFindByForeignKeyCommand.java JDBCFindEntitiesCommand.java JDBCInsertRelationsCommand.java JDBCLoadFieldCommand.java JDBCLoadRelationCommand.java JDBCStartCommand.java JDBCStoreManager.java JDBCTypeFactory.java Log: Minor changes due to changes in the bridge package. Revision Changes Path 1.3 +3 -1 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCDestroyCommand.java Index: JDBCDestroyCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCDestroyCommand.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- JDBCDestroyCommand.java 2001/07/09 23:55:32 1.2 +++ JDBCDestroyCommand.java 2001/07/26 03:06:40 1.3 @@ -22,7 +22,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a> * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a> * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a> - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ */ public class JDBCDestroyCommand extends JDBCUpdateCommand implements DestroyCommand { // Constructors -------------------------------------------------- @@ -35,12 +35,14 @@ public void execute() { if(entityMetaData.getRemoveTable()) { + log.debug("Droping tables for entity " + entity.getEntityName()); dropTable(entityMetaData.getTableName()); // drop relation tables JDBCCMRFieldBridge[] cmrFields = entity.getJDBCCMRFields(); for(int i=0; i<cmrFields.length; i++) { if(!cmrFields[i].hasForeignKey() && !cmrFields[i].getRelatedCMRField().hasForeignKey()) { + if(cmrFields[i].getRelationTableName() == null) log.debug("Table name null for cmr field " + cmrFields[i].getFieldName()); dropTable(cmrFields[i].getRelationTableName()); } } 1.2 +5 -5 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCFindByForeignKeyCommand.java Index: JDBCFindByForeignKeyCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCFindByForeignKeyCommand.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- JDBCFindByForeignKeyCommand.java 2001/07/09 23:55:32 1.1 +++ JDBCFindByForeignKeyCommand.java 2001/07/26 03:06:40 1.2 @@ -21,7 +21,7 @@ * entity's table. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public class JDBCFindByForeignKeyCommand extends JDBCQueryCommand { // Constructors -------------------------------------------------- @@ -32,11 +32,11 @@ // FindEntitiesCommand implementation ------------------------- - public Set execute(EntityEnterpriseContext ctx, + public Set execute(Object foreignKey, JDBCCMPFieldBridge[] foreignKeyFields) { ExecutionState es = new ExecutionState(); - es.ctx = ctx; + es.foreignKey = foreignKey; es.foreignKeyFields = foreignKeyFields; try { @@ -64,7 +64,7 @@ int parameterIndex = 1; for(int i=0; i<es.foreignKeyFields.length; i++) { - parameterIndex = es.foreignKeyFields[i].setInstanceParameters(ps, parameterIndex, es.ctx); + parameterIndex = es.foreignKeyFields[i].setPrimaryKeyParameters(ps, parameterIndex, es.foreignKey); } } @@ -82,7 +82,7 @@ } private static class ExecutionState { - public EntityEnterpriseContext ctx; + public Object foreignKey; public JDBCCMPFieldBridge[] foreignKeyFields; } } 1.3 +7 -7 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCFindEntitiesCommand.java Index: JDBCFindEntitiesCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCFindEntitiesCommand.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- JDBCFindEntitiesCommand.java 2001/07/09 23:55:32 1.2 +++ JDBCFindEntitiesCommand.java 2001/07/26 03:06:40 1.3 @@ -21,6 +21,7 @@ import org.jboss.ejb.EntityEnterpriseContext; import org.jboss.ejb.plugins.cmp.FindEntitiesCommand; +import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCAutomaticQueryMetaData; import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQueryMetaData; import org.jboss.ejb.plugins.cmp.bmp.CustomFindByEntitiesCommand; import org.jboss.util.FinderResults; @@ -35,7 +36,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a> * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a> * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a> - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ */ public class JDBCFindEntitiesCommand implements FindEntitiesCommand { // Attributes ---------------------------------------------------- @@ -51,8 +52,7 @@ // Custom finders - Overrides defined and automatic finders. // try { - Class ejbClass = manager.getContainer().getClassLoader().loadClass( - manager.getMetaData().getEntity().getEjbClass()); + Class ejbClass = manager.getMetaData().getEntityClass(); Method[] customMethods = ejbClass.getMethods(); for (int i = 0; i < customMethods.length; i++) { @@ -72,7 +72,7 @@ // Defined finders - Overrides automatic finders. // try { - Iterator definedFinders = manager.getMetaData().getQueries(); + Iterator definedFinders = manager.getMetaData().getQueries().iterator(); while(definedFinders.hasNext()) { JDBCQueryMetaData q = (JDBCQueryMetaData)definedFinders.next(); @@ -106,11 +106,11 @@ if(!knownFinderCommands.containsKey(m)) { String name = m.getName(); if(name.equals("findAll")) { - JDBCQueryMetaData q = new JDBCQueryMetaData(m, manager.getMetaData()); + JDBCQueryMetaData q = new JDBCAutomaticQueryMetaData(m); knownFinderCommands.put(m, manager.getCommandFactory().createFindAllCommand(q)); - } else if(name.startsWith("findBy") && !name.equals("findByPrimaryKey")) { + } else if(name.startsWith("findBy") && !name.equals("findByPrimaryKey")) { try { - JDBCQueryMetaData q = new JDBCQueryMetaData(m, manager.getMetaData()); + JDBCQueryMetaData q = new JDBCAutomaticQueryMetaData(m); knownFinderCommands.put(m, manager.getCommandFactory().createFindByCommand(q)); } catch (IllegalArgumentException e) { manager.getLog().debug("Could not create the finder " + name + 1.2 +7 -7 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCInsertRelationsCommand.java Index: JDBCInsertRelationsCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCInsertRelationsCommand.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- JDBCInsertRelationsCommand.java 2001/07/09 23:55:32 1.1 +++ JDBCInsertRelationsCommand.java 2001/07/26 03:06:40 1.2 @@ -18,7 +18,7 @@ * Inserts relations into a relation table. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public class JDBCInsertRelationsCommand { protected JDBCStoreManager manager; @@ -91,15 +91,15 @@ sql.append("INSERT INTO ").append(relationData.getLeftCMRField().getRelationTableName()); sql.append(" ("); - sql.append(SQLUtil.getColumnNamesClause(relationData.getLeftCMRField().getKeyFields())); + sql.append(SQLUtil.getColumnNamesClause(relationData.getLeftCMRField().getTableKeyFields())); sql.append(", "); - sql.append(SQLUtil.getColumnNamesClause(relationData.getRightCMRField().getKeyFields())); + sql.append(SQLUtil.getColumnNamesClause(relationData.getRightCMRField().getTableKeyFields())); sql.append(")"); sql.append(" VALUES ("); - sql.append(SQLUtil.getValuesClause(relationData.getLeftCMRField().getKeyFields())); + sql.append(SQLUtil.getValuesClause(relationData.getLeftCMRField().getTableKeyFields())); sql.append(", "); - sql.append(SQLUtil.getValuesClause(relationData.getRightCMRField().getKeyFields())); + sql.append(SQLUtil.getValuesClause(relationData.getRightCMRField().getTableKeyFields())); sql.append(")"); return sql.toString(); } @@ -109,14 +109,14 @@ // left keys Object leftId = pair.getLeftId(); - JDBCCMPFieldBridge[] leftKeyFields = relationData.getLeftCMRField().getKeyFields(); + JDBCCMPFieldBridge[] leftKeyFields = relationData.getLeftCMRField().getTableKeyFields(); for(int i=0; i<leftKeyFields.length; i++) { parameterIndex = leftKeyFields[i].setPrimaryKeyParameters(ps, parameterIndex, leftId); } // right keys Object rightId = pair.getRightId(); - JDBCCMPFieldBridge[] rightKeyFields = relationData.getRightCMRField().getKeyFields(); + JDBCCMPFieldBridge[] rightKeyFields = relationData.getRightCMRField().getTableKeyFields(); for(int i=0; i<rightKeyFields.length; i++) { parameterIndex = rightKeyFields[i].setPrimaryKeyParameters(ps, parameterIndex, rightId); } 1.2 +2 -2 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadFieldCommand.java Index: JDBCLoadFieldCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadFieldCommand.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- JDBCLoadFieldCommand.java 2001/06/24 03:23:14 1.1 +++ JDBCLoadFieldCommand.java 2001/07/26 03:06:40 1.2 @@ -31,7 +31,7 @@ * fields. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public class JDBCLoadFieldCommand extends JDBCQueryCommand @@ -46,7 +46,7 @@ public void execute(JDBCCMPFieldBridge field, EntityEnterpriseContext ctx) { // start with a set with containing just the field - ArrayList fields = new ArrayList(entityMetaData.getCMPFieldCount()); + ArrayList fields = new ArrayList(entityMetaData.getCMPFields().size()); fields.add(field); // union all the groups of which field is a member 1.2 +5 -5 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadRelationCommand.java Index: JDBCLoadRelationCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadRelationCommand.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- JDBCLoadRelationCommand.java 2001/07/09 23:55:32 1.1 +++ JDBCLoadRelationCommand.java 2001/07/26 03:06:40 1.2 @@ -19,7 +19,7 @@ * Loads relations for a particular entity from a relation table. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public class JDBCLoadRelationCommand extends JDBCQueryCommand { // Constructors -------------------------------------------------- @@ -49,9 +49,9 @@ // Create table SQL StringBuffer sql = new StringBuffer(); - sql.append("SELECT ").append(SQLUtil.getColumnNamesClause(es.cmrField.getRelatedCMRField().getKeyFields())); + sql.append("SELECT ").append(SQLUtil.getColumnNamesClause(es.cmrField.getRelatedCMRField().getTableKeyFields())); sql.append(" FROM ").append(es.cmrField.getRelationTableName()); - sql.append(" WHERE ").append(SQLUtil.getWhereClause(es.cmrField.getKeyFields())); + sql.append(" WHERE ").append(SQLUtil.getWhereClause(es.cmrField.getTableKeyFields())); return sql.toString(); } @@ -59,7 +59,7 @@ protected void setParameters(PreparedStatement ps, Object arg) throws Exception { ExecutionState es = (ExecutionState)arg; - JDBCCMPFieldBridge[] myKeyFields = es.cmrField.getKeyFields(); + JDBCCMPFieldBridge[] myKeyFields = es.cmrField.getTableKeyFields(); int parameterIndex = 1; for(int i=0; i<myKeyFields.length; i++) { @@ -76,7 +76,7 @@ while(rs.next()) { pkRef[0] = null; - JDBCCMPFieldBridge[] relatedKeyFields = es.cmrField.getRelatedCMRField().getKeyFields(); + JDBCCMPFieldBridge[] relatedKeyFields = es.cmrField.getRelatedCMRField().getTableKeyFields(); int parameterIndex = 1; for(int i=0; i<relatedKeyFields.length; i++) { 1.3 +5 -5 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java Index: JDBCStartCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- JDBCStartCommand.java 2001/07/09 23:55:32 1.2 +++ JDBCStartCommand.java 2001/07/26 03:06:40 1.3 @@ -23,7 +23,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a> * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a> * @author <a href="mailto:[EMAIL PROTECTED]">Michel de Groot</a> - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ */ public class JDBCStartCommand extends JDBCUpdateCommand implements StartCommand { // Constructors -------------------------------------------------- @@ -128,9 +128,9 @@ sql.append(" ("); // list all cmp fields - sql.append(SQLUtil.getCreateTableColumnsClause(cmrField.getKeyFields())); + sql.append(SQLUtil.getCreateTableColumnsClause(cmrField.getTableKeyFields())); sql.append(", "); - sql.append(SQLUtil.getCreateTableColumnsClause(cmrField.getRelatedCMRField().getKeyFields())); + sql.append(SQLUtil.getCreateTableColumnsClause(cmrField.getRelatedCMRField().getTableKeyFields())); // If there is a primary key field, // and the bean has explicitly <pk-constraint>true</pk-constraint> in jbosscmp-jdbc.xml @@ -139,9 +139,9 @@ // sql.append(", CONSTRAINT pk").append(cmrField.getRelationTableName()); // // sql.append(" PRIMARY KEY ("); -// sql.append(SQLUtil.getColumnNamesClause(cmrField.getKeyFields()))); +// sql.append(SQLUtil.getColumnNamesClause(cmrField.getTableKeyFields()))); // sql.append(", "); -// sql.append(SQLUtil.getColumnNamesClause(cmrField.getRelatedCMRField().getKeyFields())); +// sql.append(SQLUtil.getColumnNamesClause(cmrField.getRelatedCMRField().getTableKeyFields())); // sql.append(")"); // } sql.append(")"); 1.5 +17 -13 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStoreManager.java Index: JDBCStoreManager.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStoreManager.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- JDBCStoreManager.java 2001/07/09 23:55:32 1.4 +++ JDBCStoreManager.java 2001/07/26 03:06:40 1.5 @@ -13,6 +13,8 @@ import java.util.Map; import java.util.Set; import javax.sql.DataSource; +import javax.naming.InitialContext; +import javax.naming.NamingException; import org.jboss.ejb.DeploymentException; import org.jboss.ejb.EntityEnterpriseContext; import org.jboss.ejb.plugins.cmp.CMPStoreManager; @@ -42,7 +44,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> * @see org.jboss.ejb.EntityPersistenceStore - * @version $Revision: 1.4 $ + * @version $Revision: 1.5 $ */ public class JDBCStoreManager extends CMPStoreManager { protected DataSource dataSource; @@ -63,7 +65,18 @@ initTxDataMap(); metaData = loadJDBCEntityMetaData(); - typeFactory = new JDBCTypeFactory(metaData.getJDBCApplication()); + + // set debug flag + debug = metaData.isDebug(); + + // find the datasource + try { + dataSource = (DataSource)new InitialContext().lookup(metaData.getDataSourceName()); + } catch(NamingException e) { + throw new DeploymentException("Error: can't find data source: " + metaData.getDataSourceName()); + } + + typeFactory = new JDBCTypeFactory(metaData.getTypeMapping(), metaData.getJDBCApplication().getValueClasses()); entityBridge = new JDBCEntityBridge(metaData, log, this); super.init(); @@ -126,8 +139,8 @@ return dataSource.getConnection(); } - public Set findByForeignKey(EntityEnterpriseContext ctx, JDBCCMPFieldBridge[] foreignKeyFields) { - return findByForeignKeyCommand.execute(ctx, foreignKeyFields); + public Set findByForeignKey(Object foreignKey, JDBCCMPFieldBridge[] foreignKeyFields) { + return findByForeignKeyCommand.execute(foreignKey, foreignKeyFields); } public Set loadRelation(JDBCCMRFieldBridge cmrField, Object pk) { @@ -171,15 +184,6 @@ JDBCXmlFileLoader jfl = new JDBCXmlFileLoader(amd, container.getClassLoader(), container.getLocalClassLoader(), log); jamd = jfl.load(); amd.addPluginData("CMP-JDBC", jamd); - } - - // set debug flag - debug = jamd.getDebug(); - - // Get the datasource - dataSource = jamd.getDataSource(); - if(dataSource == null) { - throw new DeploymentException("Unable to locate data source."); } // Get JDBC Bean MetaData 1.3 +10 -10 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCTypeFactory.java Index: JDBCTypeFactory.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCTypeFactory.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- JDBCTypeFactory.java 2001/07/09 23:55:32 1.2 +++ JDBCTypeFactory.java 2001/07/26 03:06:40 1.3 @@ -10,6 +10,7 @@ import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.Iterator; @@ -28,7 +29,7 @@ * this class is to flatten the JDBCValueClassMetaData into columns. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ */ public class JDBCTypeFactory { // the type mapping to use with the specified database @@ -37,11 +38,10 @@ // all the available dependent value classes (by javaType) private HashMap valueClasses = new HashMap(); - public JDBCTypeFactory(JDBCApplicationMetaData app) { - typeMapping = app.getTypeMapping(); - Iterator classes = app.getValueClasses(); - while(classes.hasNext()) { - JDBCValueClassMetaData valueClass = (JDBCValueClassMetaData)classes.next(); + public JDBCTypeFactory(JDBCTypeMappingMetaData typeMapping, Collection dependentValueClasses) { + this.typeMapping = typeMapping; + for(Iterator i = dependentValueClasses.iterator(); i.hasNext(); ) { + JDBCValueClassMetaData valueClass = (JDBCValueClassMetaData)i.next(); valueClasses.put(valueClass.getJavaType(), valueClass); } } @@ -58,7 +58,7 @@ return typeMapping.getJdbcTypeForJavaType(clazz); } - protected JDBCType createSimpleType(JDBCCMPFieldMetaData cmpField) { + private JDBCType createSimpleType(JDBCCMPFieldMetaData cmpField) { String columnName = cmpField.getColumnName(); Class javaType = cmpField.getFieldType(); @@ -74,7 +74,7 @@ return new JDBCTypeSimple(columnName, javaType, jdbcType, sqlType); } - protected JDBCType createComplexType(JDBCCMPFieldMetaData cmpField) { + private JDBCType createComplexType(JDBCCMPFieldMetaData cmpField) { JDBCValueClassMetaData valueClass = (JDBCValueClassMetaData)valueClasses.get(cmpField.getFieldType()); // get the properties @@ -87,7 +87,7 @@ // create a map between propertyNames and the override HashMap overrides = new HashMap(); - Iterator iterator = cmpField.getPropertyOverrides(); + Iterator iterator = cmpField.getPropertyOverrides().iterator(); while(iterator.hasNext()) { JDBCCMPFieldPropertyMetaData p = (JDBCCMPFieldPropertyMetaData)iterator.next(); overrides.put(p.getPropertyName(), p); @@ -129,7 +129,7 @@ ArrayList properties = new ArrayList(); JDBCValuePropertyMetaData propertyMetaData; - Iterator iterator = valueClass.getProperties(); + Iterator iterator = valueClass.getProperties().iterator(); while(iterator.hasNext()) { propertyMetaData = (JDBCValuePropertyMetaData) iterator.next(); properties.addAll(createComplexProperties(propertyMetaData, propertyStack)); _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] http://lists.sourceforge.net/lists/listinfo/jboss-development