63 lines
2.1 KiB
Plaintext
Executable File
63 lines
2.1 KiB
Plaintext
Executable File
package com.fp.persistence.commondb;
|
|
|
|
import com.fp.common.exception.ExceptionHandler;
|
|
import com.fp.common.logger.APPLogger;
|
|
import com.fp.dto.hb.HibernateBean;
|
|
import com.fp.persistence.commondb.data.SessionData;
|
|
import com.fp.persistence.commondb.data.ThreadFacade;
|
|
|
|
/**
|
|
* Clase que permite grabar o actualizar información en la base de datos en una sesión de base de datos independiente a
|
|
* la utiliza en la ejecución de una transacción..
|
|
*
|
|
* @version 2.1
|
|
*/
|
|
public class NestedSave extends Thread {
|
|
private final HibernateBean[] bean;
|
|
|
|
private final Integer company;
|
|
|
|
private boolean merge;
|
|
|
|
public NestedSave(Integer pCompany, HibernateBean... pBean) {
|
|
bean = pBean;
|
|
company = pCompany;
|
|
}
|
|
|
|
public NestedSave(Integer pCompany, boolean merge, HibernateBean... pBean) {
|
|
bean = pBean;
|
|
company = pCompany;
|
|
this.merge = merge;
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
try {
|
|
SessionData s = new SessionData();
|
|
s.setCompany(company);
|
|
ThreadFacade.setSaveRequest(s);
|
|
PersistenceHelper.setEntityManager(PersistenceManager.getInstance().createEntityManagerLocal());
|
|
PersistenceHelper.beginNewTransaction();
|
|
for (HibernateBean b : bean) {
|
|
if (!merge) {
|
|
APPLogger.getLogger().info("Inserta registro de auditoria");
|
|
PersistenceHelper.getEntityManager().detach(b);
|
|
PersistenceHelper.save(b);
|
|
} else {
|
|
PersistenceHelper.getEntityManager().merge(b);
|
|
}
|
|
|
|
}
|
|
PersistenceHelper.commitNewTransaction();
|
|
} catch (Exception e) {
|
|
PersistenceHelper.rollbackNewTransaction();
|
|
ExceptionHandler eh = new ExceptionHandler(e, "es");
|
|
String usrmsg = eh.getUserMessage();
|
|
APPLogger.getLogger().error("User Message:==>\n" + usrmsg);
|
|
APPLogger.getLogger().error("Stack trace:==>\n" + eh.getStackTrace());
|
|
} finally {
|
|
PersistenceHelper.closeSession();
|
|
}
|
|
}
|
|
}
|