Author: sletellier Date: 2008-10-13 11:42:24 +0000 (Mon, 13 Oct 2008) New Revision: 1548 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java Log: Simulation work Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2008-10-10 16:13:12 UTC (rev 1547) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2008-10-13 11:42:24 UTC (rev 1548) @@ -40,11 +40,13 @@ */ package fr.ifremer.isisfish.ui.simulator; +import fr.ifremer.isisfish.datastore.StorageException; import static org.codelutin.i18n.I18nf._; import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.IsisFishException; import fr.ifremer.isisfish.datastore.RegionStorage; import fr.ifremer.isisfish.datastore.RuleStorage; +import fr.ifremer.isisfish.datastore.ScriptStorage; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.datastore.SimulatorStorage; import fr.ifremer.isisfish.entities.Population; @@ -56,6 +58,7 @@ import fr.ifremer.isisfish.simulator.launcher.SimulationJob; import fr.ifremer.isisfish.simulator.launcher.SimulationService; import fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher; +import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; @@ -66,6 +69,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.log.UserLog; +import org.codelutin.topia.TopiaContext; public class SimulAction { @@ -80,7 +84,86 @@ static private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm"); public SimulAction(){ param = new SimulationParameter(); + + // TODO refresh data context on all this when datas coming from script module + // when a modification is done in script dialog + // => then refresh whoses data + // and the associated ui + // compute result names available + List<String> resultNames = getResultNames(); +// uiContext.setData("ResultNames", resultNames); +// uiContext.setData("ExportNames", ExportStorage.getExportNames()); +// uiContext.setData("AnalysePlanNames", AnalysePlanStorage.getAnalysePlanNames()); +// uiContext.setData("RuleNames", RuleStorage.getRuleNames()); + + // put default value in param + param.setSimulatorName(IsisFish.config.getSimulatorClassfile()); + param.setTagValue(IsisFish.config.getDefaultTagValueAsMap()); + param.setExportDirectory(IsisFish.config.getDefaultExportDirectory().toString()); + param.setExportNames(IsisFish.config.getDefaultExportNamesAsList()); + List<String> defaultResultNames = IsisFish.config.getDefaultResultNamesAsList(); + if (defaultResultNames != null) + param.setResultEnabled(defaultResultNames); + else + param.setResultEnabled(resultNames); +// +// uiContext.setData("OldSimulationName", ""); +// uiContext.setData("SimulationParameter", param); +// +// // keep in context list of old simulation names (for filter process) +// List<String> value = getSimulationNames(); +// // create filter model +// FilterModel<SimulationProperties, String> model = +// SimulationFilterUtil.createFilterModel(value); +// // to used directly model.getFilteredResult() in xml +// // we must fill filterModel result with original items +// model.selectAll(); +// uiContext.setData("SimulationFilterModel", model); +// +// tabs.setEnabledAt(1, false); // disable prescript tab +// tabs.setEnabledAt(2, false); // disable analyse plan tab +// +//// // add simulation queue button listeners +//// SimulatorListeners.initSimulQueueButtonsListener( +//// start, +//// remove, +//// showLog, +//// table, +//// tableDone +//// ); +// // add rule around button listeners +// SimulatorListeners.initButtonRemoveIfItemSelected(removeRule, listRule); +// +// // add analyse plan around button listeners +// SimulatorListeners.initButtonRemoveIfItemSelected(removeAnalysePlan, listAnalysePlan); +// +// frame.refreshView(); + } + + /** + * Looking for ResultName.java script and read all fields and fill + * list of field value and doc + * @return the list of result names found in ResultName script + */ + protected List<String> getResultNames() { + List<String> result = new ArrayList<String>(); + try { + ScriptStorage storage = ScriptStorage.getScript("ResultName.java"); + Class resultNameClass = storage.getCodeClass(); + // TODO: if we can't find class, perhaps try to parser Java source ? + Field[] fields = resultNameClass.getFields(); + for (Field f : fields) { + String fieldName = (String) f.get(null); + result.add(fieldName); + } + } catch (Exception eee) { + if (log.isWarnEnabled()) { + log.warn("Can't find result name script", eee); + } + } + return result; + } protected void stopSimulation(SimulationJob job) { job.stop(); @@ -206,21 +289,26 @@ } public List<Strategy> getStrategies(){ List<Strategy> result = new ArrayList<Strategy>(); - result = param.getStrategies(); + try { + result = regionStorage.getFisheryRegion(param.getRegion().getStorage()).getStrategy(); + } catch (StorageException ex) { + Logger.getLogger(SimulAction.class.getName()).log(Level.SEVERE, null, ex); + } +// result = param.getStrategies(); return result; } public List<Population> getPopulations(){ List<Species> species; List<Population> result = new ArrayList<Population>(); try { -// species = simulStorage.getFisheryRegion(simulStorage.getStorage()).getSpecies(); -// for (Species s : species){ -// result.addAll(s.getPopulation()); -// } + species = regionStorage.getFisheryRegion(param.getRegion().getStorage()).getSpecies(); + for (Species s : species){ + result.addAll(s.getPopulation()); + } } catch (Exception ex) { Logger.getLogger(SimulAction.class.getName()).log(Level.SEVERE, null, ex); } - result = param.getPopulations(); +// result = param.getPopulations(); return result; } public void setNbAnnees(String years){