EntityJdbcCmp2Desc.java

00001 
00027 package org.objectweb.jonas_ejb.deployment.api;
00028 
00029 import java.util.Iterator;
00030 
00031 import org.objectweb.jonas_ejb.deployment.xml.*;
00032 import org.objectweb.jonas_lib.deployment.api.DeploymentDescException;
00033 import org.objectweb.jonas_lib.deployment.xml.JLinkedList;
00034 
00042 // TODO : Review this class, many methods are common with EntityJdbcCmp1Desc
00043 
00044 public class EntityJdbcCmp2Desc extends EntityCmp2Desc {
00045 
00046     protected String dsname;
00047     protected String jdbcTableName = null;
00048 
00053     public EntityJdbcCmp2Desc(ClassLoader classLoader,
00054                               Entity ent,
00055                               AssemblyDescriptor asd,
00056                               JonasEntity jEnt,
00057                               DeploymentDescEjb2 dc2d,
00058                               JLinkedList jMDRList,
00059                                           String fileName)
00060         throws DeploymentDescException {
00061 
00062         super(classLoader, ent, asd, jEnt, dc2d, jMDRList, fileName);
00063 
00064         // check for jdbcMapping
00065         JdbcMapping jm = jEnt.getJdbcMapping();
00066         if (jm == null) {
00067             throw new DeploymentDescException("jdbc-mapping missing for bean " + ent.getEjbName());
00068         }
00069 
00070         // jndi name of the datasource
00071         dsname = jm.getJndiName();
00072 
00073         // jdbc table name
00074         if (jm.getJdbcTableName() != null) {
00075             if (jm.getJdbcTableName().length() != 0) {
00076                 jdbcTableName = jm.getJdbcTableName();
00077             }
00078         }
00079         if (jdbcTableName == null) {
00080             // Default value
00081             jdbcTableName = getAbstractSchemaName().toUpperCase() + "_";
00082         }
00083 
00084         // Default mapping information for cmp fields
00085         for (Iterator i = fieldDesc.keySet().iterator();i.hasNext();) {
00086             String fn = (String) i.next();
00087             ((FieldJdbcDesc)(fieldDesc.get(fn))).setJdbcFieldName(fn + "_");
00088         }
00089 
00090         // mapping information for cmp fields from jonas DD
00091         for (Iterator i = jm.getCmpFieldJdbcMappingList().iterator();i.hasNext();) {
00092             CmpFieldJdbcMapping fm = (CmpFieldJdbcMapping) i.next();
00093             String fn = fm.getFieldName();
00094             String cn = fm.getJdbcFieldName();
00095             String ct = null;
00096             if (fm.getSqlType() != null) {
00097                 ct = fm.getSqlType();
00098             }
00099             FieldJdbcDesc fdesc = (FieldJdbcDesc) fieldDesc.get(fn);
00100             if (fdesc == null) {
00101                 throw new DeploymentDescException("field-name " + fn
00102                                                   + " listed in cmp-field-jdbc-mapping is not of cmp-field of bean " + ent.getEjbName());
00103             }
00104             fdesc.setJdbcFieldName(cn);
00105             if (ct != null) {
00106                 fdesc.setSqlType(ct);
00107             }
00108         }
00109         // Specific mapping for primary key auto generated (type = java.lang.Object) if tag <automatic-pk-field-name> is specified
00110         if (isUndefinedPK() && this.getJdbcAutomaticPkFieldName()!= null) {   
00111            ((FieldJdbcDesc)(fieldDesc.get("JONASAUTOPKFIELD"))).setJdbcFieldName(this.getJdbcAutomaticPkFieldName());   
00112         } 
00113     }
00114 
00118     protected FieldDesc newFieldDescInstance() {
00119         return new FieldJdbcDesc();
00120     }
00121 
00126     public String getDatasourceJndiName() {
00127         return dsname;
00128     }
00129 
00134     public String getJdbcTableName() {
00135         return jdbcTableName;
00136     }
00137 
00142     public String toString() {
00143         StringBuffer ret = new StringBuffer();
00144         ret.append(super.toString());
00145         ret.append("\ngetDatasourceJndiName()=" + getDatasourceJndiName());
00146         ret.append("\ngetJdbcTableName()=" + getJdbcTableName());
00147         return ret.toString();
00148     }
00149 
00150 
00151 }

Generated on Tue Feb 15 15:05:45 2005 for JOnAS by  doxygen 1.3.9.1