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
- 1259 discussions
r1163 - in trunk: coser-business/src/main/java/fr/ifremer/coser coser-business/src/main/java/fr/ifremer/coser/command 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/publication coser-ui/src/main/java/fr/ifremer/coser/ui/result coser-ui/src/main/java/fr/ifremer/coser/ui/util
by tchemit@users.forge.codelutin.com 23 Mar '14
by tchemit@users.forge.codelutin.com 23 Mar '14
23 Mar '14
Author: tchemit
Date: 2014-03-23 14:53:47 +0100 (Sun, 23 Mar 2014)
New Revision: 1163
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1163
Log:
fix build + usage of StringBuilder instead of StringBuffer
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
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-ui/src/main/java/fr/ifremer/coser/CoserExceptionHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/ErrorHelper.java
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2014-03-23 13:32:50 UTC (rev 1162)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2014-03-23 13:53:47 UTC (rev 1163)
@@ -74,7 +74,7 @@
* @return string
*/
public static String convertBracketString(List<String> args) {
- StringBuffer buffer = new StringBuffer();
+ StringBuilder buffer = new StringBuilder();
Iterator<String> itArgs = args.iterator();
while (itArgs.hasNext()) {
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 2014-03-23 13:32:50 UTC (rev 1162)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/command/MergeSpeciesCommand.java 2014-03-23 13:53:47 UTC (rev 1163)
@@ -134,7 +134,7 @@
if (specyFound) {
// compute key (attention a ne pas prendre en compte l'espece : elle change)
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
for (int tupleIndex = 0 ; tupleIndex < tuple.length; ++tupleIndex) {
if (tupleIndex == Length.INDEX_SURVEY || tupleIndex == Length.INDEX_YEAR ||
tupleIndex == Length.INDEX_HAUL || tupleIndex == Length.INDEX_SEX ||
@@ -268,7 +268,7 @@
if (specyFound) {
// compute key (attention a ne pas prendre en compte l'espece : elle change)
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
for (int tupleIndex = 0 ; tupleIndex < tuple.length; ++tupleIndex) {
if (tupleIndex == Catch.INDEX_SURVEY || tupleIndex == Catch.INDEX_YEAR ||
tupleIndex == Catch.INDEX_HAUL) {
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 2014-03-23 13:32:50 UTC (rev 1162)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java 2014-03-23 13:53:47 UTC (rev 1163)
@@ -516,7 +516,7 @@
}
// compute key
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
for (int tupleIndex = 0 ; tupleIndex < tuple.length; ++tupleIndex) {
if (tupleIndex == Catch.INDEX_YEAR || tupleIndex == Catch.INDEX_HAUL) {
sb.append(tuple[tupleIndex]).append(';');
@@ -802,7 +802,7 @@
}
// compute key
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
for (int tupleIndex = 0 ; tupleIndex < tuple.length; ++tupleIndex) {
if (tupleIndex == Length.INDEX_YEAR || tupleIndex == Length.INDEX_HAUL ||
tupleIndex == Length.INDEX_SPECIES) {
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserExceptionHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserExceptionHandler.java 2014-03-23 13:32:50 UTC (rev 1162)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserExceptionHandler.java 2014-03-23 13:53:47 UTC (rev 1163)
@@ -58,7 +58,7 @@
if (log.isErrorEnabled()) {
log.error("Global application exception", ex);
}
- ErrorHelper errorHelper = new ErrorHelper(Coser.coserConfig);
+ ErrorHelper errorHelper = new ErrorHelper();
errorHelper.showErrorDialog(null, ex.getMessage(), ex);
}
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java 2014-03-23 13:32:50 UTC (rev 1162)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java 2014-03-23 13:53:47 UTC (rev 1163)
@@ -212,7 +212,7 @@
} catch (Exception ex) {
//throw new CoserException("Can't get upload status", ex);
// FIXME chatellier 20110126 le dispatch global marche pas ? :(
- ErrorHelper errorHelper = new ErrorHelper(view.getContextValue(CoserConfig.class));
+ ErrorHelper errorHelper = new ErrorHelper();
errorHelper.showErrorDialog(view, ex.getMessage(), ex);
} finally {
setDefaultCursor(view);
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2014-03-23 13:32:50 UTC (rev 1162)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2014-03-23 13:53:47 UTC (rev 1163)
@@ -208,7 +208,7 @@
catch (Exception ex) {
//throw new CoserException("Can't get upload status", ex);
// FIXME chatellier 20110126 le dispatch global marche pas ? :(
- ErrorHelper errorHelper = new ErrorHelper(view.getContextValue(CoserConfig.class));
+ ErrorHelper errorHelper = new ErrorHelper();
errorHelper.showErrorDialog(view, ex.getMessage(), ex);
}
finally {
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/ErrorHelper.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/ErrorHelper.java 2014-03-23 13:32:50 UTC (rev 1162)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/ErrorHelper.java 2014-03-23 13:53:47 UTC (rev 1163)
@@ -34,6 +34,7 @@
import javax.swing.JOptionPane;
+import fr.ifremer.coser.CoserUIApplicationContext;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -63,8 +64,8 @@
protected CoserConfig coserConfig;
- public ErrorHelper(CoserConfig coserConfig) {
- this.coserConfig = coserConfig;
+ public ErrorHelper() {
+ this.coserConfig = CoserUIApplicationContext.get().getConfig();
}
/**
@@ -126,7 +127,7 @@
email.addReplyTo("no-reply(a)forge.codelutin.com");
// message description
- StringBuffer message = new StringBuffer();
+ StringBuilder message = new StringBuilder();
message.append(formatMessage("Project", "Coser " + coserConfig.getApplicationVersion()));
message.append(formatMessage("Date", new Date().toString()));
message.append(formatMessage("Title", errorInfo.getTitle()));
@@ -139,7 +140,11 @@
for (String propertyName : propertiesNames) {
// security, don't send string containing password :
if (!propertyName.contains("pass")) {
- message.append("\t" + propertyName + " : " + coserConfig.getOptions().getProperty(propertyName) + "\n");
+ message.append("\t");
+ message.append(propertyName);
+ message.append(" : ");
+ message.append(coserConfig.getOptions().getProperty(propertyName));
+ message.append("\n");
}
}
1
0
23 Mar '14
Author: tchemit
Date: 2014-03-23 14:32:50 +0100 (Sun, 23 Mar 2014)
New Revision: 1162
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1162
Log:
- refs #4690 (s?\195?\169paration des projets rsufi - echobase pour le client)
- api json pour interroger la configuration (pour echobase)
- suppression des cast inutiles
- am?\195?\169lioration de la configuration de la partie (ajout package auth, plus de convention, ...)
Added:
trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserUIApplicationContext.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/package-info.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginInterceptor.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LogoutAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/PerformLoginAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/package-info.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserJspAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/AbstractCoserJsonAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetFacadesAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetIndicatorsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetZonesForFacadeAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/package-info.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/interceptors/
trunk/coser-web/src/main/webapp/WEB-INF/content/auth/
trunk/coser-web/src/main/webapp/WEB-INF/content/auth/login.jsp
Removed:
trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java
trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.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-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java
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/java/fr/ifremer/coser/ui/common/DataHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultZoneRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.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/pom.xml
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.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/LocaleAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java
trunk/coser-web/src/main/resources/struts.xml
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 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -22,7 +22,9 @@
package fr.ifremer.coser;
-import static org.nuiton.i18n.I18n.t;
+import org.apache.commons.io.IOUtils;
+import org.nuiton.config.ApplicationConfig;
+import org.nuiton.config.ConfigOptionDef;
import java.io.File;
import java.io.FileInputStream;
@@ -36,18 +38,16 @@
import java.util.Locale;
import java.util.Properties;
-import org.apache.commons.io.IOUtils;
-import org.nuiton.config.ApplicationConfig;
-import org.nuiton.config.ConfigOptionDef;
+import static org.nuiton.i18n.I18n.n;
/**
* Coser business application config.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class CoserBusinessConfig extends ApplicationConfig {
@@ -89,11 +89,29 @@
setOption(CoserBusinessOption.PROJECTS_DIRECTORY.key, projectDirectory);
}
+ public File getRSufiProjectsDirectory() {
+ File result = getOptionAsFile(CoserBusinessOption.RSUFI_PROJECTS_DIRECTORY.key);
+ return result;
+ }
+
+ public void setRSufiProjectsDirectory(String projectDirectory) {
+ setOption(CoserBusinessOption.RSUFI_PROJECTS_DIRECTORY.key, projectDirectory);
+ }
+
+ public File getEchoBaseProjectsDirectory() {
+ File result = getOptionAsFile(CoserBusinessOption.ECHOBASE_PROJECTS_DIRECTORY.key);
+ return result;
+ }
+
+ public void setEchoBaseProjectsDirectory(String projectDirectory) {
+ setOption(CoserBusinessOption.ECHOBASE_PROJECTS_DIRECTORY.key, projectDirectory);
+ }
+
public File getValidatorsDirectory() {
File result = getOptionAsFile(CoserBusinessOption.VALIDATOR_DIRECTORY.key);
return result;
}
-
+
public void setValidatorsDirectory(String validatorDirectory) {
setOption(CoserBusinessOption.VALIDATOR_DIRECTORY.key, validatorDirectory);
}
@@ -120,7 +138,7 @@
String result = getOption(CoserBusinessOption.REFERENCE_SPECIES.key);
return result;
}
-
+
public void setReferenceSpeciesPath(String referenceSpeciesPath) {
setOption(CoserBusinessOption.REFERENCE_SPECIES.key, referenceSpeciesPath);
}
@@ -129,7 +147,7 @@
String result = getOption(CoserBusinessOption.REFERENCE_TYPE_ESPECES.key);
return result;
}
-
+
public void setReferenceTypeEspecesPath(String referenceTypeEspecesPath) {
setOption(CoserBusinessOption.REFERENCE_TYPE_ESPECES.key, referenceTypeEspecesPath);
}
@@ -138,7 +156,7 @@
double result = getOptionAsDouble(CoserBusinessOption.CONTROL_NOBSMIN.key);
return result;
}
-
+
public void setControlNobsmin(double controlNobsmin) {
setOption(CoserBusinessOption.CONTROL_NOBSMIN.key, String.valueOf(controlNobsmin));
}
@@ -147,7 +165,7 @@
double result = getOptionAsDouble(CoserBusinessOption.CONTROL_DIFF_CATCH_LENGTH.key);
return result;
}
-
+
public void setControlDiffCatchLength(double controlDiffCatchLength) {
setOption(CoserBusinessOption.CONTROL_DIFF_CATCH_LENGTH.key, String.valueOf(controlDiffCatchLength));
}
@@ -156,7 +174,7 @@
String result = getOption(CoserBusinessOption.CONTROL_TYPE_FISH.key);
return result;
}
-
+
public void setControlTypeFish(String controlTypeFish) {
setOption(CoserBusinessOption.CONTROL_TYPE_FISH.key, controlTypeFish);
}
@@ -173,7 +191,7 @@
double result = getOptionAsDouble(CoserBusinessOption.SELECTION_FILTER_OCCURRENCE.key);
return result;
}
-
+
public void setSelectionOccurrenceFilter(double selectionOccurrenceFilter) {
setOption(CoserBusinessOption.SELECTION_FILTER_OCCURRENCE.key, String.valueOf(selectionOccurrenceFilter));
}
@@ -182,7 +200,7 @@
double result = getOptionAsDouble(CoserBusinessOption.SELECTION_FILTER_DENSITY.key);
return result;
}
-
+
public void setSelectionDensityFilter(double selectionDensityFilter) {
setOption(CoserBusinessOption.SELECTION_FILTER_DENSITY.key, String.valueOf(selectionDensityFilter));
}
@@ -225,7 +243,7 @@
File result = getOptionAsFile(CoserBusinessOption.WEB_INDICATORS.key);
return result;
}
-
+
public void setWebIndicatorsFile(String indicatorsFile) {
setOption(CoserBusinessOption.WEB_INDICATORS.key, indicatorsFile);
}
@@ -234,7 +252,7 @@
File result = getOptionAsFile(CoserBusinessOption.WEB_ZONES.key);
return result;
}
-
+
public void setWebZonesFile(String zoneFile) {
setOption(CoserBusinessOption.WEB_ZONES.key, zoneFile);
}
@@ -247,7 +265,7 @@
/**
* Retourne la date de dernière mise à jour des données du site web.
- *
+ * <p/>
* Retourne une date bidon, si pas de dernière mise à jour.
*
* @return last data update date
@@ -272,8 +290,7 @@
stream.close();
} catch (IOException ex) {
throw new CoserTechnicalException("Can't read properties file", ex);
- }
- finally {
+ } finally {
IOUtils.closeQuietly(stream);
}
}
@@ -316,39 +333,44 @@
public static enum CoserBusinessOption implements ConfigOptionDef {
- DATABASE_DIRECTORY("coser.database.directory", t("coser.config.database.directory.description"), File.class, "${user.home}" + File.separator + "coser"),
- PROJECTS_DIRECTORY("coser.projects.directory", t("coser.config.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "projects"),
- VALIDATOR_DIRECTORY("coser.validator.directory", t("coser.config.validator.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "validators"),
+ DATABASE_DIRECTORY("coser.database.directory", n("coser.config.database.directory.description"), File.class, "${user.home}" + File.separator + "coser"),
+ PROJECTS_DIRECTORY("coser.projects.directory", n("coser.config.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "projects"),
+ RSUFI_PROJECTS_DIRECTORY("coser.projects.rsufi.directory", n("coser.config.projects.rsufi.directory.description"), File.class, "${" + PROJECTS_DIRECTORY.key + "}" + File.separator + "rsufi"),
+ ECHOBASE_PROJECTS_DIRECTORY("coser.projects.echobase.directory", n("coser.config.projects.echobase.directory.description"), File.class, "${" + PROJECTS_DIRECTORY.key + "}" + File.separator + "echobase"),
+ VALIDATOR_DIRECTORY("coser.validator.directory", n("coser.config.validator.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "validators"),
- SMTP_HOST("coser.smtp.host", t("coser.config.smtp.host.description"),String.class , "smtp"),
- LOCALE("coser.locale", t("coser.config.locale.description"), Locale.class, Locale.FRANCE.toString()),
+ SMTP_HOST("coser.smtp.host", n("coser.config.smtp.host.description"), String.class, "smtp"),
+ LOCALE("coser.locale", n("coser.config.locale.description"), Locale.class, Locale.FRANCE.toString()),
- REFERENCE_SPECIES("coser.reference.species", t("coser.config.reference.species.description"), String.class, ""),
- REFERENCE_TYPE_ESPECES("coser.reference.typeSpecies", t("coser.config.reference.typeSpecies.description"), String.class, ""),
+ REFERENCE_SPECIES("coser.reference.species", n("coser.config.reference.species.description"), String.class, ""),
+ REFERENCE_TYPE_ESPECES("coser.reference.typeSpecies", n("coser.config.reference.typeSpecies.description"), String.class, ""),
- CONTROL_NOBSMIN("coser.control.nobsmin", t("coser.config.control.nobsmin.description"), Float.class, "1.0"),
- CONTROL_DIFF_CATCH_LENGTH("coser.control.diffcatchlength", t("coser.config.control.diffcatchlength.description"), Float.class, "5.0"),
- CONTROL_TYPE_FISH("coser.control.typeFish", t("coser.config.control.typeFish.description"), String.class, "Pisces + Agnatha"),
- CONTROL_STANDARD_DEVIATION_TO_AVERAGE("coser.control.standarddeviationtoaverage", t("coser.config.control.standarddeviationtoaverage.description"), Integer.class, "3"),
- SELECTION_FILTER_OCCURRENCE("coser.selection.occurrenceFilter", t("coser.config.selection.occurrenceFilter.description"),Float.class , "5.0"),
- SELECTION_FILTER_DENSITY("coser.selection.densityFilter", t("coser.config.selection.densityFilter.description"), Float.class, "5.0"),
+ CONTROL_NOBSMIN("coser.control.nobsmin", n("coser.config.control.nobsmin.description"), Float.class, "1.0"),
+ CONTROL_DIFF_CATCH_LENGTH("coser.control.diffcatchlength", n("coser.config.control.diffcatchlength.description"), Float.class, "5.0"),
+ CONTROL_TYPE_FISH("coser.control.typeFish", n("coser.config.control.typeFish.description"), String.class, "Pisces + Agnatha"),
+ CONTROL_STANDARD_DEVIATION_TO_AVERAGE("coser.control.standarddeviationtoaverage", n("coser.config.control.standarddeviationtoaverage.description"), Integer.class, "3"),
+ SELECTION_FILTER_OCCURRENCE("coser.selection.occurrenceFilter", n("coser.config.selection.occurrenceFilter.description"), Float.class, "5.0"),
+ SELECTION_FILTER_DENSITY("coser.selection.densityFilter", n("coser.config.selection.densityFilter.description"), Float.class, "5.0"),
/** Client side. */
- WEB_FRONT_END("coser.web.frontend", t("coser.config.web.frontend.description"), URL.class, "http://www.ifremer.fr/SIH-indices-campagnes"),
- WEB_UPLOAD_URL("coser.web.uploadurl", t("coser.config.web.uploadurl.description"), URL.class, "${" + WEB_FRONT_END.key + "}/upload-result.action"),
+ WEB_FRONT_END("coser.web.frontend", n("coser.config.web.frontend.description"), URL.class, "http://www.ifremer.fr/SIH-indices-campagnes"),
+ WEB_UPLOAD_URL("coser.web.uploadurl", n("coser.config.web.uploadurl.description"), URL.class, "${" + WEB_FRONT_END.key + "}/upload-result.action"),
/** Server side. */
- WEB_PROPERTIES_FILE("coser.web.properties.file", t("coser.config.web.properties.file.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "web.properties"),
- WEB_INDICATORS_PROJECTS_DIRECTORY("coser.web.indicators.projects.directory", t("coser.config.web.indicators.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webindicatorsprojects"),
- WEB_MAPS_PROJECTS_DIRECTORY("coser.web.maps.projects.directory", t("coser.config.web.maps.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webmapsprojects"),
- WEB_ECHOBASE_PROJECTS_DIRECTORY("coser.web.echobase.projects.directory", t("coser.config.web.echobase.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webechobaseprojects"),
- WEB_INDICATORS("coser.web.indicators.file", t("coser.config.web.indicators.file.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webindicators.csv"),
- WEB_ZONES("coser.web.zones.file", t("coser.config.web.zones.file.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webzones.csv"),
- WEB_PUBLICATION_EMAIL("coser.web.newresult.emails", t("coser.config.web.newresult.emails.description"), String.class, null);
+ WEB_PROPERTIES_FILE("coser.web.properties.file", n("coser.config.web.properties.file.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "web.properties"),
+ WEB_INDICATORS_PROJECTS_DIRECTORY("coser.web.indicators.projects.directory", n("coser.config.web.indicators.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webindicatorsprojects"),
+ WEB_MAPS_PROJECTS_DIRECTORY("coser.web.maps.projects.directory", n("coser.config.web.maps.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webmapsprojects"),
+ WEB_ECHOBASE_PROJECTS_DIRECTORY("coser.web.echobase.projects.directory", n("coser.config.web.echobase.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webechobaseprojects"),
+ WEB_INDICATORS("coser.web.indicators.file", n("coser.config.web.indicators.file.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webindicators.csv"),
+ WEB_ZONES("coser.web.zones.file", n("coser.config.web.zones.file.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webzones.csv"),
+ WEB_PUBLICATION_EMAIL("coser.web.newresult.emails", n("coser.config.web.newresult.emails.description"), String.class, null);
private final String key;
+
private final String description;
+
private final String defaultValue;
+
private final Class<?> type;
private CoserBusinessOption(String key, String description, Class<?> type, String defaultValue) {
@@ -399,7 +421,5 @@
public Class<?> getType() {
return type;
}
-
-
}
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -88,6 +88,11 @@
*/
protected final MultiKeyMap<String, String> map;
+ /**
+ * Set of indicator ids.
+ */
+ protected final Set<String> ids;
+
public IndicatorMap(File indicatorsFile) {
Preconditions.checkNotNull(indicatorsFile);
Preconditions.checkArgument(indicatorsFile.exists(), "Indicator file: " + indicatorsFile + " does not exist.");
@@ -96,20 +101,27 @@
log.info("Loading Indicator file: " + indicatorsFile);
}
this.map = new MultiKeyMap<String, String>();
+ final Set<String> indicatorIs = Sets.newHashSet();
DataStorage storage = DataStorages.load(indicatorsFile);
DataStorages.walk(storage, new DataStorageWalker() {
@Override
public void onRow(String... row) {
String indicatorCode = row[0];
+ indicatorIs.add(indicatorCode);
map.put(indicatorCode, KEY_FRENCH, row[1]);
map.put(indicatorCode, KEY_ENGLISH, row[2]);
map.put(indicatorCode, KEY_SPANISH, row[3]);
map.put(indicatorCode, KEY_UNIT, row[4]);
}
});
+ this.ids = Collections.unmodifiableSet(indicatorIs);
}
+ public Set<String> getIds() {
+ return ids;
+ }
+
public String getIndicatorValue(Locale locale, String indicator) {
Preconditions.checkNotNull(locale);
Preconditions.checkNotNull(indicator);
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -111,30 +111,33 @@
boolean onlyPubliableResult) throws CoserBusinessException {
List<GlobalResult> results = Lists.newArrayList();
- // loop on projets
- File projectsDirectory = config.getProjectsDirectory();
- File[] projects = projectsDirectory.listFiles();
- if (projects != null) {
- for (File existingProject : projects) {
+ File rsufiProjectsDirectory = config.getRSufiProjectsDirectory();
+ File[] rsufiProjects = rsufiProjectsDirectory.listFiles();
+ if (rsufiProjects != null) {
+ for (File existingProject : rsufiProjects) {
if (existingProject.isDirectory()) {
- if (GlobalResult.isEchobaseProject(existingProject)) {
+ Collection<GlobalResult> rsufiResults =
+ getRsufiResults(existingProject,
+ beginDate,
+ endDate,
+ onlyPubliableResult);
+ results.addAll(rsufiResults);
+ }
+ }
+ }
- Collection<GlobalResult> echoBaseResults =
- getEchoBaseResults(existingProject,
- beginDate,
- endDate,
- onlyPubliableResult);
- results.addAll(echoBaseResults);
- } else {
-
- Collection<GlobalResult> rsufiResults =
- getRsufiResults(existingProject,
- beginDate,
- endDate,
- onlyPubliableResult);
- results.addAll(rsufiResults);
- }
+ File echoBaseProjectsDirectory = config.getEchoBaseProjectsDirectory();
+ File[] echoBaseProjects = echoBaseProjectsDirectory.listFiles();
+ if (echoBaseProjects != null) {
+ for (File existingProject : echoBaseProjects) {
+ if (existingProject.isDirectory()) {
+ Collection<GlobalResult> echoBaseResults =
+ getEchoBaseResults(existingProject,
+ beginDate,
+ endDate,
+ onlyPubliableResult);
+ results.addAll(echoBaseResults);
}
}
}
@@ -382,7 +385,7 @@
Selection selection = selectedResult.getSelection();
RSufiResult rsufiResult = selectedResult.getRsufiResult();
- File projectDirectory = new File(config.getProjectsDirectory(), project.getName());
+ File projectDirectory = new File(config.getRSufiProjectsDirectory(), project.getName());
File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
File selectionDirectory = new File(selectionsDirectory, selection.getName());
File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY);
@@ -506,7 +509,7 @@
Preconditions.checkNotNull(extractDirectory);
try {
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File rsufiDirectory = new File(extractDirectory, LegacyResultRepositoryType.ID);
FileUtils.forceMkdir(rsufiDirectory);
@@ -521,7 +524,7 @@
project = projectService.openProject(project.getName());
OneRSufiResultFileFilter oneRFF = new OneRSufiResultFileFilter(
- config.getProjectsDirectory(),
+ projectsDirectory,
project,
path.getSelection(),
path.getRsufiResult(),
@@ -561,7 +564,7 @@
Preconditions.checkNotNull(extractDirectory);
try {
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getEchoBaseProjectsDirectory();
File echobaseDirectory = new File(extractDirectory, EchoBaseResultRepositoryType.ID);
FileUtils.forceMkdir(echobaseDirectory);
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -501,7 +501,7 @@
return new HashMap<String, String[]>();
}
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File projectDirectory = new File(projectsDirectory, project.getName());
File originalDirectory = new File(projectDirectory, CoserConstants.STORAGE_ORIGINAL_DIRECTORY);
String storageFileName = getDataStorageFileName(project, category, null);
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 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -132,7 +132,7 @@
* @return projects list
*/
public List<String> getProjectNames() {
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
List<String> result = new ArrayList<String>();
File[] projects = projectsDirectory.listFiles();
if (projects != null) {
@@ -165,7 +165,7 @@
* @throws CoserBusinessException if project can't be created
*/
public Project createProject(Project project, Map<Category, File> categoriesAndFiles, List<File> maps, ProgressMonitor progress) throws CoserBusinessException {
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
if (!projectsDirectory.isDirectory()) {
projectsDirectory.mkdirs();
}
@@ -278,7 +278,7 @@
* @throws CoserBusinessException
*/
public void saveProject(Project project, List<File> maps) throws CoserBusinessException {
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
String projectName = project.getName();
File projectDirectory = new File(projectsDirectory, projectName);
@@ -394,7 +394,7 @@
// check project existence
File projectsDirectory = parentDirectory;
if (projectsDirectory == null) {
- projectsDirectory = config.getProjectsDirectory();
+ projectsDirectory = config.getRSufiProjectsDirectory();
}
File projectDirectory = new File(projectsDirectory, projectName);
if (!projectDirectory.isDirectory()) {
@@ -604,7 +604,7 @@
*/
public Project loadControlData(Project project) throws CoserBusinessException {
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File projectDirectory = new File(projectsDirectory, project.getName());
// first free memory, clear all data
@@ -717,7 +717,7 @@
* @throws CoserBusinessException
*/
public Project loadSelectionData(Project project, Selection selection) throws CoserBusinessException {
- return loadSelectionData(config.getProjectsDirectory(), project, selection);
+ return loadSelectionData(config.getRSufiProjectsDirectory(), project, selection);
}
/**
@@ -791,7 +791,7 @@
public void saveProjectControl(Project project) throws CoserBusinessException {
// tout ce qui suit doit exister à ce stade
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
String projectName = project.getName();
File projectDirectory = new File(projectsDirectory, projectName);
@@ -865,7 +865,7 @@
saveProjectControl(project);
// generate control file as pdf
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File projectDirectory = new File(projectsDirectory, project.getName());
File controlDirectory = new File(projectDirectory, CoserConstants.STORAGE_CONTROL_DIRECTORY);
File controlReportPdf = new File(controlDirectory, "control.pdf");
@@ -889,7 +889,7 @@
saveProjectSelection(project, selection);
// generate control file as pdf
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File projectDirectory = new File(projectsDirectory, project.getName());
File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
File selectionDirectory = new File(selectionsDirectory, selection.getName());
@@ -1010,7 +1010,7 @@
public void createProjectSelection(Project project, Selection selection) throws CoserBusinessException {
// tout ce qui suit doit exister à ce stade
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File projectDirectory = new File(projectsDirectory, project.getName());
// creation du dossier de selections (peut deja exister)
@@ -1039,7 +1039,7 @@
public void saveProjectSelection(Project project, Selection selection) throws CoserBusinessException {
// tout ce qui suit doit exister à ce stade
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File projectDirectory = new File(projectsDirectory, project.getName());
// creation du dossier de selections (peut deja exister)
@@ -1107,7 +1107,7 @@
public void saveRsufiResults(Project project, Selection selection,
RSufiResult rsufiResult, List<File> othersFiles) throws CoserBusinessException {
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File projectDirectory = new File(projectsDirectory, project.getName());
File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
File selectionDirectory = new File(selectionsDirectory, selection.getName());
@@ -1189,7 +1189,7 @@
*/
public void editRsufiResults(Project project, Selection selection, RSufiResult rsufiResult, List<File> othersFile) throws CoserBusinessException {
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File projectDirectory = new File(projectsDirectory, project.getName());
File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
File selectionDirectory = new File(selectionsDirectory, selection.getName());
@@ -1274,7 +1274,7 @@
public void deleteRSufiResult(Project project, Selection selection, RSufiResult rsufiResult) throws CoserBusinessException {
try {
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File projectDirectory = new File(projectsDirectory, project.getName());
File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
File selectionDirectory = new File(selectionsDirectory, selection.getName());
@@ -2895,7 +2895,7 @@
out.println(t("coser.business.extract.creationdate") + dateFormat.format(project.getCreationDate()));
// add selection additional files
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File projectDirectory = new File(projectsDirectory, project.getName());
File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
File selectionDirectory = new File(selectionsDirectory, selection.getName());
@@ -3044,7 +3044,7 @@
SortedMap<String, List<String>> selectionByProject = new TreeMap<String, List<String>>();
// parcours des resultats disponibles
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File[] projectFiles = projectsDirectory.listFiles();
if (projectFiles != null) {
for (File projectFile : projectFiles) {
@@ -3086,7 +3086,7 @@
* @since 1.2
*/
public Selection openSelection(String projectName, String selectionName) throws CoserBusinessException {
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File projectDirectory = new File(projectsDirectory, projectName);
if (!projectDirectory.isDirectory()) {
throw new CoserBusinessException(t("Project %s doesn't exists !", projectName));
@@ -3220,7 +3220,7 @@
*/
public void editSelectionOptions(Project project, Selection selection, List<File> othersFile) throws CoserBusinessException {
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File projectDirectory = new File(projectsDirectory, project.getName());
File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
File selectionDirectory = new File(selectionsDirectory, selection.getName());
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 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -276,7 +276,7 @@
List<RSufiResultPath> results = new ArrayList<RSufiResultPath>();
// loop on projets
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
File[] projects = projectsDirectory.listFiles();
if (projects != null) {
for (File existingProject : projects) {
@@ -379,13 +379,13 @@
Project project = path.getProject();
project = projectService.openProject(project.getName());
- OneResultFileFilter oneRFF = new OneResultFileFilter(config.getProjectsDirectory(),
+ OneResultFileFilter oneRFF = new OneResultFileFilter(config.getRSufiProjectsDirectory(),
project, path.getSelection(), path.getRsufiResult(), publishDataResults.contains(path));
mFileFilters.add(oneRFF);
}
// create zip temp file
- File projectsDirectory = config.getProjectsDirectory();
+ File projectsDirectory = config.getRSufiProjectsDirectory();
//ZipUtil.compress(prepareZip, projectsDirectory, mFileFilters);
// compress les projets à la racines de l'archive
@@ -533,7 +533,7 @@
Selection selection = selectedResult.getSelection();
RSufiResult rsufiResult = selectedResult.getRsufiResult();
- File projectDirectory = new File(config.getProjectsDirectory(), project.getName());
+ File projectDirectory = new File(config.getRSufiProjectsDirectory(), project.getName());
File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
File selectionDirectory = new File(selectionsDirectory, selection.getName());
File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY);
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 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2014-03-23 13:32:50 UTC (rev 1162)
@@ -167,6 +167,8 @@
coser.config.database.directory.description=Coser database directory (all Coser data)
coser.config.locale.description=Application's locale
coser.config.projects.directory.description=Coser projects directory
+coser.config.projects.echobase.directory.description=Location of *EchoBase* projects
+coser.config.projects.rsufi.directory.description=Location of *RSufi* projects
coser.config.reference.species.description=Species reference file location (reftax)
coser.config.reference.typeSpecies.description=Code type species file location
coser.config.selection.densityFilter.description=Default density filter value
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 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2014-03-23 13:32:50 UTC (rev 1162)
@@ -167,6 +167,8 @@
coser.config.database.directory.description=Emplacement du dossier de toutes les données relatives à Coser
coser.config.locale.description=Langue de l'application
coser.config.projects.directory.description=Emplacement du dossier de sauvegarde des projets
+coser.config.projects.echobase.directory.description=Répertoire contenant les projets *EchoBase*
+coser.config.projects.rsufi.directory.description=Répertoire contenant les projets *RSufi*
coser.config.reference.species.description=Emplacement du fichier de référence des espèces (Reftax)
coser.config.reference.typeSpecies.description=Emplacement du fichier de code type des espèces
coser.config.selection.densityFilter.description=Filtre par défaut sur la moyenne des densités
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -103,7 +103,7 @@
@Before
public void initProjectDatabase() throws IOException {
FileUtils.cleanDirectory(config.getDatabaseDirectory());
- copyDirectoryContent("src.test.resources.projects", config.getProjectsDirectory());
+ copyDirectoryContent("src.test.resources.projects", config.getRSufiProjectsDirectory());
}
/**
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 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -93,15 +93,15 @@
public void testCreateProject() throws CoserBusinessException {
Project project = createTestProject(projectService, false);
- Assert.assertTrue(getFile(config.getProjectsDirectory(), project.getName(),
+ Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(),
"original", "testcatch.csv").exists());
- Assert.assertTrue(getFile(config.getProjectsDirectory(), project.getName(),
+ Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(),
"original", "testhaul.csv").exists());
- Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(),
project.getName(), "original", "teststrata.csv").exists());
- Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(),
project.getName(), "original", "testlength.csv").exists());
- Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(),
project.getName(), "reftaxSpecies.csv").exists());
}
@@ -146,7 +146,7 @@
Project project = createTestProject(projectService, false);
projectService.saveProjectControl(project);
- Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(),
project.getName(), "control", "testcatch_co.csv").exists());
}
@@ -162,7 +162,7 @@
projectService.validControl(project, Collections.EMPTY_LIST);
Assert.assertTrue(project.getControl().isValidated());
- Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(),
project.getName(), "control", "control.pdf").exists());
}
@@ -181,7 +181,7 @@
projectService.validSelection(project, selection);
Assert.assertTrue(selection.isValidated());
- Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(),
project.getName(), "selections",
"titi", "selection.pdf").exists());
}
@@ -198,7 +198,7 @@
selection.setName("titi");
projectService.createProjectSelection(project, selection);
- Assert.assertTrue(getFile(config.getProjectsDirectory(),
+ Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(),
project.getName(), "selections",
"titi", "testcatch_se.csv").exists());
}
@@ -610,12 +610,12 @@
Selection selection = project.getSelections().get("testselection1");
RSufiResult rsufiResult = selection.getRsufiResults().get(0);
- Assert.assertTrue(getFile(config.getProjectsDirectory(), project.getName(),
+ Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(),
"selections", "testselection1", "results", rsufiResult.getName(),
"result.properties").exists());
projectService.deleteRSufiResult(project, selection, rsufiResult);
- Assert.assertFalse(getFile(config.getProjectsDirectory(), project.getName(),
+ Assert.assertFalse(getFile(config.getRSufiProjectsDirectory(), project.getName(),
"selections", "testselection1", "results", rsufiResult.getName()).exists());
}
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -21,145 +21,165 @@
*/
package fr.ifremer.coser;
-import java.io.File;
+import fr.ifremer.coser.ui.CoserFrame;
+import jaxx.runtime.context.DefaultApplicationContext;
import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import fr.ifremer.coser.services.ClientResultService;
-import jaxx.runtime.context.DefaultApplicationContext;
-
-import jaxx.runtime.swing.session.SwingSession;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.i18n.I18n;
-import org.nuiton.i18n.init.ClassPathI18nInitializer;
-import org.nuiton.i18n.init.DefaultI18nInitializer;
-import org.nuiton.config.ArgumentsParserException;
-
-import com.bbn.openmap.MapBean;
-
-import fr.ifremer.coser.services.CommandService;
-import fr.ifremer.coser.services.ControlService;
-import fr.ifremer.coser.services.ProjectService;
-import fr.ifremer.coser.services.PublicationService;
-import fr.ifremer.coser.ui.CoserFrame;
-
/**
* Coser main class.
- *
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
*/
public class Coser {
- private static final Log log = LogFactory.getLog(Coser.class);
+// private static final Log log = LogFactory.getLog(Coser.class);
- protected static CoserConfig coserConfig;
+// protected static CoserConfig coserConfig;
/**
* Coser main method.
- *
+ *
* @param args main args
*/
public static void main(String... args) {
- // init config
- coserConfig = new CoserConfig();
- try {
- coserConfig.parse(args);
- } catch (ArgumentsParserException ex) {
- if (log.isErrorEnabled()) {
- log.error("Cant' parse configuration", ex);
- }
- }
+// // init config
+// coserConfig = new CoserConfig();
+// try {
+// coserConfig.parse(args);
+// } catch (ArgumentsParserException ex) {
+// if (log.isErrorEnabled()) {
+// log.error("Cant' parse configuration", ex);
+// }
+// }
+//
+// // OpenMap sysout
+// MapBean.suppressCopyright = true;
+//
+// // catch wall application exception
+// launch(context);
+//
+// // catch uncaught exceptions
+// Thread.setDefaultUncaughtExceptionHandler(new CoserExceptionHandler());
+// System.setProperty("sun.awt.exception.handler", CoserExceptionHandler.class.getName());
- // OpenMap sysout
- MapBean.suppressCopyright = true;
-
- // catch wall application exception
- launch(coserConfig);
-
- // catch uncaught exceptions
- Thread.setDefaultUncaughtExceptionHandler(new CoserExceptionHandler());
- System.setProperty("sun.awt.exception.handler", CoserExceptionHandler.class.getName());
- }
-
- /**
- * Display main UI.
- *
- * @param coserConfig coser configuration
- */
- public static void launch(final CoserConfig coserConfig) {
-
- // to work in java webstart
- try {
- I18n.init(new DefaultI18nInitializer("coser-i18n"), coserConfig.getLocale());
- } catch (RuntimeException ex) {
- if (log.isErrorEnabled()) {
- log.error("Could not load coser i18n bundle", ex);
- }
- // fallback for dev mode
- I18n.init(new ClassPathI18nInitializer(), coserConfig.getLocale());
- }
-
// launch UI
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
- // ne to be done in Swing EDT (otherwize, don't work on javawebstart)
- // declare new classloader
- ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
- CoserClassLoader coserClassLoader = new CoserClassLoader(currentClassLoader);
- Thread.currentThread().setContextClassLoader(coserClassLoader);
- // set coser xwork validation file directory in classloader
- coserClassLoader.setValidatorsDirectory(coserConfig.getValidatorsDirectory());
+ CoserUIApplicationContext applicationContext = CoserUIApplicationContext.init();
- // init LAF (from configuration)
- try {
- String lafClassName = coserConfig.getLookAndFeel();
- for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
- if (laf.getClassName().equalsIgnoreCase(lafClassName)) {
- UIManager.setLookAndFeel(laf.getClassName());
- }
- }
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't init look and feel", ex);
- }
- }
-
- // update font size (after laf)
- coserConfig.updateSwingFont();
-
- File coserConfigDirectory = new File(coserConfig.getUserConfigDirectory(), "coser");
- coserConfigDirectory.mkdirs();
- File mainFrameFile = new File(coserConfigDirectory, "session.xml");
- SwingSession session = new SwingSession(mainFrameFile, true);
-
// define unique context global values
DefaultApplicationContext context = new DefaultApplicationContext();
- context.setContextValue(coserConfig);
- context.setContextValue(session);
- context.setContextValue(new ProjectService(coserConfig));
- context.setContextValue(new CommandService(coserConfig));
- context.setContextValue(new ControlService(coserConfig));
- context.setContextValue(new PublicationService(coserConfig));
-// context.setContextValue(new WebService(coserConfig));
- context.setContextValue(new ClientResultService(coserConfig));
- context.setContextValue(new DefaultCoserApplicationContext(coserConfig));
+ context.setContextValue(applicationContext);
+ //FIXME Remove this and use directly the application context
+ context.setContextValue(applicationContext.getConfig());
+ //FIXME Remove this and use directly the application context
+ context.setContextValue(applicationContext.getSession());
+ //FIXME Remove this and use directly the application context
+ context.setContextValue(applicationContext.getProjectService());
+ //FIXME Remove this and use directly the application context
+ context.setContextValue(applicationContext.getCommandService());
+ //FIXME Remove this and use directly the application context
+ context.setContextValue(applicationContext.getControlService());
+ //FIXME Remove this and use directly the application context
+ context.setContextValue(applicationContext.getPublicationService());
+ //FIXME Remove this and use directly the application context
+ context.setContextValue(applicationContext.getClientResultService());
// init frame with session reloading
CoserFrame frame = new CoserFrame(context);
frame.setLocationRelativeTo(null);
- session.add(frame);
+ applicationContext.getSession().add(frame);
frame.setVisible(true);
}
});
}
+// /**
+// * Display main UI.
+// *
+// * @param coserConfig coser configuration
+// */
+// public static void launch(final CoserConfig coserConfig) {
+//
+// // to work in java webstart
+// try {
+// I18n.init(new DefaultI18nInitializer("coser-i18n"), coserConfig.getLocale());
+// } catch (RuntimeException ex) {
+// if (log.isErrorEnabled()) {
+// log.error("Could not load coser i18n bundle", ex);
+// }
+// // fallback for dev mode
+// I18n.init(new ClassPathI18nInitializer(), coserConfig.getLocale());
+// }
+//
+// // launch UI
+// SwingUtilities.invokeLater(new Runnable() {
+// @Override
+// public void run() {
+//
+// CoserConfig coserConfig = applicationContext.getConfig();
+//
+// // ne to be done in Swing EDT (otherwize, don't work on javawebstart)
+// // declare new classloader
+// ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
+// CoserClassLoader coserClassLoader = new CoserClassLoader(currentClassLoader);
+// Thread.currentThread().setContextClassLoader(coserClassLoader);
+// // set coser xwork validation file directory in classloader
+// coserClassLoader.setValidatorsDirectory(coserConfig.getValidatorsDirectory());
+//
+// // init LAF (from configuration)
+// try {
+// String lafClassName = coserConfig.getLookAndFeel();
+// for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
+// if (laf.getClassName().equalsIgnoreCase(lafClassName)) {
+// UIManager.setLookAndFeel(laf.getClassName());
+// }
+// }
+// } catch (Exception ex) {
+// if (log.isErrorEnabled()) {
+// log.error("Can't init look and feel", ex);
+// }
+// }
+//
+// // update font size (after laf)
+// coserConfig.updateSwingFont();
+//
+// File coserConfigDirectory = new File(coserConfig.getUserConfigDirectory(), "coser");
+// try {
+// FileUtils.forceMkdir(coserConfigDirectory);
+// } catch (IOException e) {
+// throw new CoserTechnicalException("Could not create user data directory", e);
+// }
+// File mainFrameFile = new File(coserConfigDirectory, "session.xml");
+// SwingSession session = new SwingSession(mainFrameFile, true);
+//
+// // define unique context global values
+// DefaultApplicationContext context = new DefaultApplicationContext();
+// context.setContextValue(coserConfig);
+// context.setContextValue(session);
+// context.setContextValue(new ProjectService(coserConfig));
+// context.setContextValue(new CommandService(coserConfig));
+// context.setContextValue(new ControlService(coserConfig));
+// context.setContextValue(new PublicationService(coserConfig));
+//// context.setContextValue(new WebService(coserConfig));
+// context.setContextValue(new ClientResultService(coserConfig));
+// context.setContextValue(new DefaultCoserApplicationContext(coserConfig));
+//
+// // init frame with session reloading
+// CoserFrame frame = new CoserFrame(context);
+// frame.setLocationRelativeTo(null);
+// session.add(frame);
+//
+// frame.setVisible(true);
+// }
+// });
+// }
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -30,7 +30,7 @@
import javax.swing.plaf.FontUIResource;
import java.awt.Font;
-import static org.nuiton.i18n.I18n.t;
+import static org.nuiton.i18n.I18n.n;
/**
* Coser application configuration.
@@ -93,12 +93,12 @@
public static enum CoserOption implements ConfigOptionDef {
- CONFIG_FILE(CONFIG_FILE_NAME, t("coser.config.config.file.description"), "coser.properties", String.class, true, true),
- LOOKANDFEEL("coser.lookandfeel", t("coser.config.lookandfeel.description"), null, String.class, false, false),
- APPLICATION_VERSION("coser.application.version", t("coser.config.application.version.description"), null, String.class, false, false),
- SUPPORT_EMAIL("coser.support.email", t("coser.config.support.email.description"), "support(a)codelutin.com", String.class, false, false),
- WEBSITE_URL("coser.website", t("coser.config.website.description"), "https://doc.codelutin.com/coser/", String.class, false, false),
- SWING_FONT_SIZE("coser.swingfontsize", t("coser.config.swingfontsize.description"), "12", Integer.class, false, false);
+ CONFIG_FILE(CONFIG_FILE_NAME, n("coser.config.config.file.description"), "coser.properties", String.class, true, true),
+ LOOKANDFEEL("coser.lookandfeel", n("coser.config.lookandfeel.description"), null, String.class, false, false),
+ APPLICATION_VERSION("coser.application.version", n("coser.config.application.version.description"), null, String.class, false, false),
+ SUPPORT_EMAIL("coser.support.email", n("coser.config.support.email.description"), "support(a)codelutin.com", String.class, false, false),
+ WEBSITE_URL("coser.website", n("coser.config.website.description"), "https://doc.codelutin.com/coser/", String.class, false, false),
+ SWING_FONT_SIZE("coser.swingfontsize", n("coser.config.swingfontsize.description"), "12", Integer.class, false, false);
private final String key;
Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserUIApplicationContext.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserUIApplicationContext.java (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserUIApplicationContext.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,188 @@
+package fr.ifremer.coser;
+
+/*
+ * #%L
+ * Coser :: UI
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.bbn.openmap.MapBean;
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.services.ClientResultService;
+import fr.ifremer.coser.services.CommandService;
+import fr.ifremer.coser.services.ControlService;
+import fr.ifremer.coser.services.ProjectService;
+import fr.ifremer.coser.services.PublicationService;
+import jaxx.runtime.swing.session.SwingSession;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.i18n.I18n;
+import org.nuiton.i18n.init.ClassPathI18nInitializer;
+import org.nuiton.i18n.init.DefaultI18nInitializer;
+
+import javax.swing.UIManager;
+import java.awt.EventQueue;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Coser UI Application context.
+ * <p/>
+ * Created on 3/23/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserUIApplicationContext extends DefaultCoserApplicationContext {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(CoserUIApplicationContext.class);
+
+ /**
+ * Shared application context.
+ */
+ protected static CoserUIApplicationContext context;
+
+ public static CoserUIApplicationContext get() {
+ Preconditions.checkState(context != null, "Application was not initialized!");
+ return context;
+ }
+
+ public static CoserUIApplicationContext init() {
+
+ Preconditions.checkState(EventQueue.isDispatchThread(), "Must init application context from Swing EDT Thread");
+
+ context = new CoserUIApplicationContext();
+
+ CoserConfig config = context.getConfig();
+
+ // to work in java webstart
+ try {
+ I18n.init(new DefaultI18nInitializer("coser-i18n"), config.getLocale());
+ } catch (RuntimeException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Could not load coser i18n bundle", ex);
+ }
+ // fallback for dev mode
+ I18n.init(new ClassPathI18nInitializer(), config.getLocale());
+ }
+
+ // OpenMap sysout
+ MapBean.suppressCopyright = true;
+
+ // need to be done in Swing EDT (otherwize, don't work on javawebstart)
+ // declare new classloader
+ ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
+ CoserClassLoader coserClassLoader = new CoserClassLoader(currentClassLoader);
+ Thread.currentThread().setContextClassLoader(coserClassLoader);
+ // set coser xwork validation file directory in classloader
+ coserClassLoader.setValidatorsDirectory(config.getValidatorsDirectory());
+
+ // init LAF (from configuration)
+ try {
+ String lafClassName = config.getLookAndFeel();
+ for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
+ if (laf.getClassName().equalsIgnoreCase(lafClassName)) {
+ UIManager.setLookAndFeel(laf.getClassName());
+ }
+ }
+ } catch (Exception ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't init look and feel", ex);
+ }
+ }
+
+ // update font size (after laf)
+ config.updateSwingFont();
+
+ File coserConfigDirectory = new File(config.getUserConfigDirectory(), "coser");
+ try {
+ FileUtils.forceMkdir(coserConfigDirectory);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not create user data directory", e);
+ }
+ File mainFrameFile = new File(coserConfigDirectory, "session.xml");
+
+ context.session = new SwingSession(mainFrameFile, true);
+
+ // catch wall application exception
+ // catch uncaught exceptions
+ Thread.setDefaultUncaughtExceptionHandler(new CoserExceptionHandler());
+ System.setProperty("sun.awt.exception.handler", CoserExceptionHandler.class.getName());
+
+ return context;
+ }
+
+ public static void close() {
+ context = null;
+ }
+
+ protected SwingSession session;
+
+ protected CommandService commandService;
+
+ protected ProjectService projectService;
+
+ protected ControlService controlService;
+
+ protected PublicationService publicationService;
+
+ protected ClientResultService clientResultService;
+
+ public SwingSession getSession() {
+ return session;
+ }
+
+ public CommandService getCommandService() {
+ return commandService;
+ }
+
+ public ProjectService getProjectService() {
+ return projectService;
+ }
+
+ public ControlService getControlService() {
+ return controlService;
+ }
+
+ public PublicationService getPublicationService() {
+ return publicationService;
+ }
+
+ public ClientResultService getClientResultService() {
+ return clientResultService;
+ }
+
+ protected CoserUIApplicationContext() {
+ super(new CoserConfig());
+
+ projectService = new ProjectService(config);
+ commandService = new CommandService(config);
+ controlService = new ControlService(config);
+ publicationService = new PublicationService(config);
+ clientResultService = new ClientResultService(config);
+ }
+
+ @Override
+ public CoserConfig getConfig() {
+ return (CoserConfig) config;
+ }
+
+}
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserUIApplicationContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
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 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -289,7 +289,7 @@
validatorDialog.setLocationRelativeTo(view);
// restore session size
- SwingSession session = (SwingSession)view.getContextValue(SwingSession.class);
+ SwingSession session = view.getContextValue(SwingSession.class);
session.add(validatorDialog);
validatorDialog.setVisible(true);
@@ -395,7 +395,7 @@
controlHandler.init(controlView);
// restore session size
- SwingSession session = (SwingSession)view.getContextValue(SwingSession.class);
+ SwingSession session = view.getContextValue(SwingSession.class);
session.add(controlView);
setMainComponent(controlView);
@@ -434,7 +434,7 @@
handler.initSelection(selectionView);
// restore session size
- SwingSession session = (SwingSession)view.getContextValue(SwingSession.class);
+ SwingSession session = view.getContextValue(SwingSession.class);
session.add(selectionView);
// fix la restauration de la selection
@@ -505,7 +505,7 @@
handler.reloadSelection(selectionView);
// restore session size
- SwingSession session = (SwingSession)view.getContextValue(SwingSession.class);
+ SwingSession session = view.getContextValue(SwingSession.class);
session.add(selectionView);
// selection du bon onglet
@@ -549,7 +549,7 @@
// incohérent
showSummaryView();
- SelectionReplayView replayView = new SelectionReplayView((JAXXContext)view, view);
+ SelectionReplayView replayView = new SelectionReplayView(view, view);
SelectionReplayHandler handler = replayView.getHandler();
handler.initReplayView(replayView);
replayView.setLocationRelativeTo(view);
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -76,7 +76,7 @@
MatrixND matrix = projectService.getLengthStructure(project, container);
// close previous opened
- JFrame previousFrame = (JFrame)((JAXXContext)parent).getContextValue(JFrame.class, "lengthstructureframe");
+ JFrame previousFrame = ((JAXXContext)parent).getContextValue(JFrame.class, "lengthstructureframe");
if (previousFrame != null) {
previousFrame.dispose();
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -997,7 +997,7 @@
List<String> species = CoserUtils.sortCollectionWithMapKeys(project.getRefTaxSpeciesMap(), charts.keySet());
// close previous opened
- JFrame previousFrame = (JFrame)view.getContextValue(JFrame.class, "comparenumberframe");
+ JFrame previousFrame = view.getContextValue(JFrame.class, "comparenumberframe");
if (previousFrame != null) {
previousFrame.dispose();
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2014-03-23 13:32:50 UTC (rev 1162)
@@ -61,7 +61,7 @@
<JLabel text="coser.ui.project.projectname" />
</cell>
<cell>
- <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getProjectsDirectory().getAbsolutePath() + java.io.File.separator}' />
+ <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getRSufiProjectsDirectory().getAbsolutePath() + java.io.File.separator}' />
</cell>
<cell anchor="west" weightx="1" fill="horizontal">
<JTextField id="projectProjectName" text="{getProject().getName()}" />
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2014-03-23 13:32:50 UTC (rev 1162)
@@ -45,7 +45,7 @@
<JLabel text="coser.ui.project.projectname" />
</cell>
<cell>
- <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getProjectsDirectory().getAbsolutePath() + java.io.File.separator}' />
+ <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getRSufiProjectsDirectory().getAbsolutePath() + java.io.File.separator}' />
</cell>
<cell anchor="west" weightx="1" fill="horizontal">
<JTextField id="projectProjectName" enabled="false" text="{getProject().getName()}" />
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -98,7 +98,7 @@
*/
public void selectInputFile(ProjectCreationView projectView, JTextField textComponent) {
CoserConfig config = projectView.getContextValue(CoserConfig.class);
- JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory());
+ JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory());
selectFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result = selectFileChooser.showOpenDialog(projectView);
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx 2014-03-23 13:32:50 UTC (rev 1162)
@@ -30,7 +30,7 @@
<JLabel text="coser.ui.project.project" />
</cell>
<cell anchor="north">
- <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getProjectsDirectory().getAbsolutePath() + java.io.File.separator}' />
+ <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getRSufiProjectsDirectory().getAbsolutePath() + java.io.File.separator}' />
</cell>
<cell fill="both" weightx="1">
<JScrollPane>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx 2014-03-23 13:32:50 UTC (rev 1162)
@@ -32,7 +32,7 @@
<JLabel text="coser.ui.project.summary.path" />
</cell>
<cell anchor="west" weightx="1" fill="horizontal">
- <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getProjectsDirectory().getAbsolutePath() + java.io.File.separator + getProject().getName()}' />
+ <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getRSufiProjectsDirectory().getAbsolutePath() + java.io.File.separator + getProject().getName()}' />
</cell>
</row>
<row>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -124,6 +124,8 @@
// auto-select publish map
view.getSelectedResultTableModel().getMapResults().add(resultData);
+ // auto-select publish raw data
+ view.getSelectedResultTableModel().getPublishDataResults().add(resultData);
}
}
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -103,21 +103,24 @@
String result = null;
switch (column) {
case 0:
- result = t("coser.ui.uploadresult.creationDate");
+ result = t("coser.ui.uploadresult.resultType");
break;
case 1:
- result = t("coser.ui.uploadresult.path");
+ result = t("coser.ui.uploadresult.creationDate");
break;
case 2:
- result = t("coser.ui.uploadresult.zone");
+ result = t("coser.ui.uploadresult.path");
break;
case 3:
- result = t("coser.ui.uploadresult.indicatorResult");
+ result = t("coser.ui.uploadresult.zone");
break;
case 4:
- result = t("coser.ui.uploadresult.mapResult");
+ result = t("coser.ui.uploadresult.indicatorResult");
break;
case 5:
+ result = t("coser.ui.uploadresult.mapResult");
+ break;
+ case 6:
result = t("coser.ui.uploadresult.publishData");
break;
}
@@ -129,16 +132,16 @@
Class<?> result = null;
switch (columnIndex) {
case 0:
- result = Date.class;
+ result = String.class;
break;
case 1:
- result = String[].class;
+ result = Date.class;
break;
case 2:
- result = String.class;
+ result = String[].class;
break;
case 3:
- result = Boolean.class;
+ result = String.class;
break;
case 4:
result = Boolean.class;
@@ -146,15 +149,18 @@
case 5:
result = Boolean.class;
break;
+ case 6:
+ result = Boolean.class;
+ break;
}
return result;
}
@Override
public int getColumnCount() {
- int result = 3;
+ int result = 4;
if (selected) {
- result = 6;
+ result = 7;
}
return result;
}
@@ -167,21 +173,24 @@
GlobalResult data = resultPaths.get(rowIndex);
switch (columnIndex) {
case 0:
- result = data.getCreationDate();
+ result = data.isRsufi() ? "RSufi" : "EchoBase";
break;
case 1:
- result = data;
+ result = data.getCreationDate();
break;
case 2:
- result = data.getZone();
+ result = data;
break;
case 3:
- result = indicatorResults.contains(data);
+ result = data.getZone();
break;
case 4:
- result = mapResults.contains(data);
+ result = indicatorResults.contains(data);
break;
case 5:
+ result = mapResults.contains(data);
+ break;
+ case 6:
result = publishDataResults.contains(data);
break;
}
@@ -194,17 +203,7 @@
GlobalResult data = resultPaths.get(rowIndex);
- boolean editable;
- if (data.isEchoBase()) {
-
- // can only edit publish data column
- editable = columnIndex >= 5;
- } else {
-
- // can edit indicator - map and publish data columns
- editable = columnIndex >= 3;
- }
-
+ boolean editable = !data.isEchoBase() && columnIndex >= 4;
return editable;
}
@@ -213,21 +212,21 @@
GlobalResult data = resultPaths.get(rowIndex);
- if (columnIndex == 3) {
+ if (columnIndex == 4) {
Boolean bValue = (Boolean) aValue;
if (bValue) {
indicatorResults.add(data);
} else {
indicatorResults.remove(data);
}
- } else if (columnIndex == 4) {
+ } else if (columnIndex == 5) {
Boolean bValue = (Boolean) aValue;
if (bValue) {
mapResults.add(data);
} else {
mapResults.remove(data);
}
- } else if (columnIndex == 5) {
+ } else if (columnIndex == 6) {
Boolean bValue = (Boolean) aValue;
if (bValue) {
publishDataResults.add(data);
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultZoneRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultZoneRenderer.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultZoneRenderer.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -59,7 +59,7 @@
}
Object localValue = value;
- if (value != null && value instanceof String) {
+ if (column > 0 && value != null && value instanceof String) {
String zoneId = (String) value;
localValue = zoneMap.getZoneFullName(zoneId);
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -273,7 +273,7 @@
*/
public void selectExportDirectory(ExportUploadDialog view, JTextField textComponent) {
CoserConfig config = view.getContextValue(CoserConfig.class);
- JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory());
+ JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory());
selectFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int result = selectFileChooser.showOpenDialog(view);
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 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -1154,7 +1154,7 @@
List<String> species = view.getSelectionSizeAllYearListModel().getSpecies();
// close previous opened
- JFrame previousFrame = (JFrame)view.getContextValue(JFrame.class, "comparenumberframe");
+ JFrame previousFrame = view.getContextValue(JFrame.class, "comparenumberframe");
if (previousFrame != null) {
previousFrame.dispose();
}
@@ -1234,7 +1234,7 @@
List<String> selectedSpecies = new ArrayList<String>(view.getSelectedSpeciesListModel().getSpecies());
Object[] selectedSelectedSpecies = view.getSelectedSpeciesList().getSelectedValues();
for (Object singleSelectedSelectedSpecies : selectedSelectedSpecies) {
- selectedSpecies.remove((String)singleSelectedSelectedSpecies);
+ selectedSpecies.remove(singleSelectedSelectedSpecies);
filteredSpecies.add((String)singleSelectedSelectedSpecies);
}
@@ -1476,7 +1476,7 @@
*/
public void selectResultFile(SelectionAddResultDialog view, JTextField textComponent) {
CoserConfig config = view.getContextValue(CoserConfig.class);
- JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory());
+ JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory());
selectFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result = selectFileChooser.showOpenDialog(view);
@@ -1494,7 +1494,7 @@
*/
public void selectMapsDirectory(SelectionAddResultDialog view, JTextField textComponent) {
CoserConfig config = view.getContextValue(CoserConfig.class);
- JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory());
+ JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory());
selectFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int result = selectFileChooser.showOpenDialog(view);
@@ -1512,7 +1512,7 @@
*/
public void selectResultFileOrDirectory(SelectionAddResultDialog view, JList listComponent) {
CoserConfig config = view.getContextValue(CoserConfig.class);
- JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory());
+ JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory());
selectFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int result = selectFileChooser.showOpenDialog(view);
@@ -1530,7 +1530,7 @@
*/
public void selectResultFileOrDirectory(SelectionEditResultDialog view, JList listComponent) {
CoserConfig config = view.getContextValue(CoserConfig.class);
- JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory());
+ JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory());
selectFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int result = selectFileChooser.showOpenDialog(view);
@@ -1548,7 +1548,7 @@
*/
public void selectResultFileOrDirectory(SelectionFilesView view, JList listComponent) {
CoserConfig config = view.getContextValue(CoserConfig.class);
- JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory());
+ JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory());
selectFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int result = selectFileChooser.showOpenDialog(view);
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -63,7 +63,7 @@
double occurrence = model.getOccurrence(species);
double density = model.getDensity(species);
- String speciesText = (String)species;
+ String speciesText = species;
if (reftaxSpecies.containsKey(species)) {
speciesText = reftaxSpecies.get(species);
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -136,7 +136,7 @@
}
this.selected = num;
for (int i = 0; i < children.size(); i++) {
- AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) children
+ AccordionPaneSubPanel subPanel = children
.get(i);
// subPanel.child.setVisible ( i == num
// || ( i == this.previouslySelected && showAnimation ) );
@@ -212,7 +212,7 @@
* the new title for the specified pane.
*/
public void setTitleAt(int index, String newTitle) {
- AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
+ AccordionPaneSubPanel subPanel = this.children
.get(index);
subPanel.titleLabel.setText(newTitle);
}
@@ -225,7 +225,7 @@
* @return the text title of the specified pane
*/
public String getTitleAt(int index) {
- AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
+ AccordionPaneSubPanel subPanel = this.children
.get(index);
return subPanel.titleLabel.getText();
}
@@ -237,7 +237,7 @@
* @param icon
*/
public void setIconAt(int index, Icon icon) {
- AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
+ AccordionPaneSubPanel subPanel = this.children
.get(index);
subPanel.titleLabel.setIcon(icon);
}
@@ -250,7 +250,7 @@
* @return component
*/
public Component getComponentAt(int index) {
- AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
+ AccordionPaneSubPanel subPanel = this.children
.get(index);
return subPanel.child;
}
@@ -261,7 +261,7 @@
* @return the currently selected component
*/
public Component getSelectedComponent() {
- AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
+ AccordionPaneSubPanel subPanel = this.children
.get(this.selected);
return subPanel.child;
}
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 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2014-03-23 13:32:50 UTC (rev 1162)
@@ -299,6 +299,7 @@
coser.ui.uploadresult.path=Result path
coser.ui.uploadresult.publishData=Allow source data
coser.ui.uploadresult.removeResults=Remove results
+coser.ui.uploadresult.resultType=Result type
coser.ui.uploadresult.resultsextracted=Result extracted.
coser.ui.uploadresult.resultsuploaded=Results published.
coser.ui.uploadresult.resultsuploaderror=Result upload fails for reason \: %s
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 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2014-03-23 13:32:50 UTC (rev 1162)
@@ -299,6 +299,7 @@
coser.ui.uploadresult.path=Chemin du résultats
coser.ui.uploadresult.publishData=Autoriser les données de base
coser.ui.uploadresult.removeResults=Supprimer le résultat
+coser.ui.uploadresult.resultType=Type
coser.ui.uploadresult.resultsextracted=Résultats extraits.
coser.ui.uploadresult.resultsuploaded=Résultats publiés.
coser.ui.uploadresult.resultsuploaderror=Echec de l'envoi des résultats pour la raison \: %s
Modified: trunk/coser-web/pom.xml
===================================================================
--- trunk/coser-web/pom.xml 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/pom.xml 2014-03-23 13:32:50 UTC (rev 1162)
@@ -98,6 +98,11 @@
<scope>runtime</scope>
</dependency>
<dependency>
+ <groupId>org.apache.struts</groupId>
+ <artifactId>struts2-json-plugin</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</dependency>
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -25,7 +25,7 @@
import org.nuiton.config.ConfigOptionDef;
import org.nuiton.util.Version;
-import static org.nuiton.i18n.I18n.t;
+import static org.nuiton.i18n.I18n.n;
/**
* Coser web configuration.
@@ -94,12 +94,12 @@
CONTEXT_NAME(APP_NAME, null, String.class, "coser"),
// see : http://www.nuiton.org/issues/1862
ENCODING_HACK(CONTEXT_NAME.getDefaultValue() + "." + CONFIG_ENCODING, null, String.class, "UTF-8"),
- CONFIG_FILE(CONTEXT_NAME.defaultValue + "." + CONFIG_FILE_NAME, t("coser.config.config.file.description"), String.class, "coserweb.properties"),
- APPLICATION_VERSION("coser.application.version", t("coser.config.application.version.description"), Version.class, null),
- ADMIN_EMAIL("coser.admin.email", t("coser.config.config.file.description"), String.class, "harmonie(a)ifremer.fr"),
- ADMIN_LOGIN("coser.admin.login", t("coser.config.admin.login.description"), String.class, null),
- ADMIN_PASSWORD("coser.admin.password", t("coser.config.admin.password.description"), String.class, null),
- ANALYTICS_ID("coser.analytics.id", t("coser.config.analytics.id.description"), String.class, "UA-27739588-1");
+ CONFIG_FILE(CONTEXT_NAME.defaultValue + "." + CONFIG_FILE_NAME, n("coser.config.config.file.description"), String.class, "coserweb.properties"),
+ APPLICATION_VERSION("coser.application.version", n("coser.config.application.version.description"), Version.class, null),
+ ADMIN_EMAIL("coser.admin.email", n("coser.config.config.file.description"), String.class, "harmonie(a)ifremer.fr"),
+ ADMIN_LOGIN("coser.admin.login", n("coser.config.admin.login.description"), String.class, null),
+ ADMIN_PASSWORD("coser.admin.password", n("coser.config.admin.password.description"), String.class, null),
+ ANALYTICS_ID("coser.analytics.id", n("coser.config.analytics.id.description"), String.class, "UA-27739588-1");
private final String key;
Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -1,80 +0,0 @@
-/*
- * #%L
- * Coser :: Web
- * %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-
-package fr.ifremer.coser.web;
-
-import java.util.Locale;
-
-import org.nuiton.i18n.I18n;
-import org.nuiton.config.ArgumentsParserException;
-
-import fr.ifremer.coser.services.WebService;
-
-/**
- * Coser service singleton factory.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-@Deprecated
-public class ServiceFactory {
-
- protected static CoserWebConfig coserConfig;
-
- protected static WebService webService;
-
- static {
- // on a pas trop de locale là :(
- I18n.init(null, (Locale)null);
- }
-
- /**
- * Get application config configuration.
- *
- * @return configuration
- */
- public static synchronized CoserWebConfig getCoserConfig() {
- if (coserConfig == null) {
- coserConfig = new CoserWebConfig();
- try {
- coserConfig.parse();
- } catch (ArgumentsParserException ex) {
- throw new CoserWebException("Can't read configuration", ex);
- }
- }
- return coserConfig;
- }
-
- /**
- * Get web service.
- *
- * @return web service
- */
- public static synchronized WebService getWebService() {
- if (webService == null) {
- webService = new WebService(getCoserConfig());
- }
- return webService;
- }
-}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -22,6 +22,9 @@
*/
import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
+import com.opensymphony.xwork2.ActionSupport;
+import fr.ifremer.coser.bean.ZoneMap;
import fr.ifremer.coser.result.CoserRequest;
import fr.ifremer.coser.result.CoserRequestContext;
import fr.ifremer.coser.result.repository.ResultRepositoryType;
@@ -30,12 +33,12 @@
import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.services.WebResultService;
-import fr.ifremer.coser.web.actions.common.CoserAction;
import java.io.File;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Set;
/**
* Wrap any call to business layer.
@@ -48,13 +51,13 @@
//TODO Inject this in action
public class ServiceHelper {
- protected final CoserAction action;
+ protected final ActionSupport action;
protected final CoserWebApplicationContext applicationContext;
protected final WebResultService webResultService;
- public ServiceHelper(CoserAction action) {
+ public ServiceHelper(ActionSupport action) {
Preconditions.checkNotNull(action);
this.applicationContext = CoserWebApplicationContext.get();
this.action = action;
@@ -82,6 +85,17 @@
return applicationContext.getZoneMap().getZoneByFacade();
}
+ public Map<String, String> getZonesForFacade(String facade) {
+ ZoneMap zoneMap = applicationContext.getZoneMap();
+ List<String> zoneIds = zoneMap.getZonesForFacade(facade);
+ Map<String, String> map = Maps.newHashMap();
+ for (String zoneId : zoneIds) {
+ String zoneName = zoneMap.getZoneFullNameWithNoFacade(zoneId);
+ map.put(zoneId, zoneName);
+ }
+ return map;
+ }
+
public Map<String, String> getZonePictures() {
return applicationContext.getZoneMap().getZonePictures();
}
@@ -114,6 +128,10 @@
// --- Indicator methods ----------------------------------------------- //
// --------------------------------------------------------------------- //
+ public Set<String> getIndicatorIds() {
+ return applicationContext.getIndicatorMap().getIds();
+ }
+
public String getIndicatorDisplayName(CoserRequest request, String indicator) {
Map<String, String> availableIndicators = toMap(request);
String displayName = availableIndicators.get(indicator);
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
/**
* Documents action.
@@ -32,7 +32,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class DocumentsAction extends CoserAction {
+public class DocumentsAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
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 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import org.apache.struts2.ServletActionContext;
import javax.servlet.http.HttpServletRequest;
@@ -36,7 +36,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class IndexAction extends CoserAction {
+public class IndexAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -34,7 +34,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class LocaleAction extends CoserAction {
+public class LocaleAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
/**
* Quality action.
@@ -32,7 +32,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class QualityAction extends CoserAction {
+public class QualityAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
/**
* Survey description action.
@@ -32,7 +32,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class SurveyAction extends CoserAction {
+public class SurveyAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = -7450643911834502103L;
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 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -22,7 +22,7 @@
package fr.ifremer.coser.web.actions;
import fr.ifremer.coser.web.CoserWebConfig;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class UploadResultAction extends CoserAction {
+public class UploadResultAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3887268253160622587L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -23,32 +23,24 @@
import fr.ifremer.coser.result.ResultType;
import fr.ifremer.coser.result.request.DeleteResultsRequest;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.struts2.convention.annotation.InterceptorRef;
-import org.apache.struts2.convention.annotation.InterceptorRefs;
-import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import java.util.List;
/**
* Project list action.
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*
* @author chatellier
* @version $Revision$
- * <p/>
- * Last update : $Date$
- * By : $Author$
*/
-@ParentPackage("admin")
-@InterceptorRefs({
- @InterceptorRef("loginInterceptor"),
- @InterceptorRef("defaultStack")
- })
-@Result(name = "success", type = "redirect", location = "list-projects")
-public class DeleteProjectsAction extends CoserAction {
+@Result(type = "redirect", location = "list-projects")
+public class DeleteProjectsAction extends AbstractCoserAction {
/** serialVersionUID. */
private static final long serialVersionUID = 6024588562104111883L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -21,26 +21,18 @@
package fr.ifremer.coser.web.actions.admin;
-import fr.ifremer.coser.web.actions.common.CoserAction;
-import org.apache.struts2.convention.annotation.InterceptorRef;
-import org.apache.struts2.convention.annotation.InterceptorRefs;
-import org.apache.struts2.convention.annotation.ParentPackage;
+import fr.ifremer.coser.web.actions.common.AbstractCoserAction;
/**
* Admin index action.
*
+ * Last update : $Date$
+ * By : $Author$
+ *
* @author chatellier
* @version $Revision$
- * <p/>
- * Last update : $Date$
- * By : $Author$
*/
-@ParentPackage("admin")
-@InterceptorRefs({
- @InterceptorRef("loginInterceptor"),
- @InterceptorRef("defaultStack")
- })
-public class IndexAction extends CoserAction {
+public class IndexAction extends AbstractCoserAction {
/** serialVersionUID. */
private static final long serialVersionUID = 6024588562104111883L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -26,12 +26,9 @@
import fr.ifremer.coser.result.repository.ResultRepositoryType;
import fr.ifremer.coser.result.request.GetAllResultsRequest;
import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserAction;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.struts2.convention.annotation.InterceptorRef;
-import org.apache.struts2.convention.annotation.InterceptorRefs;
-import org.apache.struts2.convention.annotation.ParentPackage;
import java.util.List;
import java.util.Map;
@@ -40,18 +37,13 @@
/**
* Project list action.
*
+ * Last update : $Date$
+ * By : $Author$
+ *
* @author chatellier
* @version $Revision$
- * <p/>
- * Last update : $Date$
- * By : $Author$
*/
-@ParentPackage("admin")
-@InterceptorRefs({
- @InterceptorRef("loginInterceptor"),
- @InterceptorRef("defaultStack")
- })
-public class ListProjectsAction extends CoserAction {
+public class ListProjectsAction extends AbstractCoserAction {
/** serialVersionUID. */
private static final long serialVersionUID = 6024588562104111883L;
Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -1,40 +0,0 @@
-/*
- * #%L
- * Coser :: Web
- * %%
- * 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 Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-
-package fr.ifremer.coser.web.actions.admin;
-
-import fr.ifremer.coser.web.actions.common.CoserAction;
-
-/**
- * Login action.
- *
- * @author chatellier
- * @version $Revision$
- * <p/>
- * Last update : $Date$
- * By : $Author$
- */
-public class LoginAction extends CoserAction {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = -1576602720835497842L;
-
-}
Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -1,73 +0,0 @@
-/*
- * #%L
- * Coser :: Web
- * %%
- * 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 Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-
-package fr.ifremer.coser.web.actions.admin;
-
-import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.interceptor.Interceptor;
-import org.apache.struts2.StrutsStatics;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-/**
- * Authentication interceptor.
- *
- * @author chatellier
- * @version $Revision$
- * <p/>
- * Last update : $Date$
- * By : $Author$
- */
-public class LoginInterceptor implements Interceptor {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = -5760224375232019437L;
-
- /*
- * @see com.opensymphony.xwork2.interceptor.Interceptor#init()
- */
- @Override
- public void init() {
-
- }
-
- public String intercept(ActionInvocation invocation) throws Exception {
- ActionContext context = invocation.getInvocationContext();
- HttpServletRequest request = (HttpServletRequest) context.get(StrutsStatics.HTTP_REQUEST);
- HttpSession session = request.getSession(true);
- Object login = session.getAttribute("login");
- if (login == null) {
- return "redirect-login";
- } else {
- return invocation.invoke();
- }
- }
-
- /*
- * @see com.opensymphony.xwork2.interceptor.Interceptor#destroy()
- */
- @Override
- public void destroy() {
-
- }
-}
Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -1,103 +0,0 @@
-/*
- * #%L
- * Coser :: Web
- * %%
- * Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-
-package fr.ifremer.coser.web.actions.admin;
-
-import fr.ifremer.coser.web.CoserWebConfig;
-import fr.ifremer.coser.web.actions.common.CoserAction;
-import org.apache.struts2.convention.annotation.Result;
-import org.apache.struts2.interceptor.SessionAware;
-import org.nuiton.util.StringUtil;
-
-import java.util.Map;
-
-/**
- * Perform login action.
- *
- * @author chatellier
- * @version $Revision$
- * <p/>
- * Last update : $Date$
- * By : $Author$
- */
-@Result(name = "success", type = "redirect", location = "index")
-public class PerformLoginAction extends CoserAction implements SessionAware {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = -1576602720835497842L;
-
- protected String login;
-
- protected String password;
-
- private Map<String, Object> session;
-
- public void setLogin(String login) {
- this.login = login;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- @Override
- public void setSession(Map<String, Object> session) {
- this.session = session;
- }
-
- @Override
- public String execute() throws Exception {
- CoserWebConfig config = getService().getConfig();
- if (config.getAdminLogin().equals(login) && equalsSHA1Password(config, password)) {
- session.put("login", login);
- return SUCCESS;
- } else {
- addActionError("Invalid login/password");
- return INPUT;
- }
- }
-
- /**
- * Check if sha1 password equals to config password.
- * <p/>
- * Config password can be plain or sha1 encoded.
- *
- * @param config config
- * @param password password to check
- * @return equality
- */
- protected boolean equalsSHA1Password(CoserWebConfig config, String password) {
-
- // first test sha1 equality
- String configSha1Password = config.getAdminPassword();
- String sha1Password = StringUtil.encodeSHA1(password);
- boolean result = configSha1Password.equals(sha1Password);
-
- // second test to encode sha1 of plain password
- if (!result) {
- configSha1Password = StringUtil.encodeSHA1(configSha1Password);
- result = configSha1Password.equals(sha1Password);
- }
-
- return result;
- }
-
-}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -21,27 +21,22 @@
* #L%
*/
-import fr.ifremer.coser.web.actions.common.CoserAction;
-import org.apache.struts2.convention.annotation.InterceptorRef;
-import org.apache.struts2.convention.annotation.InterceptorRefs;
-import org.apache.struts2.convention.annotation.ParentPackage;
+import fr.ifremer.coser.web.actions.common.AbstractCoserAction;
import org.apache.struts2.convention.annotation.Result;
/**
* To reload all projects from disk configuration.
* <p/>
* Created on 3/12/14.
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-@ParentPackage("admin")
-@InterceptorRefs({
- @InterceptorRef("loginInterceptor"),
- @InterceptorRef("defaultStack")
- })
-@Result(name = "success", type = "redirect", location = "list-projects")
-public class ReloadProjectsAction extends CoserAction {
+@Result(type = "redirect", location = "list-projects")
+public class ReloadProjectsAction extends AbstractCoserAction {
private static final long serialVersionUID = 1L;
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/package-info.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/package-info.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/package-info.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,7 @@
+/**
+ * Pakage for admin actions (need to be loggued in).
+ */
+@ParentPackage("admin")
+package fr.ifremer.coser.web.actions.admin;
+
+import org.apache.struts2.convention.annotation.ParentPackage;
\ No newline at end of file
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginAction.java (from rev 1161, trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java)
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginAction.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,38 @@
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * 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 Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+package fr.ifremer.coser.web.actions.auth;
+
+import fr.ifremer.coser.web.actions.common.AbstractCoserAction;
+
+/**
+ * Login action.
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
+ *
+ * @author chatellier
+ * @version $Revision$
+ */
+public class LoginAction extends AbstractCoserAction {
+
+ private static final long serialVersionUID = 1L;
+}
Copied: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginInterceptor.java (from rev 1161, trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java)
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginInterceptor.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginInterceptor.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,59 @@
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2011 Codelutin, Chatellier Eric, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+package fr.ifremer.coser.web.actions.auth;
+
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
+
+import java.util.Map;
+
+/**
+ * Authentication interceptor.
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
+ *
+ * @author chatellier
+ * @version $Revision$
+ */
+public class LoginInterceptor extends AbstractInterceptor {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String SESSION_PARAMETER_LOGIN = "login";
+
+ @Override
+ public String intercept(ActionInvocation invocation) throws Exception {
+ ActionContext context = invocation.getInvocationContext();
+ Map<String, Object> session = context.getSession();
+ Object login = session.get(SESSION_PARAMETER_LOGIN);
+ String result;
+ if (login == null) {
+ // do login
+ result = "redirect-login";
+ } else {
+ result = invocation.invoke();
+ }
+ return result;
+ }
+}
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LogoutAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LogoutAction.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LogoutAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,66 @@
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2011 Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+package fr.ifremer.coser.web.actions.auth;
+
+import fr.ifremer.coser.web.actions.common.AbstractCoserAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts2.convention.annotation.Result;
+import org.apache.struts2.interceptor.SessionAware;
+
+import java.util.Map;
+
+/**
+ * Logout action.
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
+ *
+ * @author tchemit
+ * @version $Revision$
+ */
+@Result(type = "redirect", location = "/index")
+public class LogoutAction extends AbstractCoserAction implements SessionAware {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(LogoutAction.class);
+
+ protected transient Map<String, Object> session;
+
+ @Override
+ public void setSession(Map<String, Object> session) {
+ this.session = session;
+ }
+
+ @Override
+ public String execute() throws Exception {
+ Object login = session.remove(LoginInterceptor.SESSION_PARAMETER_LOGIN);
+ if (login != null) {
+ if (log.isInfoEnabled()) {
+ log.info("Logout for user: " + login);
+ }
+ }
+ return SUCCESS;
+ }
+}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LogoutAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/PerformLoginAction.java (from rev 1161, trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java)
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/PerformLoginAction.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/PerformLoginAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,113 @@
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+package fr.ifremer.coser.web.actions.auth;
+
+import fr.ifremer.coser.web.CoserWebConfig;
+import fr.ifremer.coser.web.actions.common.AbstractCoserAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts2.convention.annotation.Result;
+import org.apache.struts2.interceptor.SessionAware;
+import org.nuiton.util.StringUtil;
+
+import java.util.Map;
+
+/**
+ * Perform login action.
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
+ *
+ * @author chatellier
+ * @version $Revision$
+ */
+@Result(type = "redirect", location = "/admin/index")
+public class PerformLoginAction extends AbstractCoserAction implements SessionAware {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(PerformLoginAction.class);
+
+ protected String login;
+
+ protected String password;
+
+ protected transient Map<String, Object> session;
+
+ public void setLogin(String login) {
+ this.login = login;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ @Override
+ public void setSession(Map<String, Object> session) {
+ this.session = session;
+ }
+
+ @Override
+ public String execute() throws Exception {
+ CoserWebConfig config = getService().getConfig();
+ String result;
+ if (config.getAdminLogin().equals(login) && equalsSHA1Password(config, password)) {
+ if (log.isInfoEnabled()) {
+ log.info("Successfull login: "+login);
+ }
+ session.put(LoginInterceptor.SESSION_PARAMETER_LOGIN, login);
+
+ result = SUCCESS;
+ } else {
+ addActionError("Invalid login/password");
+ result = INPUT;
+ }
+ return result;
+ }
+
+ /**
+ * Check if sha1 password equals to config password.
+ * <p/>
+ * Config password can be plain or sha1 encoded.
+ *
+ * @param config config
+ * @param password password to check
+ * @return equality
+ */
+ protected boolean equalsSHA1Password(CoserWebConfig config, String password) {
+
+ // first test sha1 equality
+ String configSha1Password = config.getAdminPassword();
+ String sha1Password = StringUtil.encodeSHA1(password);
+ boolean result = configSha1Password.equals(sha1Password);
+
+ // second test to encode sha1 of plain password
+ if (!result) {
+ configSha1Password = StringUtil.encodeSHA1(configSha1Password);
+ result = configSha1Password.equals(sha1Password);
+ }
+
+ return result;
+ }
+
+}
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/package-info.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/package-info.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/package-info.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,4 @@
+/**
+ * Package for auth actions (login-logout).
+ */
+package fr.ifremer.coser.web.actions.auth;
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -24,7 +24,7 @@
import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import java.util.Map;
@@ -39,7 +39,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class GraphAction extends CoserAction {
+public class GraphAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -24,7 +24,7 @@
import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.request.GetCommunityIndicatorResultGraphRequest;
import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.convention.annotation.Action;
@@ -44,7 +44,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class GraphDataAction extends CoserAction {
+public class GraphDataAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -24,7 +24,7 @@
import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.request.GetCommunityIndicatorResultDataRequest;
import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.convention.annotation.Action;
@@ -44,7 +44,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class GraphDownloadAction extends CoserAction {
+public class GraphDownloadAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserAction.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,75 @@
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.coser.web.actions.common;
+
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserRequestBuilder;
+import fr.ifremer.coser.web.ServiceHelper;
+import org.nuiton.web.struts2.BaseAction;
+
+import java.util.Locale;
+
+/**
+ * Created on 3/21/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public abstract class AbstractCoserAction extends BaseAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * To access business layer.
+ *
+ * @since 1.5
+ */
+ protected transient ServiceHelper service;
+
+ /**
+ * @return a new request builder.
+ * @since 1.5
+ */
+ protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(Class<R> requestType) {
+ return requestBuilder(getLocale(), requestType);
+ }
+
+ /**
+ * @param locale locale to use (while using execute and wait action we keep the locale in session...)
+ * @param requestType type of request to build
+ * @return a new request builder.
+ * @since 1.5
+ */
+ protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(Locale locale, Class<R> requestType) {
+ return CoserRequestBuilder.newBuilder(locale, requestType);
+ }
+
+ /**
+ * @return service helper for this action
+ * @since 1.5
+ */
+ protected ServiceHelper getService() {
+ if (service == null) {
+ service = new ServiceHelper(this);
+ }
+ return service;
+ }
+}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserJspAction.java (from rev 1157, trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java)
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserJspAction.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserJspAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,74 @@
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+package fr.ifremer.coser.web.actions.common;
+
+import fr.ifremer.coser.web.CoserWebConfig;
+
+/**
+ * Toutes les actions de type *Jsp* doivent étendre celle ci. Contient le code commun
+ * récurent, et notamment les actions utilisé par le layout et devant
+ * être presentes sur toutes les pages.
+ *
+ * @author chatellier
+ * @version $Revision$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
+ */
+public abstract class AbstractCoserJspAction extends AbstractCoserAction {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 311574866032741326L;
+
+ /**
+ * Recupere l'email dans la configuration.
+ *
+ * @return admin email
+ */
+ public String getAdminEmail() {
+ CoserWebConfig config = getService().getConfig();
+ String email = config.getAdminEmail();
+ return email;
+ }
+
+ /**
+ * Recupere l'email dans la configuration.
+ *
+ * @return admin email
+ */
+ public String getApplicationVersion() {
+ CoserWebConfig config = getService().getConfig();
+ String email = config.getApplicationVersion();
+ return email;
+ }
+
+ /**
+ * Get analytics id from configuration.
+ *
+ * @return analytics id
+ */
+ public String getAnalyticsId() {
+ CoserWebConfig config = getService().getConfig();
+ String id = config.getAnalyticsId();
+ return id;
+ }
+}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -32,7 +32,7 @@
* Last update : $Date$
* By : $Author$
*/
-public abstract class CommonFacade extends CoserAction {
+public abstract class CommonFacade extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -35,7 +35,7 @@
* Last update : $Date$
* By : $Author$
*/
-public abstract class CommonIndicator extends CoserAction {
+public abstract class CommonIndicator extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -35,7 +35,7 @@
* Last update : $Date$
* By : $Author$
*/
-public abstract class CommonZone extends CoserAction {
+public abstract class CommonZone extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -1,116 +0,0 @@
-/*
- * #%L
- * Coser :: Web
- * %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-
-package fr.ifremer.coser.web.actions.common;
-
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.CoserRequestBuilder;
-import fr.ifremer.coser.web.CoserWebConfig;
-import fr.ifremer.coser.web.ServiceHelper;
-import org.nuiton.web.struts2.BaseAction;
-
-import java.util.Locale;
-
-/**
- * Toutes les actions doivent étendre celle ci. Contient le code commun
- * récurent, et notamment les actions utilisé par le layout et devant
- * être presentes sur toutes les pages.
- *
- * @author chatellier
- * @version $Revision$
- * <p/>
- * Last update : $Date$
- * By : $Author$
- */
-public abstract class CoserAction extends BaseAction {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = 311574866032741326L;
-
- /**
- * To access business layer.
- *
- * @since 1.5
- */
- protected transient ServiceHelper service;
-
- /**
- * Recupere l'email dans la configuration.
- *
- * @return admin email
- */
- public String getAdminEmail() {
- CoserWebConfig config = getService().getConfig();
- String email = config.getAdminEmail();
- return email;
- }
-
- /**
- * Recupere l'email dans la configuration.
- *
- * @return admin email
- */
- public String getApplicationVersion() {
- CoserWebConfig config = getService().getConfig();
- String email = config.getApplicationVersion();
- return email;
- }
-
- /**
- * Get analytics id from configuration.
- *
- * @return analytics id
- */
- public String getAnalyticsId() {
- CoserWebConfig config = getService().getConfig();
- String id = config.getAnalyticsId();
- return id;
- }
-
- /**
- * @return a new request builder.
- * @since 1.5
- */
- protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(Class<R> requestType) {
- return requestBuilder(getLocale(), requestType);
- }
-
- /**
- * @param locale locale to use (while using execute and wait action we keep the locale in session...)
- * @param requestType type of request to build
- * @return a new request builder.
- * @since 1.5
- */
- protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(Locale locale, Class<R> requestType) {
- return CoserRequestBuilder.newBuilder(locale, requestType);
- }
-
- /**
- * @return service helper for this action
- * @since 1.5
- */
- protected ServiceHelper getService() {
- if (service == null) {
- service = new ServiceHelper(this);
- }
- return service;
- }
-}
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/AbstractCoserJsonAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/AbstractCoserJsonAction.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/AbstractCoserJsonAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,44 @@
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.coser.web.actions.json;
+
+import fr.ifremer.coser.web.actions.common.AbstractCoserAction;
+import org.apache.struts2.convention.annotation.ParentPackage;
+import org.apache.struts2.convention.annotation.Result;
+import org.apache.struts2.convention.annotation.Results;
+
+/**
+ * Json abstract action.
+ * <p/>
+ * Just define in your implementation the getter to expose.
+ * <p/>
+ * Created on 3/21/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+@ParentPackage("json-default")
+@Results({@Result(name = AbstractCoserJsonAction.SUCCESS, type = "json")})
+public abstract class AbstractCoserJsonAction extends AbstractCoserAction {
+
+ private static final long serialVersionUID = 1L;
+
+}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/AbstractCoserJsonAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetFacadesAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetFacadesAction.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetFacadesAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,47 @@
+package fr.ifremer.coser.web.actions.json;
+
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import java.util.Map;
+
+/**
+ * Get universe of facades.
+ * <p/>
+ * Created on 3/21/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetFacadesAction extends AbstractCoserJsonAction {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Map<String, String> data;
+
+ public Map<String, String> getData() {
+ if (data == null) {
+ data = getService().getFacades();
+ }
+ return data;
+ }
+
+}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetFacadesAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetIndicatorsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetIndicatorsAction.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetIndicatorsAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,47 @@
+package fr.ifremer.coser.web.actions.json;
+
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import java.util.Set;
+
+/**
+ * Get all indicator ids.
+ * <p/>
+ * Created on 3/21/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetIndicatorsAction extends AbstractCoserJsonAction {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Set<String> data;
+
+ public Set<String> getData() {
+ if (data == null) {
+ data = getService().getIndicatorIds();
+ }
+ return data;
+ }
+
+}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetIndicatorsAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetZonesForFacadeAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetZonesForFacadeAction.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetZonesForFacadeAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,56 @@
+package fr.ifremer.coser.web.actions.json;
+
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import java.util.Map;
+
+/**
+ * Get all zones for a given facade.
+ * <p/>
+ * Created on 3/21/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForFacadeAction extends AbstractCoserJsonAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Selected facade.
+ */
+ protected String facade;
+
+ protected Map<String, String> data;
+
+ public void setFacade(String facade) {
+ this.facade = facade;
+ }
+
+ public Map<String, String> getData() {
+ if (data == null) {
+ data = getService().getZonesForFacade(facade);
+ }
+ return data;
+ }
+
+}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetZonesForFacadeAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/package-info.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/package-info.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/package-info.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,26 @@
+/**
+ * Place here all json actions.
+ */
+package fr.ifremer.coser.web.actions.json;
+
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * 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%
+ */
+
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -23,7 +23,7 @@
import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
/**
* Action index, recupere la liste des resultats.
@@ -34,7 +34,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class MapAction extends CoserAction {
+public class MapAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -23,7 +23,7 @@
import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.request.GetMapResultRequest;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.convention.annotation.Action;
@@ -40,7 +40,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class MapDataAction extends CoserAction {
+public class MapDataAction extends AbstractCoserJspAction {
/** Logger. */
private static final Log log = LogFactory.getLog(MapDataAction.class);
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -23,7 +23,7 @@
import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -38,7 +38,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class SpeciesAction extends CoserAction {
+public class SpeciesAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -24,7 +24,7 @@
import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
/**
* Affiche le graphique demandé.
@@ -37,7 +37,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class GraphAction extends CoserAction {
+public class GraphAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -23,7 +23,7 @@
import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.request.GetPopulationIndicatorResultGraphRequest;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -40,7 +40,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class GraphDataAction extends CoserAction {
+public class GraphDataAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -23,7 +23,7 @@
import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.request.GetPopulationIndicatorResultDataRequest;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -40,7 +40,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class GraphDownloadAction extends CoserAction {
+public class GraphDownloadAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -23,7 +23,7 @@
import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -38,7 +38,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class SpeciesAction extends CoserAction {
+public class SpeciesAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -28,7 +28,7 @@
import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.util.DataType;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.convention.annotation.Action;
@@ -56,7 +56,7 @@
@InterceptorRef(value = "execAndWait",
params = {"excludeMethods", "execute,quality"})
})
-public class ExtractAction extends CoserAction implements ServletRequestAware {
+public class ExtractAction extends AbstractCoserJspAction implements ServletRequestAware {
/** serialVersionUID. */
private static final long serialVersionUID = 8497086194191374797L;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java 2014-03-23 13:32:50 UTC (rev 1162)
@@ -22,7 +22,7 @@
package fr.ifremer.coser.web.actions.source;
import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
import java.util.Map;
@@ -35,7 +35,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class SourceAction extends CoserAction {
+public class SourceAction extends AbstractCoserJspAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
Modified: trunk/coser-web/src/main/resources/struts.xml
===================================================================
--- trunk/coser-web/src/main/resources/struts.xml 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/resources/struts.xml 2014-03-23 13:32:50 UTC (rev 1162)
@@ -43,10 +43,16 @@
<package name="admin" extends="convention-default">
<interceptors>
- <interceptor name="loginInterceptor" class="fr.ifremer.coser.web.actions.admin.LoginInterceptor" />
+ <interceptor name="loginInterceptor" class="fr.ifremer.coser.web.actions.auth.LoginInterceptor" />
+ <interceptor-stack name="loginStack">
+ <interceptor-ref name="loginInterceptor"/>
+ <interceptor-ref name="defaultStack"/>
+ </interceptor-stack>
</interceptors>
+ <default-interceptor-ref name="loginStack"/>
<global-results>
- <result name="redirect-login" type="redirect">/admin/login</result>
+ <result name="redirect-login" type="redirect">/auth/login</result>
</global-results>
+
</package>
</struts>
Deleted: trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp 2014-03-23 13:32:50 UTC (rev 1162)
@@ -1,42 +0,0 @@
-<!--
- #%L
- Coser :: Web
- %%
- Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
- %%
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU 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%
- -->
-<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<%@taglib uri="/struts-tags" prefix="s" %>
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title><s:text name="message.admin.title" /></title>
- </head>
- <body>
-
- <h2><s:text name="message.admin.title" /></h2>
-
- <h3><s:text name="message.admin.loginrequiered" /></h3>
-
- <s:form action="perform-login" method="post">
- <s:actionerror />
- <s:textfield name="login" label="%{getText('message.admin.login')}" />
- <s:password name="password" label="%{getText('message.admin.password')}" />
- <s:submit value="%{getText('message.common.validform')}"/>
- </s:form>
-
- </body>
-</html>
Copied: trunk/coser-web/src/main/webapp/WEB-INF/content/auth/login.jsp (from rev 1161, trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp)
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/auth/login.jsp (rev 0)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/auth/login.jsp 2014-03-23 13:32:50 UTC (rev 1162)
@@ -0,0 +1,42 @@
+<!--
+ #%L
+ Coser :: Web
+ %%
+ Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU 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%
+ -->
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<%@taglib uri="/struts-tags" prefix="s" %>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title><s:text name="message.admin.title" /></title>
+ </head>
+ <body>
+
+ <h2><s:text name="message.admin.title" /></h2>
+
+ <h3><s:text name="message.admin.loginrequiered" /></h3>
+
+ <s:form action="perform-login" method="post">
+ <s:actionerror />
+ <s:textfield name="login" label="%{getText('message.admin.login')}" />
+ <s:password name="password" label="%{getText('message.admin.password')}" />
+ <s:submit value="%{getText('message.common.validform')}"/>
+ </s:form>
+
+ </body>
+</html>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-03-20 08:24:15 UTC (rev 1161)
+++ trunk/pom.xml 2014-03-23 13:32:50 UTC (rev 1162)
@@ -5,7 +5,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>5.0.2</version>
+ <version>5.0.4</version>
</parent>
<groupId>fr.ifremer</groupId>
@@ -84,7 +84,7 @@
<coserI18nBundle>coser-i18n</coserI18nBundle>
<!-- Release configuration -->
- <releaseEmail>noreply(a)$forge.codelutin.com</releaseEmail>
+ <releaseEmailDomain>forge.codelutin.com</releaseEmailDomain>
<!-- Versions -->
<jaxxVersion>2.8.2</jaxxVersion>
@@ -252,6 +252,12 @@
</dependency>
<dependency>
+ <groupId>org.apache.struts</groupId>
+ <artifactId>struts2-json-plugin</artifactId>
+ <version>${struts.version}</version>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>${struts.version}</version>
1
0
Author: tchemit
Date: 2014-03-20 09:24:15 +0100 (Thu, 20 Mar 2014)
New Revision: 1161
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1161
Log:
use mavenpom 5.0.2
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-03-19 17:21:43 UTC (rev 1160)
+++ trunk/pom.xml 2014-03-20 08:24:15 UTC (rev 1161)
@@ -5,7 +5,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>5.0.1</version>
+ <version>5.0.2</version>
</parent>
<groupId>fr.ifremer</groupId>
@@ -83,6 +83,9 @@
<i18n.silent>true</i18n.silent>
<coserI18nBundle>coser-i18n</coserI18nBundle>
+ <!-- Release configuration -->
+ <releaseEmail>noreply(a)$forge.codelutin.com</releaseEmail>
+
<!-- Versions -->
<jaxxVersion>2.8.2</jaxxVersion>
<nuitonI18nVersion>3.0</nuitonI18nVersion>
1
0
r1160 - in trunk/coser-business/src: main/java/fr/ifremer/coser/bean main/java/fr/ifremer/coser/result main/java/fr/ifremer/coser/result/repository/echobase main/java/fr/ifremer/coser/result/repository/echobase/command main/java/fr/ifremer/coser/result/repository/legacy main/java/fr/ifremer/coser/result/repository/legacy/command main/java/fr/ifremer/coser/services test/java/fr/ifremer/coser/result/repository/legacy
by tchemit@users.forge.codelutin.com 19 Mar '14
by tchemit@users.forge.codelutin.com 19 Mar '14
19 Mar '14
Author: tchemit
Date: 2014-03-19 18:21:43 +0100 (Wed, 19 Mar 2014)
New Revision: 1160
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1160
Log:
fixes #4753 (import in webserver) + fix some commands
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java
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 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -22,25 +22,36 @@
package fr.ifremer.coser.bean;
+import fr.ifremer.coser.CoserTechnicalException;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
import java.util.Date;
import java.util.List;
import java.util.Properties;
/**
* RSufi result.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class RSufiResult extends AbstractEntity {
/** serialVersionUID. */
private static final long serialVersionUID = -1337710082675120199L;
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(RSufiResult.class);
+
protected Date creationDate;
protected String name;
@@ -65,6 +76,7 @@
/** Utilisé seulement dans l'ui de visu des resultats (presence de carte ou non). */
protected boolean mapsAvailable;
+
/** Liste des nom de fichiers/dossier present dans other files */
protected List<File> otherFiles;
@@ -287,4 +299,30 @@
setMapsResult(Boolean.parseBoolean(props.getProperty("result.mapsResult")));
}
}
+
+ /**
+ * Save rsufi result (only properties file).
+ *
+ * @param rsufiResultDirectory rsufiresult directory
+ * @since 1.5
+ */
+ public void save(File rsufiResultDirectory) {
+
+ OutputStream outputStream = null;
+ try {
+ // sauvegarde des informations du resultat (properties)
+ File propertiesFile = new File(rsufiResultDirectory, "result.properties");
+ Properties props = toProperties();
+ outputStream = new FileOutputStream(propertiesFile);
+ props.store(outputStream, "Saved by " + getClass());
+ outputStream.close();
+ if (log.isDebugEnabled()) {
+ log.debug("Saving result properties file : " + propertiesFile);
+ }
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save result", ex);
+ } finally {
+ IOUtils.closeQuietly(outputStream);
+ }
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -29,6 +29,7 @@
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider;
import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProvider;
+import fr.ifremer.coser.util.DataType;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -62,11 +63,11 @@
// add legacy map repository
Preconditions.checkNotNull(config.getWebMapsProjectsDirectory());
- result.add(new LegacyResultRepositoryProvider(config, config.getWebMapsProjectsDirectory()));
+ result.add(new LegacyResultRepositoryProvider(config, config.getWebMapsProjectsDirectory(), ResultType.MAP));
// add legacy indicators repository
Preconditions.checkNotNull(config.getWebIndicatorsProjectsDirectory());
- result.add(new LegacyResultRepositoryProvider(config, config.getWebIndicatorsProjectsDirectory()));
+ result.add(new LegacyResultRepositoryProvider(config, config.getWebIndicatorsProjectsDirectory(), ResultType.INDICATOR));
// add EchoBase repository
Preconditions.checkNotNull(config.getWebEchobaseProjectsDirectory());
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -201,8 +201,8 @@
result = request.getExtractTypeList().contains(DataType.POPULATION) ||
request.getExtractTypeList().contains(DataType.COMMUNITY);
}
- if (isDataResult()) {
- result |= request.getExtractTypeList().contains(DataType.SOURCE);
+ if (!result && isDataResult()) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
}
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -172,6 +172,11 @@
return result;
}
+ protected Map<String, String> getMapSpeciesMap() {
+ Map<String, String> result = repository.getMapSpecies();
+ return result;
+ }
+
// --------------------------------------------------------------------- //
// --- Get indicator lists --------------------------------------------- //
// --------------------------------------------------------------------- //
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -47,7 +47,7 @@
@Override
public VoidResult execute(CopyRepositoryRequest request) {
File basedir = repository.getBasedir();
- File targetDirectory = request.getTargetDirectory();
+ File targetDirectory = new File (request.getTargetDirectory(), repository.getProjectName());
try {
CoserUtils.customCopyDirectory(basedir, targetDirectory, FileFilterUtils.trueFileFilter());
} catch (IOException e) {
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -25,7 +25,9 @@
import com.google.common.collect.Maps;
import fr.ifremer.coser.result.request.GetResultNameRequest;
import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.util.DataType;
+import java.util.List;
import java.util.Map;
/**
@@ -38,7 +40,18 @@
@Override
public boolean accept(GetResultNameRequest request) {
- return repository.matchExtractTypeList(request);
+ List<DataType> extractTypeList = request.getExtractTypeList();
+ boolean result = false;
+ if (extractTypeList.contains(DataType.MAP)) {
+ result = repository.isMapsResult();
+ }
+ if (!result && (extractTypeList.contains(DataType.POPULATION) || extractTypeList.contains(DataType.COMMUNITY))) {
+ result = repository.isIndicatorsResult();
+ }
+ if (!result && extractTypeList.contains(DataType.SOURCE)) {
+ result = repository.isDataResult();
+ }
+ return result;
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -25,7 +25,9 @@
import com.google.common.collect.Maps;
import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest;
import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.util.DataType;
+import java.util.List;
import java.util.Map;
/**
@@ -45,10 +47,19 @@
public MapResult execute(GetSpeciesForExtractRawDataAndResultsRequest request) {
Map<String, String> map = Maps.newHashMap();
- // get all species for population indicators
- map.putAll(getPopulationSpeciesMap());
- // get all species for community indicators
- map.putAll(getCommunitySpeciesMap());
+ List<DataType> extractTypeList = request.getExtractTypeList();
+ if (extractTypeList.contains(DataType.MAP)) {
+ // get all species for maps
+ map.putAll(getMapSpeciesMap());
+ }
+ if (extractTypeList.contains(DataType.POPULATION)) {
+ // get all species for population indicators
+ map.putAll(getPopulationSpeciesMap());
+ }
+ if (extractTypeList.contains(DataType.COMMUNITY)) {
+ // get all species for community indicators
+ map.putAll(getCommunitySpeciesMap());
+ }
MapResult result = newMapResult(map);
return result;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -139,10 +139,7 @@
this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName);
this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName);
- this.id = String.format("%s::%s::%s",
- LegacyResultRepositoryType.ID,
- resultDirectory,
- path.getRsufiResult().isMapsResult() ? "Map" : "Indicator");
+ this.id = String.format("%s::%s", LegacyResultRepositoryType.ID, resultDirectory);
if (log.isInfoEnabled()) {
log.info("New result repository: " + id);
@@ -269,8 +266,8 @@
result = request.getExtractTypeList().contains(DataType.POPULATION) ||
request.getExtractTypeList().contains(DataType.COMMUNITY);
}
- if (isDataResult()) {
- result |= request.getExtractTypeList().contains(DataType.SOURCE);
+ if (!result && isDataResult()) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
}
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -32,6 +32,7 @@
import fr.ifremer.coser.bean.RSufiResultPath;
import fr.ifremer.coser.bean.Selection;
import fr.ifremer.coser.result.ResultRepositoryInitializationException;
+import fr.ifremer.coser.result.ResultType;
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
import fr.ifremer.coser.services.ProjectService;
import org.apache.commons.logging.Log;
@@ -62,9 +63,21 @@
*/
protected final CoserBusinessConfig config;
- public LegacyResultRepositoryProvider(CoserBusinessConfig config, File basedir) {
+ /**
+ * Hack to sanity repository {@link LegacyResultRepository#isMapsResult()} or
+ * {@link LegacyResultRepository#isIndicatorsResult()} flags.
+ *
+ * @see #sanityRepository(LegacyResultRepository)
+ */
+ protected final ResultType resultType;
+
+ public LegacyResultRepositoryProvider(CoserBusinessConfig config,
+ File basedir,
+ ResultType resultType) {
+ Preconditions.checkNotNull(config);
+ Preconditions.checkNotNull(basedir);
this.config = config;
- Preconditions.checkNotNull(basedir);
+ this.resultType = resultType;
this.basedir = basedir;
}
@@ -140,8 +153,7 @@
String surveyName = projectService.getProjectSurveyName(rSufiResult, r);
LegacyResultRepository repository = new LegacyResultRepository(existingProject, path, surveyName);
-
-
+ sanityRepository(repository);
if (log.isInfoEnabled()) {
log.info(String.format("Detected result: %s - %s", path.getProject().getName(), path.getRsufiResult().getName()));
}
@@ -158,4 +170,44 @@
}
return result;
}
+
+ /**
+ * Sanity the given repository.
+ *
+ * @param repository repository to sanity
+ */
+ protected void sanityRepository(LegacyResultRepository repository) {
+ if (resultType != null) {
+
+ boolean needSave = false;
+ RSufiResult rsufiResult = repository.getPath().getRsufiResult();
+ if (resultType == ResultType.MAP) {
+ // map repository
+ if (repository.isIndicatorsResult()) {
+ // can't be both indicator result and maps result
+ needSave = true;
+ rsufiResult.setIndicatorsResult(false);
+ if (log.isInfoEnabled()) {
+ log.info("Will sanity repository to only map result");
+ }
+ }
+ }
+ if (resultType == ResultType.INDICATOR) {
+ {
+ // indicator repository
+ if (repository.isMapsResult()) {
+ // can't be both indicator result and maps result
+ needSave = true;
+ rsufiResult.setMapsResult(false);
+ if (log.isInfoEnabled()) {
+ log.info("Will sanity repository to only indicator result");
+ }
+ }
+ }
+ if (needSave) {
+ rsufiResult.save(repository.getResultDirectory());
+ }
+ }
+ }
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -235,6 +235,11 @@
return result;
}
+ protected Map<String, String> getMapSpeciesMap() {
+ //TODO
+ return getPopulationSpeciesMap();
+ }
+
// --------------------------------------------------------------------- //
// --- Get indicator lists --------------------------------------------- //
// --------------------------------------------------------------------- //
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -25,7 +25,9 @@
import com.google.common.collect.Maps;
import fr.ifremer.coser.result.request.GetResultNameRequest;
import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.util.DataType;
+import java.util.List;
import java.util.Map;
/**
@@ -38,7 +40,18 @@
@Override
public boolean accept(GetResultNameRequest request) {
- return repository.matchExtractTypeList(request);
+ List<DataType> extractTypeList = request.getExtractTypeList();
+ boolean result = false;
+ if (extractTypeList.contains(DataType.MAP)) {
+ result = repository.isMapsResult();
+ }
+ if (!result && (extractTypeList.contains(DataType.POPULATION) || extractTypeList.contains(DataType.COMMUNITY))) {
+ result = repository.isIndicatorsResult();
+ }
+ if (!result && extractTypeList.contains(DataType.SOURCE)) {
+ result = repository.isDataResult();
+ }
+ return result;
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -23,9 +23,11 @@
*/
import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest;
import fr.ifremer.coser.result.result.MapResult;
-import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.util.DataType;
+import java.util.List;
import java.util.Map;
/**
@@ -47,10 +49,19 @@
Map<String, String> map = Maps.newHashMap();
- // get all species for population indicators
- map.putAll(getPopulationSpeciesMap());
- // get all species for community indicators
- map.putAll(getCommunitySpeciesMap());
+ List<DataType> extractTypeList = request.getExtractTypeList();
+ if (extractTypeList.contains(DataType.MAP)) {
+ // get all species for maps
+ map.putAll(getMapSpeciesMap());
+ }
+ if (extractTypeList.contains(DataType.POPULATION)) {
+ // get all species for population indicators
+ map.putAll(getPopulationSpeciesMap());
+ }
+ if (extractTypeList.contains(DataType.COMMUNITY)) {
+ // get all species for community indicators
+ map.putAll(getCommunitySpeciesMap());
+ }
MapResult result = newMapResult(map);
return result;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -530,8 +530,18 @@
}
}
- // copie vers le dossier dedie
- FileUtils.copyDirectory(projectsDirectory, rsufiDirectory, mFileFilters);
+ // get all files to compress
+ Collection<File> files = FileUtil.getFilteredElements(projectsDirectory,
+ mFileFilters,
+ true);
+
+ // create a temp zip file
+ File tempZip = File.createTempFile("Coserextractrsufi-", ".zip");
+ ZipUtil.compressFiles(tempZip, projectsDirectory, files, false);
+ // unzip it to correct directory
+ ZipUtil.uncompress(tempZip, rsufiDirectory);
+ // delete temp zip
+ FileUtils.forceDelete(tempZip);
} catch (CoserBusinessException e) {
throw new CoserTechnicalException("Can't prepare upload data", e);
} catch (IOException e) {
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 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -1242,12 +1242,12 @@
* @param rsufiResult rsufi result
* @throws CoserBusinessException
*/
- protected void saveRSufiResult(File rsufiResultDirectory, RSufiResult rsufiResult) throws CoserBusinessException {
+ public void saveRSufiResult(File rsufiResultDirectory, RSufiResult rsufiResult) throws CoserBusinessException {
OutputStream outputStream = null;
try {
// sauvegarde des informations du resultat (properties)
- File propertiesFile = new File(rsufiResultDirectory, "result.properties");
+ File propertiesFile = new File(rsufiResultDirectory,"result.properties");
Properties props = rsufiResult.toProperties();
outputStream = new FileOutputStream(propertiesFile);
props.store(outputStream, null);
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -57,6 +57,7 @@
import fr.ifremer.coser.util.DataType;
import fr.ifremer.coser.util.io.MultipleFileFilter;
import fr.ifremer.coser.util.io.OneRSufiResultFileFilter;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
@@ -283,6 +284,10 @@
CoserMainRepositoryProvider mainRepositoryProvider =
new CoserMainRepositoryProvider(Sets.<ResultRepositoryProvider<?>>newHashSet(provider));
+ if (CollectionUtils.isEmpty(mainRepositoryProvider.getResultRepositories())) {
+ // no repository found, nothing to do
+ return;
+ }
CoserRequestContext context = uploadContext.context;
// recuperation des noms zone des nouveau fichiers
@@ -306,18 +311,22 @@
List<String> zonesToDelete = Lists.newArrayList(zonesToImport);
zonesToDelete.retainAll(existingZones);
- // suppression des results deja existants
- DeleteResultsRequest deleteRequest = requestBuilder(context, DeleteResultsRequest.class).
- addZoneList(zonesToDelete).
- toRequest();
- executeAll(mainRepositoryProvider, context, deleteRequest);
+ if (CollectionUtils.isNotEmpty(zonesToDelete)) {
+ // suppression des results deja existants
+ DeleteResultsRequest deleteRequest = requestBuilder(context, DeleteResultsRequest.class).
+ addZoneList(zonesToDelete).
+ toRequest();
+ executeAll(mainRepositoryProvider, context, deleteRequest);
+ }
- // ajout des nouvelles zones
- CopyRepositoryRequest addRequest = requestBuilder(context, CopyRepositoryRequest.class).
- addZoneList(zonesToDelete).
- addTargetDirectory(getConfig().getWebEchobaseProjectsDirectory()).
- toRequest();
- executeAll(mainRepositoryProvider, context, addRequest);
+ if (CollectionUtils.isNotEmpty(zonesToImport)) {
+ // ajout des nouvelles zones
+ CopyRepositoryRequest addRequest = requestBuilder(context, CopyRepositoryRequest.class).
+ addZoneList(Lists.newArrayList(zonesToImport)).
+ addTargetDirectory(getConfig().getWebEchobaseProjectsDirectory()).
+ toRequest();
+ executeAll(mainRepositoryProvider, context, addRequest);
+ }
// mise a jour du context
uploadContext.indicatorsResultZoneIds.putAll(indicatorsResultZoneIds);
@@ -332,9 +341,13 @@
GetResultNameRequest rawDataRequest) throws CoserBusinessException, IOException {
// Creation d'un repository provider
- LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(getConfig(), tempDirectory);
+ LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(getConfig(), tempDirectory, null);
CoserMainRepositoryProvider mainRepositoryProvider = new CoserMainRepositoryProvider(Sets.<ResultRepositoryProvider<?>>newHashSet(provider));
+ if (CollectionUtils.isEmpty(mainRepositoryProvider.getResultRepositories())) {
+ // no repository found, nothing to do
+ return;
+ }
ProjectService projectService = new ProjectService(getConfig());
File projectsDirectory = getConfig().getWebIndicatorsProjectsDirectory();
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java 2014-03-19 10:56:06 UTC (rev 1159)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java 2014-03-19 17:21:43 UTC (rev 1160)
@@ -22,7 +22,9 @@
* #L%
*/
+import fr.ifremer.coser.result.ResultType;
import fr.ifremer.coser.services.CoserTestAbstract;
+import fr.ifremer.coser.util.DataType;
import org.junit.Assert;
import org.junit.Test;
@@ -49,7 +51,7 @@
File basedir = config.getWebIndicatorsProjectsDirectory();
- LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(config, basedir);
+ LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(config, basedir, ResultType.INDICATOR);
Set<LegacyResultRepository> resultRepositories = provider.loadRepositories();
Assert.assertNotNull(resultRepositories);
1
0
19 Mar '14
Author: tchemit
Date: 2014-03-19 11:56:06 +0100 (Wed, 19 Mar 2014)
New Revision: 1159
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1159
Log:
refs-50 #4753 Publier des r?\195?\169sultats de type EchoBase et RSufi sur le site des indicateurs
Added:
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestBuilder.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java
trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties
trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebApplicationContext.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -26,8 +26,10 @@
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.net.URL;
import java.util.Date;
import java.util.List;
@@ -283,6 +285,35 @@
return dataUpdateDate;
}
+ /**
+ * Met à jour certaines proprietes apres la mise à jour des données.
+ *
+ * @since 1.5
+ */
+ public void updateDataProperties() {
+
+ File webProperties = getWebPropertiesFile();
+
+ Properties props = new Properties();
+ InputStream iStream = null;
+ OutputStream oStream = null;
+ try {
+ if (webProperties.isFile()) {
+ iStream = new FileInputStream(webProperties);
+ props.load(iStream);
+ }
+
+ props.setProperty("updateDate", String.valueOf(new Date().getTime()));
+ oStream = new FileOutputStream(webProperties);
+ props.store(oStream, "Update data");
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save properties file", ex);
+ } finally {
+ IOUtils.closeQuietly(iStream);
+ IOUtils.closeQuietly(oStream);
+ }
+ }
+
public static enum CoserBusinessOption implements ConfigOptionDef {
DATABASE_DIRECTORY("coser.database.directory", t("coser.config.database.directory.description"), File.class, "${user.home}" + File.separator + "coser"),
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -32,6 +32,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import java.util.Collections;
import java.util.Set;
/**
@@ -75,9 +76,13 @@
public CoserMainRepositoryProvider(Set<ResultRepositoryProvider<?>> repositoryProviders) {
Preconditions.checkNotNull(repositoryProviders);
- this.repositoryProviders = repositoryProviders;
+ this.repositoryProviders = Collections.unmodifiableSet(repositoryProviders);
}
+ public Set<ResultRepositoryProvider<?>> getRepositoryProviders() {
+ return repositoryProviders;
+ }
+
public void resetRepositories() {
repositories = null;
}
@@ -85,12 +90,14 @@
public Set<ResultRepository> getResultRepositories() {
if (repositories == null) {
Set<String> ids = Sets.newHashSet();
- repositories = Sets.newHashSet();
+ Set<ResultRepository> resultRepositories = Sets.newHashSet();
for (ResultRepositoryProvider<?> repositoryProvider : repositoryProviders) {
Set<ResultRepository> repos = loadFromRepositoryProvider(repositoryProvider, ids);
- repositories.addAll(repos);
+ resultRepositories.addAll(repos);
}
+
+ repositories = Collections.unmodifiableSet(resultRepositories);
if (log.isInfoEnabled()) {
log.info("Found " + repositories.size() + " result repository(ies).");
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestBuilder.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestBuilder.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestBuilder.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -25,6 +25,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.request.CopyRepositoryRequest;
import fr.ifremer.coser.result.request.CoserRequestExtractTypeListAware;
import fr.ifremer.coser.result.request.CoserRequestFacadeAware;
import fr.ifremer.coser.result.request.CoserRequestIndicatorAware;
@@ -37,6 +38,7 @@
import fr.ifremer.coser.util.DataType;
import org.apache.commons.collections4.CollectionUtils;
+import java.io.File;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -83,6 +85,9 @@
protected static final String PARAMETER_EXTRACT_TYPE_LIST = "extractTypeList";
+
+ protected static final String PARAMETER_TARGET_DIRECTORY = "targetDirectory";
+
/**
* Locale to inject in request.
*/
@@ -166,6 +171,11 @@
return this;
}
+ public CoserRequestBuilder<R> addTargetDirectory(File targetDirectory) {
+ parameters.put(PARAMETER_TARGET_DIRECTORY, targetDirectory);
+ return this;
+ }
+
public R toRequest() {
try {
R request = requestType.newInstance();
@@ -178,6 +188,7 @@
flushCoserRequestRepositoryResultTypeAware(request);
flushCoserRequestExtractTypeListAware(request);
flushExtractRawDataAndResultsRequest(request);
+ flushCopyRepositoryRequest(request);
return request;
} catch (InstantiationException e) {
throw new CoserTechnicalException(e);
@@ -186,6 +197,17 @@
}
}
+ protected void flushCopyRepositoryRequest(R request) {
+ if (request instanceof CopyRepositoryRequest) {
+ CopyRepositoryRequest r = (CopyRepositoryRequest) request;
+
+ File targetDirectory = getParam(PARAMETER_TARGET_DIRECTORY);
+ if (targetDirectory != null) {
+ r.setTargetDirectory(targetDirectory);
+ }
+ }
+ }
+
protected void flushExtractRawDataAndResultsRequest(R request) {
if (request instanceof ExtractRawDataAndResultsRequest) {
ExtractRawDataAndResultsRequest r = (ExtractRawDataAndResultsRequest) request;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -24,18 +24,22 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import fr.ifremer.coser.CoserApplicationContext;
import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.result.repository.ResultRepository;
import fr.ifremer.coser.result.request.DeleteResultsRequest;
import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.result.result.VoidResult;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -60,11 +64,26 @@
*/
protected final CoserCommandFactory commandFactory;
- public CoserRequestExecutor(CoserApplicationContext applicationContext) {
+ protected FileResult fileResult;
+
+ protected List<CoserResult> multipleResults;
+
+ protected MapResult mapResult;
+
+ protected VoidResult voidResult;
+
+ public CoserRequestExecutor(CoserApplicationContext applicationContext,
+ CoserMainRepositoryProvider repositoryProvider) {
+ Preconditions.checkNotNull(applicationContext);
+ Preconditions.checkNotNull(repositoryProvider);
this.commandFactory = applicationContext.getCommandFactory();
- this.repositoryProvider = applicationContext.getRepositoryProvider();
+ this.repositoryProvider = repositoryProvider;
}
+ // --------------------------------------------------------------------- //
+ // --- Execute API ----------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
/**
* Extract some raw data and results from repositories and assembly them as an archive.
*
@@ -85,12 +104,12 @@
}
// Get all extracted stuff from matching repositories
- List repositoryResults = executeAll(context, request);
+ executeAll(context, request);
File file = context.getExtracts().assemblyExtractResult(context,
extractDirectory,
request.getZoneList(),
- repositoryResults);
+ (List) multipleResults);
FileResult result = new FileResult("ALL", file);
return result;
}
@@ -106,7 +125,7 @@
* @param request request to execute
* @return the unique result
*/
- public CoserResult executeUnique(CoserRequestContext context, CoserRequest request) {
+ public CoserRequestExecutor executeUnique(CoserRequestContext context, CoserRequest request) {
Preconditions.checkNotNull(request);
Preconditions.checkArgument(request.isFilled(), "Request " + request + " is not filled.");
@@ -123,8 +142,18 @@
ResultRepository repository = repositories.get(0);
+ // execute
CoserResult result = execute(context, repository, request);
- return result;
+
+ // register result
+ if (result instanceof FileResult) {
+ this.fileResult = (FileResult) result;
+ } else if (result instanceof MapResult) {
+ this.mapResult = (MapResult) result;
+ } else if (result instanceof VoidResult) {
+ this.voidResult = (VoidResult) result;
+ }
+ return this;
}
public void deleteResults(CoserRequestContext context,
@@ -146,7 +175,7 @@
* @param request request to execute
* @return the list of result (one by each result repository).
*/
- public List<CoserResult> executeAll(CoserRequestContext context, CoserRequest request) {
+ public CoserRequestExecutor executeAll(CoserRequestContext context, CoserRequest request) {
Preconditions.checkNotNull(request);
Preconditions.checkArgument(request.isFilled(), "Request " + request + " is not filled.");
@@ -161,9 +190,55 @@
result.add(repositoryResult);
}
- return result;
+ this.multipleResults = result;
+
+ return this;
}
+ // --------------------------------------------------------------------- //
+ // --- Result API ------------------------------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ public MapResult toMapResult() {
+ if (mapResult == null) {
+ throw new CoserTechnicalException("No MapResult found");
+ }
+ return mapResult;
+ }
+
+ public FileResult toFileResult() {
+ if (fileResult == null) {
+ throw new CoserTechnicalException("No FileResult found");
+ }
+ return fileResult;
+ }
+
+ public <Result extends CoserResult> List<Result> toMultipleResult(Class<Result> resultType) {
+ if (multipleResults == null) {
+ throw new CoserTechnicalException("No MultipleResult found");
+ }
+ for (CoserResult coserResult : multipleResults) {
+ if (!(resultType.isAssignableFrom(coserResult.getClass()))) {
+ throw new CoserTechnicalException(
+ "Result should a " + resultType + ", but was: " + coserResult.getClass());
+ }
+ }
+ return (List<Result>) multipleResults;
+ }
+
+ public Map<String, String> toMap() {
+ List<MapResult> mapResults = toMultipleResult(MapResult.class);
+ Map<String, String> resultAsMap = Maps.newHashMap();
+ for (MapResult map : mapResults) {
+ resultAsMap.putAll(map.getResult());
+ }
+ return resultAsMap;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Internal Methods ------------------------------------------------ //
+ // --------------------------------------------------------------------- //
+
protected List<ResultRepository> getMatchingRepositories(CoserRequestContext context, CoserRequest request) {
List<ResultRepository> result = Lists.newArrayList();
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -196,7 +196,7 @@
public boolean matchExtractTypeList(CoserRequestExtractTypeListAware request) {
boolean result = false;
if (isMapsResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
+ result = request.getExtractTypeList().contains(DataType.MAP);
} else if (isIndicatorsResult()) {
result = request.getExtractTypeList().contains(DataType.POPULATION) ||
request.getExtractTypeList().contains(DataType.COMMUNITY);
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -264,7 +264,7 @@
public boolean matchExtractTypeList(CoserRequestExtractTypeListAware request) {
boolean result = false;
if (isMapsResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
+ result = request.getExtractTypeList().contains(DataType.MAP);
} else if (isIndicatorsResult()) {
result = request.getExtractTypeList().contains(DataType.POPULATION) ||
request.getExtractTypeList().contains(DataType.COMMUNITY);
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -0,0 +1,754 @@
+package fr.ifremer.coser.services;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.CoserApplicationContext;
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserBusinessException;
+import fr.ifremer.coser.CoserConstants;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.CoserUtils;
+import fr.ifremer.coser.bean.Project;
+import fr.ifremer.coser.bean.RSufiResult;
+import fr.ifremer.coser.bean.Selection;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.CoserMainRepositoryProvider;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserRequestBuilder;
+import fr.ifremer.coser.result.CoserRequestContext;
+import fr.ifremer.coser.result.CoserRequestExecutor;
+import fr.ifremer.coser.result.DefaultCoserRequestContext;
+import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryType;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryType;
+import fr.ifremer.coser.result.request.CopyRepositoryRequest;
+import fr.ifremer.coser.result.request.DeleteResultsRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetResultNameRequest;
+import fr.ifremer.coser.result.result.ExtractRawDataAndResultsResult;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.util.Extracts;
+import fr.ifremer.coser.util.DataType;
+import fr.ifremer.coser.util.io.MultipleFileFilter;
+import fr.ifremer.coser.util.io.OneRSufiResultFileFilter;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.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;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * Service to be used only by the web server to manage results.
+ * <p/>
+ * Created on 3/18/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class WebResultService {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(WebResultService.class);
+
+ protected final CoserApplicationContext applicationContext;
+
+ public WebResultService(CoserApplicationContext applicationContext) {
+ this.applicationContext = applicationContext;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Public API ------------------------------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ public CoserRequestContext newRequestContext(Locale locale) {
+ return new DefaultCoserRequestContext(applicationContext, locale);
+ }
+
+ public CoserRequestExecutor executeUnique(CoserRequestContext context, CoserRequest request) {
+ CoserRequestExecutor executor = executeUnique(getInternalRepositoryProvider(), context, request);
+ return executor;
+ }
+
+ public CoserRequestExecutor executeAll(CoserRequestContext context, CoserRequest request) {
+ CoserRequestExecutor executor = executeAll(getInternalRepositoryProvider(), context, request);
+ return executor;
+ }
+
+ /**
+ * Extract some raw data and results from repositories and assembly them as an archive.
+ *
+ * @param context request context
+ * @param request extract request
+ * @return the file result containing the archive
+ */
+ public FileResult extractRawDataAndResults(CoserRequestContext context,
+ ExtractRawDataAndResultsRequest request) {
+
+ File extractDirectory = new File(context.getTemporaryDirectory(), "Indicateurs_Ifremer");
+ request.setExtractDirectory(extractDirectory);
+
+ try {
+ FileUtils.forceMkdir(extractDirectory);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not create directory: " + extractDirectory, e);
+ }
+
+ // Get all extracted stuff from matching repositories
+ List<ExtractRawDataAndResultsResult> multipleResults =
+ executeAll(getInternalRepositoryProvider(), context, request).
+ toMultipleResult(ExtractRawDataAndResultsResult.class);
+
+ File file = getExtracts().assemblyExtractResult(context,
+ extractDirectory,
+ request.getZoneList(),
+ multipleResults);
+ FileResult result = new FileResult("ALL", file);
+ return result;
+ }
+
+ public void deleteResults(CoserRequestContext context,
+ DeleteResultsRequest request) {
+
+ // do delete results (don't care about result)
+ executeAll(getInternalRepositoryProvider(), context, request);
+
+ // reload projects
+ getInternalRepositoryProvider().resetRepositories();
+ }
+
+ public void resetRepositories() {
+ applicationContext.getRepositoryProvider().resetRepositories();
+ }
+
+ public Map<String, ResultRepositoryType> getRepositoryTypes() {
+ Map<String, ResultRepositoryType> result = Maps.newHashMap();
+ for (ResultRepositoryType resultRepositoryType : applicationContext.getRepositoryTypes()) {
+ result.put(resultRepositoryType.getId(), resultRepositoryType);
+ }
+ return result;
+ }
+
+ /**
+ * Traite le fichier uploade par l'application client et l'enregistre
+ * dans le stockage coté web.
+ * <p/>
+ * Le nouveau fichier uploadé est mergé avec l'ancien, c'est à dire:
+ * <ul>
+ * <li>dezipage dans un fichier temporaire
+ * <li>recuperation des noms de zones des nouveau fichiers (par type, carte/indicateur)
+ * <li>suppression dans l'ancien répertoire des resultats deja presents dans le nouveau (pour les conflits zone)
+ * <li>suppression des selections vides
+ * <li>suppression des projets vides
+ * <li>copie (avec ecrasement) des nouveaux fichiers dans l'ancien répertoire
+ * mais seulement pour ceux des zones concernés (partie difficile)
+ * </ul>
+ * <p/>
+ * TODO chatellier 20110125 l'algorithme n'est pour l'instant pas performant
+ * et contient pas mal de code dupliqué, mais pour la v1.0 ca ira.
+ *
+ * @param login user login
+ * @param archiveFile uploaded file
+ */
+ public void registerNewUploadedResults(CoserRequestContext context,
+ String login,
+ File archiveFile) {
+ File tempDirectory;
+
+ // dezipage dans un fichier temporaire
+ try {
+ tempDirectory = FileUtil.createTempDirectory("coser-upload-", "-tmp");
+ ZipUtil.uncompress(archiveFile, tempDirectory);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Can't uncompress archive", e);
+ }
+
+ NewUploadContext uploadContext = new NewUploadContext(context);
+
+ // recuperer les resultats actuels pour le mail de mise à jour
+ GetResultNameRequest indicatorsRequest =
+ requestBuilder(context, GetResultNameRequest.class).
+ addExtractTypeList(Lists.newArrayList(DataType.COMMUNITY, DataType.POPULATION)).toRequest();
+
+ GetResultNameRequest mapsRequest =
+ requestBuilder(context, GetResultNameRequest.class).
+ addExtractTypeList(Lists.newArrayList(DataType.MAP)).
+ toRequest();
+
+ GetResultNameRequest rawDataRequest =
+ requestBuilder(context, GetResultNameRequest.class).
+ addExtractTypeList(Lists.newArrayList(DataType.SOURCE)).
+ toRequest();
+
+ // recuperer les resultats actuels pour le mail de mise à jour
+ Map<String, String> indicatorResults = executeAll(getInternalRepositoryProvider(), context, indicatorsRequest).toMap();
+ Map<String, String> mapsResults = executeAll(getInternalRepositoryProvider(), context, mapsRequest).toMap();
+ Map<String, String> dataResults = executeAll(getInternalRepositoryProvider(), context, rawDataRequest).toMap();
+
+ uploadContext.indicatorResults.putAll(indicatorResults);
+ uploadContext.mapsResults.putAll(mapsResults);
+ uploadContext.dataResults.putAll(dataResults);
+
+ // merge rsufi results
+ File rsufiDirectory = new File(tempDirectory, LegacyResultRepositoryType.ID);
+ try {
+ registerNewUploadedResultsForRSufi(uploadContext,
+ rsufiDirectory,
+ indicatorsRequest,
+ mapsRequest,
+ rawDataRequest);
+ } catch (CoserBusinessException e) {
+ throw new CoserTechnicalException("Could not merge rsufi results", e);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not merge rsufi results", e);
+ }
+
+ // merge echobase results
+ File echobaseDirectory = new File(tempDirectory, EchoBaseResultRepositoryType.ID);
+ registerNewUploadedResultsForEchoBase(uploadContext,
+ echobaseDirectory,
+ indicatorsRequest,
+ mapsRequest,
+ rawDataRequest);
+
+ // update data date
+ getConfig().updateDataProperties();
+
+ // reload projects
+ applicationContext.getRepositoryProvider().resetRepositories();
+
+ // send email notification
+ generatedAndSendNewResultNotifications(login, uploadContext);
+
+ // delete temp directory
+ try {
+ FileUtils.deleteDirectory(tempDirectory);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Can't delete directory", e);
+ }
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Internal methods ------------------------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ protected void registerNewUploadedResultsForEchoBase(NewUploadContext uploadContext,
+ File basedir,
+ GetResultNameRequest indicatorsRequest,
+ GetResultNameRequest mapsRequest,
+ GetResultNameRequest rawDataRequest) {
+
+ // Creation d'un repository provider
+ EchoBaseResultRepositoryProvider provider = new EchoBaseResultRepositoryProvider(basedir);
+ CoserMainRepositoryProvider mainRepositoryProvider =
+ new CoserMainRepositoryProvider(Sets.<ResultRepositoryProvider<?>>newHashSet(provider));
+
+ CoserRequestContext context = uploadContext.context;
+
+ // recuperation des noms zone des nouveau fichiers
+ Map<String, String> indicatorsResultZoneIds = executeAll(mainRepositoryProvider, context, indicatorsRequest).toMap();
+ Map<String, String> mapsResultZoneIds = executeAll(mainRepositoryProvider, context, mapsRequest).toMap();
+ Map<String, String> dataResultZoneIds = executeAll(mainRepositoryProvider, context, rawDataRequest).toMap();
+
+ // toutes les zones qui existent
+ Set<String> existingZones = Sets.newHashSet();
+ existingZones.addAll(uploadContext.indicatorResults.keySet());
+ existingZones.addAll(uploadContext.mapsResults.keySet());
+ existingZones.addAll(uploadContext.dataResults.keySet());
+
+ // toutes les zones a ajouter
+ Set<String> zonesToImport = Sets.newHashSet();
+ zonesToImport.addAll(indicatorsResultZoneIds.keySet());
+ zonesToImport.addAll(mapsResultZoneIds.keySet());
+ zonesToImport.addAll(dataResultZoneIds.keySet());
+
+ // toutes les zones a supprimer (avant ajout)
+ List<String> zonesToDelete = Lists.newArrayList(zonesToImport);
+ zonesToDelete.retainAll(existingZones);
+
+ // suppression des results deja existants
+ DeleteResultsRequest deleteRequest = requestBuilder(context, DeleteResultsRequest.class).
+ addZoneList(zonesToDelete).
+ toRequest();
+ executeAll(mainRepositoryProvider, context, deleteRequest);
+
+ // ajout des nouvelles zones
+ CopyRepositoryRequest addRequest = requestBuilder(context, CopyRepositoryRequest.class).
+ addZoneList(zonesToDelete).
+ addTargetDirectory(getConfig().getWebEchobaseProjectsDirectory()).
+ toRequest();
+ executeAll(mainRepositoryProvider, context, addRequest);
+
+ // mise a jour du context
+ uploadContext.indicatorsResultZoneIds.putAll(indicatorsResultZoneIds);
+ uploadContext.mapsResultZoneIds.putAll(mapsResultZoneIds);
+ uploadContext.dataResultZoneIds.putAll(dataResultZoneIds);
+ }
+
+ protected void registerNewUploadedResultsForRSufi(NewUploadContext uploadContext,
+ File tempDirectory,
+ GetResultNameRequest indicatorsRequest,
+ GetResultNameRequest mapsRequest,
+ GetResultNameRequest rawDataRequest) throws CoserBusinessException, IOException {
+
+ // Creation d'un repository provider
+ LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(getConfig(), tempDirectory);
+ CoserMainRepositoryProvider mainRepositoryProvider = new CoserMainRepositoryProvider(Sets.<ResultRepositoryProvider<?>>newHashSet(provider));
+
+ ProjectService projectService = new ProjectService(getConfig());
+
+ File projectsDirectory = getConfig().getWebIndicatorsProjectsDirectory();
+ File mapsDirectory = getConfig().getWebMapsProjectsDirectory();
+
+ CoserRequestContext context = uploadContext.context;
+
+ // suppression des resultats qui ont été envoyé mais
+ // ne sont ni maps result, ni indicator result
+ Map<String, String> noIndicatorsResultZoneIds = getZonesIds(projectService, tempDirectory, false, null, null);
+ cleanCurrentProjectDirectory(projectService, projectsDirectory, noIndicatorsResultZoneIds.keySet());
+ Map<String, String> noMapsResultZoneIds = getZonesIds(projectService, tempDirectory, null, false, null);
+ cleanCurrentProjectDirectory(projectService, mapsDirectory, noMapsResultZoneIds.keySet());
+ Map<String, String> noDataResultZoneIds = getZonesIds(projectService, tempDirectory, null, null, false);
+
+ // recuperation des noms zone des nouveau fichiers
+ Map<String, String> indicatorsResultZoneIds = executeAll(mainRepositoryProvider, context, indicatorsRequest).toMap();
+ Map<String, String> mapsResultZoneIds = executeAll(mainRepositoryProvider, context, mapsRequest).toMap();
+ Map<String, String> dataResultZoneIds = executeAll(mainRepositoryProvider, context, rawDataRequest).toMap();
+
+ // suppression des resultats a reimporter
+ cleanCurrentProjectDirectory(projectService, projectsDirectory, indicatorsResultZoneIds.keySet());
+ cleanCurrentProjectDirectory(projectService, mapsDirectory, mapsResultZoneIds.keySet());
+
+ // import des nouveaux resultats
+
+ FileFilter indicatorsFileFilter = getCopyFileFilter(projectService, tempDirectory, false);
+ CoserUtils.customCopyDirectory(tempDirectory, projectsDirectory, indicatorsFileFilter);
+
+ // creation du filter qui copiera juste ce qu'il faut
+ FileFilter mapsFileFilter = getCopyFileFilter(projectService, tempDirectory, true);
+ CoserUtils.customCopyDirectory(tempDirectory, mapsDirectory, mapsFileFilter);
+
+ // mise a jour du context
+ uploadContext.noIndicatorsResultZoneIds.putAll(noIndicatorsResultZoneIds);
+ uploadContext.noMapsResultZoneIds.putAll(noMapsResultZoneIds);
+ uploadContext.noDataResultZoneIds.putAll(noDataResultZoneIds);
+ uploadContext.indicatorsResultZoneIds.putAll(indicatorsResultZoneIds);
+ uploadContext.mapsResultZoneIds.putAll(mapsResultZoneIds);
+ uploadContext.dataResultZoneIds.putAll(dataResultZoneIds);
+ }
+
+ protected void generatedAndSendNewResultNotifications(String login,
+ NewUploadContext uploadContext) {
+
+ // generate email content
+ StringBuilder content = new StringBuilder();
+
+ ZoneMap zoneMap = getZoneMap();
+ int count = 0;
+ String endOfLine = "\n";
+ content.append(t("coser.business.notificationmail.mapsresults")).append(endOfLine);
+ for (Map.Entry<String, String> noMapsResultZoneId : uploadContext.noMapsResultZoneIds.entrySet()) {
+ if (uploadContext.mapsResults.containsValue(noMapsResultZoneId.getValue())) {
+ content.append(" - ").append(t("coser.business.notificationmail.deleted",
+ zoneMap.getZoneFullName(noMapsResultZoneId.getKey()),
+ noMapsResultZoneId.getValue())).append(endOfLine);
+ count++;
+ }
+ }
+ for (Map.Entry<String, String> mapsResultZoneId : uploadContext.mapsResultZoneIds.entrySet()) {
+ if (!uploadContext.mapsResults.containsValue(mapsResultZoneId.getValue())) {
+ content.append(" - ").append(t("coser.business.notificationmail.added",
+ zoneMap.getZoneFullName(mapsResultZoneId.getKey()),
+ mapsResultZoneId.getValue())).append(endOfLine);
+ count++;
+ }
+ }
+ content.append(endOfLine);
+
+ content.append(t("coser.business.notificationmail.indicatorsresults")).append(endOfLine);
+ for (Map.Entry<String, String> noIndicatorsResultZoneId : uploadContext.noIndicatorsResultZoneIds.entrySet()) {
+ if (uploadContext.indicatorResults.containsValue(noIndicatorsResultZoneId.getValue())) {
+ content.append(" - ").append(t("coser.business.notificationmail.deleted",
+ zoneMap.getZoneFullName(noIndicatorsResultZoneId.getKey()),
+ noIndicatorsResultZoneId.getValue())).append(endOfLine);
+ count++;
+ }
+
+ }
+ for (Map.Entry<String, String> indicatorsResultZoneId : uploadContext.indicatorsResultZoneIds.entrySet()) {
+ if (!uploadContext.indicatorResults.containsValue(indicatorsResultZoneId.getValue())) {
+ content.append(" - ").append(t("coser.business.notificationmail.added",
+ zoneMap.getZoneFullName(indicatorsResultZoneId.getKey()),
+ indicatorsResultZoneId.getValue())).append(endOfLine);
+ count++;
+ }
+ }
+ content.append(endOfLine);
+
+ content.append(t("coser.business.notificationmail.dataresults")).append(endOfLine);
+ for (Map.Entry<String, String> noDataResultZoneId : uploadContext.noDataResultZoneIds.entrySet()) {
+ if (uploadContext.dataResults.containsValue(noDataResultZoneId.getValue())) {
+ content.append(" - ").append(t("coser.business.notificationmail.deleted",
+ zoneMap.getZoneFullName(noDataResultZoneId.getKey()),
+ noDataResultZoneId.getValue())).append(endOfLine);
+ count++;
+ }
+ }
+
+ for (Map.Entry<String, String> dataResultZoneId : uploadContext.dataResultZoneIds.entrySet()) {
+ if (!uploadContext.dataResults.containsValue(dataResultZoneId.getValue())) {
+ content.append(" - ").append(t("coser.business.notificationmail.added",
+ zoneMap.getZoneFullName(dataResultZoneId.getKey()),
+ dataResultZoneId.getValue())).append(endOfLine);
+ count++;
+ }
+ }
+ content.append(endOfLine);
+
+ // send notification mails
+ sendNewResultNotifications(login, count, content.toString());
+ }
+
+ protected CoserRequestExecutor executeUnique(CoserMainRepositoryProvider repositoryProvider,
+ CoserRequestContext context,
+ CoserRequest request) {
+ CoserRequestExecutor executor = new CoserRequestExecutor(applicationContext, repositoryProvider);
+ executor.executeUnique(context, request);
+ return executor;
+ }
+
+ protected CoserRequestExecutor executeAll(CoserMainRepositoryProvider repositoryProvider,
+ CoserRequestContext context,
+ CoserRequest request) {
+ CoserRequestExecutor executor = new CoserRequestExecutor(applicationContext, repositoryProvider);
+ executor.executeAll(context, request);
+ return executor;
+ }
+
+ protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(CoserRequestContext context,
+ Class<R> requestType) {
+ return CoserRequestBuilder.newBuilder(context.getLocale(), requestType);
+ }
+
+ protected CoserBusinessConfig getConfig() {
+ return applicationContext.getConfig();
+ }
+
+ protected ZoneMap getZoneMap() {
+ return applicationContext.getZoneMap();
+ }
+
+ protected Extracts getExtracts() {
+ return applicationContext.getExtracts();
+ }
+
+ protected CoserMainRepositoryProvider getInternalRepositoryProvider() {
+ return applicationContext.getRepositoryProvider();
+ }
+
+ class NewUploadContext {
+
+ final CoserRequestContext context;
+
+ // existing zones for indicator results
+ Map<String, String> indicatorResults = Maps.newHashMap();
+
+ // existing zones for map results
+ Map<String, String> mapsResults = Maps.newHashMap();
+
+ // existing zones for raw data results
+ Map<String, String> dataResults = Maps.newHashMap();
+
+ // incoming zones for not indicator results
+ Map<String, String> noIndicatorsResultZoneIds = Maps.newHashMap();
+
+ // incoming zones for not map results
+ Map<String, String> noMapsResultZoneIds = Maps.newHashMap();
+
+ // incoming zones for not raw data results
+ Map<String, String> noDataResultZoneIds = Maps.newHashMap();
+
+ // incoming zones for indicator results
+ Map<String, String> indicatorsResultZoneIds = Maps.newHashMap();
+
+ // incoming zones for map results
+ Map<String, String> mapsResultZoneIds = Maps.newHashMap();
+
+ // incoming zones for raw data results
+ Map<String, String> dataResultZoneIds = Maps.newHashMap();
+
+ NewUploadContext(CoserRequestContext context) {
+ this.context = context;
+ }
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Duplicate code from WebService ---------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ /**
+ * Envoi un mail de notification apres la publication des resultat à la
+ * liste des adresses email renseignées dans la configuration.
+ *
+ * @param login user login
+ * @param count updated data count
+ * @param detail body mail detail
+ */
+ protected void sendNewResultNotifications(String login, int count, String detail) {
+ List<String> emails = getConfig().getNewResultNotificationList();
+
+ for (String email : emails) {
+ try {
+ MultiPartEmail emailPart = new MultiPartEmail();
+ emailPart.setHostName(getConfig().getSmtpHost());
+ emailPart.addTo(email);
+ emailPart.setFrom("noreply-coser(a)ifremer.fr", "Coser");
+ emailPart.setSubject(t("coser.business.notificationmail.subject", count));
+ emailPart.setContent(t("coser.business.notificationmail.body", login, detail), "text/plain; charset=ISO-8859-9");
+
+ // send mail
+ emailPart.send();
+ } catch (EmailException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't send mail", ex);
+ }
+ }
+ }
+ }
+
+ /**
+ * Fait le menage dans le dossier courant des projets en supprimant
+ * tout les resulat qui ont un result id present dans la liste
+ * {@code newResultIds}.
+ * <p/>
+ * Supprime egalement les selections qui n'ont plus de résultats et
+ * les projets qui n'ont plus de selection.
+ *
+ * @param projectService service to load project
+ * @param projectsDirectory projectsDirectory
+ * @param newResultIds new ids
+ * @throws CoserBusinessException
+ */
+ protected void cleanCurrentProjectDirectory(ProjectService projectService,
+ File projectsDirectory,
+ Collection<String> newResultIds) throws CoserBusinessException {
+
+ try {
+ File[] projectFiles = projectsDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ int projectSelectionCount = 0;
+
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ int selectionResultCount = 0;
+
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+ String resultResultId = rsufiResult.getZone();
+ if (newResultIds.contains(resultResultId)) {
+ // un nouveau resulat utilsera ce resultid
+ FileUtils.deleteDirectory(resultFile);
+ } else {
+ // un resultat valid trouvé, selection non a supprimer
+ selectionResultCount++;
+ }
+ }
+ }
+ }
+
+ // si aucun resultat valide, suppression de la seletion
+ if (selectionResultCount == 0) {
+ FileUtils.deleteDirectory(selectionFile);
+ } else {
+ projectSelectionCount++;
+ }
+ }
+ }
+ }
+
+ // si aucune selection avec resultat, suppression du projet
+ if (projectSelectionCount == 0) {
+ FileUtils.deleteDirectory(projectFile);
+ }
+ }
+ }
+ }
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't delete directory", ex);
+ }
+ }
+
+ /**
+ * Retourne un file filter qui ne copiera que les dossiers resultat
+ * correspondant au type demandé. Pour un resultat, le filtre devra
+ * egalement copier les dossiers projet et selection correspondants.
+ *
+ * @param projectService service to load project
+ * @param scanDirectory directory containing result to copy
+ * @param mapResults result type to get
+ * @return aggragated file filter
+ * @throws CoserBusinessException
+ */
+ protected FileFilter getCopyFileFilter(ProjectService projectService,
+ File scanDirectory,
+ boolean mapResults) throws CoserBusinessException {
+
+ MultipleFileFilter aggregateFileFilter = new MultipleFileFilter();
+
+ File[] projectFiles = scanDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // return result depending on result type
+ if ((mapResults && rsufiResult.isMapsResult()) ||
+ (!mapResults && rsufiResult.isIndicatorsResult())) {
+
+ Project p = new Project(projectFile.getName());
+ Selection s = new Selection(selectionFile.getName());
+
+ OneRSufiResultFileFilter resultFileFilter = new OneRSufiResultFileFilter(scanDirectory, p, s, rsufiResult, true);
+ aggregateFileFilter.add(resultFileFilter);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return aggregateFileFilter;
+ }
+
+ /**
+ * Recupere dans un repertoire donné, les zoneid des resultat avec
+ * pour chaque id, le nom du projet associé.
+ * <p/>
+ * Les boolean sont des grands {@code Boolean} car si la valeur
+ * est {@code null}, on ne tient pas compte du critere lors de la recherche.
+ *
+ * @param projectService service to load project
+ * @param scanDirectory le repertoire a scanner
+ * @param indicatorResults if true get indicator results
+ * @param mapResults if true get map results
+ * @param dataResults if true get data allowed result
+ * @return une map de resultid/nom visuel des projets
+ * @throws CoserBusinessException
+ */
+ protected Map<String, String> getZonesIds(ProjectService projectService,
+ File scanDirectory,
+ Boolean indicatorResults,
+ Boolean mapResults,
+ Boolean dataResults) throws CoserBusinessException {
+
+ Map<String, String> resultIds = new HashMap<String, String>();
+ File[] projectFiles = scanDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // return result depending on result type
+ if ((indicatorResults == null || rsufiResult.isIndicatorsResult() == indicatorResults)
+ &&
+ (mapResults == null || rsufiResult.isMapsResult() == mapResults)
+ &&
+ (dataResults == null || rsufiResult.isDataAllowed() == dataResults)) {
+ String resultResultId = rsufiResult.getZone();
+ if (StringUtils.isNotBlank(resultResultId)) {
+ String resultPath = projectFile.getName() + "/" +
+ selectionFile.getName() + "/" +
+ resultFile.getName();
+ resultIds.put(resultResultId, resultPath);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return resultIds;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebResultService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
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 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2014-03-19 10:56:06 UTC (rev 1159)
@@ -149,6 +149,7 @@
coser.business.result.repository.type.legacy=RSufi results
coser.business.result.rsufiResultAlreadyExists=Result %s already exists \!
coser.business.resultupload.duplicatedresult=Result %s/%s/%s duplicate another result for zone %s \!
+coser.business.resultupload.duplicatedresult2=Result %s duplicate another result for zone %s \!
coser.business.rsufi.community.header=Survey,Index,Species,Stratum,Year,Estimate,StandardDeviation,CV
coser.business.rsufi.population.header=Survey,Index,List,Species,Stratum,Year,Estimate,StandardDeviation,CV
coser.business.selection.notValidatedControl=Not validated control \!
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 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2014-03-19 10:56:06 UTC (rev 1159)
@@ -149,6 +149,7 @@
coser.business.result.repository.type.legacy=Résultats RSufi
coser.business.result.rsufiResultAlreadyExists=Le résultat %s existe déjà \!
coser.business.resultupload.duplicatedresult=Le résultat %s/%s/%s duplique un autre résultat pour la zone %s \!
+coser.business.resultupload.duplicatedresult2=Le résultat %s duplique un autre résultat pour la zone %s \!
coser.business.rsufi.community.header=Campagne,Liste,Espèce,Strate,Annee,Estimation,EcartType,CV
coser.business.rsufi.population.header=Campagne,Indice,Liste,Espèce,Strate,Annee,Estimation,EcartType,CV
coser.business.selection.notValidatedControl=Contrôle non validé \!
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebApplicationContext.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebApplicationContext.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebApplicationContext.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -23,8 +23,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.DefaultCoserApplicationContext;
-import fr.ifremer.coser.result.CoserRequestExecutor;
-import fr.ifremer.coser.services.WebService;
import org.nuiton.i18n.I18n;
import org.nuiton.i18n.init.DefaultI18nInitializer;
@@ -68,14 +66,4 @@
public CoserWebConfig getConfig() {
return (CoserWebConfig) config;
}
-
- public WebService getWebService() {
- return new WebService(config);
- }
-
- public CoserRequestExecutor getRequestExecutor() {
- CoserRequestExecutor service = new CoserRequestExecutor(this);
- return service;
- }
-
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -22,19 +22,14 @@
*/
import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
-import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.result.CoserRequest;
import fr.ifremer.coser.result.CoserRequestContext;
-import fr.ifremer.coser.result.CoserRequestExecutor;
-import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.DefaultCoserRequestContext;
import fr.ifremer.coser.result.repository.ResultRepositoryType;
import fr.ifremer.coser.result.request.DeleteResultsRequest;
import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.result.MapResult;
-import fr.ifremer.coser.services.WebService;
+import fr.ifremer.coser.services.WebResultService;
import fr.ifremer.coser.web.actions.common.CoserAction;
import java.io.File;
@@ -45,28 +40,25 @@
/**
* Wrap any call to business layer.
* <p/>
- * This was the easiest way to see also what's is really used from the business layer
- * and refactor Cobol-style (or Turbo-Pascal maybe?) previous code...
- * <p/>
* Created on 3/6/14.
*
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
+//TODO Inject this in action
public class ServiceHelper {
protected final CoserAction action;
- protected WebService webService;
-
- protected CoserRequestExecutor resultService;
-
protected final CoserWebApplicationContext applicationContext;
+ protected final WebResultService webResultService;
+
public ServiceHelper(CoserAction action) {
Preconditions.checkNotNull(action);
this.applicationContext = CoserWebApplicationContext.get();
this.action = action;
+ this.webResultService = new WebResultService(applicationContext);
}
// --------------------------------------------------------------------- //
@@ -103,7 +95,7 @@
}
public String getZoneDisplayName(CoserRequest request, String zone) {
- Map<String, String> availableZones = getMultipleResultAsMap(request);
+ Map<String, String> availableZones = toMap(request);
String displayName = availableZones.get(zone);
return displayName;
}
@@ -113,7 +105,7 @@
// --------------------------------------------------------------------- //
public String getSpeciesDisplayName(CoserRequest request, String species) {
- Map<String, String> availableSpecies = getMultipleResultAsMap(request);
+ Map<String, String> availableSpecies = toMap(request);
String displayName = availableSpecies.get(species);
return displayName;
}
@@ -123,7 +115,7 @@
// --------------------------------------------------------------------- //
public String getIndicatorDisplayName(CoserRequest request, String indicator) {
- Map<String, String> availableIndicators = getMultipleResultAsMap(request);
+ Map<String, String> availableIndicators = toMap(request);
String displayName = availableIndicators.get(indicator);
return displayName;
}
@@ -134,77 +126,37 @@
public FileResult extractRawDataAndResults(Locale locale,
ExtractRawDataAndResultsRequest request) {
-
CoserRequestContext context = newRequestContext(locale);
-
- FileResult result = getRequestExecutor().executeUnique(context, request);
-
+ FileResult result = webResultService.extractRawDataAndResults(context, request);
return result;
}
- public FileResult getFileResult(CoserRequest request) {
-
+ public void deleteResults(DeleteResultsRequest request) {
CoserRequestContext context = newRequestContext();
-
- CoserResult result = getRequestExecutor().executeUnique(context, request);
-
- if (!(result instanceof FileResult)) {
- throw new CoserWebException(
- "Result should a FileResult, but was: " + result);
- }
- FileResult fileResult = (FileResult) result;
- return fileResult;
+ webResultService.deleteResults(context, request);
}
- public MapResult getMapResult(CoserRequest request) {
-
+ public void registerNewUploadedResults(String login, File resultFile) {
CoserRequestContext context = newRequestContext();
-
- CoserResult result = getRequestExecutor().executeUnique(context, request);
-
- if (!(result instanceof MapResult)) {
- throw new CoserWebException(
- "Result should a MapResult, but was: " + result);
- }
- MapResult fileResult = (MapResult) result;
- return fileResult;
+ webResultService.registerNewUploadedResults(context, login, resultFile);
}
- public Map<String, String> getMultipleResultAsMap(CoserRequest request) {
-
+ public FileResult toFileResult(CoserRequest request) {
CoserRequestContext context = newRequestContext();
-
- List<CoserResult> result = getRequestExecutor().executeAll(context, request);
-
- Map<String, String> resultAsMap = Maps.newHashMap();
- for (CoserResult coserResult : result) {
- if (!(coserResult instanceof MapResult)) {
- throw new CoserWebException(
- "Result should a MapResult, but was: " + result);
- }
- Map<String, String> map = ((MapResult) coserResult).getResult();
- resultAsMap.putAll(map);
- }
- return resultAsMap;
+ FileResult result = webResultService.executeUnique(context, request).toFileResult();
+ return result;
}
- public void deleteResults(DeleteResultsRequest request) {
-
+ public MapResult toMapResult(CoserRequest request) {
CoserRequestContext context = newRequestContext();
-
- // do delete results (don't care about result)
- getRequestExecutor().deleteResults(context, request);
+ MapResult result = webResultService.executeUnique(context, request).toMapResult();
+ return result;
}
- public void registerNewUploadedResults(String login, File resultFile) {
- try {
- getWebService().registerNewUploadedResults(login, resultFile);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't register new result file", ex);
- }
-
- // reload projects
- applicationContext.getRepositoryProvider().resetRepositories();
+ public Map<String, String> toMap(CoserRequest request) {
+ CoserRequestContext context = newRequestContext();
+ Map<String, String> result = webResultService.executeAll(context, request).toMap();
+ return result;
}
// --------------------------------------------------------------------- //
@@ -216,36 +168,24 @@
}
public void reloadProjects() {
- applicationContext.getRepositoryProvider().resetRepositories();
+ webResultService.resetRepositories();
}
public Map<String, ResultRepositoryType> getRepositoryTypes() {
- Map<String, ResultRepositoryType> result = Maps.newHashMap();
- for (ResultRepositoryType resultRepositoryType : applicationContext.getRepositoryTypes()) {
- result.put(resultRepositoryType.getId(), resultRepositoryType);
- }
+ Map<String, ResultRepositoryType> result = webResultService.getRepositoryTypes();
return result;
}
- protected WebService getWebService() {
- if (webService == null) {
- webService = new WebService(getConfig());
- }
- return webService;
- }
+ // --------------------------------------------------------------------- //
+ // --- Internal methods ------------------------------------------------ //
+ // --------------------------------------------------------------------- //
- protected CoserRequestExecutor getRequestExecutor() {
- if (resultService == null) {
- resultService = new CoserRequestExecutor(applicationContext);
- }
- return resultService;
- }
-
protected CoserRequestContext newRequestContext() {
return newRequestContext(action.getLocale());
}
protected CoserRequestContext newRequestContext(Locale locale) {
- return new DefaultCoserRequestContext(applicationContext, locale);
+ return webResultService.newRequestContext(locale);
}
+
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -130,7 +130,7 @@
// get projects for this type
request.setResultType(resultType);
- Map<String, String> resultsForType = getService().getMultipleResultAsMap(request);
+ Map<String, String> resultsForType = getService().toMap(request);
results.put(resultType, resultsForType);
}
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -121,7 +121,7 @@
addZone(zone).
addIndicator(indicator).
toRequest();
- lists = getService().getMultipleResultAsMap(request);
+ lists = getService().toMap(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -112,12 +112,12 @@
addZone(zone).
addIndicator(indicator).
toRequest();
- Map<String, String> speciesMap = getService().getMultipleResultAsMap(speciesRequest);
+ Map<String, String> speciesMap = getService().toMap(speciesRequest);
if (MapUtils.isNotEmpty(speciesMap)) {
request.setSpecies(speciesMap.keySet().iterator().next());
}
}
- result = getService().getFileResult(request);
+ result = getService().toFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -112,13 +112,13 @@
addZone(zone).
addIndicator(indicator).
toRequest();
- Map<String, String> speciesMap = getService().getMultipleResultAsMap(speciesRequest);
+ Map<String, String> speciesMap = getService().toMap(speciesRequest);
if (MapUtils.isNotEmpty(speciesMap)) {
request.setSpecies(speciesMap.keySet().iterator().next());
}
}
- result = getService().getFileResult(request);
+ result = getService().toFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -95,7 +95,7 @@
public String execute() {
CoserRequest request = createIndicatorsRequest();
- indicators = getService().getMultipleResultAsMap(request);
+ indicators = getService().toMap(request);
zonePicture = getService().getZonePictures().get(zone);
return SUCCESS;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -82,7 +82,7 @@
public String execute() {
CoserRequest request = createZonesRequest();
- zones = getService().getMultipleResultAsMap(request);
+ zones = getService().toMap(request);
zonesPictures = getService().getZonePictures();
zonesMetaInfo = getService().getZoneMetaInfo(getLocale());
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -93,7 +93,7 @@
if (log.isInfoEnabled()) {
log.info("Looking for map of species: " + request.getSpecies());
}
- result = getService().getFileResult(request);
+ result = getService().toFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -95,7 +95,7 @@
addFacade(facade).
addZone(zone).
toRequest();
- species = getService().getMultipleResultAsMap(request);
+ species = getService().toMap(request);
if (log.isDebugEnabled()) {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -98,7 +98,7 @@
addSpecies(species).
addIndicator(indicator).
toRequest();
- result = getService().getFileResult(request);
+ result = getService().toFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -96,7 +96,7 @@
addSpecies(species).
addIndicator(indicator).
toRequest();
- result = getService().getFileResult(request);
+ result = getService().toFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -101,7 +101,7 @@
addFacade(facade).
addZone(zone).
toRequest();
- species = getService().getMultipleResultAsMap(request);
+ species = getService().toMap(request);
if (log.isDebugEnabled()) {
log.debug("Species are : " + species);
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -22,11 +22,11 @@
package fr.ifremer.coser.web.actions.search;
import com.google.common.collect.Lists;
-import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
import fr.ifremer.coser.result.request.GetIndicatorsForExtractRawDataAndResultsRequest;
import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest;
import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.util.DataType;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.collections4.CollectionUtils;
@@ -192,7 +192,7 @@
GetZonesForExtractRawDataAndResultsRequest zonesRequest =
requestBuilder(GetZonesForExtractRawDataAndResultsRequest.class).
toRequest();
- zones = getService().getMultipleResultAsMap(zonesRequest);
+ zones = getService().toMap(zonesRequest);
if (CollectionUtils.isNotEmpty(selectZones)) {
@@ -201,7 +201,7 @@
addZoneList(selectZones).
addExtractTypeList(selectTypes).
toRequest();
- species = getService().getMultipleResultAsMap(speciesRequest);
+ species = getService().toMap(speciesRequest);
if (selectTypes != null) {
@@ -213,12 +213,12 @@
if (selectTypes.contains(DataType.COMMUNITY)) {
indicatorsRequest.setExtractTypeList(Lists.newArrayList(DataType.COMMUNITY));
- comIndicators = getService().getMultipleResultAsMap(indicatorsRequest);
+ comIndicators = getService().toMap(indicatorsRequest);
}
if (selectTypes.contains(DataType.POPULATION)) {
indicatorsRequest.setExtractTypeList(Lists.newArrayList(DataType.POPULATION));
- popIndicators = getService().getMultipleResultAsMap(indicatorsRequest);
+ popIndicators = getService().toMap(indicatorsRequest);
}
}
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java 2014-03-19 10:54:43 UTC (rev 1158)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java 2014-03-19 10:56:06 UTC (rev 1159)
@@ -63,7 +63,7 @@
addFacade(facade).
addZone(zone).
toRequest();
- result = getService().getFileResult(request);
+ result = getService().toFileResult(request);
return SUCCESS;
}
1
0
19 Mar '14
Author: tchemit
Date: 2014-03-19 11:54:43 +0100 (Wed, 19 Mar 2014)
New Revision: 1158
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1158
Log:
fixes #4690 : Pouvoir s?\195?\169lectionner les r?\195?\169sultats echobase et les publier depuis le client
Added:
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/GlobalResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CopyRepositoryRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetResultNameRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/
trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/MultipleFileFilter.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/OneEchobaseFileFilter.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/OneRSufiResultFileFilter.java
trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.echobase
trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.echobase
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/ExportUploadDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultZoneRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/SelectUploadResultView.jaxx
Removed:
trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties
trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesListMap.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesMap.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorage.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/MemoryDataStorage.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -22,6 +22,18 @@
package fr.ifremer.coser;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.nuiton.util.FileUtil;
+import org.w3c.dom.Document;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.File;
+import java.io.FileFilter;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
@@ -37,23 +49,14 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.commons.lang3.StringUtils;
-import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
/**
* Coser utility class.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class CoserUtils {
@@ -66,13 +69,13 @@
* Converti une collection de string en une string
* delimité par les () pour pouvoir être facilement relu par
* {@link #splitWithBrackets(String, char)}
- *
+ *
* @param args
* @return string
*/
public static String convertBracketString(List<String> args) {
StringBuffer buffer = new StringBuffer();
-
+
Iterator<String> itArgs = args.iterator();
while (itArgs.hasNext()) {
buffer.append('(');
@@ -93,15 +96,15 @@
/**
* Split line counting opened ( and ) and take care about escaped \\).
- *
- * @param str string to parse
+ *
+ * @param str string to parse
* @param separator to take care
* @return string splited
*/
protected static List<String> splitWithBrackets(String str, char separator) {
List<String> result = new ArrayList<String>();
-
+
StringBuffer op = new StringBuffer(); // stack of {([< currently open
int opened = 0;
boolean escapeNext = false;
@@ -111,8 +114,7 @@
if (escapeNext) {
op.append(c);
escapeNext = false;
- }
- else if (c == '\\') {
+ } else if (c == '\\') {
escapeNext = true;
} else if (c == '(') {
op.append(c);
@@ -124,15 +126,14 @@
if (opened == 0) {
result.add(op.toString());
op = new StringBuffer();
- }
- else {
+ } else {
op.append(c);
}
} else {
op.append(c);
}
}
-
+
if (op.length() > 0) {
result.add(op.toString());
}
@@ -142,7 +143,7 @@
/**
* Parse la string avec les gestions des () en les supprimant.
- *
+ *
* @param argsString string to parse
* @return parse list
*/
@@ -169,12 +170,12 @@
/**
* Dans un nom de fichier, ajoute un suffix dans le nom du fichier
* juste avant l'extension.
- *
+ * <p/>
* Exemple :
- * captures.csv > captures_co.csv (ajout du suffix _co)
- * captures > captures_co (si pas d'extension)
- *
- * @param str nom du fichier
+ * captures.csv > captures_co.csv (ajout du suffix _co)
+ * captures > captures_co (si pas d'extension)
+ *
+ * @param str nom du fichier
* @param suffix suffix a ajouter
* @return nouveau nom du fichier
*/
@@ -183,8 +184,7 @@
Matcher matcher = FILENAME_SUFFIX_PATTERN.matcher(str);
if (matcher.matches()) {
result = matcher.group(1) + suffix + matcher.group(2);
- }
- else {
+ } else {
result = str + suffix;
}
return result;
@@ -192,7 +192,7 @@
/**
* Split string as string list using "," separator.
- *
+ *
* @param str string to split
* @return string list
*/
@@ -204,10 +204,10 @@
/**
* Convert string to {@link Document}.
- *
+ *
* @param content content
* @return document
- * @throws IOException
+ * @throws IOException
*/
public static Document parseDocument(String content) throws IOException {
Document result = null;
@@ -226,15 +226,15 @@
/**
* Sort a map by value.
* See http://stackoverflow.com/a/2581754/1165234
- *
+ *
* @param map map to sort
* @return sorted map
*/
public static <K, V extends Comparable<? super V>> LinkedHashMap<K, V> sortByValue(Map<K, V> map) {
List<Map.Entry<K, V>> list = new LinkedList<Map.Entry<K, V>>(map.entrySet());
- Collections.sort( list, new Comparator<Map.Entry<K, V>>() {
- public int compare( Map.Entry<K, V> o1, Map.Entry<K, V> o2 ) {
- return (o1.getValue()).compareTo( o2.getValue() );
+ Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
+ public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {
+ return (o1.getValue()).compareTo(o2.getValue());
}
});
LinkedHashMap<K, V> result = new LinkedHashMap<K, V>();
@@ -246,8 +246,8 @@
/**
* Sort a collection with order defined by a LinkedHashMap keySet.
- *
- * @param map map containing order in keys
+ *
+ * @param map map containing order in keys
* @param list list to sort
* @return list sorted
*/
@@ -256,4 +256,32 @@
keys.retainAll(list);
return keys;
}
+
+ /**
+ * N'utilise pas la methode de commons-fileutils, car lorsqu'un répertoire
+ * est refusé, il ne descend pas dans les sous répertoire alors que dans
+ * notre cas il le faut.
+ *
+ * @param srcDir source directory to copy
+ * @param destDir destination directory
+ * @param fileFilter file filter for file to copy
+ * @throws IOException
+ */
+ public static void customCopyDirectory(File srcDir,
+ File destDir,
+ FileFilter fileFilter) throws IOException {
+ List<File> files = FileUtil.getFilteredElements(srcDir, null, true);
+ for (File file : files) {
+ if (fileFilter.accept(file)) {
+ String path = file.getPath().substring(srcDir.getPath().length());
+
+ File destFile = new File(destDir, path);
+ if (file.isDirectory()) {
+ FileUtils.forceMkdir(destFile);
+ } else {
+ FileUtils.copyFile(file, destFile);
+ }
+ }
+ }
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -24,6 +24,7 @@
import com.google.common.base.Charsets;
import com.google.common.base.Function;
+import com.google.common.base.Preconditions;
import com.google.common.io.Files;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.filefilter.RegexFileFilter;
@@ -50,7 +51,7 @@
private static final long serialVersionUID = 1L;
- public static final String METADATA_FILE = "project.properties";
+ public static final String METADATA_FILE = "project.echobase";
/**
* Base directory of the project.
@@ -73,6 +74,7 @@
protected boolean publiableResult;
public EchoBaseProject(File basedir) {
+ Preconditions.checkNotNull(basedir);
this.basedir = basedir;
}
@@ -196,6 +198,19 @@
}
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof EchoBaseProject)) return false;
+ EchoBaseProject that = (EchoBaseProject) o;
+ return basedir.equals(that.basedir);
+ }
+
+ @Override
+ public int hashCode() {
+ return basedir.hashCode();
+ }
+
protected File getMetaDataFile() {
return new File(basedir, METADATA_FILE);
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/GlobalResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/GlobalResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/GlobalResult.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,166 @@
+package fr.ifremer.coser.bean;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * 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%
+ */
+
+import com.google.common.base.Preconditions;
+
+import java.io.File;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * To box a rsufi result, or a echobase result.
+ *
+ * TODO Should use the result request API instead, but no more time for this.
+ *
+ * Created on 3/17/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GlobalResult implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final RSufiResultPath rsufiProject;
+
+ protected final EchoBaseProject echobaseProject;
+
+ public GlobalResult(RSufiResultPath result) {
+ Preconditions.checkNotNull(result);
+ this.rsufiProject = result;
+ this.echobaseProject = null;
+ }
+
+ public GlobalResult(EchoBaseProject echoBaseProject) {
+ Preconditions.checkNotNull(echoBaseProject);
+ this.echobaseProject = echoBaseProject;
+ this.rsufiProject = null;
+ }
+
+ public static boolean isRsufiProject(File projectDirectory) {
+ boolean result = projectDirectory.isDirectory();
+ if (result) {
+ File file = new File(projectDirectory, EchoBaseProject.METADATA_FILE);
+ result = file.exists() && file.isFile();
+ }
+ return result;
+ }
+
+ public static boolean isEchobaseProject(File projectDirectory) {
+ boolean result = projectDirectory.isDirectory();
+ if (result) {
+ File file = new File(projectDirectory, EchoBaseProject.METADATA_FILE);
+ result = file.exists() && file.isFile();
+ }
+ return result;
+ }
+
+ public boolean isRsufi() {
+ return rsufiProject != null;
+ }
+
+ public boolean isEchoBase() {
+ return echobaseProject != null;
+ }
+
+ public Date getCreationDate() {
+ Date result;
+ if (isRsufi()) {
+ result = rsufiProject.getRsufiResult().getCreationDate();
+ } else {
+ result = echobaseProject.getCreationDate();
+ }
+ return result;
+ }
+
+ public String getZone() {
+ String result;
+ if (isRsufi()) {
+ result = rsufiProject.getRsufiResult().getZone();
+ } else {
+ result = echobaseProject.getZoneName();
+ }
+ return result;
+ }
+
+ public RSufiResultPath getRsufiProject() {
+ return rsufiProject;
+ }
+
+ public EchoBaseProject getEchobaseProject() {
+ return echobaseProject;
+ }
+
+ public boolean isPubliableResult() {
+ return isRsufi() ? rsufiProject.getRsufiResult().isPubliableResult() : echobaseProject.isPubliableResult();
+ }
+
+ public boolean isIndicatorsResult() {
+ return !isRsufi() || rsufiProject.getRsufiResult().isPubliableResult();
+ }
+
+ public void setIndicatorsResult(boolean indicatorsResult) {
+ if (isRsufi()) {
+ rsufiProject.getRsufiResult().setIndicatorsResult(indicatorsResult);
+ }
+ }
+
+ public boolean isMapsResult() {
+ return !isRsufi() || rsufiProject.getRsufiResult().isMapsResult();
+ }
+
+ public void setMapsResult(boolean mapsResult) {
+ if (isRsufi()) {
+ rsufiProject.getRsufiResult().setMapsResult(mapsResult);
+ }
+ }
+
+ public boolean isDataAllowed() {
+ return !isRsufi() || rsufiProject.getRsufiResult().isDataAllowed();
+ }
+
+ public void setDataAllowed(boolean dataAllowed) {
+ if (isRsufi()) {
+ rsufiProject.getRsufiResult().setDataAllowed(dataAllowed);
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ return isRsufi() ? rsufiProject.hashCode() : echobaseProject.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ boolean result = obj instanceof GlobalResult &&
+ (isRsufi() ? rsufiProject.equals(obj) : echobaseProject.equals(obj));
+ return result;
+ }
+
+ public String getName() {
+ return isRsufi() ? String.format("%s/%s/%s", rsufiProject.getProject().getName(),
+ rsufiProject.getSelection().getName(),
+ rsufiProject.getRsufiResult().getName()) : echobaseProject.getName();
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/GlobalResult.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -33,6 +33,7 @@
import org.apache.commons.logging.LogFactory;
import java.io.File;
+import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
import java.util.Locale;
@@ -47,8 +48,10 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class IndicatorMap {
+public class IndicatorMap implements Serializable {
+ private static final long serialVersionUID = 1L;
+
/** Logger. */
private static final Log log = LogFactory.getLog(IndicatorMap.class);
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -22,24 +22,30 @@
package fr.ifremer.coser.bean;
+import com.google.common.base.Preconditions;
+
+import java.io.Serializable;
+
/**
* Object utilitaire represantant un path vers un résultat (projet / selection
* / rsufiresult) utilisé par l'interface d'admin et l'upload de resultat
* vers l'interface web.
- *
+ * <p/>
* L'egalité et le hashcode sont basé sur les {@link Project#name},
* {@link Selection#name}, et {@link RSufiResult#name}.
- *
+ * <p/>
* Les attribut sont finaux car le hashcode est basé dessus.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
-public class RSufiResultPath {
+public class RSufiResultPath implements Serializable {
+ private static final long serialVersionUID = 1L;
+
/** Final project. */
protected final Project project;
@@ -51,12 +57,15 @@
/**
* Constructor with full path.
- *
- * @param project project (can't be null)
- * @param selection selection (can't be null)
+ *
+ * @param project project (can't be null)
+ * @param selection selection (can't be null)
* @param rsufiResult rsufiresult (can't be null)
*/
public RSufiResultPath(Project project, Selection selection, RSufiResult rsufiResult) {
+ Preconditions.checkNotNull(project);
+ Preconditions.checkNotNull(selection);
+ Preconditions.checkNotNull(rsufiResult);
this.project = project;
this.selection = selection;
this.rsufiResult = rsufiResult;
@@ -64,7 +73,7 @@
/**
* Get project.
- *
+ *
* @return project
*/
public Project getProject() {
@@ -73,7 +82,7 @@
/**
* Get selection.
- *
+ *
* @return selection
*/
public Selection getSelection() {
@@ -82,7 +91,7 @@
/**
* Get result.
- *
+ *
* @return result
*/
public RSufiResult getRsufiResult() {
@@ -104,7 +113,7 @@
if (!(obj instanceof RSufiResultPath)) {
result = false;
} else {
- RSufiResultPath other = (RSufiResultPath)obj;
+ RSufiResultPath other = (RSufiResultPath) obj;
result &= project.getName().equals(other.project.getName());
result &= selection.getName().equals(other.selection.getName());
result &= rsufiResult.getName().equals(other.rsufiResult.getName());
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesListMap.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesListMap.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesListMap.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -31,6 +31,7 @@
import org.nuiton.i18n.I18n;
import java.io.File;
+import java.io.Serializable;
import java.util.Collection;
import java.util.Iterator;
import java.util.Locale;
@@ -42,8 +43,10 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class SpeciesListMap {
+public class SpeciesListMap implements Serializable {
+ private static final long serialVersionUID = 1L;
+
/**
* Species' list storage.
*/
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesMap.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesMap.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesMap.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -28,6 +28,7 @@
import org.apache.commons.lang3.StringUtils;
import java.io.File;
+import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
@@ -39,8 +40,10 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class SpeciesMap {
+public class SpeciesMap implements Serializable {
+ private static final long serialVersionUID = 1L;
+
/**
* Species' storage.
*/
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -29,6 +29,7 @@
import fr.ifremer.coser.storage.MemoryDataStorage;
import java.io.File;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -45,8 +46,10 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class ZoneMap {
+public class ZoneMap implements Serializable{
+ private static final long serialVersionUID = 1L;
+
protected final DataStorage storage;
public ZoneMap(File zonesFile) {
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -24,10 +24,11 @@
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import fr.ifremer.coser.result.CoserCommand;
import fr.ifremer.coser.result.CoserRequest;
import fr.ifremer.coser.result.ResultType;
-import fr.ifremer.coser.result.CoserCommand;
import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import fr.ifremer.coser.result.repository.echobase.command.CopyRepositoryCommand;
import fr.ifremer.coser.result.repository.echobase.command.DeleteResultsCommand;
import fr.ifremer.coser.result.repository.echobase.command.ExtractRawDataAndResultsCommand;
import fr.ifremer.coser.result.repository.echobase.command.ExtractRawDataCommand;
@@ -40,6 +41,7 @@
import fr.ifremer.coser.result.repository.echobase.command.GetMapResultCommand;
import fr.ifremer.coser.result.repository.echobase.command.GetPopulationIndicatorResultDataCommand;
import fr.ifremer.coser.result.repository.echobase.command.GetPopulationIndicatorResultGraphCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetResultNameCommand;
import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForExtractRawDataAndResultsCommand;
import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForMapResultCommand;
import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForPopulationIndicatorResultCommand;
@@ -49,6 +51,7 @@
import fr.ifremer.coser.result.repository.echobase.command.GetZonesForExtractRawDataCommand;
import fr.ifremer.coser.result.repository.echobase.command.GetZonesForMapResultCommand;
import fr.ifremer.coser.result.repository.echobase.command.GetZonesForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.request.CopyRepositoryRequest;
import fr.ifremer.coser.result.request.DeleteResultsRequest;
import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
import fr.ifremer.coser.result.request.ExtractRawDataRequest;
@@ -61,6 +64,7 @@
import fr.ifremer.coser.result.request.GetMapResultRequest;
import fr.ifremer.coser.result.request.GetPopulationIndicatorResultDataRequest;
import fr.ifremer.coser.result.request.GetPopulationIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.request.GetResultNameRequest;
import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest;
import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
@@ -146,6 +150,10 @@
// delete results
result.put(DeleteResultsRequest.class, DeleteResultsCommand.class);
+
+ // add results
+ result.put(GetResultNameRequest.class, GetResultNameCommand.class);
+ result.put(CopyRepositoryRequest.class, CopyRepositoryCommand.class);
return result;
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,58 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.CoserUtils;
+import fr.ifremer.coser.result.request.CopyRepositoryRequest;
+import fr.ifremer.coser.result.result.VoidResult;
+import org.apache.commons.io.filefilter.FileFilterUtils;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Created on 3/18/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CopyRepositoryCommand extends AbstractEchoBaseCommand<CopyRepositoryRequest> {
+
+ @Override
+ public boolean accept(CopyRepositoryRequest request) {
+ return repository.matchZone(request);
+ }
+
+ @Override
+ public VoidResult execute(CopyRepositoryRequest request) {
+ File basedir = repository.getBasedir();
+ File targetDirectory = request.getTargetDirectory();
+ try {
+ CoserUtils.customCopyDirectory(basedir, targetDirectory, FileFilterUtils.trueFileFilter());
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not copy files", e);
+ }
+ return newVoidResult();
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/CopyRepositoryCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,52 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.request.GetResultNameRequest;
+import fr.ifremer.coser.result.result.MapResult;
+
+import java.util.Map;
+
+/**
+ * Created on 3/18/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetResultNameCommand extends AbstractEchoBaseCommand<GetResultNameRequest> {
+
+ @Override
+ public boolean accept(GetResultNameRequest request) {
+ return repository.matchExtractTypeList(request);
+ }
+
+ @Override
+ public MapResult execute(GetResultNameRequest request) {
+ String zoneId = repository.getZone();
+ String resultname = repository.getProjectName();
+ Map<String, String> map = Maps.newHashMap();
+ map.put(zoneId, resultname);
+ return newMapResult(map);
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetResultNameCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -24,9 +24,9 @@
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import fr.ifremer.coser.result.CoserCommand;
import fr.ifremer.coser.result.CoserRequest;
import fr.ifremer.coser.result.ResultType;
-import fr.ifremer.coser.result.CoserCommand;
import fr.ifremer.coser.result.repository.ResultRepositoryType;
import fr.ifremer.coser.result.repository.legacy.command.DeleteResultsCommand;
import fr.ifremer.coser.result.repository.legacy.command.ExtractRawDataAndResultsCommand;
@@ -40,6 +40,7 @@
import fr.ifremer.coser.result.repository.legacy.command.GetMapResultCommand;
import fr.ifremer.coser.result.repository.legacy.command.GetPopulationIndicatorResultDataCommand;
import fr.ifremer.coser.result.repository.legacy.command.GetPopulationIndicatorResultGraphCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetResultNameCommand;
import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForExtractRawDataAndResultsCommand;
import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForMapResultCommand;
import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForPopulationIndicatorResultCommand;
@@ -61,6 +62,7 @@
import fr.ifremer.coser.result.request.GetMapResultRequest;
import fr.ifremer.coser.result.request.GetPopulationIndicatorResultDataRequest;
import fr.ifremer.coser.result.request.GetPopulationIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.request.GetResultNameRequest;
import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest;
import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
@@ -149,6 +151,10 @@
// delete results
result.put(DeleteResultsRequest.class, DeleteResultsCommand.class);
+
+ // add results
+ result.put(GetResultNameRequest.class, GetResultNameCommand.class);
+
return result;
}
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,54 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.request.GetResultNameRequest;
+import fr.ifremer.coser.result.result.MapResult;
+
+import java.util.Map;
+
+/**
+ * Created on 3/18/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetResultNameCommand extends AbstractLegacyCommand<GetResultNameRequest> {
+
+ @Override
+ public boolean accept(GetResultNameRequest request) {
+ return repository.matchExtractTypeList(request);
+ }
+
+ @Override
+ public MapResult execute(GetResultNameRequest request) {
+ String zoneId = repository.getZone();
+ String resultname = repository.getProjectName() + "/" +
+ repository.getSelectionName() + "/" +
+ repository.getResultName();
+ Map<String, String> map = Maps.newHashMap();
+ map.put(zoneId, resultname);
+ return newMapResult(map);
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetResultNameCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CopyRepositoryRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CopyRepositoryRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CopyRepositoryRequest.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,71 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Created on 3/18/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CopyRepositoryRequest implements CoserRequest, CoserRequestZoneListAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected List<String> zoneList;
+
+ protected File targetDirectory;
+
+ public File getTargetDirectory() {
+ return targetDirectory;
+ }
+
+ public void setTargetDirectory(File targetDirectory) {
+ Preconditions.checkNotNull(targetDirectory);
+ this.targetDirectory = targetDirectory;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return targetDirectory != null && CollectionUtils.isNotEmpty(zoneList);
+ }
+
+ @Override
+ public List<String> getZoneList() {
+ return zoneList;
+ }
+
+ @Override
+ public void setZoneList(List<String> zoneList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
+ this.zoneList = zoneList;
+
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CopyRepositoryRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetResultNameRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetResultNameRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetResultNameRequest.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,59 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.util.DataType;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * Created on 3/18/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetResultNameRequest implements CoserRequest, CoserRequestExtractTypeListAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected List<DataType> extractTypeList;
+
+ @Override
+ public List<DataType> getExtractTypeList() {
+ return extractTypeList;
+ }
+
+ @Override
+ public void setExtractTypeList(List<DataType> extractTypeList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeList));
+ this.extractTypeList = extractTypeList;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return CollectionUtils.isNotEmpty(extractTypeList);
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetResultNameRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,579 @@
+package fr.ifremer.coser.services;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserBusinessException;
+import fr.ifremer.coser.CoserConstants;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.bean.EchoBaseProject;
+import fr.ifremer.coser.bean.GlobalResult;
+import fr.ifremer.coser.bean.Project;
+import fr.ifremer.coser.bean.RSufiResult;
+import fr.ifremer.coser.bean.RSufiResultPath;
+import fr.ifremer.coser.bean.Selection;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryType;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryType;
+import fr.ifremer.coser.util.InputStreamKnownSizeBody;
+import fr.ifremer.coser.util.ProgressMonitor;
+import fr.ifremer.coser.util.ProgressStream;
+import fr.ifremer.coser.util.io.MultipleFileFilter;
+import fr.ifremer.coser.util.io.OneEchobaseFileFilter;
+import fr.ifremer.coser.util.io.OneRSufiResultFileFilter;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.filefilter.FileFilterUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.http.Consts;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.mime.HttpMultipartMode;
+import org.apache.http.entity.mime.MultipartEntityBuilder;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.StringUtil;
+import org.nuiton.util.ZipUtil;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * Service to be used only by the ui client to extract and publish results.
+ * <p/>
+ * Created on 3/17/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ClientResultService {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(ClientResultService.class);
+
+ protected CoserBusinessConfig config;
+
+ protected ProjectService projectService;
+
+ public ClientResultService(CoserBusinessConfig config) {
+ this.config = config;
+ this.projectService = new ProjectService(config);
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Public API ------------------------------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ /**
+ * Retourne tous les projets qui ont des résultats.
+ * <p/>
+ * De la forme d'une liste de de path (à la tree path) :
+ * ProjetName/SelectionName/ResultName
+ *
+ * @param beginDate begin date (can be null)
+ * @param endDate end date (can be null)
+ * @param onlyPubliableResult select only publiable results
+ * @return results paths
+ * @throws CoserBusinessException
+ */
+ public List<GlobalResult> findAllProjectWithResult(Date beginDate,
+ Date endDate,
+ boolean onlyPubliableResult) throws CoserBusinessException {
+ List<GlobalResult> results = Lists.newArrayList();
+
+ // loop on projets
+ File projectsDirectory = config.getProjectsDirectory();
+ File[] projects = projectsDirectory.listFiles();
+ if (projects != null) {
+ for (File existingProject : projects) {
+ if (existingProject.isDirectory()) {
+
+ if (GlobalResult.isEchobaseProject(existingProject)) {
+
+ Collection<GlobalResult> echoBaseResults =
+ getEchoBaseResults(existingProject,
+ beginDate,
+ endDate,
+ onlyPubliableResult);
+ results.addAll(echoBaseResults);
+ } else {
+
+ Collection<GlobalResult> rsufiResults =
+ getRsufiResults(existingProject,
+ beginDate,
+ endDate,
+ onlyPubliableResult);
+ results.addAll(rsufiResults);
+ }
+ }
+ }
+ }
+
+ return results;
+ }
+
+ /**
+ * Upload user selected result to coser web front-end using common http
+ * client.
+ * <p/>
+ * TODO remove les 4 listes s'il y a mieux.
+ *
+ * @param selectedResults selected result (collection of project/selection/rsufiresult)
+ * @param indicatorsResults results selected as indicator results
+ * @param mapResults results selected as map result
+ * @param publishDataResults results selected as results published with data
+ * @param login remote admin login
+ * @param password remote admin password
+ * @param progress progress monitor
+ * @return upload error status or {@code null} if no error
+ * @throws CoserBusinessException
+ */
+ public String performResultUpload(Collection<GlobalResult> selectedResults,
+ Collection<GlobalResult> indicatorsResults,
+ Collection<GlobalResult> mapResults,
+ Collection<GlobalResult> publishDataResults,
+ String login,
+ String password,
+ ProgressMonitor progress) throws CoserBusinessException {
+
+
+ // first copy prepare directory with only necessary data
+ // ie project with only selected selections
+ // and selection with only selected results
+
+ progress.setCurrent(0);
+ progress.setText(t("coser.business.uploadresult.modifyResultOptions"));
+ modifyRSufiResults(selectedResults, indicatorsResults, mapResults, publishDataResults);
+
+ progress.setText(t("coser.business.uploadresult.checkcollision"));
+ checkDataCollision(selectedResults);
+
+ progress.setText(t("coser.business.uploadresult.preparezip"));
+
+ // default extract to temp directory with data sources
+ File prepareZip = performResultExtract(selectedResults, publishDataResults, null);
+
+ progress.setText(t("coser.business.uploadresult.sendzip"));
+ progress.setTotal((int) prepareZip.length());
+
+ // then upload zip file to website
+ try {
+ MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
+ multipartEntityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
+
+ multipartEntityBuilder.setCharset(Consts.UTF_8);
+
+ // login/password param (password encoded)
+ multipartEntityBuilder.addBinaryBody("login", login.getBytes());
+ String sha1password = StringUtil.encodeSHA1(password);
+ multipartEntityBuilder.addBinaryBody("sha1Password", sha1password.getBytes());
+
+ // file param
+ ProgressStream stream = new ProgressStream(new FileInputStream(prepareZip), progress);
+ InputStreamKnownSizeBody fileBody = new InputStreamKnownSizeBody(stream, prepareZip.length(),
+ "application/zip", prepareZip.getName());
+ multipartEntityBuilder.addPart("resultFile", fileBody);
+
+ HttpPost httppost = new HttpPost(config.getWebUploadURL());
+ httppost.setEntity(multipartEntityBuilder.build());
+
+ if (log.isInfoEnabled()) {
+ log.info("Uploading " + prepareZip + " to " + httppost.getURI());
+ }
+
+ HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
+ HttpResponse response = httpClientBuilder.build().execute(httppost);
+
+ String uploadStatus = null;
+
+ if (response.getStatusLine().getStatusCode() != 200) {
+ uploadStatus = response.getStatusLine().getReasonPhrase();
+ }
+
+ FileUtils.forceDelete(prepareZip);
+
+ return uploadStatus;
+
+ } catch (ClientProtocolException ex) {
+ throw new CoserBusinessException("Can't upload file", ex);
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't upload file", ex);
+ }
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Internal methods ------------------------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ protected Collection<GlobalResult> getEchoBaseResults(File existingProject,
+ Date beginDate,
+ Date endDate,
+ boolean onlyPubliableResult) {
+ // echobase project
+ EchoBaseProject echoBaseProject = new EchoBaseProject(existingProject);
+ try {
+ echoBaseProject.load();
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not load echobase project", e);
+ }
+ GlobalResult result = new GlobalResult(echoBaseProject);
+ boolean candidate = isCandidateResult(result, beginDate, endDate, onlyPubliableResult);
+ List<GlobalResult> results = Lists.newArrayList();
+ if (candidate) {
+ results.add(result);
+ }
+ return results;
+ }
+
+ protected Collection<GlobalResult> getRsufiResults(File existingProject,
+ Date beginDate,
+ Date endDate,
+ boolean onlyPubliableResult) {
+ List<GlobalResult> results = Lists.newArrayList();
+
+ // rsufi project
+ String projectName = existingProject.getName();
+ Project p = new Project(projectName);
+
+ // loop on selections
+ File selectionsDirectory = new File(existingProject, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selections = selectionsDirectory.listFiles();
+ if (selections != null) {
+ for (File existingSelection : selections) {
+ if (existingSelection.isDirectory()) {
+ String selectionName = existingSelection.getName();
+ Selection s = new Selection(selectionName);
+
+ // loop on result
+ File rsufisDirectory = new File(existingSelection, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] rSufiResults = rsufisDirectory.listFiles();
+ if (rSufiResults != null) {
+ for (File rSufiResult : rSufiResults) {
+ if (rSufiResult.isDirectory()) {
+ RSufiResult r;
+ try {
+ r = projectService.getRSufiResult(rSufiResult);
+ } catch (CoserBusinessException e) {
+ throw new CoserTechnicalException("Could not load rsufi result", e);
+ }
+
+ RSufiResultPath path = new RSufiResultPath(p, s, r);
+ GlobalResult result = new GlobalResult(path);
+ boolean candidate = isCandidateResult(result, beginDate, endDate, onlyPubliableResult);
+ if (candidate) {
+ results.add(result);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return results;
+ }
+
+ /**
+ * Test if result is valid with filtering.
+ *
+ * @param rsufiResult rsufi result to test
+ * @param beginDate begin date (can be null)
+ * @param endDate end date (can be null)
+ * @param onlyPubliableResult select only publiable results
+ * @return if result is valid candidate
+ */
+ protected boolean isCandidateResult(GlobalResult rsufiResult, Date beginDate,
+ Date endDate, boolean onlyPubliableResult) {
+
+ boolean result = true;
+
+ if (beginDate != null) {
+ result = rsufiResult.getCreationDate().compareTo(beginDate) >= 0;
+ }
+
+ if (endDate != null) {
+ result &= rsufiResult.getCreationDate().compareTo(endDate) <= 0;
+ }
+
+ if (onlyPubliableResult) {
+ result &= rsufiResult.isPubliableResult();
+ }
+
+ return result;
+ }
+
+ /**
+ * Modifie les types et options de certains résultats rsufi (map result,
+ * data sources result).
+ *
+ * @param selectedResults selected result (collection of project/selection/rsufiresult)
+ * @param indicatorsResults results selected as indicator results
+ * @param mapResults map results
+ * @param publishDataResults publish data results
+ */
+ protected void modifyRSufiResults(Collection<GlobalResult> selectedResults,
+ Collection<GlobalResult> indicatorsResults,
+ Collection<GlobalResult> mapResults,
+ Collection<GlobalResult> publishDataResults) {
+
+ // TODO echatellier 20110117 revoir ce code
+
+ // attention, il faut sauver tout les resultats, sinon, les
+ // decochage de type map / publish result ne seront pas pris en compte
+
+ // reset type map and data source for all
+ for (GlobalResult selectedResult : selectedResults) {
+ selectedResult.setIndicatorsResult(false);
+ selectedResult.setMapsResult(false);
+ selectedResult.setDataAllowed(false);
+ }
+
+ // set map type
+ for (GlobalResult indicatorsResult : indicatorsResults) {
+ indicatorsResult.setIndicatorsResult(true);
+ }
+
+ // set map type
+ for (GlobalResult mapResult : mapResults) {
+ mapResult.setMapsResult(true);
+ }
+
+ // set data type
+ for (GlobalResult publishDataResult : publishDataResults) {
+ publishDataResult.setDataAllowed(true);
+ }
+
+ // save all selected results
+ for (GlobalResult selectedGlobalResult : selectedResults) {
+
+ if (selectedGlobalResult.isRsufi()) {
+
+ RSufiResultPath selectedResult = selectedGlobalResult.getRsufiProject();
+ Project project = selectedResult.getProject();
+ Selection selection = selectedResult.getSelection();
+ RSufiResult rsufiResult = selectedResult.getRsufiResult();
+
+ File projectDirectory = new File(config.getProjectsDirectory(), project.getName());
+ File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File selectionDirectory = new File(selectionsDirectory, selection.getName());
+ File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File resultDirectory = new File(resultsDirectory, rsufiResult.getName());
+
+ try {
+ projectService.saveRSufiResult(resultDirectory, rsufiResult);
+ } catch (CoserBusinessException e) {
+ throw new CoserTechnicalException("Could not save rsufi results", e);
+ }
+ } else {
+ EchoBaseProject selectedResult = selectedGlobalResult.getEchobaseProject();
+ try {
+ selectedResult.save();
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not save echobaseProject", e);
+ }
+ }
+
+ }
+ }
+
+ /**
+ * Met à jour les fichiers de propriétés des resultats (maps, dataSource)
+ * and check for duplicated couple (zoneid/resulttype (map) upload).
+ *
+ * @param selectedResults result id to check
+ */
+ protected void checkDataCollision(Collection<GlobalResult> selectedResults) {
+
+ Collection<String> resultZoneTypeIds = Lists.newArrayList();
+
+ for (GlobalResult selectedResult : selectedResults) {
+
+ String resultZoneTypeId;
+
+ if (selectedResult.isRsufi()) {
+ RSufiResult rsufiResult = selectedResult.getRsufiProject().getRsufiResult();
+
+ // on creer une clé composé pour l'id du resultat
+ resultZoneTypeId = rsufiResult.getZone() + String.valueOf(rsufiResult.isMapsResult());
+ } else {
+ EchoBaseProject echobaseProject = selectedResult.getEchobaseProject();
+ resultZoneTypeId = echobaseProject.getZoneName() + String.valueOf(true);
+ }
+ if (resultZoneTypeIds.contains(resultZoneTypeId)) {
+ throw new CoserTechnicalException(t("coser.business.resultupload.duplicatedresult2",
+ selectedResult.getName(),
+ selectedResult.getZone()));
+ } else {
+ resultZoneTypeIds.add(resultZoneTypeId);
+ }
+ }
+ }
+
+ /**
+ * Extract directory to custom directory.
+ *
+ * @param selectedResults selected result paths
+ * @param extractDirectory extract directory (can be null)
+ * @param publishDataResults result paths flaged with results export
+ * @return extracted file (no automatically deleted)
+ */
+ public File performResultExtract(Collection<GlobalResult> selectedResults,
+ Collection<GlobalResult> publishDataResults,
+ File extractDirectory) {
+ File result;
+ try {
+
+ // create zip file name if not random name
+ if (extractDirectory == null) {
+ result = File.createTempFile("Coserextract-", ".zip");
+ } else {
+ // extract in a specific directory
+ DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
+ String zipName = "Coserextract" + dateFormat.format(new Date()) + ".zip";
+ result = new File(extractDirectory, zipName);
+ }
+
+ // where to extract files to zip
+ File tempExtractDirectory = FileUtil.createTempDirectory("CoserExtractTemp", "dummy");
+
+ // copy rsufi results
+ performResultExtractForRSufi(tempExtractDirectory,
+ selectedResults,
+ publishDataResults);
+
+ // copy echobase results
+ performResultExtractForEchoBase(tempExtractDirectory,
+ selectedResults,
+ publishDataResults);
+
+ // get all files to compress
+ Collection<File> files = FileUtil.getFilteredElements(tempExtractDirectory,
+ FileFilterUtils.trueFileFilter(),
+ true);
+
+ // create zip file
+ ZipUtil.compressFiles(result, tempExtractDirectory, files, false);
+
+ // delete temp files
+ FileUtils.deleteDirectory(tempExtractDirectory);
+
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Can't prepare upload data", e);
+ }
+ return result;
+ }
+
+ /**
+ * Extract directory to custom directory.
+ *
+ * @param extractDirectory extract directory
+ * @param selectedResults selected result paths
+ * @param publishDataResults result paths flaged with results export
+ */
+ protected void performResultExtractForRSufi(File extractDirectory,
+ Collection<GlobalResult> selectedResults,
+ Collection<GlobalResult> publishDataResults) {
+
+ Preconditions.checkNotNull(extractDirectory);
+ try {
+
+ File projectsDirectory = config.getProjectsDirectory();
+
+ File rsufiDirectory = new File(extractDirectory, LegacyResultRepositoryType.ID);
+ FileUtils.forceMkdir(rsufiDirectory);
+
+ // copy selectively all data to target directory
+ MultipleFileFilter mFileFilters = new MultipleFileFilter();
+ for (GlobalResult globalProject : selectedResults) {
+ if (globalProject.isRsufi()) {
+ RSufiResultPath path = globalProject.getRsufiProject();
+ // load projet, needed to known source data file name
+ Project project = path.getProject();
+ project = projectService.openProject(project.getName());
+
+ OneRSufiResultFileFilter oneRFF = new OneRSufiResultFileFilter(
+ config.getProjectsDirectory(),
+ project,
+ path.getSelection(),
+ path.getRsufiResult(),
+ publishDataResults.contains(globalProject));
+ mFileFilters.add(oneRFF);
+ }
+ }
+
+ // copie vers le dossier dedie
+ FileUtils.copyDirectory(projectsDirectory, rsufiDirectory, mFileFilters);
+ } catch (CoserBusinessException e) {
+ throw new CoserTechnicalException("Can't prepare upload data", e);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Can't prepare upload data", e);
+ }
+ }
+
+ /**
+ * Extract directory to custom directory.
+ *
+ * @param selectedResults selected result paths
+ * @param publishDataResults result paths flaged with results export
+ */
+ protected void performResultExtractForEchoBase(File extractDirectory,
+ Collection<GlobalResult> selectedResults,
+ Collection<GlobalResult> publishDataResults) {
+ Preconditions.checkNotNull(extractDirectory);
+ try {
+
+ File projectsDirectory = config.getProjectsDirectory();
+
+ File echobaseDirectory = new File(extractDirectory, EchoBaseResultRepositoryType.ID);
+ FileUtils.forceMkdir(echobaseDirectory);
+
+ // creation du filter
+ MultipleFileFilter mFileFilters = new MultipleFileFilter();
+ for (GlobalResult globalProject : selectedResults) {
+ if (globalProject.isEchoBase()) {
+ EchoBaseProject echobaseProject = globalProject.getEchobaseProject();
+ OneEchobaseFileFilter fileFilter =
+ new OneEchobaseFileFilter(echobaseProject,
+ publishDataResults.contains(globalProject));
+ mFileFilters.add(fileFilter);
+ }
+ }
+
+ // copie vers le dossier dedie
+ FileUtils.copyDirectory(projectsDirectory, echobaseDirectory, mFileFilters);
+
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Can't prepare upload data", e);
+ }
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
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 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -122,7 +122,9 @@
*
* Last update : $Date$
* By : $Author$
+ * @deprecated since 1.5, should never be used, code too ugly and *simple* (dummy simple?)
*/
+@Deprecated
public class WebService {
private static final Log log = LogFactory.getLog(WebService.class);
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorage.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorage.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorage.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -22,6 +22,7 @@
package fr.ifremer.coser.storage;
+import java.io.Serializable;
import java.util.Iterator;
/**
@@ -36,7 +37,7 @@
* Last update : $Date$
* By : $Author$
*/
-public interface DataStorage extends Iterable<String[]> {
+public interface DataStorage extends Iterable<String[]> , Serializable {
/**
* Add new data into storage.
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/MemoryDataStorage.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/storage/MemoryDataStorage.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/storage/MemoryDataStorage.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -46,6 +46,8 @@
*/
public class MemoryDataStorage implements DataStorage {
+ private static final long serialVersionUID = 1L;
+
/** Stockage des données. */
protected List<String> listStorage;
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/MultipleFileFilter.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/MultipleFileFilter.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/MultipleFileFilter.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,55 @@
+package fr.ifremer.coser.util.io;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import com.google.common.collect.Lists;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * Aggrege plusieurs file filters.
+ *
+ * @since 1.5
+ */
+public class MultipleFileFilter implements FileFilter {
+
+ protected Collection<FileFilter> fileFilters = Lists.newArrayList();
+
+ public void add(FileFilter f) {
+ fileFilters.add(f);
+ }
+
+ @Override
+ public boolean accept(File pathname) {
+
+ boolean result = false;
+ Iterator<FileFilter> it = fileFilters.iterator();
+ while (it.hasNext() && !result) {
+ result = it.next().accept(pathname);
+ }
+ return result;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/MultipleFileFilter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/OneEchobaseFileFilter.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/OneEchobaseFileFilter.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/OneEchobaseFileFilter.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,71 @@
+package fr.ifremer.coser.util.io;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.bean.EchoBaseProject;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+
+/**
+ * Filter pour un resultat echobase donné.
+ * Created on 3/19/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class OneEchobaseFileFilter implements FileFilter {
+
+ protected final String basedir;
+
+ protected final boolean publishData;
+
+ protected final String rawDataBasedir;
+
+ public OneEchobaseFileFilter(EchoBaseProject project,
+ boolean publishData) {
+ this.publishData = publishData;
+ try {
+ this.basedir = project.getBasedir().getCanonicalPath();
+ this.rawDataBasedir = project.getRawDataDirectory().getCanonicalPath();
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not get canonical path", e);
+ }
+ }
+
+ @Override
+ public boolean accept(File pathname) {
+ try {
+ String currentPathName = pathname.getCanonicalPath();
+ boolean result = currentPathName.startsWith(basedir);
+ if (result && !publishData) {
+ result = !currentPathName.startsWith(rawDataBasedir);
+ }
+ return result;
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not get canonical path", e);
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/OneEchobaseFileFilter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/OneRSufiResultFileFilter.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/OneRSufiResultFileFilter.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/OneRSufiResultFileFilter.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,129 @@
+package fr.ifremer.coser.util.io;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
+ * %%
+ * 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%
+ */
+
+import fr.ifremer.coser.CoserConstants;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.CoserUtils;
+import fr.ifremer.coser.bean.Project;
+import fr.ifremer.coser.bean.RSufiResult;
+import fr.ifremer.coser.bean.Selection;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.util.regex.Matcher;
+
+/**
+ * Filter pour un resultat rsufi donné.
+ * <p/>
+ * Attention, implémentation que ne doit fonctionner que avec ZipUtil
+ * car meme si on refuse en répertoire, il redemande quand même
+ * les fils (et il faut qu'il les demande)
+ *
+ * @since 1.5
+ */
+public class OneRSufiResultFileFilter implements FileFilter {
+
+ protected File projectsDirectory;
+
+ /** Doit etre un project chargé avec nom de fichier originaux. */
+ protected Project project;
+
+ protected Selection selection;
+
+ protected RSufiResult rsufi;
+
+ protected boolean exportWithData;
+
+ public OneRSufiResultFileFilter(File projectsDirectory,
+ Project project,
+ Selection selection,
+ RSufiResult rsufi,
+ boolean exportWithData) {
+ this.projectsDirectory = projectsDirectory;
+ this.project = project;
+ this.selection = selection;
+ this.rsufi = rsufi;
+ this.exportWithData = exportWithData;
+ }
+
+ @Override
+ public boolean accept(File pathname) {
+
+ boolean result;
+
+ try {
+ String currentPathName = pathname.getCanonicalPath() + File.separator;
+
+ File projectDirectory = new File(projectsDirectory, project.getName());
+ File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File selectionDirectory = new File(selectionsDirectory, selection.getName());
+ File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File resultDirectory = new File(resultsDirectory, rsufi.getName());
+
+ String projectPath = projectDirectory.getCanonicalPath() + File.separator;
+ String selectionsPath = selectionsDirectory.getCanonicalPath() + File.separator;
+ String selectionPath = selectionDirectory.getCanonicalPath() + File.separator;
+ String resultsPath = resultsDirectory.getCanonicalPath() + File.separator;
+ String resultPath = resultDirectory.getCanonicalPath() + File.separator;
+
+ // on prend
+ // - tout ce qu'il y a dans le projet
+ // - sauf le répertoire "selections"
+ // - ou la selection entierement
+ // - sauf le répertoire result
+ // - ou le resultat entierrement
+ result = (currentPathName.startsWith(projectPath)
+ && !currentPathName.startsWith(selectionsPath))
+ || (currentPathName.startsWith(selectionPath)
+ && !currentPathName.startsWith(resultsPath))
+ || currentPathName.startsWith(resultPath);
+
+ // cas ou les données sources ne doivent pas être exporter
+ // condition sur les noms de fichiers ?
+ if (!exportWithData) {
+ String fileName = pathname.getName();
+
+ // on exclu tout les fichiers qui commencent
+ // par les memes noms de fichiers que ceux du projet
+ // (les noms de fichiers sont personnalisables)
+ for (CoserConstants.Category category : CoserConstants.Category.values()) {
+ if (category.isDataCategory()) {
+ String sourceFileName = project.getDataStorageFileName(category, null);
+ Matcher matcher = CoserUtils.FILENAME_SUFFIX_PATTERN.matcher(sourceFileName);
+ if (matcher.matches()) {
+ result &= !(fileName.startsWith(matcher.group(1)) && fileName.endsWith(matcher.group(2)));
+ } else {
+ result &= !fileName.startsWith(sourceFileName);
+ }
+ }
+ }
+ }
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't get system canonical path");
+ }
+
+ return result;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/util/io/OneRSufiResultFileFilter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.echobase (from rev 1156, trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties)
===================================================================
--- trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.echobase (rev 0)
+++ trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.echobase 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,27 @@
+###
+# #%L
+# Coser :: Business
+# %%
+# Copyright (C) 2010 - 2014 Ifremer, Codelutin
+# %%
+# 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%
+###
+project.author=tc
+project.facadeName=atlantique
+project.zoneName=gdgciem8
+project.surveyName=PELGAS
+project.comment=PELGAS-ATL
+project.creationDate=1394126084855
Deleted: trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties 2014-03-19 10:54:43 UTC (rev 1158)
@@ -1,27 +0,0 @@
-###
-# #%L
-# Coser :: Business
-# %%
-# Copyright (C) 2010 - 2014 Ifremer, Codelutin
-# %%
-# 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%
-###
-project.author=tc
-project.facadeName=atlantique
-project.zoneName=gdgciem8
-project.surveyName=PELGAS
-project.comment=PELGAS-ATL
-project.creationDate=1394126084855
Copied: trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.echobase (from rev 1156, trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties)
===================================================================
--- trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.echobase (rev 0)
+++ trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.echobase 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,27 @@
+###
+# #%L
+# Coser :: Business
+# %%
+# Copyright (C) 2010 - 2014 Ifremer, Codelutin
+# %%
+# 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%
+###
+project.author=tc
+project.facadeName=atlantique
+project.zoneName=gdgciem8-2
+project.surveyName=PELGAS
+project.comment=PELGASSE-ATL
+project.creationDate=1394126084855
Deleted: trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties 2014-03-19 10:54:43 UTC (rev 1158)
@@ -1,27 +0,0 @@
-###
-# #%L
-# Coser :: Business
-# %%
-# Copyright (C) 2010 - 2014 Ifremer, Codelutin
-# %%
-# 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%
-###
-project.author=tc
-project.facadeName=atlantique
-project.zoneName=gdgciem8-2
-project.surveyName=PELGAS
-project.comment=PELGASSE-ATL
-project.creationDate=1394126084855
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -26,6 +26,7 @@
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
+import fr.ifremer.coser.services.ClientResultService;
import jaxx.runtime.context.DefaultApplicationContext;
import jaxx.runtime.swing.session.SwingSession;
@@ -42,7 +43,6 @@
import fr.ifremer.coser.services.ControlService;
import fr.ifremer.coser.services.ProjectService;
import fr.ifremer.coser.services.PublicationService;
-import fr.ifremer.coser.services.WebService;
import fr.ifremer.coser.ui.CoserFrame;
/**
@@ -149,7 +149,9 @@
context.setContextValue(new CommandService(coserConfig));
context.setContextValue(new ControlService(coserConfig));
context.setContextValue(new PublicationService(coserConfig));
- context.setContextValue(new WebService(coserConfig));
+// context.setContextValue(new WebService(coserConfig));
+ context.setContextValue(new ClientResultService(coserConfig));
+ context.setContextValue(new DefaultCoserApplicationContext(coserConfig));
// init frame with session reloading
CoserFrame frame = new CoserFrame(context);
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 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -67,8 +67,7 @@
import fr.ifremer.coser.ui.project.ProjectHandler;
import fr.ifremer.coser.ui.project.ProjectOpenView;
import fr.ifremer.coser.ui.project.ProjectSummaryView;
-import fr.ifremer.coser.ui.result.ResultHandler;
-import fr.ifremer.coser.ui.result.SelectUploadResultView;
+import fr.ifremer.coser.ui.publication.SelectUploadResultView;
import fr.ifremer.coser.ui.selection.SelectionHandler;
import fr.ifremer.coser.ui.selection.SelectionView;
import fr.ifremer.coser.ui.selection.replay.SelectionReplayHandler;
@@ -579,12 +578,10 @@
*/
public void showPublishResultView() {
SelectUploadResultView selectUploadResultView = new SelectUploadResultView(view);
- ResultHandler handler = new ResultHandler();
- selectUploadResultView.setHandler(handler);
- handler.init(selectUploadResultView);
+ selectUploadResultView.getHandler().init(selectUploadResultView);
// restore session size
- SwingSession session = (SwingSession)view.getContextValue(SwingSession.class);
+ SwingSession session = view.getContextValue(SwingSession.class);
session.add(selectUploadResultView);
setMainComponent(selectUploadResultView);
Copied: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/ExportUploadDialog.jaxx (from rev 1156, trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx)
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/ExportUploadDialog.jaxx (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/ExportUploadDialog.jaxx 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,83 @@
+<!--
+ #%L
+ Coser :: UI
+ %%
+ Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+<JDialog title="coser.ui.uploadresult.exportUploadTitle" modal="true">
+ <Table>
+ <GlobalResultHandler id="handler"/>
+ <row>
+ <cell weightx="1" weighty="1" fill="both">
+ <Table border='{BorderFactory.createTitledBorder(t("coser.ui.uploadresult.extractChoice"))}'>
+ <row>
+ <cell fill="horizontal">
+ <JLabel text="coser.ui.uploadresult.extractTo"/>
+ </cell>
+ <cell weightx="1" fill="horizontal">
+ <JTextField id="extractToTextField"/>
+ </cell>
+ <cell>
+ <JButton text="coser.ui.common.selectFile"
+ onActionPerformed="handler.selectExportDirectory(this, extractToTextField)"/>
+ </cell>
+ </row>
+ <row>
+ <cell columns="3" anchor="east">
+ <JButton text="coser.ui.uploadresult.extract"
+ onActionPerformed="handler.performExtractResult(this)"/>
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
+ <row>
+ <cell weightx="1" weighty="1" fill="both">
+ <Table border='{BorderFactory.createTitledBorder(t("coser.ui.uploadresult.uploadChoice"))}'>
+ <row>
+ <cell fill="horizontal">
+ <JLabel text="coser.ui.uploadresult.uploadLogin"/>
+ </cell>
+ <cell weightx="1" fill="horizontal">
+ <JTextField id="uploadLogintextField"/>
+ </cell>
+ </row>
+ <row>
+ <cell fill="horizontal">
+ <JLabel text="coser.ui.uploadresult.uploadPassword"/>
+ </cell>
+ <cell fill="horizontal">
+ <JPasswordField id="uploadPasswordtextField"/>
+ </cell>
+ </row>
+ <row>
+ <cell columns="2" anchor="east">
+ <JButton text="coser.ui.uploadresult.upload"
+ onActionPerformed="handler.performUploadResult(this)"/>
+ </cell>
+ </row>
+ <row>
+ <cell weightx="1" fill="horizontal" columns="2">
+ <fr.ifremer.coser.ui.util.CoserProgressBar id="uploadProgressBar" stringPainted="true"/>
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
+ </Table>
+</JDialog>
Copied: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java (from rev 1156, trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java)
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,279 @@
+/*
+ * #%L
+ * Coser :: UI
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.coser.ui.publication;
+
+import com.google.common.collect.Lists;
+import fr.ifremer.coser.CoserBusinessException;
+import fr.ifremer.coser.CoserConfig;
+import fr.ifremer.coser.CoserException;
+import fr.ifremer.coser.bean.GlobalResult;
+import fr.ifremer.coser.services.ClientResultService;
+import fr.ifremer.coser.ui.common.CommonHandler;
+import fr.ifremer.coser.ui.util.CoserProgressBar;
+import fr.ifremer.coser.ui.util.ErrorHelper;
+import jaxx.runtime.JAXXUtil;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.swing.JFileChooser;
+import javax.swing.JOptionPane;
+import javax.swing.JTextField;
+import javax.swing.SwingWorker;
+import java.io.File;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * Handler for rsufi result management.
+ *
+ * @author chatellier
+ * @version $Revision$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class GlobalResultHandler extends CommonHandler {
+
+ /**
+ * Initialise la vue (principalement en recuperant les données.
+ *
+ * @param view view
+ */
+ public void init(SelectUploadResultView view) {
+
+ //SwingUtil.fixTableColumnWidth(view.getSelectedProjectTable(), 1, 25);
+ //SwingUtil.fixTableColumnWidth(view.getAvailableProjectTable(), 1, 25);
+ view.getAvailableResultTable().setDefaultRenderer(String[].class, new GlobalResultRenderer());
+ view.getSelectedResultTable().setDefaultRenderer(String[].class, new GlobalResultRenderer());
+ view.getAvailableResultTable().setDefaultRenderer(String.class, new GlobalResultZoneRenderer(view));
+ view.getSelectedResultTable().setDefaultRenderer(String.class, new GlobalResultZoneRenderer(view));
+
+ // initialise les données avec les filtres par default
+ updateAvailableResultsFilter(view);
+ view.getSelectedResultTableModel().setResultPaths(Lists.<GlobalResult>newArrayList());
+
+ }
+
+ /**
+ * Met à jour les données de la table apres la modification d'un
+ * ou plusieurs filtre.
+ *
+ * @param view view
+ */
+ public void updateAvailableResultsFilter(SelectUploadResultView view) {
+
+ // get filter
+ Date beginDate = view.getFilterBeginDate().getDate();
+ Date endDate = view.getFilterEndDate().getDate();
+ boolean onlyPubliable = view.getPubliableResults().isSelected();
+
+ // get result
+ ClientResultService webService = view.getContextValue(ClientResultService.class);
+
+ try {
+ List<GlobalResult> results = webService.findAllProjectWithResult(beginDate, endDate, onlyPubliable);
+ view.getAvailableResultTableModel().setResultPaths(results);
+ } catch (CoserBusinessException ex) {
+ throw new CoserException("Can't get results", ex);
+ }
+ }
+
+ /**
+ * Add selected result in available table to selected table.
+ *
+ * @param view view
+ */
+ public void addAvailableResult(SelectUploadResultView view) {
+
+ // get new result to add
+ List<GlobalResult> currentResult = view.getSelectedResultTableModel().getResultPaths();
+ int[] selectedAvailableRows = view.getAvailableResultTable().getSelectedRows();
+ for (int selectedAvailableRow : selectedAvailableRows) {
+ GlobalResult resultData = view.getAvailableResultTableModel().getResultPaths().get(selectedAvailableRow);
+ if (!currentResult.contains(resultData)) {
+ currentResult.add(resultData);
+
+ // indicator results are auto selected
+ // can be done only here
+ view.getSelectedResultTableModel().getIndicatorResults().add(resultData);
+ if (resultData.isEchoBase()) {
+
+ // auto-select publish map
+ view.getSelectedResultTableModel().getMapResults().add(resultData);
+ }
+ }
+ }
+
+ // les collisions ne peuvent pas être détecté a ce moment.
+ // seulement lors du clic sur le bouton export/upload
+
+ view.getSelectedResultTableModel().setResultPaths(currentResult);
+ }
+
+ /**
+ * Remove selected result from selected list.
+ *
+ * @param view view
+ */
+ public void removeSelectedResult(SelectUploadResultView view) {
+ List<GlobalResult> currentResult = view.getSelectedResultTableModel().getResultPaths();
+ int[] selectedSelectedRows = view.getSelectedResultTable().getSelectedRows();
+ // need to remove reverse order
+ for (int index = selectedSelectedRows.length - 1; index >= 0; --index) {
+ int selectedSelectedRow = selectedSelectedRows[index];
+ currentResult.remove(selectedSelectedRow);
+ }
+ view.getSelectedResultTableModel().setResultPaths(currentResult);
+ }
+
+ /**
+ * Perform file upload to coser server after selection by user.
+ *
+ * @param view view
+ */
+ public void performUploadResult(final ExportUploadDialog view) {
+
+ // get authen options
+ final String login = view.getUploadLogintextField().getText();
+ final String password = new String(view.getUploadPasswordtextField().getPassword());
+
+ // get result selected by user
+ SelectUploadResultView parentView = view.getContextValue(SelectUploadResultView.class, JAXXUtil.PARENT);
+ final Collection<GlobalResult> selectedResults = parentView.getSelectedResultTableModel().getResultPaths();
+ final Collection<GlobalResult> indicatorResults = parentView.getSelectedResultTableModel().getIndicatorResults();
+ final Collection<GlobalResult> mapResults = parentView.getSelectedResultTableModel().getMapResults();
+ final Collection<GlobalResult> publishDataResults = parentView.getSelectedResultTableModel().getPublishDataResults();
+ if (CollectionUtils.isNotEmpty(selectedResults)) {
+
+ SwingWorker<String, Void> task = new SwingWorker<String, Void>() {
+ @Override
+ protected String doInBackground() {
+ try {
+ setWaitCursor(view);
+
+ // get progress bar
+ CoserProgressBar progressBar = view.getUploadProgressBar();
+ ClientResultService webService = view.getContextValue(ClientResultService.class);
+ String status = webService.performResultUpload(selectedResults,
+ indicatorResults,
+ mapResults,
+ publishDataResults,
+ login,
+ password,
+ progressBar);
+ return status;
+ } catch (CoserBusinessException ex) {
+ throw new CoserException(ex.getMessage(), ex);
+ }
+ }
+
+ @Override
+ protected void done() {
+
+ // laisser cet appel, sinon les exceptions sont silencieuse
+ try {
+ String status = get();
+
+ if (StringUtils.isNotEmpty(status)) {
+ JOptionPane.showMessageDialog(view, t("coser.ui.uploadresult.resultsuploaderror", status),
+ t("coser.ui.uploadresult.title"), JOptionPane.ERROR_MESSAGE);
+ } else {
+ JOptionPane.showMessageDialog(view, t("coser.ui.uploadresult.resultsuploaded"),
+ t("coser.ui.uploadresult.title"), JOptionPane.INFORMATION_MESSAGE);
+ }
+
+ view.dispose();
+ } catch (Exception ex) {
+ //throw new CoserException("Can't get upload status", ex);
+ // FIXME chatellier 20110126 le dispatch global marche pas ? :(
+ ErrorHelper errorHelper = new ErrorHelper(view.getContextValue(CoserConfig.class));
+ errorHelper.showErrorDialog(view, ex.getMessage(), ex);
+ } finally {
+ setDefaultCursor(view);
+ }
+ }
+ };
+ task.execute();
+ }
+ }
+
+ /**
+ * Perform file upload to coser server after selection by user.
+ *
+ * @param view view
+ */
+ public void performExtractResult(ExportUploadDialog view) {
+
+ // get extract directory
+ String extractPath = view.getExtractToTextField().getText();
+ File extractDirectory = new File(extractPath);
+
+ SelectUploadResultView parentView = view.getContextValue(SelectUploadResultView.class, JAXXUtil.PARENT);
+ List<GlobalResult> selectedResult = parentView.getSelectedResultTableModel().getResultPaths();
+ Set<GlobalResult> publishDataResults = parentView.getSelectedResultTableModel().getPublishDataResults();
+ ClientResultService webService = view.getContextValue(ClientResultService.class);
+ try {
+ setWaitCursor(view);
+
+ webService.performResultExtract(selectedResult, publishDataResults, extractDirectory);
+ JOptionPane.showMessageDialog(view, t("coser.ui.uploadresult.resultsextracted"),
+ t("coser.ui.uploadresult.title"), JOptionPane.INFORMATION_MESSAGE);
+ view.dispose();
+ } finally {
+ setDefaultCursor(view);
+ }
+ }
+
+ /**
+ * Just display export / upload dialog.
+ *
+ * @param view parent view
+ */
+ public void showExportUploadDialog(SelectUploadResultView view) {
+ ExportUploadDialog dialog = new ExportUploadDialog(view);
+ dialog.setLocationRelativeTo(view);
+ dialog.setVisible(true);
+ }
+
+ /**
+ * Select result file (directory only).
+ *
+ * @param view view
+ * @param textComponent text component to set selected file
+ */
+ public void selectExportDirectory(ExportUploadDialog view, JTextField textComponent) {
+ CoserConfig config = view.getContextValue(CoserConfig.class);
+ JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory());
+ selectFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+
+ int result = selectFileChooser.showOpenDialog(view);
+ if (result == JFileChooser.APPROVE_OPTION) {
+ File selectedFile = selectFileChooser.getSelectedFile();
+ textComponent.setText(selectedFile.getAbsolutePath());
+ }
+ }
+}
Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultRenderer.java (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultRenderer.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,65 @@
+package fr.ifremer.coser.ui.publication;
+
+/*
+ * #%L
+ * Coser :: UI
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.GlobalResult;
+import fr.ifremer.coser.bean.RSufiResultPath;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+import java.awt.Component;
+
+/**
+ * Created on 3/17/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GlobalResultRenderer extends DefaultTableCellRenderer {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table,
+ Object value,
+ boolean isSelected,
+ boolean hasFocus,
+ int row,
+ int column) {
+
+ Object localValue = value;
+ if (value instanceof GlobalResult) {
+ GlobalResult g = (GlobalResult) value;
+ if (g.isRsufi()) {
+ RSufiResultPath rsufiResultPath = g.getRsufiProject();
+ localValue = rsufiResultPath.getProject().getName() + "/" +
+ rsufiResultPath.getSelection().getName() + "/" +
+ rsufiResultPath.getRsufiResult().getName();
+ } else {
+ localValue = g.getEchobaseProject().getName();
+ }
+ }
+ return super.getTableCellRendererComponent(table, localValue, isSelected, hasFocus,
+ row, column);
+ }
+}
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,239 @@
+package fr.ifremer.coser.ui.publication;
+
+/*
+ * #%L
+ * Coser :: UI
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.bean.GlobalResult;
+
+import javax.swing.table.AbstractTableModel;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * Created on 3/17/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GlobalResultTableModel extends AbstractTableModel {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Les données de la table. */
+ protected List<GlobalResult> resultPaths;
+
+ /** Les résultats marqués comme etant des données d'indicateurs. */
+ protected Set<GlobalResult> indicatorResults;
+
+ /** Les résultats marqué comme étant des données de map. */
+ protected Set<GlobalResult> mapResults;
+
+ /** Les résultat dont la publication des données est autorisée. */
+ protected Set<GlobalResult> publishDataResults;
+
+ /** Selected table tablemodel (do not show all columns). */
+ protected boolean selected;
+
+ public GlobalResultTableModel(boolean selected) {
+ this.selected = selected;
+
+ // les selections ne sont jamais supprimé
+ // mais vu l'equivalence equals/hascode
+ // ca ne doit pas poser de problemes
+ indicatorResults = Sets.newHashSet();
+ mapResults = Sets.newHashSet();
+ publishDataResults = Sets.newHashSet();
+ }
+
+ public void setResultPaths(List<GlobalResult> resultPaths) {
+ this.resultPaths = resultPaths;
+ fireTableDataChanged();
+ }
+
+ public List<GlobalResult> getResultPaths() {
+ return resultPaths;
+ }
+
+ public Set<GlobalResult> getIndicatorResults() {
+ return indicatorResults;
+ }
+
+ public Set<GlobalResult> getMapResults() {
+ return mapResults;
+ }
+
+ public Set<GlobalResult> getPublishDataResults() {
+ return publishDataResults;
+ }
+
+ @Override
+ public int getRowCount() {
+ int result = 0;
+ if (resultPaths != null) {
+ result = resultPaths.size();
+ }
+ return result;
+ }
+
+ @Override
+ public String getColumnName(int column) {
+ String result = null;
+ switch (column) {
+ case 0:
+ result = t("coser.ui.uploadresult.creationDate");
+ break;
+ case 1:
+ result = t("coser.ui.uploadresult.path");
+ break;
+ case 2:
+ result = t("coser.ui.uploadresult.zone");
+ break;
+ case 3:
+ result = t("coser.ui.uploadresult.indicatorResult");
+ break;
+ case 4:
+ result = t("coser.ui.uploadresult.mapResult");
+ break;
+ case 5:
+ result = t("coser.ui.uploadresult.publishData");
+ break;
+ }
+ return result;
+ }
+
+ @Override
+ public Class<?> getColumnClass(int columnIndex) {
+ Class<?> result = null;
+ switch (columnIndex) {
+ case 0:
+ result = Date.class;
+ break;
+ case 1:
+ result = String[].class;
+ break;
+ case 2:
+ result = String.class;
+ break;
+ case 3:
+ result = Boolean.class;
+ break;
+ case 4:
+ result = Boolean.class;
+ break;
+ case 5:
+ result = Boolean.class;
+ break;
+ }
+ return result;
+ }
+
+ @Override
+ public int getColumnCount() {
+ int result = 3;
+ if (selected) {
+ result = 6;
+ }
+ return result;
+ }
+
+ @Override
+ public Object getValueAt(int rowIndex, int columnIndex) {
+
+ Object result = null;
+
+ GlobalResult data = resultPaths.get(rowIndex);
+ switch (columnIndex) {
+ case 0:
+ result = data.getCreationDate();
+ break;
+ case 1:
+ result = data;
+ break;
+ case 2:
+ result = data.getZone();
+ break;
+ case 3:
+ result = indicatorResults.contains(data);
+ break;
+ case 4:
+ result = mapResults.contains(data);
+ break;
+ case 5:
+ result = publishDataResults.contains(data);
+ break;
+ }
+
+ return result;
+ }
+
+ @Override
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+
+ GlobalResult data = resultPaths.get(rowIndex);
+
+ boolean editable;
+ if (data.isEchoBase()) {
+
+ // can only edit publish data column
+ editable = columnIndex >= 5;
+ } else {
+
+ // can edit indicator - map and publish data columns
+ editable = columnIndex >= 3;
+ }
+
+ return editable;
+ }
+
+ @Override
+ public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
+
+ GlobalResult data = resultPaths.get(rowIndex);
+
+ if (columnIndex == 3) {
+ Boolean bValue = (Boolean) aValue;
+ if (bValue) {
+ indicatorResults.add(data);
+ } else {
+ indicatorResults.remove(data);
+ }
+ } else if (columnIndex == 4) {
+ Boolean bValue = (Boolean) aValue;
+ if (bValue) {
+ mapResults.add(data);
+ } else {
+ mapResults.remove(data);
+ }
+ } else if (columnIndex == 5) {
+ Boolean bValue = (Boolean) aValue;
+ if (bValue) {
+ publishDataResults.add(data);
+ } else {
+ publishDataResults.remove(data);
+ }
+ }
+ }
+}
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultZoneRenderer.java (from rev 1156, trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java)
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultZoneRenderer.java (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultZoneRenderer.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,69 @@
+/*
+ * #%L
+ * Coser :: UI
+ * %%
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.coser.ui.publication;
+
+import fr.ifremer.coser.CoserApplicationContext;
+import fr.ifremer.coser.bean.ZoneMap;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+import java.awt.Component;
+
+/**
+ * Available and selected result zone renderer.
+ *
+ * @author chemit
+ */
+public class GlobalResultZoneRenderer extends DefaultTableCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -9030155088814184637L;
+
+ protected SelectUploadResultView view;
+
+ protected ZoneMap zoneMap;
+
+ public GlobalResultZoneRenderer(SelectUploadResultView view) {
+ this.view = view;
+ }
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table,
+ Object value,
+ boolean isSelected,
+ boolean hasFocus,
+ int row,
+ int column) {
+ if (zoneMap == null) {
+ zoneMap = view.getContextValue(CoserApplicationContext.class).getZoneMap();
+ }
+
+ Object localValue = value;
+ if (value != null && value instanceof String) {
+ String zoneId = (String) value;
+ localValue = zoneMap.getZoneFullName(zoneId);
+ }
+ return super.getTableCellRendererComponent(table, localValue, isSelected, hasFocus,
+ row, column);
+ }
+}
Copied: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/SelectUploadResultView.jaxx (from rev 1156, trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx)
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/SelectUploadResultView.jaxx (rev 0)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/SelectUploadResultView.jaxx 2014-03-19 10:54:43 UTC (rev 1158)
@@ -0,0 +1,107 @@
+<!--
+ #%L
+ Coser :: UI
+ %%
+ Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+<Table>
+ <GlobalResultHandler id="handler"/>
+
+ <row>
+ <cell weightx="1" fill="horizontal">
+ <JLabel text="coser.ui.uploadresult.explanation"/>
+ </cell>
+ </row>
+ <row>
+ <cell weightx="1" fill="horizontal">
+ <JLabel text="coser.ui.uploadresult.availableResults"/>
+ </cell>
+ </row>
+ <row>
+ <cell weightx="1" fill="horizontal">
+ <Table>
+ <row>
+ <cell>
+ <JLabel text="coser.ui.uploadresult.filter.beginDate"/>
+ </cell>
+ <cell>
+ <JXDatePicker id="filterBeginDate"
+ onActionPerformed="handler.updateAvailableResultsFilter(this)"/>
+ </cell>
+ <cell>
+ <JLabel text="coser.ui.uploadresult.filter.endDate"/>
+ </cell>
+ <cell>
+ <JXDatePicker id="filterEndDate"
+ onActionPerformed="handler.updateAvailableResultsFilter(this)"/>
+ </cell>
+ <cell>
+ <JLabel text="coser.ui.uploadresult.filter.publiableResults"/>
+ </cell>
+ <cell>
+ <JCheckBox id="publiableResults" selected="true"
+ onActionPerformed="handler.updateAvailableResultsFilter(this)"/>
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
+ <row>
+ <cell weightx="1" weighty="1" fill="both">
+ <JScrollPane>
+ <GlobalResultTableModel id="availableResultTableModel" initializer='new GlobalResultTableModel(false)'/>
+ <JTable id="availableResultTable" model="{getAvailableResultTableModel()}"/>
+ <ListSelectionModel javaBean="availableResultTable.getSelectionModel()"
+ onValueChanged="addResultButton.setEnabled(getAvailableResultTable().getSelectedRow() != -1)"/>
+ </JScrollPane>
+ </cell>
+ </row>
+ <row>
+ <cell weightx="1" anchor="center">
+ <JButton id="addResultButton" text="coser.ui.uploadresult.addResults"
+ onActionPerformed="handler.addAvailableResult(this)" enabled="false"/>
+ </cell>
+ </row>
+ <row>
+ <cell weightx="1" fill="horizontal">
+ <JLabel text="coser.ui.uploadresult.selectedResults"/>
+ </cell>
+ </row>
+ <row>
+ <cell weightx="1" weighty="1" fill="both">
+ <JScrollPane>
+ <GlobalResultTableModel id="selectedResultTableModel" initializer='new GlobalResultTableModel(true)'/>
+ <JTable id="selectedResultTable" model="{getSelectedResultTableModel()}"/>
+ <ListSelectionModel javaBean="selectedResultTable.getSelectionModel()"
+ onValueChanged="removeResultButton.setEnabled(getSelectedResultTable().getSelectedRow() != -1)"/>
+ </JScrollPane>
+ </cell>
+ </row>
+ <row>
+ <cell weightx="1" anchor="center">
+ <JButton id="removeResultButton" text="coser.ui.uploadresult.removeResults"
+ onActionPerformed="handler.removeSelectedResult(this)" enabled="false"/>
+ </cell>
+ </row>
+ <row>
+ <cell weightx="1" anchor="east">
+ <JButton text="coser.ui.uploadresult.exportupload"
+ onActionPerformed="handler.showExportUploadDialog(this)"/>
+ </cell>
+ </row>
+</Table>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx 2014-03-19 10:54:43 UTC (rev 1158)
@@ -19,6 +19,7 @@
<http://www.gnu.org/licenses/gpl-3.0.html>.
#L%
-->
+<!--@Deprecated-->
<JDialog title="coser.ui.uploadresult.exportUploadTitle" modal="true">
<Table>
<ResultHandler id="handler" javaBean="null" />
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -83,9 +83,11 @@
/**
* Met à jour les données de la table apres la modification d'un
* ou plusieurs filtre.
- *
+ * <strong>Important:</strong> does not work any longer
+ *
* @param view view
*/
+ @Deprecated
public void updateAvailableResultsFilter(SelectUploadResultView view) {
// get filter
@@ -149,9 +151,11 @@
/**
* Perform file upload to coser server after selection by user.
- *
+ * <strong>Important:</strong> does not work any longer
+ *
* @param view view
*/
+ @Deprecated
public void performUploadResult(final ExportUploadDialog view) {
// get authen options
@@ -215,12 +219,14 @@
task.execute();
}
}
-
+
/**
* Perform file upload to coser server after selection by user.
- *
+ * <strong>Important:</strong> does not work any longer
+ *
* @param view view
*/
+ @Deprecated
public void performExtractResult(ExportUploadDialog view) {
// get extract directory
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableRenderer.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableRenderer.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -22,68 +22,69 @@
package fr.ifremer.coser.ui.result;
-import static org.nuiton.i18n.I18n.t;
+import fr.ifremer.coser.CoserApplicationContext;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.ui.selection.SelectionRsufiView;
-import java.awt.Component;
-
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
+import java.awt.Component;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.CoserException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.ui.selection.SelectionRsufiView;
+import static org.nuiton.i18n.I18n.t;
/**
* Selection result table renderer.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class ResultTableRenderer extends DefaultTableCellRenderer {
/** serialVersionUID. */
private static final long serialVersionUID = -9030155088814184637L;
- protected SelectionRsufiView view;
+// protected SelectionRsufiView view;
+ protected ZoneMap zoneMap;
+
public ResultTableRenderer(SelectionRsufiView view) {
- this.view = view;
+// this.view = view;
+ this.zoneMap = view.getContextValue(CoserApplicationContext.class).getZoneMap();
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
- boolean isSelected, boolean hasFocus, int row, int column) {
+ boolean isSelected, boolean hasFocus, int row, int column) {
Object localValue = value;
-
+
switch (column) {
case 2:
if (value != null) {
- // get web service
- try {
- WebService webService = view.getContextValue(WebService.class);
- localValue = webService.getZoneFullName((String)value);
- } catch (CoserBusinessException ex) {
- throw new CoserException("Can't get zone name", ex);
- }
+ localValue = zoneMap.getZoneFullName((String) value);
+// // get web service
+// try {
+// WebService webService = view.getContextValue(WebService.class);
+// localValue = webService.getZoneFullName((String)value);
+// } catch (CoserBusinessException ex) {
+// throw new CoserException("Can't get zone name", ex);
+// }
}
break;
case 5:
case 6:
- boolean availale = (Boolean)value;
+ boolean availale = (Boolean) value;
if (availale) {
localValue = t("coser.ui.common.yes");
- }
- else {
+ } else {
localValue = t("coser.ui.common.no");
}
break;
}
return super.getTableCellRendererComponent(table, localValue, isSelected, hasFocus,
- row, column);
+ row, column);
}
}
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -38,6 +38,7 @@
* Last update : $Date$
* By : $Author$
*/
+@Deprecated
public class RsufiResultRenderer extends DefaultTableCellRenderer {
/** serialVersionUID. */
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -44,6 +44,7 @@
* Last update : $Date$
* By : $Author$
*/
+@Deprecated
public class RsufiResultTableModel extends AbstractTableModel {
/** serialVersionUID. */
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -40,6 +40,7 @@
* Last update : $Date$
* By : $Author$
*/
+@Deprecated
public class RsufiResultZoneRenderer extends DefaultTableCellRenderer {
/** serialVersionUID. */
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx 2014-03-19 10:54:43 UTC (rev 1158)
@@ -19,6 +19,7 @@
<http://www.gnu.org/licenses/gpl-3.0.html>.
#L%
-->
+ <!--@Deprecated-->
<Table>
<ResultHandler id="handler" javaBean="null" />
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 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx 2014-03-19 10:54:43 UTC (rev 1158)
@@ -72,7 +72,7 @@
<JLabel text="coser.ui.result.zone" />
</cell>
<cell fill="horizontal" columns="2">
- <ZoneComboBoxModel id="resultZoneComboModel" javaBean="new ZoneComboBoxModel(getContextValue(fr.ifremer.coser.services.WebService.class))" />
+ <ZoneComboBoxModel id="resultZoneComboModel" javaBean="ZoneComboBoxModel.newModel(this)" />
<JComboBox id="resultZoneCombo" model="{getResultZoneComboModel()}"
renderer="{new ZoneComboBoxRenderer()}"
onActionPerformed='getRsufiResult().setZone((String)resultZoneCombo.getSelectedItem())'/>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx 2014-03-19 10:54:43 UTC (rev 1158)
@@ -58,7 +58,7 @@
<JLabel text="coser.ui.result.zone" />
</cell>
<cell fill="horizontal">
- <ZoneComboBoxModel id="resultZoneComboModel" javaBean="new ZoneComboBoxModel(getContextValue(fr.ifremer.coser.services.WebService.class))"
+ <ZoneComboBoxModel id="resultZoneComboModel" javaBean="ZoneComboBoxModel.newModel(this)"
selectedItem="{getRsufiResult().getZone()}"/>
<JComboBox id="resultZoneCombo" model="{getResultZoneComboModel()}"
renderer="{new ZoneComboBoxRenderer()}"
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2014-03-19 09:38:30 UTC (rev 1157)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2014-03-19 10:54:43 UTC (rev 1158)
@@ -22,23 +22,22 @@
package fr.ifremer.coser.ui.result;
+import fr.ifremer.coser.CoserApplicationContext;
+import fr.ifremer.coser.storage.DataStorage;
+import jaxx.runtime.JAXXObject;
+
import javax.swing.DefaultComboBoxModel;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.CoserException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.storage.DataStorage;
-
/**
* 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$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class ZoneComboBoxModel extends DefaultComboBoxModel {
@@ -47,14 +46,24 @@
protected DataStorage zonesMap;
- public ZoneComboBoxModel(WebService webService) {
- try {
- zonesMap = webService.getZonesMap();
- } catch (CoserBusinessException ex) {
- throw new CoserException("Can't get zone list", ex);
- }
+ public static ZoneComboBoxModel newModel(JAXXObject ui) {
+ CoserApplicationContext contextValue = ui.getContextValue(CoserApplicationContext.class);
+ DataStorage storage = contextValue.getZoneMap().getStorage();
+ return new ZoneComboBoxModel(storage);
}
+ public ZoneComboBoxModel(DataStorage zonesMap) {
+ this.zonesMap = zonesMap;
+ }
+
+// public ZoneComboBoxModel(WebService webService) {
+// try {
+// zonesMap = webService.getZonesMap();
+// } catch (CoserBusinessException ex) {
+// throw new CoserException("Can't get zone list", ex);
+// }
+// }
+
@Override
public int getSize() {
// -1 for header
1
0
r1157 - in trunk/coser-business/src/main/java/fr/ifremer/coser: bean services
by tchemit@users.forge.codelutin.com 19 Mar '14
by tchemit@users.forge.codelutin.com 19 Mar '14
19 Mar '14
Author: tchemit
Date: 2014-03-19 10:38:30 +0100 (Wed, 19 Mar 2014)
New Revision: 1157
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1157
Log:
bye-bye COBOL-85
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2014-03-17 16:32:22 UTC (rev 1156)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2014-03-19 09:38:30 UTC (rev 1157)
@@ -31,6 +31,7 @@
import java.util.Map;
import java.util.Properties;
+import fr.ifremer.coser.CoserConstants;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -469,4 +470,40 @@
setOutputSpeciesType(SpeciesFieldType.C_Valide);
}
}
+
+ /**
+ * Retourne le nom de stockage d'un fichier de données suivant la categories
+ * de fichier demandé. Les fichiers sont stockés avec leurs noms originaux
+ * (sauf les fichiers de réference) donc il n'est pas fixe.
+ *
+ * @param category category to get file name
+ * @param suffix suffix to add into file name
+ * @return storage file name
+ * @since 1.5
+ */
+ public String getDataStorageFileName(CoserConstants.Category category, String suffix) {
+
+ String result = null;
+
+ switch (category) {
+ case CATCH:
+ result = getCatchFileName();
+ break;
+ case HAUL:
+ result = getHaulFileName();
+ break;
+ case LENGTH:
+ result = getLengthFileName();
+ break;
+ case STRATA:
+ result = getStrataFileName();
+ break;
+ }
+
+ if (suffix != null) {
+ result = CoserUtils.addSuffixBeforeExtension(result, suffix);
+ }
+
+ return result;
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2014-03-17 16:32:22 UTC (rev 1156)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2014-03-19 09:38:30 UTC (rev 1157)
@@ -473,30 +473,12 @@
* @param category category to get file name
* @param suffix suffix to add into file name
* @return storage file name
+ * @deprecated since 1.5, use now {@link Project#getDataStorageFileName(Category, String)}
*/
+ @Deprecated
protected String getDataStorageFileName(Project project, Category category, String suffix) {
- String result = null;
-
- switch (category) {
- case CATCH:
- result = project.getCatchFileName();
- break;
- case HAUL:
- result = project.getHaulFileName();
- break;
- case LENGTH:
- result = project.getLengthFileName();
- break;
- case STRATA:
- result = project.getStrataFileName();
- break;
- }
-
- if (suffix != null) {
- result = CoserUtils.addSuffixBeforeExtension(result, suffix);
- }
-
+ String result = project.getDataStorageFileName(category, suffix);
return result;
}
1
0
See <http://ci.codelutin.com/jenkins/job/coser-ci/28/changes>
Changes:
[Tony CHEMIT] fixes #3545 (nuiton-web)
[Tony CHEMIT] fixes #3545 (nuiton-web)
[Tony CHEMIT] fixes #3545 (jaxx + nuiton-matrix)
------------------------------------------
[...truncated 156 lines...]
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - ERROR Duplicated line for key : COSER_TEST|2010|TRAIT1|COSER_SPECIES2|i|NA|19.60|
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES1 (year : 2010)
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES1 (year : 2011)
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES2 (year : 2010)
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES2 (year : 2011)
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES3 (year : 2010)
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES3 (year : 2011)
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES4 (year : 2010)
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES4 (year : 2011)
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2|COSER_SPECIES2 tuple in catch
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1|COSER_SPECIES1 tuple in catch
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2|COSER_SPECIES1 tuple in catch
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2|COSER_SPECIES4 tuple in catch
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1|COSER_SPECIES3 tuple in catch
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2|COSER_SPECIES3 tuple in catch
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1|COSER_SPECIES2 tuple in catch
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1|COSER_SPECIES4 tuple in catch
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3|COSER_SPECIES4 tuple in catch
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3|COSER_SPECIES1 tuple in catch
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3|COSER_SPECIES3 tuple in catch
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3|COSER_SPECIES2 tuple in catch
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1 tuple in hauls
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3 tuple in hauls
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2 tuple in hauls
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing strata STR10 in haul file
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing strata STR8 in haul file
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing strata STR7 in haul file
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing strata STR9 in haul file
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing haul TRAIT10 in length file
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing haul TRAIT20 in length file
17:25:15 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing haul TRAIT30 in length file
17:25:15 WARN fr.ifremer.coser.services.ControlServiceTest:96 - []
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.954 sec - in fr.ifremer.coser.services.ControlServiceTest
Running fr.ifremer.coser.services.CommandServiceTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.122 sec - in fr.ifremer.coser.services.CommandServiceTest
Running fr.ifremer.coser.services.ProjectServiceTest
Tests run: 26, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.802 sec - in fr.ifremer.coser.services.ProjectServiceTest
Running fr.ifremer.coser.services.WebServiceTest
17:25:16 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…> to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:16 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…> to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:16 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…> to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:17 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…> to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:17 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…> to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:18 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…> to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:18 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…> to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:18 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…> to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:18 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…> to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:18 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…> to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:18 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…> to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:18 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…> to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.808 sec - in fr.ifremer.coser.services.WebServiceTest
Running fr.ifremer.coser.services.PublicationServiceTest
17:25:18 INFO fr.ifremer.coser.services.PublicationService:481 - Generating HTML report to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:18 INFO fr.ifremer.coser.services.PublicationService:585 - Generating HTML report to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
17:25:18 INFO fr.ifremer.coser.services.PublicationService:308 - Generating HTML report to <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.109 sec - in fr.ifremer.coser.services.PublicationServiceTest
Running fr.ifremer.coser.services.CommonServiceTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.046 sec - in fr.ifremer.coser.services.CommonServiceTest
Running fr.ifremer.coser.bean.EchoBaseProjectTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in fr.ifremer.coser.bean.EchoBaseProjectTest
Running fr.ifremer.coser.bean.IndicatorMapTest
17:25:18 INFO fr.ifremer.coser.bean.IndicatorMap:93 - Loading Indicator file: <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 sec - in fr.ifremer.coser.bean.IndicatorMapTest
Running fr.ifremer.coser.bean.ZoneMapTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.025 sec - in fr.ifremer.coser.bean.ZoneMapTest
Running fr.ifremer.coser.storage.MemoryDataStorageTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.03 sec - in fr.ifremer.coser.storage.MemoryDataStorageTest
Results :
Tests run: 71, Failures: 0, Errors: 0, Skipped: 0
[JENKINS] Recording test results
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ coser-business ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-business/target…>
[INFO]
[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ coser-business ---
[JENKINS] Archiving disabled
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Coser :: UI 1.5-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (7 KB at 182.9 KB/sec)
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-maven-plugin/2.8.2…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (19 KB at 542.7 KB/sec)
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/2.8.2/jaxx-2.8.2.pom
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (62 KB at 1141.8 KB/sec)
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-maven-plugin/2.8.2…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (5 KB at 151.0 KB/sec)
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/matrix…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/matrix/nuiton-matrix-gui/2.3…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (4 KB at 105.8 KB/sec)
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-runtime/2.8.2/jaxx…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (5 KB at 120.4 KB/sec)
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-validator/2.8.2/ja…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (5 KB at 100.6 KB/sec)
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-widgets/2.8.2/jaxx…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (4 KB at 103.6 KB/sec)
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-widgets-extra/2.8.…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (81 KB at 1551.9 KB/sec)
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (77 KB at 1105.5 KB/sec)
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (405 KB at 2749.1 KB/sec)
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (388 KB at 2618.2 KB/sec)
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (508 KB at 3149.7 KB/sec)
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/matrix…
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/matrix/nuiton-matrix-gui/2.3…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-runtime/2.8.2/jaxx…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-validator/2.8.2/ja…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-widgets/2.8.2/jaxx…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-widgets-extra/2.8.…
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ coser-ui ---
[INFO] Deleting <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-ui/target>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ coser-ui ---
[INFO]
[INFO] --- jaxx-maven-plugin:2.8.2:generate (default) @ coser-ui ---
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (5 KB at 109.9 KB/sec)
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-compiler/2.8.2/jax…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (497 KB at 6899.2 KB/sec)
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-compiler/2.8.2/jax…
[WARNING] Failed to getClass for org.nuiton.jaxx.plugin.GenerateMojo
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Coser ............................................. SUCCESS [ 2.263 s]
[INFO] Coser :: Business ................................. SUCCESS [ 21.466 s]
[INFO] Coser :: UI ....................................... FAILURE [ 2.609 s]
[INFO] Coser :: Web ...................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 27.683 s
[INFO] Finished at: 2014-03-17T17:25:22+01:00
[INFO] Final Memory: 47M/584M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.nuiton.jaxx:jaxx-maven-plugin:2.8.2:generate (default) on project coser-ui: Execution default of goal org.nuiton.jaxx:jaxx-maven-plugin:2.8.2:generate failed: Plugin org.nuiton.jaxx:jaxx-maven-plugin:2.8.2 or one of its dependencies could not be resolved: The following artifacts could not be resolved: org.nuiton.jaxx:jaxx-runtime:jar:2.8.2, org.nuiton.jaxx:jaxx-widgets-extra:jar:2.8.2, org.nuiton.jaxx:jaxx-validator:jar:2.8.2: Failure to find org.nuiton.jaxx:jaxx-runtime:jar:2.8.2 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.nuiton.jaxx:jaxx-maven-plugin:2.8.2:generate (default) on project coser-ui: Execution default of goal org.nuiton.jaxx:jaxx-maven-plugin:2.8.2:generate failed: Plugin org.nuiton.jaxx:jaxx-maven-plugin:2.8.2 or one of its dependencies could not be resolved: The following artifacts could not be resolved: org.nuiton.jaxx:jaxx-runtime:jar:2.8.2, org.nuiton.jaxx:jaxx-widgets-extra:jar:2.8.2, org.nuiton.jaxx:jaxx-validator:jar:2.8.2: Failure to find org.nuiton.jaxx:jaxx-runtime:jar:2.8.2 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.jvnet.hudson.maven3.launcher.Maven31Launcher.main(Maven31Launcher.java:132)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238)
at jenkins.maven3.agent.Maven31Main.launch(Maven31Main.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:134)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:69)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:328)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default of goal org.nuiton.jaxx:jaxx-maven-plugin:2.8.2:generate failed: Plugin org.nuiton.jaxx:jaxx-maven-plugin:2.8.2 or one of its dependencies could not be resolved: The following artifacts could not be resolved: org.nuiton.jaxx:jaxx-runtime:jar:2.8.2, org.nuiton.jaxx:jaxx-widgets-extra:jar:2.8.2, org.nuiton.jaxx:jaxx-validator:jar:2.8.2: Failure to find org.nuiton.jaxx:jaxx-runtime:jar:2.8.2 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:104)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 30 more
Caused by: org.apache.maven.plugin.PluginResolutionException: Plugin org.nuiton.jaxx:jaxx-maven-plugin:2.8.2 or one of its dependencies could not be resolved: The following artifacts could not be resolved: org.nuiton.jaxx:jaxx-runtime:jar:2.8.2, org.nuiton.jaxx:jaxx-widgets-extra:jar:2.8.2, org.nuiton.jaxx:jaxx-validator:jar:2.8.2: Failure to find org.nuiton.jaxx:jaxx-runtime:jar:2.8.2 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced
at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:208)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.createPluginRealm(DefaultMavenPluginManager.java:359)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.setupPluginRealm(DefaultMavenPluginManager.java:327)
at org.apache.maven.plugin.DefaultBuildPluginManager.getPluginRealm(DefaultBuildPluginManager.java:230)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:100)
... 31 more
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: The following artifacts could not be resolved: org.nuiton.jaxx:jaxx-runtime:jar:2.8.2, org.nuiton.jaxx:jaxx-widgets-extra:jar:2.8.2, org.nuiton.jaxx:jaxx-validator:jar:2.8.2: Failure to find org.nuiton.jaxx:jaxx-runtime:jar:2.8.2 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:459)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:262)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:367)
at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:200)
... 35 more
Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Failure to find org.nuiton.jaxx:jaxx-runtime:jar:2.8.2 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced
at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.newException(DefaultUpdateCheckManager.java:232)
at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.checkArtifact(DefaultUpdateCheckManager.java:177)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.gatherDownloads(DefaultArtifactResolver.java:599)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:518)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:436)
... 38 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :coser-ui
Sending e-mails to: coser-commits(a)list.forge.codelutin.com
channel stopped
1
1
Build failed in Jenkins: coser-ci » Coser :: UI #28
by admin+ci-codelutin.com@codelutin.com 17 Mar '14
by admin+ci-codelutin.com@codelutin.com 17 Mar '14
17 Mar '14
See <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-ui/28/>
------------------------------------------
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Coser :: UI 1.5-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (7 KB at 182.9 KB/sec)
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-maven-plugin/2.8.2…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (19 KB at 542.7 KB/sec)
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/2.8.2/jaxx-2.8.2.pom
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (62 KB at 1141.8 KB/sec)
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-maven-plugin/2.8.2…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (5 KB at 151.0 KB/sec)
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/matrix…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/matrix/nuiton-matrix-gui/2.3…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (4 KB at 105.8 KB/sec)
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-runtime/2.8.2/jaxx…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (5 KB at 120.4 KB/sec)
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-validator/2.8.2/ja…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (5 KB at 100.6 KB/sec)
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-widgets/2.8.2/jaxx…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (4 KB at 103.6 KB/sec)
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-widgets-extra/2.8.…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (81 KB at 1551.9 KB/sec)
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (77 KB at 1105.5 KB/sec)
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (405 KB at 2749.1 KB/sec)
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (388 KB at 2618.2 KB/sec)
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (508 KB at 3149.7 KB/sec)
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/matrix…
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/jaxx/j…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/matrix/nuiton-matrix-gui/2.3…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-runtime/2.8.2/jaxx…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-validator/2.8.2/ja…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-widgets/2.8.2/jaxx…
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-widgets-extra/2.8.…
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ coser-ui ---
[INFO] Deleting <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-ui/ws/t…>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ coser-ui ---
[INFO]
[INFO] --- jaxx-maven-plugin:2.8.2:generate (default) @ coser-ui ---
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (5 KB at 109.9 KB/sec)
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-compiler/2.8.2/jax…
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/central-releases/org/nui… (497 KB at 6899.2 KB/sec)
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/nuiton/jaxx/jaxx-compiler/2.8.2/jax…
[WARNING] Failed to getClass for org.nuiton.jaxx.plugin.GenerateMojo
[JENKINS] Archiving disabled
1
1
r1156 - in trunk: . coser-business coser-ui coser-web
by maven-release@users.forge.codelutin.com 17 Mar '14
by maven-release@users.forge.codelutin.com 17 Mar '14
17 Mar '14
Author: maven-release
Date: 2014-03-17 17:32:22 +0100 (Mon, 17 Mar 2014)
New Revision: 1156
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1156
Log:
[maven-release-plugin] prepare for next development iteration
Modified:
trunk/coser-business/pom.xml
trunk/coser-ui/pom.xml
trunk/coser-web/pom.xml
trunk/pom.xml
Modified: trunk/coser-business/pom.xml
===================================================================
--- trunk/coser-business/pom.xml 2014-03-17 16:32:14 UTC (rev 1155)
+++ trunk/coser-business/pom.xml 2014-03-17 16:32:22 UTC (rev 1156)
@@ -5,7 +5,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>coser</artifactId>
- <version>1.5-alpha-1</version>
+ <version>1.5-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.coser</groupId>
Modified: trunk/coser-ui/pom.xml
===================================================================
--- trunk/coser-ui/pom.xml 2014-03-17 16:32:14 UTC (rev 1155)
+++ trunk/coser-ui/pom.xml 2014-03-17 16:32:22 UTC (rev 1156)
@@ -5,7 +5,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>coser</artifactId>
- <version>1.5-alpha-1</version>
+ <version>1.5-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.coser</groupId>
Modified: trunk/coser-web/pom.xml
===================================================================
--- trunk/coser-web/pom.xml 2014-03-17 16:32:14 UTC (rev 1155)
+++ trunk/coser-web/pom.xml 2014-03-17 16:32:22 UTC (rev 1156)
@@ -5,7 +5,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>coser</artifactId>
- <version>1.5-alpha-1</version>
+ <version>1.5-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.coser</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-03-17 16:32:14 UTC (rev 1155)
+++ trunk/pom.xml 2014-03-17 16:32:22 UTC (rev 1156)
@@ -10,7 +10,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>coser</artifactId>
- <version>1.5-alpha-1</version>
+ <version>1.5-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Coser</name>
@@ -59,9 +59,9 @@
</modules>
<scm>
- <connection>scm:svn:https://svn.codelutin.com/coser/tags/coser-1.5-alpha-1</connection>
- <developerConnection>scm:svn:https://svn.codelutin.com/coser/tags/coser-1.5-alpha-1</developerConnection>
- <url>https://forge.codelutin.com/repositories/browse/coser/tags/coser-1.5-alpha-1</url>
+ <connection>scm:svn:https://svn.codelutin.com/coser/trunk</connection>
+ <developerConnection>scm:svn:https://svn.codelutin.com/coser/trunk</developerConnection>
+ <url>https://forge.codelutin.com/repositories/browse/coser/trunk</url>
</scm>
<distributionManagement>
<site>
1
0