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
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
00065 JdbcMapping jm = jEnt.getJdbcMapping();
00066 if (jm == null) {
00067 throw new DeploymentDescException("jdbc-mapping missing for bean " + ent.getEjbName());
00068 }
00069
00070
00071 dsname = jm.getJndiName();
00072
00073
00074 if (jm.getJdbcTableName() != null) {
00075 if (jm.getJdbcTableName().length() != 0) {
00076 jdbcTableName = jm.getJdbcTableName();
00077 }
00078 }
00079 if (jdbcTableName == null) {
00080
00081 jdbcTableName = getAbstractSchemaName().toUpperCase() + "_";
00082 }
00083
00084
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
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
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 }