/* * Created on Feb 21, 2004 * * To change the template for this generated file go to Window - Preferences - * Java - Code Generation - Code and Comments */ package context.arch.logging; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import org.hibernate.Session; import org.hibernate.Transaction; import context.arch.enactor.EnactorParameter; import context.arch.enactor.EnactorReference; import context.arch.logging.hibernate.ERParameter; import context.arch.logging.hibernate.ERReference; import context.arch.logging.hibernate.EnactorRegistration; /** * @author Marti Motoyama * * To change the template for this generated type comment go to Window - * Preferences - Java - Code Generation - Code and Comments */ public class EnactorRegistrationLogger { private static EnactorRegistrationLogger ERLogger; protected EnactorRegistrationLogger() { } public static EnactorRegistrationLogger getEnactorRegistrationLogger() { if (ERLogger == null) { synchronized (EnactorRegistrationLogger.class) { ERLogger = new EnactorRegistrationLogger(); ERLogger.initialize(); } } return ERLogger; } private void initialize() { } public void insertEnactorRegistrationEntry ( String in_enactorId, Collection<EnactorParameter> in_enactorParameters, Collection<EnactorReference> in_enactorReferences) throws LoggingException { Session session = HibernateUtils.getNewSession(); if (session == null) return; EnactorRegistration enactorRegistrationEntry = new EnactorRegistration(); ArrayList<ERParameter> enactorParameters = new ArrayList<ERParameter>(); ArrayList<ERReference> enactorReferences = new ArrayList<ERReference>(); for (EnactorParameter ep : in_enactorParameters) { ERParameter erParameter = new ERParameter(); erParameter.setEnactorRegistration(enactorRegistrationEntry); erParameter.setParametername(ep.getName()); enactorParameters.add(erParameter); } for (EnactorReference er : in_enactorReferences) { ERReference erReference = new ERReference(); erReference.setEnactorRegistration(enactorRegistrationEntry); // erReference.setDescriptionquery(er.getEnactor().getDescriptionQuery().toString()); erReference.setDescriptionquery(er.getConditionQuery().toString()); // TODO: need to fix to include both rulequery and desc query enactorReferences.add(erReference); } enactorRegistrationEntry.setEnactorid(in_enactorId); enactorRegistrationEntry.setRegistrationtime(new Date()); Transaction tx = null; try{ tx = session.beginTransaction(); session.save(enactorRegistrationEntry); for (int i = 0; i < enactorParameters.size(); i++){ session.save(enactorParameters.get(i)); } for (int i = 0; i < enactorReferences.size(); i++){ session.save(enactorReferences.get(i)); } tx.commit(); // flush the Session and commit the transaction } catch(Exception e){ try{ if (tx != null) tx.rollback(); // rollback the transaction }catch(Exception x){ throw new LoggingException(x); } } finally{ try{ session.close(); }catch (Exception e){ throw new LoggingException(e); } } } }