User: dsundstrom Date: 02/02/26 16:07:59 Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCLoadEntityCommand.java JDBCStoreEntityCommand.java JDBCStoreManager.java JDBCUtil.java ReadAheadCache.java SQLUtil.java Log: Moved extraneous log messages to trace level. Wrapped log messages with isEnabled checks. Revision Changes Path 1.17 +7 -3 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadEntityCommand.java Index: JDBCLoadEntityCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadEntityCommand.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- JDBCLoadEntityCommand.java 16 Feb 2002 10:37:54 -0000 1.16 +++ JDBCLoadEntityCommand.java 27 Feb 2002 00:07:58 -0000 1.17 @@ -40,7 +40,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a> * @author <a href="mailto:[EMAIL PROTECTED]">Dirk Zimmermann</a> * @author <a href="mailto:[EMAIL PROTECTED]">danch (Dan Christopherson)</a> - * @version $Revision: 1.16 $ + * @version $Revision: 1.17 $ */ public class JDBCLoadEntityCommand { private final JDBCStoreManager manager; @@ -98,7 +98,9 @@ con = entity.getDataSource().getConnection(); // create the statement - log.debug("Executing SQL: " + sql); + if(log.isDebugEnabled()) { + log.debug("Executing SQL: " + sql); + } ps = con.prepareStatement(sql); // set the parameters @@ -240,7 +242,9 @@ // get the load fields ArrayList loadFields = new ArrayList(entity.getFields().size()); if(requiredField == null) { - log.debug("Default eager-load for entity"); + if(log.isTraceEnabled()) { + log.trace("Default eager-load for entity"); + } loadFields.addAll(entity.getEagerLoadFields()); } else { loadFields.add(requiredField); 1.12 +11 -5 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStoreEntityCommand.java Index: JDBCStoreEntityCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStoreEntityCommand.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- JDBCStoreEntityCommand.java 15 Jan 2002 22:27:34 -0000 1.11 +++ JDBCStoreEntityCommand.java 27 Feb 2002 00:07:58 -0000 1.12 @@ -29,7 +29,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]">Sebastien Alborini</a> - * @version $Revision: 1.11 $ + * @version $Revision: 1.12 $ */ public class JDBCStoreEntityCommand { private JDBCStoreManager manager; @@ -51,8 +51,10 @@ List dirtyFields = entity.getDirtyFields(ctx); if(dirtyFields.isEmpty()) { - log.debug("Store command NOT executed. Entity is not dirty: pk=" + - ctx.getId()); + if(log.isTraceEnabled()) { + log.trace("Store command NOT executed. Entity is not dirty: pk=" + + ctx.getId()); + } return; } @@ -71,7 +73,9 @@ con = entity.getDataSource().getConnection(); // create the statement - log.debug("Executing SQL: " + sql); + if(log.isDebugEnabled()) { + log.debug("Executing SQL: " + sql); + } ps = con.prepareStatement(sql.toString()); // set the parameters @@ -99,7 +103,9 @@ "affected row: rowsAffected=" + rowsAffected + "id=" + ctx.getId()); } - log.debug("Create: Rows affected = " + rowsAffected); + if(log.isDebugEnabled()) { + log.debug("Create: Rows affected = " + rowsAffected); + } // Mark the inserted fields as clean. for(Iterator iter = dirtyFields.iterator(); iter.hasNext(); ) { 1.28 +13 -22 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.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- JDBCStoreManager.java 16 Feb 2002 10:37:54 -0000 1.27 +++ JDBCStoreManager.java 27 Feb 2002 00:07:58 -0000 1.28 @@ -31,6 +31,7 @@ import org.jboss.ejb.EntityPersistenceStore; import org.jboss.ejb.EntityEnterpriseContext; import org.jboss.ejb.ListCacheKey; +import org.jboss.ejb.plugins.cmp.ejbql.Catalog; import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMPFieldBridge; import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge; import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge; @@ -58,7 +59,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> * @see org.jboss.ejb.EntityPersistenceStore - * @version $Revision: 1.27 $ + * @version $Revision: 1.28 $ */ public class JDBCStoreManager implements EntityPersistenceStore { @@ -103,24 +104,11 @@ private JDBCPassivateEntityCommand passivateEntityCommand; // commands -// private JDBCFindByForeignKeyCommand findByForeignKeyCommand; private JDBCLoadRelationCommand loadRelationCommand; private JDBCDeleteRelationsCommand deleteRelationsCommand; private JDBCInsertRelationsCommand insertRelationsCommand; /** - * A map of data preloaded within some transaction for some entity. This map - * is keyed by Transaction, entityKey and CMP field name - * and the data is Object containing the field value. - */ -// private Map preloadedData = new HashMap(); - - /** - * A set of transactions for which data was preloaded. - */ -// private Set transactions = new HashSet(); - - /** * A Transaction manager so that we can link preloaded data to a transaction */ private TransactionManager tm; @@ -287,6 +275,14 @@ // create the bridge between java land and this engine (sql land) entityBridge = new JDBCEntityBridge(metaData, this); + // add the entity bridge to the catalog + Catalog catalog = (Catalog)getApplicationData("CATALOG"); + if(catalog == null) { + catalog = new Catalog(); + putApplicationData("CATALOG", catalog); + } + catalog.addEntity(entityBridge); + // create the read ahead cache readAheadCache = new ReadAheadCache(this); readAheadCache.create(); @@ -402,7 +398,9 @@ public void loadEntity(EntityEnterpriseContext ctx) { // is any on the data already in the entity valid if(!ctx.isValid()) { - log.debug("RESET PERSISTENCE CONTEXT: id="+ctx.getId()); + if(log.isTraceEnabled()) { + log.trace("RESET PERSISTENCE CONTEXT: id="+ctx.getId()); + } entityBridge.resetPersistenceContext(ctx); } @@ -462,13 +460,6 @@ // // Relationship Commands // -// public Collection findByForeignKey( -// Object foreignKey, -// JDBCCMRFieldBridge cmrField) { -// -// return findByForeignKeyCommand.execute(foreignKey, cmrField); -// } - public Collection loadRelation(JDBCCMRFieldBridge cmrField, Object pk) { return loadRelationCommand.execute(cmrField, pk); } 1.9 +9 -9 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCUtil.java Index: JDBCUtil.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCUtil.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- JDBCUtil.java 24 Nov 2001 21:39:10 -0000 1.8 +++ JDBCUtil.java 27 Feb 2002 00:07:59 -0000 1.9 @@ -43,7 +43,7 @@ * parameters and loading query results. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ */ public class JDBCUtil { @@ -132,8 +132,8 @@ */ public static void setParameter(Logger log, PreparedStatement ps, int index, int jdbcType, Object value) throws SQLException { - if(log.isDebugEnabled()) { - log.debug("Set parameter: " + + if(log.isTraceEnabled()) { + log.trace("Set parameter: " + "index=" + index + ", " + "jdbcType=" + getJDBCTypeName(jdbcType) + ", " + "value=" + ((value == null) ? "NULL" : value)); @@ -193,24 +193,24 @@ Object[] returnValue = new Object[1]; if(getNonBinaryResult(rs, index, destination, returnValue)) { - if(log.isDebugEnabled()) { - log.debug("Get result: index=" + index + + if(log.isTraceEnabled()) { + log.trace("Get result: index=" + index + ", javaType=" + destination.getName() + ", Simple, value=" + returnValue[0]); } return returnValue[0]; } else if(getObjectResult(rs, index, destination, returnValue)) { - if(log.isDebugEnabled()) { - log.debug("Get result: index=" + index + + if(log.isTraceEnabled()) { + log.trace("Get result: index=" + index + ", javaType=" + destination.getName() + ", Object, value=" + returnValue[0]); } return returnValue[0]; } else if(getBinaryResult(rs, index, destination, returnValue)) { - if(log.isDebugEnabled()) { - log.debug("Get result: index=" + index + + if(log.isTraceEnabled()) { + log.trace("Get result: index=" + index + ", javaType=" + destination.getName() + ", Binary, value=" + returnValue[0]); } 1.4 +40 -23 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/ReadAheadCache.java Index: ReadAheadCache.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/ReadAheadCache.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ReadAheadCache.java 16 Feb 2002 10:37:54 -0000 1.3 +++ ReadAheadCache.java 27 Feb 2002 00:07:59 -0000 1.4 @@ -31,7 +31,7 @@ * basis. The read ahead data for each entity is stored with a soft reference. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.3 $ + * @version $Revision: 1.4 $ */ public class ReadAheadCache { /** @@ -141,7 +141,9 @@ iter = dereferencedResults.iterator(); while(iter.hasNext()) { Object obj = iter.next(); - log.debug("Removing dereferenced finder results: "+obj); + if(log.isTraceEnabled()) { + log.trace("Removing dereferenced finder results: " + obj); + } listCache.remove(obj); } } @@ -192,17 +194,21 @@ * @param ctx the context that will be loaded */ public void load(EntityEnterpriseContext ctx) { - log.debug("load data:" + - " entity="+manager.getEntityBridge().getEntityName()+ - " pk="+ctx.getId()); + if(log.isTraceEnabled()) { + log.trace("load data:" + + " entity="+manager.getEntityBridge().getEntityName()+ + " pk="+ctx.getId()); + } // get the preload data map Map preloadDataMap = getPreloadDataMap(ctx.getId(), false); if(preloadDataMap == null) { // no preloaded data for this entity - log.debug("No preload data found:"+ - " entity="+manager.getEntityBridge().getEntityName()+ - " pk="+ctx.getId()); + if(log.isTraceEnabled()) { + log.trace("No preload data found:"+ + " entity="+manager.getEntityBridge().getEntityName()+ + " pk="+ctx.getId()); + } return; } @@ -241,10 +247,12 @@ JDBCCMRFieldBridge cmrField = (JDBCCMRFieldBridge)field; if(!cmrField.isLoaded(ctx)) { - log.debug("Preloading data:" + - " entity="+manager.getEntityBridge().getEntityName()+ - " pk="+ctx.getId()+ - " cmrField="+cmrField.getFieldName()); + if(log.isTraceEnabled()) { + log.trace("Preloading data:" + + " entity="+manager.getEntityBridge().getEntityName()+ + " pk="+ctx.getId()+ + " cmrField="+cmrField.getFieldName()); + } // set the value cmrField.loadPreloadedValue(ctx, (List)value); @@ -257,10 +265,12 @@ relatedReadAheadCache.addFinderResult(new FinderResults( (List)value, cmrField.getReadAhead(), null, null)); } else { - log.debug("CMRField already loaded:" + - " entity="+manager.getEntityBridge().getEntityName()+ - " pk="+ctx.getId()+ - " cmrField="+cmrField.getFieldName()); + if(log.isTraceEnabled()) { + log.trace("CMRField already loaded:" + + " entity="+manager.getEntityBridge().getEntityName()+ + " pk="+ctx.getId()+ + " cmrField="+cmrField.getFieldName()); + } } } } @@ -285,10 +295,12 @@ } } - log.debug("Add preload data:" + - " entity="+manager.getEntityBridge().getEntityName()+ - " pk="+entityPrimaryKey+ - " field="+field.getFieldName()); + if(log.isTraceEnabled()) { + log.trace("Add preload data:" + + " entity="+manager.getEntityBridge().getEntityName()+ + " pk="+entityPrimaryKey+ + " field="+field.getFieldName()); + } // convert null values to a null value standing object if(fieldValue == null) { @@ -300,8 +312,10 @@ } public synchronized void removeCachedData(Object primaryKey) { - log.debug("Removing cached data for "+primaryKey); - + if(log.isTraceEnabled()) { + log.trace("Removing cached data for "+primaryKey); + } + // remove the preloaded data manager.removeEntityTxData(new PreloadKey(primaryKey)); @@ -324,7 +338,10 @@ } // a reference to the old finder set was not found so remove it - log.debug("Removing dereferenced finder results: "+oldInfo.finderResults); + if(log.isTraceEnabled()) { + log.trace("Removing dereferenced finder results: " + + oldInfo.finderResults); + } listCache.remove(oldInfo.finderResults); } 1.7 +167 -1 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/SQLUtil.java Index: SQLUtil.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/SQLUtil.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- SQLUtil.java 12 Feb 2002 06:17:15 -0000 1.6 +++ SQLUtil.java 27 Feb 2002 00:07:59 -0000 1.7 @@ -12,13 +12,16 @@ import java.util.Iterator; import java.util.List; +import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge; +import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMPFieldBridge; +import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge; import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCFieldBridge; /** * SQLUtil helps with building sql statements. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.6 $ + * @version $Revision: 1.7 $ */ public class SQLUtil { // ======================================================================= @@ -303,6 +306,162 @@ return buf.toString(); } + + // ======================================================================= + // Is [Not] Null Clause + // columnName0 IS [NOT] NULL [AND columnName1 IS [NOT] NULL [...]] + // ======================================================================= + + /** + * Returns identifier.columnName0 IS [NOT] NULL + * [AND identifier.columnName1 IS [NOT] NULL + * [AND identifier.columnName2 IS [NOT] NULL [...]]] + */ + public static String getIsNullClause( + boolean not, List fields, String identifier) { + + StringBuffer buf = new StringBuffer(); + + List types = getJDBCTypes(fields); + for(Iterator iter = types.iterator(); iter.hasNext();) { + JDBCType type = (JDBCType)iter.next(); + buf.append(getIsNullClause(not, type, identifier)); + if(iter.hasNext()) { + buf.append(" AND "); + } + } + return buf.toString(); + } + + /** + * Returns identifier.columnName0 IS [NOT] NULL + * [AND identifier.columnName1 IS [NOT] NULL + * [AND identifier.columnName2 IS [NOT] NULL [...]]] + */ + public static String getIsNullClause( + boolean not, JDBCFieldBridge field, String identifier) { + + return getIsNullClause(not, field.getJDBCType(), identifier); + } + + /** + * Returns identifier.columnName0 IS [NOT] NULL + * [AND identifier.columnName1 IS [NOT] NULL + * [AND identifier.columnName2 IS [NOT] NULL [...]]] + */ + public static String getIsNullClause( + boolean not, JDBCType type, String identifier) { + + if(identifier.length() > 0) { + identifier += "."; + } + + String[] columnNames = type.getColumnNames(); + + StringBuffer buf = new StringBuffer(); + for(int i=0; i<columnNames.length; i++) { + if(i!=0) { + buf.append(" AND "); + } + buf.append(identifier).append(columnNames[i]); + buf.append(" IS"); + if(not) { + buf.append(" NOT"); + } + buf.append(" NULL"); + } + return buf.toString(); + } + + // ======================================================================= + // Join Clause + // parent.pkColumnName0=child.fkColumnName0 + // [AND parent.pkColumnName1=child.fkColumnName1 + // [AND parent.pkColumnName2=child.fkColumnName2 [...]]] + // ======================================================================= + + public static String getJoinClause( + JDBCCMRFieldBridge cmrField, + String parentAlias, + String childAlias) { + + StringBuffer buf = new StringBuffer(); + + JDBCEntityBridge parentEntity = cmrField.getEntity(); + JDBCEntityBridge childEntity = + (JDBCEntityBridge)cmrField.getRelatedEntity(); + + JDBCCMPFieldBridge parentField; + JDBCCMPFieldBridge childField; + + if(cmrField.hasForeignKey()) { + + // parent has the foreign keys + List parentFkFields = cmrField.getForeignKeyFields(); + for(Iterator iter = parentFkFields.iterator(); iter.hasNext(); ) { + + parentField = (JDBCCMPFieldBridge)iter.next(); + childField = childEntity.getCMPFieldByName( + parentField.getFieldName()); + + buf.append(getJoinClause( + parentField, parentAlias, childField, childAlias)); + + if(iter.hasNext()) { + buf.append(" AND "); + } + } + } else { + + // child has the foreign keys + List childFkFields = + cmrField.getRelatedCMRField().getForeignKeyFields(); + for(Iterator iter = childFkFields.iterator(); iter.hasNext(); ) { + + childField = (JDBCCMPFieldBridge)iter.next(); + parentField = parentEntity.getCMPFieldByName( + childField.getFieldName()); + + // add the sql + buf.append(SQLUtil.getJoinClause( + parentField, parentAlias, childField, childAlias)); + if(iter.hasNext()) { + buf.append(" AND "); + } + } + } + return buf.toString(); + } + + public static String getRelationTableJoinClause( + JDBCCMRFieldBridge cmrField, + String parentAlias, + String relationTableAlias) { + + StringBuffer buf = new StringBuffer(); + + JDBCEntityBridge parentEntity = cmrField.getEntity(); + JDBCCMPFieldBridge parentField; + JDBCCMPFieldBridge relationField; + + // parent to relation table join + List parentFields = cmrField.getTableKeyFields(); + for(Iterator iter = parentFields.iterator(); iter.hasNext(); ) { + + relationField = (JDBCCMPFieldBridge)iter.next(); + parentField = parentEntity.getCMPFieldByName( + relationField.getFieldName()); + + buf.append(SQLUtil.getJoinClause( + parentField, parentAlias, relationField, relationTableAlias)); + + if(iter.hasNext()) { + buf.append(" AND "); + } + } + return buf.toString(); + } + /** * Returns parent.pkColumnName0=child.fkColumnName0 * [AND parent.pkColumnName1=child.fkColumnName1 @@ -376,6 +535,13 @@ } return buf.toString(); } + + // ======================================================================= + // Self Compare Where Clause + // fromIdentifier.pkColumnName0=toIdentifier.fkColumnName0 + // [AND fromIdentifier.pkColumnName1=toIdentifier.fkColumnName1 + // [AND fromIdentifier.pkColumnName2=toIdentifier.fkColumnName2 [...]]] + // ======================================================================= public static String getSelfCompareWhereClause( List fields, String fromIdentifier, String toIdentifier) {
_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development