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
r487 - trunk/coser-business/src/main/java/fr/ifremer/coser
by chatellier@users.labs.libre-entreprise.org 07 Jan '11
by chatellier@users.labs.libre-entreprise.org 07 Jan '11
07 Jan '11
Author: chatellier
Date: 2011-01-07 12:45:07 +0000 (Fri, 07 Jan 2011)
New Revision: 487
Log:
Fix setter
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2011-01-07 12:43:39 UTC (rev 486)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2011-01-07 12:45:07 UTC (rev 487)
@@ -74,7 +74,7 @@
return result;
}
- public void setsmtpHost(String smtpHost) {
+ public void setSmtpHost(String smtpHost) {
setOption(CoserBusinessOption.SMTP_HOST.key, smtpHost);
}
1
0
r486 - in trunk: coser-business coser-business/src/main/java/fr/ifremer/coser coser-business/src/main/java/fr/ifremer/coser/services coser-business/src/main/resources/i18n coser-ui/src/main/java/fr/ifremer/coser coser-ui/src/main/java/fr/ifremer/coser/ui coser-ui/src/main/resources/i18n coser-web/src/main/java/fr/ifremer/coser/web
by chatellier@users.labs.libre-entreprise.org 07 Jan '11
by chatellier@users.labs.libre-entreprise.org 07 Jan '11
07 Jan '11
Author: chatellier
Date: 2011-01-07 12:43:39 +0000 (Fri, 07 Jan 2011)
New Revision: 486
Log:
Envoi d'un mail apres la publication des resultats
Modified:
trunk/coser-business/pom.xml
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.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/resources/i18n/coser-business_en_GB.properties
trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties
trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.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
trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java
Modified: trunk/coser-business/pom.xml
===================================================================
--- trunk/coser-business/pom.xml 2011-01-07 10:27:40 UTC (rev 485)
+++ trunk/coser-business/pom.xml 2011-01-07 12:43:39 UTC (rev 486)
@@ -56,6 +56,10 @@
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
+ <artifactId>commons-email</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
<artifactId>commons-math</artifactId>
</dependency>
<dependency>
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2011-01-07 10:27:40 UTC (rev 485)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2011-01-07 12:43:39 UTC (rev 486)
@@ -28,6 +28,7 @@
import static org.nuiton.i18n.I18n._;
import java.io.File;
+import java.util.List;
import java.util.Locale;
import org.nuiton.util.ApplicationConfig;
@@ -73,6 +74,15 @@
return result;
}
+ public void setsmtpHost(String smtpHost) {
+ setOption(CoserBusinessOption.SMTP_HOST.key, smtpHost);
+ }
+
+ public String getSmtpHost() {
+ String result = getOption(CoserBusinessOption.SMTP_HOST.key);
+ return result;
+ }
+
public Locale getLocale() {
Locale result = getOption(Locale.class, CoserBusinessOption.LOCALE.key);
return result;
@@ -142,12 +152,19 @@
return result;
}
+ public List<String> getNewResultNotificationList() {
+ // la liste est vide si l'option est null
+ List<String> emails = getOptionAsList(CoserBusinessOption.WEB_PUBLICATION_EMAIL.key).getOption();
+ return emails;
+ }
+
public static enum CoserBusinessOption implements OptionDef {
DATABASE_DIRECTORY("coser.database.directory", _("coser.config.database.directory.description"), "${user.home}" + File.separator + "coser", String.class, false, false),
PROJECTS_DIRECTORY("coser.projects.directory", _("coser.config.projects.directory.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "projects", String.class, false, false),
VALIDATOR_DIRECTORY("coser.validator.directory", _("coser.config.validator.directory.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "validators", String.class, false, false),
+ SMTP_HOST("coser.smtp.host", _("coser.config.smtp.host.description"), "smtp", String.class, false, false),
LOCALE("coser.locale", _("coser.config.locale.description"), Locale.FRANCE.toString(), Locale.class, false, false),
REFERENCE_SPECIES("coser.reference.species", _("coser.config.reference.species.description"), "", String.class, false, false),
@@ -167,7 +184,8 @@
WEB_PROPERTIES_FILE("coser.web.properties.file", _("coser.config.web.properties.file.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "web.properties", String.class, false, false),
WEB_PROJECTS_DIRECTORY("coser.web.projects.directory", _("coser.config.web.projects.directory.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webprojects", String.class, false, false),
WEB_INDICATORS("coser.web.indicators.file", _("coser.config.web.indicators.file.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webindicators.csv", String.class, false, false),
- WEB_ZONES("coser.web.zones.file", _("coser.config.web.zones.file.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webzones.csv", String.class, false, false);
+ WEB_ZONES("coser.web.zones.file", _("coser.config.web.zones.file.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webzones.csv", String.class, false, false),
+ WEB_PUBLICATION_EMAIL("coser.web.newresult.emails", _("coser.config.web.newresult.emails.description"), null, String.class, false, false);
protected String key;
protected String description;
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-07 10:27:40 UTC (rev 485)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2011-01-07 12:43:39 UTC (rev 486)
@@ -80,7 +80,6 @@
import org.nuiton.math.matrix.MatrixND;
import org.nuiton.math.matrix.MatrixProvider;
import org.nuiton.util.FileUtil;
-import org.nuiton.util.StringUtil;
import org.nuiton.util.ZipUtil;
import fr.ifremer.coser.CoserBusinessConfig;
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-07 10:27:40 UTC (rev 485)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-07 12:43:39 UTC (rev 486)
@@ -25,6 +25,8 @@
package fr.ifremer.coser.services;
+import static org.nuiton.i18n.I18n._;
+
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@@ -39,6 +41,8 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.commons.mail.EmailException;
+import org.apache.commons.mail.MultiPartEmail;
import org.nuiton.util.FileUtil;
import org.nuiton.util.ZipUtil;
@@ -187,6 +191,9 @@
log.info("Unzipping file " + archiveFile + " to " + projectsDirectory);
}
+ // send notification mails
+ sendNewResultNotifications();
+
} catch (IOException ex) {
throw new CoserBusinessException("Can't uncompress file", ex);
}
@@ -308,6 +315,32 @@
}
/**
+ * Envoi un mail de notification apres la publication des resultat à la
+ * liste des adresses email renseignées dans la configuration.
+ */
+ protected void sendNewResultNotifications() {
+ List<String> emails = config.getNewResultNotificationList();
+
+ for (String email : emails) {
+ try {
+ MultiPartEmail emailPart = new MultiPartEmail();
+ emailPart.setHostName(config.getSmtpHost());
+ emailPart.addTo(email);
+ emailPart.setFrom("noreply-coser at ifremer.fr", "Coser");
+ emailPart.setSubject(_("coser.business.notificationmail.subject"));
+ emailPart.setContent(_("coser.business.notificationmail.body"), "text/plain; charset=ISO-8859-9");
+
+ // send mail
+ emailPart.send();
+ } catch (EmailException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't send mail", ex);
+ }
+ }
+ }
+ }
+
+ /**
* Recuperer la liste des populations pour une zone données.
*
* @param zone zone
Modified: trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties
===================================================================
--- trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2011-01-07 10:27:40 UTC (rev 485)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2011-01-07 12:43:39 UTC (rev 486)
@@ -71,6 +71,8 @@
coser.business.matrix.lengthstructure=Length structures
coser.business.matrix.occurrence=Occurrence
coser.business.matrix.samplingeffort=Sampling effort
+coser.business.notificationmail.body=New results has been published.\n\n--\nCoser.
+coser.business.notificationmail.subject=Coser \: New results published
coser.business.publication.author=Author
coser.business.publication.catchfilename=Catch file name
coser.business.publication.comment=Comment
@@ -102,9 +104,11 @@
coser.config.reference.typeSpecies.description=Code type species file location
coser.config.selection.densityFilter.description=Default density filter value
coser.config.selection.occurrenceFilter.description=Default occurrence filter value
+coser.config.smtp.host.description=SMTP host address
coser.config.validator.directory.description=Validation files directory location
coser.config.web.frontend.description=Coser server url
coser.config.web.indicators.file.description=Indicators match file
+coser.config.web.newresult.emails.description=New results notification receivers
coser.config.web.projects.directory.description=Web projects storage directory
coser.config.web.properties.file.description=Web informations properties file
coser.config.web.uploadurl.description=Coser server upload result url
Modified: trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties
===================================================================
--- trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2011-01-07 10:27:40 UTC (rev 485)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2011-01-07 12:43:39 UTC (rev 486)
@@ -71,6 +71,8 @@
coser.business.matrix.lengthstructure=Structures en taille
coser.business.matrix.occurrence=Occurrence
coser.business.matrix.samplingeffort=Effort d'\u00E9chantillonnage
+coser.business.notificationmail.body=De nouveaux r\u00E9sultats viennent d'\u00EAtre publi\u00E9s.\n\n--\nCoser.
+coser.business.notificationmail.subject=Coser \: Nouveaux r\u00E9sultats publi\u00E9s
coser.business.publication.author=Auteur
coser.business.publication.catchfilename=Nom du fichier captures
coser.business.publication.comment=Commentaire
@@ -102,9 +104,11 @@
coser.config.reference.typeSpecies.description=Emplacement du fichier de code type des esp\u00E8ces
coser.config.selection.densityFilter.description=Filtre par d\u00E9faut sur la moyenne des densit\u00E9s
coser.config.selection.occurrenceFilter.description=Filtre par d\u00E9faut sur la moyenne des occurrences
+coser.config.smtp.host.description=Adresse du serveur SMTP pour envoyer les mails
coser.config.validator.directory.description=Emplacement des fichiers de validations
coser.config.web.frontend.description=Adresse du serveur web coser
coser.config.web.indicators.file.description=Fichier de correspondance des indicateurs
+coser.config.web.newresult.emails.description=Liste des destinataires des notifications de nouveaux r\u00E9sultats
coser.config.web.projects.directory.description=Dossier de stockage des projets pour le Web
coser.config.web.properties.file.description=Fichier d'enregistrement des informations serveur
coser.config.web.uploadurl.description=Adresse d'envoi des r\u00E9sultats
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java 2011-01-07 10:27:40 UTC (rev 485)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java 2011-01-07 12:43:39 UTC (rev 486)
@@ -62,15 +62,6 @@
return result;
}
- public void setsmtpHost(String smtpHost) {
- setOption(CoserOption.SMTP_HOST.key, smtpHost);
- }
-
- public String getSmtpHost() {
- String result = getOption(CoserOption.SMTP_HOST.key);
- return result;
- }
-
public void setSupportEmail(String supportEmail) {
setOption(CoserOption.SUPPORT_EMAIL.key, supportEmail);
}
@@ -90,7 +81,6 @@
CONFIG_FILE(CONFIG_FILE_NAME, _("coser.config.config.file.description"), "coser.properties", String.class, true, true),
LOOKANDFEEL("coser.lookandfeel", _("coser.config.lookandfeel.description"), null, String.class, false, false),
APPLICATION_VERSION("coser.application.version", _("coser.config.application.version.description"), null, String.class, false, false),
- SMTP_HOST("coser.smtp.host", _("coser.config.smtp.host.description"), "smtp", String.class, false, false),
SUPPORT_EMAIL("coser.support.email", _("coser.config.support.email.description"), "support at codelutin.com", String.class, false, false),
WEBSITE_URL("coser.website", _("coser.config.website.description"), "http://coser.labs.libre-entreprise.org/", String.class, false, false);
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-07 10:27:40 UTC (rev 485)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2011-01-07 12:43:39 UTC (rev 486)
@@ -194,7 +194,7 @@
// category misc
modelBuilder.addCategory(_("coser.config.category.misc"), _("coser.config.category.misc.description"));
- modelBuilder.addOption(CoserConfig.CoserOption.SMTP_HOST);
+ modelBuilder.addOption(CoserBusinessConfig.CoserBusinessOption.SMTP_HOST);
modelBuilder.addOption(CoserConfig.CoserOption.SUPPORT_EMAIL);
ConfigUI configUI = modelBuilder.buildUI(view, _("coser.config.category.path"));
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-07 10:27:40 UTC (rev 485)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2011-01-07 12:43:39 UTC (rev 486)
@@ -7,7 +7,6 @@
coser.config.category.path.description=File and directory configuration
coser.config.config.file.description=Coser configuration file
coser.config.lookandfeel.description=Application's swing theme
-coser.config.smtp.host.description=SMTP host address
coser.config.support.email.description=Support email address
coser.config.website.description=Coser website
coser.ui.common.cancel=Cancel
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-07 10:27:40 UTC (rev 485)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2011-01-07 12:43:39 UTC (rev 486)
@@ -7,7 +7,6 @@
coser.config.category.path.description=Configuration des fichiers et r\u00E9pertoires
coser.config.config.file.description=Fichier de configuration de Coser
coser.config.lookandfeel.description=Themes graphique Swing de l'application
-coser.config.smtp.host.description=Adresse du serveur SMTP pour envoyer les mails
coser.config.support.email.description=Adresse de support pour l'envoi des erreurs
coser.config.website.description=Site internet de Coser
coser.ui.common.cancel=Annuler
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java 2011-01-07 10:27:40 UTC (rev 485)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java 2011-01-07 12:43:39 UTC (rev 486)
@@ -22,6 +22,7 @@
package fr.ifremer.coser.web;
+import org.nuiton.i18n.I18n;
import org.nuiton.util.ArgumentsParserException;
import fr.ifremer.coser.services.WebService;
@@ -41,6 +42,11 @@
protected static WebService webService;
+ static {
+ // on a pas trop de locale là :(
+ I18n.init();
+ }
+
/**
* Get application config configuration.
*
1
0
r485 - in trunk: coser-business/src/main/java/fr/ifremer/coser coser-business/src/main/java/fr/ifremer/coser/services coser-business/src/main/resources/i18n coser-ui/src/main/java/fr/ifremer/coser/ui coser-web/src/main/java/fr/ifremer/coser/web coser-web/src/main/java/fr/ifremer/coser/web/actions
by chatellier@users.labs.libre-entreprise.org 07 Jan '11
by chatellier@users.labs.libre-entreprise.org 07 Jan '11
07 Jan '11
Author: chatellier
Date: 2011-01-07 10:27:40 +0000 (Fri, 07 Jan 2011)
New Revision: 485
Log:
Modification de la configuration pour la partie web.
Le fichier zone est maintenant optionnel.
Removed:
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConstants.java
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties
trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2011-01-07 09:09:33 UTC (rev 484)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2011-01-07 10:27:40 UTC (rev 485)
@@ -122,23 +122,23 @@
return result;
}
- public File getWebServerDirectory() {
- File result = getOptionAsFile(CoserBusinessOption.WEB_SERVER_DIRECTORY.key);
+ public File getWebPropertiesFile() {
+ File result = getOptionAsFile(CoserBusinessOption.WEB_PROPERTIES_FILE.key);
return result;
}
-
+
public File getWebProjectsDirectory() {
File result = getOptionAsFile(CoserBusinessOption.WEB_PROJECTS_DIRECTORY.key);
return result;
}
-
- public File getMatchIndicatorsFile() {
- File result = getOptionAsFile(CoserBusinessOption.WEB_MATCH_INDICATORS.key);
+
+ public File getWebIndicatorsFile() {
+ File result = getOptionAsFile(CoserBusinessOption.WEB_INDICATORS.key);
return result;
}
- public File getMatchZonesFile() {
- File result = getOptionAsFile(CoserBusinessOption.WEB_MATCH_ZONES.key);
+ public File getWebZonesFile() {
+ File result = getOptionAsFile(CoserBusinessOption.WEB_ZONES.key);
return result;
}
@@ -164,10 +164,10 @@
WEB_UPLOAD_URL("coser.web.uploadurl", _("coser.config.web.uploadurl.description"), "${" + WEB_FRONT_END.key + "}/upload-result.action", String.class, false, false),
/** Server side. */
- WEB_SERVER_DIRECTORY("coser.web.server.directory", _("coser.config.web.server.directory.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "web", String.class, false, false),
- WEB_PROJECTS_DIRECTORY("coser.web.projects.directory", _("coser.config.web.projects.directory.description"), "${" + WEB_SERVER_DIRECTORY.key + "}" + File.separator + "projects", String.class, false, false),
- WEB_MATCH_INDICATORS("coser.web.matchindicators.file", _("coser.config.web.matchindicators.file.description"), "${" + WEB_SERVER_DIRECTORY.key + "}" + File.separator + "matchindicators.csv", String.class, false, false),
- WEB_MATCH_ZONES("coser.web.matchzones.file", _("coser.config.web.matchzones.file.description"), "${" + WEB_SERVER_DIRECTORY.key + "}" + File.separator + "matchzones.csv", String.class, false, false);
+ WEB_PROPERTIES_FILE("coser.web.properties.file", _("coser.config.web.properties.file.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "web.properties", String.class, false, false),
+ WEB_PROJECTS_DIRECTORY("coser.web.projects.directory", _("coser.config.web.projects.directory.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webprojects", String.class, false, false),
+ WEB_INDICATORS("coser.web.indicators.file", _("coser.config.web.indicators.file.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webindicators.csv", String.class, false, false),
+ WEB_ZONES("coser.web.zones.file", _("coser.config.web.zones.file.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webzones.csv", String.class, false, false);
protected String key;
protected String description;
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-07 09:09:33 UTC (rev 484)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-07 10:27:40 UTC (rev 485)
@@ -97,7 +97,7 @@
if (indicatorsMap == null) {
indicatorsMap = new MultiKeyMap();
- File indicatorsFile = config.getMatchIndicatorsFile();
+ File indicatorsFile = config.getWebIndicatorsFile();
DataStorage indicatorsStorage = importService.loadCSVFile(indicatorsFile);
Iterator<String[]> iteratorInd = indicatorsStorage.iterator(true);
while (iteratorInd.hasNext()) {
@@ -121,15 +121,26 @@
public Map<String, String[]> getZonesMap() throws CoserBusinessException {
if (zonesMap == null) {
- zonesMap = new HashMap<String, String[]>();
- File zoneFile = config.getMatchZonesFile();
- DataStorage zonesStorage = importService.loadCSVFile(zoneFile);
- Iterator<String[]> iteratorZones = zonesStorage.iterator(true);
- while (iteratorZones.hasNext()) {
- // "id";"zone";"subzone";"periode";"serie";"comment";"map"
- String[] zone = iteratorZones.next();
- zonesMap.put(zone[0], new String[]{zone[1], zone[2]});
+ File zoneFile = config.getWebZonesFile();
+
+ // l'operation n'est pas obligatoire pour tous les clients
+ // lourd, le fichier peut donc ne pas exister
+ if (zoneFile.isFile()) {
+ zonesMap = new HashMap<String, String[]>();
+
+ DataStorage zonesStorage = importService.loadCSVFile(zoneFile);
+ Iterator<String[]> iteratorZones = zonesStorage.iterator(true);
+ while (iteratorZones.hasNext()) {
+ // "id";"zone";"subzone";"periode";"serie";"comment";"map"
+ String[] zone = iteratorZones.next();
+ zonesMap.put(zone[0], new String[]{zone[1], zone[2]});
+ }
}
+ else {
+ // fait volontairement un return new, n'affecte pas l'etat du
+ // service
+ return new HashMap<String, String[]>();
+ }
}
return zonesMap;
Modified: trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties
===================================================================
--- trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2011-01-07 09:09:33 UTC (rev 484)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2011-01-07 10:27:40 UTC (rev 485)
@@ -104,11 +104,11 @@
coser.config.selection.occurrenceFilter.description=Default occurrence filter value
coser.config.validator.directory.description=Validation files directory location
coser.config.web.frontend.description=Coser server url
-coser.config.web.matchindicators.file.description=Indicators match file
-coser.config.web.matchzones.file.description=Zones match file
+coser.config.web.indicators.file.description=Indicators match file
coser.config.web.projects.directory.description=Web projects storage directory
-coser.config.web.server.directory.description=Coser server storage directory
+coser.config.web.properties.file.description=Web informations properties file
coser.config.web.uploadurl.description=Coser server upload result url
+coser.config.web.zones.file.description=Zones match file
depth\ attribute\ is\ not\ a\ valid\ double=
haul\ name\ is\ not\ valid=
lat\ attribute\ is\ not\ a\ valid\ double=
Modified: trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties
===================================================================
--- trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2011-01-07 09:09:33 UTC (rev 484)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2011-01-07 10:27:40 UTC (rev 485)
@@ -104,11 +104,11 @@
coser.config.selection.occurrenceFilter.description=Filtre par d\u00E9faut sur la moyenne des occurrences
coser.config.validator.directory.description=Emplacement des fichiers de validations
coser.config.web.frontend.description=Adresse du serveur web coser
-coser.config.web.matchindicators.file.description=Fichier de correspondance des indicateurs
-coser.config.web.matchzones.file.description=Fichier de correspondance des zones
+coser.config.web.indicators.file.description=Fichier de correspondance des indicateurs
coser.config.web.projects.directory.description=Dossier de stockage des projets pour le Web
-coser.config.web.server.directory.description=Dossier de stockage des projets sur le serveur
+coser.config.web.properties.file.description=Fichier d'enregistrement des informations serveur
coser.config.web.uploadurl.description=Adresse d'envoi des r\u00E9sultats
+coser.config.web.zones.file.description=Fichier de correspondance des zones
depth\ attribute\ is\ not\ a\ valid\ double=L'attribut ProfMoy n'est pas un r\u00E9el valide
haul\ name\ is\ not\ valid=L'attribut Trait n'est pas valide
lat\ attribute\ is\ not\ a\ valid\ double=L'attribut Lat n'est pas un r\u00E9el valide
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-07 09:09:33 UTC (rev 484)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2011-01-07 10:27:40 UTC (rev 485)
@@ -182,6 +182,7 @@
modelBuilder.addOption(CoserBusinessConfig.CoserBusinessOption.REFERENCE_SPECIES);
modelBuilder.addOption(CoserBusinessConfig.CoserBusinessOption.REFERENCE_TYPE_ESPECES);
modelBuilder.addOption(CoserBusinessConfig.CoserBusinessOption.WEB_FRONT_END);
+ modelBuilder.addOption(CoserBusinessConfig.CoserBusinessOption.WEB_ZONES);
// category control
modelBuilder.addCategory(_("coser.config.category.configuration"), _("coser.config.category.configuration.description"));
Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConstants.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConstants.java 2011-01-07 09:09:33 UTC (rev 484)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConstants.java 2011-01-07 10:27:40 UTC (rev 485)
@@ -1,38 +0,0 @@
-/*
- * #%L
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2010 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;
-
-/**
- * Constantes cote web.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class CoserWebConstants {
-
- /** Nom du fichier de proprietes du serveur. */
- public static final String WEB_PROPERTIES_NAME = "web.properties";
-}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2011-01-07 09:09:33 UTC (rev 484)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2011-01-07 10:27:40 UTC (rev 485)
@@ -37,7 +37,6 @@
import com.opensymphony.xwork2.ActionSupport;
import fr.ifremer.coser.web.CoserWebConfig;
-import fr.ifremer.coser.web.CoserWebConstants;
import fr.ifremer.coser.web.CoserWebException;
import fr.ifremer.coser.web.ServiceFactory;
@@ -82,7 +81,7 @@
public String execute() {
CoserWebConfig config = ServiceFactory.getCoserConfig();
- File webProperties = new File(config.getWebServerDirectory(), CoserWebConstants.WEB_PROPERTIES_NAME);
+ File webProperties = config.getWebPropertiesFile();
if (webProperties.isFile()) {
// get update date
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2011-01-07 09:09:33 UTC (rev 484)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2011-01-07 10:27:40 UTC (rev 485)
@@ -40,7 +40,6 @@
import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.services.WebService;
import fr.ifremer.coser.web.CoserWebConfig;
-import fr.ifremer.coser.web.CoserWebConstants;
import fr.ifremer.coser.web.CoserWebException;
import fr.ifremer.coser.web.ServiceFactory;
@@ -127,7 +126,7 @@
protected void updateDataProperties() {
CoserWebConfig config = ServiceFactory.getCoserConfig();
- File webProperties = new File(config.getWebServerDirectory(), CoserWebConstants.WEB_PROPERTIES_NAME);
+ File webProperties = config.getWebPropertiesFile();
Properties props = new Properties();
InputStream iStream = null;
1
0
r484 - trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result
by chatellier@users.labs.libre-entreprise.org 07 Jan '11
by chatellier@users.labs.libre-entreprise.org 07 Jan '11
07 Jan '11
Author: chatellier
Date: 2011-01-07 09:09:33 +0000 (Fri, 07 Jan 2011)
New Revision: 484
Log:
Ajout du nom de la campagne dans la liste des zones
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/ZoneComboBoxRenderer.java
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-07 09:01:34 UTC (rev 483)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx 2011-01-07 09:09:33 UTC (rev 484)
@@ -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
@@ -67,7 +67,7 @@
</cell>
<cell fill="horizontal" columns="2">
<JComboBox id="resultZoneCombo" model="{new ZoneComboBoxModel(this)}"
- renderer="{new ZoneComboBoxRenderer()}"
+ renderer="{new ZoneComboBoxRenderer(this)}"
onActionPerformed='getRsufiResult().setZone((String)resultZoneCombo.getSelectedItem())'/>
</cell>
</row>
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-07 09:01:34 UTC (rev 483)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java 2011-01-07 09:09:33 UTC (rev 484)
@@ -30,6 +30,9 @@
import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
+import fr.ifremer.coser.bean.Selection;
+import fr.ifremer.coser.services.ProjectService;
+
/**
* Zone list combo renderer (display zone name for zone id).
*
@@ -44,6 +47,14 @@
/** serialVersionUID. */
private static final long serialVersionUID = -8231189755539976714L;
+ protected String surveyName;
+
+ public ZoneComboBoxRenderer(SelectionAddResultDialog view) {
+ ProjectService projectService = view.getContextValue(ProjectService.class);
+ Selection selection = view.getContextValue(Selection.class);
+ surveyName = projectService.getProjectSurveyName(selection);
+ }
+
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
@@ -53,7 +64,10 @@
String[] zoneInfo = model.getZone(zoneId);
String zoneName = null;
if (zoneInfo != null) {
- zoneName = zoneInfo[0] + " - " + zoneInfo[1];
+ // le surveyName ne sert à rien
+ // mais est la a titre d'information par rapport
+ // à l'affichage cote web
+ zoneName = zoneInfo[0] + " - " + zoneInfo[1] + " - " + surveyName;
}
else {
zoneName = zoneId;
1
0
r483 - in trunk/coser-business/src/main/java/fr/ifremer/coser: command services
by chatellier@users.labs.libre-entreprise.org 07 Jan '11
by chatellier@users.labs.libre-entreprise.org 07 Jan '11
07 Jan '11
Author: chatellier
Date: 2011-01-07 09:01:34 +0000 (Fri, 07 Jan 2011)
New Revision: 483
Log:
Recuperation d'un iterator avec la methode qui skip le header.
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/command/MergeSpeciesCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/command/MergeSpeciesCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/command/MergeSpeciesCommand.java 2011-01-07 08:47:43 UTC (rev 482)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/command/MergeSpeciesCommand.java 2011-01-07 09:01:34 UTC (rev 483)
@@ -110,19 +110,18 @@
*/
protected Project mergeLength(Project project, AbstractDataContainer container,
String newSpecyName, String... speciesNames) {
-
+
// Campagne;Annee;Trait;Espece;Sexe;Maturite;Longueur;Nombre;Poids;Age
-
+
// regroupement par Campagne;Annee;Trait;Espece;Sexe;Maturite;Longueur;Age
String[] commonTuple = null;
String[] mergeTuple = null;
int mergeTupleIndex = -1;
-
+
// parcours des elements
- Iterator<String[]> itTuple = container.getLength().iterator();
- itTuple.next(); // skip header
- int index = 1; // skip header
-
+ Iterator<String[]> itTuple = container.getLength().iterator(true);
+ int index = 1; // header skipped
+
while (itTuple.hasNext()) {
String[] tuple = itTuple.next();
@@ -178,7 +177,7 @@
container.getLength().set(mergeTupleIndex, mergeTuple);
}
-
+
index++;
}
return project;
@@ -263,9 +262,8 @@
int mergeTupleIndex = -1;
// parcours des elements
- Iterator<String[]> itTuple = container.getCatch().iterator();
- itTuple.next(); // skip header
- int index = 1; // skip header
+ Iterator<String[]> itTuple = container.getCatch().iterator(true);
+ int index = 1; // header skiped
while (itTuple.hasNext()) {
String[] tuple = itTuple.next();
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java 2011-01-07 08:47:43 UTC (rev 482)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java 2011-01-07 09:01:34 UTC (rev 483)
@@ -315,11 +315,10 @@
Map<String, String> uniqueDataKeys = new HashMap<String, String>();
List<ControlError> validationErrors = new ArrayList<ControlError>();
- Iterator<String[]> itDataToCheck = dataToCheck.iterator();
+ Iterator<String[]> itDataToCheck = dataToCheck.iterator(true);
int lineIndex = 1; // 1 = skip header
- itDataToCheck.next(); // skip header
while (itDataToCheck.hasNext()) {
-
+
// update progress
if (progress != null) {
int progressPercent = (int)((double)lineIndex / (double)total * 100.0);
@@ -485,8 +484,7 @@
Map<String, String> firstLineForKey = new HashMap<String, String>();
// parcours des elements
- Iterator<String[]> itTuple = control.getCatch().iterator();
- itTuple.next(); // skip header
+ Iterator<String[]> itTuple = control.getCatch().iterator(true);
int lineIndex = 1; // skip header
while (itTuple.hasNext()) {
String[] tuple = itTuple.next();
@@ -583,8 +581,7 @@
// look for data (data summed over catch)
Map<String, Map<String, Double>> catchForSpeciesYears = new HashMap<String, Map<String, Double>>();
- Iterator<String[]> itCatchData = control.getCatch().iterator();
- itCatchData.next(); // header
+ Iterator<String[]> itCatchData = control.getCatch().iterator(true);
int lineIndex = 1; // skip header
while (itCatchData.hasNext()) {
@@ -629,8 +626,7 @@
// look for data (data summed over length)
Map<String, Map<String, Double>> lengthForSpeciesYears = new HashMap<String, Map<String, Double>>();
- Iterator<String[]> itLengthData = control.getLength().iterator();
- itLengthData.next(); // header
+ Iterator<String[]> itLengthData = control.getLength().iterator(true);
while (itLengthData.hasNext()) {
// update progress
@@ -757,12 +753,11 @@
Map<String, String> firstLineForKey = new HashMap<String, String>();
// parcours des elements
- Iterator<String[]> itTuple = control.getLength().iterator();
- itTuple.next(); // skip header
+ Iterator<String[]> itTuple = control.getLength().iterator(true);
int lineIndex = 1; // skip header
while (itTuple.hasNext()) {
String[] tuple = itTuple.next();
-
+
// update progress
if (progress != null) {
int progressPercent = (int)((double)lineIndex / (double)total * 100.0);
@@ -870,16 +865,11 @@
List<ControlError> crossFilesErrors = new ArrayList<ControlError>();
// get all iterators
- Iterator<String[]> itReftax = project.getRefTaxSpecies().iterator();
- itReftax.next(); // skip header
- Iterator<String[]> itCatch = control.getCatch().iterator();
- itCatch.next(); // skip header
- Iterator<String[]> itLength = control.getLength().iterator();
- itLength.next(); // skip header
- Iterator<String[]> itStrata = control.getStrata().iterator();
- itStrata.next(); // skip header
- Iterator<String[]> itHaul = control.getHaul().iterator();
- itHaul.next(); // skip header
+ Iterator<String[]> itReftax = project.getRefTaxSpecies().iterator(true);
+ Iterator<String[]> itCatch = control.getCatch().iterator(true);
+ Iterator<String[]> itLength = control.getLength().iterator(true);
+ Iterator<String[]> itStrata = control.getStrata().iterator(true);
+ Iterator<String[]> itHaul = control.getHaul().iterator(true);
// declare all necessary data
Map<String, Integer> refTaxSpecies = new HashMap<String, Integer>();
@@ -904,8 +894,7 @@
}
// parcourt du fichier des types de données
- Iterator<String[]> itTypeSpecies = project.getTypeEspeces().iterator();
- itTypeSpecies.next(); // skip header
+ Iterator<String[]> itTypeSpecies = project.getTypeEspeces().iterator(true);
while (itTypeSpecies.hasNext()) {
// "Types";"Commentaire";"NumSys min";"NumSys max","Code"
String[] tuple = itTypeSpecies.next();
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-07 08:47:43 UTC (rev 482)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2011-01-07 09:01:34 UTC (rev 483)
@@ -1553,8 +1553,7 @@
List<String> result = new ArrayList<String>();
// manage haul
- Iterator<String[]> itHaul = selection.getHaul().iterator();
- itHaul.next(); // skip header
+ Iterator<String[]> itHaul = selection.getHaul().iterator(true);
while (itHaul.hasNext()) {
String[] tupleHaul = itHaul.next();
String annee = tupleHaul[Haul.INDEX_YEAR];
@@ -1575,8 +1574,7 @@
}
// manage catch
- Iterator<String[]> itCatch = selection.getCatch().iterator();
- itCatch.next(); // skip header
+ Iterator<String[]> itCatch = selection.getCatch().iterator(true);
while (itCatch.hasNext()) {
String[] tupleCatch = itCatch.next();
String annee = tupleCatch[Catch.INDEX_YEAR];
@@ -1591,8 +1589,7 @@
}
// manage length
- Iterator<String[]> itLength = selection.getLength().iterator();
- itLength.next(); // skip header
+ Iterator<String[]> itLength = selection.getLength().iterator(true);
while (itLength.hasNext()) {
String[] tupleLength = itLength.next();
String annee = tupleLength[Length.INDEX_YEAR];
@@ -1624,9 +1621,7 @@
// "Types","Commentaire","NumSys min","NumSys max","Code"
- Iterator<String[]> itTuples = project.getTypeEspeces().iterator();
- itTuples.next(); // skip headers
-
+ Iterator<String[]> itTuples = project.getTypeEspeces().iterator(true);
while (itTuples.hasNext()) {
String[] tuple = itTuples.next();
@@ -1659,8 +1654,7 @@
SortedSet<String> years = new TreeSet<String>();
- Iterator<String[]> itTuple = selection.getHaul().iterator();
- itTuple.next(); // header
+ Iterator<String[]> itTuple = selection.getHaul().iterator(true);
while (itTuple.hasNext()) {
String[] tuple = itTuple.next();
String year = tuple[Haul.INDEX_YEAR];
@@ -1681,8 +1675,7 @@
// get all years as set
SortedSet<String> years = new TreeSet<String>();
- Iterator<String[]> itTuple = selection.getHaul().iterator();
- itTuple.next(); // header
+ Iterator<String[]> itTuple = selection.getHaul().iterator(true);
while (itTuple.hasNext()) {
String[] tuple = itTuple.next();
String year = tuple[Haul.INDEX_YEAR];
@@ -1691,8 +1684,7 @@
// get all species with years
Map<String, Set<String>> yearsForSpecies = new HashMap<String, Set<String>>();
- Iterator<String[]> itLength = selection.getLength().iterator();
- itLength.next(); // skip header
+ Iterator<String[]> itLength = selection.getLength().iterator(true);
while (itLength.hasNext()) {
String[] tupleLength = itLength.next();
String species = tupleLength[Length.INDEX_SPECIES];
@@ -1730,8 +1722,7 @@
Set<String> speciesWithMaturity = new HashSet<String>();
// get all species with years
- Iterator<String[]> itLength = selection.getLength().iterator();
- itLength.next(); // skip header
+ Iterator<String[]> itLength = selection.getLength().iterator(true);
while (itLength.hasNext()) {
String[] tupleLength = itLength.next();
String species = tupleLength[Length.INDEX_SPECIES];
@@ -1756,8 +1747,7 @@
public List<String> getProjectSpecies(AbstractDataContainer container) {
List<String> result = new ArrayList<String>();
- Iterator<String[]> itTuple = container.getCatch().iterator();
- itTuple.next(); // skip header
+ Iterator<String[]> itTuple = container.getCatch().iterator(true);
while (itTuple.hasNext()) {
String[] tuple = itTuple.next();
String species = tuple[Catch.INDEX_SPECIES];
@@ -1791,8 +1781,7 @@
// first get traits list
Set<String> traits = new HashSet<String>();
- Iterator<String[]> itTuple = container.getHaul().iterator();
- itTuple.next(); // skip header
+ Iterator<String[]> itTuple = container.getHaul().iterator(true);
while (itTuple.hasNext()) {
String[] tuple = itTuple.next();
@@ -1806,8 +1795,7 @@
// second get species with trait list
List<String> result = new ArrayList<String>();
- itTuple = container.getCatch().iterator();
- itTuple.next(); // skip header
+ itTuple = container.getCatch().iterator(true);
while (itTuple.hasNext()) {
String[] tuple = itTuple.next();
@@ -1825,8 +1813,7 @@
if (CollectionUtils.isNotEmpty(filterSpecyType)) {
// load map SpecyName > numSys
Map<String, Integer> map = new HashMap<String, Integer>();
- Iterator<String[]> refTaxIterator = project.getRefTaxSpecies().iterator();
- refTaxIterator.next(); // skip header
+ Iterator<String[]> refTaxIterator = project.getRefTaxSpecies().iterator(true);
while (refTaxIterator.hasNext()) {
// "C_Perm";"NumSys";"NivSys";"C_VALIDE";"L_VALIDE";"AA_VALIDE";"C_TxPère";"Taxa"
String[] tuple = refTaxIterator.next();
@@ -1838,8 +1825,7 @@
// load specy type map SpecyTypeName > [min, max]
// iteration sur les type d'especes
Map<String, Integer[]> mapType = new HashMap<String, Integer[]>();
- Iterator<String[]> itTypeSpecies = project.getTypeEspeces().iterator();
- itTypeSpecies.next(); // skip header
+ Iterator<String[]> itTypeSpecies = project.getTypeEspeces().iterator(true);
while (itTypeSpecies.hasNext()) {
// "Types";"Commentaire";"NumSys min";"NumSys max","Code"
String[] tuple = itTypeSpecies.next();
@@ -1902,8 +1888,7 @@
boolean result = false;
- Iterator<String[]> itTuple = project.getRefTaxSpecies().iterator();
- itTuple.next(); // skip header
+ Iterator<String[]> itTuple = project.getRefTaxSpecies().iterator(true);
while (itTuple.hasNext() && !result) {
String[] tuple = itTuple.next();
// "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
@@ -1965,18 +1950,16 @@
Map<String, Map<String, Double>> dynMatrix = new HashMap<String, Map<String,Double>>();
Set<String> lineNames = new HashSet<String>();
Set<String> columns = new HashSet<String>();
-
- Iterator<String[]> itData = selection.getHaul().iterator();
- itData.next(); // skip header
-
+
+ Iterator<String[]> itData = selection.getHaul().iterator(true);
while (itData.hasNext()) {
String[] tuple = itData.next();
-
+
String year = tuple[Haul.INDEX_YEAR];
String strata = tuple[Haul.INDEX_STRATUM];
lineNames.add(strata);
columns.add(year);
-
+
Map<String, Double> haulCountForStrata = dynMatrix.get(strata);
if (haulCountForStrata == null) {
haulCountForStrata = new HashMap<String, Double>();
@@ -2047,9 +2030,7 @@
Set<String> columns = new HashSet<String>();
Map<String, Set<String>> traitsCountPerYear = new HashMap<String, Set<String>>();
- Iterator<String[]> itData = selection.getCatch().iterator();
- itData.next(); // skip header
-
+ Iterator<String[]> itData = selection.getCatch().iterator(true);
while (itData.hasNext()) {
String[] tuple = itData.next();
@@ -2160,8 +2141,7 @@
// load map strataname > stratasurface
Map<String, Double> startaAndSurface = new HashMap<String, Double>();
double totalSourface = 0;
- Iterator<String[]> itStrata = selection.getStrata().iterator();
- itStrata.next(); // skip header
+ Iterator<String[]> itStrata = selection.getStrata().iterator(true);
while (itStrata.hasNext()) {
String[] tuple = itStrata.next();
String stataName = tuple[Strata.INDEX_STRATUM];
@@ -2181,8 +2161,7 @@
// load map traitname > stratename
Map<String, String> haulAndStratas = new HashMap<String, String>();
Map<String, Double> haulAndSweptSurface = new HashMap<String, Double>();
- Iterator<String[]> itHaul = selection.getHaul().iterator();
- itHaul.next(); // skip header
+ Iterator<String[]> itHaul = selection.getHaul().iterator(true);
while (itHaul.hasNext()) {
String[] tuple = itHaul.next();
String haul = tuple[Haul.INDEX_HAUL];
@@ -2207,9 +2186,7 @@
Map<String, Double> surfacesParStrates = new HashMap<String, Double>();
// calcul de la densité
- Iterator<String[]> itData = selection.getCatch().iterator();
- itData.next(); // skip header
-
+ Iterator<String[]> itData = selection.getCatch().iterator(true);
while (itData.hasNext()) {
String[] tuple = itData.next();
@@ -2350,8 +2327,7 @@
// load map traitname > stratename
Map<String, String> haulAndStratas = new HashMap<String, String>();
- Iterator<String[]> itHaul = dataContainer.getHaul().iterator();
- itHaul.next(); // skip header
+ Iterator<String[]> itHaul = dataContainer.getHaul().iterator(true);
while (itHaul.hasNext()) {
String[] tuple = itHaul.next();
String haul = tuple[Haul.INDEX_HAUL];
@@ -2367,8 +2343,7 @@
Set<String> strataSet = new HashSet<String>();
Set<String> yearsSet = new HashSet<String>();
- Iterator<String[]> itData = dataContainer.getLength().iterator();
- itData.next(); // skip header
+ Iterator<String[]> itData = dataContainer.getLength().iterator(true);
while (itData.hasNext()) {
String[] tuple = itData.next();
@@ -2539,8 +2514,7 @@
// load map traitname > stratename
Map<String, String> haulAndStratas = new HashMap<String, String>();
- Iterator<String[]> itHaul = dataContainer.getHaul().iterator();
- itHaul.next(); // skip header
+ Iterator<String[]> itHaul = dataContainer.getHaul().iterator(true);
while (itHaul.hasNext()) {
String[] tuple = itHaul.next();
String haul = tuple[Haul.INDEX_HAUL];
@@ -2554,8 +2528,7 @@
Set<String> strataSet = new HashSet<String>();
Set<String> yearsSet = new HashSet<String>();
- Iterator<String[]> itData = dataContainer.getLength().iterator();
- itData.next(); // skip header
+ Iterator<String[]> itData = dataContainer.getLength().iterator(true);
while (itData.hasNext()) {
String[] tuple = itData.next();
@@ -2664,8 +2637,7 @@
// load map traitname > stratename
Map<String, String> haulAndStratas = new HashMap<String, String>();
- Iterator<String[]> itHaul = dataContainer.getHaul().iterator();
- itHaul.next(); // skip header
+ Iterator<String[]> itHaul = dataContainer.getHaul().iterator(true);
while (itHaul.hasNext()) {
String[] tuple = itHaul.next();
String haul = tuple[Haul.INDEX_HAUL];
@@ -2674,8 +2646,7 @@
}
DimensionHelper dimHelper = new DimensionHelper();
- Iterator<String[]> itData = dataContainer.getLength().iterator();
- itData.next(); // skip header
+ Iterator<String[]> itData = dataContainer.getLength().iterator(true);
while (itData.hasNext()) {
String[] tuple = itData.next();
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-07 08:47:43 UTC (rev 482)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2011-01-07 09:01:34 UTC (rev 483)
@@ -117,8 +117,7 @@
// look for data (data summed over catch)
Map<String, Map<String, Double>> catchForSpeciesYears = new HashMap<String, Map<String, Double>>();
- Iterator<String[]> itCatchData = container.getCatch().iterator();
- itCatchData.next(); // header
+ Iterator<String[]> itCatchData = container.getCatch().iterator(true);
while (itCatchData.hasNext()) {
String[] tuple = itCatchData.next();
String species = tuple[Catch.INDEX_SPECIES];
@@ -162,8 +161,7 @@
// look for data (data summed over length)
Map<String, Map<String, Double>> lengthForSpeciesYears = new HashMap<String, Map<String, Double>>();
- Iterator<String[]> itLengthData = container.getLength().iterator();
- itLengthData.next(); // header
+ Iterator<String[]> itLengthData = container.getLength().iterator(true);
while (itLengthData.hasNext()) {
String[] tuple = itLengthData.next();
String species = tuple[Length.INDEX_SPECIES];
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-07 08:47:43 UTC (rev 482)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-07 09:01:34 UTC (rev 483)
@@ -357,8 +357,7 @@
// load reftax in memory
Map<String, String> speciesNames = new HashMap<String, String>();
- Iterator<String[]> reftax = project.getRefTaxSpecies().iterator();
- reftax.next(); // skip header
+ Iterator<String[]> reftax = project.getRefTaxSpecies().iterator(true);
while (reftax.hasNext()) {
String[] tuple = reftax.next();
@@ -384,8 +383,7 @@
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
DataStorage dataStorage = importService.loadCSVFile(estPopIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
- Iterator<String[]> estPopIndIterator = dataStorage.iterator();
- estPopIndIterator.next(); // skip header
+ Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
while (estPopIndIterator.hasNext()) {
String[] tuple = estPopIndIterator.next();
@@ -480,8 +478,7 @@
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
DataStorage dataStorage = importService.loadCSVFile(estPopIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
- Iterator<String[]> estPopIndIterator = dataStorage.iterator();
- estPopIndIterator.next(); // skip header
+ Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
while (estPopIndIterator.hasNext()) {
String[] tuple = estPopIndIterator.next();
1
0
r482 - in trunk/coser-business/src: main/java/fr/ifremer/coser/services test/java/fr/ifremer/coser/services
by chatellier@users.labs.libre-entreprise.org 07 Jan '11
by chatellier@users.labs.libre-entreprise.org 07 Jan '11
07 Jan '11
Author: chatellier
Date: 2011-01-07 08:47:43 +0000 (Fri, 07 Jan 2011)
New Revision: 482
Log:
Ajout d'une methode pour recuperer le nom de campagne d'un projet
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.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-06 17:04:05 UTC (rev 481)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2011-01-07 08:47:43 UTC (rev 482)
@@ -62,6 +62,7 @@
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.math.util.MathUtils;
@@ -79,6 +80,7 @@
import org.nuiton.math.matrix.MatrixND;
import org.nuiton.math.matrix.MatrixProvider;
import org.nuiton.util.FileUtil;
+import org.nuiton.util.StringUtil;
import org.nuiton.util.ZipUtil;
import fr.ifremer.coser.CoserBusinessConfig;
@@ -1186,7 +1188,7 @@
}
/**
- * Convert a string line to parameized command.
+ * Convert a string line to parameterized command.
*
* @param line line to convert
* @return command
@@ -2851,6 +2853,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;
+ }
+
+ /**
* Retourne tous les projets qui ont des résultats.
*
* De la forme d'une liste de de path (à la tree path) :
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-06 17:04:05 UTC (rev 481)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2011-01-07 08:47:43 UTC (rev 482)
@@ -460,4 +460,20 @@
MatrixND matrix = projectService.getLengthStructure(project, selection);
Assert.assertNotNull(matrix);
}
+
+ /**
+ * Test la recuperation du nom de la campagne.
+ *
+ * @throws CoserBusinessException
+ */
+ @Test
+ public void getProjectSurveyName() throws CoserBusinessException {
+ Project project = createTestProject(projectService, true);
+ String survey = projectService.getProjectSurveyName(project.getControl());
+ Assert.assertEquals("COSER_TEST", survey);
+
+ Selection selection = projectService.initProjectSelection(project);
+ survey = projectService.getProjectSurveyName(selection);
+ Assert.assertEquals("COSER_TEST", survey);
+ }
}
1
0
r481 - in trunk: . coser-business/src/main/java/fr/ifremer/coser coser-business/src/main/java/fr/ifremer/coser/services coser-ui/src/main/java/fr/ifremer/coser coser-ui/src/main/java/fr/ifremer/coser/ui/result
by chatellier@users.labs.libre-entreprise.org 06 Jan '11
by chatellier@users.labs.libre-entreprise.org 06 Jan '11
06 Jan '11
Author: chatellier
Date: 2011-01-06 17:04:05 +0000 (Thu, 06 Jan 2011)
New Revision: 481
Log:
Ajout de la combo des zones disponible dans l'ui des resultats
Added:
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
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx
trunk/pom.xml
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2011-01-06 15:47:26 UTC (rev 480)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2011-01-06 17:04:05 UTC (rev 481)
@@ -167,7 +167,7 @@
WEB_SERVER_DIRECTORY("coser.web.server.directory", _("coser.config.web.server.directory.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "web", String.class, false, false),
WEB_PROJECTS_DIRECTORY("coser.web.projects.directory", _("coser.config.web.projects.directory.description"), "${" + WEB_SERVER_DIRECTORY.key + "}" + File.separator + "projects", String.class, false, false),
WEB_MATCH_INDICATORS("coser.web.matchindicators.file", _("coser.config.web.matchindicators.file.description"), "${" + WEB_SERVER_DIRECTORY.key + "}" + File.separator + "matchindicators.csv", String.class, false, false),
- WEB_MATCH_ZONES("coser.web.matchzones.file", _("coser.config.web.matchzones.file.description"), "${" + WEB_SERVER_DIRECTORY.key + "}" + File.separator + "correspondancezones.txt", String.class, false, false);
+ WEB_MATCH_ZONES("coser.web.matchzones.file", _("coser.config.web.matchzones.file.description"), "${" + WEB_SERVER_DIRECTORY.key + "}" + File.separator + "matchzones.csv", String.class, false, false);
protected String key;
protected String description;
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-06 15:47:26 UTC (rev 480)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-06 17:04:05 UTC (rev 481)
@@ -74,8 +74,11 @@
protected ProjectService projectService;
/** Indicator map (id, locale > translation) (etat du service). */
- protected MultiKeyMap indicatorMap;
+ protected MultiKeyMap indicatorsMap;
+ /** Zones map (id > zone, subzone) (etat du service). */
+ protected Map<String, String[]> zonesMap;
+
public WebService(CoserBusinessConfig config) {
this.config = config;
@@ -87,28 +90,52 @@
* Charge les indicateurs disponible depuis le fichier des indicateurs.
* (indid, indname)
*
- * @return default indicators
+ * @return indicators map
* @throws CoserBusinessException
*/
- protected MultiKeyMap getDefaultIndicators() throws CoserBusinessException {
+ public MultiKeyMap getIndicatorsMap() throws CoserBusinessException {
- if (indicatorMap == null) {
- indicatorMap = new MultiKeyMap();
- File indicatorFile = config.getMatchIndicatorsFile();
- DataStorage indicatorStorage = importService.loadCSVFile(indicatorFile);
- Iterator<String[]> iteratorInd = indicatorStorage.iterator(true);
- while(iteratorInd.hasNext()) {
+ if (indicatorsMap == null) {
+ indicatorsMap = new MultiKeyMap();
+ File indicatorsFile = config.getMatchIndicatorsFile();
+ DataStorage indicatorsStorage = importService.loadCSVFile(indicatorsFile);
+ Iterator<String[]> iteratorInd = indicatorsStorage.iterator(true);
+ while (iteratorInd.hasNext()) {
// "id";"label_fr";"label_en"
String[] indicator = iteratorInd.next();
- indicatorMap.put(indicator[0], "fr", indicator[1]);
- indicatorMap.put(indicator[0], "en", indicator[2]);
+ indicatorsMap.put(indicator[0], "fr", indicator[1]);
+ indicatorsMap.put(indicator[0], "en", indicator[2]);
}
}
- return indicatorMap;
+ return indicatorsMap;
}
/**
+ * Charge les zones disponibles depuis le fichier des zones.
+ * (zoneid, zonename)
+ *
+ * @return zones map
+ * @throws CoserBusinessException
+ */
+ public Map<String, String[]> getZonesMap() throws CoserBusinessException {
+
+ if (zonesMap == null) {
+ zonesMap = new HashMap<String, String[]>();
+ File zoneFile = config.getMatchZonesFile();
+ DataStorage zonesStorage = importService.loadCSVFile(zoneFile);
+ Iterator<String[]> iteratorZones = zonesStorage.iterator(true);
+ while (iteratorZones.hasNext()) {
+ // "id";"zone";"subzone";"periode";"serie";"comment";"map"
+ String[] zone = iteratorZones.next();
+ zonesMap.put(zone[0], new String[]{zone[1], zone[2]});
+ }
+ }
+
+ return zonesMap;
+ }
+
+ /**
* Traite le fichier uploade par l'application client et l'enregistre
* dans le stockage coté web.
*
@@ -435,7 +462,7 @@
protected Map<String, String> getRsufiResultIndicators(Project project,
Selection selection, RSufiResult rsufiResult, String species, String locale) throws CoserBusinessException {
- MultiKeyMap defaultIndicators = getDefaultIndicators();
+ MultiKeyMap defaultIndicators = getIndicatorsMap();
Map<String, String> result = new HashMap<String, String>();
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java 2011-01-06 15:47:26 UTC (rev 480)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java 2011-01-06 17:04:05 UTC (rev 481)
@@ -42,6 +42,7 @@
import fr.ifremer.coser.services.ImportService;
import fr.ifremer.coser.services.ProjectService;
import fr.ifremer.coser.services.PublicationService;
+import fr.ifremer.coser.services.WebService;
import fr.ifremer.coser.ui.CoserFrame;
import fr.ifremer.coser.ui.util.ErrorHelper;
@@ -139,6 +140,7 @@
context.setContextValue(new ImportService(coserConfig));
context.setContextValue(new ControlService(coserConfig));
context.setContextValue(new PublicationService(coserConfig));
+ context.setContextValue(new WebService(coserConfig));
// init frame with session reloading
CoserFrame frame = new CoserFrame(context);
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-06 15:47:26 UTC (rev 480)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx 2011-01-06 17:04:05 UTC (rev 481)
@@ -66,10 +66,9 @@
<JLabel text="coser.ui.result.zone" />
</cell>
<cell fill="horizontal" columns="2">
- <JTextField id="resultZone" />
- <javax.swing.text.Document javaBean="resultZone.getDocument()"
- onInsertUpdate='getRsufiResult().setZone(resultZone.getText())'
- onRemoveUpdate='getRsufiResult().setZone(resultZone.getText())' />
+ <JComboBox id="resultZoneCombo" model="{new ZoneComboBoxModel(this)}"
+ renderer="{new ZoneComboBoxRenderer()}"
+ onActionPerformed='getRsufiResult().setZone((String)resultZoneCombo.getSelectedItem())'/>
</cell>
</row>
<row>
@@ -122,7 +121,8 @@
<JLabel text="coser.ui.result.publishResult" />
</cell>
<cell fill="horizontal" columns="2">
- <JCheckBox id="publishResultCheckBox" />
+ <JCheckBox id="publishResultCheckBox"
+ onActionPerformed="getRsufiResult().setPublishResult(publishResultCheckBox.isSelected())"/>
</cell>
</row>
<row>
Added: 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 (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2011-01-06 17:04:05 UTC (rev 481)
@@ -0,0 +1,85 @@
+/*
+ * #%L
+ *
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 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.ui.result;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.DefaultComboBoxModel;
+
+import fr.ifremer.coser.CoserBusinessException;
+import fr.ifremer.coser.CoserException;
+import fr.ifremer.coser.services.WebService;
+
+/**
+ * Zone combo box model.
+ * Contains zone list defined in "matchzone" file common to web side and client
+ * side.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class ZoneComboBoxModel extends DefaultComboBoxModel {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 4452070553401468762L;
+
+ public SelectionAddResultDialog view;
+
+ public List<String> zonesIds;
+
+ public Map<String, String[]> zonesMap;
+
+ public ZoneComboBoxModel(SelectionAddResultDialog view) {
+ this.view = view;
+
+ WebService webService = view.getContextValue(WebService.class);
+ try {
+ zonesMap = webService.getZonesMap();
+ zonesIds = new ArrayList<String>(zonesMap.keySet());
+ } catch (CoserBusinessException ex) {
+ throw new CoserException("Can't get zone list", ex);
+ }
+ }
+
+ @Override
+ public int getSize() {
+ return zonesIds.size();
+ }
+
+ @Override
+ public Object getElementAt(int index) {
+ return zonesIds.get(index);
+ }
+
+ public String[] getZone(String zoneId) {
+ return zonesMap.get(zoneId);
+ }
+}
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java 2011-01-06 17:04:05 UTC (rev 481)
@@ -0,0 +1,64 @@
+/*
+ * #%L
+ *
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 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.ui.result;
+
+import java.awt.Component;
+
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JList;
+
+/**
+ * Zone list combo renderer (display zone name for zone id).
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class ZoneComboBoxRenderer extends DefaultListCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -8231189755539976714L;
+
+ @Override
+ public Component getListCellRendererComponent(JList list, Object value,
+ int index, boolean isSelected, boolean cellHasFocus) {
+
+ String zoneId = (String)value;
+ ZoneComboBoxModel model = (ZoneComboBoxModel)list.getModel();
+ String[] zoneInfo = model.getZone(zoneId);
+ String zoneName = null;
+ if (zoneInfo != null) {
+ zoneName = zoneInfo[0] + " - " + zoneInfo[1];
+ }
+ else {
+ zoneName = zoneId;
+ }
+ return super.getListCellRendererComponent(list, zoneName, index, isSelected,
+ cellHasFocus);
+ }
+}
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-01-06 15:47:26 UTC (rev 480)
+++ trunk/pom.xml 2011-01-06 17:04:05 UTC (rev 481)
@@ -75,7 +75,7 @@
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
- <version>2.0</version>
+ <version>2.0.1</version>
<scope>compile</scope>
</dependency>
1
0
r480 - in trunk: coser-business/src/main/java/fr/ifremer/coser coser-business/src/main/java/fr/ifremer/coser/bean coser-business/src/main/java/fr/ifremer/coser/services coser-business/src/test/java/fr/ifremer/coser/services coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1 coser-ui/src/main/java/fr/ifremer/coser/ui/result coser-ui/src/main/java/fr/ifremer/coser/ui/selection coser-ui/src/main/resources/fr/ifremer/coser/bean coser-ui/s
by chatellier@users.labs.libre-entreprise.org 06 Jan '11
by chatellier@users.labs.libre-entreprise.org 06 Jan '11
06 Jan '11
Author: chatellier
Date: 2011-01-06 15:47:26 +0000 (Thu, 06 Jan 2011)
New Revision: 480
Log:
Ajout du support des cartes sur les r?\195?\169sulats.
Ajout d'un champ "publication" pour le resultats
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-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-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/RSufiResult-error-validation.xml
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/CoserConstants.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java 2011-01-06 15:30:02 UTC (rev 479)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java 2011-01-06 15:47:26 UTC (rev 480)
@@ -62,7 +62,7 @@
/** Nom du dossier des resultats RSufi. */
public static final String STORAGE_RESULTS_DIRECTORY = "results";
- /** Nom du dossier de stockage des maps. */
+ /** Nom du dossier de stockage des maps (project AND results). */
public static final String STORAGE_MAPS_DIRECTORY = "maps";
/** Suffix des nom de fichiers data apres control. */
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-06 15:30:02 UTC (rev 479)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java 2011-01-06 15:47:26 UTC (rev 480)
@@ -42,7 +42,7 @@
private static final long serialVersionUID = -1337710082675120199L;
protected String name;
-
+
protected String rsufiVersion;
protected String zone;
@@ -54,9 +54,15 @@
protected String estPopIndPath;
protected String estComIndName;
-
+
protected String estPopIndName;
+ /** Utilisé seulement pour la validation (sinon, non valorisé). */
+ protected String mapsPath;
+
+ /** Result selected for web publication. */
+ protected boolean publishResult;
+
public String getName() {
return name;
}
@@ -127,6 +133,26 @@
getPropertyChangeSupport().firePropertyChange("estPopIndName", oldValue, estPopIndName);
}
+ public void setMapsPath(String mapsPath) {
+ String oldValue = this.mapsPath;
+ this.mapsPath = mapsPath;
+ getPropertyChangeSupport().firePropertyChange("mapsPath", oldValue, mapsPath);
+ }
+
+ public String getMapsPath() {
+ return mapsPath;
+ }
+
+ public void setPublishResult(boolean publishResult) {
+ boolean oldValue = this.publishResult;
+ this.publishResult = publishResult;
+ getPropertyChangeSupport().firePropertyChange("publishResult", oldValue, publishResult);
+ }
+
+ public boolean isPublishResult() {
+ return publishResult;
+ }
+
public Properties toProperties() {
Properties props = new Properties();
if (getRsufiVersion() != null) {
@@ -141,6 +167,7 @@
if (getEstPopIndName() != null) {
props.setProperty("result.estPopIndName", getEstPopIndName());
}
+ props.setProperty("result.publishResult", String.valueOf(isPublishResult()));
return props;
}
@@ -157,5 +184,8 @@
if (props.containsKey("result.estPopIndName")) {
setEstPopIndName(props.getProperty("result.estPopIndName"));
}
+ if (props.containsKey("result.publishResult")) {
+ setPublishResult(Boolean.parseBoolean(props.getProperty("result.publishResult")));
+ }
}
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java 2011-01-06 15:30:02 UTC (rev 479)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java 2011-01-06 15:47:26 UTC (rev 480)
@@ -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-06 15:30:02 UTC (rev 479)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2011-01-06 15:47:26 UTC (rev 480)
@@ -1057,10 +1057,13 @@
// sauvegarde des 2 fichiers obligatoires
File estComIndFile = new File(rsufiResult.getEstComIndPath());
File estPopIndFile = new File(rsufiResult.getEstPopIndPath());
+ File mapsDirectory = new File(rsufiResult.getMapsPath());
rsufiResult.setEstComIndName(estComIndFile.getName());
rsufiResult.setEstPopIndName(estPopIndFile.getName());
FileUtils.copyFileToDirectory(estComIndFile, rsufiResultDirectory);
FileUtils.copyFileToDirectory(estPopIndFile, rsufiResultDirectory);
+ File resultMapsDirectory = new File(rsufiResultDirectory, CoserConstants.STORAGE_MAPS_DIRECTORY);
+ FileUtils.copyDirectory(mapsDirectory, resultMapsDirectory);
// sauvegarde des fichiers autre
File otherFilesDirectory = new File(rsufiResultDirectory, "others");
@@ -2953,8 +2956,8 @@
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
// password param
- //StringBody passwordBody = new StringBody(config.getWebUploadPassword(), Charset.forName("UTF-8"));
- //reqEntity.addPart("password", passwordBody);
+ StringBody passwordBody = new StringBody("toto", Charset.forName("UTF-8"));
+ reqEntity.addPart("password", passwordBody);
// file param
ProgressStream stream = new ProgressStream(new FileInputStream(prepareZip), progress);
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-06 15:30:02 UTC (rev 479)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-06 15:47:26 UTC (rev 480)
@@ -55,7 +55,7 @@
*
* Ce service, contrairement au autre a un état, les indicateurs et zones
* chargées persistent apres chargement, car elle ne peuvent pas changer
- * tant que l'application est a cours d'utilisation.
+ * tant que l'application est en cours d'utilisation.
*
* @author chatellier
* @version $Revision$
@@ -73,7 +73,7 @@
protected ProjectService projectService;
- /** Indicator map (fr, en) (etat du service). */
+ /** Indicator map (id, locale > translation) (etat du service). */
protected MultiKeyMap indicatorMap;
public WebService(CoserBusinessConfig config) {
@@ -438,7 +438,7 @@
MultiKeyMap defaultIndicators = getDefaultIndicators();
Map<String, String> result = new HashMap<String, String>();
-
+
// on peu lours mais reconstruit le path jusqu'au fichier estcomind
File projectsDirectory = config.getWebProjectsDirectory();
File projectDirectory = new File(projectsDirectory, project.getName());
@@ -449,7 +449,7 @@
// le fichier estcomind
File estPopIndFile = new File(resultDirectory, rsufiResult.getEstPopIndName());
-
+
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
DataStorage dataStorage = importService.loadCSVFile(estPopIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
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-06 15:30:02 UTC (rev 479)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2011-01-06 15:47:26 UTC (rev 480)
@@ -127,6 +127,7 @@
RSufiResult rSufiResult = selection.getRsufiResults().get(0);
Assert.assertEquals("testresult1", rSufiResult.getName());
Assert.assertEquals("myzone", rSufiResult.getZone());
+ Assert.assertTrue(rSufiResult.isPublishResult());
// 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-06 15:30:02 UTC (rev 479)
+++ trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties 2011-01-06 15:47:26 UTC (rev 480)
@@ -3,3 +3,4 @@
result.zone=myzone
result.estPopIndName=EstPopInd_test.txt
result.estComIndName=EstComInd_test.txt
+result.publishResult=true
\ No newline at end of file
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-06 15:30:02 UTC (rev 479)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx 2011-01-06 15:47:26 UTC (rev 480)
@@ -36,6 +36,7 @@
<field name="rsufiVersion" component="resultRsufiVersion" />
<field name="estComIndPath" component="estComIndFileTextField" />
<field name="estPopIndPath" component="estPopIndFileTextField" />
+ <field name="mapsPath" component="mapsDirectoryTextField" />
</BeanValidator>
<row>
@@ -102,6 +103,29 @@
</cell>
</row>
<row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.result.mapsDirectory" />
+ </cell>
+ <cell fill="horizontal">
+ <JTextField id="mapsDirectoryTextField" />
+ <javax.swing.text.Document javaBean="mapsDirectoryTextField.getDocument()"
+ onInsertUpdate='getRsufiResult().setMapsPath(mapsDirectoryTextField.getText())'
+ onRemoveUpdate='getRsufiResult().setMapsPath(mapsDirectoryTextField.getText())' />
+ </cell>
+ <cell fill="horizontal">
+ <JButton text="coser.ui.common.selectFile"
+ onActionPerformed="getHandler().selectMapsDirectory(this, mapsDirectoryTextField)" />
+ </cell>
+ </row>
+ <row>
+ <cell anchor="west">
+ <JLabel text="coser.ui.result.publishResult" />
+ </cell>
+ <cell fill="horizontal" columns="2">
+ <JCheckBox id="publishResultCheckBox" />
+ </cell>
+ </row>
+ <row>
<cell anchor="west" columns="3">
<JLabel text="coser.ui.result.otherDataFile" />
</cell>
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-06 15:30:02 UTC (rev 479)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2011-01-06 15:47:26 UTC (rev 480)
@@ -1164,7 +1164,6 @@
protected JFileChooser getResultFileChooser() {
if (resultFileChooser == null) {
resultFileChooser = new JFileChooser();
- resultFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
}
return resultFileChooser;
}
@@ -1173,7 +1172,7 @@
* Select result file (file only).
*
* @param view view
- * @param textComponent text component to set selected directory
+ * @param textComponent text component to set selected file
*/
public void selectResultFile(SelectionAddResultDialog view, JTextField textComponent) {
JFileChooser selectFileChooser = getResultFileChooser();
@@ -1185,12 +1184,29 @@
textComponent.setText(selectedFile.getAbsolutePath());
}
}
+
+ /**
+ * Select maps directory (directory only).
+ *
+ * @param view view
+ * @param textComponent text component to set selected directory
+ */
+ public void selectMapsDirectory(SelectionAddResultDialog view, JTextField textComponent) {
+ JFileChooser selectFileChooser = getResultFileChooser();
+ selectFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+
+ int result = selectFileChooser.showOpenDialog(view);
+ if (result == JFileChooser.APPROVE_OPTION) {
+ File selectedFile = selectFileChooser.getSelectedFile();
+ textComponent.setText(selectedFile.getAbsolutePath());
+ }
+ }
/**
- * Select result file (file only).
+ * Select other files (file or directory).
*
* @param view view
- * @param listComponent list component to set selected directory
+ * @param listComponent list component to set selected file
*/
public void selectResultFileOrDirectory(SelectionAddResultDialog view, JList listComponent) {
JFileChooser selectFileChooser = getResultFileChooser();
Modified: trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/RSufiResult-error-validation.xml
===================================================================
--- trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/RSufiResult-error-validation.xml 2011-01-06 15:30:02 UTC (rev 479)
+++ trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/RSufiResult-error-validation.xml 2011-01-06 15:47:26 UTC (rev 480)
@@ -51,4 +51,10 @@
<message>coser.ui.result.requiredestPopIndPath</message>
</field-validator>
</field>
+ <field name="mapsPath">
+ <field-validator type="requiredstring">
+ <param name="trim">true</param>
+ <message>coser.ui.result.requiredmapsPath</message>
+ </field-validator>
+ </field>
</validators>
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-06 15:30:02 UTC (rev 479)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2011-01-06 15:47:26 UTC (rev 480)
@@ -135,10 +135,13 @@
coser.ui.result.extractDataButton=Extract as Rsufi format
coser.ui.result.extractDataLabel=Extraction directory \:
coser.ui.result.extractDataTitle=Extract RSufi data
+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.requiredestComIndPath=ESTCOMind file is required
coser.ui.result.requiredestPopIndPath=ESTPOPind file is required
+coser.ui.result.requiredmapsPath=Maps directory is required
coser.ui.result.requiredname=Result name is required
coser.ui.result.requiredrsufiVersion=Rsufi version is required
coser.ui.result.resultName=Result name \:
Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
===================================================================
--- trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2011-01-06 15:30:02 UTC (rev 479)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2011-01-06 15:47:26 UTC (rev 480)
@@ -135,10 +135,13 @@
coser.ui.result.extractDataButton=Extraire au format RSufi
coser.ui.result.extractDataLabel=Dossier d'extraction \:
coser.ui.result.extractDataTitle=Extraction des donn\u00E9es RSufi
+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.requiredestComIndPath=Le fichier ESTCOMind est requis
coser.ui.result.requiredestPopIndPath=Le fichier ESTPOPind est requis
+coser.ui.result.requiredmapsPath=Le dossier des cartes est requis
coser.ui.result.requiredname=Le nom du r\u00E9sultat est requis
coser.ui.result.requiredrsufiVersion=Le champ 'rsufiVersion' est requis
coser.ui.result.resultName=Nom du r\u00E9sultat \:
1
0
r479 - trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions
by chatellier@users.labs.libre-entreprise.org 06 Jan '11
by chatellier@users.labs.libre-entreprise.org 06 Jan '11
06 Jan '11
Author: chatellier
Date: 2011-01-06 15:30:02 +0000 (Thu, 06 Jan 2011)
New Revision: 479
Log:
Fix stream close on exception
Modified:
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2011-01-06 14:26:08 UTC (rev 478)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2011-01-06 15:30:02 UTC (rev 479)
@@ -25,11 +25,13 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.util.Date;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
+import org.apache.commons.io.IOUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
@@ -85,8 +87,10 @@
if (webProperties.isFile()) {
// get update date
Properties props = new Properties();
+ InputStream stream = null;
try {
- props.load(new FileInputStream(webProperties));
+ stream = new FileInputStream(webProperties);
+ props.load(stream);
if (props.containsKey("updateDate")) {
String date = props.getProperty("updateDate");
@@ -97,6 +101,9 @@
} catch (IOException ex) {
throw new CoserWebException("Can't save properties file", ex);
}
+ finally {
+ IOUtils.closeQuietly(stream);
+ }
}
if (dataUpdateDate == null) {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2011-01-06 14:26:08 UTC (rev 478)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2011-01-06 15:30:02 UTC (rev 479)
@@ -26,9 +26,12 @@
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.util.Date;
import java.util.Properties;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -64,7 +67,6 @@
private String password;
public void setResultFile(File resultFile) {
- System.out.println("resultFile = " + resultFile);
this.resultFile = resultFile;
}
@@ -128,17 +130,23 @@
File webProperties = new File(config.getWebServerDirectory(), CoserWebConstants.WEB_PROPERTIES_NAME);
Properties props = new Properties();
+ InputStream iStream = null;
+ OutputStream oStream = null;
try {
if (webProperties.isFile()) {
- props.load(new FileInputStream(webProperties));
+ iStream = new FileInputStream(webProperties);
+ props.load(iStream);
}
props.setProperty("updateDate", String.valueOf(new Date().getTime()));
- props.store(new FileOutputStream(webProperties), "Update data");
+ oStream = new FileOutputStream(webProperties);
+ props.store(oStream, "Update data");
} catch (IOException ex) {
throw new CoserWebException("Can't save properties file", ex);
}
-
-
+ finally {
+ IOUtils.closeQuietly(iStream);
+ IOUtils.closeQuietly(oStream);
+ }
}
}
1
0
r478 - in trunk: coser-business/src/main/java/fr/ifremer/coser coser-business/src/main/java/fr/ifremer/coser/services coser-business/src/test/java/fr/ifremer/coser/services coser-web/src/main/java/fr/ifremer/coser/web/actions/pop
by chatellier@users.labs.libre-entreprise.org 06 Jan '11
by chatellier@users.labs.libre-entreprise.org 06 Jan '11
06 Jan '11
Author: chatellier
Date: 2011-01-06 14:26:08 +0000 (Thu, 06 Jan 2011)
New Revision: 478
Log:
Affichage des traductions des indicateurs
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ImportService.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-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2011-01-06 13:19:35 UTC (rev 477)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2011-01-06 14:26:08 UTC (rev 478)
@@ -166,7 +166,7 @@
/** Server side. */
WEB_SERVER_DIRECTORY("coser.web.server.directory", _("coser.config.web.server.directory.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "web", String.class, false, false),
WEB_PROJECTS_DIRECTORY("coser.web.projects.directory", _("coser.config.web.projects.directory.description"), "${" + WEB_SERVER_DIRECTORY.key + "}" + File.separator + "projects", String.class, false, false),
- WEB_MATCH_INDICATORS("coser.web.matchindicators.file", _("coser.config.web.matchindicators.file.description"), "${" + WEB_SERVER_DIRECTORY.key + "}" + File.separator + "correspondanceindicateurs.txt", String.class, false, false),
+ WEB_MATCH_INDICATORS("coser.web.matchindicators.file", _("coser.config.web.matchindicators.file.description"), "${" + WEB_SERVER_DIRECTORY.key + "}" + File.separator + "matchindicators.csv", String.class, false, false),
WEB_MATCH_ZONES("coser.web.matchzones.file", _("coser.config.web.matchzones.file.description"), "${" + WEB_SERVER_DIRECTORY.key + "}" + File.separator + "correspondancezones.txt", String.class, false, false);
protected String key;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ImportService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ImportService.java 2011-01-06 13:19:35 UTC (rev 477)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ImportService.java 2011-01-06 14:26:08 UTC (rev 478)
@@ -327,18 +327,32 @@
return content;
}
-
+
/**
- * Charge un fichier de résultat (estcomind/estpopind). C'est a peu pret
- * le meme code qu'au dessus, sauf que le storage est simplement retourné
- * et que les séparateurs ne sont pas les même.
+ * Charge un fichier csv (estcomind/estpopind ...) mais sans verification.
+ * C'est a peu pret le meme code qu'au dessus, sauf que le storage est
+ * simplement retourné et que les séparateurs ne sont pas les même.
*
* @param file file to load
* @return data storage with file content
* @throws CoserBusinessException
*/
- public DataStorage loadResultCSVFile(File file) throws CoserBusinessException {
+ public DataStorage loadCSVFile(File file) throws CoserBusinessException {
+ return loadCSVFile(file, CoserConstants.CSV_SEPARATOR_CHAR);
+ }
+ /**
+ * Charge un fichier csv (estcomind/estpopind ...) mais sans verification.
+ * C'est a peu pret le meme code qu'au dessus, sauf que le storage est
+ * simplement retourné et que les séparateurs ne sont pas les même.
+ *
+ * @param file file to load
+ * @param separator separator to use to load file
+ * @return data storage with file content
+ * @throws CoserBusinessException
+ */
+ public DataStorage loadCSVFile(File file, char separator) throws CoserBusinessException {
+
DataStorage content = new MemoryDataStorage();
CSVReader csvReader = null;
@@ -346,7 +360,7 @@
InputStream stream = new FileInputStream(file);
Reader reader = new BufferedReader(new InputStreamReader(stream, CoserConstants.CSV_FILE_ENCODING));
- csvReader = new CSVReader(reader, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+ csvReader = new CSVReader(reader, separator);
// check header
String[] line = csvReader.readNext();
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-06 13:19:35 UTC (rev 477)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-06 14:26:08 UTC (rev 478)
@@ -34,6 +34,7 @@
import java.util.Map;
import java.util.TreeMap;
+import org.apache.commons.collections.map.MultiKeyMap;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
@@ -52,6 +53,10 @@
/**
* Service specifique à l'interface web de visualisation.
*
+ * Ce service, contrairement au autre a un état, les indicateurs et zones
+ * chargées persistent apres chargement, car elle ne peuvent pas changer
+ * tant que l'application est a cours d'utilisation.
+ *
* @author chatellier
* @version $Revision$
*
@@ -68,6 +73,9 @@
protected ProjectService projectService;
+ /** Indicator map (fr, en) (etat du service). */
+ protected MultiKeyMap indicatorMap;
+
public WebService(CoserBusinessConfig config) {
this.config = config;
@@ -76,6 +84,31 @@
}
/**
+ * Charge les indicateurs disponible depuis le fichier des indicateurs.
+ * (indid, indname)
+ *
+ * @return default indicators
+ * @throws CoserBusinessException
+ */
+ protected MultiKeyMap getDefaultIndicators() throws CoserBusinessException {
+
+ if (indicatorMap == null) {
+ indicatorMap = new MultiKeyMap();
+ File indicatorFile = config.getMatchIndicatorsFile();
+ DataStorage indicatorStorage = importService.loadCSVFile(indicatorFile);
+ Iterator<String[]> iteratorInd = indicatorStorage.iterator(true);
+ while(iteratorInd.hasNext()) {
+ // "id";"label_fr";"label_en"
+ String[] indicator = iteratorInd.next();
+ indicatorMap.put(indicator[0], "fr", indicator[1]);
+ indicatorMap.put(indicator[0], "en", indicator[2]);
+ }
+ }
+
+ return indicatorMap;
+ }
+
+ /**
* Traite le fichier uploade par l'application client et l'enregistre
* dans le stockage coté web.
*
@@ -247,6 +280,7 @@
Map<String, String> result = new TreeMap<String, String>();
+
// parcours des resultats disponibles
File projectsDirectory = config.getWebProjectsDirectory();
File[] projectFiles = projectsDirectory.listFiles();
@@ -321,7 +355,7 @@
File estPopIndFile = new File(resultDirectory, rsufiResult.getEstPopIndName());
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
- DataStorage dataStorage = importService.loadResultCSVFile(estPopIndFile);
+ DataStorage dataStorage = importService.loadCSVFile(estPopIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
Iterator<String[]> estPopIndIterator = dataStorage.iterator();
estPopIndIterator.next(); // skip header
@@ -340,14 +374,16 @@
}
/**
- * Retourne les indicateurs calculés.
+ * Retourne les indicateurs calculés avec leurs traductions scientifique
+ * pour la zone et l'especes souhaitées.
*
* @param zone zone
* @param species especes
+ * @param locale locale ({@code fr} ou {@code en})
* @return la liste des indicateurs
* @throws CoserBusinessException
*/
- public Map<String, String> getIndicators(String zone, String species) throws CoserBusinessException {
+ public Map<String, String> getIndicators(String zone, String species, String locale) throws CoserBusinessException {
Map<String, String> indicators = new TreeMap<String, String>();
// parcours des resultats disponibles
@@ -360,19 +396,19 @@
for (Selection selection : project.getSelections().values()) {
boolean resultFound = false;
-
+
for (RSufiResult rsufiResult : selection.getRsufiResults()) {
-
+
// extraction des especes pour le résultat demandé
if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
// data loading not necessary here
- Map<String, String> resultIndicators = getRsufiResultIndicators(project, selection, rsufiResult, species);
+ Map<String, String> resultIndicators = getRsufiResultIndicators(project, selection, rsufiResult, species, locale);
indicators.putAll(resultIndicators);
resultFound = true;
break;
}
}
-
+
if (resultFound) {
break;
}
@@ -388,15 +424,19 @@
* Recupere la liste de toutes les especes nom sci et nom off à partir
* d'un resultat.
*
- * @param project
- * @param selection
- * @param rsufiResult
+ * @param project project
+ * @param selection selection
+ * @param rsufiResult result
* @param species to get indicator
+ * @param locale locale ({@code fr} ou {@code en})
* @return indicator for species
* @throws CoserBusinessException
*/
protected Map<String, String> getRsufiResultIndicators(Project project,
- Selection selection, RSufiResult rsufiResult, String species) throws CoserBusinessException {
+ Selection selection, RSufiResult rsufiResult, String species, String locale) throws CoserBusinessException {
+
+ MultiKeyMap defaultIndicators = getDefaultIndicators();
+
Map<String, String> result = new HashMap<String, String>();
// on peu lours mais reconstruit le path jusqu'au fichier estcomind
@@ -411,7 +451,7 @@
File estPopIndFile = new File(resultDirectory, rsufiResult.getEstPopIndName());
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
- DataStorage dataStorage = importService.loadResultCSVFile(estPopIndFile);
+ DataStorage dataStorage = importService.loadCSVFile(estPopIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
Iterator<String[]> estPopIndIterator = dataStorage.iterator();
estPopIndIterator.next(); // skip header
@@ -420,9 +460,13 @@
String specyCode = tuple[3];
if (specyCode.equals(species)) {
-
+
String indicatorCode = tuple[1];
- result.put(indicatorCode, indicatorCode);
+ String translations = (String)defaultIndicators.get(indicatorCode, locale.toLowerCase());
+ if (translations == null) {
+ translations = "##" + indicatorCode + "##";
+ }
+ result.put(indicatorCode, translations);
}
}
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-06 13:19:35 UTC (rev 477)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2011-01-06 14:26:08 UTC (rev 478)
@@ -114,7 +114,7 @@
Project projectValidated = openTestProject(projectService, "projectctrvalidated");
// ce projet a un control validé
Assert.assertTrue(projectValidated.getControl().isValidated());
-
+
// la selection
Selection selection = projectValidated.getSelections().get("testselection1");
Assert.assertNotNull(selection);
@@ -131,7 +131,6 @@
// non validé
Project projectNotValidated = openTestProject(projectService, "project2");
Assert.assertFalse(projectNotValidated.getControl().isValidated());
-
}
/**
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java 2011-01-06 13:19:35 UTC (rev 477)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java 2011-01-06 14:26:08 UTC (rev 478)
@@ -22,6 +22,7 @@
package fr.ifremer.coser.web.actions.pop;
+import java.util.Locale;
import java.util.Map;
import org.apache.commons.logging.Log;
@@ -85,8 +86,11 @@
WebService webService = ServiceFactory.getWebService();
+ Locale locale = getLocale();
+ String localeCode = locale.getLanguage();
+
try {
- indicators = webService.getIndicators(zone, species);
+ indicators = webService.getIndicators(zone, species, localeCode);
} catch (CoserBusinessException ex) {
throw new CoserWebException("Can't get indicators", ex);
}
1
0