maia/.svn/pristine/af/af0389ae7a1254a42863d06cf74...

146 lines
5.5 KiB
Plaintext
Executable File

package com.fp.bpm.save;
import java.util.ArrayList;
import java.util.List;
import com.fp.common.helper.Constant;
import com.fp.common.logger.APPLogger;
import com.fp.dto.AbstractDataTransport;
import com.fp.dto.Response;
import com.fp.dto.hb.HibernateBean;
import com.fp.dto.save.SaveBean;
import com.fp.dto.save.SaveRequest;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.commondb.exception.CommondbException;
/**
* Clase que se encarga de persistir en la base de datos los beans.
*
* @author Jorge Vaca
* @version 2.1
*/
public class Save {
/**
* Recorre la lista de orden de envio de beans a la base, Obtiene el savebean y ejecuta el dml.
*
* @param pSaveRequest Objeto con los beans a almacenar en la base de datos.
* @param pResponse Respuesta del proceso.
* @return boolean
* @throws CommondbException
* @throws Exception
*/
public boolean process(SaveRequest pSaveRequest, Response pResponse) throws CommondbException, Exception {
List<String> lOrderPersistentBeans = pSaveRequest.getLOrderPersistentBeans();
for (String key : lOrderPersistentBeans) {
Object obj = pSaveRequest.get(key);
if (obj instanceof SaveBean) {
APPLogger.getLogger().debug("Request de Mantenimiento recibido: " + pSaveRequest);
SaveBean sbean = (SaveBean) obj;
if (sbean.isSave()) {
this.saveBean(sbean);
}
}
}
int size = lOrderPersistentBeans.size();
for (int i = size; i > 0; i--) {
Object obj = pSaveRequest.get(lOrderPersistentBeans.get(i - 1));
if (obj instanceof SaveBean) {
APPLogger.getLogger().debug("Request de Mantenimiento recibido: " + pSaveRequest);
SaveBean sbean = (SaveBean) obj;
this.deleteBean(sbean);
}
}
return true;
}
/**
* Ejecuta sentencias DML contra la base de datos.
*
* @param pSaveBean Referencia a SaveBean
* @throws CommondbException
*/
private void saveBean(SaveBean pSaveBean) throws CommondbException, Exception {
try {
if (pSaveBean.getModifiedObject() != null) {
APPLogger.getLogger().debug("Bean para mantenimiento: (saveBean) " + pSaveBean);
Object expire = ((AbstractDataTransport) pSaveBean.getModifiedObject()).get("expire");
if (expire != null && Constant.ifYes(expire.toString())) {
PersistenceHelper.expire((HibernateBean) pSaveBean.getModifiedObject());
} else {
Object isnew = ((AbstractDataTransport) pSaveBean.getModifiedObject()).get("isnew");
if (isnew != null && Constant.ifYes(isnew.toString())) {
PersistenceHelper.save((HibernateBean) pSaveBean.getModifiedObject());
} else {
PersistenceHelper.saveOrUpdate((HibernateBean) pSaveBean.getModifiedObject());
}
}
}
for (Object obj : pSaveBean.getModifiedRecords()) {
APPLogger.getLogger().debug("Bean para mantenimiento de un List: (saveBean) " + pSaveBean);
Object expire = ((AbstractDataTransport) obj).get("expire");
if (expire != null && Constant.ifYes(expire.toString())) {
PersistenceHelper.expire((HibernateBean) obj);
} else {
Object isnew = ((AbstractDataTransport) obj).get("isnew");
if (isnew != null && Constant.ifYes(isnew.toString())) {
PersistenceHelper.save((HibernateBean) obj);
} else {
PersistenceHelper.saveOrUpdate((HibernateBean) obj);
}
}
}
} catch (ClassCastException e) {
return;
// En este caso no hacer nada si no es un bean persistente.
}
}
/**
* Ejecuta sentencias DML contra la base de datos.
*
* @param pSaveBean Referencia a SaveBean
* @throws CommondbException
*/
public void deleteBean(SaveBean pSaveBean) throws CommondbException, Exception {
try {
if (pSaveBean.getDeletedObject() != null) {
APPLogger.getLogger().debug("Bean para delete: (saveBean) " + pSaveBean);
PersistenceHelper.delete((HibernateBean) pSaveBean.getDeletedObject());
}
for (Object obj : pSaveBean.getDeletedRecords()) {
APPLogger.getLogger().debug("Bean para delete de un List: (saveBean) " + pSaveBean);
PersistenceHelper.delete((HibernateBean) obj);
}
} catch (ClassCastException e) {
return;
// En este caso no hacer nada si no es un bean persistente.
}
}
/**
* Metodo que elimina los bean que ya se gha realizado commit.
*
* @throws Exception
*/
public static void cleanSaveBeans(SaveRequest pSaveRequest) throws Exception {
List<String> lOrderPersistentBeans = pSaveRequest.getLOrderPersistentBeans();
List<String> ldata = new ArrayList<String>();
for (String key : lOrderPersistentBeans) {
ldata.add(key);
}
for (String key : ldata) {
Object obj = pSaveRequest.get(key);
if (obj instanceof SaveBean) {
lOrderPersistentBeans.remove(((SaveBean) obj).getBeanAlias());
}
}
}
}