Author: echatellier Date: 2012-08-06 16:58:30 +0200 (Mon, 06 Aug 2012) New Revision: 1029 Url: http://forge.codelutin.com/repositories/revision/coser/1029 Log: refs #1331 : G?\195?\169rer les esp?\195?\168ces par C_Perm, AA_Valide ou L_Valide Added: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 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-06 10:48:10 UTC (rev 1028) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2012-08-06 14:58:30 UTC (rev 1029) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric + * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -102,18 +102,29 @@ /** Commentaire du projet. */ protected String comment; + protected Date creationDate; + + /** Project control. */ protected Control control; - protected Date creationDate; - + /** Project selections. */ protected Map<String, Selection> selections; /** Reftax SIH. */ protected DataStorage refTaxSpecies; - + /** Type especes */ protected DataStorage typeEspeces; + /** Species field type used in storage. */ + protected SpeciesFieldType storageSpeciesType = SpeciesFieldType.L_Valide; + + /** Species field type used for user display. */ + protected SpeciesFieldType displaySpeciesType = SpeciesFieldType.L_Valide; + + /** Species field type used for rsufi output files. */ + protected SpeciesFieldType outputSpeciesType = SpeciesFieldType.L_Valide; + public Project() { } @@ -259,7 +270,7 @@ this.selections = selections; getPropertyChangeSupport().firePropertyChange(PROPERTY_SELECTIONS, null, selections); } - + public void addSelections(Selection selection) { this.selections.put(selection.getName(), selection); getPropertyChangeSupport().firePropertyChange(PROPERTY_SELECTIONS, null, selections); @@ -272,7 +283,7 @@ public void setRefTaxSpecies(DataStorage refTaxSpecies) { this.refTaxSpecies = refTaxSpecies; } - + public DataStorage getTypeEspeces() { return typeEspeces; } @@ -280,7 +291,37 @@ public void setTypeEspeces(DataStorage typeEspeces) { this.typeEspeces = typeEspeces; } - + + public SpeciesFieldType getStorageSpeciesType() { + return storageSpeciesType; + } + + public void setStorageSpeciesType(SpeciesFieldType storageSpeciesType) { + SpeciesFieldType oldValue = this.storageSpeciesType; + this.storageSpeciesType = storageSpeciesType; + getPropertyChangeSupport().firePropertyChange("storageSpeciesType", oldValue, storageSpeciesType); + } + + public SpeciesFieldType getDisplaySpeciesType() { + return displaySpeciesType; + } + + public void setDisplaySpeciesType(SpeciesFieldType displaySpeciesType) { + SpeciesFieldType oldValue = this.displaySpeciesType; + this.displaySpeciesType = displaySpeciesType; + getPropertyChangeSupport().firePropertyChange("displaySpeciesType", oldValue, displaySpeciesType); + } + + public SpeciesFieldType getOutputSpeciesType() { + return outputSpeciesType; + } + + public void setOutputSpeciesType(SpeciesFieldType outputSpeciesType) { + SpeciesFieldType oldValue = this.outputSpeciesType; + this.outputSpeciesType = outputSpeciesType; + getPropertyChangeSupport().firePropertyChange("outputSpeciesType", oldValue, outputSpeciesType); + } + /** * Force all container data clear to force free memory. */ @@ -294,7 +335,7 @@ } } } - + public Properties toProperties() { Properties props = new Properties(); if (author != null) { @@ -329,6 +370,15 @@ if (creationDate != null) { props.setProperty("project.creationdate", String.valueOf(creationDate.getTime())); } + if (storageSpeciesType != null) { + props.setProperty("project.storageSpeciesType", storageSpeciesType.toString()); + } + if (displaySpeciesType != null) { + props.setProperty("project.displaySpeciesType", displaySpeciesType.toString()); + } + if (outputSpeciesType != null) { + props.setProperty("project.outputSpeciesType", outputSpeciesType.toString()); + } return props; } @@ -364,5 +414,23 @@ Date date = new Date(Long.parseLong(props.getProperty("project.creationdate"))); setCreationDate(date); } + + // species field type was added in 1.3+ + // missing values for previous project are considered as L_Valide + if (props.contains("project.storageSpeciesType")) { + setStorageSpeciesType(SpeciesFieldType.valueOf(props.getProperty("project.storageSpeciesType"))); + } else { + setStorageSpeciesType(SpeciesFieldType.L_Valide); + } + if (props.contains("project.displaySpeciesType")) { + setDisplaySpeciesType(SpeciesFieldType.valueOf(props.getProperty("project.displaySpeciesType"))); + } else { + setDisplaySpeciesType(SpeciesFieldType.L_Valide); + } + if (props.contains("project.outputSpeciesType")) { + setOutputSpeciesType(SpeciesFieldType.valueOf(props.getProperty("project.outputSpeciesType"))); + } else { + setOutputSpeciesType(SpeciesFieldType.L_Valide); + } } } Added: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java (rev 0) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java 2012-08-06 14:58:30 UTC (rev 1029) @@ -0,0 +1,55 @@ +/* + * #%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 Lesser 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 Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +package fr.ifremer.coser.bean; + +/** + * Since 1.3, species can be managed by C_Perm, AA_Valide or L_Valide. + * They are always presented to user with latin name. + * + * @author echatellier + * @since 1.3 + */ +public enum SpeciesFieldType { + + /** Species alpha code (BONA, BONAOST...)*/ + C_Valide("C_Valide"), + + /** Species num code (1, 2, 3...). */ + C_PERM("C_Perm"), + + /** Species latin name. */ + L_Valide("L_Valide"); + + protected String reftaxField; + + private SpeciesFieldType(String reftaxField) { + this.reftaxField = reftaxField; + } + + public String getReftaxField() { + return reftaxField; + } +} Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2012-08-06 10:48:10 UTC (rev 1028) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2012-08-06 14:58:30 UTC (rev 1029) @@ -504,13 +504,13 @@ } /** - * Retourne le nom d'affichage d'une especes. + * Retourne le nom d'affichage d'une especes pour les rapports. * * @param project project * @param species species code * @return species display name */ - public String getSpeciesDisplayName(Project project, String species) { + public String getReportDisplayName(Project project, String species) { String displayName = null; // load reftax in memory Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2012-08-06 10:48:10 UTC (rev 1028) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2012-08-06 14:58:30 UTC (rev 1029) @@ -1013,7 +1013,7 @@ // get graph title String title = zoneDisplayName; title += " - " + indicatorName; - title += " - " + commonService.getSpeciesDisplayName(project, species); + title += " - " + commonService.getReportDisplayName(project, species); // generate dataset with sorted data DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset(); Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2012-08-06 10:48:10 UTC (rev 1028) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2012-08-06 14:58:30 UTC (rev 1029) @@ -5,7 +5,7 @@ $Id$ $HeadURL$ %% - Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric + Copyright (C) 2010 - 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 @@ -25,6 +25,7 @@ <Table> <import> javax.swing.JCheckBox + fr.ifremer.coser.bean.SpeciesFieldType </import> <ProjectHandler id="handler" javaBean="null" /> @@ -197,6 +198,36 @@ </cell> </row> <row> + <cell anchor="west"> + <JLabel text="coser.ui.project.storageSpeciesType" /> + </cell> + <cell columns="2"> + <JComboBox id="projectStorageSpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}" + renderer="{new SpeciesFieldTypeListRenderer()}" + onItemStateChanged="getProject().setStorageSpeciesType((SpeciesFieldType)projectStorageSpeciesType.getSelectedItem())"/> + </cell> + </row> + <row> + <cell anchor="west"> + <JLabel text="coser.ui.project.displaySpeciesType" /> + </cell> + <cell columns="2"> + <JComboBox id="projectDisplaySpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}" + renderer="{new SpeciesFieldTypeListRenderer()}" + onItemStateChanged="getProject().setDisplaySpeciesType((SpeciesFieldType)projectDisplaySpeciesType.getSelectedItem())"/> + </cell> + </row> + <row> + <cell anchor="west"> + <JLabel text="coser.ui.project.outputSpeciesType" /> + </cell> + <cell columns="2"> + <JComboBox id="projectOutputSpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}" + renderer="{new SpeciesFieldTypeListRenderer()}" + onItemStateChanged="getProject().setOutputSpeciesType((SpeciesFieldType)projectOutputSpeciesType.getSelectedItem())"/> + </cell> + </row> + <row> <cell anchor="northwest"> <JLabel text="coser.ui.project.projectcomment" /> </cell> Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2012-08-06 10:48:10 UTC (rev 1028) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2012-08-06 14:58:30 UTC (rev 1029) @@ -5,7 +5,7 @@ $Id$ $HeadURL$ %% - Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric + Copyright (C) 2010 - 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 @@ -23,6 +23,10 @@ #L% --> <Table> + <import> + fr.ifremer.coser.bean.SpeciesFieldType + </import> + <ProjectHandler id="handler" javaBean="null" /> <!-- Validation --> @@ -59,7 +63,6 @@ <javax.swing.text.Document javaBean="projectAuthor.getDocument()" onInsertUpdate='getProject().setAuthor(projectAuthor.getText())' onRemoveUpdate='getProject().setAuthor(projectAuthor.getText())' /> - </cell> </row> <row> @@ -83,6 +86,39 @@ </cell> </row> <row> + <cell anchor="west"> + <JLabel text="coser.ui.project.storageSpeciesType" /> + </cell> + <cell> + <JComboBox id="projectStorageSpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}" + renderer="{new SpeciesFieldTypeListRenderer()}" + enabled="false" + selectedItem="{getProject().getStorageSpeciesType()}"/> + </cell> + </row> + <row> + <cell anchor="west"> + <JLabel text="coser.ui.project.displaySpeciesType" /> + </cell> + <cell> + <JComboBox id="projectDisplaySpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}" + renderer="{new SpeciesFieldTypeListRenderer()}" + onItemStateChanged="getProject().setDisplaySpeciesType((SpeciesFieldType)projectDisplaySpeciesType.getSelectedItem())" + selectedItem="{getProject().getDisplaySpeciesType()}"/> + </cell> + </row> + <row> + <cell anchor="west"> + <JLabel text="coser.ui.project.outputSpeciesType" /> + </cell> + <cell> + <JComboBox id="projectOutputSpeciesType" model="{new org.jdesktop.swingx.combobox.EnumComboBoxModel(SpeciesFieldType.class)}" + renderer="{new SpeciesFieldTypeListRenderer()}" + onItemStateChanged="getProject().setOutputSpeciesType((SpeciesFieldType)projectOutputSpeciesType.getSelectedItem())" + selectedItem="{getProject().getOutputSpeciesType()}"/> + </cell> + </row> + <row> <cell anchor="northwest"> <JLabel text="coser.ui.project.projectcomment" /> </cell> Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2012-08-06 10:48:10 UTC (rev 1028) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2012-08-06 14:58:30 UTC (rev 1029) @@ -33,7 +33,6 @@ import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JTextField; -import javax.swing.ListSelectionModel; import javax.swing.SwingWorker; import javax.swing.filechooser.FileFilter; Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java (rev 0) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java 2012-08-06 14:58:30 UTC (rev 1029) @@ -0,0 +1,73 @@ +/* + * #%L + * Coser :: UI + * + * $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.project; + +import static org.nuiton.i18n.I18n._; + +import java.awt.Component; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JList; + +import fr.ifremer.coser.bean.SpeciesFieldType; + +/** + * List renderer used to render {@link SpeciesFieldType} enum values with + * additionnal comment. + * + * @author echatellier + * @since 1.3 + */ +public class SpeciesFieldTypeListRenderer extends DefaultListCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = 6335214555392070266L; + + @Override + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + + SpeciesFieldType type = (SpeciesFieldType)value; + String text = type.getReftaxField(); + + // add another human comment + switch (type) { + case C_Valide: + text += " (" + _("coser.ui.project.cValideSpeciesTypeDesc") + ")"; + break; + case C_PERM: + text += " (" + _("coser.ui.project.cPermSpeciesTypeDesc") + ")"; + break; + case L_Valide: + text += " (" + _("coser.ui.project.lValideSpeciesTypeDesc") + ")"; + break; + } + + return super.getListCellRendererComponent(list, text, index, isSelected, + cellHasFocus); + } + +} Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties =================================================================== --- trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2012-08-06 10:48:10 UTC (rev 1028) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2012-08-06 14:58:30 UTC (rev 1029) @@ -107,14 +107,18 @@ coser.ui.mainview.accesswontrolwithselection=Can't access control interface since selection exists in project \!\n\nIn order to maintain consistency between the controlled data\nand data used to create selection, create a new project\nor remove selections to access to the control interface. coser.ui.mainview.titleempty=Contrôle et Sélection RSufi coser.ui.mainview.titleproject=Contrôle et Sélection RSufi (%s) +coser.ui.project.lValideSpeciesTypeDesc=Species latin name coser.ui.project.addMaps=Add map… +coser.ui.project.cPermSpeciesTypeDesc=Numeric species code coser.ui.project.catchFile=Catch file \: coser.ui.project.createProject=Create project coser.ui.project.createProjectMissingCodeTypeSpecies=File 'CodeTypeSpecies' is not valid \!\n(check configuration \: coser.reference.typeSpecies) coser.ui.project.createProjectMissingReftax=File 'Reftax' is not valid \!\n(check configuration \: coser.reference.species) coser.ui.project.customReferenceSpeciesFile=New taxonomy reference file \: +coser.ui.project.displaySpeciesType=Display field \: coser.ui.project.editProject=Edit project coser.ui.project.haulFile=Haul file \: +coser.ui.project.cValideSpeciesTypeDesc=Alphabetic species code coser.ui.project.lengthFile=Length file \: coser.ui.project.maps=Maps \: coser.ui.project.missingFile=Missing file @@ -122,6 +126,7 @@ coser.ui.project.openError=Open error coser.ui.project.openProject=Open coser.ui.project.openProjectTitle=Open existing project +coser.ui.project.outputSpeciesType=Output field \: coser.ui.project.project=Project \: coser.ui.project.projectauthor=Author \: coser.ui.project.projectcomment=Comment \: @@ -129,6 +134,7 @@ coser.ui.project.projectname=Project name \: coser.ui.project.removeMaps=Remove map coser.ui.project.saveProject=Save project +coser.ui.project.storageSpeciesType=Storage field \: coser.ui.project.strataFile=Strata file \: coser.ui.project.summary.catchFileName=Catch file name \: coser.ui.project.summary.haulFileName=Haul file name \: Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties =================================================================== --- trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2012-08-06 10:48:10 UTC (rev 1028) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2012-08-06 14:58:30 UTC (rev 1029) @@ -107,14 +107,18 @@ coser.ui.mainview.accesswontrolwithselection=Impossible d'acceder à l'interface de contrôle alors que des sélections existent \!\n\nDans le but de garder une cohérence entre les données contrôlées et les données\nutilisées pour créer les sélections, créez un nouveau projet\nou supprimer les sélections du projet pour accèder de nouveau à l'interface de contrôle. coser.ui.mainview.titleempty=Contrôle et Sélection RSufi coser.ui.mainview.titleproject=Contrôle et Sélection RSufi (%s) +coser.ui.project.lValideSpeciesTypeDesc=Nom latin des espèces coser.ui.project.addMaps=Ajouter… +coser.ui.project.cPermSpeciesTypeDesc=Code numerique des espèces coser.ui.project.catchFile=Fichier de captures \: coser.ui.project.createProject=Créer le projet coser.ui.project.createProjectMissingCodeTypeSpecies=Le fichier 'CodeTypeEspeces' n'est pas valide \!\n(vérifiez la configuration \: coser.reference.typeSpecies) coser.ui.project.createProjectMissingReftax=Le fichier 'Reftax' n'est pas valide \!\n(vérifiez la configuration \: coser.reference.species) coser.ui.project.customReferenceSpeciesFile=Nouveau fichier de référence taxonomique \: +coser.ui.project.displaySpeciesType=Champ pour affichage \: coser.ui.project.editProject=Modifier le projet coser.ui.project.haulFile=Fichier des traits \: +coser.ui.project.cValideSpeciesTypeDesc=Code alphabetique des espèces coser.ui.project.lengthFile=Fichier des tailles \: coser.ui.project.maps=Cartes \: coser.ui.project.missingFile=Fichier manquant @@ -122,6 +126,7 @@ coser.ui.project.openError=Erreur d'ouverture coser.ui.project.openProject=Ouvrir coser.ui.project.openProjectTitle=Ouvrir un projet existant +coser.ui.project.outputSpeciesType=Champ de sortie \: coser.ui.project.project=Projet \: coser.ui.project.projectauthor=Auteur \: coser.ui.project.projectcomment=Commentaire \: @@ -129,6 +134,7 @@ coser.ui.project.projectname=Nom du projet \: coser.ui.project.removeMaps=Supprimer coser.ui.project.saveProject=Sauver le projet +coser.ui.project.storageSpeciesType=Champ de stockage \: coser.ui.project.strataFile=Fichier des strates \: coser.ui.project.summary.catchFileName=Nom du fichier captures \: coser.ui.project.summary.haulFileName=Nom du fichier traits \: