Author: bpoussin Date: 2017-01-19 19:47:50 +0100 (Thu, 19 Jan 2017) New Revision: 4389 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4389 Log: fixes #8972: Pouvoir utilis?\195?\169 des objets natifs java pour les semantiques dans IsisMatrixSemanticMapper Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationHandler.java trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationUI.jaxx trunk/src/main/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapper.java trunk/src/main/resources/i18n/isis-fish_en_GB.properties trunk/src/main/resources/i18n/isis-fish_fr_FR.properties Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java 2017-01-19 18:07:40 UTC (rev 4388) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java 2017-01-19 18:47:50 UTC (rev 4389) @@ -374,6 +374,16 @@ } } + // TODO poussin 20170118 #8968 + // Il faut quoi qu'il arrive que les poissons recrutés durant le 1er mois de recrutement finissent + // en classe 0. Il se peut que pour les autres mois de recrutement il y ait besoin de changer de classe + // mais toujours en fonction de ce 1er mois de recrutement. Si le delta entre repro et recru est de 36 mois + // et que l'étalement du recrutement est sur 12 mois. et que la repro a lieu en juin. + // Les 6 premiers de recrutement finisse en classe 0, les 6 dernieres en classe 1. + // ----- implantation + // pour cela il faut remplir usedSeasons seulement avec les mois a partir + // du 2eme mois de recrutement (repro+gap+1) pour garantir que le 1er mois + // de recru finisse bien dans la classe 0. for (PopulationSeasonInfo info : usedSeasons) { Month month = info.getFirstMonth(); MatrixND CA = info.getGroupChangeMatrix(month); Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java 2017-01-19 18:07:40 UTC (rev 4388) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java 2017-01-19 18:47:50 UTC (rev 4389) @@ -22,9 +22,11 @@ */ package fr.ifremer.isisfish.ui.input; +import fr.ifremer.isisfish.datastore.RegionStorage; import fr.ifremer.isisfish.ui.WelcomeSaveVerifier; import jaxx.runtime.JAXXContext; import jaxx.runtime.context.DefaultJAXXContext; +import org.nuiton.topia.TopiaContext; /** * Ce contexte regroupe les élements qui servent à une hierachie d'interfaces Input. @@ -33,6 +35,34 @@ */ public class InputContext extends DefaultJAXXContext { + static RegionStorage storage; + static TopiaContext db; + + /** + * return RegionStorage currently used in input interface. + * @return + */ + public static RegionStorage getStorage() { + return storage; + } + + /** + * return TopiaContext currently used in input interface. + * need to load matrix with IsisMatrixSemanticMapper + * @return + */ + public static TopiaContext getDb() { + return db; + } + + public static void setDb(TopiaContext db) { + InputContext.db = db; + } + + public static void setStorage(RegionStorage storage) { + InputContext.storage = storage; + } + public InputContext(JAXXContext parent) { setParentContext(parent); Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java 2017-01-19 18:07:40 UTC (rev 4388) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java 2017-01-19 18:47:50 UTC (rev 4389) @@ -138,6 +138,8 @@ if (name == null) { // show empty region ui + InputContext.setStorage(null); + InputContext.setDb(null); inputUI.getCardlayoutPrincipal().show(inputUI.getInputPanePrincipal(), "none"); TreeModel model = new DefaultTreeModel(null); inputUI.getFisheryRegionTree().setModel(model); @@ -155,6 +157,9 @@ // warning : this is a weak reference topiaContext.addTopiaEntityListener(regionChangeLogger); fisheryRegion = RegionStorage.getFisheryRegion(topiaContext); + + InputContext.setStorage(regionStorage); + InputContext.setDb(topiaContext); } catch (TopiaException | StorageException ex) { throw new IsisFishRuntimeException("Can't load region", ex); } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationHandler.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationHandler.java 2017-01-19 18:07:40 UTC (rev 4388) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationHandler.java 2017-01-19 18:47:50 UTC (rev 4389) @@ -42,6 +42,8 @@ import fr.ifremer.isisfish.entities.Observation; import fr.ifremer.isisfish.ui.input.InputContentHandler; import fr.ifremer.isisfish.ui.util.ErrorHelper; +import java.io.File; +import org.nuiton.jaxx.runtime.JaxxFileChooser; /** * Observation handler. @@ -82,6 +84,29 @@ setObservationValueMatrix(); } + public void loadObservationValueMatrix() { + try { + Observation observation = inputContentUI.getBean(); + if (observation != null) { + File file = JaxxFileChooser.forLoadingFile() + .setApprovalText(t("isisfish.common.ok")) + .setPatternOrDescriptionFilters(".*\\.csv", "MatrixND csv file") + .setUseAcceptAllFileFilter(true).choose(); + if (file != null) { + MatrixND newMat = MatrixFactory.getInstance().create(file); + observation.setValue(newMat); + observation.update(); + setObservationValueMatrix(); + } + } + } catch (Exception eee) { + if (log.isErrorEnabled()) { + log.error("Can't load matrix observation", eee); + } + ErrorHelper.showErrorDialog(t("isisfish.error.input.matrix.load"), eee); + } + } + public void createObservationValueMatrix(Observation observation) { try { String val = JOptionPane.showInputDialog(t("isisfish.message.observation.value.dimensions")); @@ -111,10 +136,9 @@ } } catch (Exception eee) { if (log.isErrorEnabled()) { - log.error("Can't remove RecruitmentDistribution", eee); + log.error("Can't create matrix", eee); } - ErrorHelper.showErrorDialog(t("isisfish.error.input.removeentity", - "RecruitmentDistribution"), eee); + ErrorHelper.showErrorDialog(t("isisfish.error.input.matrix.create"), eee); } } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationUI.jaxx =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationUI.jaxx 2017-01-19 18:07:40 UTC (rev 4388) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationUI.jaxx 2017-01-19 18:47:50 UTC (rev 4389) @@ -92,12 +92,12 @@ </cell> </row> <row> - <cell> - <JPanel/> - </cell> - <cell fill='horizontal' weightx='1.0'> + <cell fill='horizontal' weightx='0.5'> <JButton text="isisfish.common.newMatrix" onActionPerformed='handler.createObservationValueMatrix()' enabled='{isActive()}' decorator='boxed'/> </cell> + <cell fill='horizontal' weightx='0.5'> + <JButton text="isisfish.common.loadMatrix" onActionPerformed='handler.loadObservationValueMatrix()' enabled='{isActive()}' decorator='boxed'/> + </cell> </row> </Table> </cell> Modified: trunk/src/main/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapper.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapper.java 2017-01-19 18:07:40 UTC (rev 4388) +++ trunk/src/main/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapper.java 2017-01-19 18:47:50 UTC (rev 4389) @@ -36,6 +36,7 @@ import fr.ifremer.isisfish.entities.PopulationGroup; import fr.ifremer.isisfish.entities.PopulationGroupDAO; import fr.ifremer.isisfish.simulator.SimulationContext; +import fr.ifremer.isisfish.ui.input.InputContext; /** * Implementation du mapper de semantique pour Isis pour que l'import/export @@ -123,9 +124,11 @@ } else if (TopiaEntity.class.isAssignableFrom(type)) { TopiaContext context = SimulationContext.get().getDB(); - // TODO poussin 20170118 si pas de context de simulation - // alors demander le context de region en edition (travail a faire) - // utile pour charger des Observation avec semantique dans la region. + // si on est pas en simulation, on est peut-etre en saisie, + // on utilise la base de la saisie (Evolution #8971) + if (context == null) { + context = InputContext.getDb(); + } TopiaDAO dao = IsisFishDAOHelper.getDAO(context, type); value = dao.findByProperty("name", valueId); } else { Modified: trunk/src/main/resources/i18n/isis-fish_en_GB.properties =================================================================== --- trunk/src/main/resources/i18n/isis-fish_en_GB.properties 2017-01-19 18:07:40 UTC (rev 4388) +++ trunk/src/main/resources/i18n/isis-fish_en_GB.properties 2017-01-19 18:47:50 UTC (rev 4389) @@ -126,6 +126,7 @@ isisfish.common.immigration=Immigration isisfish.common.info=info isisfish.common.ko=KO +isisfish.common.loadMatrix=Load file isisfish.common.migration=Migration isisfish.common.module=Module isisfish.common.month=month %1$s @@ -322,6 +323,8 @@ isisfish.error.input.addentity=Can't add entity "%s" isisfish.error.input.cancelentity=Can't cancel modification on entity isisfish.error.input.createentity=Can't create entity +isisfish.error.input.matrix.create=Can't create matrix +isisfish.error.input.matrix.load=Can't load matrix isisfish.error.input.removeentity=Can't remove entity "%s" isisfish.error.input.saveentity=Can't save entity isisfish.error.input.spacializematrix= Modified: trunk/src/main/resources/i18n/isis-fish_fr_FR.properties =================================================================== --- trunk/src/main/resources/i18n/isis-fish_fr_FR.properties 2017-01-19 18:07:40 UTC (rev 4388) +++ trunk/src/main/resources/i18n/isis-fish_fr_FR.properties 2017-01-19 18:47:50 UTC (rev 4389) @@ -126,6 +126,7 @@ isisfish.common.immigration=immigration isisfish.common.info=Info isisfish.common.ko=KO +isisfish.common.loadMatrix=Charger un fichier isisfish.common.migration=migration isisfish.common.module=Module isisfish.common.month=mois %1$s @@ -322,6 +323,8 @@ isisfish.error.input.addentity=Impossible d'ajouter l'entité "%s" isisfish.error.input.cancelentity=Impossible d'annuler les modifications isisfish.error.input.createentity=Impossible de créer une nouvelle entité +isisfish.error.input.matrix.create=Impossible de créer la matrice +isisfish.error.input.matrix.load=Impossible de charger la matrice isisfish.error.input.removeentity=Impossible de supprimer l'entité "%s" isisfish.error.input.saveentity=Impossible de sauver les modifications isisfish.error.input.spacializematrix=