r1673 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher
Author: chatellier Date: 2008-12-15 11:42:44 +0000 (Mon, 15 Dec 2008) New Revision: 1673 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java Log: Add hibernate big hack to unset parameters topiaId Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2008-12-15 11:41:36 UTC (rev 1672) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2008-12-15 11:42:44 UTC (rev 1673) @@ -21,23 +21,9 @@ import static org.codelutin.i18n.I18n._; -import fr.ifremer.isisfish.IsisConfig; -import fr.ifremer.isisfish.IsisFish; -import fr.ifremer.isisfish.IsisFishRuntimeException; -import fr.ifremer.isisfish.aspect.AspectClassLoader; -import fr.ifremer.isisfish.aspect.Cache; -import fr.ifremer.isisfish.aspect.Trace; -import fr.ifremer.isisfish.datastore.SimulationStorage; -import fr.ifremer.isisfish.datastore.SimulatorStorage; -import fr.ifremer.isisfish.simulator.SimulationContext; -import fr.ifremer.isisfish.simulator.SimulationControl; -import fr.ifremer.isisfish.simulator.SimulationException; -import fr.ifremer.isisfish.simulator.SimulationExportResultWrapper; -import fr.ifremer.isisfish.simulator.SimulationListener; -import fr.ifremer.isisfish.simulator.SimulationParameter; -import fr.ifremer.isisfish.simulator.SimulationPreScript; -import fr.ifremer.isisfish.simulator.Simulator; import java.io.File; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import java.net.MalformedURLException; import java.net.URL; import java.rmi.RemoteException; @@ -45,6 +31,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; + import org.apache.commons.lang.time.DurationFormatUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -56,6 +43,24 @@ import org.codelutin.util.ObjectUtil; import org.codelutin.util.StringUtil; +import fr.ifremer.isisfish.IsisConfig; +import fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.IsisFishRuntimeException; +import fr.ifremer.isisfish.aspect.AspectClassLoader; +import fr.ifremer.isisfish.aspect.Cache; +import fr.ifremer.isisfish.aspect.Trace; +import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.datastore.SimulatorStorage; +import fr.ifremer.isisfish.rule.Rule; +import fr.ifremer.isisfish.simulator.SimulationContext; +import fr.ifremer.isisfish.simulator.SimulationControl; +import fr.ifremer.isisfish.simulator.SimulationException; +import fr.ifremer.isisfish.simulator.SimulationExportResultWrapper; +import fr.ifremer.isisfish.simulator.SimulationListener; +import fr.ifremer.isisfish.simulator.SimulationParameter; +import fr.ifremer.isisfish.simulator.SimulationPreScript; +import fr.ifremer.isisfish.simulator.Simulator; + /** * Fait une simulation dans la meme jvm * @@ -229,6 +234,26 @@ // forceReload, save all modification in parameter and reread it parameters = simulation.getForceReloadParameter(); + // Rule modification + List<Rule> rules = parameters.getRules(); + for (Rule rule : rules) { + // FIXME fix hibernate bug + // org.hibernate.HibernateException: Found shared references to a collection + // to not have same loaded entity into different context ! + Field[] fields = rule.getClass().getFields(); + for(Field field : fields) { + if(Modifier.isPublic(field.getModifiers())) { + log.debug("change field is " + field.getName() + "(set topiaId = null)"); + Object fieldValue = field.get(rule); + if(fieldValue instanceof TopiaEntity) { + TopiaEntity valueEntity = (TopiaEntity)fieldValue; + valueEntity.setTopiaId(null); + field.set(rule, valueEntity); + } + } + } + } + // // Activation de l'OAP demandée // @@ -304,14 +329,13 @@ // SimulationContext context = SimulationContext.get(); - TopiaContext tx; context.closeDB(); context.closeDBResult(); try { // close all transaction - if (context != null && context.getSimulationStorage() != null) { + if (context.getSimulationStorage() != null) { context.getSimulationStorage().closeMemStorage(); context.getSimulationStorage().closeStorage(); }
participants (1)
-
chatellier@users.labs.libre-entreprise.org