maia/.svn/pristine/0f/0fc890c5522242f65b4e05d5e03...

138 lines
5.5 KiB
Plaintext
Executable File

package com.fp.person.rules.save;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.joda.time.DateTime;
import com.fp.dto.rules.TransactionRule;
import com.fp.dto.save.SaveRequest;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.commondb.helper.FormatDates;
import com.fp.persistence.pcustomer.company.TcustCompany;
import com.fp.persistence.pcustomer.company.TcustCompanyKey;
import com.fp.persistence.pcustomer.gene.TcustPerson;
import com.fp.persistence.pcustomer.gene.TcustPersonAddress;
import com.fp.persistence.pcustomer.gene.TcustPersonAddressKey;
import com.fp.persistence.pcustomer.gene.TcustPersonDetail;
import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey;
import com.fp.persistence.pcustomer.gene.TcustPersonPhone;
import com.fp.persistence.pcustomer.gene.TcustPersonPhoneKey;
import com.fp.sessionbeans.helper.Sequence;
public class JuridicalPerson extends TransactionRule {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
@Override
public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception {
try {
TcustPersonDetail detallesPersona=(TcustPersonDetail)pSaveRequest.get("PERSON");
TcustCompany company=(TcustCompany)pSaveRequest.get("COMPANY");
List<TcustPersonAddress> direcciones=(List<TcustPersonAddress>)pSaveRequest.get("ADDRESSES");
List<TcustPersonPhone> telefonos=(List<TcustPersonPhone>)pSaveRequest.get("PHONES");
//Persistiendo el TCUSTPERSON
TcustPersonDetailKey pkDetallesPersona=new TcustPersonDetailKey();
Calendar calendarioDateto=Calendar.getInstance();
calendarioDateto.set(Calendar.YEAR, 2999);
calendarioDateto.set(Calendar.MONTH, Calendar.DECEMBER);
calendarioDateto.set(Calendar.DAY_OF_MONTH,31);
calendarioDateto.set(Calendar.MILLISECOND, 0);
calendarioDateto.set(Calendar.SECOND, 0);
calendarioDateto.set(Calendar.MINUTE, 0);
calendarioDateto.set(Calendar.HOUR, 0);
//Caso en que la persona es nueva
if(detallesPersona.isnew && (detallesPersona.getPk()==null || detallesPersona.getPk().getPersoncode()==null)){
Sequence sequence = new Sequence();
Integer personcode=Integer.valueOf(sequence.getNextValue("PERSONCODE").toString());
TcustPerson persona=new TcustPerson();
if(personcode!=null){
persona.setPk(personcode);
pkDetallesPersona.setPersoncode(personcode);
//PersistenceHelper.getEntityManager().persist(persona);
}
pkDetallesPersona.setDateto(FormatDates.getDefaultExpiryTimestamp());
detallesPersona.setPk(pkDetallesPersona);
}else{
pkDetallesPersona=detallesPersona.getPk();
}
//Persistiendo el TCUSTPERSONDETAIL
if(!detallesPersona.isnew){
detallesPersona=(TcustPersonDetail)PersistenceHelper.getEntityManager().merge(detallesPersona);
}
//PersistenceHelper.getEntityManager().persist(detallesPersona);
//Persistiendo el TCUSTCOMPANY
//Caso en que la compannia es nueva
// if(company.isnew && (company.getPk()==null || company.getPk().getPersoncode()==null)){
TcustCompanyKey pkJuridica=new TcustCompanyKey();
// pkJuridica.setDateto(new Timestamp(calendarioDateto.getTimeInMillis()));
pkJuridica.setDateto(FormatDates.getDefaultExpiryTimestamp());
pkJuridica.setPersoncode(pkDetallesPersona.getPersoncode());
company.setPk(pkJuridica);
// }
/* if(!company.isnew){
company=(TcustCompany)PersistenceHelper.getEntityManager().merge(company);
}*/
// PersistenceHelper.getEntityManager().persist(company);
//Persistiendo las direcciones
for (TcustPersonAddress direccion : direcciones) {
if(direccion.getPk()!=null && direccion.getPk().getAddressnumber()!=null && direccion.getPk().getPersoncode()!=null && direccion.getPk().getDateto()!=null){
direccion=PersistenceHelper.getEntityManager().merge(direccion);
//PersistenceHelper.getEntityManager().persist(direccion);
}else{
TcustPersonAddressKey pkDireccion=new TcustPersonAddressKey();
pkDireccion.setPersoncode(pkDetallesPersona.getPersoncode());
pkDireccion.setDateto(FormatDates.getDefaultExpiryTimestamp());
direccion.setPk(pkDireccion);
direccion.setDatefrom(new Timestamp(Calendar.getInstance().getTimeInMillis()));
PersistenceHelper.getEntityManager().persist(direccion);
}
}
//Persistiendo los telefonos
for (TcustPersonPhone telefono : telefonos) {
if(telefono.getPk()!=null && telefono.getPk().getPersoncode()!=null){
telefono=PersistenceHelper.getEntityManager().merge(telefono);
//PersistenceHelper.getEntityManager().persist(telefono);
}else{
TcustPersonPhoneKey pkTelefono=new TcustPersonPhoneKey();
pkTelefono.setPersoncode(pkDetallesPersona.getPersoncode());
pkTelefono.setDateto(FormatDates.getDefaultExpiryTimestamp());
telefono.setPk(pkTelefono);
telefono.setDatefrom(new Timestamp(Calendar.getInstance().getTimeInMillis()));
PersistenceHelper.getEntityManager().persist(telefono);
}
}
// PersistenceHelper.getEntityManager().flush();
} catch (Exception e) {
return pSaveRequest;
}
return pSaveRequest;
}
@Override
public SaveRequest reverseProcess(SaveRequest arg0) throws Exception {
return arg0;
}
}