r1032 - in trunk: . coser-business/src/main/java/fr/ifremer/coser/bean coser-business/src/main/java/fr/ifremer/coser/services coser-ui/src/main/java/fr/ifremer/coser/ui/common coser-ui/src/main/java/fr/ifremer/coser/ui/control
Author: echatellier Date: 2012-08-09 10:39:35 +0200 (Thu, 09 Aug 2012) New Revision: 1032 Url: http://forge.codelutin.com/repositories/revision/coser/1032 Log: refs #1331, #1332 : gestion des visualisations des esp?\195?\168ces dans le graph de structure en taille. Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java Removed: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesComboRenderer.java Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java trunk/pom.xml Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2012-08-07 13:40:47 UTC (rev 1031) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2012-08-09 08:39:35 UTC (rev 1032) @@ -113,6 +113,9 @@ /** Reftax SIH. */ protected DataStorage refTaxSpecies; + /** Map de cache entre les codes especes et la visualisation utilisateur. */ + protected Map<String, String> refTaxSpeciesMap; + /** Type especes */ protected DataStorage typeEspeces; @@ -284,6 +287,41 @@ this.refTaxSpecies = refTaxSpecies; } + /** + * Recuperation de la map de cache code especes/visualisation utilisateur. + * + * @return refTax species map + * @since 1.3 + */ + public Map<String, String> getRefTaxSpeciesMap() { + return this.refTaxSpeciesMap; + } + + /** + * Modification de la map de cache code especes/visualisation utilisateur. + * + * @param refTaxSpeciesMap new map + * @since 1.3 + */ + public void setRefTaxSpeciesMap(Map<String, String> refTaxSpeciesMap) { + this.refTaxSpeciesMap = refTaxSpeciesMap; + } + + /** + * Retourne le nom de visualisation de l'espèce conformement à la configuration + * du projet. + * + * @return le label espece + * @since 1.3 + */ + public String getDisplaySpeciesText(String speciesCode) { + String speciesText = speciesCode; + if (refTaxSpeciesMap.containsKey(speciesCode)) { + speciesText = refTaxSpeciesMap.get(speciesCode); + } + return speciesText; + } + public DataStorage getTypeEspeces() { return typeEspeces; } Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java 2012-08-07 13:40:47 UTC (rev 1031) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java 2012-08-09 08:39:35 UTC (rev 1032) @@ -1078,9 +1078,20 @@ while (itReftax.hasNext() ) { String[] tuple = itReftax.next(); // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa" - String specyName = tuple[3]; + String speciesId = null; + switch (project.getStorageSpeciesType()) { + case C_PERM: + speciesId = tuple[0]; + break; + case C_Valide: + speciesId = tuple[3]; + break; + case L_Valide: + speciesId = tuple[4]; + break; + } Integer iNumSys = Integer.valueOf(tuple[1]); - refTaxSpecies.put(specyName, iNumSys); + refTaxSpecies.put(speciesId, iNumSys); } // parcourt du fichier des types de données Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2012-08-07 13:40:47 UTC (rev 1031) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2012-08-09 08:39:35 UTC (rev 1032) @@ -235,10 +235,9 @@ String storageFileName = commonService.getDataStorageFileName(project, category, null); File storageDataFile = new File(originalDirectory, storageFileName); FileUtils.copyFile(dataFile, storageDataFile); - } - + // les fichiers autres (reftax) sont stockes a la base - else { + } else { File storageDataFile = new File(projectDirectory, category.getStorageFileName()); FileUtils.copyFile(dataFile, storageDataFile); @@ -261,6 +260,11 @@ control.setHistoryCommands(new ArrayList<Command>()); project.setControl(control); + // creation de la map de cache des assossiation entre les code especes + // utilisé, et les noms réels visualisé par l'utilisateur + Map<String, String> reftaxSpecies = getReftaxSpeciesDisplayFieldMap(project, false); + project.setRefTaxSpeciesMap(reftaxSpecies); + return project; } @@ -295,10 +299,14 @@ } } catch (IOException ex) { throw new CoserBusinessException("Can't save project properties file", ex); - } - finally { + } finally { IOUtils.closeQuietly(outputStream); } + + // creation de la map de cache des assossiation entre les code especes + // utilisé, et les noms réels visualisé par l'utilisateur + Map<String, String> reftaxSpecies = getReftaxSpeciesDisplayFieldMap(project, false); + project.setRefTaxSpeciesMap(reftaxSpecies); } /** @@ -495,6 +503,11 @@ IOUtils.closeQuietly(inputStream); } + // creation de la map de cache des assossiation entre les code especes + // utilisé, et les noms réels visualisé par l'utilisateur + Map<String, String> reftaxSpecies = getReftaxSpeciesDisplayFieldMap(project, false); + project.setRefTaxSpeciesMap(reftaxSpecies); + return project; } @@ -2486,8 +2499,11 @@ * Calcul. Sommer TAILLES$Nombres par classe de longueur (TAILLES$Longueur) * sur tous les traits d'une année (ou tous les années si regroupé) * - * Second version : matrix proxy et provider. + * Seconde version : matrix proxy et provider. * + * Cette methode utilise directement les noms de visualisation des especes + * au lieu de leurs codes (trop compliqué de faire un rendu basé sur le code). + * * @param project project * @param dataContainer data container * @return matrix proxy with 4 dimension @@ -2528,7 +2544,8 @@ } // remember for matrix spemantics - speciesSet.add(species); + String speciesText = project.getDisplaySpeciesText(species); + speciesSet.add(speciesText); strataSet.add(strata); yearsSet.add(year); @@ -2634,7 +2651,8 @@ // quitte l'iteration courante si les dimensions demandée // ne sont pas dans la matrice reduite - if (!matrix.getSemantic(1).contains(species)) { + String speciesText = project.getDisplaySpeciesText(species); + if (!matrix.getSemantic(1).contains(speciesText)) { continue; } if (!matrix.getSemantic(2).contains(strata)) { @@ -2658,9 +2676,9 @@ double number = Double.parseDouble(numberAsString); // dimHelper is more performant - double currentNumber = matrix.getValue(dimHelper.get(length, species, strata, year)); + double currentNumber = matrix.getValue(dimHelper.get(length, speciesText, strata, year)); currentNumber += number; - matrix.setValue(dimHelper.get(length, species, strata, year), currentNumber); + matrix.setValue(dimHelper.get(length, speciesText, strata, year), currentNumber); } catch (NumberFormatException ex) { if (log.isWarnEnabled()) { Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java 2012-08-07 13:40:47 UTC (rev 1031) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java 2012-08-09 08:39:35 UTC (rev 1032) @@ -26,6 +26,9 @@ import static org.nuiton.i18n.I18n._; import java.awt.Component; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import javax.swing.JFrame; import javax.swing.SwingUtilities; @@ -86,6 +89,11 @@ panel.addMatrixRenderer(new MatrixPanelRenderer()); panel.addMatrixFilter(new LengthStructureMatrixFilter(project, container)); panel.setMatrix(matrix); + // init default selection and rendering + panel.initRenderering(new List[]{ + matrix.getSemantic(0), // select all length + Collections.singletonList(matrix.getSemantic(1).get(0)) // select first species + }, new int[]{-1, -1, 0, 0}); // select dim 3 et 4 sum action matrixViewerFrame.add(panel); matrixViewerFrame.pack(); matrixViewerFrame.setLocationRelativeTo(parent); Deleted: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesComboRenderer.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesComboRenderer.java 2012-08-07 13:40:47 UTC (rev 1031) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesComboRenderer.java 2012-08-09 08:39:35 UTC (rev 1032) @@ -1,61 +0,0 @@ -/* - * #%L - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -package fr.ifremer.coser.ui.common; - -import java.awt.Component; -import java.util.Map; - -import javax.swing.DefaultListCellRenderer; -import javax.swing.JList; - -/** - * L'editeur remplace la valeur présente dans le fichier csv pour l'especes - * par un autre nom (latin valide, code...) - * - * @author echatellier - * @since 1.3 - */ -public class SpeciesComboRenderer extends DefaultListCellRenderer { - - /** serialVersionUID. */ - private static final long serialVersionUID = 3747535342745177615L; - - protected Map<String, String> reftaxSpecies; - - public SpeciesComboRenderer(Map<String, String> reftaxSpecies) { - this.reftaxSpecies = reftaxSpecies; - } - - @Override - public Component getListCellRendererComponent(JList list, Object value, - int index, boolean isSelected, boolean cellHasFocus) { - String speciesId = (String)value; - if (reftaxSpecies.containsKey(speciesId)) { - speciesId = reftaxSpecies.get(speciesId); - } - - return super.getListCellRendererComponent(list, speciesId, index, isSelected, - cellHasFocus); - } -} Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java (rev 0) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java 2012-08-09 08:39:35 UTC (rev 1032) @@ -0,0 +1,61 @@ +/* + * #%L + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +package fr.ifremer.coser.ui.common; + +import java.awt.Component; +import java.util.Map; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JList; + +/** + * L'editeur remplace la valeur présente dans le fichier csv pour l'especes + * par un autre nom (latin valide, code...) + * + * @author echatellier + * @since 1.3 + */ +public class SpeciesListRenderer extends DefaultListCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = 3747535342745177615L; + + protected Map<String, String> reftaxSpecies; + + public SpeciesListRenderer(Map<String, String> reftaxSpecies) { + this.reftaxSpecies = reftaxSpecies; + } + + @Override + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + String speciesId = (String)value; + if (reftaxSpecies.containsKey(speciesId)) { + speciesId = reftaxSpecies.get(speciesId); + } + + return super.getListCellRendererComponent(list, speciesId, index, isSelected, + cellHasFocus); + } +} Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2012-08-07 13:40:47 UTC (rev 1031) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2012-08-09 08:39:35 UTC (rev 1032) @@ -96,7 +96,7 @@ import fr.ifremer.coser.services.ProjectService; import fr.ifremer.coser.services.PublicationService; import fr.ifremer.coser.ui.common.DataHandler; -import fr.ifremer.coser.ui.common.SpeciesComboRenderer; +import fr.ifremer.coser.ui.common.SpeciesListRenderer; import fr.ifremer.coser.ui.common.SpeciesTableCellRenderer; import fr.ifremer.coser.ui.util.CoserProgressBar; @@ -113,8 +113,6 @@ private static final Log log = LogFactory.getLog(ControlHandler.class); - protected static final String REFTAX_SPECIES_FIELD = "reftaxSpecies"; - /** * Init control view. * @@ -125,16 +123,10 @@ boolean localUsed = config.getValidatorsDirectory().isDirectory(); controlView.getLocalControlUsedLabel().setVisible(localUsed); - // about dans le context de la map des traductions d'especes - // du reftax par rapport aux preferences du projet - ProjectService projectService = controlView.getContextValue(ProjectService.class); - Project project = controlView.getContextValue(Project.class); - Map<String, String> reftaxSpecies = projectService.getReftaxSpeciesDisplayFieldMap(project, false); - controlView.setContextValue(reftaxSpecies, REFTAX_SPECIES_FIELD); - // fixe les editeurs qui affiche les noms d'espèces différement // de leur nom de stockage - SpeciesTableCellRenderer renderer = new SpeciesTableCellRenderer(reftaxSpecies); + Project project = controlView.getContextValue(Project.class); + SpeciesTableCellRenderer renderer = new SpeciesTableCellRenderer(project.getRefTaxSpeciesMap()); controlView.getControlDataTableCatch().getColumnModel().getColumn(4).setCellRenderer(renderer); controlView.getControlDataTableLength().getColumnModel().getColumn(4).setCellRenderer(renderer); } @@ -842,7 +834,8 @@ if ((category == Category.CATCH && fieldIndex == Catch.INDEX_SPECIES) || (category == Category.LENGTH && fieldIndex == Length.INDEX_SPECIES)) { // combo box used to choose for species in list - Map<String, String> reftaxSpecies = view.getContextValue(Map.class, REFTAX_SPECIES_FIELD); + Project project = view.getContextValue(Project.class); + Map<String, String> reftaxSpecies = project.getRefTaxSpeciesMap(); List<String> domain = new ArrayList<String>(reftaxSpecies.keySet()); // ajout de la valeur pour que même si elle n'existe pas // elle soit sélectionnée @@ -851,7 +844,7 @@ } ListComboBoxModel<String> speciesComboModel = new ListComboBoxModel<String>(domain); JComboBox speciesCombo = new JComboBox(speciesComboModel); - speciesCombo.setRenderer(new SpeciesComboRenderer(reftaxSpecies)); + speciesCombo.setRenderer(new SpeciesListRenderer(reftaxSpecies)); speciesCombo.setSelectedItem(fieldValue); speciesCombo.addItemListener(new ItemListener() { @Override Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2012-08-07 13:40:47 UTC (rev 1031) +++ trunk/pom.xml 2012-08-09 08:39:35 UTC (rev 1032) @@ -130,14 +130,14 @@ <dependency> <groupId>org.nuiton.matrix</groupId> <artifactId>nuiton-matrix</artifactId> - <version>2.2.3</version> + <version>2.3-SNAPSHOT</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.nuiton.matrix</groupId> <artifactId>nuiton-matrix-gui</artifactId> - <version>2.2.3</version> + <version>2.3-SNAPSHOT</version> <scope>compile</scope> </dependency>
participants (1)
-
echatellier@users.forge.codelutin.com