User: salborini
Date: 00/09/08 19:52:58
Modified: src/main/org/jboss/ejb/plugins/jaws/jdbc
JDBCBeanExistsCommand.java JDBCCommand.java
JDBCCommandFactory.java
JDBCCreateEntityCommand.java
JDBCDefinedFinderCommand.java
JDBCDestroyCommand.java JDBCFindAllCommand.java
JDBCFindByCommand.java JDBCFindEntitiesCommand.java
JDBCFinderCommand.java JDBCInitCommand.java
JDBCLoadEntityCommand.java
JDBCRemoveEntityCommand.java
JDBCStoreEntityCommand.java
Log:
Modifications:
- to use the new jaws.metadata package
- to store ejb references by using their handle instead of their primary key
Revision Changes Path
1.4 +2 -2
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCBeanExistsCommand.java
Index: JDBCBeanExistsCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCBeanExistsCommand.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JDBCBeanExistsCommand.java 2000/08/24 10:56:36 1.3
+++ JDBCBeanExistsCommand.java 2000/09/09 02:52:55 1.4
@@ -19,7 +19,7 @@
* @see <related>
* @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public class JDBCBeanExistsCommand extends JDBCQueryCommand
{
@@ -28,7 +28,7 @@
public JDBCBeanExistsCommand(JDBCCommandFactory factory)
{
super(factory, "Exists");
- String sql = "SELECT COUNT(*) AS Total FROM " + metaInfo.getTableName() +
+ String sql = "SELECT COUNT(*) AS Total FROM " + jawsEntity.getTableName() +
" WHERE " + getPkColumnWhereList();
setSQL(sql);
}
1.12 +54 -101 jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCCommand.java
Index: JDBCCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCCommand.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- JDBCCommand.java 2000/09/09 02:23:41 1.11
+++ JDBCCommand.java 2000/09/09 02:52:55 1.12
@@ -33,15 +33,14 @@
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
+import javax.ejb.Handle;
import javax.sql.DataSource;
import org.jboss.ejb.EntityEnterpriseContext;
-import org.jboss.ejb.plugins.jaws.CMPFieldInfo;
-import org.jboss.ejb.plugins.jaws.MetaInfo;
-import org.jboss.ejb.plugins.jaws.PkFieldInfo;
-import org.jboss.ejb.plugins.jaws.deployment.JawsEntity;
-import org.jboss.ejb.plugins.jaws.deployment.JawsCMPField;
+import org.jboss.ejb.plugins.jaws.metadata.JawsEntityMetaData;
+import org.jboss.ejb.plugins.jaws.metadata.CMPFieldMetaData;
+import org.jboss.ejb.plugins.jaws.metadata.PkFieldMetaData;
import org.jboss.logging.Log;
import org.jboss.logging.Logger;
@@ -52,7 +51,7 @@
* utility methods that database commands may need to call.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
- * @version $Revision: 1.11 $
+ * @version $Revision: 1.12 $
*/
public abstract class JDBCCommand
{
@@ -85,10 +84,11 @@
e.printStackTrace();
}
}
+
// Attributes ----------------------------------------------------
protected JDBCCommandFactory factory;
- protected MetaInfo metaInfo;
+ protected JawsEntityMetaData jawsEntity;
protected Log log;
protected String name; // Command name, used for debug trace
@@ -113,7 +113,7 @@
protected JDBCCommand(JDBCCommandFactory factory, String name)
{
this.factory = factory;
- this.metaInfo = factory.getMetaInfo();
+ this.jawsEntity = factory.getMetaData();
this.log = factory.getLog();
this.name = name;
}
@@ -281,9 +281,17 @@
} else if(jdbcType == Types.TIMESTAMP) {
if(value.getClass().getName().equals("java.util.Date"))
value = new java.sql.Timestamp(((java.util.Date)value).getTime());
- }
+ }
if (jdbcType == Types.JAVA_OBJECT) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ // ejb-reference: store the handle
+ if (value instanceof EJBObject) try {
+ value = ((EJBObject)value).getHandle();
+ } catch (RemoteException e) {
+ throw new SQLException("Cannot get Handle of
EJBObject: "+e);
+ }
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
ObjectOutputStream oos = new ObjectOutputStream(baos);
@@ -320,89 +328,28 @@
Object id)
throws IllegalAccessException, SQLException
{
- Iterator it = metaInfo.getPkFieldInfos();
-
- if (metaInfo.hasCompositeKey())
+ Iterator it = jawsEntity.getPkFields();
+
+ if (jawsEntity.hasCompositeKey())
{
while (it.hasNext())
{
- PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
- int jdbcType = pkFieldInfo.getJDBCType();
- Object value = getPkFieldValue(id, pkFieldInfo);
+ PkFieldMetaData pkFieldMetaData = (PkFieldMetaData)it.next();
+ int jdbcType = pkFieldMetaData.getJDBCType();
+ Object value = getPkFieldValue(id, pkFieldMetaData);
setParameter(stmt, parameterIndex++, jdbcType, value);
}
} else
{
- PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
- int jdbcType = pkFieldInfo.getJDBCType();
+ PkFieldMetaData pkFieldMetaData = (PkFieldMetaData)it.next();
+ int jdbcType = pkFieldMetaData.getJDBCType();
setParameter(stmt, parameterIndex++, jdbcType, id);
}
return parameterIndex;
}
- /**
- * Sets parameter(s) representing a foreign key in this
- * Command's PreparedStatement.
- * TODO: (JF) tighten up the typing of the value parameter.
- *
- * @param stmt the PreparedStatement whose parameters need to be set.
- * @param idx the index (1-based) of the first parameter to be set.
- * @param fieldInfo the CMP meta-info for the field containing the
- * entity reference.
- * @param value the entity (EJBObject) referred to by the reference
- * (may be null).
- * @return the index of the next unset parameter.
- * @throws SQLException if the access to the referred-to entity's primary
- * key fails, or if parameter setting fails.
- */
- protected int setForeignKey(PreparedStatement stmt,
- int idx,
- CMPFieldInfo fieldInfo,
- Object value)
- throws SQLException
- {
- JawsCMPField[] pkInfo = fieldInfo.getForeignKeyCMPFields();
- Object pk = null;
- if (value != null)
- {
- try
- {
- pk = ((EJBObject)value).getPrimaryKey();
- } catch (RemoteException e)
- {
- throw new SQLException("Could not extract primary key from EJB
reference:"+e);
- }
- }
-
- if (!((JawsEntity)pkInfo[0].getBeanContext()).getPrimaryKeyField().equals(""))
- {
- // Primitive key
- int jdbcType = getJawsCMPFieldJDBCType(pkInfo[0]);
- Object fieldValue = (value == null) ? null : pk;
- setParameter(stmt, idx, jdbcType, fieldValue);
- return idx+1;
- } else
- {
- // Compound key
- Field[] fields = (value == null) ? null : pk.getClass().getFields();
- try
- {
- for (int i = 0; i < pkInfo.length; i++)
- {
- int jdbcType = getJawsCMPFieldJDBCType(pkInfo[i]);
- Object fieldValue = (value == null) ? null : fields[i].get(pk);
- setParameter(stmt, idx+i, jdbcType, fieldValue);
- }
- } catch (IllegalAccessException e)
- {
- throw new SQLException("Could not extract fields from primary key:"+e);
- }
- return idx+pkInfo.length;
- }
- }
-
/**
* Used for all retrieval of results from <code>ResultSet</code>s.
* Implements tracing, and allows some tweaking of returned types.
@@ -432,6 +379,7 @@
result = rs.getObject(idx);
if(result == null)
return null;
+
if(destination.isAssignableFrom(result.getClass()))
return result;
// DEBUG else System.out.println("Got a "+result.getClass().getName()+":
'"+result+"' while looking for a "+destination.getName());
@@ -454,12 +402,18 @@
try {
WorkaroundInputStream ois = new WorkaroundInputStream(bais);
result = ois.readObject();
+
+ // ejb-reference: get the object back from the handle
+ if (result instanceof Handle) result =
((Handle)result).getEJBObject();
+
if(!destination.isAssignableFrom(result.getClass())) {
System.out.println("Unable to load a ResultSet column into a
variable of type '"+destination.getName()+"' (got a "+result.getClass().getName()+")");
result = null;
}
ois.close();
+ } catch (RemoteException e) {
+ throw new SQLException("Unable to load EJBObject back
from Handle: " +e);
} catch (IOException e) {
throw new SQLException("Unable to load a ResultSet column into a
variable of type '"+destination.getName()+"': "+e);
} catch (ClassNotFoundException e) {
@@ -517,11 +471,11 @@
protected final String getPkColumnList()
{
StringBuffer sb = new StringBuffer();
- Iterator it = metaInfo.getPkFieldInfos();
+ Iterator it = jawsEntity.getPkFields();
while (it.hasNext())
{
- PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
- sb.append(pkFieldInfo.getColumnName());
+ PkFieldMetaData pkFieldMetaData = (PkFieldMetaData)it.next();
+ sb.append(pkFieldMetaData.getColumnName());
if (it.hasNext())
{
sb.append(",");
@@ -540,11 +494,11 @@
protected final String getPkColumnWhereList()
{
StringBuffer sb = new StringBuffer();
- Iterator it = metaInfo.getPkFieldInfos();
+ Iterator it = jawsEntity.getPkFields();
while (it.hasNext())
{
- PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
- sb.append(pkFieldInfo.getColumnName());
+ PkFieldMetaData pkFieldMetaData = (PkFieldMetaData)it.next();
+ sb.append(pkFieldMetaData.getColumnName());
sb.append("=?");
if (it.hasNext())
{
@@ -557,16 +511,16 @@
// MF: PERF!!!!!!!
protected Object[] getState(EntityEnterpriseContext ctx)
{
- Object[] state = new Object[metaInfo.getNumberOfCMPFields()];
- Iterator iter = metaInfo.getCMPFieldInfos();
+ Object[] state = new Object[jawsEntity.getNumberOfCMPFields()];
+ Iterator iter = jawsEntity.getCMPFields();
int i = 0;
while (iter.hasNext())
{
- CMPFieldInfo fieldInfo = (CMPFieldInfo)iter.next();
+ CMPFieldMetaData fieldMetaData = (CMPFieldMetaData)iter.next();
try
{
// JF: Should clone
- state[i++] = getCMPFieldValue(ctx.getInstance(), fieldInfo);
+ state[i++] = getCMPFieldValue(ctx.getInstance(), fieldMetaData);
} catch (Exception e)
{
return null;
@@ -575,35 +529,34 @@
return state;
}
-
- protected Object getCMPFieldValue(Object instance, CMPFieldInfo fieldInfo)
+
+ protected Object getCMPFieldValue(Object instance, CMPFieldMetaData
fieldMetaData)
throws IllegalAccessException
{
- Field field = fieldInfo.getField();
+ Field field = fieldMetaData.getField();
return field.get(instance);
}
protected void setCMPFieldValue(Object instance,
- CMPFieldInfo fieldInfo,
+ CMPFieldMetaData fieldMetaData,
Object value)
throws IllegalAccessException
{
- Field field = fieldInfo.getField();
+ Field field = fieldMetaData.getField();
field.set(instance, value);
}
-
- protected Object getPkFieldValue(Object pk, PkFieldInfo pkFieldInfo)
+
+ protected Object getPkFieldValue(Object pk, PkFieldMetaData pkFieldMetaData)
throws IllegalAccessException
{
- Field field = pkFieldInfo.getPkField();
+ Field field = pkFieldMetaData.getPkField();
return field.get(pk);
}
// This is now only used in setForeignKey
-
- protected int getJawsCMPFieldJDBCType(JawsCMPField fieldInfo)
+ protected int getJawsCMPFieldJDBCType(CMPFieldMetaData fieldMetaData)
{
- return getJDBCType(fieldInfo.getJdbcType());
+ return fieldMetaData.getJDBCType();
}
// Private -------------------------------------------------------
@@ -611,7 +564,7 @@
/** Get a database connection */
protected Connection getConnection() throws SQLException
{
- DataSource ds = metaInfo.getDataSource();
+ DataSource ds = jawsEntity.getDataSource();
if (ds != null)
{
return ds.getConnection();
1.3 +34 -9
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCCommandFactory.java
Index: JDBCCommandFactory.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCCommandFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JDBCCommandFactory.java 2000/08/21 01:23:58 1.2
+++ JDBCCommandFactory.java 2000/09/09 02:52:56 1.3
@@ -13,7 +13,8 @@
import javax.naming.InitialContext;
import org.jboss.ejb.EntityContainer;
-import org.jboss.ejb.plugins.jaws.MetaInfo;
+import org.jboss.ejb.DeploymentException;
+
import org.jboss.ejb.plugins.jaws.JPMCommandFactory;
import org.jboss.ejb.plugins.jaws.JPMInitCommand;
import org.jboss.ejb.plugins.jaws.JPMStartCommand;
@@ -27,8 +28,13 @@
import org.jboss.ejb.plugins.jaws.JPMStoreEntityCommand;
import org.jboss.ejb.plugins.jaws.JPMActivateEntityCommand;
import org.jboss.ejb.plugins.jaws.JPMPassivateEntityCommand;
+
+import org.jboss.metadata.ApplicationMetaData;
-import org.jboss.ejb.plugins.jaws.deployment.Finder;
+import org.jboss.ejb.plugins.jaws.metadata.JawsXmlFileLoader;
+import org.jboss.ejb.plugins.jaws.metadata.JawsEntityMetaData;
+import org.jboss.ejb.plugins.jaws.metadata.JawsApplicationMetaData;
+import org.jboss.ejb.plugins.jaws.metadata.FinderMetaData;
import org.jboss.logging.Log;
@@ -36,7 +42,7 @@
* JAWSPersistenceManager JDBCCommandFactory
*
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class JDBCCommandFactory implements JPMCommandFactory
{
@@ -44,7 +50,7 @@
private EntityContainer container;
private Context javaCtx;
- private MetaInfo metaInfo;
+ private JawsEntityMetaData metadata;
private Log log;
// These support singletons (within the scope of this factory)
@@ -58,9 +64,25 @@
throws Exception
{
this.container = container;
- this.javaCtx = (Context)new InitialContext().lookup("java:comp/env");
- this.metaInfo = new MetaInfo(container);
this.log = log;
+
+ this.javaCtx = (Context)new InitialContext().lookup("java:comp/env");
+
+ String ejbName = container.getBeanMetaData().getEjbName();
+ ApplicationMetaData amd =
container.getBeanMetaData().getApplicationMetaData();
+ JawsApplicationMetaData jamd =
(JawsApplicationMetaData)amd.getPluginData("JAWS");
+
+ if (jamd == null) {
+ // we are the first cmp entity to need jaws. Load jaws.xml for the whole
application
+ JawsXmlFileLoader jfl = new JawsXmlFileLoader(amd,
container.getClassLoader(), log);
+ jamd = jfl.load();
+ amd.addPluginData("JAWS", jamd);
+ }
+
+ metadata = jamd.getBeanByEjbName(ejbName);
+ if (metadata == null) {
+ throw new DeploymentException("No metadata found for bean " +
ejbName);
+ }
}
// Public --------------------------------------------------------
@@ -75,9 +97,9 @@
return javaCtx;
}
- public MetaInfo getMetaInfo()
+ public JawsEntityMetaData getMetaData()
{
- return metaInfo;
+ return metadata;
}
public Log getLog()
@@ -106,7 +128,7 @@
return new JDBCFindAllCommand(this);
}
- public JPMFindEntitiesCommand createDefinedFinderCommand(Finder f)
+ public JPMFindEntitiesCommand createDefinedFinderCommand(FinderMetaData f)
{
return new JDBCDefinedFinderCommand(this, f);
}
@@ -193,4 +215,7 @@
{
return new JDBCPassivateEntityCommand(this);
}
+
+
+ // Private -------------------------------------------------------
}
1.4 +24 -46
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCCreateEntityCommand.java
Index: JDBCCreateEntityCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCCreateEntityCommand.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JDBCCreateEntityCommand.java 2000/08/24 10:56:36 1.3
+++ JDBCCreateEntityCommand.java 2000/09/09 02:52:56 1.4
@@ -26,11 +26,10 @@
import org.jboss.ejb.EntityEnterpriseContext;
import org.jboss.ejb.plugins.jaws.JAWSPersistenceManager;
import org.jboss.ejb.plugins.jaws.JPMCreateEntityCommand;
-import org.jboss.ejb.plugins.jaws.CMPFieldInfo;
-import org.jboss.ejb.plugins.jaws.MetaInfo;
-import org.jboss.ejb.plugins.jaws.PkFieldInfo;
-import org.jboss.ejb.plugins.jaws.deployment.JawsCMPField;
+import org.jboss.ejb.plugins.jaws.metadata.CMPFieldMetaData;
+import org.jboss.ejb.plugins.jaws.metadata.PkFieldMetaData;
+
/**
* JAWSPersistenceManager JDBCCreateEntityCommand
*
@@ -39,7 +38,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.3 $
+ * @version $Revision: 1.4 $
*/
public class JDBCCreateEntityCommand
extends JDBCUpdateCommand
@@ -59,36 +58,21 @@
// Insert SQL
- String sql = "INSERT INTO " + metaInfo.getTableName();
+ String sql = "INSERT INTO " + jawsEntity.getTableName();
String fieldSql = "";
String valueSql = "";
- Iterator it = metaInfo.getCMPFieldInfos();
+ Iterator it = jawsEntity.getCMPFields();
boolean first = true;
while (it.hasNext())
{
- CMPFieldInfo fieldInfo = (CMPFieldInfo)it.next();
+ CMPFieldMetaData cmpField = (CMPFieldMetaData)it.next();
- if (fieldInfo.isEJBReference())
- {
- JawsCMPField[] pkFields = fieldInfo.getForeignKeyCMPFields();
-
- for (int i = 0; i < pkFields.length; i++)
- {
- fieldSql += (first ? "" : ",") +
- fieldInfo.getColumnName() + "_" +
- pkFields[i].getColumnName();
- valueSql += first ? "?" : ",?";
- first = false;
- }
- } else
- {
- fieldSql += (first ? "" : ",") +
- fieldInfo.getColumnName();
- valueSql += first ? "?" : ",?";
- first = false;
- }
+ fieldSql += (first ? "" : ",") +
+ cmpField.getColumnName();
+ valueSql += first ? "?" : ",?";
+ first = false;
}
sql += " ("+fieldSql+") VALUES ("+valueSql+")";
@@ -107,13 +91,13 @@
{
// Extract pk
Object id = null;
- Iterator it = metaInfo.getPkFieldInfos();
+ Iterator it = jawsEntity.getPkFields();
- if (metaInfo.hasCompositeKey())
+ if (jawsEntity.hasCompositeKey())
{
try
{
- id = metaInfo.getPrimaryKeyClass().newInstance();
+ id = jawsEntity.getPrimaryKeyClass().newInstance();
} catch (InstantiationException e)
{
throw new ServerException("Could not create primary key",e);
@@ -121,15 +105,15 @@
while (it.hasNext())
{
- PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
- Field from = pkFieldInfo.getCMPField();
- Field to = pkFieldInfo.getPkField();
+ PkFieldMetaData pkField = (PkFieldMetaData)it.next();
+ Field from = pkField.getCMPField();
+ Field to = pkField.getPkField();
to.set(id, from.get(ctx.getInstance()));
}
} else
{
- PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
- Field from = pkFieldInfo.getCMPField();
+ PkFieldMetaData pkField = (PkFieldMetaData)it.next();
+ Field from = pkField.getCMPField();
id = from.get(ctx.getInstance());
}
@@ -172,19 +156,13 @@
EntityEnterpriseContext ctx = (EntityEnterpriseContext)argOrArgs;
int idx = 1; // Parameter-index
- Iterator iter = metaInfo.getCMPFieldInfos();
+ Iterator iter = jawsEntity.getCMPFields();
while (iter.hasNext())
{
- CMPFieldInfo fieldInfo = (CMPFieldInfo)iter.next();
- Object value = getCMPFieldValue(ctx.getInstance(), fieldInfo);
+ CMPFieldMetaData cmpField = (CMPFieldMetaData)iter.next();
+ Object value = getCMPFieldValue(ctx.getInstance(), cmpField);
- if (fieldInfo.isEJBReference())
- {
- idx = setForeignKey(stmt, idx, fieldInfo, value);
- } else
- {
- setParameter(stmt, idx++, fieldInfo.getJDBCType(), value);
- }
+ setParameter(stmt, idx++, cmpField.getJDBCType(), value);
}
}
@@ -200,7 +178,7 @@
new JAWSPersistenceManager.PersistenceContext();
// If read-only, set last read to now
- if (metaInfo.isReadOnly()) pCtx.lastRead = System.currentTimeMillis();
+ if (jawsEntity.isReadOnly()) pCtx.lastRead = System.currentTimeMillis();
// Save initial state for tuned updates
pCtx.state = getState(ctx);
1.3 +4 -4
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCDefinedFinderCommand.java
Index: JDBCDefinedFinderCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCDefinedFinderCommand.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JDBCDefinedFinderCommand.java 2000/08/24 10:56:36 1.2
+++ JDBCDefinedFinderCommand.java 2000/09/09 02:52:56 1.3
@@ -12,7 +12,7 @@
import java.sql.PreparedStatement;
-import org.jboss.ejb.plugins.jaws.deployment.Finder;
+import org.jboss.ejb.plugins.jaws.metadata.FinderMetaData;
/**
* JAWSPersistenceManager JDBCDefinedFinderCommand
@@ -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 JDBCDefinedFinderCommand extends JDBCFinderCommand
{
@@ -32,7 +32,7 @@
// Constructors --------------------------------------------------
- public JDBCDefinedFinderCommand(JDBCCommandFactory factory, Finder f)
+ public JDBCDefinedFinderCommand(JDBCCommandFactory factory, FinderMetaData f)
{
super(factory, f.getName());
@@ -62,7 +62,7 @@
// Construct SQL
String sql = "SELECT " + getPkColumnList() +
(f.getOrder().equals("") ? "" : ","+f.getOrder()) +
- " FROM " + metaInfo.getTableName() + " WHERE " + query;
+ " FROM " + jawsEntity.getTableName() + " WHERE " + query;
if (!f.getOrder().equals(""))
{
sql += " ORDER BY "+f.getOrder();
1.4 +5 -6
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCDestroyCommand.java
Index: JDBCDestroyCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCDestroyCommand.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JDBCDestroyCommand.java 2000/08/24 10:56:36 1.3
+++ JDBCDestroyCommand.java 2000/09/09 02:52:56 1.4
@@ -11,7 +11,6 @@
import java.sql.SQLException;
import org.jboss.ejb.plugins.jaws.JPMDestroyCommand;
-import org.jboss.ejb.plugins.jaws.MetaInfo;
/**
* JAWSPersistenceManager JDBCDestroyCommand
@@ -21,7 +20,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.3 $
+ * @version $Revision: 1.4 $
*/
public class JDBCDestroyCommand
extends JDBCUpdateCommand
@@ -34,7 +33,7 @@
super(factory, "Destroy");
// Drop table SQL
- String sql = "DROP TABLE " + metaInfo.getTableName();
+ String sql = "DROP TABLE " + jawsEntity.getTableName();
setSQL(sql);
}
@@ -42,7 +41,7 @@
public void execute()
{
- if (metaInfo.getRemoveTable())
+ if (jawsEntity.getRemoveTable())
{
// Remove it!
try
@@ -51,7 +50,7 @@
} catch (Exception e)
{
log.debug("Could not drop table " +
- metaInfo.getTableName() + ": " + e.getMessage());
+ jawsEntity.getTableName() + ": " + e.getMessage());
}
}
}
@@ -61,7 +60,7 @@
protected Object handleResult(int rowsAffected, Object argOrArgs)
throws Exception
{
- log.debug("Table "+metaInfo.getTableName()+" removed");
+ log.debug("Table "+jawsEntity.getTableName()+" removed");
return null;
}
1.2 +1 -1
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFindAllCommand.java
Index: JDBCFindAllCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFindAllCommand.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JDBCFindAllCommand.java 2000/08/06 02:03:50 1.1
+++ JDBCFindAllCommand.java 2000/09/09 02:52:56 1.2
@@ -15,7 +15,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.1 $
+ * @version $Revision: 1.2 $
*/
public class JDBCFindAllCommand extends JDBCFinderCommand
{
@@ -25,7 +25,7 @@
{
super(factory, "FindAll");
- String sql = "SELECT " + getPkColumnList() + " FROM " +
metaInfo.getTableName();
+ String sql = "SELECT " + getPkColumnList() + " FROM " +
jawsEntity.getTableName();
setSQL(sql);
}
1.5 +13 -32
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFindByCommand.java
Index: JDBCFindByCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFindByCommand.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- JDBCFindByCommand.java 2000/08/24 10:56:36 1.4
+++ JDBCFindByCommand.java 2000/09/09 02:52:56 1.5
@@ -13,11 +13,9 @@
import java.util.Iterator;
-import org.jboss.ejb.plugins.jaws.deployment.Finder;
-import org.jboss.ejb.plugins.jaws.CMPFieldInfo;
-import org.jboss.ejb.plugins.jaws.deployment.JawsCMPField;
import org.jboss.logging.Logger;
+import org.jboss.ejb.plugins.jaws.metadata.CMPFieldMetaData;
/**
* JAWSPersistenceManager JDBCFindByCommand
@@ -27,14 +25,14 @@
* @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.4 $
+ * @version $Revision: 1.5 $
*/
public class JDBCFindByCommand extends JDBCFinderCommand
{
// Attributes ----------------------------------------------------
// The meta-info for the field we are finding by
- private CMPFieldInfo fieldInfo;
+ private CMPFieldMetaData cmpField;
// Constructors --------------------------------------------------
@@ -48,20 +46,20 @@
// Find the meta-info for the field we want to find by
- fieldInfo = null;
- Iterator iter = metaInfo.getCMPFieldInfos();
+ cmpField = null;
+ Iterator iter = jawsEntity.getCMPFields();
- while (fieldInfo == null && iter.hasNext())
+ while (cmpField == null && iter.hasNext())
{
- CMPFieldInfo fi = (CMPFieldInfo)iter.next();
+ CMPFieldMetaData fi = (CMPFieldMetaData)iter.next();
if (cmpFieldName.equals(fi.getName().toLowerCase()))
{
- fieldInfo = fi;
+ cmpField = fi;
}
}
- if (fieldInfo == null)
+ if (cmpField == null)
{
throw new IllegalArgumentException(
"No finder for this method: " + finderMethod.getName());
@@ -70,20 +68,9 @@
// Compute SQL
String sql = "SELECT " + getPkColumnList() +
- " FROM "+metaInfo.getTableName()+ " WHERE ";
+ " FROM "+jawsEntity.getTableName()+ " WHERE ";
- if (fieldInfo.isEJBReference())
- {
- JawsCMPField[] cmpFields = fieldInfo.getForeignKeyCMPFields();
- for (int j = 0; j < cmpFields.length; j++)
- {
- sql += (j==0?"":" AND ") +
- fieldInfo.getColumnName() + "_" + cmpFields[j].getColumnName() +
"=?";
- }
- } else
- {
- sql += fieldInfo.getColumnName() + "=?";
- }
+ sql += cmpField.getColumnName() + "=?";
setSQL(sql);
}
@@ -95,15 +82,9 @@
{
Object[] args = (Object[])argOrArgs;
- if (fieldInfo != null)
+ if (cmpField != null)
{
- if (fieldInfo.isEJBReference())
- {
- setForeignKey(stmt, 1, fieldInfo, args[0]);
- } else
- {
- setParameter(stmt, 1, fieldInfo.getJDBCType(), args[0]);
- }
+ setParameter(stmt, 1, cmpField.getJDBCType(), args[0]);
}
}
}
1.4 +4 -4
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFindEntitiesCommand.java
Index: JDBCFindEntitiesCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFindEntitiesCommand.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JDBCFindEntitiesCommand.java 2000/08/26 19:37:03 1.3
+++ JDBCFindEntitiesCommand.java 2000/09/09 02:52:56 1.4
@@ -20,7 +20,7 @@
import org.jboss.ejb.EntityEnterpriseContext;
import org.jboss.ejb.plugins.jaws.JPMFindEntitiesCommand;
-import org.jboss.ejb.plugins.jaws.deployment.Finder;
+import org.jboss.ejb.plugins.jaws.metadata.FinderMetaData;
/**
* Keeps a map from finder name to specific finder command, and
@@ -31,7 +31,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.3 $
+ * @version $Revision: 1.4 $
*/
public class JDBCFindEntitiesCommand implements JPMFindEntitiesCommand
{
@@ -48,10 +48,10 @@
// Make commands for the defined finders
- Iterator definedFinders = factory.getMetaInfo().getFinders();
+ Iterator definedFinders = factory.getMetaData().getFinders();
while(definedFinders.hasNext())
{
- Finder f = (Finder)definedFinders.next();
+ FinderMetaData f = (FinderMetaData)definedFinders.next();
if ( !knownFinderCommands.containsKey(f.getName()) )
{
1.7 +15 -16
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFinderCommand.java
Index: JDBCFinderCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFinderCommand.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- JDBCFinderCommand.java 2000/09/09 02:25:00 1.6
+++ JDBCFinderCommand.java 2000/09/09 02:52:56 1.7
@@ -22,8 +22,8 @@
import javax.ejb.FinderException;
import org.jboss.ejb.EntityEnterpriseContext;
-import org.jboss.ejb.plugins.jaws.PkFieldInfo;
import org.jboss.ejb.plugins.jaws.JPMFindEntitiesCommand;
+import org.jboss.ejb.plugins.jaws.metadata.PkFieldMetaData;
/**
* Abstract superclass of finder commands that return collections.
@@ -33,7 +33,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.6 $
+ * @version $Revision: 1.7 $
*/
public abstract class JDBCFinderCommand
extends JDBCQueryCommand
@@ -72,24 +72,24 @@
protected Object handleResult(ResultSet rs, Object argOrArgs) throws Exception
{
Collection result = new ArrayList();
-
- if (metaInfo.hasCompositeKey())
+
+ if (jawsEntity.hasCompositeKey())
{
// Compound key
try
{
while (rs.next())
{
- Object pk = metaInfo.getPrimaryKeyClass().newInstance();
+ Object pk = jawsEntity.getPrimaryKeyClass().newInstance();
int i = 1; // parameter index
- Iterator it = metaInfo.getPkFieldInfos();
-
+ Iterator it = jawsEntity.getPkFields();
+
while (it.hasNext())
{
- PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
- Field pkField = pkFieldInfo.getPkField();
- pkField.set(pk, getResultObject(rs,
- i++,
+ PkFieldMetaData pkFieldMetaData = (PkFieldMetaData)it.next();
+ Field pkField = pkFieldMetaData.getPkField();
+ pkField.set(pk, getResultObject(rs,
+ i++,
pkField.getType()));
}
result.add(pk);
@@ -101,13 +101,12 @@
} else
{
// Primitive key
-
- Iterator it = metaInfo.getPkFieldInfos();
- PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
-
+ Iterator it = jawsEntity.getPkFields();
+ PkFieldMetaData pkFieldMetaData = (PkFieldMetaData)it.next();
+
while (rs.next())
{
- result.add(getResultObject(rs, 1, pkFieldInfo.getCMPField().getType()));
+ result.add(getResultObject(rs, 1,
pkFieldMetaData.getCMPField().getType()));
}
}
1.5 +16 -34
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCInitCommand.java
Index: JDBCInitCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCInitCommand.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- JDBCInitCommand.java 2000/09/07 13:54:17 1.4
+++ JDBCInitCommand.java 2000/09/09 02:52:56 1.5
@@ -16,9 +16,7 @@
import java.sql.Statement;
import org.jboss.ejb.plugins.jaws.JPMInitCommand;
-import org.jboss.ejb.plugins.jaws.CMPFieldInfo;
-import org.jboss.ejb.plugins.jaws.MetaInfo;
-import org.jboss.ejb.plugins.jaws.deployment.JawsCMPField;
+import org.jboss.ejb.plugins.jaws.metadata.CMPFieldMetaData;
/**
* JAWSPersistenceManager JDBCInitCommand
@@ -28,7 +26,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.4 $
+ * @version $Revision: 1.5 $
*/
public class JDBCInitCommand
extends JDBCUpdateCommand
@@ -41,33 +39,18 @@
super(factory, "Init");
// Create table SQL
- String sql = "CREATE TABLE " + metaInfo.getTableName() + " (";
-
- Iterator it = metaInfo.getCMPFieldInfos();
+ String sql = "CREATE TABLE " + jawsEntity.getTableName() + " (";
+
+ Iterator it = jawsEntity.getCMPFields();
boolean first = true;
while (it.hasNext())
{
- CMPFieldInfo fieldInfo = (CMPFieldInfo)it.next();
-
- if (fieldInfo.isEJBReference())
- {
- JawsCMPField[] pkFields = fieldInfo.getForeignKeyCMPFields();
-
- for (int i = 0; i < pkFields.length; i++)
- {
- sql += (first ? "" : ",") +
- fieldInfo.getColumnName() + "_" +
- pkFields[i].getColumnName() + " " +
- pkFields[i].getSqlType();
- first = false;
- }
- } else
- {
- sql += (first ? "" : ",") +
- fieldInfo.getColumnName() + " " +
- fieldInfo.getSQLType();
- first = false;
- }
+ CMPFieldMetaData cmpField = (CMPFieldMetaData)it.next();
+
+ sql += (first ? "" : ",") +
+ cmpField.getColumnName() + " " +
+ cmpField.getSQLType();
+ first = false;
}
sql += ")";
@@ -80,7 +63,7 @@
public void execute() throws Exception
{
// Create table if necessary
- if (metaInfo.getCreateTable())
+ if (jawsEntity.getCreateTable())
{
boolean created = false;
Connection con = null;
@@ -89,7 +72,7 @@
try {
con = getConnection();
st = con.createStatement();
- rs = st.executeQuery("SELECT COUNT(*) FROM
"+metaInfo.getTableName()+" WHERE 0=1");
+ rs = st.executeQuery("SELECT COUNT(*) FROM
"+jawsEntity.getTableName()+" WHERE 0=1");
if(rs.next())
created = true;
rs.close();
@@ -108,7 +91,7 @@
// Try to create it
if(created) {
- System.out.println("Table '"+metaInfo.getTableName()+"' already
exists!");
+ System.out.println("Table '"+jawsEntity.getTableName()+"' already
exists!");
} else {
try
{
@@ -116,7 +99,7 @@
} catch (Exception e)
{
log.debug("Could not create table " +
- metaInfo.getTableName() + ": " + e.getMessage());
+ jawsEntity.getTableName() + ": " + e.getMessage());
}
}
}
@@ -127,8 +110,7 @@
protected Object handleResult(int rowsAffected, Object argOrArgs)
throws Exception
{
- log.debug("Table " + metaInfo.getTableName() + " created");
-
+ log.debug("Table " + jawsEntity.getTableName() + " created");
return null;
}
}
1.5 +22 -109
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCLoadEntityCommand.java
Index: JDBCLoadEntityCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCLoadEntityCommand.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- JDBCLoadEntityCommand.java 2000/09/04 16:17:54 1.4
+++ JDBCLoadEntityCommand.java 2000/09/09 02:52:56 1.5
@@ -22,9 +22,8 @@
import org.jboss.ejb.EntityEnterpriseContext;
import org.jboss.ejb.plugins.jaws.JAWSPersistenceManager;
import org.jboss.ejb.plugins.jaws.JPMLoadEntityCommand;
-import org.jboss.ejb.plugins.jaws.CMPFieldInfo;
-import org.jboss.ejb.plugins.jaws.deployment.JawsEntity;
-import org.jboss.ejb.plugins.jaws.deployment.JawsCMPField;
+import org.jboss.ejb.plugins.jaws.metadata.CMPFieldMetaData;
+import org.jboss.ejb.plugins.jaws.metadata.JawsEntityMetaData;
/**
* JAWSPersistenceManager JDBCLoadEntityCommand
@@ -34,7 +33,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.4 $
+ * @version $Revision: 1.5 $
*/
public class JDBCLoadEntityCommand
extends JDBCQueryCommand
@@ -48,34 +47,19 @@
// Select SQL
String sql = "SELECT ";
-
- Iterator it = metaInfo.getCMPFieldInfos();
+ Iterator it = jawsEntity.getCMPFields();
boolean first = true;
while (it.hasNext())
{
- CMPFieldInfo fieldInfo = (CMPFieldInfo)it.next();
-
- if (fieldInfo.isEJBReference())
- {
- JawsCMPField[] pkFields = fieldInfo.getForeignKeyCMPFields();
-
- for (int i = 0; i < pkFields.length; i++)
- {
- sql += (first ? "" : ",") +
- fieldInfo.getColumnName() + "_" +
- pkFields[i].getColumnName();
- first = false;
- }
- } else
- {
- sql += (first ? "" : ",") +
- fieldInfo.getColumnName();
- first = false;
- }
+ CMPFieldMetaData cmpField = (CMPFieldMetaData)it.next();
+
+ sql += (first ? "" : ",") +
+ cmpField.getColumnName();
+ first = false;
}
-
- sql += " FROM " + metaInfo.getTableName() +
+
+ sql += " FROM " + jawsEntity.getTableName() +
" WHERE " + getPkColumnWhereList();
setSQL(sql);
@@ -86,7 +70,7 @@
public void execute(EntityEnterpriseContext ctx)
throws RemoteException
{
- if ( !metaInfo.isReadOnly() || isTimedOut(ctx) )
+ if ( !jawsEntity.isReadOnly() || isTimedOut(ctx) )
{
try
{
@@ -119,92 +103,21 @@
// Set values
int idx = 1;
-
- Iterator iter = metaInfo.getCMPFieldInfos();
+
+ Iterator iter = jawsEntity.getCMPFields();
while (iter.hasNext())
{
- CMPFieldInfo fieldInfo = (CMPFieldInfo)iter.next();
-
- if (fieldInfo.isEJBReference())
- {
- // Create pk
- JawsCMPField[] pkFields = fieldInfo.getForeignKeyCMPFields();
- JawsEntity referencedEntity = (JawsEntity)pkFields[0].getBeanContext();
- Object pk;
- if (referencedEntity.getPrimaryKeyField().equals(""))
- {
- // Compound key
- pk =
factory.getContainer().getClassLoader().loadClass(referencedEntity.getPrimaryKeyClass()).newInstance();
- Field[] fields = pk.getClass().getFields();
- for(int j = 0; j < fields.length; j++)
- {
- Object val = getResultObject(rs, idx++, fields[j].getType());
- fields[j].set(pk, val);
-
- if (debug)
- {
- log.debug("Referenced pk field:" + val);
- }
- }
- } else
- {
- // Primitive key
- pk = getResultObject(rs, idx++, fieldInfo.getField().getType());
-
- if (debug)
- {
- log.debug("Referenced pk:" + pk);
- }
- }
-
- // Find referenced entity
- try
- {
- Object home = factory.getJavaCtx().lookup(fieldInfo.getSQLType());
- Method[] homeMethods = home.getClass().getMethods();
- Method finder = null;
-
- // We have to locate fBPK iteratively since we don't
- // really know the pk-class
- for (int j = 0; j < homeMethods.length; j++)
- {
- if (homeMethods[j].getName().equals("findByPrimaryKey"))
- {
- finder = homeMethods[j];
- break;
- }
- }
-
- if (finder == null)
- {
- throw new NoSuchMethodException(
- "FindByPrimaryKey method not found in home interface");
- }
-
- log.debug("PK=" + pk);
- Object ref = finder.invoke(home, new Object[] { pk });
-
- // Set found entity
- setCMPFieldValue(ctx.getInstance(), fieldInfo, ref);
- } catch (Exception e)
- {
- throw new ServerException("Could not restore reference", e);
- }
- } else
- {
- // Load primitive
-
- // TODO: this probably needs to be fixed for BLOB's etc.
- setCMPFieldValue(ctx.getInstance(),
- fieldInfo,
- getResultObject(rs, idx++,
fieldInfo.getField().getType()));
- }
+ CMPFieldMetaData cmpField = (CMPFieldMetaData)iter.next();
+
+ setCMPFieldValue(ctx.getInstance(),
+ cmpField,
+ getResultObject(rs, idx++,
cmpField.getField().getType()));
}
// Store state to be able to do tuned updates
JAWSPersistenceManager.PersistenceContext pCtx =
(JAWSPersistenceManager.PersistenceContext)ctx.getPersistenceContext();
- if (metaInfo.isReadOnly()) pCtx.lastRead = System.currentTimeMillis();
+ if (jawsEntity.isReadOnly()) pCtx.lastRead = System.currentTimeMillis();
pCtx.state = getState(ctx);
return null;
@@ -216,7 +129,7 @@
{
JAWSPersistenceManager.PersistenceContext pCtx =
(JAWSPersistenceManager.PersistenceContext)ctx.getPersistenceContext();
-
- return (System.currentTimeMillis() - pCtx.lastRead) >
metaInfo.getReadOnlyTimeOut();
+
+ return (System.currentTimeMillis() - pCtx.lastRead) >
jawsEntity.getReadOnlyTimeOut();
}
}
1.4 +2 -2
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCRemoveEntityCommand.java
Index: JDBCRemoveEntityCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCRemoveEntityCommand.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JDBCRemoveEntityCommand.java 2000/08/24 10:56:37 1.3
+++ JDBCRemoveEntityCommand.java 2000/09/09 02:52:56 1.4
@@ -24,7 +24,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.3 $
+ * @version $Revision: 1.4 $
*/
public class JDBCRemoveEntityCommand
extends JDBCUpdateCommand
@@ -37,7 +37,7 @@
super(factory, "Remove");
// Remove SQL
- String sql = "DELETE FROM " + metaInfo.getTableName() +
+ String sql = "DELETE FROM " + jawsEntity.getTableName() +
" WHERE "+getPkColumnWhereList();
setSQL(sql);
}
1.5 +18 -40
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCStoreEntityCommand.java
Index: JDBCStoreEntityCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCStoreEntityCommand.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- JDBCStoreEntityCommand.java 2000/08/24 10:56:37 1.4
+++ JDBCStoreEntityCommand.java 2000/09/09 02:52:56 1.5
@@ -19,9 +19,7 @@
import org.jboss.ejb.EntityEnterpriseContext;
import org.jboss.ejb.plugins.jaws.JAWSPersistenceManager;
import org.jboss.ejb.plugins.jaws.JPMStoreEntityCommand;
-import org.jboss.ejb.plugins.jaws.CMPFieldInfo;
-import org.jboss.ejb.plugins.jaws.PkFieldInfo;
-import org.jboss.ejb.plugins.jaws.deployment.JawsCMPField;
+import org.jboss.ejb.plugins.jaws.metadata.CMPFieldMetaData;
/**
* JAWSPersistenceManager JDBCStoreEntityCommand
@@ -32,7 +30,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.4 $
+ * @version $Revision: 1.5 $
*/
public class JDBCStoreEntityCommand
extends JDBCUpdateCommand
@@ -43,7 +41,7 @@
public JDBCStoreEntityCommand(JDBCCommandFactory factory)
{
super(factory, "Store");
- boolean tuned = metaInfo.hasTunedUpdates();
+ boolean tuned = jawsEntity.hasTunedUpdates();
// If we don't have tuned updates, create static SQL
if (!tuned)
@@ -63,7 +61,7 @@
{
// Check for read-only
// JF: Shouldn't this throw an exception?
- if (metaInfo.isReadOnly())
+ if (jawsEntity.isReadOnly())
{
return;
}
@@ -74,7 +72,7 @@
boolean dirty = false;
- boolean tuned = metaInfo.hasTunedUpdates();
+ boolean tuned = jawsEntity.hasTunedUpdates();
// For tuned updates, need to see which fields have changed
@@ -113,7 +111,7 @@
*/
protected String getSQL(Object argOrArgs) throws Exception
{
- boolean tuned = metaInfo.hasTunedUpdates();
+ boolean tuned = jawsEntity.hasTunedUpdates();
return tuned ? makeSQL(argOrArgs) : super.getSQL(argOrArgs);
}
@@ -122,24 +120,18 @@
throws Exception
{
ExecutionState es = (ExecutionState)argOrArgs;
- boolean tuned = metaInfo.hasTunedUpdates();
+ boolean tuned = jawsEntity.hasTunedUpdates();
int idx = 1;
- Iterator iter = metaInfo.getCMPFieldInfos();
+ Iterator iter = jawsEntity.getCMPFields();
int i = 0;
while (iter.hasNext())
{
- CMPFieldInfo fieldInfo = (CMPFieldInfo)iter.next();
+ CMPFieldMetaData cmpField = (CMPFieldMetaData)iter.next();
if (!tuned || es.dirtyField[i])
{
- if (fieldInfo.isEJBReference())
- {
- idx = setForeignKey(stmt, idx, fieldInfo, es.currentState[i]);
- } else
- {
- setParameter(stmt, idx++, fieldInfo.getJDBCType(),
es.currentState[i]);
- }
+ setParameter(stmt, idx++, cmpField.getJDBCType(), es.currentState[i]);
}
i++;
@@ -152,7 +144,7 @@
throws Exception
{
ExecutionState es = (ExecutionState)argOrArgs;
- boolean tuned = metaInfo.hasTunedUpdates();
+ boolean tuned = jawsEntity.hasTunedUpdates();
if (tuned)
{
@@ -178,35 +170,21 @@
protected String makeSQL(Object argOrArgs)
{
ExecutionState es = (ExecutionState)argOrArgs; // NB: null if tuned
- boolean tuned = metaInfo.hasTunedUpdates();
+ boolean tuned = jawsEntity.hasTunedUpdates();
- String sql = "UPDATE "+metaInfo.getTableName()+" SET ";
- Iterator iter = metaInfo.getCMPFieldInfos();
+ String sql = "UPDATE "+jawsEntity.getTableName()+" SET ";
+ Iterator iter = jawsEntity.getCMPFields();
int i = 0;
boolean first = true;
while (iter.hasNext())
{
- CMPFieldInfo fieldInfo = (CMPFieldInfo)iter.next();
+ CMPFieldMetaData cmpField = (CMPFieldMetaData)iter.next();
if (!tuned || es.dirtyField[i++])
{
- if (fieldInfo.isEJBReference())
- {
- JawsCMPField[] pkFields = fieldInfo.getForeignKeyCMPFields();
-
- for (int j = 0; j < pkFields.length; j++)
- {
- sql += (first?"":",") +
- fieldInfo.getColumnName()+"_"+pkFields[j].getColumnName()+
- "=?";
- first = false;
- }
- } else
- {
- sql += (first?"":",") +
- fieldInfo.getColumnName() + "=?";
- first = false;
- }
+ sql += (first?"":",") +
+ cmpField.getColumnName() + "=?";
+ first = false;
}
}
sql += " WHERE "+getPkColumnWhereList();