package com.fp.hbm.bgenerator; import java.util.ArrayList; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.SQLQuery; import com.fp.persistence.commondb.exception.CommondbException; import com.fp.hbm.helper.PersistenceHelperHQL; import com.fp.hbm.persistence.TgeneEntity; import com.fp.hbm.persistence.TgeneEntityKey; import com.fp.hbm.persistence.TgeneFields; public class Reference { private TgeneFields fieldReference; private TgeneEntity reference; private String basePac; private List cols=new ArrayList(); public Reference(TgeneFields pFields,String pBasePac) throws HibernateException, CommondbException { this.basePac=pBasePac; this.fieldReference = pFields; this.reference=(TgeneEntity)PersistenceHelperHQL.get(TgeneEntity.class, new TgeneEntityKey(fieldReference.getFktname(),fieldReference.getFkentity())); this.fillCols(); } @SuppressWarnings("unchecked") private void fillCols() throws HibernateException, CommondbException{ String sql=""; if(this.fieldReference.getType().compareTo("S")==0){ sql="select t.column_name as col from user_cons_columns t " + "where t.constraint_name = (select constraint_name " + "from user_constraints t2 " + "where t2.table_name=:table and t2.constraint_type='R' " + "and t2.r_constraint_name =( " + "select constraint_name from user_constraints t1 where t1.table_name=:fk and t1.constraint_type='P')) order by t.position"; SQLQuery qry=PersistenceHelperHQL.getSession().createSQLQuery(sql); qry.setString("fk", fieldReference.getFktname()); qry.setString("table", fieldReference.getPk().getTname()); cols=(List)qry.list(); }else{ if(fieldReference.getFkconstraint()==null){ throw new CommondbException("MP002","Se debe definir el nombre del constraint a utilizar "+fieldReference.getPk().getField()); } sql="select t.column_name as col from user_cons_columns t where t.constraint_name =:cons order by t.position"; SQLQuery qry=PersistenceHelperHQL.getSession().createSQLQuery(sql); qry.setString("cons", fieldReference.getFkconstraint()); cols=(List)qry.list(); } } public TgeneFields getFieldReference() { return fieldReference; } public List getCols() { return cols; } public List getImport(){ List data=new ArrayList(); data.add("import "+this.basePac+"."+this.reference.getPac()+"."+this.reference.getPk().getEntity()+";"); if(this.fieldReference.getType().compareTo("M")==0){ data.add("import java.util.Set;"); } return data; } public String getJava(){ String data=""; String name=this.fieldReference.getPk().getField(); name=name.substring(0,1).toUpperCase()+name.substring(1); if(this.fieldReference.getType().compareTo("S")==0){ data+="private "+this.reference.getPk().getEntity()+" "+this.fieldReference.getPk().getField()+";\n"; data+="public "+this.reference.getPk().getEntity()+" get"+name+"(){\n"; data+=" return "+this.fieldReference.getPk().getField()+";\n"; data+="}\n"; data+="public void set"+name+"("+this.reference.getPk().getEntity()+" p"+name+"){\n"; data+=" "+this.fieldReference.getPk().getField()+"=p"+name+";\n"; data+="}\n"; }else{ data+="private Set<"+this.reference.getPk().getEntity()+"> "+this.fieldReference.getPk().getField()+";\n"; data+="public Set<"+this.reference.getPk().getEntity()+"> get"+name+"(){\n"; data+=" return "+this.fieldReference.getPk().getField()+";\n"; data+="}\n"; data+="public void set"+name+"(Set<"+this.reference.getPk().getEntity()+"> p"+name+"){\n"; data+=" "+this.fieldReference.getPk().getField()+"=p"+name+";\n"; data+="}\n"; } return data; } public String getXML(){ String data=""; String name=this.fieldReference.getPk().getField(); name=name.substring(0,1).toUpperCase()+name.substring(1); if(this.fieldReference.getType().compareTo("S")==0){ data+="\n"; for (String f : this.cols) { data+= " \n"; } data+= "\n"; }else{ data+="\n"; data+="\n"; for (String f : this.cols) { data+= " \n"; } data+="\n"; data+="\n"; data+=""; } return data; } }