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
January 2011
- 1 participants
- 174 discussions
r537 - in trunk: . coser-business coser-ui coser-web
by chatellier@users.labs.libre-entreprise.org 22 Jan '11
by chatellier@users.labs.libre-entreprise.org 22 Jan '11
22 Jan '11
Author: chatellier
Date: 2011-01-22 18:59:25 +0000 (Sat, 22 Jan 2011)
New Revision: 537
Log:
Update project version
Modified:
trunk/coser-business/pom.xml
trunk/coser-ui/pom.xml
trunk/coser-web/pom.xml
trunk/pom.xml
Modified: trunk/coser-business/pom.xml
===================================================================
--- trunk/coser-business/pom.xml 2011-01-21 16:07:02 UTC (rev 536)
+++ trunk/coser-business/pom.xml 2011-01-22 18:59:25 UTC (rev 537)
@@ -7,7 +7,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>coser</artifactId>
- <version>0.0.1-SNAPSHOT</version>
+ <version>1.0.0-beta1-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.coser</groupId>
Modified: trunk/coser-ui/pom.xml
===================================================================
--- trunk/coser-ui/pom.xml 2011-01-21 16:07:02 UTC (rev 536)
+++ trunk/coser-ui/pom.xml 2011-01-22 18:59:25 UTC (rev 537)
@@ -7,7 +7,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>coser</artifactId>
- <version>0.0.1-SNAPSHOT</version>
+ <version>1.0.0-beta1-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.coser</groupId>
Modified: trunk/coser-web/pom.xml
===================================================================
--- trunk/coser-web/pom.xml 2011-01-21 16:07:02 UTC (rev 536)
+++ trunk/coser-web/pom.xml 2011-01-22 18:59:25 UTC (rev 537)
@@ -7,7 +7,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>coser</artifactId>
- <version>0.0.1-SNAPSHOT</version>
+ <version>1.0.0-beta1-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.coser</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-01-21 16:07:02 UTC (rev 536)
+++ trunk/pom.xml 2011-01-22 18:59:25 UTC (rev 537)
@@ -11,7 +11,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>coser</artifactId>
- <version>0.0.1-SNAPSHOT</version>
+ <version>1.0.0-beta1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
1
0
r536 - in trunk: coser-business/src/main/java/fr/ifremer/coser/bean coser-business/src/main/java/fr/ifremer/coser/services coser-business/src/test/java/fr/ifremer/coser/services coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1 coser-business/src/test/resources/web coser-ui/src/main/java/fr/ifremer/coser/ui/result coser-ui/src/main/resources/i18n
by chatellier@users.labs.libre-entreprise.org 21 Jan '11
by chatellier@users.labs.libre-entreprise.org 21 Jan '11
21 Jan '11
Author: chatellier
Date: 2011-01-21 16:07:02 +0000 (Fri, 21 Jan 2011)
New Revision: 536
Log:
Refactoring publish > publiable.
Prise en compte de l'upload/export avec ou sans donn?\195?\169es de base.
Prise en compte des resultats de type indicateurs.
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java
trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties
trunk/coser-business/src/test/resources/web/upload2.zip
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java
trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java 2011-01-21 16:07:02 UTC (rev 536)
@@ -64,11 +64,14 @@
/** Utilisé seulement pour la validation (sinon, non valorisé). */
protected String mapsPath;
- /** Result selected for web publication. */
- protected boolean publishResult;
+ /** Result publiable. */
+ protected boolean publiableResult;
+ /** Result flaged as indicators result. */
+ protected boolean indicatorsResult;
+
/** Result flaged as maps result. */
- protected boolean mapsReferenceResult;
+ protected boolean mapsResult;
/** Data download allowed. */
protected boolean dataAllowed;
@@ -161,26 +164,36 @@
return mapsPath;
}
- public void setPublishResult(boolean publishResult) {
- boolean oldValue = this.publishResult;
- this.publishResult = publishResult;
- getPropertyChangeSupport().firePropertyChange("publishResult", oldValue, publishResult);
+ public void setPubliableResult(boolean publiableResult) {
+ boolean oldValue = this.publiableResult;
+ this.publiableResult = publiableResult;
+ getPropertyChangeSupport().firePropertyChange("publiableResult", oldValue, publiableResult);
}
- public boolean isPublishResult() {
- return publishResult;
+ public boolean isPubliableResult() {
+ return publiableResult;
}
- public boolean isMapsReferenceResult() {
- return mapsReferenceResult;
+ public boolean isIndicatorsResult() {
+ return indicatorsResult;
}
- public void setMapsReferenceResult(boolean mapsReferenceResult) {
- boolean oldValue = this.mapsReferenceResult;
- this.mapsReferenceResult = mapsReferenceResult;
- getPropertyChangeSupport().firePropertyChange("mapsReferenceResult", oldValue, mapsReferenceResult);
+ public void setIndicatorsResult(boolean indicatorsResult) {
+ boolean oldValue = this.indicatorsResult;
+ this.indicatorsResult = indicatorsResult;
+ getPropertyChangeSupport().firePropertyChange("indicatorsResult", oldValue, indicatorsResult);
}
+ public boolean isMapsResult() {
+ return mapsResult;
+ }
+
+ public void setMapsResult(boolean mapsResult) {
+ boolean oldValue = this.mapsResult;
+ this.mapsResult = mapsResult;
+ getPropertyChangeSupport().firePropertyChange("mapsResult", oldValue, mapsResult);
+ }
+
public boolean isDataAllowed() {
return dataAllowed;
}
@@ -208,9 +221,10 @@
if (getEstPopIndName() != null) {
props.setProperty("result.estPopIndName", getEstPopIndName());
}
- props.setProperty("result.publishResult", String.valueOf(isPublishResult()));
+ props.setProperty("result.publiableResult", String.valueOf(isPubliableResult()));
+ props.setProperty("result.indicatorsResult", String.valueOf(isIndicatorsResult()));
+ props.setProperty("result.mapsResult", String.valueOf(isMapsResult()));
props.setProperty("result.dataAllowed", String.valueOf(isDataAllowed()));
- props.setProperty("result.mapsReferenceResult", String.valueOf(isMapsReferenceResult()));
return props;
}
@@ -231,14 +245,17 @@
if (props.containsKey("result.estPopIndName")) {
setEstPopIndName(props.getProperty("result.estPopIndName"));
}
- if (props.containsKey("result.publishResult")) {
- setPublishResult(Boolean.parseBoolean(props.getProperty("result.publishResult")));
+ if (props.containsKey("result.publiableResult")) {
+ setPubliableResult(Boolean.parseBoolean(props.getProperty("result.publiableResult")));
}
if (props.containsKey("result.dataAllowed")) {
setDataAllowed(Boolean.parseBoolean(props.getProperty("result.dataAllowed")));
}
- if (props.containsKey("result.mapsReferenceResult")) {
- setMapsReferenceResult(Boolean.parseBoolean(props.getProperty("result.mapsReferenceResult")));
+ if (props.containsKey("result.indicatorsResult")) {
+ setIndicatorsResult(Boolean.parseBoolean(props.getProperty("result.indicatorsResult")));
}
+ if (props.containsKey("result.mapsResult")) {
+ setMapsResult(Boolean.parseBoolean(props.getProperty("result.mapsResult")));
+ }
}
}
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 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2011-01-21 16:07:02 UTC (rev 536)
@@ -107,7 +107,7 @@
protected CoserBusinessConfig config;
protected ImportService importService;
-
+
protected CommandService commandService;
public ProjectService(CoserBusinessConfig config) {
@@ -2742,23 +2742,6 @@
}
/**
- * Look for project survey name in container data.
- *
- * @param container data container
- * @return survey name
- */
- public String getProjectSurveyName(AbstractDataContainer container) {
- String result = null;
-
- Iterator<String[]> itCatchData = container.getCatch().iterator(true);
- while (StringUtils.isEmpty(result) && itCatchData.hasNext()) {
- result = itCatchData.next()[Catch.INDEX_SURVEY];
- }
-
- return result;
- }
-
- /**
* Look for project survey name in rsufi result.
* Read estcomind file to known that.
* Used in webservice to know map file names.
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 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-21 16:07:02 UTC (rev 536)
@@ -96,7 +96,8 @@
import freemarker.template.TemplateException;
/**
- * Service specifique à l'interface web de visualisation.
+ * Service specifique à l'interface web de visualisation et à la partie UI
+ * qui sert a envouer les resultats vers l'interface web.
*
* Ce service, contrairement aux autres a un état, les indicateurs et zones
* chargées persistent après chargement, car elle ne peuvent pas changer
@@ -104,7 +105,8 @@
*
* Il faut garder à l'esprit que les projets n'ont pas forcement
* de resultat, donc le chargement du projet est possible, mais
- * pas les données de controle et les données de selection.
+ * pas les données de controle et les données de selection (dont plutot
+ * travailler sur les fichiers estcomind/estpopind que sur les 4 tables).
*
* @author chatellier
* @version $Revision$
@@ -313,7 +315,7 @@
}
if (onlyPubliableResult) {
- result &= rsufiResult.isPublishResult();
+ result &= rsufiResult.isPubliableResult();
}
return result;
@@ -324,11 +326,11 @@
*
* @param selectedResults selected result paths
* @param extractDirectory extract directory (can be null)
- * @param exportWithData include csv data during export
+ * @param publishDataResults result paths flaged with results export
* @return extracted file (no automatically deleted)
* @throws CoserBusinessException
*/
- public File performResultExtract(Collection<RSufiResultPath> selectedResults, File extractDirectory, boolean exportWithData) throws CoserBusinessException {
+ public File performResultExtract(Collection<RSufiResultPath> selectedResults, Collection<RSufiResultPath> publishDataResults, File extractDirectory) throws CoserBusinessException {
File prepareZip = null;
try {
prepareZip = File.createTempFile("coserextract-", ".zip", extractDirectory);
@@ -341,7 +343,7 @@
project = projectService.openProject(project.getName());
OneResultFileFilter oneRFF = new OneResultFileFilter(config,
- project, path.getSelection(), path.getRsufiResult(), exportWithData);
+ project, path.getSelection(), path.getRsufiResult(), publishDataResults.contains(path));
mFileFilters.add(oneRFF);
}
@@ -364,11 +366,12 @@
* Upload user selected result to coser web front-end using common http
* client.
*
- * TODO remove les 3 listes s'il y a mieux.
+ * TODO remove les 4 listes s'il y a mieux.
*
* @param selectedResults selected result (collection of project/selection/rsufiresult)
- * @param mapResults result selected as list result
- * @param publishDataResults result selected as results published with data
+ * @param indicatorsResults results selected as indicator results
+ * @param mapResults results selected as map result
+ * @param publishDataResults results selected as results published with data
* @param login remote admin login
* @param password remote admin password
* @param progress progress monitor
@@ -376,8 +379,9 @@
* @throws CoserBusinessException
*/
public String performResultUpload(Collection<RSufiResultPath> selectedResults,
- Collection<RSufiResultPath> mapResults, Collection<RSufiResultPath> publishDataResults,
- String login, String password, ProgressMonitor progress) throws CoserBusinessException {
+ Collection<RSufiResultPath> indicatorsResults, Collection<RSufiResultPath> mapResults,
+ Collection<RSufiResultPath> publishDataResults, String login,
+ String password, ProgressMonitor progress) throws CoserBusinessException {
String uploadStatus = null;
@@ -387,7 +391,7 @@
progress.setCurrent(0);
progress.setText(_("coser.business.uploadresult.modifyResultOptions"));
- modifyRSufiResults(selectedResults, mapResults, publishDataResults);
+ modifyRSufiResults(selectedResults, indicatorsResults, mapResults, publishDataResults);
progress.setText(_("coser.business.uploadresult.checkcollision"));
checkDataCollision(selectedResults);
@@ -395,7 +399,7 @@
progress.setText(_("coser.business.uploadresult.preparezip"));
// default extract to temp directory with data sources
- File prepareZip = performResultExtract(selectedResults, null, true);
+ File prepareZip = performResultExtract(selectedResults, publishDataResults, null);
progress.setText(_("coser.business.uploadresult.sendzip"));
progress.setTotal((int)prepareZip.length());
@@ -445,11 +449,13 @@
* data sources result).
*
* @param selectedResults selected result (collection of project/selection/rsufiresult)
+ * @param indicatorsResults results selected as indicator results
* @param mapResults map results
* @param publishDataResults publish data results
* @throws CoserBusinessException
*/
- protected void modifyRSufiResults(Collection<RSufiResultPath> selectedResults, Collection<RSufiResultPath> mapResults,
+ protected void modifyRSufiResults(Collection<RSufiResultPath> selectedResults,
+ Collection<RSufiResultPath> indicatorsResults, Collection<RSufiResultPath> mapResults,
Collection<RSufiResultPath> publishDataResults) throws CoserBusinessException {
// TODO echatellier 20110117 revoir ce code
@@ -460,14 +466,21 @@
// reset type map and data source for all
for (RSufiResultPath selectedResult : selectedResults) {
RSufiResult rsufiResult = selectedResult.getRsufiResult();
- rsufiResult.setMapsReferenceResult(false);
+ rsufiResult.setIndicatorsResult(false);
+ rsufiResult.setMapsResult(false);
rsufiResult.setDataAllowed(false);
}
// set map type
+ for (RSufiResultPath indicatorsResult : indicatorsResults) {
+ RSufiResult rsufiResult = indicatorsResult.getRsufiResult();
+ rsufiResult.setIndicatorsResult(true);
+ }
+
+ // set map type
for (RSufiResultPath mapResult : mapResults) {
RSufiResult rsufiResult = mapResult.getRsufiResult();
- rsufiResult.setMapsReferenceResult(true);
+ rsufiResult.setMapsResult(true);
}
// set data type
@@ -487,7 +500,7 @@
File selectionDirectory = new File(selectionsDirectory, selection.getName());
File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY);
File resultDirectory = new File(resultsDirectory, rsufiResult.getName());
-
+
projectService.saveRSufiResult(resultDirectory, rsufiResult);
}
}
@@ -509,7 +522,7 @@
RSufiResult rsufiResult = selectedResult.getRsufiResult();
// on creer une clé composé pour l'id du resultat
- String resultZoneTypeId = rsufiResult.getZone() + String.valueOf(rsufiResult.isMapsReferenceResult());
+ String resultZoneTypeId = rsufiResult.getZone() + String.valueOf(rsufiResult.isMapsResult());
if (resultZoneTypeIds.contains(resultZoneTypeId)) {
throw new CoserBusinessException(_("coser.business.resultupload.duplicatedresult",
project.getName(), selection.getName(), rsufiResult.getName(), rsufiResult.getZone()));
@@ -1132,7 +1145,7 @@
RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
// extraction des especes pour le résultat demandé
- if (rsufiResult.getZone() != null && rsufiResult.isMapsReferenceResult()) {
+ if (rsufiResult.getZone() != null && rsufiResult.isMapsResult()) {
// test parmis toutes les zones disponible
// si le resultat appartient a une zone
@@ -1530,7 +1543,7 @@
RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
// extraction des especes pour le résultat demandé
- if (rsufiResult.getZone() != null && rsufiResult.isMapsReferenceResult()) {
+ if (rsufiResult.getZone() != null && rsufiResult.isMapsResult()) {
// test parmis toutes les zones disponible
// si le resultat appartient a une zone
@@ -1665,9 +1678,12 @@
// load selection data (to do data export rsufi)
Selection selection = project.getSelections().get(selectionFile.getName());
+
+ // be sure that data are available for this project
+ // or it will fail
projectService.loadSelectionData(projectsDirectory,project, selection);
- result = generateSourceZip(project, selection);
+ result = generateSourceZip(project, selection, resultFile, rsufiResult);
}
}
}
@@ -1685,12 +1701,16 @@
/**
* Generate zip for selection.
*
+ * Be sure that data are available for this project.
+ *
* @param project project
* @param selection selection with loaded data
+ * @param resultDirectory rsufi result directory
+ * @param rSufiResult rsufi result
* @return generated zip file (auto delete when jvm shutdown)
* @throws CoserBusinessException
*/
- protected File generateSourceZip(Project project, Selection selection) throws CoserBusinessException {
+ protected File generateSourceZip(Project project, Selection selection, File resultDirectory, RSufiResult rSufiResult) throws CoserBusinessException {
File resultZip = null;
@@ -1702,7 +1722,7 @@
File archiveDir = projectService.extractRSUfiData(project, selection, tempDir);
// add decharge file
- File dechargePDF = generateDechargePDF(selection);
+ File dechargePDF = generateDechargePDF(resultDirectory, rSufiResult);
FileUtils.copyFile(dechargePDF, new File(archiveDir, "DechargeDonnees.pdf"));
// make zip
@@ -1722,11 +1742,12 @@
/**
* Genere le PDF dynamique de decharge à partir du template freemarker.
*
- * @param selection selection with loaded data
+ * @param resultDirectory rsufi result directory
+ * @param rSufiResult rsufi result
* @return le fichier généré
* @throws CoserBusinessException
*/
- protected File generateDechargePDF(Selection selection) throws CoserBusinessException {
+ protected File generateDechargePDF(File resultDirectory, RSufiResult rSufiResult) throws CoserBusinessException {
File result = null;
@@ -1734,7 +1755,7 @@
// get some info to put into pdf
Date updateDate = getLastDataUpdateDate();
- String surveyName = projectService.getProjectSurveyName(selection);
+ String surveyName = projectService.getProjectSurveyName(resultDirectory, rSufiResult);
// render freemarker template
Template mapTemplate = freemarkerConfiguration.getTemplate("decharge.ftl");
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 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2011-01-21 16:07:02 UTC (rev 536)
@@ -127,7 +127,7 @@
RSufiResult rSufiResult = selection.getRsufiResults().get(0);
Assert.assertEquals("testresult1", rSufiResult.getName());
Assert.assertEquals("myzone", rSufiResult.getZone());
- Assert.assertTrue(rSufiResult.isPublishResult());
+ Assert.assertTrue(rSufiResult.isPubliableResult());
// non validé
Project projectNotValidated = openTestProject(projectService, "project2");
Modified: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties
===================================================================
--- trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties 2011-01-21 16:07:02 UTC (rev 536)
@@ -1,6 +1,29 @@
-#Mon Jan 03 16:12:49 CET 2011
+###
+# #%L
+# Coser :: Business
+#
+# $Id$
+# $HeadURL$
+# %%
+# Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+# %%
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Lesser Public License for more details.
+#
+# You should have received a copy of the GNU General Lesser Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/lgpl-3.0.html>.
+# #L%
+###
result.rsufiversion=1.2.3
result.zone=myzone
result.estPopIndName=EstPopInd_test.txt
result.estComIndName=EstComInd_test.txt
-result.publishResult=true
\ No newline at end of file
+result.publiableResult=true
\ No newline at end of file
Modified: trunk/coser-business/src/test/resources/web/upload2.zip
===================================================================
(Binary files differ)
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx 2011-01-21 16:07:02 UTC (rev 536)
@@ -42,14 +42,6 @@
</cell>
</row>
<row>
- <cell anchor="east">
- <JCheckBox id="sourceDataExport" selected="true" />
- </cell>
- <cell columns="2" anchor="west">
- <JLabel text="coser.ui.uploadresult.extractWithData" />
- </cell>
- </row>
- <row>
<cell columns="3" anchor="east">
<JButton text="coser.ui.uploadresult.extract"
onActionPerformed="getHandler().performExtractResult(this)" />
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2011-01-21 16:07:02 UTC (rev 536)
@@ -75,7 +75,7 @@
// initialise les données avec les filtres par default
updateAvailableResultsFilter(view);
- view.getSelectedResultTableModel().setResultPath(new ArrayList<RSufiResultPath>());
+ view.getSelectedResultTableModel().setResultPaths(new ArrayList<RSufiResultPath>());
}
@@ -97,7 +97,7 @@
try {
List<RSufiResultPath> results = webService.findAllProjectWithResult(beginDate, endDate, onlyPubliable);
- view.getAvailableResultTableModel().setResultPath(results);
+ view.getAvailableResultTableModel().setResultPaths(results);
} catch (CoserBusinessException ex) {
throw new CoserException("Can't get results", ex);
}
@@ -111,19 +111,23 @@
public void addAvailableResult(SelectUploadResultView view) {
// get new result to add
- List<RSufiResultPath> currentResult = view.getSelectedResultTableModel().getResultPath();
+ List<RSufiResultPath> currentResult = view.getSelectedResultTableModel().getResultPaths();
int[] selectedAvailableRows = view.getAvailableResultTable().getSelectedRows();
for (int selectedAvailableRow : selectedAvailableRows) {
- RSufiResultPath resultData = view.getAvailableResultTableModel().getResultPath().get(selectedAvailableRow);
+ RSufiResultPath resultData = view.getAvailableResultTableModel().getResultPaths().get(selectedAvailableRow);
if (!currentResult.contains(resultData)) {
currentResult.add(resultData);
+
+ // indicator results are auto selected
+ // can be done only here
+ view.getSelectedResultTableModel().getIndicatorResults().add(resultData);
}
}
// les collisions ne peuvent pas être détecté a ce moment.
// seulement lors du clic sur le bouton export/upload
- view.getSelectedResultTableModel().setResultPath(currentResult);
+ view.getSelectedResultTableModel().setResultPaths(currentResult);
}
/**
@@ -132,14 +136,14 @@
* @param view view
*/
public void removeSelectedResult(SelectUploadResultView view) {
- List<RSufiResultPath> currentResult = view.getSelectedResultTableModel().getResultPath();
+ List<RSufiResultPath> currentResult = view.getSelectedResultTableModel().getResultPaths();
int[] selectedSelectedRows = view.getSelectedResultTable().getSelectedRows();
// need to remove reverse order
for (int index = selectedSelectedRows.length - 1 ; index >= 0 ; --index) {
int selectedSelectedRow = selectedSelectedRows[index];
currentResult.remove(selectedSelectedRow);
}
- view.getSelectedResultTableModel().setResultPath(currentResult);
+ view.getSelectedResultTableModel().setResultPaths(currentResult);
}
/**
@@ -155,10 +159,11 @@
// get result selected by user
SelectUploadResultView parentView = view.getContextValue(SelectUploadResultView.class, JAXXUtil.PARENT);
- final Collection<RSufiResultPath> selectedResult = parentView.getSelectedResultTableModel().getResultPath();
- final Collection<RSufiResultPath> mapResult = parentView.getSelectedResultTableModel().getMapResult();
- final Collection<RSufiResultPath> publishDataResult = parentView.getSelectedResultTableModel().getPublishDataResult();
- if (CollectionUtils.isNotEmpty(selectedResult)) {
+ final Collection<RSufiResultPath> selectedResults = parentView.getSelectedResultTableModel().getResultPaths();
+ final Collection<RSufiResultPath> indicatorResults = parentView.getSelectedResultTableModel().getResultPaths();
+ final Collection<RSufiResultPath> mapResults = parentView.getSelectedResultTableModel().getMapResults();
+ final Collection<RSufiResultPath> publishDataResults = parentView.getSelectedResultTableModel().getPublishDataResults();
+ if (CollectionUtils.isNotEmpty(selectedResults)) {
SwingWorker<String, Void> task = new SwingWorker<String, Void>() {
@Override
@@ -167,7 +172,7 @@
// get progress bar
CoserProgressBar progressBar = view.getUploadProgressBar();
WebService webService = view.getContextValue(WebService.class);
- String status = webService.performResultUpload(selectedResult, mapResult, publishDataResult, login, password, progressBar);
+ String status = webService.performResultUpload(selectedResults, indicatorResults, mapResults, publishDataResults, login, password, progressBar);
return status;
}
catch (CoserBusinessException ex) {
@@ -206,26 +211,23 @@
* @param view view
*/
public void performExtractResult(ExportUploadDialog view) {
-
+
// get extract directory
String extractPath = view.getExtractToTextField().getText();
File extractDirectory = new File(extractPath);
-
- // get source data option
- boolean withData = view.getSourceDataExport().isSelected();
SelectUploadResultView parentView = view.getContextValue(SelectUploadResultView.class, JAXXUtil.PARENT);
- Collection<RSufiResultPath> selectedResult = parentView.getSelectedResultTableModel().getResultPath();
+ Collection<RSufiResultPath> selectedResult = parentView.getSelectedResultTableModel().getResultPaths();
+ Collection<RSufiResultPath> publishDataResults = parentView.getSelectedResultTableModel().getPublishDataResults();
WebService webService = view.getContextValue(WebService.class);
try {
- webService.performResultExtract(selectedResult, extractDirectory, withData);
+ webService.performResultExtract(selectedResult, publishDataResults, extractDirectory);
JOptionPane.showMessageDialog(view, _("coser.ui.uploadresult.resultsextracted"),
_("coser.ui.uploadresult.title"), JOptionPane.INFORMATION_MESSAGE);
}
catch (CoserBusinessException ex) {
throw new CoserException("Can't upload results", ex);
}
-
}
/**
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java 2011-01-21 16:07:02 UTC (rev 536)
@@ -36,8 +36,8 @@
import fr.ifremer.coser.bean.RSufiResultPath;
/**
- * Model represantant la liste de tous les resultats rsufi present
- * dans le dossier de stockage de coser, tous projets confondu.
+ * Modele respresant une liste de resultat avec details sur les resulats
+ * affichés et options de selection.
*
* @author chatellier
* @version $Revision$
@@ -51,48 +51,60 @@
private static final long serialVersionUID = 6404018386062830677L;
/** Les données de la table. */
- protected List<RSufiResultPath> resultPath;
+ protected List<RSufiResultPath> resultPaths;
+ /** Les résultats marqués comme etant des données d'indicateurs. */
+ protected Set<RSufiResultPath> indicatorResults;
+
/** Les résultats marqué comme étant des données de map. */
- protected Set<RSufiResultPath> mapResult;
+ protected Set<RSufiResultPath> mapResults;
/** Les résultat dont la publication des données est autorisée. */
- protected Set<RSufiResultPath> publishDataResult;
+ protected Set<RSufiResultPath> publishDataResults;
/** Selected table tablemodel (do not show all columns). */
protected boolean selected;
public RsufiResultTableModel(boolean selected) {
this.selected = selected;
+
+ // les selections ne sont jamais supprimé
+ // mais vu l'equivalence equals/hascode
+ // ca ne doit pas poser de problemes
+ indicatorResults = new HashSet<RSufiResultPath>();
+ mapResults = new HashSet<RSufiResultPath>();
+ publishDataResults = new HashSet<RSufiResultPath>();
}
- public void setResultPath(List<RSufiResultPath> resultPath) {
- this.resultPath = resultPath;
- mapResult = new HashSet<RSufiResultPath>();
- publishDataResult = new HashSet<RSufiResultPath>();
+ public void setResultPaths(List<RSufiResultPath> resultPaths) {
+ this.resultPaths = resultPaths;
fireTableDataChanged();
}
- public List<RSufiResultPath> getResultPath() {
- return resultPath;
+ public List<RSufiResultPath> getResultPaths() {
+ return resultPaths;
}
- public Set<RSufiResultPath> getMapResult() {
- return mapResult;
+ public Set<RSufiResultPath> getIndicatorResults() {
+ return indicatorResults;
}
- public Set<RSufiResultPath> getPublishDataResult() {
- return publishDataResult;
+ public Set<RSufiResultPath> getMapResults() {
+ return mapResults;
}
+ public Set<RSufiResultPath> getPublishDataResults() {
+ return publishDataResults;
+ }
+
/*
* @see javax.swing.table.TableModel#getRowCount()
*/
@Override
public int getRowCount() {
int result = 0;
- if (resultPath != null) {
- result = resultPath.size();
+ if (resultPaths != null) {
+ result = resultPaths.size();
}
return result;
}
@@ -111,9 +123,12 @@
result = _("coser.ui.uploadresult.zone");
break;
case 3:
+ result = _("coser.ui.uploadresult.indicatorResult");
+ break;
+ case 4:
result = _("coser.ui.uploadresult.mapResult");
break;
- case 4:
+ case 5:
result = _("coser.ui.uploadresult.publishData");
break;
}
@@ -139,6 +154,9 @@
case 4:
result = Boolean.class;
break;
+ case 5:
+ result = Boolean.class;
+ break;
}
return result;
}
@@ -150,7 +168,7 @@
public int getColumnCount() {
int result = 3;
if (selected) {
- result = 5;
+ result = 6;
}
return result;
}
@@ -163,7 +181,7 @@
Object result = null;
- RSufiResultPath data = resultPath.get(rowIndex);
+ RSufiResultPath data = resultPaths.get(rowIndex);
RSufiResult rsufiResult = data.getRsufiResult();
switch (columnIndex) {
case 0:
@@ -176,15 +194,14 @@
result = rsufiResult.getZone();
break;
case 3:
- // c'est pas tres safe tu les hashcode des tableaux
- // mais bon...
- result = mapResult.contains(data);
+ result = indicatorResults.contains(data);
break;
case 4:
- // c'est pas tres safe tu les hashcode des tableaux
- // mais bon...
- result = publishDataResult.contains(data);
+ result = mapResults.contains(data);
break;
+ case 5:
+ result = publishDataResults.contains(data);
+ break;
}
return result;
@@ -198,26 +215,36 @@
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
- RSufiResultPath data = resultPath.get(rowIndex);
+ RSufiResultPath data = resultPaths.get(rowIndex);
if (columnIndex == 3) {
Boolean bValue = (Boolean)aValue;
if (bValue.booleanValue()) {
- mapResult.add(data);
+ indicatorResults.add(data);
}
else {
- mapResult.remove(data);
+ indicatorResults.remove(data);
}
}
else if (columnIndex == 4) {
Boolean bValue = (Boolean)aValue;
if (bValue.booleanValue()) {
- publishDataResult.add(data);
+ mapResults.add(data);
}
else {
- publishDataResult.remove(data);
+ mapResults.remove(data);
}
}
+
+ else if (columnIndex == 5) {
+ Boolean bValue = (Boolean)aValue;
+ if (bValue.booleanValue()) {
+ publishDataResults.add(data);
+ }
+ else {
+ publishDataResults.remove(data);
+ }
+ }
}
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx 2011-01-21 16:07:02 UTC (rev 536)
@@ -128,11 +128,11 @@
</row>
<row>
<cell anchor="west">
- <JLabel text="coser.ui.result.publishResult" />
+ <JLabel text="coser.ui.result.publiableResult" />
</cell>
<cell fill="horizontal" columns="2">
- <JCheckBox id="publishResultCheckBox"
- onActionPerformed="getRsufiResult().setPublishResult(publishResultCheckBox.isSelected())"/>
+ <JCheckBox id="publiableResultCheckBox"
+ onActionPerformed="getRsufiResult().setPubliableResult(publiableResultCheckBox.isSelected())"/>
</cell>
</row>
<row>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx 2011-01-21 16:07:02 UTC (rev 536)
@@ -70,11 +70,11 @@
</row>
<row>
<cell anchor="west">
- <JLabel text="coser.ui.result.publishResult" />
+ <JLabel text="coser.ui.result.publiableResult" />
</cell>
<cell fill="horizontal">
- <JCheckBox id="publishResultCheckBox" selected="{getRsufiResult().isPublishResult()}"
- onActionPerformed="getRsufiResult().setPublishResult(publishResultCheckBox.isSelected())"/>
+ <JCheckBox id="publiableResultCheckBox" selected="{getRsufiResult().isPubliableResult()}"
+ onActionPerformed="getRsufiResult().setPubliableResult(publiableResultCheckBox.isSelected())"/>
</cell>
</row>
<row>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2011-01-21 16:07:02 UTC (rev 536)
@@ -1,25 +1,23 @@
/*
* #%L
- *
- *
* $Id$
* $HeadURL$
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
+ * 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 Lesser Public License for more details.
+ * GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Lesser Public
+ * You should have received a copy of the GNU General Public
* License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java 2011-01-21 16:07:02 UTC (rev 536)
@@ -1,25 +1,23 @@
/*
* #%L
- *
- *
* $Id$
* $HeadURL$
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
+ * 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 Lesser Public License for more details.
+ * GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Lesser Public
+ * You should have received a copy of the GNU General Public
* License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
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 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2011-01-21 16:07:02 UTC (rev 536)
@@ -139,7 +139,7 @@
coser.ui.result.mapsDirectory=Maps directory \:
coser.ui.result.newResult=New Result
coser.ui.result.otherDataFile=Other files \:
-coser.ui.result.publishResult=Publiable \:
+coser.ui.result.publiableResult=Publiable \:
coser.ui.result.requiredestComIndPath=ESTCOMind file is required
coser.ui.result.requiredestPopIndPath=ESTPOPind file is required
coser.ui.result.requiredname=Result name is required
@@ -228,10 +228,10 @@
coser.ui.uploadresult.extract=Extract
coser.ui.uploadresult.extractChoice=Extract to directory
coser.ui.uploadresult.extractTo=Extract directory \:
-coser.ui.uploadresult.extractWithData=Extract results with sources data
coser.ui.uploadresult.filter.beginDate=Begin date \:
coser.ui.uploadresult.filter.endDate=End date \:
coser.ui.uploadresult.filter.publiableResults=Only publiables results
+coser.ui.uploadresult.indicatorResult=Indicator result
coser.ui.uploadresult.mapResult=Map result
coser.ui.uploadresult.path=Result path
coser.ui.uploadresult.publishData=Allow source data
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 2011-01-21 16:05:47 UTC (rev 535)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2011-01-21 16:07:02 UTC (rev 536)
@@ -139,7 +139,7 @@
coser.ui.result.mapsDirectory=R\u00E9pertoire des cartes \:
coser.ui.result.newResult=Nouveau r\u00E9sultat
coser.ui.result.otherDataFile=Autre fichiers \:
-coser.ui.result.publishResult=Publiable \:
+coser.ui.result.publiableResult=Publiable \:
coser.ui.result.requiredestComIndPath=Le fichier ESTCOMind est requis
coser.ui.result.requiredestPopIndPath=Le fichier ESTPOPind est requis
coser.ui.result.requiredname=Le nom du r\u00E9sultat est requis
@@ -228,13 +228,13 @@
coser.ui.uploadresult.extract=Extraire
coser.ui.uploadresult.extractChoice=Extraire vers un dossier
coser.ui.uploadresult.extractTo=Dossier d'extraction \:
-coser.ui.uploadresult.extractWithData=Extraire les r\u00E9sultats avec les donn\u00E9es sources
coser.ui.uploadresult.filter.beginDate=Date de d\u00E9but \:
coser.ui.uploadresult.filter.endDate=Date de fin \:
coser.ui.uploadresult.filter.publiableResults=Seulement les r\u00E9sultats publiables
+coser.ui.uploadresult.indicatorResult=R\u00E9sultat d'indicateurs
coser.ui.uploadresult.mapResult=R\u00E9sultat de cartes
coser.ui.uploadresult.path=Chemin du r\u00E9sultats
-coser.ui.uploadresult.publishData=Autoriser les sources
+coser.ui.uploadresult.publishData=Autoriser les donn\u00E9es de base
coser.ui.uploadresult.removeResults=Supprimer le r\u00E9sultat
coser.ui.uploadresult.resultsextracted=R\u00E9sultats extraits.
coser.ui.uploadresult.resultsuploaded=R\u00E9sultats publi\u00E9s.
1
0
r535 - trunk/coser-web/src/main/webapp/styles
by chatellier@users.labs.libre-entreprise.org 21 Jan '11
by chatellier@users.labs.libre-entreprise.org 21 Jan '11
21 Jan '11
Author: chatellier
Date: 2011-01-21 16:05:47 +0000 (Fri, 21 Jan 2011)
New Revision: 535
Log:
Update header
Modified:
trunk/coser-web/src/main/webapp/styles/coser.css
Modified: trunk/coser-web/src/main/webapp/styles/coser.css
===================================================================
--- trunk/coser-web/src/main/webapp/styles/coser.css 2011-01-21 14:06:14 UTC (rev 534)
+++ trunk/coser-web/src/main/webapp/styles/coser.css 2011-01-21 16:05:47 UTC (rev 535)
@@ -1,3 +1,26 @@
+/*
+ * #%L
+ * Coser :: Web
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin
+ * %%
+ * 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%
+ */
/*reset*/
* {
margin: 0;
1
0
r534 - in trunk: coser-business/src/main/java/fr/ifremer/coser/bean coser-business/src/main/java/fr/ifremer/coser/command coser-business/src/main/java/fr/ifremer/coser/control coser-business/src/main/java/fr/ifremer/coser/data coser-business/src/main/java/fr/ifremer/coser/services coser-business/src/main/java/fr/ifremer/coser/storage coser-business/src/main/java/fr/ifremer/coser/util coser-business/src/main/java/fr/ifremer/coser/validators coser-ui/src/main/java/fr/ifremer/coser/ui/result co
by chatellier@users.labs.libre-entreprise.org 21 Jan '11
by chatellier@users.labs.libre-entreprise.org 21 Jan '11
21 Jan '11
Author: chatellier
Date: 2011-01-21 14:06:14 +0000 (Fri, 21 Jan 2011)
New Revision: 534
Log:
Refactoring Object[] to RSufiResultPath pour les resultats a uploaded (equals/hashcode).
Modification d'un resultat existant.
Added:
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/package-info.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx
Removed:
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTreeModel.java
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/data/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressMonitor.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.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
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -0,0 +1,119 @@
+/*
+ * #%L
+ *
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.coser.bean;
+
+/**
+ * Object utilitaire represantant un path vers un résultat (projet / selection
+ * / rsufiresult) utilisé par l'interface d'admin et l'upload de resultat
+ * vers l'interface web.
+ *
+ * L'egalité et le hashcode sont basé sur les {@link Project#name},
+ * {@link Selection#name}, et {@link RSufiResult#name}.
+ *
+ * Les attribut sont finaux car le hashcode est basé dessus.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class RSufiResultPath {
+
+ /** Final project. */
+ protected final Project project;
+
+ /** Final selection. */
+ protected final Selection selection;
+
+ /** Final rsufiresult. */
+ protected final RSufiResult rsufiResult;
+
+ /**
+ * Constructor with full path.
+ *
+ * @param project project (can't be null)
+ * @param selection selection (can't be null)
+ * @param rsufiResult rsufiresult (can't be null)
+ */
+ public RSufiResultPath(Project project, Selection selection, RSufiResult rsufiResult) {
+ this.project = project;
+ this.selection = selection;
+ this.rsufiResult = rsufiResult;
+ }
+
+ /**
+ * Get project.
+ *
+ * @return project
+ */
+ public Project getProject() {
+ return project;
+ }
+
+ /**
+ * Get selection.
+ *
+ * @return selection
+ */
+ public Selection getSelection() {
+ return selection;
+ }
+
+ /**
+ * Get result.
+ *
+ * @return result
+ */
+ public RSufiResult getRsufiResult() {
+ return rsufiResult;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = 31 + project.getName().hashCode();
+ result = 31 * result + selection.getName().hashCode();
+ result = 31 * result + rsufiResult.getName().hashCode();
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ boolean result = true;
+
+ if (!(obj instanceof RSufiResultPath)) {
+ result = false;
+ }
+ else {
+ RSufiResultPath other = (RSufiResultPath)obj;
+ result &= project.getName().equals(other.project.getName());
+ result &= selection.getName().equals(other.selection.getName());
+ result &= rsufiResult.getName().equals(other.rsufiResult.getName());
+ }
+
+ return result;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/package-info.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -0,0 +1,28 @@
+/*
+ * #%L
+ *
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+/**
+ * Storage stucture classes.
+ */
+package fr.ifremer.coser.bean;
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/command/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/command/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/command/package-info.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -0,0 +1,28 @@
+/*
+ * #%L
+ *
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+/**
+ * Control specific classes.
+ */
+package fr.ifremer.coser.command;
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/command/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/control/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/control/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/control/package-info.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -0,0 +1,28 @@
+/*
+ * #%L
+ *
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+/**
+ * Command specific classes.
+ */
+package fr.ifremer.coser.control;
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/control/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/data/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/data/package-info.java 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/data/package-info.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
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 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -820,6 +820,7 @@
if (log.isDebugEnabled()) {
log.debug("Saving control properties file : " + propertiesFile);
}
+
} catch (IOException ex) {
throw new CoserBusinessException("Can't save control properties file", ex);
}
@@ -1098,14 +1099,39 @@
}
/**
- * Save rsufi result (only property file).
+ * Save existing rsufi result (just save property file)
*
+ * @param project project
+ * @param selection selection
+ * @param rsufiResult new result to save
+ * @throws CoserBusinessException
+ */
+ public void saveRsufiResults(Project project, Selection selection, RSufiResult rsufiResult) throws CoserBusinessException {
+
+ 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());
+
+ // property file
+ saveRSufiResult(rsufiResultDirectory, rsufiResult);
+
+ List<RSufiResult> results = selection.getRsufiResults();
+ // this way to fire change event (do not remove)
+ selection.setRsufiResults(results);
+ }
+
+ /**
+ * Save rsufi result (only properties file).
+ *
* @param rsufiResultDirectory rsufiresult directory
* @param rsufiResult rsufi result
* @throws CoserBusinessException
*/
public void saveRSufiResult(File rsufiResultDirectory, RSufiResult rsufiResult) throws CoserBusinessException {
-
+
OutputStream outputStream = null;
try {
// sauvegarde des informations du resultat (properties)
@@ -1113,7 +1139,7 @@
Properties props = rsufiResult.toProperties();
outputStream = new FileOutputStream(propertiesFile);
props.store(outputStream, null);
-
+
if (log.isDebugEnabled()) {
log.debug("Saving result properties file : " + propertiesFile);
}
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 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -83,6 +83,7 @@
import fr.ifremer.coser.CoserUtils;
import fr.ifremer.coser.bean.Project;
import fr.ifremer.coser.bean.RSufiResult;
+import fr.ifremer.coser.bean.RSufiResultPath;
import fr.ifremer.coser.bean.Selection;
import fr.ifremer.coser.storage.DataStorage;
import fr.ifremer.coser.storage.MemoryDataStorage;
@@ -237,11 +238,11 @@
* @param endDate end date (can be null)
* @param onlyPubliableResult select only publiable results
*
- * @return results path
+ * @return results paths
* @throws CoserBusinessException
*/
- public List<Object[]> findAllProjectWithResult(Date beginDate, Date endDate, boolean onlyPubliableResult) throws CoserBusinessException {
- List<Object[]> results = new ArrayList<Object[]>();
+ public List<RSufiResultPath> findAllProjectWithResult(Date beginDate, Date endDate, boolean onlyPubliableResult) throws CoserBusinessException {
+ List<RSufiResultPath> results = new ArrayList<RSufiResultPath>();
// loop on projets
File projectsDirectory = config.getProjectsDirectory();
@@ -273,7 +274,7 @@
boolean candidate = isCandidateResult(r, beginDate, endDate, onlyPubliableResult);
if (candidate) {
- Object[] result = new Object[] {p, s, r};
+ RSufiResultPath result = new RSufiResultPath(p, s, r);
results.add(result);
}
}
@@ -327,20 +328,20 @@
* @return extracted file (no automatically deleted)
* @throws CoserBusinessException
*/
- public File performResultExtract(Collection<Object[]> selectedResults, File extractDirectory, boolean exportWithData) throws CoserBusinessException {
+ public File performResultExtract(Collection<RSufiResultPath> selectedResults, File extractDirectory, boolean exportWithData) throws CoserBusinessException {
File prepareZip = null;
try {
prepareZip = File.createTempFile("coserextract-", ".zip", extractDirectory);
// copy selectively all data to target directory
MultipleFileFilter mFileFilters = new MultipleFileFilter();
- for (Object[] path : selectedResults) {
+ for (RSufiResultPath path : selectedResults) {
// load projet, needed to known source data file name
- Project project = (Project)path[0];
+ Project project = path.getProject();
project = projectService.openProject(project.getName());
OneResultFileFilter oneRFF = new OneResultFileFilter(config,
- project, (Selection)path[1], (RSufiResult)path[2], exportWithData);
+ project, path.getSelection(), path.getRsufiResult(), exportWithData);
mFileFilters.add(oneRFF);
}
@@ -374,8 +375,8 @@
* @return upload error status or {@code null} if no error
* @throws CoserBusinessException
*/
- public String performResultUpload(Collection<Object[]> selectedResults,
- Collection<Object[]> mapResults, Collection<Object[]> publishDataResults,
+ public String performResultUpload(Collection<RSufiResultPath> selectedResults,
+ Collection<RSufiResultPath> mapResults, Collection<RSufiResultPath> publishDataResults,
String login, String password, ProgressMonitor progress) throws CoserBusinessException {
String uploadStatus = null;
@@ -448,8 +449,8 @@
* @param publishDataResults publish data results
* @throws CoserBusinessException
*/
- protected void modifyRSufiResults(Collection<Object[]> selectedResults, Collection<Object[]> mapResults,
- Collection<Object[]> publishDataResults) throws CoserBusinessException {
+ protected void modifyRSufiResults(Collection<RSufiResultPath> selectedResults, Collection<RSufiResultPath> mapResults,
+ Collection<RSufiResultPath> publishDataResults) throws CoserBusinessException {
// TODO echatellier 20110117 revoir ce code
@@ -457,29 +458,29 @@
// decochage de type map / publish result ne seront pas pris en compte
// reset type map and data source for all
- for (Object[] selectedResult : selectedResults) {
- RSufiResult rsufiResult = (RSufiResult)selectedResult[2];
+ for (RSufiResultPath selectedResult : selectedResults) {
+ RSufiResult rsufiResult = selectedResult.getRsufiResult();
rsufiResult.setMapsReferenceResult(false);
rsufiResult.setDataAllowed(false);
}
// set map type
- for (Object[] mapResult : mapResults) {
- RSufiResult rsufiResult = (RSufiResult)mapResult[2];
+ for (RSufiResultPath mapResult : mapResults) {
+ RSufiResult rsufiResult = mapResult.getRsufiResult();
rsufiResult.setMapsReferenceResult(true);
}
// set data type
- for (Object[] publishDataResult : publishDataResults) {
- RSufiResult rsufiResult = (RSufiResult)publishDataResult[2];
+ for (RSufiResultPath publishDataResult : publishDataResults) {
+ RSufiResult rsufiResult = publishDataResult.getRsufiResult();
rsufiResult.setDataAllowed(true);
}
// save all selected results
- for (Object[] selectedResult : selectedResults) {
- Project project = (Project)selectedResult[0];
- Selection selection = (Selection)selectedResult[1];
- RSufiResult rsufiResult = (RSufiResult)selectedResult[2];
+ for (RSufiResultPath selectedResult : selectedResults) {
+ Project project = selectedResult.getProject();
+ Selection selection = selectedResult.getSelection();
+ RSufiResult rsufiResult = selectedResult.getRsufiResult();
File projectDirectory = new File(config.getProjectsDirectory(), project.getName());
File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
@@ -498,14 +499,14 @@
* @param selectedResults result id to check
* @throws CoserBusinessException
*/
- protected void checkDataCollision(Collection<Object[]> selectedResults) throws CoserBusinessException {
+ protected void checkDataCollision(Collection<RSufiResultPath> selectedResults) throws CoserBusinessException {
Collection<String> resultZoneTypeIds = new ArrayList<String>();
- for (Object[] selectedResult : selectedResults) {
- Project project = (Project)selectedResult[0];
- Selection selection = (Selection)selectedResult[1];
- RSufiResult rsufiResult = (RSufiResult)selectedResult[2];
+ for (RSufiResultPath selectedResult : selectedResults) {
+ Project project = selectedResult.getProject();
+ Selection selection = selectedResult.getSelection();
+ RSufiResult rsufiResult = selectedResult.getRsufiResult();
// on creer une clé composé pour l'id du resultat
String resultZoneTypeId = rsufiResult.getZone() + String.valueOf(rsufiResult.isMapsReferenceResult());
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/services/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/package-info.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -0,0 +1,28 @@
+/*
+ * #%L
+ *
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+/**
+ * Services classes.
+ */
+package fr.ifremer.coser.services;
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/services/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/storage/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/storage/package-info.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -0,0 +1,28 @@
+/*
+ * #%L
+ *
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+/**
+ * CSV storage classes.
+ */
+package fr.ifremer.coser.storage;
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressMonitor.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressMonitor.java 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressMonitor.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -39,12 +39,13 @@
*/
public class ProgressStream extends InputStream {
+ /** Delegate stream/ */
protected InputStream delegateStream;
+ /** Progress monitor notified. */
protected ProgressMonitor delegateProgress;
public ProgressStream(InputStream delegateStream, ProgressMonitor delegateProgress) {
- super();
this.delegateStream = delegateStream;
this.delegateProgress = delegateProgress;
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/util/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/package-info.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -0,0 +1,28 @@
+/*
+ * #%L
+ *
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+/**
+ * Utility classes.
+ */
+package fr.ifremer.coser.util;
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/util/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/validators/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/validators/package-info.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -0,0 +1,28 @@
+/*
+ * #%L
+ *
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+/**
+ * Xwork validators.
+ */
+package fr.ifremer.coser.validators;
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -43,6 +43,7 @@
import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.CoserException;
+import fr.ifremer.coser.bean.RSufiResultPath;
import fr.ifremer.coser.services.WebService;
import fr.ifremer.coser.ui.common.CommonHandler;
import fr.ifremer.coser.ui.util.CoserProgressBar;
@@ -74,7 +75,7 @@
// initialise les données avec les filtres par default
updateAvailableResultsFilter(view);
- view.getSelectedResultTableModel().setResultPath(new ArrayList<Object[]>());
+ view.getSelectedResultTableModel().setResultPath(new ArrayList<RSufiResultPath>());
}
@@ -95,7 +96,7 @@
WebService webService = view.getContextValue(WebService.class);
try {
- List<Object[]> results = webService.findAllProjectWithResult(beginDate, endDate, onlyPubliable);
+ List<RSufiResultPath> results = webService.findAllProjectWithResult(beginDate, endDate, onlyPubliable);
view.getAvailableResultTableModel().setResultPath(results);
} catch (CoserBusinessException ex) {
throw new CoserException("Can't get results", ex);
@@ -108,21 +109,20 @@
* @param view view
*/
public void addAvailableResult(SelectUploadResultView view) {
-
+
// get new result to add
- List<Object[]> newResult = new ArrayList<Object[]>();
+ List<RSufiResultPath> currentResult = view.getSelectedResultTableModel().getResultPath();
int[] selectedAvailableRows = view.getAvailableResultTable().getSelectedRows();
for (int selectedAvailableRow : selectedAvailableRows) {
- Object[] resultData = view.getAvailableResultTableModel().getResultPath().get(selectedAvailableRow);
- newResult.add(resultData);
+ RSufiResultPath resultData = view.getAvailableResultTableModel().getResultPath().get(selectedAvailableRow);
+ if (!currentResult.contains(resultData)) {
+ currentResult.add(resultData);
+ }
}
// les collisions ne peuvent pas être détecté a ce moment.
// seulement lors du clic sur le bouton export/upload
- // add new results
- List<Object[]> currentResult = view.getSelectedResultTableModel().getResultPath();
- currentResult.addAll(newResult);
view.getSelectedResultTableModel().setResultPath(currentResult);
}
@@ -132,7 +132,7 @@
* @param view view
*/
public void removeSelectedResult(SelectUploadResultView view) {
- List<Object[]> currentResult = view.getSelectedResultTableModel().getResultPath();
+ List<RSufiResultPath> currentResult = view.getSelectedResultTableModel().getResultPath();
int[] selectedSelectedRows = view.getSelectedResultTable().getSelectedRows();
// need to remove reverse order
for (int index = selectedSelectedRows.length - 1 ; index >= 0 ; --index) {
@@ -155,9 +155,9 @@
// get result selected by user
SelectUploadResultView parentView = view.getContextValue(SelectUploadResultView.class, JAXXUtil.PARENT);
- final Collection<Object[]> selectedResult = parentView.getSelectedResultTableModel().getResultPath();
- final Collection<Object[]> mapResult = parentView.getSelectedResultTableModel().getMapResult();
- final Collection<Object[]> publishDataResult = parentView.getSelectedResultTableModel().getPublishDataResult();
+ final Collection<RSufiResultPath> selectedResult = parentView.getSelectedResultTableModel().getResultPath();
+ final Collection<RSufiResultPath> mapResult = parentView.getSelectedResultTableModel().getMapResult();
+ final Collection<RSufiResultPath> publishDataResult = parentView.getSelectedResultTableModel().getPublishDataResult();
if (CollectionUtils.isNotEmpty(selectedResult)) {
SwingWorker<String, Void> task = new SwingWorker<String, Void>() {
@@ -215,7 +215,7 @@
boolean withData = view.getSourceDataExport().isSelected();
SelectUploadResultView parentView = view.getContextValue(SelectUploadResultView.class, JAXXUtil.PARENT);
- Collection<Object[]> selectedResult = parentView.getSelectedResultTableModel().getResultPath();
+ Collection<RSufiResultPath> selectedResult = parentView.getSelectedResultTableModel().getResultPath();
WebService webService = view.getContextValue(WebService.class);
try {
webService.performResultExtract(selectedResult, extractDirectory, withData);
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableModel.java 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableModel.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -101,7 +101,7 @@
public Object getValueAt(int rowIndex, int columnIndex) {
Object result = null;
- RSufiResult rsufiResult = selection.getRsufiResults().get(rowIndex);
+ RSufiResult rsufiResult = getValue(rowIndex);
switch (columnIndex) {
case 0:
result = rsufiResult.getName();
@@ -120,6 +120,17 @@
return result;
}
+ /**
+ * Get value for wall row.
+ *
+ * @param rowIndex row index
+ * @return rsufi result at row index
+ */
+ public RSufiResult getValue(int rowIndex) {
+ RSufiResult result = selection.getRsufiResults().get(rowIndex);
+ return result;
+ }
+
/*
* @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
*/
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -28,9 +28,7 @@
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
-import fr.ifremer.coser.bean.Project;
-import fr.ifremer.coser.bean.RSufiResult;
-import fr.ifremer.coser.bean.Selection;
+import fr.ifremer.coser.bean.RSufiResultPath;
/**
* Available and selected result path renderer.
@@ -51,12 +49,11 @@
boolean isSelected, boolean hasFocus, int row, int column) {
Object localValue = value;
- if (value instanceof Object[]) {
- Object[] arrayValue = (Object[])value;
- //localValue = StringUtils.join(arrayValue, '/');
- localValue = ((Project)arrayValue[0]).getName() + "/" +
- ((Selection)arrayValue[1]).getName() + "/" +
- ((RSufiResult)arrayValue[2]).getName();
+ if (value instanceof RSufiResultPath) {
+ RSufiResultPath rsufiResultPath = (RSufiResultPath)value;
+ localValue = rsufiResultPath.getProject().getName() + "/" +
+ rsufiResultPath.getSelection().getName() + "/" +
+ rsufiResultPath.getRsufiResult().getName();
}
return super.getTableCellRendererComponent(table, localValue, isSelected, hasFocus,
row, column);
Copied: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java (from rev 532, trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTreeModel.java)
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -0,0 +1,223 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 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.result;
+
+import static org.nuiton.i18n.I18n._;
+
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.swing.table.AbstractTableModel;
+
+import fr.ifremer.coser.bean.RSufiResult;
+import fr.ifremer.coser.bean.RSufiResultPath;
+
+/**
+ * Model represantant la liste de tous les resultats rsufi present
+ * dans le dossier de stockage de coser, tous projets confondu.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class RsufiResultTableModel extends AbstractTableModel {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 6404018386062830677L;
+
+ /** Les données de la table. */
+ protected List<RSufiResultPath> resultPath;
+
+ /** Les résultats marqué comme étant des données de map. */
+ protected Set<RSufiResultPath> mapResult;
+
+ /** Les résultat dont la publication des données est autorisée. */
+ protected Set<RSufiResultPath> publishDataResult;
+
+ /** Selected table tablemodel (do not show all columns). */
+ protected boolean selected;
+
+ public RsufiResultTableModel(boolean selected) {
+ this.selected = selected;
+ }
+
+ public void setResultPath(List<RSufiResultPath> resultPath) {
+ this.resultPath = resultPath;
+ mapResult = new HashSet<RSufiResultPath>();
+ publishDataResult = new HashSet<RSufiResultPath>();
+ fireTableDataChanged();
+ }
+
+ public List<RSufiResultPath> getResultPath() {
+ return resultPath;
+ }
+
+ public Set<RSufiResultPath> getMapResult() {
+ return mapResult;
+ }
+
+ public Set<RSufiResultPath> getPublishDataResult() {
+ return publishDataResult;
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#getRowCount()
+ */
+ @Override
+ public int getRowCount() {
+ int result = 0;
+ if (resultPath != null) {
+ result = resultPath.size();
+ }
+ return result;
+ }
+
+ @Override
+ public String getColumnName(int column) {
+ String result = null;
+ switch(column) {
+ case 0:
+ result = _("coser.ui.uploadresult.creationDate");
+ break;
+ case 1:
+ result = _("coser.ui.uploadresult.path");
+ break;
+ case 2:
+ result = _("coser.ui.uploadresult.zone");
+ break;
+ case 3:
+ result = _("coser.ui.uploadresult.mapResult");
+ break;
+ case 4:
+ result = _("coser.ui.uploadresult.publishData");
+ break;
+ }
+ return result;
+ }
+
+ @Override
+ public Class<?> getColumnClass(int columnIndex) {
+ Class<?> result = null;
+ switch(columnIndex) {
+ case 0:
+ result = Date.class;
+ break;
+ case 1:
+ result = String[].class;
+ break;
+ case 2:
+ result = String.class;
+ break;
+ case 3:
+ result = Boolean.class;
+ break;
+ case 4:
+ result = Boolean.class;
+ break;
+ }
+ return result;
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#getColumnCount()
+ */
+ @Override
+ public int getColumnCount() {
+ int result = 3;
+ if (selected) {
+ result = 5;
+ }
+ return result;
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#getValueAt(int, int)
+ */
+ @Override
+ public Object getValueAt(int rowIndex, int columnIndex) {
+
+ Object result = null;
+
+ RSufiResultPath data = resultPath.get(rowIndex);
+ RSufiResult rsufiResult = data.getRsufiResult();
+ switch (columnIndex) {
+ case 0:
+ result = rsufiResult.getCreationDate();
+ break;
+ case 1:
+ result = data;
+ break;
+ case 2:
+ result = rsufiResult.getZone();
+ break;
+ case 3:
+ // c'est pas tres safe tu les hashcode des tableaux
+ // mais bon...
+ result = mapResult.contains(data);
+ break;
+ case 4:
+ // c'est pas tres safe tu les hashcode des tableaux
+ // mais bon...
+ result = publishDataResult.contains(data);
+ break;
+ }
+
+ return result;
+ }
+
+ @Override
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+ return columnIndex >= 3;
+ }
+
+ @Override
+ public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
+
+ RSufiResultPath data = resultPath.get(rowIndex);
+
+ if (columnIndex == 3) {
+ Boolean bValue = (Boolean)aValue;
+ if (bValue.booleanValue()) {
+ mapResult.add(data);
+ }
+ else {
+ mapResult.remove(data);
+ }
+ }
+
+ else if (columnIndex == 4) {
+ Boolean bValue = (Boolean)aValue;
+ if (bValue.booleanValue()) {
+ publishDataResult.add(data);
+ }
+ else {
+ publishDataResult.remove(data);
+ }
+ }
+ }
+}
Deleted: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTreeModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTreeModel.java 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTreeModel.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -1,225 +0,0 @@
-/*
- * #%L
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2010 - 2011 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.result;
-
-import static org.nuiton.i18n.I18n._;
-
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.swing.table.AbstractTableModel;
-
-import fr.ifremer.coser.bean.RSufiResult;
-
-/**
- * Model represantant la liste de tous les resultats rsufi present
- * dans le dossier de stockage de coser, tous projets confondu.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class RsufiResultTreeModel extends AbstractTableModel {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = 6404018386062830677L;
-
- /** Les données de la table. */
- protected List<Object[]> resultPath;
-
- /** Les résultats marqué comme étant des données de map. */
- protected Set<Object[]> mapResult;
-
- /** Les résultat dont la publication des données est autorisée. */
- protected Set<Object[]> publishDataResult;
-
- /** Selected table tablemodel (do not show all columns). */
- protected boolean selected;
-
- public RsufiResultTreeModel(boolean selected) {
- this.selected = selected;
- }
-
- public void setResultPath(List<Object[]> resultPath) {
- this.resultPath = resultPath;
- mapResult = new HashSet<Object[]>();
- publishDataResult = new HashSet<Object[]>();
- fireTableDataChanged();
- }
-
- public List<Object[]> getResultPath() {
- return resultPath;
- }
-
- public Set<Object[]> getMapResult() {
- return mapResult;
- }
-
- public Set<Object[]> getPublishDataResult() {
- return publishDataResult;
- }
-
- /*
- * @see javax.swing.table.TableModel#getRowCount()
- */
- @Override
- public int getRowCount() {
- int result = 0;
- if (resultPath != null) {
- result = resultPath.size();
- }
- return result;
- }
-
- @Override
- public String getColumnName(int column) {
- String result = null;
- switch(column) {
- case 0:
- result = _("coser.ui.uploadresult.creationDate");
- break;
- case 1:
- result = _("coser.ui.uploadresult.path");
- break;
- case 2:
- result = _("coser.ui.uploadresult.zone");
- break;
- case 3:
- result = _("coser.ui.uploadresult.mapResult");
- break;
- case 4:
- result = _("coser.ui.uploadresult.publishData");
- break;
- }
- return result;
- }
-
- @Override
- public Class<?> getColumnClass(int columnIndex) {
- Class<?> result = null;
- switch(columnIndex) {
- case 0:
- result = Date.class;
- break;
- case 1:
- result = String[].class;
- break;
- case 2:
- result = String.class;
- break;
- case 3:
- result = Boolean.class;
- break;
- case 4:
- result = Boolean.class;
- break;
- }
- return result;
- }
-
- /*
- * @see javax.swing.table.TableModel#getColumnCount()
- */
- @Override
- public int getColumnCount() {
- int result = 3;
- if (selected) {
- result = 5;
- }
- return result;
- }
-
- /*
- * @see javax.swing.table.TableModel#getValueAt(int, int)
- */
- @Override
- public Object getValueAt(int rowIndex, int columnIndex) {
-
- Object result = null;
-
- Object[] data = resultPath.get(rowIndex);
- switch (columnIndex) {
- case 0: {
- RSufiResult rsufiResult = (RSufiResult)data[2];
- result = rsufiResult.getCreationDate();
- break;
- }
- case 1:
- result = data;
- break;
- case 2: {
- RSufiResult rsufiResult = (RSufiResult)data[2];
- result = rsufiResult.getZone();
- break;
- }
- case 3:
- // c'est pas tres safe tu les hashcode des tableaux
- // mais bon...
- result = mapResult.contains(data);
- break;
- case 4:
- // c'est pas tres safe tu les hashcode des tableaux
- // mais bon...
- result = publishDataResult.contains(data);
- break;
- }
-
- return result;
- }
-
- @Override
- public boolean isCellEditable(int rowIndex, int columnIndex) {
- return columnIndex >= 3;
- }
-
- @Override
- public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
-
- Object[] data = resultPath.get(rowIndex);
-
- if (columnIndex == 3) {
- Boolean bValue = (Boolean)aValue;
- if (bValue.booleanValue()) {
- mapResult.add(data);
- }
- else {
- mapResult.remove(data);
- }
- }
-
- else if (columnIndex == 4) {
- Boolean bValue = (Boolean)aValue;
- if (bValue.booleanValue()) {
- publishDataResult.add(data);
- }
- else {
- publishDataResult.remove(data);
- }
- }
- }
-}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx 2011-01-21 14:06:14 UTC (rev 534)
@@ -67,7 +67,7 @@
<row>
<cell weightx="1" weighty="1" fill="both">
<JScrollPane>
- <RsufiResultTreeModel id="availableResultTableModel" initializer='new RsufiResultTreeModel(false)' />
+ <RsufiResultTableModel id="availableResultTableModel" initializer='new RsufiResultTableModel(false)' />
<JTable id="availableResultTable" model="{getAvailableResultTableModel()}"/>
<ListSelectionModel javaBean="availableResultTable.getSelectionModel()"
onValueChanged="addResultButton.setEnabled(getAvailableResultTable().getSelectedRow() != -1)" />
@@ -88,7 +88,7 @@
<row>
<cell weightx="1" weighty="1" fill="both">
<JScrollPane>
- <RsufiResultTreeModel id="selectedResultTableModel" initializer='new RsufiResultTreeModel(true)' />
+ <RsufiResultTableModel id="selectedResultTableModel" initializer='new RsufiResultTableModel(true)' />
<JTable id="selectedResultTable" model="{getSelectedResultTableModel()}" />
<ListSelectionModel javaBean="selectedResultTable.getSelectionModel()"
onValueChanged="removeResultButton.setEnabled(getSelectedResultTable().getSelectedRow() != -1)" />
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx 2011-01-21 14:06:14 UTC (rev 534)
@@ -75,7 +75,8 @@
<JLabel text="coser.ui.result.zone" />
</cell>
<cell fill="horizontal" columns="2">
- <JComboBox id="resultZoneCombo" model="{new ZoneComboBoxModel(this)}"
+ <ZoneComboBoxModel id="resultZoneComboModel" javaBean="new ZoneComboBoxModel(getContextValue(fr.ifremer.coser.services.WebService.class))" />
+ <JComboBox id="resultZoneCombo" model="{getResultZoneComboModel()}"
renderer="{new ZoneComboBoxRenderer()}"
onActionPerformed='getRsufiResult().setZone((String)resultZoneCombo.getSelectedItem())'/>
</cell>
Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx 2011-01-21 14:06:14 UTC (rev 534)
@@ -0,0 +1,87 @@
+<!--
+ #%L
+ Coser :: UI
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 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%
+ -->
+<JDialog title="coser.ui.result.newResult" modal="true">
+ <Table>
+ <fr.ifremer.coser.ui.selection.SelectionHandler id="handler" javaBean="null" />
+
+ <fr.ifremer.coser.bean.RSufiResult id="rsufiResult" javaBean="null" />
+
+ <row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.result.resultName" />
+ </cell>
+ <cell fill="horizontal">
+ <JTextField id="resultNameField" enabled="false" text="{getRsufiResult().getName()}"/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.result.rsufiVersion" />
+ </cell>
+ <cell fill="horizontal">
+ <JTextField id="resultRsufiVersion" text="{getRsufiResult().getRsufiVersion()}" />
+ <javax.swing.text.Document javaBean="resultRsufiVersion.getDocument()"
+ onInsertUpdate='getRsufiResult().setRsufiVersion(resultRsufiVersion.getText())'
+ onRemoveUpdate='getRsufiResult().setRsufiVersion(resultRsufiVersion.getText())' />
+ </cell>
+ </row>
+ <row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.result.creationDate" />
+ </cell>
+ <cell fill="horizontal">
+ <JXDatePicker id="resultCreationDate" date="{getRsufiResult().getCreationDate()}"
+ onActionPerformed="getRsufiResult().setCreationDate(resultCreationDate.getDate())"/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.result.zone" />
+ </cell>
+ <cell fill="horizontal">
+ <ZoneComboBoxModel id="resultZoneComboModel" javaBean="new ZoneComboBoxModel(getContextValue(fr.ifremer.coser.services.WebService.class))"
+ selectedItem="{getRsufiResult().getZone()}"/>
+ <JComboBox id="resultZoneCombo" model="{getResultZoneComboModel()}"
+ renderer="{new ZoneComboBoxRenderer()}"
+ onActionPerformed='getRsufiResult().setZone((String)resultZoneCombo.getSelectedItem())'/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.result.publishResult" />
+ </cell>
+ <cell fill="horizontal">
+ <JCheckBox id="publishResultCheckBox" selected="{getRsufiResult().isPublishResult()}"
+ onActionPerformed="getRsufiResult().setPublishResult(publishResultCheckBox.isSelected())"/>
+ </cell>
+ </row>
+ <row>
+ <cell columns="2" anchor="east">
+ <JButton id="saveResultButton" text="coser.ui.result.validEditResult"
+ onActionPerformed="getHandler().performEditResult(this)"/>
+ </cell>
+ </row>
+ </Table>
+</JDialog>
\ No newline at end of file
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -48,14 +48,9 @@
/** serialVersionUID. */
private static final long serialVersionUID = 4452070553401468762L;
- protected SelectionAddResultDialog view;
-
protected DataStorage zonesMap;
- public ZoneComboBoxModel(SelectionAddResultDialog view) {
- this.view = view;
-
- WebService webService = view.getContextValue(WebService.class);
+ public ZoneComboBoxModel(WebService webService) {
try {
zonesMap = webService.getZonesMap();
} catch (CoserBusinessException ex) {
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 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2011-01-21 14:06:14 UTC (rev 534)
@@ -73,6 +73,7 @@
import fr.ifremer.coser.services.PublicationService;
import fr.ifremer.coser.ui.common.DataHandler;
import fr.ifremer.coser.ui.result.SelectionAddResultDialog;
+import fr.ifremer.coser.ui.result.SelectionEditResultDialog;
import fr.ifremer.coser.ui.selection.model.OccurrenceDensitySpeciesListModel;
import fr.ifremer.coser.ui.util.CoserListSelectionModel;
@@ -1070,6 +1071,27 @@
}
/**
+ * Show rsufi result edit dialog with selected rsufiresult.
+ *
+ * @param view view
+ */
+ public void showEditResultDialog(SelectionRsufiView view) {
+
+ // get selected rsufi result
+ int selectedRow = view.getSelectionResultsTable().getSelectedRow();
+ RSufiResult result = view.getSelectionResultsTableModel().getValue(selectedRow);
+
+ SelectionEditResultDialog editResultView = new SelectionEditResultDialog(view);
+ // TODO chatellier 20101121 il ne faudrait pas que ca soit le
+ // meme, sinon meme en annulant il est modifié
+ editResultView.setRsufiResult(result);
+ editResultView.setHandler(this);
+ editResultView.pack();
+ editResultView.setLocationRelativeTo(view);
+ editResultView.setVisible(true);
+ }
+
+ /**
* Save new result after clicking "ok" button on SelectionAddResultDialog
* opened by {@link #showAddResultDialog(SelectionRsufiView)}.
*
@@ -1094,6 +1116,27 @@
}
/**
+ * Save edited result (only save properties file).
+ *
+ * @param view view
+ */
+ public void performEditResult(SelectionEditResultDialog view) {
+ Project project = view.getContextValue(Project.class);
+ Selection selection = view.getContextValue(Selection.class);
+ ProjectService projectService = view.getContextValue(ProjectService.class);
+
+ RSufiResult editedResult = view.getRsufiResult();
+ try {
+ projectService.saveRsufiResults(project, selection, editedResult);
+ }
+ catch (CoserBusinessException ex) {
+ JOptionPane.showMessageDialog(view, ex.getMessage(), _("coser.ui.result.saveError"), JOptionPane.ERROR_MESSAGE);
+ throw new CoserException("Can't save result", ex);
+ }
+ view.dispose();
+ }
+
+ /**
* 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 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx 2011-01-21 14:06:14 UTC (rev 534)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
+ Copyright (C) 2010 - 2011 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
@@ -58,14 +58,22 @@
<cell weightx="1" weighty="2" fill="both">
<Table border='{BorderFactory.createTitledBorder(_("coser.ui.result.availableDataTitle"))}'>
<row>
- <cell weightx="1" weighty="1" fill="both">
+ <cell columns="2" weightx="1" weighty="1" fill="both">
<JScrollPane>
- <JTable model="{new fr.ifremer.coser.ui.result.ResultTableModel(this)}"/>
+ <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)" />
</JScrollPane>
</cell>
</row>
<row>
- <cell anchor="east">
+ <cell weightx="1" anchor="east">
+ <JButton id="editResultButton" text="coser.ui.result.editResult" enabled="false"
+ onActionPerformed="getHandler().showEditResultDialog(this)" />
+ </cell>
+ <cell>
<JButton text="coser.ui.result.addNewResult"
onActionPerformed="getHandler().showAddResultDialog(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 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2011-01-21 14:06:14 UTC (rev 534)
@@ -130,6 +130,7 @@
coser.ui.result.availableDataTitle=Available results \:
coser.ui.result.cancel=Cancel
coser.ui.result.creationDate=Result date \:
+coser.ui.result.editResult=Modify result
coser.ui.result.estComIndFile=ESTCOMind file \:
coser.ui.result.estPopIndFile=ESTPOPind file \:
coser.ui.result.extractDataButton=Extract as Rsufi format
@@ -138,7 +139,7 @@
coser.ui.result.mapsDirectory=Maps directory \:
coser.ui.result.newResult=New Result
coser.ui.result.otherDataFile=Other files \:
-coser.ui.result.publishResult=Publish \:
+coser.ui.result.publishResult=Publiable \:
coser.ui.result.requiredestComIndPath=ESTCOMind file is required
coser.ui.result.requiredestPopIndPath=ESTPOPind file is required
coser.ui.result.requiredname=Result name is required
@@ -150,6 +151,7 @@
coser.ui.result.table.estPopIndFile=ESTPOPind file
coser.ui.result.table.resultName=Result name
coser.ui.result.table.rsufiVersion=RSufi Version
+coser.ui.result.validEditResult=Modify result
coser.ui.result.validNewResult=Add this result
coser.ui.result.zone=Zone \:
coser.ui.selection.allSpecies=L1 \: All species (%d/%d)
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 2011-01-20 10:54:12 UTC (rev 533)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2011-01-21 14:06:14 UTC (rev 534)
@@ -130,6 +130,7 @@
coser.ui.result.availableDataTitle=R\u00E9sultats disponibles
coser.ui.result.cancel=Annuler
coser.ui.result.creationDate=Date du r\u00E9sultats \:
+coser.ui.result.editResult=Modifier le r\u00E9sultat
coser.ui.result.estComIndFile=Fichier ESTCOMind \:
coser.ui.result.estPopIndFile=Fichier ESTPOPind \:
coser.ui.result.extractDataButton=Extraire au format RSufi
@@ -138,7 +139,7 @@
coser.ui.result.mapsDirectory=R\u00E9pertoire des cartes \:
coser.ui.result.newResult=Nouveau r\u00E9sultat
coser.ui.result.otherDataFile=Autre fichiers \:
-coser.ui.result.publishResult=Publication \:
+coser.ui.result.publishResult=Publiable \:
coser.ui.result.requiredestComIndPath=Le fichier ESTCOMind est requis
coser.ui.result.requiredestPopIndPath=Le fichier ESTPOPind est requis
coser.ui.result.requiredname=Le nom du r\u00E9sultat est requis
@@ -150,6 +151,7 @@
coser.ui.result.table.estPopIndFile=Fichier ESTPOPind
coser.ui.result.table.resultName=Nom du r\u00E9sultat
coser.ui.result.table.rsufiVersion=Version de RSufi
+coser.ui.result.validEditResult=Modifier le r\u00E9sultat
coser.ui.result.validNewResult=Ajouter le r\u00E9sultat
coser.ui.result.zone=Zone \:
coser.ui.selection.allSpecies=L1 \: Toutes les esp\u00E8ces (%d/%d)
1
0
r533 - in trunk/coser-business/src: main/java/fr/ifremer/coser/services main/resources/ftl test/java/fr/ifremer/coser/services
by chatellier@users.labs.libre-entreprise.org 20 Jan '11
by chatellier@users.labs.libre-entreprise.org 20 Jan '11
20 Jan '11
Author: chatellier
Date: 2011-01-20 10:54:12 +0000 (Thu, 20 Jan 2011)
New Revision: 533
Log:
Generation du fichier de meta information
Added:
trunk/coser-business/src/main/resources/ftl/metainfo.ftl
Modified:
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-business/src/main/java/fr/ifremer/coser/services/WebService.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.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 2011-01-20 08:52:30 UTC (rev 532)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2011-01-20 10:54:12 UTC (rev 533)
@@ -1922,6 +1922,33 @@
}
/**
+ * Retourne le nom d'affichage d'une especes.
+ *
+ * @param project project
+ * @param species species code
+ * @return species display name
+ */
+ public String getSpeciesDisplayName(Project project, String species) {
+ String displayName = null;
+
+ // load reftax in memory
+ Iterator<String[]> reftax = project.getRefTaxSpecies().iterator(true);
+ while (reftax.hasNext()) {
+ String[] tuple = reftax.next();
+
+ // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
+ String speciesCode = tuple[3];
+ if (speciesCode.equals(species)) {
+ // nom + auteur (sans ajout de parenthese : important)
+ displayName = tuple[4] + " " + tuple[5];
+ break;
+ }
+ }
+
+ return displayName;
+ }
+
+ /**
* Fusion d'especes.
*
* Used un selection ui.
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 2011-01-20 08:52:30 UTC (rev 532)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2011-01-20 10:54:12 UTC (rev 533)
@@ -42,7 +42,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.SortedMap;
import java.util.TreeMap;
import org.apache.commons.collections.CollectionUtils;
@@ -650,33 +649,6 @@
}
/**
- * Retourne le nom d'affichage d'une especes.
- *
- * @param project project
- * @param species species code
- * @return species display name
- */
- protected String getSpeciesDisplayName(Project project, String species) {
- String displayName = null;
-
- // load reftax in memory
- Iterator<String[]> reftax = project.getRefTaxSpecies().iterator(true);
- while (reftax.hasNext()) {
- String[] tuple = reftax.next();
-
- // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
- String speciesCode = tuple[3];
- if (speciesCode.equals(species)) {
- // nom + auteur (sans ajout de parenthese : important)
- displayName = tuple[4] + " " + tuple[5];
- break;
- }
- }
-
- return displayName;
- }
-
- /**
* Generate community graph for selected indicator.
* Used by web ui.
*
@@ -792,7 +764,7 @@
// get graph title
String title = projectService.getProjectSurveyName(resultDirectory, rsufiResult);
title += " - " + indicatorName;
- title += " - " + getSpeciesDisplayName(project, species);
+ title += " - " + projectService.getSpeciesDisplayName(project, species);
// le fichier estcomind
File estPopIndFile = new File(resultDirectory, rsufiResult.getEstPopIndName());
@@ -887,6 +859,7 @@
try {
result = File.createTempFile("coser-", ".csv");
+ result.deleteOnExit();
// le fichier estcomind
File estComIndFile = new File(resultDirectory, rsufiResult.getEstComIndName());
@@ -934,8 +907,9 @@
try {
result = File.createTempFile("coser-", ".csv");
+ result.deleteOnExit();
- // le fichier estcomind
+ // le fichier estpopind
File estPopIndFile = new File(resultDirectory, rsufiResult.getEstPopIndName());
// Campagne Indicateur Liste Species Strate Annee Estimation EcartType CV
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 2011-01-20 08:52:30 UTC (rev 532)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-20 10:54:12 UTC (rev 533)
@@ -46,7 +46,9 @@
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
+import java.util.SortedSet;
import java.util.TreeMap;
+import java.util.TreeSet;
import java.util.regex.Matcher;
import org.apache.commons.collections.map.MultiKeyMap;
@@ -87,6 +89,7 @@
import fr.ifremer.coser.util.ProgressMonitor;
import fr.ifremer.coser.util.ProgressStream;
import freemarker.cache.ClassTemplateLoader;
+import freemarker.ext.beans.BeansWrapper;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
@@ -145,6 +148,9 @@
// specific template loader to get template from jars (classpath)
ClassTemplateLoader templateLoader = new ClassTemplateLoader(WebService.class, "/ftl");
freemarkerConfiguration.setTemplateLoader(templateLoader);
+
+ // pour les maps dans les template (entre autre)
+ freemarkerConfiguration.setObjectWrapper(new BeansWrapper());
}
/**
@@ -1394,7 +1400,7 @@
// load project (without data to get reftax data)
Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
- String indicatorName = (String)indicatorsMap.get(indicator, locale);
+ String indicatorName = (String)getIndicatorsMap().get(indicator, locale);
if (species == null) {
// title = surveyName - indicateur
@@ -1461,6 +1467,12 @@
if (species == null) {
// title = surveyName - indicateur
result = publicationService.getRsufiResultComChartData(resultFile, rsufiResult, indicator);
+
+ // ajout du fichier d'information sur les espèces incluses dans
+ //les calculs des indicateurs de communautés
+ // load project (without data to get reftax data)
+ Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
+ File metaFile = generateMetaFilePDF(project, resultFile, rsufiResult, indicator, locale);
}
else {
// title = surveyName - indicateur - species
@@ -1693,7 +1705,7 @@
FileUtils.copyFile(dechargePDF, new File(archiveDir, "DechargeDonnees.pdf"));
// make zip
- resultZip = File.createTempFile("coser-result", ".zip");
+ resultZip = File.createTempFile("coserresultzip-", ".zip");
resultZip.deleteOnExit();
ZipUtil.compress(resultZip, archiveDir);
@@ -1738,7 +1750,7 @@
Document document = CoserUtils.parseDocument(out.toString());
// render template output as pdf
- result = File.createTempFile("coserpdf", ".pdf");
+ result = File.createTempFile("coserdecharge-", ".pdf");
result.deleteOnExit();
OutputStream os = new FileOutputStream(result);
@@ -1758,4 +1770,99 @@
return result;
}
+
+ /**
+ * Genere le fichier PDF d'information sur les espèces incluses dans les
+ * calculs des indicateurs de communautés, à jointe à chaque téléchargement.
+ *
+ * @param project project
+ * @param resultDirectory result directory
+ * @param rsufiResult rsufi result
+ * @param indicator indicator
+ * @param locale locale (en, fr)
+ * @return generated pdf file
+ * @throws CoserBusinessException
+ */
+ protected File generateMetaFilePDF(Project project, File resultDirectory,
+ RSufiResult rsufiResult, String indicator, String locale) throws CoserBusinessException {
+
+ File result = null;
+
+ // le fichier estpopind
+ File estPopIndFile = new File(resultDirectory, rsufiResult.getEstPopIndName());
+
+ // donnees intermediare (map liste id > liste des indicateurs)
+ Map<String, SortedSet<String>> indicatorMap = new HashMap<String, SortedSet<String>>();
+
+ // le resutat sera une map complexe
+ // list des indicateurs (nom complet) > liste des especes (nom complet)
+ Map<String, SortedSet<String>> speciesMap = new HashMap<String, SortedSet<String>>();
+
+ // Campagne Indicateur Liste Species Strate Annee Estimation EcartType CV
+ DataStorage dataStorage = importService.loadCSVFile(estPopIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+ Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
+ while (estPopIndIterator.hasNext()) {
+ String[] tuple = estPopIndIterator.next();
+
+ String indicatorCode = tuple[1];
+ String listIdCode = tuple[2];
+ String speciesCode = tuple[3];
+
+ // get indicator list
+ SortedSet<String> indicatorList = indicatorMap.get(listIdCode);
+ if (indicatorList == null) {
+ indicatorList = new TreeSet<String>();
+ indicatorMap.put(listIdCode, indicatorList);
+ }
+
+ // get indicator full name
+ String indicatorName = (String)getIndicatorsMap().get(indicatorCode, locale);
+ indicatorList.add(indicatorName);
+
+ // get species full name
+ String speciesName = projectService.getSpeciesDisplayName(project, speciesCode);
+ SortedSet<String> speciesList = speciesMap.get(listIdCode);
+ if (speciesList == null) {
+ speciesList = new TreeSet<String>();
+ speciesMap.put(listIdCode, speciesList);
+ }
+ speciesList.add(speciesName);
+ }
+
+ try {
+ // render freemarker template
+ Template mapTemplate = freemarkerConfiguration.getTemplate("metainfo.ftl");
+
+ Map<String, Object> root = new HashMap<String, Object>();
+ root.put("indicatorsMap", indicatorMap);
+ root.put("speciesMap", speciesMap);
+
+ 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("cosermetainfo-", ".pdf");
+ result.deleteOnExit();
+ OutputStream 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 meta info file", ex);
+ } catch (TemplateException ex) {
+ throw new CoserBusinessException("Can't generate meta info file", ex);
+ } catch (DocumentException ex) {
+ throw new CoserBusinessException("Can't generate meta info file", ex);
+ }
+
+ return result;
+ }
}
Added: trunk/coser-business/src/main/resources/ftl/metainfo.ftl
===================================================================
--- trunk/coser-business/src/main/resources/ftl/metainfo.ftl (rev 0)
+++ trunk/coser-business/src/main/resources/ftl/metainfo.ftl 2011-01-20 10:54:12 UTC (rev 533)
@@ -0,0 +1,28 @@
+<html>
+ <body>
+
+ <h2>Espèces incluses dans le calcul des indicateurs de communautés</h2>
+ Chaque indicateur de communautés est calculé sur une liste d'espèces
+ sélectionnée selon différents critères de cohérence et de pertinence.
+ Par exemple, les espèces n'ayant pas fait l'objet de relevés tout au long
+ de la série sur les paramètres requis sont éliminées. Les espèces incluses
+ dans le calcul des indicateurs de communautés de la présente transmission
+ sont présentés ci-dessous.
+
+
+ <#list indicatorsMap.keySet() as indicatorId>
+ <h3>
+ <#list indicatorsMap.get(indicatorId) as indicator>
+ ${indicator},
+ </#list>
+ </h3>
+
+ <ul>
+ <#list speciesMap.get(indicatorId) as species>
+ <li>${species}</li>
+ </#list>
+ </ul>
+ </#list>
+
+</body>
+</html>
\ No newline at end of file
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 2011-01-20 08:52:30 UTC (rev 532)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2011-01-20 10:54:12 UTC (rev 533)
@@ -155,7 +155,7 @@
public void testGetMapFile() throws CoserBusinessException {
registerUploadedResult("/web/upload2.zip");
File file = webService.getMapFile("Medits", "SPECIES1");
- Assert.assertNotNull(file);
+ Assert.assertTrue(file.isFile());
}
/**
@@ -167,6 +167,56 @@
public void testGetMapFileAsPDF() throws CoserBusinessException {
registerUploadedResult("/web/upload2.zip");
File file = webService.getMapFileAsPDF("Medits", "SPECIES1");
- Assert.assertNotNull(file);
+ Assert.assertTrue(file.isFile());
}
+
+ /**
+ * Test que la generation d'un graph fonctionne.
+ *
+ * @throws CoserBusinessException
+ */
+ @Test
+ public void testGetChartCom() throws CoserBusinessException {
+ registerUploadedResult("/web/upload2.zip");
+ File file = webService.getChart("ecorse", null, "lnN", "fr");
+ Assert.assertTrue(file.isFile());
+ }
+
+ /**
+ * Test que la generation d'un graph fonctionne.
+ *
+ * @throws CoserBusinessException
+ */
+ @Test
+ public void testGetChartPop() throws CoserBusinessException {
+ registerUploadedResult("/web/upload2.zip");
+ File file = webService.getChartData("ecorse", "COSER_SPECIES2", "lnN", "fr");
+ Assert.assertTrue(file.isFile());
+ }
+
+ /**
+ * Test que la generation d'un sous fichier csv à partir du fichier
+ * estcomind fonctionne.
+ *
+ * @throws CoserBusinessException
+ */
+ @Test
+ public void testGetChartDataCom() throws CoserBusinessException {
+ registerUploadedResult("/web/upload2.zip");
+ File file = webService.getChartData("ecorse", null, "lnN", "fr");
+ Assert.assertTrue(file.isFile());
+ }
+
+ /**
+ * Test que la generation d'un sous fichier csv à partir du fichier
+ * estcomind fonctionne.
+ *
+ * @throws CoserBusinessException
+ */
+ @Test
+ public void testGetChartDataPop() throws CoserBusinessException {
+ registerUploadedResult("/web/upload2.zip");
+ File file = webService.getChartData("ecorse", "COSER_SPECIES2", "lnN", "fr");
+ Assert.assertTrue(file.isFile());
+ }
}
1
0
r532 - 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/result coser-ui/src/main/resources/i18n
by chatellier@users.labs.libre-entreprise.org 20 Jan '11
by chatellier@users.labs.libre-entreprise.org 20 Jan '11
20 Jan '11
Author: chatellier
Date: 2011-01-20 08:52:30 +0000 (Thu, 20 Jan 2011)
New Revision: 532
Log:
Ajout de l'affichage des zones dans l'interface d'admin des r?\195?\169sultats.
Added:
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTreeModel.java
trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-19 18:23:34 UTC (rev 531)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-20 08:52:30 UTC (rev 532)
@@ -200,6 +200,28 @@
}
/**
+ * Retourne les nom d'une zone (avec la facade, l'année et la serie) en
+ * fonction de l'id de la zone.
+ *
+ * @param zoneId zone id
+ * @return zone name (or {@code null} if not found)
+ * @throws CoserBusinessException
+ */
+ public String getZoneFullName(String zoneId) throws CoserBusinessException {
+ DataStorage localZoneMap = getZonesMap();
+ String resultName = null;
+ // "id";"facade";"zone";"periode";"serie";"comment";"map"
+ int zoneIndex = localZoneMap.indexOf(zoneId);
+ if (zoneIndex != -1) {
+ resultName = localZoneMap.get(zoneIndex)[1];
+ resultName += " - " + localZoneMap.get(zoneIndex)[2];
+ resultName += " - " + localZoneMap.get(zoneIndex)[3];
+ resultName += " - " + localZoneMap.get(zoneIndex)[4];
+ }
+ return resultName;
+ }
+
+ /**
* Retourne tous les projets qui ont des résultats.
*
* De la forme d'une liste de de path (à la tree path) :
@@ -867,6 +889,7 @@
*/
public Map<String, String> getFacades() throws CoserBusinessException {
Map<String, String> facades = new HashMap<String, String>();
+ // "id";"facade";"zone";"periode";"serie";"comment";"map"
DataStorage zonesMap = getZonesMap();
Iterator<String[]> itZone = zonesMap.iterator(true);
while (itZone.hasNext()) {
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 2011-01-19 18:23:34 UTC (rev 531)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2011-01-20 08:52:30 UTC (rev 532)
@@ -503,6 +503,11 @@
ResultHandler handler = new ResultHandler();
selectUploadResultView.setHandler(handler);
handler.init(selectUploadResultView);
+
+ // restore session size
+ SwingSession session = (SwingSession)view.getContextValue(SwingSession.class);
+ session.add(selectUploadResultView);
+
setMainComponent(selectUploadResultView);
}
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2011-01-19 18:23:34 UTC (rev 531)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2011-01-20 08:52:30 UTC (rev 532)
@@ -69,6 +69,8 @@
//SwingUtil.fixTableColumnWidth(view.getAvailableProjectTable(), 1, 25);
view.getAvailableResultTable().setDefaultRenderer(String[].class, new RsufiResultRenderer());
view.getSelectedResultTable().setDefaultRenderer(String[].class, new RsufiResultRenderer());
+ view.getAvailableResultTable().setDefaultRenderer(String.class, new RsufiResultZoneRenderer(view));
+ view.getSelectedResultTable().setDefaultRenderer(String.class, new RsufiResultZoneRenderer(view));
// initialise les données avec les filtres par default
updateAvailableResultsFilter(view);
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTreeModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTreeModel.java 2011-01-19 18:23:34 UTC (rev 531)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTreeModel.java 2011-01-20 08:52:30 UTC (rev 532)
@@ -107,9 +107,12 @@
result = _("coser.ui.uploadresult.path");
break;
case 2:
+ result = _("coser.ui.uploadresult.zone");
+ break;
+ case 3:
result = _("coser.ui.uploadresult.mapResult");
break;
- case 3:
+ case 4:
result = _("coser.ui.uploadresult.publishData");
break;
}
@@ -127,11 +130,14 @@
result = String[].class;
break;
case 2:
- result = Boolean.class;
+ result = String.class;
break;
case 3:
result = Boolean.class;
break;
+ case 4:
+ result = Boolean.class;
+ break;
}
return result;
}
@@ -141,9 +147,9 @@
*/
@Override
public int getColumnCount() {
- int result = 2;
+ int result = 3;
if (selected) {
- result = 4;
+ result = 5;
}
return result;
}
@@ -158,19 +164,25 @@
Object[] data = resultPath.get(rowIndex);
switch (columnIndex) {
- case 0:
+ case 0: {
RSufiResult rsufiResult = (RSufiResult)data[2];
result = rsufiResult.getCreationDate();
break;
+ }
case 1:
result = data;
break;
- case 2:
+ case 2: {
+ RSufiResult rsufiResult = (RSufiResult)data[2];
+ result = rsufiResult.getZone();
+ break;
+ }
+ case 3:
// c'est pas tres safe tu les hashcode des tableaux
// mais bon...
result = mapResult.contains(data);
break;
- case 3:
+ case 4:
// c'est pas tres safe tu les hashcode des tableaux
// mais bon...
result = publishDataResult.contains(data);
@@ -182,7 +194,7 @@
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
- return columnIndex >= 1;
+ return columnIndex >= 3;
}
@Override
@@ -190,7 +202,7 @@
Object[] data = resultPath.get(rowIndex);
- if (columnIndex == 2) {
+ if (columnIndex == 3) {
Boolean bValue = (Boolean)aValue;
if (bValue.booleanValue()) {
mapResult.add(data);
@@ -200,7 +212,7 @@
}
}
- else if (columnIndex == 3) {
+ else if (columnIndex == 4) {
Boolean bValue = (Boolean)aValue;
if (bValue.booleanValue()) {
publishDataResult.add(data);
Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java 2011-01-20 08:52:30 UTC (rev 532)
@@ -0,0 +1,74 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 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.result;
+
+import java.awt.Component;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+
+import fr.ifremer.coser.CoserBusinessException;
+import fr.ifremer.coser.CoserException;
+import fr.ifremer.coser.services.WebService;
+
+/**
+ * Available and selected result zone renderer.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class RsufiResultZoneRenderer extends DefaultTableCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -9030155088814184637L;
+
+ protected SelectUploadResultView view;
+
+ public RsufiResultZoneRenderer(SelectUploadResultView view) {
+ this.view = view;
+ }
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value,
+ boolean isSelected, boolean hasFocus, int row, int column) {
+
+ // get web service
+ WebService webService = view.getContextValue(WebService.class);
+
+ Object localValue = value;
+ if (value != null && value instanceof String) {
+ String zoneId = (String)value;
+ try {
+ localValue = webService.getZoneFullName(zoneId);
+ } catch (CoserBusinessException ex) {
+ throw new CoserException("Can't get zone name", ex);
+ }
+ }
+ return super.getTableCellRendererComponent(table, localValue, isSelected, hasFocus,
+ row, column);
+ }
+}
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
===================================================================
--- trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2011-01-19 18:23:34 UTC (rev 531)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2011-01-20 08:52:30 UTC (rev 532)
@@ -243,6 +243,7 @@
coser.ui.uploadresult.uploadChoice=Upload to server
coser.ui.uploadresult.uploadLogin=Admin login \:
coser.ui.uploadresult.uploadPassword=Admin password \:
+coser.ui.uploadresult.zone=Zone
coser.ui.validators.content=Content \:
coser.ui.validators.description=Application must be restarted after validators modification.
coser.ui.validators.title=Controls
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 2011-01-19 18:23:34 UTC (rev 531)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2011-01-20 08:52:30 UTC (rev 532)
@@ -243,6 +243,7 @@
coser.ui.uploadresult.uploadChoice=Envoyer sur le serveur
coser.ui.uploadresult.uploadLogin=Login admin \:
coser.ui.uploadresult.uploadPassword=Mot de passe admin \:
+coser.ui.uploadresult.zone=Zone
coser.ui.validators.content=Contenu \:
coser.ui.validators.description=L'application doit \u00EAtre red\u00E9marr\u00E9e apr\u00E8s la modification des validateurs.
coser.ui.validators.title=Contr\u00F4les
1
0
r531 - in trunk: coser-business/src/main/java/fr/ifremer/coser/services coser-web/src/main/java/fr/ifremer/coser/web/actions/com coser-web/src/main/java/fr/ifremer/coser/web/actions/pop coser-web/src/main/resources/fr/ifremer/coser/web coser-web/src/main/webapp/WEB-INF/content/com coser-web/src/main/webapp/WEB-INF/content/pop coser-web/src/main/webapp/WEB-INF/decorators
by chatellier@users.labs.libre-entreprise.org 19 Jan '11
by chatellier@users.labs.libre-entreprise.org 19 Jan '11
19 Jan '11
Author: chatellier
Date: 2011-01-19 18:23:34 +0000 (Wed, 19 Jan 2011)
New Revision: 531
Log:
Telechargement des donn?\195?\169es des graphs.
Generation des grah ordon?\195?\169 et avec trou.
Added:
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphCsvAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphCsvAction.java
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-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties
trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/com/indicator.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp
trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp
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 2011-01-19 10:16:47 UTC (rev 530)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2011-01-19 18:23:34 UTC (rev 531)
@@ -42,6 +42,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.SortedMap;
import java.util.TreeMap;
import org.apache.commons.collections.CollectionUtils;
@@ -84,6 +85,7 @@
import fr.ifremer.coser.data.Catch;
import fr.ifremer.coser.data.Length;
import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.MemoryDataStorage;
/**
* Publication service (charts, reports, export, pdf...)
@@ -648,24 +650,62 @@
}
/**
- * @param resultDirectory
- * @param rsufiResult
- * @param locale
- * @return
+ * Retourne le nom d'affichage d'une especes.
+ *
+ * @param project project
+ * @param species species code
+ * @return species display name
+ */
+ protected String getSpeciesDisplayName(Project project, String species) {
+ String displayName = null;
+
+ // load reftax in memory
+ Iterator<String[]> reftax = project.getRefTaxSpecies().iterator(true);
+ while (reftax.hasNext()) {
+ String[] tuple = reftax.next();
+
+ // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
+ String speciesCode = tuple[3];
+ if (speciesCode.equals(species)) {
+ // nom + auteur (sans ajout de parenthese : important)
+ displayName = tuple[4] + " " + tuple[5];
+ break;
+ }
+ }
+
+ return displayName;
+ }
+
+ /**
+ * Generate community graph for selected indicator.
+ * Used by web ui.
+ *
+ * @param project project
+ * @param resultDirectory result directory
+ * @param rsufiResult rsufiresult
+ * @param indicator indicator
+ * @param indicatorName indicatorName localized
+ * @return generated graph image (temp file)
* @throws CoserBusinessException
*/
- public File getRsufiResultComChart(File resultDirectory,
- RSufiResult rsufiResult, String indicator, String locale) throws CoserBusinessException {
+ public File getRsufiResultComChart(Project project, File resultDirectory,
+ RSufiResult rsufiResult, String indicator, String indicatorName) throws CoserBusinessException {
File result = null;
+ // get graph title
+ String title = projectService.getProjectSurveyName(resultDirectory, rsufiResult);
+ title += " - " + indicatorName;
+
// le fichier estcomind
File estComIndFile = new File(resultDirectory, rsufiResult.getEstComIndName());
// Campagne Indicateur Liste Strate Annee Estimation EcartType CV
DataStorage dataStorage = importService.loadCSVFile(estComIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ int minYear = Integer.MAX_VALUE;
+ int maxYear = Integer.MIN_VALUE;
+ Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
while (estPopIndIterator.hasNext()) {
String[] tuple = estPopIndIterator.next();
@@ -674,17 +714,36 @@
if (indicatorCode.equals(indicator)) {
Double estimation = Double.parseDouble(tuple[5]);
Double ecart = Double.parseDouble(tuple[6]);
- String year = tuple[4];
- statisticalDataset.add(estimation, ecart, "Serie1", year);
+ int year = Integer.parseInt(tuple[4]);
+
+ if (year < minYear) {
+ minYear = year;
+ }
+ if (year > maxYear) {
+ maxYear = year;
+ }
+ graphData.put(year, new Double[]{estimation, ecart});
}
}
+ // generate dataset with sorted data
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ for (int indexYear = minYear ; indexYear <= maxYear ; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ statisticalDataset.add(entry[0], entry[1], "Serie1", (Comparable)indexYear);
+ }
+ else {
+ statisticalDataset.add(null, null, "Serie1", (Comparable)indexYear);
+ }
+ }
+
// configure chart
CategoryAxis categoryAxis = new CategoryAxis(_("coser.business.common.year"));
categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
// label horizontaux
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- ValueAxis valueAxis = new NumberAxis(_("coser.business.common.number"));
+ ValueAxis valueAxis = new NumberAxis(indicatorName);
valueAxis.setUpperMargin(0.1);
CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
@@ -696,9 +755,12 @@
CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart("Titre",
+ JFreeChart chart = new JFreeChart(title,
JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+ // remove series legend
+ chart.removeLegend();
+
try {
result = File.createTempFile("coser-", ".chart");
result.deleteOnExit();
@@ -711,26 +773,36 @@
}
/**
- * @param resultDirectory
- * @param rsufiResult
- * @param species
- * @param indicator
- * @param locale
- * @return
+ * Generate population graph for selected species and indicator.
+ *
+ * @param project project
+ * @param resultDirectory result directory
+ * @param rsufiResult rsufi result
+ * @param species species
+ * @param indicator indicator
+ * @param indicatorName indicatorName localized
+ * @return generated image file (temp file)
* @throws CoserBusinessException
*/
- public File getRsufiResultPopChart(File resultDirectory,
- RSufiResult rsufiResult, String species, String indicator, String locale) throws CoserBusinessException {
+ public File getRsufiResultPopChart(Project project, File resultDirectory,
+ RSufiResult rsufiResult, String species, String indicator, String indicatorName) throws CoserBusinessException {
File result = null;
+ // get graph title
+ String title = projectService.getProjectSurveyName(resultDirectory, rsufiResult);
+ title += " - " + indicatorName;
+ title += " - " + getSpeciesDisplayName(project, species);
+
// le fichier estcomind
File estPopIndFile = new File(resultDirectory, rsufiResult.getEstPopIndName());
// Campagne Indicateur Liste Species Strate Annee Estimation EcartType CV
DataStorage dataStorage = importService.loadCSVFile(estPopIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ int minYear = Integer.MAX_VALUE;
+ int maxYear = Integer.MIN_VALUE;
+ Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
while (estPopIndIterator.hasNext()) {
String[] tuple = estPopIndIterator.next();
@@ -740,21 +812,40 @@
if (speciesCode.equals(species) && indicatorCode.equals(indicator)) {
Double estimation = Double.parseDouble(tuple[6]);
Double ecart = Double.parseDouble(tuple[7]);
- String year = tuple[5];
- statisticalDataset.add(estimation, ecart, "Serie1", year);
+ int year = Integer.parseInt(tuple[5]);
+
+ if (year < minYear) {
+ minYear = year;
+ }
+ if (year > maxYear) {
+ maxYear = year;
+ }
+ graphData.put(year, new Double[]{estimation, ecart});
}
}
-
+
+ // generate dataset with sorted data
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ for (int indexYear = minYear ; indexYear <= maxYear ; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ statisticalDataset.add(entry[0], entry[1], "Serie1", (Comparable)indexYear);
+ }
+ else {
+ statisticalDataset.add(null, null, "Serie1", (Comparable)indexYear);
+ }
+ }
+
// configure chart
CategoryAxis categoryAxis = new CategoryAxis(_("coser.business.common.year"));
categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
// label horizontaux
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- ValueAxis valueAxis = new NumberAxis(_("coser.business.common.number"));
+ ValueAxis valueAxis = new NumberAxis(indicatorName);
valueAxis.setUpperMargin(0.1);
CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
+
// n'affiche pas les nombre sur le graphique
//StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
//renderer.setBaseItemLabelGenerator(itemLabelGenerator);
@@ -762,9 +853,12 @@
CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart("Titre",
+ JFreeChart chart = new JFreeChart(title,
JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
+
+ // remove series legend
+ chart.removeLegend();
+
try {
result = File.createTempFile("coser-", ".chart");
result.deleteOnExit();
@@ -775,5 +869,98 @@
return result;
}
-
+
+ /**
+ * Genere un sous fichier CSV (qui contient un sous ensemble de estPopInd)
+ * et qui a servit a generer le graphique.
+ *
+ * @param resultDirectory result directory
+ * @param rsufiResult rsufi result
+ * @param indicator indicator
+ * @return generated csv file (temp file)
+ * @throws CoserBusinessException
+ */
+ public File getRsufiResultComChartData(File resultDirectory,
+ RSufiResult rsufiResult, String indicator) throws CoserBusinessException {
+
+ File result = null;
+
+ try {
+ result = File.createTempFile("coser-", ".csv");
+
+ // le fichier estcomind
+ File estComIndFile = new File(resultDirectory, rsufiResult.getEstComIndName());
+
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ DataStorage dataStorage = importService.loadCSVFile(estComIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+ DataStorage subDataStorage = new MemoryDataStorage();
+ Iterator<String[]> estComIndIterator = dataStorage.iterator();
+ // manage header
+ String[] headers = estComIndIterator.next();
+ subDataStorage.add(headers);
+
+ while (estComIndIterator.hasNext()) {
+ String[] tuple = estComIndIterator.next();
+
+ String indicatorCode = tuple[1];
+ if (indicatorCode.equals(indicator)) {
+ subDataStorage.add(tuple);
+ }
+ }
+
+ importService.storeDataWhithoutQuote(subDataStorage, result);
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't save csv file", ex);
+ }
+
+ return result;
+ }
+
+ /**
+ * Genere un sous fichier CSV (qui contient un sous ensemble de estPopInd)
+ * et qui a servit a generer le graphique.
+ *
+ * @param resultDirectory result directory
+ * @param rsufiResult rsufi result
+ * @param species species
+ * @param indicator indicator
+ * @return generated csv file (temp file)
+ * @throws CoserBusinessException
+ */
+ public File getRsufiResultPopChartData(File resultDirectory,
+ RSufiResult rsufiResult, String species, String indicator) throws CoserBusinessException {
+
+ File result = null;
+
+ try {
+ result = File.createTempFile("coser-", ".csv");
+
+ // le fichier estcomind
+ File estPopIndFile = new File(resultDirectory, rsufiResult.getEstPopIndName());
+
+ // Campagne Indicateur Liste Species Strate Annee Estimation EcartType CV
+ DataStorage dataStorage = importService.loadCSVFile(estPopIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+ DataStorage subDataStorage = new MemoryDataStorage();
+ Iterator<String[]> estPopIndIterator = dataStorage.iterator();
+ // manage header
+ String[] headers = estPopIndIterator.next();
+ subDataStorage.add(headers);
+
+ while (estPopIndIterator.hasNext()) {
+ String[] tuple = estPopIndIterator.next();
+
+ String speciesCode = tuple[3];
+ String indicatorCode = tuple[1];
+ if (speciesCode.equals(species) && indicatorCode.equals(indicator)) {
+ subDataStorage.add(tuple);
+ }
+ }
+
+ importService.storeDataWhithoutQuote(subDataStorage, result);
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't save csv file", ex);
+ }
+
+ return result;
+ }
}
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 2011-01-19 10:16:47 UTC (rev 530)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-19 18:23:34 UTC (rev 531)
@@ -1369,11 +1369,17 @@
// extraction des especes pour le résultat demandé
if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
+ // load project (without data to get reftax data)
+ Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
+ String indicatorName = (String)indicatorsMap.get(indicator, locale);
+
if (species == null) {
- result = publicationService.getRsufiResultComChart(resultFile, rsufiResult, indicator, locale);
+ // title = surveyName - indicateur
+ result = publicationService.getRsufiResultComChart(project, resultFile, rsufiResult, indicator, indicatorName);
}
else {
- result = publicationService.getRsufiResultPopChart(resultFile, rsufiResult, species, indicator, locale);
+ // title = surveyName - indicateur - species
+ result = publicationService.getRsufiResultPopChart(project, resultFile, rsufiResult, species, indicator, indicatorName);
}
break;
}
@@ -1389,7 +1395,69 @@
return result;
}
+
+ /**
+ * Retourne les indicateurs calculés avec leurs traductions scientifique
+ * pour la zone et l'especes souhaitées.
+ *
+ * @param zone zone id
+ * @param species especes (if {@code null} look for com indicators
+ * @param indicator indicator
+ * @param locale locale ({@code fr} ou {@code en})
+ * @return la liste des indicateurs
+ * @throws CoserBusinessException
+ */
+ public File getChartData(String zone, String species, String indicator, String locale) throws CoserBusinessException {
+ File result = null;
+ // parcours des resultats disponibles
+ File projectsDirectory = config.getWebProjectsDirectory();
+ 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.getZone().equals(zone)) {
+
+ if (species == null) {
+ // title = surveyName - indicateur
+ result = publicationService.getRsufiResultComChartData(resultFile, rsufiResult, indicator);
+ }
+ else {
+ // title = surveyName - indicateur - species
+ result = publicationService.getRsufiResultPopChartData(resultFile, rsufiResult, species, indicator);
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
/**
* Recupere le fichier image de la carte demandées en fonction de la zone
* et de l'espece.
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphCsvAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphCsvAction.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphCsvAction.java 2011-01-19 18:23:34 UTC (rev 531)
@@ -0,0 +1,104 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 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%
+ */
+
+package fr.ifremer.coser.web.actions.com;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.Locale;
+
+import org.apache.struts2.convention.annotation.Action;
+import org.apache.struts2.convention.annotation.Result;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+import fr.ifremer.coser.CoserBusinessException;
+import fr.ifremer.coser.services.WebService;
+import fr.ifremer.coser.web.CoserWebException;
+import fr.ifremer.coser.web.ServiceFactory;
+
+/**
+ * Télécharge les données qui ont servi a généré le graph au format CSV.
+ *
+ * Parametre : zone, species, indicator.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class GraphCsvAction extends ActionSupport {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 3385467755357775199L;
+
+ protected String zone;
+
+ protected String indicator;
+
+ public String getZone() {
+ return zone;
+ }
+
+ public void setZone(String zone) {
+ this.zone = zone;
+ }
+
+ public String getIndicator() {
+ return indicator;
+ }
+
+ public void setIndicator(String indicator) {
+ this.indicator = indicator;
+ }
+
+ @Action(results= {@Result(type="stream", params={"contentType", "text/csv", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
+ public String execute() {
+ return SUCCESS;
+ }
+
+ public String getFilename() {
+ return indicator + ".csv";
+ }
+
+ public InputStream getInputStream() {
+ WebService webService = ServiceFactory.getWebService();
+
+ Locale locale = getLocale();
+ String localeCode = locale.getLanguage();
+
+ InputStream input = null;
+ try {
+ File mapImage = webService.getChartData(zone, null, indicator, localeCode);
+ input = new FileInputStream(mapImage);
+ } catch (CoserBusinessException ex) {
+ throw new CoserWebException("Can't get map file", ex);
+ } catch (FileNotFoundException ex) {
+ throw new CoserWebException("Can't get map file", ex);
+ }
+
+ return input;
+ }
+}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphCsvAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
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 2011-01-19 10:16:47 UTC (rev 530)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2011-01-19 18:23:34 UTC (rev 531)
@@ -41,7 +41,7 @@
/**
* Affiche le graphique demandé.
*
- * Parametre : zone, species, indicator.
+ * Parametre : zone, indicator.
*
* @author chatellier
* @version $Revision$
@@ -58,8 +58,6 @@
protected String indicator;
- protected String chartUrl;
-
public String getZone() {
return zone;
}
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphCsvAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphCsvAction.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphCsvAction.java 2011-01-19 18:23:34 UTC (rev 531)
@@ -0,0 +1,114 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 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%
+ */
+
+package fr.ifremer.coser.web.actions.pop;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.Locale;
+
+import org.apache.struts2.convention.annotation.Action;
+import org.apache.struts2.convention.annotation.Result;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+import fr.ifremer.coser.CoserBusinessException;
+import fr.ifremer.coser.services.WebService;
+import fr.ifremer.coser.web.CoserWebException;
+import fr.ifremer.coser.web.ServiceFactory;
+
+/**
+ * Télécharge les données qui ont servi a généré le graph au format CSV.
+ *
+ * Parametre : zone, species, indicator.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class GraphCsvAction extends ActionSupport {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 3385467755357775199L;
+
+ protected String zone;
+
+ protected String species;
+
+ protected String indicator;
+
+ public String getZone() {
+ return zone;
+ }
+
+ public void setZone(String zone) {
+ this.zone = zone;
+ }
+
+ public String getIndicator() {
+ return indicator;
+ }
+
+ public void setIndicator(String indicator) {
+ this.indicator = indicator;
+ }
+
+ public String getSpecies() {
+ return species;
+ }
+
+ public void setSpecies(String species) {
+ this.species = species;
+ }
+
+ @Action(results= {@Result(type="stream", params={"contentType", "text/csv", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
+ public String execute() {
+ return SUCCESS;
+ }
+
+ public String getFilename() {
+ return indicator + ".csv";
+ }
+
+ public InputStream getInputStream() {
+ WebService webService = ServiceFactory.getWebService();
+
+ Locale locale = getLocale();
+ String localeCode = locale.getLanguage();
+
+ InputStream input = null;
+ try {
+ File mapImage = webService.getChartData(zone, null, indicator, localeCode);
+ input = new FileInputStream(mapImage);
+ } catch (CoserBusinessException ex) {
+ throw new CoserWebException("Can't get map file", ex);
+ } catch (FileNotFoundException ex) {
+ throw new CoserWebException("Can't get map file", ex);
+ }
+
+ return input;
+ }
+}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphCsvAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties
===================================================================
--- trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties 2011-01-19 10:16:47 UTC (rev 530)
+++ trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties 2011-01-19 18:23:34 UTC (rev 531)
@@ -23,6 +23,7 @@
###
message.com.title=Indices de communaut\u00E9s
message.com.paragraph1=Des indices de communaut\u00E9 sont calcul\u00E9s pour un ensemble d''esp\u00E8ces dans chaque s\u00E9rie. La liste des esp\u00E8ces incluses pour le calcul de chaque indice varie selon les donn\u00E9es disponibles pour la r\u00E9alisation des calculs.
+message.com.downloadascsv=Download as CSV
message.layout.title=Populations and communities indices, resulting from Ifremer monitoring halieutics survey
message.layout.oceanicdatatitle=Gestion des donn\u00E9es des campagnes oc\u00E9anographiques
message.layout.oceanicdata1=le Syst\u00E8me d'informations scientifiques pour la mer de l'Ifremer (SISMER)
@@ -58,6 +59,7 @@
message.map.title=Cartes de distribution
message.map.warning=Warning
message.map.warningcontent=Les cartes pr\u00E9sent\u00E9es ne doivent pas \u00EAtre interpr\u00E9t\u00E9es comme des cartes de distribution des esp\u00E8ces mais comme celle des zones o\u00F9 elles sont captur\u00E9es lors des campagnes scientifiques. Les campagnes \u00E9tant r\u00E9alis\u00E9es avec des chaluts diff\u00E9rents et \u00E0 diff\u00E9rentes saisons, les esp\u00E8ces peuvent avoir des capturabilit\u00E9s tr\u00E8s diff\u00E9rentes entre les s\u00E9ries de campagnes, donc d''une zone \u00E0 l''autre.
+message.pop.downloadascsv=Download as CSV
message.pop.title=Indices biologiques
message.pop.paragraph1=Les indices pr\u00E9sent\u00E9s ont \u00E9t\u00E9 s\u00E9lectionn\u00E9s en r\u00E9f\u00E9rence \u00E0 leur aptitude \u00E0 renseigner sur l''impact de la p\u00EAche, en vue de leur int\u00E9gration dans des tableaux de bord d\u2019indicateurs d''\u00E9volution d''\u00E9cosyst\u00E8mes exploit\u00E9s par la p\u00EAche.
message.pop.paragraph2=Les donn\u00E9es disponibles sur le site sont les valeurs de chaque indice. Les informations ont \u00E9t\u00E9 valid\u00E9es par un groupe de travail dans une approche int\u00E9grative d\u2019indicateurs de populations et de communaut\u00E9s. Les r\u00E9sultats sont donn\u00E9s par zone g\u00E9ographique et par esp\u00E8ce pour l''ensemble de la s\u00E9rie de donn\u00E9es disponible. L''utilisateur peut s\u00E9lectionner la zone g\u00E9ographique, la saison (dans le cas de s\u00E9ries saisonni\u00E8res), l''esp\u00E8ce et l''indice. Pour les s\u00E9lections pour lesquelles une information est disponible, le syst\u00E8me produit un graphe pr\u00E9sentant la distribution temporelle de l''indice, avec une repr\u00E9sentation de l''\u00E9cart-type. Il fournit la possibilit\u00E9 d\u2019extraire la table des donn\u00E9es correspondantes, incluant la valeur de l\u2019indice par ann\u00E9e, ainsi que son \u00E9cart-type et son coefficient de variation.
Modified: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties
===================================================================
--- trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties 2011-01-19 10:16:47 UTC (rev 530)
+++ trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties 2011-01-19 18:23:34 UTC (rev 531)
@@ -21,6 +21,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# #L%
###
+message.com.downloadascsv=T\u00E9l\u00E9charger en CSV
message.com.title=Indices de communaut\u00E9s
message.com.paragraph1=Des indices de communaut\u00E9 sont calcul\u00E9s pour un ensemble d''esp\u00E8ces dans chaque s\u00E9rie. La liste des esp\u00E8ces incluses pour le calcul de chaque indice varie selon les donn\u00E9es disponibles pour la r\u00E9alisation des calculs.
message.layout.title=Indices de populations et de communaut\u00E9s issus des campagnes de surveillance halieutique de l''Ifremer
@@ -58,6 +59,7 @@
message.map.title=Cartes de distribution
message.map.warning=Avertissement
message.map.warningcontent=Les cartes pr\u00E9sent\u00E9es ne doivent pas \u00EAtre interpr\u00E9t\u00E9es comme des cartes de distribution des esp\u00E8ces mais comme celle des zones o\u00F9 elles sont captur\u00E9es lors des campagnes scientifiques. Les campagnes \u00E9tant r\u00E9alis\u00E9es avec des chaluts diff\u00E9rents et \u00E0 diff\u00E9rentes saisons, les esp\u00E8ces peuvent avoir des capturabilit\u00E9s tr\u00E8s diff\u00E9rentes entre les s\u00E9ries de campagnes, donc d''une zone \u00E0 l''autre.
+message.pop.downloadascsv=T\u00E9l\u00E9charger en CSV
message.pop.title=Indices biologiques
message.pop.paragraph1=Les indices pr\u00E9sent\u00E9s ont \u00E9t\u00E9 s\u00E9lectionn\u00E9s en r\u00E9f\u00E9rence \u00E0 leur aptitude \u00E0 renseigner sur l''impact de la p\u00EAche, en vue de leur int\u00E9gration dans des tableaux de bord d\u2019indicateurs d''\u00E9volution d''\u00E9cosyst\u00E8mes exploit\u00E9s par la p\u00EAche.
message.pop.paragraph2=Les donn\u00E9es disponibles sur le site sont les valeurs de chaque indice. Les informations ont \u00E9t\u00E9 valid\u00E9es par un groupe de travail dans une approche int\u00E9grative d\u2019indicateurs de populations et de communaut\u00E9s. Les r\u00E9sultats sont donn\u00E9s par zone g\u00E9ographique et par esp\u00E8ce pour l''ensemble de la s\u00E9rie de donn\u00E9es disponible. L''utilisateur peut s\u00E9lectionner la zone g\u00E9ographique, la saison (dans le cas de s\u00E9ries saisonni\u00E8res), l''esp\u00E8ce et l''indice. Pour les s\u00E9lections pour lesquelles une information est disponible, le syst\u00E8me produit un graphe pr\u00E9sentant la distribution temporelle de l''indice, avec une repr\u00E9sentation de l''\u00E9cart-type. Il fournit la possibilit\u00E9 d\u2019extraire la table des donn\u00E9es correspondantes, incluant la valeur de l\u2019indice par ann\u00E9e, ainsi que son \u00E9cart-type et son coefficient de variation.
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp 2011-01-19 10:16:47 UTC (rev 530)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp 2011-01-19 18:23:34 UTC (rev 531)
@@ -38,6 +38,12 @@
<s:param name="zone" value="%{zone}" />
<s:param name="indicator" value="%{indicator}" />
</s:url>" />
+
+ <p><s:a action="graph-csv">
+ <s:param name="zone" value="%{zone}" />
+ <s:param name="indicator" value="%{indicator}" />
+ <s:text name="message.com.downloadascsv"></s:text>
+ </s:a>.</p>
</body>
</html>
\ No newline at end of file
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/com/indicator.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/com/indicator.jsp 2011-01-19 10:16:47 UTC (rev 530)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/com/indicator.jsp 2011-01-19 18:23:34 UTC (rev 531)
@@ -39,7 +39,6 @@
<s:form action="graph" method="get">
<s:select name="indicator" list="indicators" label="%{getText('message.common.selectindicator')}" />
<s:hidden name="zone" property="zone"/>
- <s:hidden name="species" property="species"/>
<s:submit label="Suite"/>
</s:form>
</body>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp 2011-01-19 10:16:47 UTC (rev 530)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp 2011-01-19 18:23:34 UTC (rev 531)
@@ -41,5 +41,12 @@
<s:param name="species" value="%{species}" />
<s:param name="indicator" value="%{indicator}" />
</s:url>" />
+
+ <p><s:a action="graph-csv">
+ <s:param name="zone" value="%{zone}" />
+ <s:param name="species" value="%{species}" />
+ <s:param name="indicator" value="%{indicator}" />
+ <s:text name="message.com.downloadascsv"></s:text>
+ </s:a>.</p>
</body>
</html>
\ No newline at end of file
Modified: trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2011-01-19 10:16:47 UTC (rev 530)
+++ trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2011-01-19 18:23:34 UTC (rev 531)
@@ -49,6 +49,7 @@
<div id="middle" class="clearfix">
<div class="page">
+ <span class="clt"></span>
<div class="content">
<div class="degrade">
<div class="top_content">
1
0
r530 - trunk/coser-business/src/main/java/fr/ifremer/coser/services
by chatellier@users.labs.libre-entreprise.org 19 Jan '11
by chatellier@users.labs.libre-entreprise.org 19 Jan '11
19 Jan '11
Author: chatellier
Date: 2011-01-19 10:16:47 +0000 (Wed, 19 Jan 2011)
New Revision: 530
Log:
Add doc, and clean file
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.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 2011-01-19 10:13:10 UTC (rev 529)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-19 10:16:47 UTC (rev 530)
@@ -1519,13 +1519,12 @@
* Contient:
* <ul>
* <li>les 4 fichiers apres sélection
- * <li>
- * <li>
+ * <li>un fichier de décharge (pdf)
* </ul>
*
* @param zone zone (zoneid-surveyname)
* @param locale locale (fr/en)
- * @return map file
+ * @return zip source file (auto delete when jvm shutdown)
* @throws CoserBusinessException
*/
public File getSourceZip(String zone, String locale) throws CoserBusinessException {
@@ -1584,7 +1583,7 @@
*
* @param project project
* @param selection selection with loaded data
- * @return generated zip file
+ * @return generated zip file (auto delete when jvm shutdown)
* @throws CoserBusinessException
*/
protected File generateSourceZip(Project project, Selection selection) throws CoserBusinessException {
@@ -1604,6 +1603,7 @@
// make zip
resultZip = File.createTempFile("coser-result", ".zip");
+ resultZip.deleteOnExit();
ZipUtil.compress(resultZip, archiveDir);
// clean directory
1
0
r529 - trunk/coser-business/src/test/java/fr/ifremer/coser/services
by chatellier@users.labs.libre-entreprise.org 19 Jan '11
by chatellier@users.labs.libre-entreprise.org 19 Jan '11
19 Jan '11
Author: chatellier
Date: 2011-01-19 10:13:10 +0000 (Wed, 19 Jan 2011)
New Revision: 529
Log:
Wrong commit
Modified:
trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
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 2011-01-19 10:10:46 UTC (rev 528)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2011-01-19 10:13:10 UTC (rev 529)
@@ -104,7 +104,7 @@
@AfterClass
public static void cleanDirectory() throws IOException {
- //FileUtils.deleteDirectory(testDirectory);
+ FileUtils.deleteDirectory(testDirectory);
}
/**
1
0
r528 - in trunk/coser-business/src: main/java/fr/ifremer/coser/services test/java/fr/ifremer/coser/services
by chatellier@users.labs.libre-entreprise.org 19 Jan '11
by chatellier@users.labs.libre-entreprise.org 19 Jan '11
19 Jan '11
Author: chatellier
Date: 2011-01-19 10:10:46 +0000 (Wed, 19 Jan 2011)
New Revision: 528
Log:
Les sources doivent contenir l'export rsufi et non les donn?\195?\169es brutes de s?\195?\169lection.
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.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 2011-01-19 09:43:05 UTC (rev 527)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2011-01-19 10:10:46 UTC (rev 528)
@@ -691,7 +691,7 @@
return project;
}
-
+
/**
* Load selection data in an initialized project.
*
@@ -701,8 +701,20 @@
* @throws CoserBusinessException
*/
public Project loadSelectionData(Project project, Selection selection) throws CoserBusinessException {
+ return loadSelectionData(config.getProjectsDirectory(), project, selection);
+ }
- File projectsDirectory = config.getProjectsDirectory();
+ /**
+ * Load selection data in an initialized project form specific directory.
+ *
+ * @param projectsDirectory directory containing projects
+ * @param project project
+ * @param selection selection to fill
+ * @return project with data
+ * @throws CoserBusinessException
+ */
+ public Project loadSelectionData(File projectsDirectory, Project project, Selection selection) throws CoserBusinessException {
+
File projectDirectory = new File(projectsDirectory, project.getName());
// first free memory, clear all data
@@ -2561,9 +2573,10 @@
* @param project project
* @param selection selection
* @param directory directory to extract file to
+ * @return extracted directory
* @throws CoserBusinessException
*/
- public void extractRSUfiData(Project project, Selection selection, File directory) throws CoserBusinessException {
+ public File extractRSUfiData(Project project, Selection selection, File directory) throws CoserBusinessException {
File projectDirectory = new File(directory, project.getName());
projectDirectory.mkdirs();
@@ -2602,6 +2615,8 @@
finally {
IOUtils.closeQuietly(out);
}
+
+ return projectDirectory;
}
/**
@@ -2674,6 +2689,23 @@
}
/**
+ * Look for project survey name in container data.
+ *
+ * @param container data container
+ * @return survey name
+ */
+ public String getProjectSurveyName(AbstractDataContainer container) {
+ String result = null;
+
+ Iterator<String[]> itCatchData = container.getCatch().iterator(true);
+ while (StringUtils.isEmpty(result) && itCatchData.hasNext()) {
+ result = itCatchData.next()[Catch.INDEX_SURVEY];
+ }
+
+ return result;
+ }
+
+ /**
* Look for project survey name in rsufi result.
* Read estcomind file to known that.
* Used in webservice to know map file names.
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 2011-01-19 09:43:05 UTC (rev 527)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-19 10:10:46 UTC (rev 528)
@@ -1557,10 +1557,14 @@
// extraction des especes pour le résultat demandé
if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
- // load project (without data to get original file names)
+ // load project (with data to get original file names)
Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
+
+ // load selection data (to do data export rsufi)
+ Selection selection = project.getSelections().get(selectionFile.getName());
+ projectService.loadSelectionData(projectsDirectory,project, selection);
- result = generateSourceZip(project, selectionFile, resultFile, rsufiResult);
+ result = generateSourceZip(project, selection);
}
}
}
@@ -1579,41 +1583,23 @@
* Generate zip for selection.
*
* @param project project
- * @param selectionDirectory selection directory
- * @param rsufiResultDirectory rsufi result directory (to get survey name)
- * @param rsufiResult rsufi result (to get survey name)
+ * @param selection selection with loaded data
* @return generated zip file
* @throws CoserBusinessException
*/
- protected File generateSourceZip(Project project, File selectionDirectory, File rsufiResultDirectory, RSufiResult rsufiResult) throws CoserBusinessException {
+ protected File generateSourceZip(Project project, Selection selection) throws CoserBusinessException {
File resultZip = null;
try {
File tempDir = FileUtil.createTempDirectory("coser-", ".tmp");
- // pour que l'archive contiennent ce dossier
- File archiveDir = new File(tempDir, project.getName());
+ // il ne faut pas les fichiers de selection, mais leurs
+ // export rsufi (sans les lignes, et les quotes)
+ File archiveDir = projectService.extractRSUfiData(project, selection, tempDir);
- // recupere les noms originaux des fichiers
- // de selection et de nom de fichier dans le zip
- String catchSeFileName = projectService.getDataStorageFileName(project, Category.CATCH, CoserConstants.STORAGE_SELECTION_SUFFIX);
- String haulSeFileName = projectService.getDataStorageFileName(project, Category.HAUL, CoserConstants.STORAGE_SELECTION_SUFFIX);
- String lengthSeFileName = projectService.getDataStorageFileName(project, Category.LENGTH, CoserConstants.STORAGE_SELECTION_SUFFIX);
- String strataSeFileName = projectService.getDataStorageFileName(project, Category.STRATA, CoserConstants.STORAGE_SELECTION_SUFFIX);
- String catchFileName = projectService.getDataStorageFileName(project, Category.CATCH, null);
- String haulFileName = projectService.getDataStorageFileName(project, Category.HAUL, null);
- String lengthFileName = projectService.getDataStorageFileName(project, Category.LENGTH, null);
- String strataFileName = projectService.getDataStorageFileName(project, Category.STRATA, null);
-
- // copy to temp directory
- FileUtils.copyFile(new File(selectionDirectory, catchSeFileName), new File(archiveDir, catchFileName));
- FileUtils.copyFile(new File(selectionDirectory, haulSeFileName), new File(archiveDir, haulFileName));
- FileUtils.copyFile(new File(selectionDirectory, lengthSeFileName), new File(archiveDir, lengthFileName));
- FileUtils.copyFile(new File(selectionDirectory, strataSeFileName), new File(archiveDir, strataFileName));
-
// add decharge file
- File dechargePDF = generateDechargePDF(rsufiResultDirectory, rsufiResult);
+ File dechargePDF = generateDechargePDF(selection);
FileUtils.copyFile(dechargePDF, new File(archiveDir, "DechargeDonnees.pdf"));
// make zip
@@ -1632,12 +1618,11 @@
/**
* Genere le PDF dynamique de decharge à partir du template freemarker.
*
- * @param rsufiResultDirectory rsufi result directory (to get survey name)
- * @param rsufiResult rsufi result (to get survey name)
+ * @param selection selection with loaded data
* @return le fichier généré
* @throws CoserBusinessException
*/
- protected File generateDechargePDF(File rsufiResultDirectory, RSufiResult rsufiResult) throws CoserBusinessException {
+ protected File generateDechargePDF(Selection selection) throws CoserBusinessException {
File result = null;
@@ -1645,7 +1630,7 @@
// get some info to put into pdf
Date updateDate = getLastDataUpdateDate();
- String surveyName = projectService.getProjectSurveyName(rsufiResultDirectory, rsufiResult);
+ String surveyName = projectService.getProjectSurveyName(selection);
// render freemarker template
Template mapTemplate = freemarkerConfiguration.getTemplate("decharge.ftl");
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 2011-01-19 09:43:05 UTC (rev 527)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2011-01-19 10:10:46 UTC (rev 528)
@@ -104,7 +104,7 @@
@AfterClass
public static void cleanDirectory() throws IOException {
- FileUtils.deleteDirectory(testDirectory);
+ //FileUtils.deleteDirectory(testDirectory);
}
/**
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 2011-01-19 09:43:05 UTC (rev 527)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2011-01-19 10:10:46 UTC (rev 528)
@@ -129,17 +129,20 @@
/**
* Test du contenu du zip de téléchargement des sources.
*
+ * Generation du zip, freemarker, et pdf.
+ *
* @throws CoserBusinessException
* @throws IOException
*/
@Test
public void testSourceZip() throws CoserBusinessException, IOException {
- registerUploadedResult("/web/upload1.zip");
+ registerUploadedResult("/web/upload2.zip");
File zip = webService.getSourceZip("testzone1", "en");
File tempDir = FileUtil.createTempDirectory("coser", ".tmp");
ZipUtil.uncompress(zip, tempDir);
- Assert.assertTrue(new File(tempDir, "coser-sources" + File.separator + "testcatch.csv").isFile());
+ Assert.assertTrue(new File(tempDir, "projet1" + File.separator + "testcatch.csv").isFile());
+ Assert.assertTrue(new File(tempDir, "projet1" + File.separator + "DechargeDonnees.pdf").isFile());
FileUtils.deleteDirectory(tempDir);
}
@@ -166,18 +169,4 @@
File file = webService.getMapFileAsPDF("Medits", "SPECIES1");
Assert.assertNotNull(file);
}
-
- /**
- * Test la simulation d'un téléchargement de données sources d'un projet.
- *
- * Generation du zip, freemarker, et pdf.
- *
- * @throws CoserBusinessException
- */
- @Test
- public void testGetSourceZip() throws CoserBusinessException {
- registerUploadedResult("/web/upload2.zip");
- File file = webService.getSourceZip("testzone1", "fr");
- Assert.assertNotNull(file);
- }
}
1
0