Coser-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
August 2012
- 3 participants
- 44 discussions
r1041 - trunk/coser-business/src/main/java/fr/ifremer/coser/services
by echatellier@users.forge.codelutin.com 13 Aug '12
by echatellier@users.forge.codelutin.com 13 Aug '12
13 Aug '12
Author: echatellier
Date: 2012-08-13 17:28:17 +0200 (Mon, 13 Aug 2012)
New Revision: 1041
Url: http://forge.codelutin.com/repositories/revision/coser/1041
Log:
Remove fixed fixme
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
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-13 15:15:19 UTC (rev 1040)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2012-08-13 15:28:17 UTC (rev 1041)
@@ -881,7 +881,6 @@
}
else {
// ajout de la traduction du nom de liste plus le numéro
- // FIXME fix locale
if ("fr".equals(locale.getLanguage())) {
chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
} else if ("es".equals(locale.getLanguage())) {
1
0
r1040 - in trunk: coser-business/src/main/java/fr/ifremer/coser/services coser-business/src/test/java/fr/ifremer/coser/services coser-ui/src/main/java/fr/ifremer/coser/ui/selection coser-ui/src/main/resources/i18n
by echatellier@users.forge.codelutin.com 13 Aug '12
by echatellier@users.forge.codelutin.com 13 Aug '12
13 Aug '12
Author: echatellier
Date: 2012-08-13 17:15:19 +0200 (Mon, 13 Aug 2012)
New Revision: 1040
Url: http://forge.codelutin.com/repositories/revision/coser/1040
Log:
fixes #1326 : Pouvoir supprimer un r?\195?\169sultat depuis l'interface
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx
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/services/ProjectService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2012-08-13 14:09:34 UTC (rev 1039)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2012-08-13 15:15:19 UTC (rev 1040)
@@ -1191,7 +1191,7 @@
* @param rsufiResult rsufi result
* @throws CoserBusinessException
*/
- public void saveRSufiResult(File rsufiResultDirectory, RSufiResult rsufiResult) throws CoserBusinessException {
+ protected void saveRSufiResult(File rsufiResultDirectory, RSufiResult rsufiResult) throws CoserBusinessException {
OutputStream outputStream = null;
try {
@@ -1212,6 +1212,35 @@
}
/**
+ * Delete a rsufi result.
+ *
+ * @param project project
+ * @param selection selection
+ * @param rsufiResult rsufi result to delete
+ * @throws CoserBusinessException
+ * @since 1.3
+ */
+ public void deleteRSufiResult(Project project, Selection selection, RSufiResult rsufiResult) throws CoserBusinessException {
+
+ try {
+ File projectsDirectory = config.getProjectsDirectory();
+ File projectDirectory = new File(projectsDirectory, project.getName());
+ File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File selectionDirectory = new File(selectionsDirectory, selection.getName());
+ File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File rsufiResultDirectory = new File(resultsDirectory, rsufiResult.getName());
+
+ FileUtils.deleteDirectory(rsufiResultDirectory);
+ List<RSufiResult> results = selection.getRsufiResults();
+ results.remove(rsufiResult);
+ // this way to fire change event (do not remove)
+ selection.setRsufiResults(results);
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't delete directory", ex);
+ }
+ }
+
+ /**
* Sauve une liste ordonnées de commande dans le fichier specifié.
*
* @param props proparties to add command to
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2012-08-13 14:09:34 UTC (rev 1039)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2012-08-13 15:15:19 UTC (rev 1040)
@@ -183,4 +183,19 @@
project = projectService.loadControlData(project);
return project;
}
+
+ /**
+ * Util method used to build path for test.
+ *
+ * @param root root dir
+ * @param paths path sub component
+ * @return file
+ */
+ protected File getFile(File root, String... paths) {
+ File localFile = root;
+ for (String path : paths) {
+ localFile = new File(localFile, path);
+ }
+ return localFile;
+ }
}
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2012-08-13 14:09:34 UTC (rev 1039)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2012-08-13 15:15:19 UTC (rev 1040)
@@ -96,16 +96,16 @@
public void testCreateProject() throws CoserBusinessException {
Project project = createTestProject(projectService, false);
- Assert.assertTrue(new File(config.getProjectsDirectory(),
- project.getName() + File.separator + "original" + File.separator + "testcatch.csv").exists());
- Assert.assertTrue(new File(config.getProjectsDirectory(),
- project.getName() + File.separator + "original" + File.separator + "testhaul.csv").exists());
- Assert.assertTrue(new File(config.getProjectsDirectory(),
- project.getName() + File.separator + "original" + File.separator + "teststrata.csv").exists());
- Assert.assertTrue(new File(config.getProjectsDirectory(),
- project.getName() + File.separator + "original" + File.separator + "testlength.csv").exists());
- Assert.assertTrue(new File(config.getProjectsDirectory(),
- project.getName() + File.separator + "reftaxSpecies.csv").exists());
+ Assert.assertTrue(getFile(config.getProjectsDirectory(), project.getName(),
+ "original", "testcatch.csv").exists());
+ Assert.assertTrue(getFile(config.getProjectsDirectory(), project.getName(),
+ "original", "testhaul.csv").exists());
+ Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ project.getName(), "original", "teststrata.csv").exists());
+ Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ project.getName(), "original", "testlength.csv").exists());
+ Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ project.getName(), "reftaxSpecies.csv").exists());
}
/**
@@ -149,8 +149,8 @@
Project project = createTestProject(projectService, false);
projectService.saveProjectControl(project);
- Assert.assertTrue(new File(config.getProjectsDirectory(),
- project.getName() + File.separator + "control" + File.separator + "testcatch_co.csv").exists());
+ Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ project.getName(), "control", "testcatch_co.csv").exists());
}
/**
@@ -165,8 +165,8 @@
projectService.validControl(project);
Assert.assertTrue(project.getControl().isValidated());
- Assert.assertTrue(new File(config.getProjectsDirectory(),
- project.getName() + File.separator + "control" + File.separator + "control.pdf").exists());
+ Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ project.getName(), "control", "control.pdf").exists());
}
/**
@@ -184,9 +184,9 @@
projectService.validSelection(project, selection);
Assert.assertTrue(selection.isValidated());
- Assert.assertTrue(new File(config.getProjectsDirectory(),
- project.getName() + File.separator + "selections" + File.separator +
- "titi" + File.separator + "selection.pdf").exists());
+ Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ project.getName(), "selections",
+ "titi", "selection.pdf").exists());
}
/**
@@ -201,9 +201,9 @@
selection.setName("titi");
projectService.createProjectSelection(project, selection);
- Assert.assertTrue(new File(config.getProjectsDirectory(),
- project.getName() + File.separator + "selections" + File.separator +
- "titi" + File.separator + "testcatch_se.csv").exists());
+ Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ project.getName(), "selections",
+ "titi", "testcatch_se.csv").exists());
}
/**
@@ -601,4 +601,24 @@
Assert.assertEquals(2, selection.getSelectedSpeciesSizeAllYear().size());
Assert.assertEquals(1, selection.getSelectedSpeciesMaturity().size());
}
+
+ /**
+ * Test de creation et de suppression de resultat.
+ *
+ * @throws CoserBusinessException
+ */
+ @Test
+ public void testDeleteResult() throws CoserBusinessException {
+ Project project = openTestProject(projectService, "projectctrvalidated");
+ Selection selection = project.getSelections().get("testselection1");
+
+ RSufiResult rsufiResult = selection.getRsufiResults().get(0);
+ Assert.assertTrue(getFile(config.getProjectsDirectory(), project.getName(),
+ "selections", "testselection1", "results", rsufiResult.getName(),
+ "result.properties").exists());
+
+ projectService.deleteRSufiResult(project, selection, rsufiResult);
+ Assert.assertFalse(getFile(config.getProjectsDirectory(), project.getName(),
+ "selections", "testselection1", "results", rsufiResult.getName()).exists());
+ }
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-13 14:09:34 UTC (rev 1039)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-13 15:15:19 UTC (rev 1040)
@@ -33,6 +33,7 @@
import java.awt.event.MouseEvent;
import java.io.File;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@@ -1391,6 +1392,34 @@
}
/**
+ * Supprime le résultat après confirmation par l'utilisateur.
+ *
+ * @param view view
+ */
+ public void deleteResult(SelectionRsufiView view) {
+ // get selected rsufi result
+ int selectedRow = view.getSelectionResultsTable().getSelectedRow();
+ RSufiResult result = view.getSelectionResultsTableModel().getValue(selectedRow);
+
+ int confirm = JOptionPane.showConfirmDialog(view,
+ _("coser.ui.result.confirmDeleteResult", result.getName()),
+ _("coser.ui.result.resultTitle"), JOptionPane.YES_NO_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+ if (confirm == JOptionPane.YES_OPTION) {
+ Project project = view.getContextValue(Project.class);
+ Selection selection = view.getContextValue(Selection.class);
+ ProjectService projectService = view.getContextValue(ProjectService.class);
+ try {
+ projectService.deleteRSufiResult(project, selection, result);
+ // le model ecoute directement le changement sur la liste
+ // de resultat (auto refresh)
+ } catch (CoserBusinessException ex) {
+ throw new CoserException("Can't delete result", ex);
+ }
+ }
+ }
+
+ /**
* Selectionne le dossier d'extraction.
*
* @param view view
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx 2012-08-13 14:09:34 UTC (rev 1039)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx 2012-08-13 15:15:19 UTC (rev 1040)
@@ -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 General Public License as
@@ -64,18 +64,22 @@
<cell weightx="1" weighty="2" fill="both">
<Table border='{BorderFactory.createTitledBorder(_("coser.ui.result.availableDataTitle"))}'>
<row>
- <cell columns="2" weightx="1" weighty="1" fill="both">
+ <cell columns="3" weightx="1" weighty="1" fill="both">
<JScrollPane>
<fr.ifremer.coser.ui.result.ResultTableModel id="selectionResultsTableModel"
javaBean="new fr.ifremer.coser.ui.result.ResultTableModel(this)" />
<JTable id="selectionResultsTable" model="{getSelectionResultsTableModel()}"/>
<ListSelectionModel javaBean="selectionResultsTable.getSelectionModel()"
- onValueChanged="editResultButton.setEnabled(getSelectionResultsTable().getSelectedRow() != -1)" />
+ onValueChanged="editResultButton.setEnabled(getSelectionResultsTable().getSelectedRow() != -1);deleteResultButton.setEnabled(getSelectionResultsTable().getSelectedRow() != -1)" />
</JScrollPane>
</cell>
</row>
<row>
<cell weightx="1" anchor="east">
+ <JButton id="deleteResultButton" text="coser.ui.result.deleteResult" enabled="false"
+ onActionPerformed="getHandler().deleteResult(this)" />
+ </cell>
+ <cell>
<JButton id="editResultButton" text="coser.ui.result.editResult" enabled="false"
onActionPerformed="getHandler().showEditResultDialog(this)" />
</cell>
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-13 14:09:34 UTC (rev 1039)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2012-08-13 15:15:19 UTC (rev 1040)
@@ -151,7 +151,9 @@
coser.ui.result.addOtherDataFile=Add file
coser.ui.result.availableDataTitle=Available results \:
coser.ui.result.cancel=Cancel
+coser.ui.result.confirmDeleteResult=Do you want to delete result %s ?
coser.ui.result.creationDate=Result date \:
+coser.ui.result.deleteResult=Delete result
coser.ui.result.editResult=Modify result
coser.ui.result.estComIndFile=ESTCOMind file \:
coser.ui.result.estPopIndFile=ESTPOPind file \:
@@ -167,6 +169,7 @@
coser.ui.result.requiredname=
coser.ui.result.requiredrsufiVersion=
coser.ui.result.resultName=Result name \:
+coser.ui.result.resultTitle=Result
coser.ui.result.rsufiVersion=RSufi version \:
coser.ui.result.saveError=Save error
coser.ui.result.table.estComIndFile=ESTCOMind file
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-13 14:09:34 UTC (rev 1039)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2012-08-13 15:15:19 UTC (rev 1040)
@@ -151,7 +151,9 @@
coser.ui.result.addOtherDataFile=Ajouter un fichier
coser.ui.result.availableDataTitle=Résultats disponibles
coser.ui.result.cancel=Annuler
+coser.ui.result.confirmDeleteResult=Êtes vous sûr de vouloir supprimer le résultat %s ?
coser.ui.result.creationDate=Date du résultats \:
+coser.ui.result.deleteResult=Supprimer le résultat
coser.ui.result.editResult=Modifier le résultat
coser.ui.result.estComIndFile=Fichier ESTCOMind \:
coser.ui.result.estPopIndFile=Fichier ESTPOPind \:
@@ -167,6 +169,7 @@
coser.ui.result.requiredname=
coser.ui.result.requiredrsufiVersion=
coser.ui.result.resultName=Nom du résultat \:
+coser.ui.result.resultTitle=Résultat
coser.ui.result.rsufiVersion=Version de RSufi \:
coser.ui.result.saveError=Erreur de sauvegarde
coser.ui.result.table.estComIndFile=Fichier ESTCOMind
1
0
Author: echatellier
Date: 2012-08-13 16:09:34 +0200 (Mon, 13 Aug 2012)
New Revision: 1039
Url: http://forge.codelutin.com/repositories/revision/coser/1039
Log:
Update libs
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-08-13 13:53:02 UTC (rev 1038)
+++ trunk/pom.xml 2012-08-13 14:09:34 UTC (rev 1039)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>3.3.4</version>
+ <version>3.3.6</version>
</parent>
<groupId>fr.ifremer</groupId>
@@ -117,27 +117,27 @@
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
- <version>2.5.2</version>
+ <version>2.5.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-validator</artifactId>
- <version>2.5.2</version>
+ <version>2.5.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.nuiton.matrix</groupId>
<artifactId>nuiton-matrix</artifactId>
- <version>2.3-SNAPSHOT</version>
+ <version>2.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.nuiton.matrix</groupId>
<artifactId>nuiton-matrix-gui</artifactId>
- <version>2.3-SNAPSHOT</version>
+ <version>2.3</version>
<scope>compile</scope>
</dependency>
@@ -346,7 +346,7 @@
<license.organizationName>Ifremer, Codelutin</license.organizationName>
<!-- Versions -->
- <jaxx.version>2.5.3</jaxx.version>
+ <jaxx.version>2.5.4</jaxx.version>
<i18n.version>2.4.1</i18n.version>
<!-- 2.3.1.1 fails to validate fields in jnlp -->
<struts.version>2.3.4</struts.version>
1
0
r1038 - in trunk: coser-business/src/main/java/fr/ifremer/coser coser-business/src/main/java/fr/ifremer/coser/control coser-business/src/main/java/fr/ifremer/coser/services coser-business/src/test/java/fr/ifremer/coser/services coser-ui/src/main/java/fr/ifremer/coser/ui/control coser-ui/src/main/java/fr/ifremer/coser/ui/selection
by echatellier@users.forge.codelutin.com 13 Aug '12
by echatellier@users.forge.codelutin.com 13 Aug '12
13 Aug '12
Author: echatellier
Date: 2012-08-13 15:53:02 +0200 (Mon, 13 Aug 2012)
New Revision: 1038
Url: http://forge.codelutin.com/repositories/revision/coser/1038
Log:
fixes #1331: Gestion des derniers rendu affichage traduction code esp?\195?\168ce
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesControlError.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/ControlServiceTest.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlGraphFrame.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/GlobalControlErrorModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2012-08-13 12:52:49 UTC (rev 1037)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2012-08-13 13:53:02 UTC (rev 1038)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 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
@@ -44,7 +44,6 @@
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
-import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesControlError.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesControlError.java 2012-08-13 12:52:49 UTC (rev 1037)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesControlError.java 2012-08-13 13:53:02 UTC (rev 1038)
@@ -44,10 +44,20 @@
protected String species;
+ /**
+ * Get species code (untranslated).
+ *
+ * @param species species code
+ */
public String getSpecies() {
return species;
}
+ /**
+ * Get species code (untranslated).
+ *
+ * @param species species code
+ */
public void setSpecies(String species) {
this.species = species;
}
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-13 12:52:49 UTC (rev 1037)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java 2012-08-13 13:53:02 UTC (rev 1038)
@@ -218,7 +218,7 @@
for (Category category : Category.values()) {
if (category.isDataCategory()) {
// validation de la category seule (generique)
- List<ControlError> categoryErrors = validateCategoryXWork(control, category, progress);
+ List<ControlError> categoryErrors = validateCategoryXWork(project, control, category, progress);
if (categoryErrors != null) {
validationErrors.addAll(categoryErrors);
}
@@ -227,7 +227,7 @@
}
// validation specifique de la category
- List<ControlError> specificErrors = validateCategorySpecific(control, category, progress);
+ List<ControlError> specificErrors = validateCategorySpecific(project, control, category, progress);
if (specificErrors != null) {
validationErrors.addAll(specificErrors);
}
@@ -238,7 +238,7 @@
}
// validation entre catch et length (specific)
- List<? extends ControlError> diffCatchLengthErrors = validateDiffCatchLength(control, progress);
+ List<? extends ControlError> diffCatchLengthErrors = validateDiffCatchLength(project, control, progress);
if (progress != null) {
progress.nextStep();
}
@@ -269,33 +269,14 @@
/**
* Valide une category entière d'un project.
*
+ * @param project project
* @param control control a valider
* @param category category a valider
* @param progress progress monitor (can be null)
- * @return les erreurs de validation
- */
- public List<ControlError> validateCategory(Control control, Category category, ProgressMonitor progress) {
-
- // validation de la category seule (generique)
- List<ControlError> errors = validateCategoryXWork(control, category, progress);
- // validation specifique de la category
- List<ControlError> specificErrors = validateCategorySpecific(control, category, progress);
- if (specificErrors != null) {
- errors.addAll(specificErrors);
- }
-
- return errors;
- }
-
- /**
- * Valide une category entière d'un project.
- *
- * @param control control a valider
- * @param category category a valider
- * @param progress progress monitor (can be null)
* @return les erreurs de validation (not null)
*/
- public List<ControlError> validateCategoryXWork(Control control, Category category, ProgressMonitor progress) {
+ public List<ControlError> validateCategoryXWork(Project project, Control control,
+ Category category, ProgressMonitor progress) {
// instance des bean utilisé lors de la validation
Catch beanCatch = new Catch();
@@ -369,7 +350,7 @@
// check for duplicated lines
String lineNumber = line[AbstractDataEntity.INDEX_LINE];
- String uniqueDataKey = getSignificantData(category, line);
+ String uniqueDataKey = getSignificantData(project, category, line);
if (uniqueDataKeys.containsKey(uniqueDataKey)) {
// make a single ControlError instance pour the same
@@ -423,19 +404,22 @@
* TRAITS
* Vérifier l'unicité sur : "Campagne", "Annee", "Trait", "Mois"
*
+ * @param project project
* @param category category
* @param data data
* @return string key
*/
- protected String getSignificantData(Category category, String[] data) {
+ protected String getSignificantData(Project project, Category category, String[] data) {
StringBuilder sb = new StringBuilder();
for (int index = 0 ; index < data.length ; ++index) {
// never count index line
if (index != AbstractDataEntity.INDEX_LINE) {
switch (category) {
case CATCH:
- if (index == Catch.INDEX_SURVEY || index == Catch.INDEX_YEAR || index == Catch.INDEX_HAUL || index == Catch.INDEX_SPECIES) {
+ if (index == Catch.INDEX_SURVEY || index == Catch.INDEX_YEAR || index == Catch.INDEX_HAUL) {
sb.append(data[index]).append('|');
+ } else if (index == Catch.INDEX_SPECIES) {
+ sb.append(project.getDisplaySpeciesText(data[index])).append('|');
}
break;
case HAUL:
@@ -445,8 +429,10 @@
break;
case LENGTH:
if (index == Length.INDEX_SURVEY || index == Length.INDEX_YEAR || index == Length.INDEX_HAUL ||
- index == Length.INDEX_SPECIES || index == Length.INDEX_SEX || index == Length.INDEX_MATURITY || index == Length.INDEX_LENGTH) {
+ index == Length.INDEX_SEX || index == Length.INDEX_MATURITY || index == Length.INDEX_LENGTH) {
sb.append(data[index]).append('|');
+ } else if (index == Length.INDEX_SPECIES) {
+ sb.append(project.getDisplaySpeciesText(data[index])).append('|');
}
break;
case STRATA:
@@ -465,27 +451,28 @@
/**
* Effectue un calcul global, mais specific a chaque categorie.
*
+ * @param project project
* @param control control
* @param category category
* @param progress progress monitor
* @return error list for category (can be {@code null})
*/
- protected List<ControlError> validateCategorySpecific(Control control,
+ protected List<ControlError> validateCategorySpecific(Project project, Control control,
Category category, ProgressMonitor progress) {
List<ControlError> validationErrors = null;
switch (category) {
case CATCH:
- validationErrors = validateCategorySpecificCatch(control, progress);
+ validationErrors = validateCategorySpecificCatch(project, control, progress);
break;
case HAUL:
- validationErrors = validateCategorySpecificHaul(control, progress);
+ validationErrors = validateCategorySpecificHaul(project, control, progress);
break;
case LENGTH:
- validationErrors = validateCategorySpecificLength(control, progress);
+ validationErrors = validateCategorySpecificLength(project, control, progress);
break;
case STRATA:
- validationErrors = validateCategorySpecificStrata(control, progress);
+ validationErrors = validateCategorySpecificStrata(project, control, progress);
break;
}
return validationErrors;
@@ -494,11 +481,12 @@
/**
* Alerte si Somme(CAPTURES$Nombre par CAPTURES$Annee|Strate|Espece) < nobsmin.
*
+ * @param project project
* @param control control
* @param progress progress monitor (can be null)
* @return error list
*/
- protected List<ControlError> validateCategorySpecificCatch(
+ protected List<ControlError> validateCategorySpecificCatch(Project project,
Control control, ProgressMonitor progress) {
List<ControlError> validationErrors = new ArrayList<ControlError>();
@@ -531,9 +519,10 @@
// compute key
StringBuffer sb = new StringBuffer();
for (int tupleIndex = 0 ; tupleIndex < tuple.length; ++tupleIndex) {
- if (tupleIndex == Catch.INDEX_YEAR || tupleIndex == Catch.INDEX_HAUL ||
- tupleIndex == Catch.INDEX_SPECIES) {
+ if (tupleIndex == Catch.INDEX_YEAR || tupleIndex == Catch.INDEX_HAUL) {
sb.append(tuple[tupleIndex]).append(';');
+ } else if (tupleIndex == Catch.INDEX_SPECIES) {
+ sb.append(project.getDisplaySpeciesText(tuple[tupleIndex])).append(';');
}
}
@@ -588,6 +577,7 @@
* Detecte des différences entre les nombres dans captures
* et les nombres dans taille.
*
+ * @param project project
* @param control data container
* @param progress progress (can be null)
*
@@ -596,7 +586,8 @@
*
* @return errors
*/
- protected List<? extends ControlError> validateDiffCatchLength(Control control, ProgressMonitor progress) {
+ protected List<? extends ControlError> validateDiffCatchLength(Project project,
+ Control control, ProgressMonitor progress) {
int total = control.getCatch().size() - 1 + control.getLength().size() - 1;
if (progress != null) {
@@ -730,7 +721,8 @@
error.setSpecies(species);
error.setLevel(ValidationLevel.WARNING);
error.setMessage(_("coser.business.control.error.diffCatchLengthMissingYear"));
- error.setDetailMessage(_("coser.business.control.error.diffCatchLengthMissingYearDetail", species));
+ error.setDetailMessage(_("coser.business.control.error.diffCatchLengthMissingYearDetail",
+ project.getDisplaySpeciesText(species)));
validationErrors.add(error);
missingYearLengthSpecies.add(species);
} else {
@@ -746,7 +738,8 @@
error.setSpecies(species);
error.setLevel(ValidationLevel.WARNING);
error.setMessage(_("coser.business.control.error.diffCatchLength"));
- error.setDetailMessage(_("coser.business.control.error.diffCatchLengthDetail", species, year));
+ error.setDetailMessage(_("coser.business.control.error.diffCatchLengthDetail",
+ project.getDisplaySpeciesText(species), year));
validationErrors.add(error);
}
}
@@ -769,13 +762,14 @@
* <li>seconde passe pour détecter les valeurs abérentes (> ecart type)
* </ul>
*
- * L'ecarty étant : racine( somme (x - moyenne)^2 / n)
+ * L'ecart étant : racine( somme (x - moyenne)^2 / n)
*
+ * @param project project
* @param control control
* @param progress progress (can be null)
* @return error list
*/
- protected List<ControlError> validateCategorySpecificLength(
+ protected List<ControlError> validateCategorySpecificLength(Project project,
Control control, ProgressMonitor progress) {
List<ControlError> validationErrors = new ArrayList<ControlError>();
@@ -981,7 +975,8 @@
error.setLevel(ValidationLevel.WARNING);
error.addLineNumber(lineNumber);
error.setMessage(_("coser.business.control.error.lengthOutliers", avg, deviation));
- error.setDetailMessage(_("coser.business.control.error.lengthOutliersDetail", species, avg, deviation, lengthValue));
+ error.setDetailMessage(_("coser.business.control.error.lengthOutliersDetail",
+ project.getDisplaySpeciesText(species), avg, deviation, lengthValue));
validationErrors.add(error);
}
}
@@ -1000,23 +995,25 @@
/**
* Specific validation for Haul category.
*
+ * @param project
* @param control control
* @param progress progress
* @return {@code null}
*/
- protected List<ControlError> validateCategorySpecificHaul(Control control,
- ProgressMonitor progress) {
+ protected List<ControlError> validateCategorySpecificHaul(Project project,
+ Control control, ProgressMonitor progress) {
return null;
}
/**
* Specific validation for Strata category.
*
+ * @param project project
* @param control control
* @param progress progress
* @return {@code null}
*/
- protected List<ControlError> validateCategorySpecificStrata(
+ protected List<ControlError> validateCategorySpecificStrata(Project project,
Control control, ProgressMonitor progress) {
return null;
}
@@ -1153,16 +1150,18 @@
}
String[] catchData = itCatch.next();
+ String species = catchData[Catch.INDEX_SPECIES];
surveyNames.add(catchData[Catch.INDEX_SURVEY]);
catchYear.add(catchData[Catch.INDEX_YEAR]);
- catchYearHaulSpecies.add(catchData[Catch.INDEX_YEAR] + "|" + catchData[Catch.INDEX_HAUL] + "|" + catchData[Catch.INDEX_SPECIES]);
+ catchYearHaulSpecies.add(catchData[Catch.INDEX_YEAR] + "|" +
+ catchData[Catch.INDEX_HAUL] + "|" + project.getDisplaySpeciesText(species));
catchYearHaul.add(catchData[Catch.INDEX_YEAR] + "|" + catchData[Catch.INDEX_HAUL]);
catchHaulNames.add(catchData[Catch.INDEX_HAUL]);
- catchSpeciesNames.add(catchData[Catch.INDEX_SPECIES]);
+ catchSpeciesNames.add(species);
// Contrôle des noms d'espèces dans fichiers CAPTURES et TAILLES qui
// doivent être dans le référentiel "reftax": CAPTURES$Espece et
- // TAILLES$Espece doivent exister dans REFTAX$ C_VALIDE
+ // TAILLES$Espece doivent exister dans REFTAX$C_VALIDE
if (!refTaxSpecies.containsKey(catchData[Catch.INDEX_SPECIES])) {
ControlError error = new ControlError();
error.setCategory(Category.CATCH);
@@ -1188,14 +1187,15 @@
String species = lengthData[Length.INDEX_SPECIES];
surveyNames.add(lengthData[Length.INDEX_SURVEY]);
lengthYear.add(lengthData[Length.INDEX_YEAR]);
- lengthYearHaulSpecies.add(lengthData[Length.INDEX_YEAR] + "|" + lengthData[Length.INDEX_HAUL] + "|" + species);
+ lengthYearHaulSpecies.add(lengthData[Length.INDEX_YEAR] + "|" +
+ lengthData[Length.INDEX_HAUL] + "|" + project.getDisplaySpeciesText(species));
lengthYearHaul.add(lengthData[Length.INDEX_YEAR] + "|" + lengthData[Length.INDEX_HAUL]);
lengthHaulNames.add(lengthData[Length.INDEX_HAUL]);
lengthSpeciesNames.add(species);
// Contrôle des noms d'espèces dans fichiers CAPTURES et TAILLES qui
// doivent être dans le référentiel "reftax": CAPTURES$Espece et
- // TAILLES$Espece doivent exister dans REFTAX$ C_VALIDE
+ // TAILLES$Espece doivent exister dans REFTAX$C_VALIDE
if (!refTaxSpecies.containsKey(species)) {
ControlError error = new ControlError();
error.setCategory(Category.LENGTH);
@@ -1233,7 +1233,8 @@
error.addLineNumber(lengthData[Length.INDEX_LINE]);
error.setLevel(ValidationLevel.WARNING);
error.setMessage(_("coser.business.control.error.invalidLengthLengthStep"));
- error.setDetailMessage(_("coser.business.control.error.invalidLengthLengthStepDetail", lengthData[Length.INDEX_LENGTH], species));
+ error.setDetailMessage(_("coser.business.control.error.invalidLengthLengthStepDetail",
+ lengthData[Length.INDEX_LENGTH], project.getDisplaySpeciesText(species)));
error.setTipMessage(_("coser.business.control.error.invalidLengthLengthStepTip"));
crossFilesErrors.add(error);
}
@@ -1386,7 +1387,8 @@
error.setLevel(ValidationLevel.FATAL);
error.setSpecies(missingCatchSpeciesName);
error.setMessage(_("coser.business.control.error.missingCatchSpeciesFromLength"));
- error.setDetailMessage(_("coser.business.control.error.missingCatchSpeciesFromLengthDetail", missingCatchSpeciesName));
+ error.setDetailMessage(_("coser.business.control.error.missingCatchSpeciesFromLengthDetail",
+ project.getDisplaySpeciesText(missingCatchSpeciesName)));
error.setTipMessage(_("coser.business.control.error.missingCatchSpeciesFromLengthTip"));
crossFilesErrors.add(error);
}
@@ -1400,7 +1402,8 @@
error.setLevel(ValidationLevel.WARNING);
error.setSpecies(missingLengthSpeciesName);
error.setMessage(_("coser.business.control.error.missingLengthSpeciesFromCatch"));
- error.setDetailMessage(_("coser.business.control.error.missingLengthSpeciesFromCatchDetail", missingLengthSpeciesName));
+ error.setDetailMessage(_("coser.business.control.error.missingLengthSpeciesFromCatchDetail",
+ project.getDisplaySpeciesText(missingLengthSpeciesName)));
error.setTipMessage(_("coser.business.control.error.missingLengthSpeciesFromCatchTip"));
crossFilesErrors.add(error);
}
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-13 12:52:49 UTC (rev 1037)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2012-08-13 13:53:02 UTC (rev 1038)
@@ -250,7 +250,8 @@
}
}
- JFreeChart chart = displayGraph(dataset, _("coser.business.chart.compareCatchLengthNumberTitle", species));
+ JFreeChart chart = displayGraph(dataset, _("coser.business.chart.compareCatchLengthNumberTitle",
+ project.getDisplaySpeciesText(species)));
charts.put(species, chart);
}
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/ControlServiceTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/ControlServiceTest.java 2012-08-13 12:52:49 UTC (rev 1037)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ControlServiceTest.java 2012-08-13 13:53:02 UTC (rev 1038)
@@ -135,23 +135,6 @@
}
/**
- * Test, si un poids est renseigné, la capture doit l'etre.
- */
- @Test
- public void testWeigthWithNonCapture() {
- Control control = new Control();
- DataStorage dataCatch = new MemoryDataStorage();
- dataCatch.add(new String[]{"Line", "Campagne","Annee","Trait","Espece","Nombre","Poids"});
- dataCatch.add(new String[]{"1", "Test survey","1999","Testtrait","Test sp","0","12"});
- control.setCatch(dataCatch);
- List<ControlError> errors = controlService.validateCategory(control, Category.CATCH, null);
- if (log.isDebugEnabled()) {
- log.debug("Validation errors = " + errors);
- }
- Assert.assertEquals(2, errors.size());
- }
-
- /**
* Test si le pas de longueur est valid pour les poissons.
*/
@Test
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlGraphFrame.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlGraphFrame.jaxx 2012-08-13 12:52:49 UTC (rev 1037)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlGraphFrame.jaxx 2012-08-13 13:53:02 UTC (rev 1038)
@@ -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
@@ -32,8 +32,9 @@
<JLabel text="coser.ui.control.graph.species"/>
</cell>
<cell fill="horizontal">
- <SpecyComboModel id="specyComboModel" />
- <JComboBox model="{specyComboModel}" onActionPerformed="getHandler().updateCompareNumberCatchGraph(this)" />
+ <SpecyComboModel id="speciesComboModel" />
+ <JComboBox id="speciesCombo" model="{speciesComboModel}"
+ onActionPerformed="getHandler().updateCompareNumberCatchGraph(this)" />
</cell>
</row>
<row fill="both" weightx="1" weighty="1" columns="2">
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-13 12:52:49 UTC (rev 1037)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2012-08-13 13:53:02 UTC (rev 1038)
@@ -81,6 +81,7 @@
import fr.ifremer.coser.CoserConstants.Category;
import fr.ifremer.coser.CoserConstants.ValidationLevel;
import fr.ifremer.coser.CoserException;
+import fr.ifremer.coser.CoserUtils;
import fr.ifremer.coser.bean.Project;
import fr.ifremer.coser.command.Command;
import fr.ifremer.coser.control.ControlError;
@@ -438,7 +439,7 @@
view.getGlobalControlErrorTable().setAutoCreateColumnsFromModel(false);
List<ControlError> errors = get();
- view.getGlobalControlErrorModel().setControlErrors(errors);
+ view.getGlobalControlErrorModel().setControlErrors(project, errors);
// set errors list in each table model
ControlDuplicatedLineTableModel catchModel = (ControlDuplicatedLineTableModel)view.getControlDataTableCatch().getModel();
@@ -987,8 +988,9 @@
SwingSession session = view.getContextValue(SwingSession.class);
// get matrix (form context by method #checkData)
+ Project project = view.getContextValue(Project.class);
Map<String, JFreeChart> charts = view.getContextValue(Map.class, "CompareCatchLengthGraph");
- List<String> species = new ArrayList<String>(charts.keySet());
+ List<String> species = CoserUtils.sortCollectionWithMapKeys(project.getRefTaxSpeciesMap(), charts.keySet());
// close previous opened
JFrame previousFrame = (JFrame)view.getContextValue(JFrame.class, "comparenumberframe");
@@ -999,11 +1001,12 @@
ControlGraphFrame frame = new ControlGraphFrame(view);
frame.setHandler(ControlHandler.this);
frame.setContextValue(charts);
- frame.getSpecyComboModel().setSpecy(species);
+ frame.getSpeciesComboModel().setSpecy(species);
if (selectedSpecies != null) {
- frame.getSpecyComboModel().setSelectedItem(selectedSpecies);
+ frame.getSpeciesComboModel().setSelectedItem(selectedSpecies);
updateCompareNumberCatchGraph(frame);
}
+ frame.getSpeciesCombo().setRenderer(new SpeciesListRenderer(project.getRefTaxSpeciesMap()));
frame.pack();
frame.setLocationRelativeTo(view);
session.add(frame); // session restore
@@ -1032,7 +1035,7 @@
* @param view view
*/
public void updateCompareNumberCatchGraph(ControlGraphFrame view) {
- String specyName = (String)view.getSpecyComboModel().getSelectedItem();
+ String specyName = (String)view.getSpeciesCombo().getSelectedItem();
Map<String, JFreeChart> charts = view.getContextValue(Map.class, "CompareCatchLengthGraph");
JFreeChart chart = charts.get(specyName);
view.getControlGraphPanel().removeAll();
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/GlobalControlErrorModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/GlobalControlErrorModel.java 2012-08-13 12:52:49 UTC (rev 1037)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/GlobalControlErrorModel.java 2012-08-13 13:53:02 UTC (rev 1038)
@@ -36,6 +36,7 @@
import org.jdesktop.swingx.treetable.DefaultTreeTableModel;
import fr.ifremer.coser.CoserConstants.ValidationLevel;
+import fr.ifremer.coser.bean.Project;
import fr.ifremer.coser.control.ControlError;
import fr.ifremer.coser.control.ControlErrorGroup;
import fr.ifremer.coser.control.DiffCatchLengthControlError;
@@ -58,9 +59,9 @@
super(null);
}
- public void setControlErrors(List<ControlError> controlErrors) {
+ public void setControlErrors(Project project, List<ControlError> controlErrors) {
this.controlErrors = controlErrors;
- buildGlobalControlErrorTreeModel(controlErrors);
+ buildGlobalControlErrorTreeModel(project, controlErrors);
checkedControlErrors = new HashSet<Object>();
}
@@ -74,7 +75,7 @@
*
* @param errors errors list to render
*/
- protected void buildGlobalControlErrorTreeModel(List<ControlError> validationErrors) {
+ protected void buildGlobalControlErrorTreeModel(Project project, List<ControlError> validationErrors) {
Map<Object, DefaultMutableTreeTableNode> nodeCache = new HashMap<Object, DefaultMutableTreeTableNode>();
DefaultMutableTreeTableNode root = new DefaultMutableTreeTableNode(null);
@@ -106,7 +107,8 @@
if (validationError instanceof DiffCatchLengthControlError) {
DiffCatchLengthControlError diffCatchError = (DiffCatchLengthControlError)validationError;
String species = diffCatchError.getSpecies();
- String speciesCategory = _("coser.ui.control.error.diffcatchlenghtspecies", species);
+ String speciesCategory = _("coser.ui.control.error.diffcatchlenghtspecies",
+ project.getDisplaySpeciesText(species));
ControlErrorGroup group = new ControlErrorGroup(validationError.getCategory(), validationError.getLevel(), speciesCategory);
DefaultMutableTreeTableNode newParent = nodeCache.get(speciesCategory);
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-13 12:52:49 UTC (rev 1037)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-13 13:53:02 UTC (rev 1038)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 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
@@ -53,7 +53,6 @@
import jaxx.runtime.JAXXUtil;
-import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -1154,7 +1153,8 @@
ControlGraphFrame frame = new ControlGraphFrame(view);
frame.setHandler(new ControlHandler());
frame.setContextValue(charts);
- frame.getSpecyComboModel().setSpecy(species);
+ frame.getSpeciesComboModel().setSpecy(species);
+ frame.getSpeciesCombo().setRenderer(new SpeciesListRenderer(project.getRefTaxSpeciesMap()));
frame.pack();
frame.setLocationRelativeTo(view);
session.add(frame); // session restore
1
0
r1037 - in trunk: coser-business/src/main/java/fr/ifremer/coser 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/control coser-ui/src/main/java/fr/ifremer/coser/ui/selection
by echatellier@users.forge.codelutin.com 13 Aug '12
by echatellier@users.forge.codelutin.com 13 Aug '12
13 Aug '12
Author: echatellier
Date: 2012-08-13 14:52:49 +0200 (Mon, 13 Aug 2012)
New Revision: 1037
Url: http://forge.codelutin.com/repositories/revision/coser/1037
Log:
Ajout d'une m?\195?\169thode utilitaire pour trier les listes d'esp?\195?\168ces.
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2012-08-10 16:10:16 UTC (rev 1036)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2012-08-13 12:52:49 UTC (rev 1037)
@@ -29,6 +29,7 @@
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
@@ -43,6 +44,7 @@
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
@@ -232,17 +234,30 @@
* @param map map to sort
* @return sorted map
*/
- public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
+ public static <K, V extends Comparable<? super V>> LinkedHashMap<K, V> sortByValue(Map<K, V> map) {
List<Map.Entry<K, V>> list = new LinkedList<Map.Entry<K, V>>(map.entrySet());
Collections.sort( list, new Comparator<Map.Entry<K, V>>() {
public int compare( Map.Entry<K, V> o1, Map.Entry<K, V> o2 ) {
return (o1.getValue()).compareTo( o2.getValue() );
}
});
- Map<K, V> result = new LinkedHashMap<K, V>();
+ LinkedHashMap<K, V> result = new LinkedHashMap<K, V>();
for (Map.Entry<K, V> entry : list) {
result.put(entry.getKey(), entry.getValue());
}
return result;
}
+
+ /**
+ * Sort a collection with order defined by a LinkedHashMap keySet.
+ *
+ * @param map map containing order in keys
+ * @param list list to sort
+ * @return list sorted
+ */
+ public static <K> List<K> sortCollectionWithMapKeys(LinkedHashMap<K, ?> map, Collection<K> list) {
+ List<K> keys = new ArrayList<K>(map.keySet());
+ keys.retainAll(list);
+ return keys;
+ }
}
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-10 16:10:16 UTC (rev 1036)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2012-08-13 12:52:49 UTC (rev 1037)
@@ -29,6 +29,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -114,7 +115,7 @@
protected DataStorage refTaxSpecies;
/** Map de cache entre les codes especes et la visualisation utilisateur. */
- protected Map<String, String> refTaxSpeciesMap;
+ protected LinkedHashMap<String, String> refTaxSpeciesMap;
/** Type especes */
protected DataStorage typeEspeces;
@@ -293,7 +294,7 @@
* @return refTax species map
* @since 1.3
*/
- public Map<String, String> getRefTaxSpeciesMap() {
+ public LinkedHashMap<String, String> getRefTaxSpeciesMap() {
return this.refTaxSpeciesMap;
}
@@ -303,7 +304,7 @@
* @param refTaxSpeciesMap new map
* @since 1.3
*/
- public void setRefTaxSpeciesMap(Map<String, String> refTaxSpeciesMap) {
+ public void setRefTaxSpeciesMap(LinkedHashMap<String, String> refTaxSpeciesMap) {
this.refTaxSpeciesMap = refTaxSpeciesMap;
}
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-10 16:10:16 UTC (rev 1036)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2012-08-13 12:52:49 UTC (rev 1037)
@@ -47,6 +47,7 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -262,7 +263,7 @@
// 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);
+ LinkedHashMap<String, String> reftaxSpecies = getReftaxSpeciesDisplayFieldMap(project, false);
project.setRefTaxSpeciesMap(reftaxSpecies);
return project;
@@ -305,7 +306,7 @@
// 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);
+ LinkedHashMap<String, String> reftaxSpecies = getReftaxSpeciesDisplayFieldMap(project, false);
project.setRefTaxSpeciesMap(reftaxSpecies);
}
@@ -505,7 +506,7 @@
// 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);
+ LinkedHashMap<String, String> reftaxSpecies = getReftaxSpeciesDisplayFieldMap(project, false);
project.setRefTaxSpeciesMap(reftaxSpecies);
return project;
@@ -3042,7 +3043,7 @@
* pour le champ de sortie
* @since 1.3
*/
- public Map<String, String> getReftaxSpeciesDisplayFieldMap(Project project, boolean outputField) {
+ public LinkedHashMap<String, String> getReftaxSpeciesDisplayFieldMap(Project project, boolean outputField) {
Map<String, String> speciesMap = new HashMap<String, String>();
// "C_Perm";"NumSys";"NivSys";"C_VALIDE";"L_VALIDE";"AA_VALIDE";"C_TxPère";"Taxa"
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-10 16:10:16 UTC (rev 1036)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2012-08-13 12:52:49 UTC (rev 1037)
@@ -595,12 +595,20 @@
// partie detail
extractProjectReport(project, out);
+ // transcription des code especes
+ StringBuilder speciesBuilder = new StringBuilder(256);
+ String separator = "";
+ for (String speciesCode : selection.getSelectedSpecies()) {
+ speciesBuilder.append(separator);
+ speciesBuilder.append(project.getDisplaySpeciesText(speciesCode));
+ }
+
// partie resumé de selection
out.write("<h2>" + _("coser.business.publication.selectionchoices") + "</h2>");
out.write("<ul>");
out.write("<li>" + _("coser.business.common.years") + " : " + StringUtils.join(selection.getSelectedYears(), ", ") + "</li>");
out.write("<li>" + _("coser.business.common.strata") + " : " + StringUtils.join(selection.getSelectedStrata(), ", ") + "</li>");
- out.write("<li>" + _("coser.business.common.species") + " : " + StringUtils.join(selection.getSelectedSpecies(), ", ") + "</li>");
+ out.write("<li>" + _("coser.business.common.species") + " : " + speciesBuilder + "</li>");
out.write("</ul>");
// partie specific : commandes
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-10 16:10:16 UTC (rev 1036)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2012-08-13 12:52:49 UTC (rev 1037)
@@ -831,15 +831,15 @@
GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(
1, 1, 1, 1), 0, 0));
+ // combo box used to choose for species in list
if ((category == Category.CATCH && fieldIndex == Catch.INDEX_SPECIES) ||
(category == Category.LENGTH && fieldIndex == Length.INDEX_SPECIES)) {
- // combo box used to choose for species in list
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
- if (reftaxSpecies.containsKey(fieldValue)) {
+ if (!reftaxSpecies.containsKey(fieldValue)) {
domain.add(0, fieldValue);
}
ListComboBoxModel<String> speciesComboModel = new ListComboBoxModel<String>(domain);
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-10 16:10:16 UTC (rev 1036)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-13 12:52:49 UTC (rev 1037)
@@ -66,6 +66,7 @@
import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.CoserConfig;
import fr.ifremer.coser.CoserException;
+import fr.ifremer.coser.CoserUtils;
import fr.ifremer.coser.bean.Project;
import fr.ifremer.coser.bean.RSufiResult;
import fr.ifremer.coser.bean.Selection;
@@ -522,7 +523,7 @@
// code pour que la liste des ids d'especes soit trié
// comme celle de visualisation de l'utilisateur (vue triée du rendu)
- filteredSpecies = new ArrayList<String>(CollectionUtils.retainAll(project.getRefTaxSpeciesMap().keySet(), filteredSpecies));
+ filteredSpecies = CoserUtils.sortCollectionWithMapKeys(project.getRefTaxSpeciesMap(), filteredSpecies);
// ne fait pas apparaitre les especes deja selectionnées
List<String> selectedSpecies = view.getSelectedSpeciesListModel().getSpecies();
@@ -1201,7 +1202,7 @@
// code pour que la liste des ids d'especes soit trié
// comme celle de visualisation de l'utilisateur (vue triée du rendu)
- selectedSpeciesList = new ArrayList<String>(CollectionUtils.retainAll(project.getRefTaxSpeciesMap().keySet(), selectedSpeciesList));
+ selectedSpeciesList = CoserUtils.sortCollectionWithMapKeys(project.getRefTaxSpeciesMap(), selectedSpeciesList);
view.getSelectedSpeciesListModel().setSpecies(selectedSpeciesList);
@@ -1230,7 +1231,7 @@
// code pour que la liste des ids d'especes soit trié
// comme celle de visualisation de l'utilisateur (vue triée du rendu)
- filteredSpecies = new ArrayList<String>(CollectionUtils.retainAll(project.getRefTaxSpeciesMap().keySet(), filteredSpecies));
+ filteredSpecies = CoserUtils.sortCollectionWithMapKeys(project.getRefTaxSpeciesMap(), filteredSpecies);
// met à jour la liste des especes selectionnées
view.getSelectedSpeciesListModel().setSpecies(selectedSpecies);
1
0
r1036 - in trunk: coser-business/src/main/java/fr/ifremer/coser/services coser-ui/src/main/java/fr/ifremer/coser/ui coser-ui/src/main/java/fr/ifremer/coser/ui/common coser-ui/src/main/java/fr/ifremer/coser/ui/selection
by echatellier@users.forge.codelutin.com 10 Aug '12
by echatellier@users.forge.codelutin.com 10 Aug '12
10 Aug '12
Author: echatellier
Date: 2012-08-10 18:10:16 +0200 (Fri, 10 Aug 2012)
New Revision: 1036
Url: http://forge.codelutin.com/repositories/revision/coser/1036
Log:
Add species renderer in selection ui
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java
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-10 15:32:19 UTC (rev 1035)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2012-08-10 16:10:16 UTC (rev 1036)
@@ -1990,14 +1990,26 @@
// filtering is optionnal
if (project != null && filterSpecyType != null) {
// load map SpecyName > numSys
- Map<String, Integer> map = new HashMap<String, Integer>();
+ Map<String, Integer> speciesNumSys = new HashMap<String, Integer>();
Iterator<String[]> refTaxIterator = project.getRefTaxSpecies().iterator(true);
while (refTaxIterator.hasNext()) {
// "C_Perm";"NumSys";"NivSys";"C_VALIDE";"L_VALIDE";"AA_VALIDE";"C_TxPère";"Taxa"
String[] tuple = refTaxIterator.next();
- String specyName = tuple[3];
Integer iNumSys = Integer.valueOf(tuple[1]);
- map.put(specyName, iNumSys);
+
+ String specyId = null;
+ switch (project.getStorageSpeciesType()) {
+ case C_PERM:
+ specyId = tuple[0];
+ break;
+ case C_Valide:
+ specyId = tuple[3];
+ break;
+ case L_Valide:
+ specyId = tuple[4];
+ break;
+ }
+ speciesNumSys.put(specyId, iNumSys);
}
// load specy type map SpecyTypeName > [min, max]
@@ -2020,7 +2032,7 @@
Iterator<String> itSpecies = result.iterator();
while (itSpecies.hasNext()) {
String specy = itSpecies.next();
- Integer specyNumSys = map.get(specy);
+ Integer specyNumSys = speciesNumSys.get(specy);
if (specyNumSys == null) {
// ca ne peut pas arriver, ce cs est valider
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2012-08-10 15:32:19 UTC (rev 1035)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2012-08-10 16:10:16 UTC (rev 1036)
@@ -414,7 +414,7 @@
SelectionHandler handler = new SelectionHandler();
selectionView.setHandler(handler);
- handler.initView(selectionView.getSelectionDetailsTab());
+ handler.initView(selectionView);
handler.initSelection(selectionView);
// restore session size
@@ -488,7 +488,7 @@
SelectionHandler handler = new SelectionHandler();
selectionView.setHandler(handler);
- handler.initView(selectionView.getSelectionDetailsTab());
+ handler.initView(selectionView);
handler.reloadSelection(selectionView);
// restore session size
Modified: 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 2012-08-10 15:32:19 UTC (rev 1035)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java 2012-08-10 16:10:16 UTC (rev 1036)
@@ -50,12 +50,12 @@
@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);
+ String speciesText = (String)value;
+ if (reftaxSpecies.containsKey(speciesText)) {
+ speciesText = reftaxSpecies.get(speciesText);
}
- return super.getListCellRendererComponent(list, speciesId, index, isSelected,
+ return super.getListCellRendererComponent(list, speciesText, index, isSelected,
cellHasFocus);
}
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-10 15:32:19 UTC (rev 1035)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2012-08-10 16:10:16 UTC (rev 1036)
@@ -53,6 +53,7 @@
import jaxx.runtime.JAXXUtil;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -71,6 +72,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.SpeciesListRenderer;
import fr.ifremer.coser.ui.control.ControlGraphFrame;
import fr.ifremer.coser.ui.control.ControlHandler;
import fr.ifremer.coser.ui.result.SelectionAddResultDialog;
@@ -110,25 +112,25 @@
Component selectedComponent = view.getSelectedComponent();
if (selectedComponent instanceof SelectionListsView) {
SelectionListsView selectionListsView = (SelectionListsView)selectedComponent;
-
+
if (log.isDebugEnabled()) {
log.debug("List details tab selected");
}
-
+
Selection selection = view.getContextValue(Selection.class);
// si la selection n'est pas la même que que celle de la sélection
// on met à jour la liste de "Toutes les especes" (L1)
-
+
List<String> currentList = selectionListsView.getSelectionAllSpeciesListModel().getSpecies();
List<String> selectionSpeciesList = selection.getSelectedSpecies();
-
+
if (!selectionSpeciesList.equals(currentList)) {
-
+
if (log.isDebugEnabled()) {
log.debug("Data changed, fill default selection");
}
-
+
// on calcul également les matrices de d'occurence, densité
Project project = view.getContextValue(Project.class);
ProjectService projectService = view.getContextValue(ProjectService.class);
@@ -138,41 +140,41 @@
density.meanOverDim(1); // moyenne sur les années
Collection<String> speciesAllYear = projectService.getSpeciesWithSizeAllYears(selection);
Collection<String> speciesWithMaturity = projectService.getSpeciesWithMaturity(selection);
-
+
// set matrix on list model
selectionListsView.getSelectionOccurrenceDensityListModel().setOccurrence(occurrence);
selectionListsView.getSelectionOccurrenceDensityListModel().setDensity(density);
-
+
// useless line but fix a event update bug
- // can take huge time becasue somes event are fired
+ // can take huge time because somes event are fired
selectionListsView.getSelectionAllSpeciesList().clearSelection();
-
+
// fill all species data (at final)
selectionListsView.getSelectionAllSpeciesListModel().setSpecies(selectionSpeciesList);
((CoserListSelectionModel)selectionListsView.getSelectionAllSpeciesList().getSelectionModel()).fillSelection();
selectionListsView.getSelectionSizeAllYearListModel().setSizeAllYearSpecies(speciesAllYear);
selectionListsView.getSelectionMaturityListModel().setMaturitySpecies(speciesWithMaturity);
-
+
// rechargement de la selection sauvegardée
// si aucune des autres listes n'est vide
if (!selection.getSelectedSpeciesOccDens().isEmpty() ||
!selection.getSelectedSpeciesSizeAllYear().isEmpty() ||
!selection.getSelectedSpeciesMaturity().isEmpty()) {
-
+
selectionListsView.getSelectionFilterOccurrenceField().setText(String.valueOf(selection.getOccurrenceFilter()));
selectionListsView.getSelectionFilterDensityField().setText(String.valueOf(selection.getDensityFilter()));
-
+
// restauration de la selection sauvegardée
((CoserListSelectionModel)selectionListsView.getSelectionOccurrenceDensityList().getSelectionModel()).setSelectedObjects(selection.getSelectedSpeciesOccDens());
((CoserListSelectionModel)selectionListsView.getSelectionSizeAllYearList().getSelectionModel()).setSelectedObjects(selection.getSelectedSpeciesSizeAllYear());
((CoserListSelectionModel)selectionListsView.getSelectionMaturityList().getSelectionModel()).setSelectedObjects(selection.getSelectedSpeciesMaturity());
}
else {
-
+
if (log.isDebugEnabled()) {
log.debug("Apply occurrence/density filter");
}
-
+
// select all list (not to do for reload)
// init allSize and maturity before (select all with updateOccurrenceDensityFilter)
updateOccurrenceDensityFilter(selectionListsView);
@@ -386,8 +388,19 @@
*
* @param view view
*/
- public void initView(SelectionDetailsView view) {
+ public void initView(SelectionView view) {
+ // init specific tab
+ initView(view.getSelectionDetailsTab());
+ initView(view.getSelectionListsView());
+ }
+ /**
+ * Init detail tab view
+ *
+ * @param view view
+ */
+ protected void initView(SelectionDetailsView view) {
+
// add layers
Project project = view.getContextValue(Project.class);
view.getStrataMap().initMap(project, view.getStataMapInfo());
@@ -399,7 +412,26 @@
int count = view.getTypeSpeciesModel().getSize();
view.getTypeSpeciesList().addSelectionInterval(0, count - 1);
+ // init species renderer
+ SpeciesListRenderer renderer = new SpeciesListRenderer(project.getRefTaxSpeciesMap());
+ view.getFilteredSpeciesList().setCellRenderer(renderer);
+ view.getSelectedSpeciesList().setCellRenderer(renderer);
}
+
+ /**
+ * Init selection list tab view.
+ *
+ * @param view view
+ */
+ protected void initView(SelectionListsView view) {
+ Project project = view.getContextValue(Project.class);
+ Map<String, String> reftaxSpecies = project.getRefTaxSpeciesMap();
+ SpeciesListRenderer renderer = new SpeciesListRenderer(reftaxSpecies);
+ view.getSelectionAllSpeciesList().setCellRenderer(renderer);
+ view.getSelectionOccurrenceDensityList().setCellRenderer(new SpeciesListOccDensRenderer(reftaxSpecies));
+ view.getSelectionSizeAllYearList().setCellRenderer(renderer);
+ view.getSelectionMaturityList().setCellRenderer(renderer);
+ }
/**
* Appelé lorsque la selection de la liste des strate a changé.
@@ -488,6 +520,10 @@
List<String> filteredSpecies = projectService.getProjectSpecies(selection, project, speciesTypes);
+ // code pour que la liste des ids d'especes soit trié
+ // comme celle de visualisation de l'utilisateur (vue triée du rendu)
+ filteredSpecies = new ArrayList<String>(CollectionUtils.retainAll(project.getRefTaxSpeciesMap().keySet(), filteredSpecies));
+
// ne fait pas apparaitre les especes deja selectionnées
List<String> selectedSpecies = view.getSelectedSpeciesListModel().getSpecies();
filteredSpecies.removeAll(selectedSpecies);
@@ -808,38 +844,6 @@
}
/**
- * Sauvegarde la sélection (partie listes de selection).
- *
- * @param view parent view
- * @return {@code true} is slection has been saved
- */
- protected boolean saveProjectSelection(SelectionListsView view) {
- boolean saved = false;
-
- Project project = view.getContextValue(Project.class);
- Selection selection = view.getContextValue(Selection.class);
- ProjectService service = view.getContextValue(ProjectService.class);
- SelectionView selectionView = view.getParentContainer(SelectionView.class);
-
- saveSelectionLists(view, selection);
-
- try {
- service.saveProjectSelection(project, selection);
- saved = true;
- }
- catch (CoserBusinessException ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't save selection", ex);
- }
- JOptionPane.showMessageDialog(view, ex.getMessage(), _("coser.ui.selection.saveError"), JOptionPane.ERROR_MESSAGE);
- }
-
- // enable tabs
- selectionView.setEnabledAt(2, selection.isValidated()); // selection lists
- return saved;
- }
-
- /**
* Sauve les éléments selectionnés dans la sélection.
*
* @param view view containing jlist
@@ -888,10 +892,14 @@
boolean canBeValidated = checkSelectionListComments(view, selection);
if (canBeValidated) {
try {
+ saveSelectionLists(view, selection);
service.validSelection(project, selection);
- selection.setValidated(true);
JOptionPane.showMessageDialog(view, _("coser.ui.selection.selectionValidated"),
_("coser.ui.selection.selectionTitle"), JOptionPane.INFORMATION_MESSAGE);
+
+ // enable tabs
+ SelectionView selectionView = view.getParentContainer(SelectionView.class);
+ selectionView.setEnabledAt(2, true); // selection lists
} catch (CoserBusinessException ex) {
if (log.isErrorEnabled()) {
log.error("Can't save selection", ex);
@@ -1176,7 +1184,8 @@
* @param view view
*/
public void addSelectedFilteredSpecies(SelectionDetailsView view) {
-
+ Project project = view.getContextValue(Project.class);
+
// get selected species
Object[] selectedFilteredSpecies = view.getFilteredSpeciesList().getSelectedValues();
Set<String> selectedSpecies = new HashSet<String>();
@@ -1189,7 +1198,11 @@
// met a jour le liste des especes selectionnées
List<String> selectedSpeciesList = new ArrayList<String>(selectedSpecies);
- Collections.sort(selectedSpeciesList);
+
+ // code pour que la liste des ids d'especes soit trié
+ // comme celle de visualisation de l'utilisateur (vue triée du rendu)
+ selectedSpeciesList = new ArrayList<String>(CollectionUtils.retainAll(project.getRefTaxSpeciesMap().keySet(), selectedSpeciesList));
+
view.getSelectedSpeciesListModel().setSpecies(selectedSpeciesList);
// met a jour la liste filtrée (retrait des especes selectionnées)
@@ -1205,6 +1218,7 @@
* @param view view
*/
public void removeSelectedSpecies(SelectionDetailsView view) {
+ Project project = view.getContextValue(Project.class);
List<String> filteredSpecies = new ArrayList<String>(view.getFilteredSpeciesListModel().getSpecies());
List<String> selectedSpecies = new ArrayList<String>(view.getSelectedSpeciesListModel().getSpecies());
@@ -1213,9 +1227,11 @@
selectedSpecies.remove((String)singleSelectedSelectedSpecies);
filteredSpecies.add((String)singleSelectedSelectedSpecies);
}
- Collections.sort(selectedSpecies);
- Collections.sort(filteredSpecies);
+ // code pour que la liste des ids d'especes soit trié
+ // comme celle de visualisation de l'utilisateur (vue triée du rendu)
+ filteredSpecies = new ArrayList<String>(CollectionUtils.retainAll(project.getRefTaxSpeciesMap().keySet(), filteredSpecies));
+
// met à jour la liste des especes selectionnées
view.getSelectedSpeciesListModel().setSpecies(selectedSpecies);
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx 2012-08-10 15:32:19 UTC (rev 1035)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx 2012-08-10 16:10:16 UTC (rev 1036)
@@ -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
@@ -141,7 +141,6 @@
<OccurrenceDensitySpeciesListModel id="selectionOccurrenceDensityListModel"
onContentsChanged='occurrenceDensitySpeciesLabel.setTitle(_("coser.ui.selection.occurrenceDensitySpecies", selectionOccurrenceDensityList.getSelectedIndices().length, selectionOccurrenceDensityList.getModel().getSize()))' />
<JList id="selectionOccurrenceDensityList" model="{selectionOccurrenceDensityListModel}"
- cellRenderer="{new SpeciesListOccDensRenderer()}"
selectionModel="{new CoserListSelectionModel(selectionOccurrenceDensityList.getSelectionModel(), selectionOccurrenceDensityListModel)}"
onValueChanged='applyOccDensFilter.setEnabled(true); occurrenceDensitySpeciesLabel.setTitle(_("coser.ui.selection.occurrenceDensitySpecies", selectionOccurrenceDensityList.getSelectedIndices().length, selectionOccurrenceDensityList.getModel().getSize()))' />
</JScrollPane>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java 2012-08-10 15:32:19 UTC (rev 1035)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java 2012-08-10 16:10:16 UTC (rev 1036)
@@ -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
@@ -28,11 +28,13 @@
import static org.nuiton.i18n.I18n._;
import java.awt.Component;
+import java.util.Map;
import javax.swing.JList;
import org.jdesktop.swingx.renderer.DefaultListRenderer;
+import fr.ifremer.coser.bean.Project;
import fr.ifremer.coser.ui.selection.model.OccurrenceDensitySpeciesListModel;
/**
@@ -49,6 +51,12 @@
/** serialVersionUID. */
private static final long serialVersionUID = -5404111064519251687L;
+ protected Map<String, String> reftaxSpecies;
+
+ public SpeciesListOccDensRenderer(Map<String, String> reftaxSpecies) {
+ this.reftaxSpecies = reftaxSpecies;
+ }
+
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
@@ -58,7 +66,12 @@
double occurrence = model.getOccurrence(species);
double density = model.getDensity(species);
- String stringValue = _("coser.ui.selection.occurrencedensityrenderer", species, occurrence, density);
+
+ String speciesText = (String)species;
+ if (reftaxSpecies.containsKey(species)) {
+ speciesText = reftaxSpecies.get(species);
+ }
+ String stringValue = _("coser.ui.selection.occurrencedensityrenderer", speciesText, occurrence, density);
return super.getListCellRendererComponent(list, stringValue, index, isSelected, cellHasFocus);
}
1
0
r1035 - trunk/coser-business/src/test/java/fr/ifremer/coser/services
by echatellier@users.forge.codelutin.com 10 Aug '12
by echatellier@users.forge.codelutin.com 10 Aug '12
10 Aug '12
Author: echatellier
Date: 2012-08-10 17:32:19 +0200 (Fri, 10 Aug 2012)
New Revision: 1035
Url: http://forge.codelutin.com/repositories/revision/coser/1035
Log:
Fix test compilation error
Modified:
trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2012-08-09 15:38:09 UTC (rev 1034)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2012-08-10 15:32:19 UTC (rev 1035)
@@ -79,7 +79,7 @@
protected void registerUploadedResult(String path) throws CoserBusinessException {
URL firstUpload = WebServiceTest.class.getResource(path);
File firstUploadFile = new File(firstUpload.getFile());
- webService.registerNewUploadedResults(firstUploadFile);
+ webService.registerNewUploadedResults("admin", firstUploadFile);
}
/**
1
0
r1034 - in trunk: coser-business/src/main/java/fr/ifremer/coser/services coser-business/src/main/resources/i18n coser-web/src/main/java/fr/ifremer/coser/web/actions
by echatellier@users.forge.codelutin.com 09 Aug '12
by echatellier@users.forge.codelutin.com 09 Aug '12
09 Aug '12
Author: echatellier
Date: 2012-08-09 17:38:09 +0200 (Thu, 09 Aug 2012)
New Revision: 1034
Url: http://forge.codelutin.com/repositories/revision/coser/1034
Log:
fixes #1333 : Am?\195?\169liorer le contenu du mail de mise ?\195?\160 jour des donn?\195?\169es du site
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties
trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2012-08-09 10:36:21 UTC (rev 1033)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2012-08-09 15:38:09 UTC (rev 1034)
@@ -692,10 +692,11 @@
* TODO chatellier 20110125 l'algorithme n'est pour l'instant pas performant
* et contient pas mal de code dupliqué, mais pour la v1.0 ca ira.
*
+ * @param login user login
* @param archiveFile uploaded file
* @throws CoserBusinessException
*/
- public void registerNewUploadedResults(File archiveFile) throws CoserBusinessException {
+ public void registerNewUploadedResults(String login, File archiveFile) throws CoserBusinessException {
try {
@@ -708,31 +709,29 @@
// suppression des resultats qui ont été envoyé mais
// ne sont ni maps result, ni indicator result
- List<String> noIndicatorsResultZoneIds = getZonesIds(tempDirectory, false, null);
- cleanCurrentProjectDirectory(projectsDirectory, noIndicatorsResultZoneIds);
- List<String> noMapsResultZoneIds = getZonesIds(tempDirectory, null, false);
- cleanCurrentProjectDirectory(mapsDirectory, noMapsResultZoneIds);
+ Map<String, String> noIndicatorsResultZoneIds = getZonesIds(tempDirectory, false, null);
+ cleanCurrentProjectDirectory(projectsDirectory, noIndicatorsResultZoneIds.keySet());
+ Map<String, String> noMapsResultZoneIds = getZonesIds(tempDirectory, null, false);
+ cleanCurrentProjectDirectory(mapsDirectory, noMapsResultZoneIds.keySet());
// recuperation des noms zone des nouveau fichiers
- List<String> indicatorsResultZoneIds = getZonesIds(tempDirectory, true, false);
+ Map<String, String> indicatorsResultZoneIds = getZonesIds(tempDirectory, true, false);
// suppression dans l'ancien répertoire des resultat deja present
// dans le nouveau (pour les conflits)
- cleanCurrentProjectDirectory(projectsDirectory, indicatorsResultZoneIds);
+ cleanCurrentProjectDirectory(projectsDirectory, indicatorsResultZoneIds.keySet());
// creation du filter qui copiera juste ce qu'il faut
FileFilter indicatorsFileFilter = getCopyFileFilter(tempDirectory, false);
// copie (avec ecrasement) des nouveaux fichiers dans l'ancien répertoire
- //FileUtils.copyDirectory(tempDirectory, projectsDirectory, indicatorsFileFilter);
customCopyDirectory(tempDirectory, projectsDirectory, indicatorsFileFilter);
// recuperation des noms zone des nouveau fichiers
- List<String> mapsResultZoneIds = getZonesIds(tempDirectory, false, true);
+ Map<String, String> mapsResultZoneIds = getZonesIds(tempDirectory, false, true);
// suppression dans l'ancien répertoire des resultat deja present
// dans le nouveau (pour les conflits)
- cleanCurrentProjectDirectory(mapsDirectory, mapsResultZoneIds);
+ cleanCurrentProjectDirectory(mapsDirectory, mapsResultZoneIds.keySet());
// creation du filter qui copiera juste ce qu'il faut
FileFilter mapsFileFilter = getCopyFileFilter(tempDirectory, true);
// copie (avec ecrasement) des nouveaux fichiers dans l'ancien répertoire
- //FileUtils.copyDirectory(tempDirectory, mapsDirectory, mapsFileFilter);
customCopyDirectory(tempDirectory, mapsDirectory, mapsFileFilter);
FileUtils.deleteDirectory(tempDirectory);
@@ -741,8 +740,42 @@
log.info("Unzipping file " + archiveFile + " to " + projectsDirectory);
}
+ // generate email content
+ StringBuffer content = new StringBuffer();
+ if (!noMapsResultZoneIds.isEmpty() || !mapsResultZoneIds.isEmpty()) {
+ content.append(_("coser.business.notificationmail.mapsresults") + "\n");
+ for (Map.Entry<String, String> noMapsResultZoneId : noMapsResultZoneIds.entrySet()) {
+ content.append(" - " + _("coser.business.notificationmail.deleted",
+ getZoneFullName(noMapsResultZoneId.getKey()),
+ noMapsResultZoneId.getValue()) + "\n");
+ }
+ for (Map.Entry<String, String> mapsResultZoneId : mapsResultZoneIds.entrySet()) {
+ content.append(" - " + _("coser.business.notificationmail.added",
+ getZoneFullName(mapsResultZoneId.getKey()),
+ mapsResultZoneId.getValue()) + "\n");
+ }
+ content.append("\n");
+ }
+
+ if (!noIndicatorsResultZoneIds.isEmpty() || !indicatorsResultZoneIds.isEmpty()) {
+ content.append(_("coser.business.notificationmail.indicatorsresults") + "\n");
+ for (Map.Entry<String, String> noIndicatorsResultZoneId : noIndicatorsResultZoneIds.entrySet()) {
+ content.append(" - " + _("coser.business.notificationmail.deleted",
+ getZoneFullName(noIndicatorsResultZoneId.getKey()),
+ noIndicatorsResultZoneId.getValue()) + "\n");
+ }
+ for (Map.Entry<String, String> indicatorsResultZoneId : indicatorsResultZoneIds.entrySet()) {
+ content.append(" - " + _("coser.business.notificationmail.added",
+ getZoneFullName(indicatorsResultZoneId.getKey()),
+ indicatorsResultZoneId.getValue()) + "\n");
+ }
+ content.append("\n");
+ }
+
// send notification mails
- sendNewResultNotifications();
+ int count = noMapsResultZoneIds.size() + mapsResultZoneIds.size() +
+ noIndicatorsResultZoneIds.size() + indicatorsResultZoneIds.size();
+ sendNewResultNotifications(login, count, content.toString());
// update data date
updateDataProperties();
@@ -850,7 +883,8 @@
}
/**
- * Recupere dans un repertoire donné, les zoneid des resultat.
+ * Recupere dans un repertoire donné, les zoneid des resultat avec
+ * pour chaque id, le nom du projet associé.
*
* Les boolean sont des grands {@code Boolean} car si la valeur
* est {@code null}, on ne tient pas compte du critere lors de la recherche.
@@ -858,12 +892,12 @@
* @param scanDirectory le repertoire a scanner
* @param indicatorResults if true get indicator results
* @param mapResults if true get map results
- * @return la liste des resultid
+ * @return une map de resultid/nom visuel des projets
* @throws CoserBusinessException
*/
- protected List<String> getZonesIds(File scanDirectory, Boolean indicatorResults, Boolean mapResults) throws CoserBusinessException {
+ protected Map<String, String> getZonesIds(File scanDirectory, Boolean indicatorResults, Boolean mapResults) throws CoserBusinessException {
- List<String> resultIds = new ArrayList<String>();
+ Map<String, String> resultIds = new HashMap<String, String>();
File[] projectFiles = scanDirectory.listFiles();
if (projectFiles != null) {
for (File projectFile : projectFiles) {
@@ -888,7 +922,10 @@
( mapResults == null || rsufiResult.isMapsResult() == mapResults ) ) {
String resultResultId = rsufiResult.getZone();
if (StringUtils.isNotBlank(resultResultId)) {
- resultIds.add(resultResultId);
+ String resultPath = projectFile.getName() + "/" +
+ selectionFile.getName() + "/" +
+ resultFile.getName();
+ resultIds.put(resultResultId, resultPath);
}
}
}
@@ -971,7 +1008,7 @@
* @param newResultIds new ids
* @throws CoserBusinessException
*/
- protected void cleanCurrentProjectDirectory(File projectsDirectory, List<String> newResultIds) throws CoserBusinessException {
+ protected void cleanCurrentProjectDirectory(File projectsDirectory, Collection<String> newResultIds) throws CoserBusinessException {
try {
File[] projectFiles = projectsDirectory.listFiles();
@@ -1030,8 +1067,12 @@
/**
* Envoi un mail de notification apres la publication des resultat à la
* liste des adresses email renseignées dans la configuration.
+ *
+ * @param login user login
+ * @param count updated data count
+ * @param detail body mail detail
*/
- protected void sendNewResultNotifications() {
+ protected void sendNewResultNotifications(String login, int count, String detail) {
List<String> emails = config.getNewResultNotificationList();
for (String email : emails) {
@@ -1040,8 +1081,8 @@
emailPart.setHostName(config.getSmtpHost());
emailPart.addTo(email);
emailPart.setFrom("noreply-coser(a)ifremer.fr", "Coser");
- emailPart.setSubject(_("coser.business.notificationmail.subject"));
- emailPart.setContent(_("coser.business.notificationmail.body"), "text/plain; charset=ISO-8859-9");
+ emailPart.setSubject(_("coser.business.notificationmail.subject", count));
+ emailPart.setContent(_("coser.business.notificationmail.body", login, detail), "text/plain; charset=ISO-8859-9");
// send mail
emailPart.send();
Modified: trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties
===================================================================
--- trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2012-08-09 10:36:21 UTC (rev 1033)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2012-08-09 15:38:09 UTC (rev 1034)
@@ -109,8 +109,12 @@
coser.business.matrix.lengthstructure=Length structures
coser.business.matrix.occurrence=Occurrence
coser.business.matrix.samplingeffort=Sampling effort
-coser.business.notificationmail.body=Data has been updated on website.\n\n--\nCoser.
-coser.business.notificationmail.subject=Coser \: Data updated
+coser.business.notificationmail.added=added \: %s (%s)
+coser.business.notificationmail.body=Data has been updated on website by %s.\n\n%s--\nCoser.
+coser.business.notificationmail.deleted=deleted \: %s (%s)
+coser.business.notificationmail.indicatorsresults=Indicator results \:
+coser.business.notificationmail.mapsresults=Map results \:
+coser.business.notificationmail.subject=Coser \: %d data updated
coser.business.publication.author=Author
coser.business.publication.catchfilename=Catch file name
coser.business.publication.comment=Comment
Modified: trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties
===================================================================
--- trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2012-08-09 10:36:21 UTC (rev 1033)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2012-08-09 15:38:09 UTC (rev 1034)
@@ -109,8 +109,12 @@
coser.business.matrix.lengthstructure=Structures en taille
coser.business.matrix.occurrence=Occurrence
coser.business.matrix.samplingeffort=Effort d'échantillonnage
-coser.business.notificationmail.body=Les données du site internet viennent d'être mises à jour\n\n--\nCoser.
-coser.business.notificationmail.subject=Coser \: Données mises à jour
+coser.business.notificationmail.added=ajouté \: %s (%s)
+coser.business.notificationmail.body=Les données du site internet viennent d'être mises à jour par %s.\n\n%s--\nCoser.
+coser.business.notificationmail.deleted=supprimé \: %s (%s)
+coser.business.notificationmail.indicatorsresults=Résultats d'indicateur \:
+coser.business.notificationmail.mapsresults=Résultat de carte \:
+coser.business.notificationmail.subject=Coser \: %d résultats mis à jour
coser.business.publication.author=Auteur
coser.business.publication.catchfilename=Nom du fichier captures
coser.business.publication.comment=Commentaire
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2012-08-09 10:36:21 UTC (rev 1033)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2012-08-09 15:38:09 UTC (rev 1034)
@@ -106,7 +106,7 @@
if (resultFile != null) {
WebService webService = ServiceFactory.getWebService();
try {
- webService.registerNewUploadedResults(resultFile);
+ webService.registerNewUploadedResults(login, resultFile);
} catch (CoserBusinessException ex) {
throw new CoserWebException("Can't register new result file", ex);
}
1
0
09 Aug '12
Author: echatellier
Date: 2012-08-09 12:36:21 +0200 (Thu, 09 Aug 2012)
New Revision: 1033
Url: http://forge.codelutin.com/repositories/revision/coser/1033
Log:
refs #1335 : Ajouter la gestion d'une troisi?\195?\168me langue : espagnol
Added:
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties
trunk/coser-web/src/main/webapp/images/es.png
trunk/coser-web/src/main/webapp/images/zones/es.png
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java
trunk/coser-business/src/test/resources/webindicators.csv
trunk/coser-business/src/test/resources/webzones.csv
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java
trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp
trunk/coser-web/src/main/webapp/WEB-INF/decorators/sublayout.jsp
trunk/coser-web/src/main/webapp/styles/coser.css
trunk/pom.xml
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-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -46,6 +46,7 @@
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
@@ -786,7 +787,7 @@
public File getRsufiResultComChart(Project project, File resultDirectory,
RSufiResult rsufiResult, File codeTypeEspecesFile, String indicator,
String list, String zoneDisplayName, String indicatorName, String unit,
- String locale) throws CoserBusinessException {
+ Locale locale) throws CoserBusinessException {
File result = null;
@@ -861,9 +862,10 @@
// cas special, c'est la seule valeur du fichier
// code type espece qui a besoin d'une traduction
if (tuple[4].equalsIgnoreCase("T")) {
- // FIXME fix locale
- if (locale.equalsIgnoreCase("fr")) {
+ if ("fr".equals(locale.getLanguage())) {
chartTitle += " - " + "Tous Liste " + localList.charAt(1);
+ } else if ("es".equals(locale.getLanguage())) {
+ chartTitle += " - " + "Todo Lista " + localList.charAt(1);
} else {
chartTitle += " - " + "All List " + localList.charAt(1);
}
@@ -871,8 +873,10 @@
else {
// ajout de la traduction du nom de liste plus le numéro
// FIXME fix locale
- if (locale.equalsIgnoreCase("fr")) {
+ if ("fr".equals(locale.getLanguage())) {
chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
+ } else if ("es".equals(locale.getLanguage())) {
+ chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
} else {
chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
}
@@ -900,8 +904,10 @@
// FIXME echatellier 20110414 hack just for year, need a real locale object here
// to call _(locale, i18nkey)
String yearAxis = "Year";
- if ("fr".equals(locale)) {
+ if ("fr".equals(locale.getLanguage())) {
yearAxis = "Ann\u00E9e";
+ } else if ("es".equals(locale.getLanguage())) {
+ yearAxis = "A\u00F1o";
}
CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
categoryAxis.setCategoryMargin(0);
@@ -963,7 +969,7 @@
*/
public File getRsufiResultPopChart(Project project, File resultDirectory,
RSufiResult rsufiResult, String species, String indicator,
- String zoneDisplayName, String indicatorName, String unit, String locale) throws CoserBusinessException {
+ String zoneDisplayName, String indicatorName, String unit, Locale locale) throws CoserBusinessException {
File result = null;
@@ -1035,8 +1041,10 @@
// FIXME echatellier 20110414 hack just for year, need a real locale object here
// to call _(locale, i18nkey)
String yearAxis = "Year";
- if ("fr".equals(locale)) {
+ if ("fr".equals(locale.getLanguage())) {
yearAxis = "Ann\u00E9e";
+ } else if ("es".equals(locale.getLanguage())) {
+ yearAxis = "Ann\u00E9e";
}
CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
categoryAxis.setCategoryMargin(0);
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -167,7 +167,7 @@
* @return indicators map
* @throws CoserBusinessException
*/
- public MultiKeyMap getIndicatorsMap() throws CoserBusinessException {
+ protected MultiKeyMap getIndicatorsMap() throws CoserBusinessException {
if (indicatorsMap == null) {
indicatorsMap = new MultiKeyMap();
@@ -175,11 +175,12 @@
DataStorage indicatorsStorage = commonService.loadCSVFile(indicatorsFile);
Iterator<String[]> iteratorInd = indicatorsStorage.iterator(true);
while (iteratorInd.hasNext()) {
- // "id";"label_fr";"label_en";"unit"
+ // "id";"label_fr";"label_en";"label_es";"unit"
String[] indicator = iteratorInd.next();
indicatorsMap.put(indicator[0], "fr", indicator[1]);
indicatorsMap.put(indicator[0], "en", indicator[2]);
- indicatorsMap.put(indicator[0], "unit", indicator[3]);
+ indicatorsMap.put(indicator[0], "es", indicator[3]);
+ indicatorsMap.put(indicator[0], "unit", indicator[4]);
}
}
@@ -187,6 +188,22 @@
}
/**
+ * Get indicator translation by checking correct locale.
+ *
+ * @param indicator indicator code
+ * @param locale locale
+ * @return indicator translation
+ */
+ protected String getIndicatorValue(String indicator, String localeCode) throws CoserBusinessException {
+ String localLocaleCode = localeCode;
+ if (!"fr".equals(localLocaleCode) && !"es".equals(localLocaleCode)
+ && !"unit".equals(localLocaleCode)) {
+ localLocaleCode = "en"; // en by default
+ }
+ return (String)getIndicatorsMap().get(indicator, localLocaleCode);
+ }
+
+ /**
* Charge les zones disponibles depuis le fichier des zones.
* (zoneid, zonename)
*
@@ -224,7 +241,7 @@
public String getZoneFullName(String zoneId) throws CoserBusinessException {
DataStorage localZoneMap = getZonesMap();
String resultName = null;
- // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map"
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
int zoneIndex = localZoneMap.indexOf(zoneId);
if (zoneIndex != -1) {
resultName = localZoneMap.get(zoneIndex)[2];
@@ -1044,7 +1061,7 @@
*/
public Map<String, String> getFacades() throws CoserBusinessException {
Map<String, String> facades = new LinkedHashMap<String, String>();
- // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"map"
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
DataStorage zonesMap = getZonesMap();
Iterator<String[]> itZone = zonesMap.iterator(true);
while (itZone.hasNext()) {
@@ -1072,7 +1089,7 @@
Collection<String> subZones = new ArrayList<String>();
Iterator<String[]> itZone = getZonesMap().iterator(true);
while (itZone.hasNext()) {
- // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"map"
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
String[] tuple = itZone.next();
if (tuple[1].equals(facade)) {
subZones.add(tuple[0]);
@@ -1148,7 +1165,7 @@
// get subzone for main zone
Iterator<String[]> itZone = getZonesMap().iterator(true);
while (itZone.hasNext()) {
- // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"map"
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
String[] tuple = itZone.next();
String facadeid = tuple[1];
String zoneid = tuple[0];
@@ -1164,34 +1181,6 @@
}
/**
- * Pour une zone principale, recupere la liste des campagnes qui sont
- * disponible dans cette zone principale.
- *
- * @param facade facade (le nom de la facade principale)
- * @return couple campagneid/campagnename
- * @throws CoserBusinessException
- * @deprecated unused since 1.0.3
- */
- @Deprecated
- public Map<String, String> getSurveyForFacade(String facade) throws CoserBusinessException {
- Map<String, String> surveyForFacade = new HashMap<String, String>();
-
- // get subzone for main zone
- Iterator<String[]> itZone = getZonesMap().iterator(true);
- while (itZone.hasNext()) {
- // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"map"
- String[] tuple = itZone.next();
- if (tuple[1].equals(facade)) {
- if (!surveyForFacade.containsKey(tuple[5])) {
- surveyForFacade.put(tuple[5], tuple[5]);
- }
- }
- }
-
- return surveyForFacade;
- }
-
- /**
* Recupere la liste des cartes pour chaque id de zone sous forme de Map.
*
* @return zone images map
@@ -1202,9 +1191,9 @@
Iterator<String[]> itZone = getZonesMap().iterator(true);
while (itZone.hasNext()) {
- // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"map"
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
String[] tuple = itZone.next();
- result.put(tuple[0], tuple[8]);
+ result.put(tuple[0], tuple[9]);
}
return result;
@@ -1213,20 +1202,21 @@
/**
* Recupere la liste des meta info pour chaque id de zone sous forme de Map.
*
- * @param locale locale ({@code fr} ou {@code en})
+ * @param locale locale
* @return zone meta info map
* @throws CoserBusinessException
*/
- public Map<String, String> getZoneMetaInfo(String locale) throws CoserBusinessException {
+ public Map<String, String> getZoneMetaInfo(Locale locale) throws CoserBusinessException {
Map<String, String> result = new HashMap<String, String>();
Iterator<String[]> itZone = getZonesMap().iterator(true);
while (itZone.hasNext()) {
- // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"map"
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
String[] tuple = itZone.next();
- // FIXME echatellier 20120208 replace with real locale object
- if ("fr".equalsIgnoreCase(locale)) {
+ if (locale != null && "fr".equals(locale.getLanguage())) {
result.put(tuple[0], tuple[6]);
+ } else if (locale != null && "es".equals(locale.getLanguage())) {
+ result.put(tuple[0], tuple[8]);
} else {
result.put(tuple[0], tuple[7]);
}
@@ -1298,83 +1288,7 @@
return result;
}
-
- /**
- * Recuperer la liste des populations pour une campagnes donnée.
- *
- * Les resultats retourné ne peuvent être que de type "carte".
- *
- * @param survey survey id
- * @return map species nom info>nom officiel
- * @throws CoserBusinessException
- * @deprecated unused since 1.0.3
- */
- @Deprecated
- public Map<String, String> getSpeciesForSurvey(String survey) throws CoserBusinessException {
- Map<String, String> result = new TreeMap<String, String>();
-
- // parcours des resultats disponibles
- File projectsDirectory = config.getWebMapsProjectsDirectory();
- File[] projectFiles = projectsDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
-
- // selection iteration
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
-
- // result iteration
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // extraction des especes pour le résultat demandé
- if (rsufiResult.getZone() != null && rsufiResult.isMapsResult()) {
-
- // test parmis toutes les zones disponible
- // si le resultat appartient a une zone
- // qui porte sur la campagne demandée
- boolean zoneRSufiResult = false;
- Iterator<String[]> itZone = getZonesMap().iterator(true);
- while (itZone.hasNext()) {
- // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"map"
- String[] tuple = itZone.next();
-
- if (tuple[5].equals(survey) && rsufiResult.getZone().equals(tuple[0])) {
- zoneRSufiResult = true;
- }
- }
-
- if (zoneRSufiResult) {
- // load project (without data to get reftax data)
- Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
-
- Map<String, String> resultSpecies = getRsufiResultSpecies(project, resultFile, rsufiResult);
- result.putAll(resultSpecies);
- break;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return result;
- }
-
/**
* Recupere la liste de toutes les especes nom sci et nom off à partir
* d'un resultat.
@@ -1429,11 +1343,11 @@
*
* @param zone zone id
* @param species especes (if {@code null} look for com indicators
- * @param locale locale ({@code fr} ou {@code en})
+ * @param locale locale
* @return la liste des indicateurs
* @throws CoserBusinessException
*/
- public Map<String, String> getIndicators(String zone, String species, String locale) throws CoserBusinessException {
+ public Map<String, String> getIndicators(String zone, String species, Locale locale) throws CoserBusinessException {
Map<String, String> indicators = new TreeMap<String, String>();
// parcours des resultats disponibles
@@ -1492,14 +1406,12 @@
* @param resultDirectory rsufi result directory
* @param rsufiResult result
* @param species to get indicator
- * @param locale locale ({@code fr} ou {@code en})
+ * @param locale locale
* @return indicator for species
* @throws CoserBusinessException
*/
- protected Map<String, String> getRsufiResultPopIndicators(File resultDirectory, RSufiResult rsufiResult, String species, String locale) throws CoserBusinessException {
+ protected Map<String, String> getRsufiResultPopIndicators(File resultDirectory, RSufiResult rsufiResult, String species, Locale locale) throws CoserBusinessException {
- MultiKeyMap defaultIndicators = getIndicatorsMap();
-
Map<String, String> result = new HashMap<String, String>();
// le fichier estcomind
@@ -1516,9 +1428,9 @@
if (specyCode.equals(species)) {
String indicatorCode = tuple[1];
- String translations = (String)defaultIndicators.get(indicatorCode, locale.toLowerCase());
+ String translations = getIndicatorValue(indicatorCode, locale.getLanguage());
if (translations == null) {
- translations = "##" + indicatorCode + "##";
+ translations = "##" + indicatorCode + "##" + locale.getLanguage();
}
result.put(indicatorCode, translations);
}
@@ -1533,14 +1445,12 @@
*
* @param resultDirectory rsufi result directory
* @param rsufiResult result
- * @param locale locale ({@code fr} ou {@code en})
+ * @param locale locale
* @return indicator for species
* @throws CoserBusinessException
*/
- protected Map<String, String> getRsufiResultComIndicators(File resultDirectory, RSufiResult rsufiResult, String locale) throws CoserBusinessException {
+ protected Map<String, String> getRsufiResultComIndicators(File resultDirectory, RSufiResult rsufiResult, Locale locale) throws CoserBusinessException {
- MultiKeyMap defaultIndicators = getIndicatorsMap();
-
Map<String, String> result = new HashMap<String, String>();
// le fichier estcomind
@@ -1554,9 +1464,9 @@
String[] tuple = estPopIndIterator.next();
String indicatorCode = tuple[1];
- String translations = (String)defaultIndicators.get(indicatorCode, locale.toLowerCase());
+ String translations = getIndicatorValue(indicatorCode, locale.getLanguage());
if (translations == null) {
- translations = "##" + indicatorCode + "##";
+ translations = "##" + indicatorCode + "##" + locale.getLanguage();
}
result.put(indicatorCode, translations);
}
@@ -1569,11 +1479,11 @@
*
* @param zone zone id
* @param indicator indicator
- * @param locale locale ({@code fr} ou {@code en})
+ * @param locale locale
* @return la liste des indicateurs
* @throws CoserBusinessException
*/
- public Map<String, String> getIndicatorLists(String zone, String indicator, String locale) throws CoserBusinessException {
+ public Map<String, String> getIndicatorLists(String zone, String indicator, Locale locale) throws CoserBusinessException {
// linked hash map (doit respecter l'ordre d'insertion)
Map<String, String> indicators = new LinkedHashMap<String, String>();
@@ -1631,12 +1541,12 @@
* @param resultDirectory rsufi result directory
* @param rsufiResult result
* @param indicator indicator
- * @param locale locale ({@code fr} ou {@code en})
+ * @param locale locale
* @return indicator for species
* @throws CoserBusinessException
*/
protected Map<String, String> getRsufiResultComIndicatorLists(File resultDirectory,
- RSufiResult rsufiResult, File codeTypeEspecesFile, String indicator, String locale) throws CoserBusinessException {
+ RSufiResult rsufiResult, File codeTypeEspecesFile, String indicator, Locale locale) throws CoserBusinessException {
// linked hash map (doit respecter l'ordre d'insertion)
Map<String, String> result = new LinkedHashMap<String, String>();
@@ -1670,18 +1580,20 @@
// cas special, c'est la seule valeur du fichier
// code type espece qui a besoin d'une traduction
if (tupleType[4].equalsIgnoreCase("T")) {
- // FIXME fix locale
- if ("fr".equalsIgnoreCase(locale)) {
+ if (locale != null && "fr".equals(locale.getLanguage())) {
translation = "Tous Liste " + list.charAt(1);
+ } else if (locale != null && "en".equals(locale.getLanguage())) {
+ translation = "Todo Lista " + list.charAt(1);
} else {
translation = "All List " + list.charAt(1);
}
}
else {
// ajout de la traduction du nom de liste plus le numéro
- // FIXME fix locale
- if ("fr".equalsIgnoreCase(locale)) {
+ if (locale != null && "fr".equals(locale.getLanguage())) {
translation = tupleType[0] + " Liste " + list.charAt(1);
+ } else if (locale != null && "en".equals(locale.getLanguage())) {
+ translation = tupleType[0] + " Lista " + list.charAt(1);
} else {
translation = tupleType[0] + " List " + list.charAt(1);
}
@@ -1704,11 +1616,11 @@
* @param species especes (if {@code null} look for com indicators
* @param indicator indicator
* @param list indicator's list (if {@code null} look for pop indicators or no list selected
- * @param locale locale ({@code fr} ou {@code en})
+ * @param locale locale
* @return la liste des indicateurs
* @throws CoserBusinessException
*/
- public File getChart(String zone, String species, String indicator, String list, String locale) throws CoserBusinessException {
+ public File getChart(String zone, String species, String indicator, String list, Locale locale) throws CoserBusinessException {
File result = null;
// parcours des resultats disponibles
@@ -1738,8 +1650,8 @@
// load project (without data to get reftax data)
Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
- String indicatorName = (String)getIndicatorsMap().get(indicator, locale);
- String unit = (String)getIndicatorsMap().get(indicator, "unit");
+ String indicatorName = getIndicatorValue(indicator, locale.getLanguage());
+ String unit = getIndicatorValue(indicator, "unit");
String zoneDisplayName = getZoneFullName(zone);
@@ -1782,11 +1694,11 @@
* @param species especes (if {@code null} look for com indicators
* @param indicator indicator
* @param list indicator's list (if {@code null} look for pop indicators or no list selected
- * @param locale locale ({@code fr} ou {@code en})
+ * @param locale locale
* @return la liste des indicateurs
* @throws CoserBusinessException
*/
- public File getChartData(String zone, String species, String indicator, String list, String locale) throws CoserBusinessException {
+ public File getChartData(String zone, String species, String indicator, String list, Locale locale) throws CoserBusinessException {
File result = null;
// parcours des resultats disponibles
@@ -1840,13 +1752,13 @@
* @param species species (can be null for community)
* @param indicator indicator
* @param list indicator's list (if {@code null} look for pop indicators or no list selected
- * @param locale locale (fr/en)
+ * @param locale locale
* @return generated file (auto delete when jvm shutdown)
* @throws CoserBusinessException
*/
protected File getChartDataFile(File projectsDirectory, File projectDirectory, File selectionDirectory,
File resultDirectory, RSufiResult rSufiResult, String species, String indicator, String list,
- String locale) throws CoserBusinessException {
+ Locale locale) throws CoserBusinessException {
File result = null;
@@ -1960,60 +1872,6 @@
}
/**
- * Generate map file into pdf file.
- *
- * @param survey survey
- * @param species species
- * @return pdf file
- * @throws CoserBusinessException
- * @deprecated not used anymore (at least 1.1.0)
- */
- @Deprecated
- public File getMapFileAsPDF(String survey, String species) throws CoserBusinessException {
-
- File result = null;
-
- OutputStream os = null;
- try {
- // render freemarker template
- File mapFile = getMapFile(survey, species);
-
- Template mapTemplate = freemarkerConfiguration.getTemplate("map.ftl");
- Map<String, Object> root = new HashMap<String, Object>();
- root.put("mapFile", mapFile.getAbsolutePath());
-
- Writer out = new StringWriter();
- mapTemplate.process(root, out);
- out.flush();
-
- // get content as w3c document
- Document document = CoserUtils.parseDocument(out.toString());
-
- // render template output as pdf
- result = File.createTempFile("coserpdf", ".pdf");
- result.deleteOnExit();
- os = new FileOutputStream(result);
-
- ITextRenderer renderer = new ITextRenderer();
- renderer.setDocument(document, null);
- renderer.layout();
- renderer.createPDF(os);
-
- os.close();
-
- } catch (IOException ex) {
- throw new CoserBusinessException("Can't generate pdf with map", ex);
- } catch (TemplateException ex) {
- throw new CoserBusinessException("Can't generate pdf with map", ex);
- } catch (DocumentException ex) {
- throw new CoserBusinessException("Can't generate pdf with map", ex);
- } finally {
- IOUtils.closeQuietly(os);
- }
- return result;
- }
-
- /**
* Genere un fichier zip des sources d'un projet.
*
* Contient:
@@ -2023,11 +1881,11 @@
* </ul>
*
* @param zone zone (zoneid-surveyname)
- * @param locale locale (fr/en)
+ * @param locale locale
* @return zip source file (auto delete when jvm shutdown)
* @throws CoserBusinessException
*/
- public File getSourceZip(String zone, String locale) throws CoserBusinessException {
+ public File getSourceZip(String zone, Locale locale) throws CoserBusinessException {
File result = null;
@@ -2095,7 +1953,7 @@
* @throws CoserBusinessException
*/
protected File generateSourceZip(Project project, Selection selection, File resultDirectory,
- RSufiResult rSufiResult, String locale) throws CoserBusinessException {
+ RSufiResult rSufiResult, Locale locale) throws CoserBusinessException {
if (!rSufiResult.isDataAllowed()) {
throw new CoserBusinessException("Can't download source for non allowed result");
@@ -2113,9 +1971,10 @@
// add decharge file
File dechargePDF = generateDechargePDF(resultDirectory, rSufiResult, locale);
String filename = null;
- // FIXME chatellier 20120228 a remplacer par une vraie locale
- if ("fr".equalsIgnoreCase(locale)) {
+ if (locale != null && "fr".equals(locale.getLanguage())) {
filename = "DechargeDonnees.pdf";
+ } else if (locale != null && "es".equals(locale.getLanguage())) {
+ filename = "DatosDeExencionDeResponsabilidad.pdf";
} else {
filename = "DataDisclaimer.pdf";
}
@@ -2150,7 +2009,7 @@
* @return le fichier généré
* @throws CoserBusinessException
*/
- protected File generateDechargePDF(File resultDirectory, RSufiResult rSufiResult, String locale) throws CoserBusinessException {
+ protected File generateDechargePDF(File resultDirectory, RSufiResult rSufiResult, Locale locale) throws CoserBusinessException {
File result = null;
@@ -2162,14 +2021,7 @@
String surveyName = projectService.getProjectSurveyName(resultDirectory, rSufiResult);
// render freemarker template
- // FIXME chatellier 20120228 a remplacer par un vrai
- // freemarkerConfiguration.getTemplate("decharge.ftl", locale);
- Template mapTemplate = null;
- if ("fr".equalsIgnoreCase(locale)) {
- mapTemplate = freemarkerConfiguration.getTemplate("decharge_fr.ftl");
- } else {
- mapTemplate = freemarkerConfiguration.getTemplate("decharge_en.ftl");
- }
+ Template mapTemplate = freemarkerConfiguration.getTemplate("decharge.ftl", locale);
Map<String, Object> root = new HashMap<String, Object>();
root.put("updateDate", updateDate);
@@ -2215,12 +2067,12 @@
* @param resultDirectory result directory
* @param rsufiResult rsufi result
* @param indicator indicator
- * @param locale locale (en, fr)
+ * @param locale locale
* @return generated pdf file
* @throws CoserBusinessException
*/
protected File generateMetaFilePDF(Project project, Selection selection, File resultDirectory,
- RSufiResult rsufiResult, String indicator, String locale) throws CoserBusinessException {
+ RSufiResult rsufiResult, String indicator, Locale locale) throws CoserBusinessException {
File result = null;
@@ -2287,7 +2139,7 @@
}
// get indicator full name
- String indicatorName = (String)getIndicatorsMap().get(indicatorCode, locale);
+ String indicatorName = getIndicatorValue(indicatorCode, locale.getLanguage());
// peut arriver pour les indicateurs inconnu par coser
if (indicatorName != null) {
indicatorList.add(indicatorName);
@@ -2345,14 +2197,7 @@
OutputStream os = null;
try {
// render freemarker template
- // FIXME chatellier 20110506 a remplacer par un vrai
- // freemarkerConfiguration.getTemplate("metainfo.ftl", locale);
- Template mapTemplate = null;
- if ("fr".equalsIgnoreCase(locale)) {
- mapTemplate = freemarkerConfiguration.getTemplate("metainfo_fr.ftl");
- } else {
- mapTemplate = freemarkerConfiguration.getTemplate("metainfo_en.ftl");
- }
+ Template mapTemplate = freemarkerConfiguration.getTemplate("metainfo.ftl", locale);
Map<String, Object> root = new HashMap<String, Object>();
root.put("indicatorsMap", indicatorMap);
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -28,6 +28,7 @@
import java.io.File;
import java.io.IOException;
import java.net.URL;
+import java.util.Locale;
import java.util.Map;
import org.apache.commons.collections.map.MultiKeyMap;
@@ -89,7 +90,7 @@
@Test
public void testGetIndicators() throws CoserBusinessException {
MultiKeyMap indicators = webService.getIndicatorsMap();
- Assert.assertEquals(93, indicators.size());
+ Assert.assertEquals(124, indicators.size());
}
/**
@@ -121,10 +122,10 @@
*/
@Test
public void testGetZoneMetaInfo() throws CoserBusinessException {
- Map<String, String> zonesMetaInfos = webService.getZoneMetaInfo("fr");
+ Map<String, String> zonesMetaInfos = webService.getZoneMetaInfo(Locale.FRENCH);
Assert.assertEquals("Ensemble de la couverture Evhoe", zonesMetaInfos.get("gdgmc"));
- zonesMetaInfos = webService.getZoneMetaInfo("en");
+ zonesMetaInfos = webService.getZoneMetaInfo(Locale.ENGLISH);
Assert.assertEquals("Area covered by Evhoe survey", zonesMetaInfos.get("gdgmc"));
zonesMetaInfos = webService.getZoneMetaInfo(null);
@@ -165,7 +166,7 @@
public void testSourceZipError() throws CoserBusinessException, IOException {
registerUploadedResult("/web/upload2.zip");
- webService.getSourceZip("ecorse", "en");
+ webService.getSourceZip("ecorse", Locale.ENGLISH);
}
/**
@@ -180,14 +181,14 @@
public void testSourceZip() throws CoserBusinessException, IOException {
registerUploadedResult("/web/upload2.zip");
- File zip = webService.getSourceZip("testzone1", "en");
+ File zip = webService.getSourceZip("testzone1", Locale.ENGLISH);
File tempDir = FileUtil.createTempDirectory("coser", ".tmp");
ZipUtil.uncompress(zip, tempDir);
Assert.assertTrue(new File(tempDir, "RSUFI_DATA_projet1" + File.separator + "testcatch.csv").isFile());
Assert.assertTrue(new File(tempDir, "RSUFI_DATA_projet1" + File.separator + "DataDisclaimer.pdf").isFile());
FileUtils.deleteDirectory(tempDir);
- zip = webService.getSourceZip("testzone1", "fr");
+ zip = webService.getSourceZip("testzone1", Locale.FRENCH);
tempDir = FileUtil.createTempDirectory("coser", ".tmp");
ZipUtil.uncompress(zip, tempDir);
Assert.assertTrue(new File(tempDir, "RSUFI_DATA_projet1" + File.separator + "DechargeDonnees.pdf").isFile());
@@ -209,18 +210,6 @@
}
/**
- * Test la generation pdf avec l'inclusion d'image.
- *
- * @throws CoserBusinessException
- */
- @Test
- public void testGetMapFileAsPDF() throws CoserBusinessException {
- registerUploadedResult("/web/upload2.zip");
- File file = webService.getMapFileAsPDF("ecorse", "SPECIES1");
- Assert.assertTrue(file.isFile());
- }
-
- /**
* Test que la generation d'un graph fonctionne.
*
* @throws CoserBusinessException
@@ -228,7 +217,7 @@
@Test
public void testGetChartCom() throws CoserBusinessException {
registerUploadedResult("/web/upload2.zip");
- File file = webService.getChart("ecorse", null, "Lbcomm", null, "fr");
+ File file = webService.getChart("ecorse", null, "Lbcomm", null, Locale.FRENCH);
Assert.assertTrue(file.isFile());
}
@@ -240,7 +229,7 @@
@Test
public void testGetChartPop() throws CoserBusinessException {
registerUploadedResult("/web/upload2.zip");
- File file = webService.getChartData("ecorse", "COSER_SPECIES2", "lnN", null, "fr");
+ File file = webService.getChartData("ecorse", "COSER_SPECIES2", "lnN", null, Locale.FRENCH);
Assert.assertTrue(file.isFile());
}
@@ -253,7 +242,7 @@
@Test
public void testGetChartDataCom() throws CoserBusinessException {
registerUploadedResult("/web/upload2.zip");
- File file = webService.getChartData("ecorse", null, "lnN", null, "fr");
+ File file = webService.getChartData("ecorse", null, "lnN", null, Locale.FRENCH);
Assert.assertTrue(file.isFile());
}
@@ -266,7 +255,7 @@
@Test
public void testGetChartDataPop() throws CoserBusinessException {
registerUploadedResult("/web/upload2.zip");
- File file = webService.getChartData("ecorse", "COSER_SPECIES2", "lnN", null, "fr");
+ File file = webService.getChartData("ecorse", "COSER_SPECIES2", "lnN", null, Locale.FRENCH);
Assert.assertTrue(file.isFile());
}
@@ -278,7 +267,7 @@
@Test
public void testGetIndicatorLists() throws CoserBusinessException {
registerUploadedResult("/web/upload2.zip");
- Map<String, String> lists = webService.getIndicatorLists("ecorse", "Delta", "fr");
+ Map<String, String> lists = webService.getIndicatorLists("ecorse", "Delta", Locale.FRENCH);
Assert.assertEquals(2, lists.size());
Assert.assertEquals("Type2 Liste 1", lists.get("m1"));
Assert.assertEquals("Type2 Liste 2", lists.get("m2"));
Modified: trunk/coser-business/src/test/resources/webindicators.csv
===================================================================
--- trunk/coser-business/src/test/resources/webindicators.csv 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-business/src/test/resources/webindicators.csv 2012-08-09 10:36:21 UTC (rev 1033)
@@ -1,33 +1,33 @@
-"id";"label_fr";"label_en";"unit"
-"Abundance";"Abondance totale dans la zone (valeur relative)";"Total abundance in the area (relative value)";""
-"Biomass";"Biomasse totale dans la zone (valeur relative)";"Total biomass in the area (relative value)";""
-"Dbar";"Densité relative dans la zone";"Relative density in the area";""
-"l0.05";"Longueur au 5ème percentile de la distribution de longueur";"Length at the fifth percentile of the length distribution";"cm"
-"l0.25";"Longueur au 25ème percentile de la distribution de longueur";"Length at the twenty-fifth percentile of the length distribution";"cm"
-"l0.75";"Longueur au 75ème percentile de la distribution de longueur";"Length at the seventy-fifth percentile of the length distribution";"cm"
-"l0.95";"Longueur au 95ème percentile de la distribution de longueur";"Length at the ninety- fifth percentile of the length distribution";"cm"
-"L50";"Taille à 50 % de maturité";"Size at 50 % maturity";"cm"
-"Lbar";"Longueur moyenne dans la population";"Mean length in the population";"cm"
-"lnN";"Logarithme naturel de l'abondance";"Natural Logarithm of abundance";""
-"lvar";"Variance de la longueur dans l'échantillon";"Sample variance of length measurements";""
-"PropMat";"Proportion de matures";"Proportion of mature individuals";""
-"sexRatio";"Sexe ratio (males/femelles)";"Sex ratio (males/females)";""
-"Wbar";"Poids individuel moyen dans la population";"Average individual weight in the population";"kg"
-"biomBig";"Biomasse des grandes espèces (valeur relative)";"Biomass of the large species (relative value)";""
-"biomSmall";"Biomasse des petites espèces (valeur relative)";"Biomass of the small species (relative value)";""
-"Btot";"Biomasse totale dans la zone (valeur relative)";"Total biomass in the area (relative value)";""
-"Delta";"Indice de diversité Delta";"Diversity index Delta";""
-"Gtot";"Moyenne géométrique du nombre par espèce";"Geometric mean of species abundances";""
-"Lbcomm";"Taille moyenne dans communauté";"Average length in community";"cm"
-"meanQuant0.95";"Moyenne des l0;95 des espèces";"Average across species of l0;95";"cm"
-"meanWbar";"Moyenne des Wbar par espèce";"Average of species Wbar";"kg"
-"Ntot";"Abondance totale dans la zone (valeur relative)";"Total abundance in the area (relative value)";""
-"propL15";"Proportion des grands individus en nombre (taille seuil 15 cm)";"Proportion of large individuals in numbers (threshold size 15 cm)";""
-"propL20";"Proportion des grands individus en nombre (taille seuil 20 cm)";"Proportion of large individuals in numbers (threshold size 20 cm)";""
-"propL25";"Proportion des grands individus en nombre (taille seuil 25 cm)";"Proportion of large individuals in numbers (threshold size 25 cm)";""
-"propL30";"Proportion des grands individus en nombre (taille seuil 30 cm)";"Proportion of large individuals in numbers (threshold size 30 cm)";""
-"propLW";"Proportion des grands individus en poids (/ taille seuil spécifique à la zone)";"Proportion of large individuals in weight (/ threshold length area specific)";""
-"Shannonmod";"Indice de Shannon normalisé / première année";"Shannon index normalized wrt the first year";""
-"Wbcomm";"Poids moyen d'un individu)";"Average weight of an individual";"kg"
-"Wtot";"Biomasse totale dans la zone (valeur relative)";"Total biomass in the area (relative value)";""
+"id";"label_fr";"label_en";"label_es";"unit"
+"Abundance";"Abondance totale dans la zone (valeur relative)";"Total abundance in the area (relative value)";;""
+"Biomass";"Biomasse totale dans la zone (valeur relative)";"Total biomass in the area (relative value)";;""
+"Dbar";"Densité relative dans la zone";"Relative density in the area";;""
+"l0.05";"Longueur au 5ème percentile de la distribution de longueur";"Length at the fifth percentile of the length distribution";;"cm"
+"l0.25";"Longueur au 25ème percentile de la distribution de longueur";"Length at the twenty-fifth percentile of the length distribution";;"cm"
+"l0.75";"Longueur au 75ème percentile de la distribution de longueur";"Length at the seventy-fifth percentile of the length distribution";;"cm"
+"l0.95";"Longueur au 95ème percentile de la distribution de longueur";"Length at the ninety- fifth percentile of the length distribution";;"cm"
+"L50";"Taille à 50 % de maturité";"Size at 50 % maturity";;"cm"
+"Lbar";"Longueur moyenne dans la population";"Mean length in the population";;"cm"
+"lnN";"Logarithme naturel de l'abondance";"Natural Logarithm of abundance";;""
+"lvar";"Variance de la longueur dans l'échantillon";"Sample variance of length measurements";;""
+"PropMat";"Proportion de matures";"Proportion of mature individuals";;""
+"sexRatio";"Sexe ratio (males/femelles)";"Sex ratio (males/females)";;""
+"Wbar";"Poids individuel moyen dans la population";"Average individual weight in the population";;"kg"
+"biomBig";"Biomasse des grandes espèces (valeur relative)";"Biomass of the large species (relative value)";;""
+"biomSmall";"Biomasse des petites espèces (valeur relative)";"Biomass of the small species (relative value)";;""
+"Btot";"Biomasse totale dans la zone (valeur relative)";"Total biomass in the area (relative value)";;""
+"Delta";"Indice de diversité Delta";"Diversity index Delta";;""
+"Gtot";"Moyenne géométrique du nombre par espèce";"Geometric mean of species abundances";;""
+"Lbcomm";"Taille moyenne dans communauté";"Average length in community";;"cm"
+"meanQuant0.95";"Moyenne des l0;95 des espèces";"Average across species of l0;95";;"cm"
+"meanWbar";"Moyenne des Wbar par espèce";"Average of species Wbar";;"kg"
+"Ntot";"Abondance totale dans la zone (valeur relative)";"Total abundance in the area (relative value)";;""
+"propL15";"Proportion des grands individus en nombre (taille seuil 15 cm)";"Proportion of large individuals in numbers (threshold size 15 cm)";;""
+"propL20";"Proportion des grands individus en nombre (taille seuil 20 cm)";"Proportion of large individuals in numbers (threshold size 20 cm)";;""
+"propL25";"Proportion des grands individus en nombre (taille seuil 25 cm)";"Proportion of large individuals in numbers (threshold size 25 cm)";;""
+"propL30";"Proportion des grands individus en nombre (taille seuil 30 cm)";"Proportion of large individuals in numbers (threshold size 30 cm)";;""
+"propLW";"Proportion des grands individus en poids (/ taille seuil spécifique à la zone)";"Proportion of large individuals in weight (/ threshold length area specific)";;""
+"Shannonmod";"Indice de Shannon normalisé / première année";"Shannon index normalized wrt the first year";;""
+"Wbcomm";"Poids moyen d'un individu)";"Average weight of an individual";;"kg"
+"Wtot";"Biomasse totale dans la zone (valeur relative)";"Total biomass in the area (relative value)";;""
Modified: trunk/coser-business/src/test/resources/webzones.csv
===================================================================
--- trunk/coser-business/src/test/resources/webzones.csv 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-business/src/test/resources/webzones.csv 2012-08-09 10:36:21 UTC (rev 1033)
@@ -1,24 +1,24 @@
-"id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"map"
-"northibts";"merdunord";"Mer du Nord";"Toutes zones IBTS au sud de 57° 30' N";"1983 >";"IBTS";"Application prioritaire : cartes de distribution des espèces";"Selected area: species distribution maps";"C_Ciem-4b-4c-E7d.png"
-"northibts2";"merdunord";"Mer du Nord";"Toutes zones IBTS au sud de 57° 30' N";"2007 >";"IBTS";"Application prioritaire : cartes de distribution des espèces";"Selected area: species distribution maps";"C_Ciem-4b-4c.png"
-"ciem4b4c";"merdunord";"Mer du Nord";"CIEM 4b - 4c";"1983 >";"IBTS";"D'après données internationales extraites de la base Datras du CIEM";"Based on international data from ICES Datras data base";"C_Ciem-4b-4c.png"
-"ciem4c";"merdunord";"Mer du Nord";"CIEM 4c";"1983 >";"IBTS";"D'après données internationales extraites de la base Datras du CIEM";"Based on international data from ICES Datras data base";"C_Ciem-4c.png"
-"ciem4ce7d";"merdunord";"Mer du Nord";"CIEM 4c - Est 7d";"2007 >";"IBTS";"D'après données internationales extraites de la base Datras du CIEM";"Based on international data from ICES Datras data base";"C_Ciem-4c-E7d.png"
-"ciem4c4e7d";"merdunord";"Mer du Nord";"CIEM 4c4 - Est 7d";"2007 >";"IBTS";"- Détroit du Pas-de-Calais\n- D'après données internationales extraites de la base Datras du CIEM";"Based on international data from ICES Datras data base";"C_Ciem-4c4-E7d.png"
-"cieme7d";"mancheorientale";"Manche orientale";"Est de 1° 15' O";"1988 >";"CGFS";;;"C_Ciem-E7d.png"
-"ciem7d";"mancheorientale";"Manche orientale";"Ensemble Manche orientale";"1990 >";"CGFS";"Correspond à l'ensemble de la zone VIId du CIEM";"Corresponds to ICES Division VIId";"C_Ciem-7d.png"
-"noursom";"mancheorientale";"Manche orientale";"Baie de Somme";"1994 >";"Noursom";;;"C_Noursom.png"
-"nurvil";"atlantique";"Atlantique";"Baie de Vilaine";"1997 >";"Nurvil";;;"C_Nurvil.png"
-"noursein";"mancheorientale";"Manche orientale";"Baie de Seine";"1995 - 2010";"Noursein";"Série arrêtée en 2010";"Survey discontinued in 2010";"C_Noursein.png"
-"crustaflam";"mancheoccidentale";"Manche occidentale";"Abords du cap de Flamanville";"Juin 1985 >";"Crustaflam";"Série du mois de juin";"June survey";"C_Crustaflam.png"
-"crustaflam2";"mancheoccidentale";"Manche occidentale";"Abords du cap de Flamanville";"Sept. – 1985 >";"Crustaflam";"Série du mois de septembre";"September survey";"C_Crustaflam.png"
-"gdgmc";"atlantique";"Atlantique";"Golfe de Gascogne + mer Celtique";"1997 >";"Evhoe";"Ensemble de la couverture Evhoe";"Area covered by Evhoe survey";"C_GdG-MC.png"
-"mcech";"atlantique";"Atlantique";"Mer Celtique (strates d'échantillonnage)";"1997 >";"Evhoe";;;"C_MC-Ech.png"
-"mcciem7";"atlantique";"Atlantique";"Mer Celtique (zone VII du CIEM)";"1997 >";"Evhoe";"La limite sud de la zone VII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM";"The southern limit of ICES division VII (48 °N) corresponds to a regional limit of the MSFD. ";"C_MC-Ciem-7.png"
-"gdgech";"atlantique";"Atlantique";"Golfe de Gascogne (strates d'échantillonnage)";"1987 >";"Evhoe";;;"C_GdG-Ech.png"
-"gdgech2";"atlantique";"Atlantique";"Golfe de Gascogne (strates d'échantillonnage)";"1992 >";"Evhoe";"Plus d'espèces mesurées à partir de 1992";"Size measurements for more species from 1992";"C_GdG-Ech.png"
-"gdgciem7";"atlantique";"Atlantique";"Golfe de Gascogne (zone VIII du CIEM)";"1987 >";"Evhoe";"La limite nord de la zone VIII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM";"The northern limit of ICES division VIII (48 °N) corresponds to a regional limit of the MSFD.";"C_GdG-Ciem-7.png"
-"gdgciem72";"atlantique";"Atlantique";"Golfe de Gascogne (zone VIII du CIEM)";"1992 >";"Evhoe";"- La limite nord de la zone VIII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM\n- Plus d'espèces mesurées à partir de 1992";"The northern limit of ICES division VIII (48 °N) corresponds to a regional limit of the MSFD.\n- Size measurements for more species from 1992";"C_GdG-Ciem-7.png"
-"gdl";"mediteranee";"Méditerranée";"Golfe du Lion";"1994 >";"Medits";;;"C_GdL.png"
-"ecorse";"mediteranee";"Méditerranée";"Est-Corse";"1994 >";"Medits";"1997 exclue (couverture incomplète)";"1997 excluded (only partial coverage)";"C_E-Corse.png"
-"solper";"atlantique";"Atlantique";"Pertuis";"2005 >";"Solper";"Limitation aux Pertuis Charentais";"Limited to Pertuis Charentais";
+"id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es","map"
+"northibts";"merdunord";"Mer du Nord";"Toutes zones IBTS au sud de 57° 30' N";"1983 >";"IBTS";"Application prioritaire : cartes de distribution des espèces";"Selected area: species distribution maps";;"C_Ciem-4b-4c-E7d.png"
+"northibts2";"merdunord";"Mer du Nord";"Toutes zones IBTS au sud de 57° 30' N";"2007 >";"IBTS";"Application prioritaire : cartes de distribution des espèces";"Selected area: species distribution maps";;"C_Ciem-4b-4c.png"
+"ciem4b4c";"merdunord";"Mer du Nord";"CIEM 4b - 4c";"1983 >";"IBTS";"D'après données internationales extraites de la base Datras du CIEM";"Based on international data from ICES Datras data base";;"C_Ciem-4b-4c.png"
+"ciem4c";"merdunord";"Mer du Nord";"CIEM 4c";"1983 >";"IBTS";"D'après données internationales extraites de la base Datras du CIEM";"Based on international data from ICES Datras data base";;"C_Ciem-4c.png"
+"ciem4ce7d";"merdunord";"Mer du Nord";"CIEM 4c - Est 7d";"2007 >";"IBTS";"D'après données internationales extraites de la base Datras du CIEM";"Based on international data from ICES Datras data base";;"C_Ciem-4c-E7d.png"
+"ciem4c4e7d";"merdunord";"Mer du Nord";"CIEM 4c4 - Est 7d";"2007 >";"IBTS";"- Détroit du Pas-de-Calais\n- D'après données internationales extraites de la base Datras du CIEM";"Based on international data from ICES Datras data base";;"C_Ciem-4c4-E7d.png"
+"cieme7d";"mancheorientale";"Manche orientale";"Est de 1° 15' O";"1988 >";"CGFS";;;;"C_Ciem-E7d.png"
+"ciem7d";"mancheorientale";"Manche orientale";"Ensemble Manche orientale";"1990 >";"CGFS";"Correspond à l'ensemble de la zone VIId du CIEM";"Corresponds to ICES Division VIId";;"C_Ciem-7d.png"
+"noursom";"mancheorientale";"Manche orientale";"Baie de Somme";"1994 >";"Noursom";;;;"C_Noursom.png"
+"nurvil";"atlantique";"Atlantique";"Baie de Vilaine";"1997 >";"Nurvil";;;;"C_Nurvil.png"
+"noursein";"mancheorientale";"Manche orientale";"Baie de Seine";"1995 - 2010";"Noursein";"Série arrêtée en 2010";"Survey discontinued in 2010";;"C_Noursein.png"
+"crustaflam";"mancheoccidentale";"Manche occidentale";"Abords du cap de Flamanville";"Juin 1985 >";"Crustaflam";"Série du mois de juin";"June survey";;"C_Crustaflam.png"
+"crustaflam2";"mancheoccidentale";"Manche occidentale";"Abords du cap de Flamanville";"Sept. – 1985 >";"Crustaflam";"Série du mois de septembre";"September survey";;"C_Crustaflam.png"
+"gdgmc";"atlantique";"Atlantique";"Golfe de Gascogne + mer Celtique";"1997 >";"Evhoe";"Ensemble de la couverture Evhoe";"Area covered by Evhoe survey";;"C_GdG-MC.png"
+"mcech";"atlantique";"Atlantique";"Mer Celtique (strates d'échantillonnage)";"1997 >";"Evhoe";;;;"C_MC-Ech.png"
+"mcciem7";"atlantique";"Atlantique";"Mer Celtique (zone VII du CIEM)";"1997 >";"Evhoe";"La limite sud de la zone VII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM";"The southern limit of ICES division VII (48 °N) corresponds to a regional limit of the MSFD. ";;"C_MC-Ciem-7.png"
+"gdgech";"atlantique";"Atlantique";"Golfe de Gascogne (strates d'échantillonnage)";"1987 >";"Evhoe";;;;"C_GdG-Ech.png"
+"gdgech2";"atlantique";"Atlantique";"Golfe de Gascogne (strates d'échantillonnage)";"1992 >";"Evhoe";"Plus d'espèces mesurées à partir de 1992";"Size measurements for more species from 1992";;"C_GdG-Ech.png"
+"gdgciem7";"atlantique";"Atlantique";"Golfe de Gascogne (zone VIII du CIEM)";"1987 >";"Evhoe";"La limite nord de la zone VIII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM";"The northern limit of ICES division VIII (48 °N) corresponds to a regional limit of the MSFD.";;"C_GdG-Ciem-7.png"
+"gdgciem72";"atlantique";"Atlantique";"Golfe de Gascogne (zone VIII du CIEM)";"1992 >";"Evhoe";"- La limite nord de la zone VIII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM\n- Plus d'espèces mesurées à partir de 1992";"The northern limit of ICES division VIII (48 °N) corresponds to a regional limit of the MSFD.\n- Size measurements for more species from 1992";;"C_GdG-Ciem-7.png"
+"gdl";"mediteranee";"Méditerranée";"Golfe du Lion";"1994 >";"Medits";;;;"C_GdL.png"
+"ecorse";"mediteranee";"Méditerranée";"Est-Corse";"1994 >";"Medits";"1997 exclue (couverture incomplète)";"1997 excluded (only partial coverage)";;"C_E-Corse.png"
+"solper";"atlantique";"Atlantique";"Pertuis";"2005 >";"Solper";"Limitation aux Pertuis Charentais";"Limited to Pertuis Charentais";;
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-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -26,7 +26,6 @@
import static org.nuiton.i18n.I18n._;
import java.awt.Component;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -3,7 +3,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 Affero General Public License as published by
@@ -120,12 +120,11 @@
public String getIndicatorDisplayName() {
Locale locale = getLocale();
- String localeCode = locale.getLanguage();
WebService webService = ServiceFactory.getWebService();
String displayName = null;
try {
- displayName = webService.getIndicators(zone, null, localeCode).get(indicator);
+ displayName = webService.getIndicators(zone, null, locale).get(indicator);
} catch (CoserBusinessException ex) {
throw new CoserWebException("Can't get species display name", ex);
}
@@ -136,11 +135,10 @@
public String execute() {
Locale locale = getLocale();
- String localeCode = locale.getLanguage();
WebService webService = ServiceFactory.getWebService();
try {
- lists = webService.getIndicatorLists(zone, indicator, localeCode);
+ lists = webService.getIndicatorLists(zone, indicator, locale);
} catch (CoserBusinessException ex) {
throw new CoserWebException("Can't get indicator's list names", ex);
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -3,7 +3,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 Affero General Public License as published by
@@ -93,11 +93,10 @@
WebService webService = ServiceFactory.getWebService();
Locale locale = getLocale();
- String localeCode = locale.getLanguage();
InputStream input = null;
try {
- File mapImage = webService.getChart(zone, null, indicator, list, localeCode);
+ File mapImage = webService.getChart(zone, null, indicator, list, locale);
input = new FileInputStream(mapImage);
} catch (CoserBusinessException ex) {
throw new CoserWebException("Can't get map file", ex);
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -3,7 +3,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 Affero General Public License as published by
@@ -99,11 +99,10 @@
WebService webService = ServiceFactory.getWebService();
Locale locale = getLocale();
- String localeCode = locale.getLanguage();
InputStream input = null;
try {
- File mapImage = webService.getChartData(zone, null, indicator, list, localeCode);
+ File mapImage = webService.getChartData(zone, null, indicator, list, locale);
input = new FileInputStream(mapImage);
} catch (Exception ex) {
if (log.isErrorEnabled()) {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -3,7 +3,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 Affero General Public License as published by
@@ -135,10 +135,9 @@
WebService webService = ServiceFactory.getWebService();
Locale locale = getLocale();
- String localeCode = locale.getLanguage();
try {
- indicators = webService.getIndicators(zone, species, localeCode);
+ indicators = webService.getIndicators(zone, species, locale);
zonePicture = webService.getZonePictures().get(zone);
} catch (CoserBusinessException ex) {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -3,7 +3,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 Affero General Public License as published by
@@ -90,13 +90,12 @@
WebService webService = ServiceFactory.getWebService();
Locale locale = getLocale();
- String localeCode = locale.getLanguage();
try {
// renvoi la liste des id subzone-survey et leurs label associé
zones = webService.getZoneForFacade(facade, false, false);
zonesPictures = webService.getZonePictures();
- zonesMetaInfo = webService.getZoneMetaInfo(localeCode);
+ zonesMetaInfo = webService.getZoneMetaInfo(locale);
} catch (CoserBusinessException ex) {
throw new CoserWebException("Can't get zone map", ex);
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -3,7 +3,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 Affero General Public License as published by
@@ -50,13 +50,12 @@
WebService webService = ServiceFactory.getWebService();
Locale locale = getLocale();
- String localeCode = locale.getLanguage();
try {
// renvoi la liste des id subzone-survey et leurs label associé
zones = webService.getZoneForFacade(facade, false, true);
zonesPictures = webService.getZonePictures();
- zonesMetaInfo = webService.getZoneMetaInfo(localeCode);
+ zonesMetaInfo = webService.getZoneMetaInfo(locale);
} catch (CoserBusinessException ex) {
throw new CoserWebException("Can't get zone map", ex);
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -3,7 +3,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 Affero General Public License as published by
@@ -122,12 +122,11 @@
public String getIndicatorDisplayName() {
Locale locale = getLocale();
- String localeCode = locale.getLanguage();
WebService webService = ServiceFactory.getWebService();
String displayName = null;
try {
- displayName = webService.getIndicators(zone, species, localeCode).get(indicator);
+ displayName = webService.getIndicators(zone, species, locale).get(indicator);
} catch (CoserBusinessException ex) {
throw new CoserWebException("Can't get species display name", ex);
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -3,7 +3,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 Affero General Public License as published by
@@ -94,11 +94,10 @@
WebService webService = ServiceFactory.getWebService();
Locale locale = getLocale();
- String localeCode = locale.getLanguage();
InputStream input = null;
try {
- File mapImage = webService.getChart(zone, species, indicator, null, localeCode);
+ File mapImage = webService.getChart(zone, species, indicator, null, locale);
input = new FileInputStream(mapImage);
} catch (CoserBusinessException ex) {
throw new CoserWebException("Can't get map file", ex);
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -3,7 +3,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 Affero General Public License as published by
@@ -98,11 +98,10 @@
WebService webService = ServiceFactory.getWebService();
Locale locale = getLocale();
- String localeCode = locale.getLanguage();
InputStream input = null;
try {
- File mapImage = webService.getChartData(zone, species, indicator, null, localeCode);
+ File mapImage = webService.getChartData(zone, species, indicator, null, locale);
input = new FileInputStream(mapImage);
} catch (Exception ex) {
if (log.isErrorEnabled()) {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -3,7 +3,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 Affero General Public License as published by
@@ -80,12 +80,11 @@
WebService webService = ServiceFactory.getWebService();
Locale locale = getLocale();
- String localeCode = locale.getLanguage();
InputStream input = null;
try {
- File sourceZip = webService.getSourceZip(zone, localeCode);
+ File sourceZip = webService.getSourceZip(zone, locale);
input = new FileInputStream(sourceZip);
} catch (Exception ex) {
if (log.isErrorEnabled()) {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java 2012-08-09 10:36:21 UTC (rev 1033)
@@ -3,7 +3,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 Affero General Public License as published by
@@ -50,13 +50,12 @@
WebService webService = ServiceFactory.getWebService();
Locale locale = getLocale();
- String localeCode = locale.getLanguage();
try {
// renvoi la liste des id subzone-survey et leurs label associé
zones = webService.getZoneForFacade(facade, true, false);
zonesPictures = webService.getZonePictures();
- zonesMetaInfo = webService.getZoneMetaInfo(localeCode);
+ zonesMetaInfo = webService.getZoneMetaInfo(locale);
} catch (CoserBusinessException ex) {
throw new CoserWebException("Can't get zone map", ex);
}
Added: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties
===================================================================
--- trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties (rev 0)
+++ trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties 2012-08-09 10:36:21 UTC (rev 1033)
@@ -0,0 +1,190 @@
+###
+# #%L
+# Coser :: Web
+#
+# $Id$
+# $HeadURL$
+# %%
+# 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 Affero 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 Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# #L%
+###
+message.admin.title=Coser admin
+message.admin.indexaction=Actions d''administration
+message.admin.listprojects.deleteselected=Supprimer les projets s�lectionn�s
+message.admin.listprojects.title=Gestion des projets
+message.admin.listprojects.indicatorsprojects=Projects d'indicateur par zones
+message.admin.listprojects.indicatorsprojects.comment=La suppression d''un projets d''indicateur supprimera �galement la possibilit� de t�l�charger les donn�es sources du projet concern�.
+message.admin.listprojects.mapsprojects=Projects de cartes par zones
+message.admin.login=Identifiant
+message.admin.loginrequiered=Autentification requise
+message.admin.password=Mot de passe
+message.com.downloadascsv=T�l�charger en CSV
+message.com.downloadaszip=T�l�charger en ZIP
+message.com.moredetailspdf=Plus d''informations sur les indices calcul�s des communaut�s
+message.com.paragraph1=Des indices de communaut� sont calcul�s pour un ensemble de taxon dans chaque s�rie. La liste des taxons inclus pour le calcul de chaque indice varie selon les donn�es disponibles pour la r�alisation des calculs.
+message.com.paragraph2=La liste des esp�ces incluses dans le calcul de chaque indice de communaut� est pr�sent�e dans le dossier t�l�chargable sous chaque graphe (fichier \"Information.pdf\").
+message.com.selectindicatorlist=S�lectionner une liste de donn�es
+message.com.title=Indices de communaut�s
+message.common.anchortop=Haut
+message.common.facade=Facade
+message.common.jsreadmore=Voir la suite
+message.common.noresults=Aucun r�sultat disponible.
+message.common.selectfacade=S�lectionnez une fa�ade
+message.common.selectindicator=S�lectionnez un indicateur
+message.common.selectpop=S�lectionnez une population
+message.common.selectspecies=S�lectionnez une esp�ce
+message.common.selectsurvey=S�lectionnez une campagne
+message.common.selectzone=S�lectionnez une zone
+message.common.validform=Valider
+message.common.zone=Zone
+message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
+message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
+message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c�tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
+message.documents.genparagraph4=Poissons et invert�br�s au large des c�tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
+message.documents.gentitle1=Rapports g�n�raux
+message.documents.activityparagraph1=Battaglia A., V. M. Trenkel & M. J. Rochet, 2006. Estimating end effects in trawl catches. ICES J. Mar. Sci. 63: 956-959.
+message.documents.activityparagraph2=Lorance P., J. A. Bertrand, A. Brind''Amour, M. J. Rochet & V. Trenkel, 2009. Assessment of impacts from human activities on ecosystem components in the Bay of Biscay in the early 1990s. Aquatic living resources 22: 409-431.
+message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
+message.documents.activityparagraph4=Rochet M. J. & J. Rice, 2005. Do explicit criteria help in selecting indicators for ecosystem-based fisheries management? ICES J. Mar. Sci. 62: 528-539.
+message.documents.activityparagraph5=Rochet M. J. & V. Trenkel, 2003. Which community indicators can measure the impact of fishing? A review and proposals. Can. J. Fish. Aquat. Sci. 60: 86-99.
+message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
+message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
+message.documents.activityparagraph8=Trenkel V. & M. J. Rochet, 2003. Performance of indicators derived from abundance estimates for detecting the impact of fishing on a fish community. Can. J. Fish. Aquat. Sci. 60: 67-85.
+message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
+message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
+message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
+message.documents.title=Documents
+message.index.datatypecom=Des indices de communaut� par zone.
+message.index.datatypemap=Des cartes de distribution par esp�ce et par zone
+message.index.datatypepop=Des indices biologiques par esp�ce et par zone
+message.index.datatypesource=Des donn�es par op�ration d''�chantillonnage (en g�n�ral par trait de chalut)
+message.index.datatypetitle=Quatre types de donn�es sont pr�sent�es
+message.index.documentsmessage=Documents
+message.index.documentstitle=Documents
+message.index.paragraph1=Ce site a �t� con�u pour fournir en libre acc�s des donn�es brutes et des donn�es �labor�es relatives aux campagnes scientifiques d''observation halieutique conduites par l''Ifremer le long des c�tes fran�aises.
+message.index.paragraph2=Toutes les donn�es mises � disposition ont fait l''objet de qualification selon des protocoles sp�cifiques. La qualit� des interpr�tations �tant directement li�e � la nature des donn�es source, les utilisateurs de donn�es sont invit�s � consid�rer avec attention les descriptions des protocoles mis en \u0153uvre ainsi que les niveaux de qualit� contr�l�s.
+message.index.paragraph3=Chaque s�rie de campagnes est conduite selon une strat�gie d''�chantillonnage sp�cifique. Sauf cas particuliers, les analyses et interpr�tations doivent �tre conduites par s�rie, en prenant en compte les strat�gies d''�chantillonnage propres � chacune de ces s�ries. Sur le site, les donn�es sont pr�sent�es par s�rie.
+message.index.paragraph4=Dans les tables de donn�es, toutes les esp�ces sont identifi�es selon le r�f�rentiel taxinomique du Syst�me d''informations halieutiques de l''Ifremer ({0}).
+message.index.partnertitle=Membres du groupe
+message.index.partnerparagraph1=Les r�sultats pr�sent�s sur ce site sont le produit de l''activit� d''un groupe de travail de l''Ifremer qui se r�unit chaque ann�e depuis 2001 pour d�velopper des indicateurs de populations et de peuplements � partir des donn�es des s�ries de campagnes halieutiques standardis�es conduites depuis la fin des ann�es 1970 par l''Ifremer le long des c�tes de France m�tropolitaine. Les principaux membres du groupe sont (par ordre alphab�tique de site et de patronyme)\u00A0: Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz et Yves V�rin (Boulogne-sur-mer), Andr� Battaglia et Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� et Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet et Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin et Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud et Arnaud Souplet (S�te). La d�marche qualit� est g�r�e par Vincent Badts. Le support informatique de gestion des donn�es est assur� par Olivier Berthel�.
+message.index.qualitymessage=Avertissement qualit�
+message.index.qualitytitle=Avertissement qualit�
+message.index.quotemessage=Ifremer {0,date,yyyy}. Indices de populations et de communautés issus des campagnes de surveillance halieutique de l''Ifremer. {1} ({0,date,dd MMMM})
+message.index.quotetitle=Pour citer ce site
+message.index.surveyparagraph=Des manuels des protocoles d�crivent les modalit�s techniques de r�alisation de chaque s�rie de campagnes.
+message.index.surveytitle=Description des campagnes
+message.index.thankstitle=Remerciements
+message.index.thanksparagraph1=Bien que toutes les s�ries de campagnes dont des r�sultats sont pr�sent�s sur ce site aient �t� conduites par l''Ifremer, elles ont fait l''objet de financements vari�s. Certaines, apr�s une phase �ventuelle de financement unique par l''Ifremer font l''objet de cofinancements, comme les s�ries IBTS, Evhoe et Medits retenues au titre du r�glement europ�en sur la collecte des donn�es halieutiques (DCF). D''autres sont prises en charge en totalit� par l''Ifremer, comme les s�ries NourVil et CGFS (cette derni�re �tant en cours d''�valuation pour une reconnaissance au titre du r�glement europ�en sur la collecte des donn�es halieutiques - DCF). Pour la s�rie NourSein, les campagnes ont �t� co-financ�es par le conseil r�gional de Haute Normandie, le GPMH, le programme Liteau, le programme Seine Aval et le GIP-Seine Aval, selon les ann�es. Enfin, les s�ries Crustaflam et NourSomme sont financ�es en totalit� par EDF au titre de la surveillance de centrales nucl�aires littorales, dans le cadre de contrats entre Ifremer et EDF. Le pr�sent site a �t� cr�� gr\u00E2ce � un soutien du MEEDDM (contrat Ifremer-MEEDDM 2010). Pour l''�tablissement des indices en mer du Nord, les donn�es sources utilis�es sont celles mises � disposition par les diff�rents pays partenaires de la s�rie IBTS dans la base Datras du CIEM (http://datras.ices.dk)
+message.index.title=Bienvenida
+message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
+message.layout.oceanicdata2=le Syst�me d''information halieutique de l''Ifremer (SIH)
+message.layout.oceanicdatatitle=Gestion des donn�es des campagnes oc�anographiques � l''Ifremer
+message.layout.title=�ndices de las poblaciones y comunidades de las campa�as de seguimiento, que participan de la pesquer�a pulgadas Ifremer
+message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
+message.map.citationtitle=Citation
+message.map.downloadaspdf=T�l�charger en PDF
+message.map.linkarchimer=Acc�s � l''atlas : {0}
+message.map.paragraph1=L''objectif de cet atlas est de donner un aper�u de la distribution spatiale des esp�ces de poissons et de certains invert�br�s marins � partir des observations des campagnes de p�che scientifiques.
+message.map.paragraph2=Pour chaque zone un quadrillage syst�matique a �t� d�fini, puis la densit� moyenne par km\u00B2 dans chaque cellule a �t� calcul�e en utilisant les observations de toute la p�riode. Pour la repr�sentation cartographique, les cellules avec des densit�s moyenne correspondant aux quartiles de densit� ont re�u la m�me couleur\u00A0: bleu\u00A0: esp�ce jamais observ�e, jaune clair\u00A0: densit� moyenne entre [0 et 25\u00A0%[; jaune fonc�\u00A0: [25-50\u00A0%[, orange\u00A0: [50-75\u00A0%[ et rouge\u00A0: [75-100\u00A0%]. Donc, les zones o\u00F9 se trouvent les densit�s les plus �lev�es en moyenne sont repr�sent�es en rouge.
+message.map.title=Cartes de distribution
+message.map.warning=Avertissement
+message.map.warningcontent=Les cartes pr�sent�es ne doivent pas �tre interpr�t�es comme des cartes de distribution des esp�ces mais comme celle des zones o\u00F9 elles sont captur�es lors des campagnes scientifiques. Les campagnes �tant r�alis�es avec des chaluts diff�rents et � diff�rentes saisons, les esp�ces peuvent avoir des capturabilit�s tr�s diff�rentes entre les s�ries de campagnes, donc d''une zone � l''autre.
+message.pop.downloadascsv=T�l�charger en CSV
+message.pop.moredetailspdf=Plus d''informations sur les indices calcul�s des populations
+message.pop.paragraph1=Les indices pr�sent�s ont �t� s�lectionn�s en r�f�rence � leur aptitude � renseigner sur l''impact de la p�che, en vue de leur int�gration dans des tableaux de bord d''indicateurs d''�volution d''�cosyst�mes exploit�s par la p�che.
+message.pop.paragraph2=Les donn�es disponibles sur le site sont les valeurs de chaque indice. Les informations ont �t� valid�es par un groupe de travail dans une approche int�grative d''indicateurs de populations et de communaut�s. Les r�sultats sont donn�s par zone g�ographique et par esp�ce pour l''ensemble de la s�rie de donn�es disponible. L''utilisateur peut s�lectionner la zone g�ographique, la saison (dans le cas de s�ries saisonni�res), l''esp�ce et l''indice. Pour les s�lections pour lesquelles une information est disponible, le syst�me produit un graphe pr�sentant la distribution temporelle de l''indice, avec une repr�sentation de l''�cart-type. Il fournit la possibilit� d''extraire la table des donn�es correspondantes, incluant la valeur de l''indice par ann�e, ainsi que son �cart-type et son coefficient de variation.
+message.pop.title=Indices biologiques
+message.quality.acceptance=Je reconnais avoir pris connaissance des documents et des restrictions associ�es et je m''engage � citer la source des donn�es.
+message.quality.notaccepted=Vous devez valider les conditions Avertissement Qualit� !
+message.quality.paragraph1=Bien que les donn�es aient �t� pr�cautionneusement contr�l�es par l''Ifremer, des d�fauts inh�rents � l''agr�gation des informations peuvent persister. Par exemple\u00A0:
+message.quality.paragraph2=En d�pit du fait que toutes les donn�es de toutes les s�ries de campagnes soient pr�sent�es selon le m�me format, sauf cas particuliers, des diff�rences dans les strat�gies d''observation emp�chent la combinaison de donn�es de diff�rentes campagnes dans une m�me analyse. Par exemple, la capturabilit� d''une m�me esp�ce varie selon le type d''engin d''�chantillonnage utilis�. Il en r�sulte que chaque engin capture un sous-ensemble particulier des bioc�noses �chantillonn�es.
+message.quality.paragraph3=Une propri�t� commune aux s�ries d''observations � la mer est l''�volution dans le temps de la comp�tence des �quipes embarqu�es pour la d�termination des esp�ces. Il peut en r�sulter des apparitions, des disparitions ou des assignations sous un m�me nom de taxons proches dans les jeux de donn�es, non repr�sentatifs de l''�volution des populations concern�es dans l''�cosyst�me.
+message.quality.paragraph4=Pour les campagnes d''une m�me s�rie, des changements dans les proc�dures d''�chantillonnage, dans les caract�ristiques des engins, dans la p�riode de r�alisation de la campagne et la zone couverte peuvent influencer les captures. Pour pr�venir les risques de biais dans les analyses en raison de ces facteurs, les jeux de donn�es doivent �tre pr�alablement filtr�s ad�quatement.
+message.quality.paragraph5=Il est vivement recommand� aux utilisateurs de donn�es de les traiter avec pr�caution. Si des utilisateurs s''interrogent sur la validit� de donn�es, ils sont invit�s � contacter l''administrateur de la base de donn�es ({0}).
+message.quality.title=Avertissement Qualit�
+message.source.download=T�l�charger
+message.source.paragraph1=Les donn�es de base sont pr�sent�es selon quatre tables fournissant des informations de base �lev�es � l''op�ration d''�chantillonnage (en g�n�ral un trait de chalut) et organis�es selon des unit�s g�ographiques d�finies en relation avec le plan d''�chantillonnage. Une table suppl�mentaire pr�sente le r�f�rentiel taxinomique associ� aux donn�es. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
+message.source.paragraph2=Les donn�es IBTS (donn�es fran�aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr�les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
+message.source.paragraph3=Le site ne contient des donn�es de base que pour une partie des s�ries de campagnes pour lesquelles des indices de populations et de communaut�s sont pr�sent�s, selon les modalit�s d''acc�s � ces donn�es. Pour un acc�s aux s�ries de donn�es source, il convient de contacter l''administrateur du Syst�me d''informations halieutiques de l''Ifremer ({0}) pour les donn�es fran�aises, et le site Datras du CIEM (http://datras.ices.dk) pour les donn�es IBTS des autres pays.
+message.source.paragraph4=Les donn�es de campagnes halieutiques sont constitu�es � partir de stations d''�chantillonnage r�parties dans l''espace selon le principe de tirage stratifi�. La densit� de l''�chantillonnage conditionne la partition g�ographique selon laquelle les indices de population et de communaut� peuvent �tre �tablis.
+message.source.paragraph5=Les plans de zonage propos�s incluent le plan de r�f�rence correspondant au plan d''�chantillonnage, ainsi que des adaptations pour tenir compte des limites des sous-r�gions d�finies par la strat�gie marine europ�enne. Ils ont �t� valid�s par un groupe de travail de l''Ifremer, apr�s exploration de la sensibilit� de divers indices aux ajustements propos�s.
+message.source.title=Donn�es de base
+message.survey.atlantique.celtique.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1997. En moyenne 75 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 150 000 km\u00B2 de la mer Celtique.
+message.survey.atlantique.celtique.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
+message.survey.atlantique.celtique.plus=Pour en savoir plus sur les campagnes Evhoe
+message.survey.atlantique.celtique=Mer Celtique
+message.survey.atlantique.gascogne.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1992 (sauf en 1993 et 1996). En moyenne, 70 traits de chalut d''une demi-heure au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface de 0,067 km\u00B2. Cette campagne est repr�sentative des 72 500 km\u00B2 du golfe de Gascogne. La campagne Evhoe couvre donc le golfe de Gascogne et la mer Celtique avec le m�me protocole. De plus elle est coordonn�e internationalement, dans le cadre des campagnes IBTS, avec une campagne espagnole en mer Cantabrique, une campagne irlandaise et une campagne anglaise en mer Celtique.
+message.survey.atlantique.gascogne.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
+message.survey.atlantique.gascogne.plus=Pour en savoir plus sur les campagnes Evhoe
+message.survey.atlantique.gascogne=Golfe de Gascogne
+message.survey.atlantique.vilaine.desc=Campagne sur la nourricerie de la baie de Vilaine (NourVil), d''une semaine � l''automne, tous les ans de 1980 � 2010, sauf en 1991, 1994, 1995, 1998, 1999, 2006 et 2007, au chalut � perche de 3 m�tres de large. En moyenne, 30 chalutages de 15 minutes sont r�alis�s. Chaque trait couvre une surface d''environ 0,0041 km\u00B2. Cette campagne est repr�sentative des 330 km\u00B2 de la baie.
+message.survey.atlantique.vilaine.nourvil1=Manuel des protocoles Nourriceries Gascogne - V 1.0 (2002)
+message.survey.atlantique.vilaine.plus=Pour en savoir plus sur les campagnes Nourvil
+message.survey.atlantique.vilaine=Baie de Vilaine
+message.survey.atlantique=Fa�ade Atlantique
+message.survey.dataengincasier=Un �chantillonnage au casier pour les campagnes d''�valuation des grands crustac�s, en particulier le homard, aux abords du cap de Flamanville.
+message.survey.dataenginfond=Un chalut de fond � grande ouverture verticale pour l''observation des ressources d�mersales, sur les plateaux continentaux et le haut des pentes continentales (accores) en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne, golfe du Lion et Est de la Corse,
+message.survey.dataenginperche=Un chalut � perche pour les zones tr�s c�ti�res et les estuaires lors des campagnes visant les juv�niles de poissons plats : baies de Somme et de Vilaine,
+message.survey.dataengintitle=Diff�rents engins d''�chantillonnage sont utilis�s :
+message.survey.detailstitle=Caract�ristiques des campagnes de surveillance halieutique de l''Ifremer
+message.survey.maintitle=Les campagnes de surveillance halieutique de l''Ifremer
+message.survey.mancheoccidentale.flamanville.crustaflam1=Manuel des protocoles CRUSTAFLAM - Version 1.0 (2003)
+message.survey.mancheoccidentale.flamanville.desc=Deux campagnes de 15 jours aux casiers � crustac�s aux abords du cap de Flamanville (CrustaFlam), en juin et septembre, depuis 1986 : 1200 casiers relev�s par campagne sur une zone de 26 km\u00B2.
+message.survey.mancheoccidentale.flamanville.plus=Pour en savoir plus sur les campagnes CrustFlam
+message.survey.mancheoccidentale.flamanville=Abords du cap de Flamanville
+message.survey.mancheoccidentale=Fa�ade Manche occidentale
+message.survey.mancheorientale.baiedeseine=Baie de Seine
+message.survey.mancheorientale.baiedeseine.desc=Campagnes annuelles de prospection sur les nourriceries de l''estuaire de Seine et de la baie de Seine orientale (NourSeine) effectu�es essentiellement � l''automne, de 1995 � 2002. L''objectif premier �tait d''identifier les nourriceries c�ti�res de ce site et d''en �valuer la richesse halieutique et macro-�pibenthique. Environ 45 traits effectu�s � chaque campagne, � l''aide d''un chalut � perche standard.
+message.survey.mancheorientale.baiedeseine.plus=Pour en savoir plus sur les campagnes NourSeine
+message.survey.mancheorientale.baiedeseine.nourseine1=http://archimer.ifremer.fr/doc/00036/14714/
+message.survey.mancheorientale.baiedesomme.desc=Campagne de p�che sur la nourricerie de la baie de Somme (NourSomme) d''une semaine en septembre-octobre, tous les ans depuis 1995, aux chaluts � perche de 2 m�tres de large dans la partie la plus estuarienne de la baie et 3 m�tres dans la partie externe, plus marine. En moyenne 50 chalutages sont r�alis�s chaque ann�e. Ils durent en moyenne 7 minutes sur une surface de 0,001 km\u00B2 chacun dans la partie interne de la baie et 15 minutes sur une surface d''environ 0,004 km\u00B2 dans la partie externe. Cette campagne est repr�sentative des 720 km\u00B2 de la baie.
+message.survey.mancheorientale.baiedesomme.noursomme1=Manuel des protocoles Nourriceries Somme - V 1.0 (2002)
+message.survey.mancheorientale.baiedesomme.plus=Pour en savoir plus sur les campagnes NourSomme
+message.survey.mancheorientale.baiedesomme=Baie de Somme
+message.survey.mancheorientale.mancheorientale.cgfs1=Manuel des protocoles CGFS - Version 1.0 (2002)
+message.survey.mancheorientale.mancheorientale.desc=Campagne fran�aise CGFS (Channel Ground Fish Survey) d''un mois en octobre, coordonn�e au plan international avec les campagnes IBTS. La campagne a lieu tous les ans depuis 1988. En moyenne 90 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,03 km\u00B2. Cette campagne est repr�sentative des 70 748 km\u00B2 de la Manche orientale.
+message.survey.mancheorientale.mancheorientale.plus=Pour en savoir plus sur les campagnes CGFS
+message.survey.mancheorientale.mancheorientale=Manche orientale
+message.survey.mancheorientale=Fa�ade Manche orientale
+message.survey.mediterranee.estcorse.desc=Contribution fran�aise � la campagne internationale Medits (International bottom Trawl Surveys in the Mediterranean), d''une semaine au printemps, tous les ans depuis 1994, sauf en 2002, au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 20 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. La campagne est repr�sentative des 4 562 km\u00B2 du plateau insulaire de l''est de la Corse.
+message.survey.mediterranee.estcorse.medits1=Manuel des protocoles Medits, Version 1 (1994)
+message.survey.mediterranee.estcorse.medits2=Manuel des protocoles Medits, Version 2 (1995)
+message.survey.mediterranee.estcorse.medits3=Manuel des protocoles Medits, Version 3 (1999)
+message.survey.mediterranee.estcorse.medits4=Manuel des protocoles Medits, Version 4 (2001)
+message.survey.mediterranee.estcorse.medits5=Manuel des protocoles Medits, Version 5 (2007)
+message.survey.mediterranee.estcorse.plus=Pour en savoir plus sur les campagnes Medits
+message.survey.mediterranee.estcorse=Est de la Corse
+message.survey.mediterranee.golfelion.desc=Contribution fran�aise aux campagnes internationales Medits (International bottom Trawl Surveys in the Mediterranean), d''un mois au deuxi�me trimestre tous les ans depuis 1994 au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 69 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. Medits est repr�sentative des 13 860 km\u00B2 du golfe de Lion.
+message.survey.mediterranee.golfelion.medits1=Manuel des protocoles Medits, Version 1 (1994)
+message.survey.mediterranee.golfelion.medits2=Manuel des protocoles Medits, Version 2 (1995)
+message.survey.mediterranee.golfelion.medits3=Manuel des protocoles Medits, Version 3 (1999)
+message.survey.mediterranee.golfelion.medits4=Manuel des protocoles Medits, Version 4 (2001)
+message.survey.mediterranee.golfelion.medits5=Manuel des protocoles Medits, Version 5 (2007)
+message.survey.mediterranee.golfelion.plus=Pour en savoir plus sur les campagnes Medits
+message.survey.mediterranee.golfelion=Golfe du Lion
+message.survey.mediterranee=Fa�ade M�diterran�e
+message.survey.merdunord.sudmerdunord.desc=Contribution fran�aise d''un mois � la campagne internationale IBTS (International Bottom Trawl Survey) au premier trimestre, tous les ans depuis 1980, au chalut de fond � grande ouverture verticale. En moyenne, le navire fran�ais fait 58 chalutages par an. Le sud de la mer du Nord est couvert par 4 navires (fran�ais, belge, danois et allemand) qui r�alisent en tout environ 200 traits par an. Chaque trait dure une demi-heure et couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 678\u00A0000\u00A0km\u00B2 de la zone.
+message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
+message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
+message.survey.merdunord.sudmerdunord.plus=Pour en savoir plus sur les campagnes IBTS
+message.survey.merdunord.sudmerdunord=Sud mer du Nord
+message.survey.merdunord=Fa�ade Mer du Nord
+message.survey.paragraph1=Les campagnes de p�che scientifique standardis�es ont pour objectif d''observer les ressources halieutiques, en suivant toujours les m�mes m�thodes d''�chantillonnage. Elles sont toujours r�alis�es dans la m�me zone, � la m�me saison, avec des engins de p�che standardis�s, afin que les donn�es soient comparables d''ann�e en ann�e. Elles servent � d�crire les esp�ces, qu''elles soient commerciales ou non, d''une zone et � observer les changements s''il y en a. Les poissons, les mollusques et les crustac�s sont d�nombr�s, mesur�s et pes�s. Certains d''entre eux font l''objet de pr�l�vements biologiques. Chaque campagne fournit ainsi une repr�sentation quantitative de l''ensemble des esp�ces de la zone � une p�riode donn�e. Selon les s�ries, d''autres informations sont relev�es (temp�rature, salinit�, macrofaune, observation des mammif�res marins, oiseaux, macro d�chets etc., mais ne sont pas pr�sent�es dans ce site)
+message.survey.paragraph2=Depuis une vingtaine d''ann�es, l''Ifremer organise des campagnes de p�che scientifique en mer du Nord, en Manche, en Atlantique et en M�diterran�e concernant les ressources d�mersales et benthiques. L''objectif prioritaire est de produire des indices d''abondance des principales esp�ces commerciales. Elles recueillent �galement des donn�es sur les esp�ces captur�es non commerciales. Elles contribuent ainsi aux connaissances n�cessaires au d�veloppement de l''approche �cosyst�mique des p�ches, notamment dans le cadre de la politique commune des p�ches et plus largement de la strat�gie marine de l''Union europ�enne.
+message.survey.paragraph3=Les campagnes sont r�alis�es selon des plans d''�chantillonnage standardis�s. L''engin de p�che et son gr�ement, la position des stations, le tri des captures, les pr�l�vements biologiques suivent des protocoles fix�s.
+message.survey.paragraph4=Pour les campagnes coordonn�es entre navires de recherche des pays riverains en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne et M�diterran�e, les protocoles sont communs � l''ensemble des pays partenaires. Les traits de chalut des diff�rents navires de recherche sont comparables.
+message.survey.paragraph5=Chaque zone �tudi�e est d�coup�e en strates en fonction de la profondeur, de la latitude ou d''autres crit�res. L''�chantillonnage pr�voit un nombre de traits de chalut ou de mouillages de casiers par strate.
+message.survey.paragraph6=Dans une campagne de chalutage scientifique, les positions des traits de chalut sont choisies selon un plan d''�chantillonnage statistique. L''objectif n''est pas d''obtenir les meilleures captures possibles comme le recherchent les p�cheurs, mais de r�colter des donn�es comparables d''une ann�e sur l''autre afin de relever des �volutions.
Modified: trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2012-08-09 10:36:21 UTC (rev 1033)
@@ -75,6 +75,9 @@
<a href="<s:url namespace="/" action="locale">
<s:param name="request_locale">fr</s:param>
</s:url>" class="francais">Francais</a>
+ <a href="<s:url namespace="/" action="locale">
+ <s:param name="request_locale">es</s:param>
+ </s:url>" class="espagnol">Espagnol</a>
</div>
<decorator:body/>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/decorators/sublayout.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/decorators/sublayout.jsp 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/webapp/WEB-INF/decorators/sublayout.jsp 2012-08-09 10:36:21 UTC (rev 1033)
@@ -71,6 +71,9 @@
<a href="<s:url namespace="/" action="locale">
<s:param name="request_locale">fr</s:param>
</s:url>" class="francais">Francais</a>
+ <a href="<s:url namespace="/" action="locale">
+ <s:param name="request_locale">es</s:param>
+ </s:url>" class="espagnol">Espagnol</a>
</div>
<div class="page">
Added: trunk/coser-web/src/main/webapp/images/es.png
===================================================================
(Binary files differ)
Property changes on: trunk/coser-web/src/main/webapp/images/es.png
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:mime-type
+ image/png
Added: trunk/coser-web/src/main/webapp/images/zones/es.png
===================================================================
(Binary files differ)
Property changes on: trunk/coser-web/src/main/webapp/images/zones/es.png
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:mime-type
+ image/png
Modified: trunk/coser-web/src/main/webapp/styles/coser.css
===================================================================
--- trunk/coser-web/src/main/webapp/styles/coser.css 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/coser-web/src/main/webapp/styles/coser.css 2012-08-09 10:36:21 UTC (rev 1033)
@@ -482,7 +482,7 @@
text-indent: -999999px;
background: url(../images/gb.png) no-repeat;
position: absolute;
- right: 0;
+ right: 20px;
top: 10px;
width: 16px;
height: 11px;
@@ -498,7 +498,7 @@
text-indent: -999999px;
background: url(../images/fr.png) no-repeat;
position: absolute;
- right: 20px;
+ right: 40px;
top: 10px;
width: 16px;
height: 11px;
@@ -509,6 +509,22 @@
border: 2px solid #ffe600;
}
+#middle .top_content .espagnol {
+ display: block;
+ text-indent: -999999px;
+ background: url(../images/es.png) no-repeat;
+ position: absolute;
+ right: 0px;
+ top: 10px;
+ width: 16px;
+ height: 11px;
+ border: 2px solid transparent;
+}
+
+#middle .top_content .espagnol:hover {
+ border: 2px solid #ffe600;
+}
+
#middle .page .degrade ul li {
/*list-style: none;*/
/*padding-left: 20px;*/
@@ -597,15 +613,21 @@
#conteneur_int .top_content .anglais {
position: absolute;
top: 22px;
- right: 20px;
+ right: 40px;
}
#conteneur_int .top_content .francais {
position: absolute;
top: 22px;
- right: 40px;
+ right: 60px;
}
+#conteneur_int .top_content .espagnol {
+ position: absolute;
+ top: 22px;
+ right: 20px;
+}
+
#conteneur_int #middle .col_droite {
margin: 0;
}
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-08-09 08:39:35 UTC (rev 1032)
+++ trunk/pom.xml 2012-08-09 10:36:21 UTC (rev 1033)
@@ -377,12 +377,12 @@
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
- <version>8.0.4.v20111024</version>
+ <version>8.1.5.v20120716</version>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-jspc-maven-plugin</artifactId>
- <version>8.0.4.v20111024</version>
+ <version>8.1.5.v20120716</version>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
1
0
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
by echatellier@users.forge.codelutin.com 09 Aug '12
by echatellier@users.forge.codelutin.com 09 Aug '12
09 Aug '12
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>
1
0