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
March 2014
- 4 participants
- 51 discussions
Author: tchemit
Date: 2014-03-17 17:10:45 +0100 (Mon, 17 Mar 2014)
New Revision: 1151
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1151
Log:
fixes #3545 (jaxx + nuiton-matrix)
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-03-17 15:22:52 UTC (rev 1150)
+++ trunk/pom.xml 2014-03-17 16:10:45 UTC (rev 1151)
@@ -84,9 +84,9 @@
<coserI18nBundle>coser-i18n</coserI18nBundle>
<!-- Versions -->
- <jaxxVersion>2.8.2-SNAPSHOT</jaxxVersion>
+ <jaxxVersion>2.8.2</jaxxVersion>
<nuitonI18nVersion>3.0</nuitonI18nVersion>
- <nuitonMatrixVersion>2.4-SNAPSHOT</nuitonMatrixVersion>
+ <nuitonMatrixVersion>2.3.3</nuitonMatrixVersion>
<struts.version>2.3.16.1</struts.version>
<nuitonReportPluginVersion>3.0-rc-1</nuitonReportPluginVersion>
1
0
r1150 - in trunk/coser-business/src: main/java/fr/ifremer/coser/bean test/java/fr/ifremer/coser/bean
by tchemit@users.forge.codelutin.com 17 Mar '14
by tchemit@users.forge.codelutin.com 17 Mar '14
17 Mar '14
Author: tchemit
Date: 2014-03-17 16:22:52 +0100 (Mon, 17 Mar 2014)
New Revision: 1150
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1150
Log:
add source property in echobase project
Added:
trunk/coser-business/src/test/java/fr/ifremer/coser/bean/EchoBaseProjectTest.java
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java
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-17 09:57:34 UTC (rev 1149)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java 2014-03-17 15:22:52 UTC (rev 1150)
@@ -26,9 +26,7 @@
import com.google.common.base.Function;
import com.google.common.io.Files;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.filefilter.OrFileFilter;
-import org.apache.commons.io.filefilter.PrefixFileFilter;
-import org.apache.commons.io.filefilter.SuffixFileFilter;
+import org.apache.commons.io.filefilter.RegexFileFilter;
import org.apache.commons.lang3.StringUtils;
import java.io.File;
@@ -158,6 +156,10 @@
return new File(basedir, "maps");
}
+ public File getRawDataDirectory() {
+ return new File(basedir, "source");
+ }
+
/**
* Load a project from his basedir.
*
@@ -209,7 +211,7 @@
if (zoneName != null) {
props.setProperty("project.zoneName", zoneName);
}
- if (surveyName!= null) {
+ if (surveyName != null) {
props.setProperty("project.surveyName", surveyName);
}
if (comment != null) {
@@ -250,9 +252,7 @@
}
public static FilenameFilter newMapSpeciesFilenameFilter(String surveyName) {
- OrFileFilter result = new OrFileFilter();
- result.addFileFilter(new PrefixFileFilter(surveyName + "_"));
- result.addFileFilter(new SuffixFileFilter(".png"));
+ RegexFileFilter result = new RegexFileFilter("^" + surveyName + "_[^_]+?\\.png");
return result;
}
Added: trunk/coser-business/src/test/java/fr/ifremer/coser/bean/EchoBaseProjectTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/bean/EchoBaseProjectTest.java (rev 0)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/bean/EchoBaseProjectTest.java 2014-03-17 15:22:52 UTC (rev 1150)
@@ -0,0 +1,48 @@
+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 org.junit.Assert;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.FilenameFilter;
+
+/**
+ * Created on 3/17/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class EchoBaseProjectTest {
+
+ @Test
+ public void newMapSpeciesFilenameFilter() {
+
+ FilenameFilter filter = EchoBaseProject.newMapSpeciesFilenameFilter("survey");
+ Assert.assertFalse(filter.accept(new File(""), "survey"));
+ Assert.assertFalse(filter.accept(new File(""), "survey.png"));
+ Assert.assertFalse(filter.accept(new File(""), "survey_SPECIES_BAD.png"));
+ Assert.assertTrue(filter.accept(new File(""), "survey_SPECIES.png"));
+ }
+}
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/bean/EchoBaseProjectTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
1
0
Author: tchemit
Date: 2014-03-17 10:57:34 +0100 (Mon, 17 Mar 2014)
New Revision: 1149
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1149
Log:
fix javassist dependencies
Modified:
trunk/coser-business/pom.xml
trunk/pom.xml
Modified: trunk/coser-business/pom.xml
===================================================================
--- trunk/coser-business/pom.xml 2014-03-16 19:00:12 UTC (rev 1148)
+++ trunk/coser-business/pom.xml 2014-03-17 09:57:34 UTC (rev 1149)
@@ -98,7 +98,7 @@
<artifactId>xwork-core</artifactId>
</dependency>
<dependency>
- <groupId>javassist</groupId>
+ <groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</dependency>
<dependency>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-03-16 19:00:12 UTC (rev 1148)
+++ trunk/pom.xml 2014-03-17 09:57:34 UTC (rev 1149)
@@ -228,6 +228,12 @@
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>javassist</groupId>
+ <artifactId>javassist</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
@@ -246,12 +252,18 @@
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>${struts.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>javassist</groupId>
+ <artifactId>javassist</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>javassist</groupId>
+ <groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
- <version>3.12.1.GA</version>
+ <version>3.18.1-GA</version>
<scope>runtime</scope>
</dependency>
1
0
16 Mar '14
Author: tchemit
Date: 2014-03-16 20:00:12 +0100 (Sun, 16 Mar 2014)
New Revision: 1148
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1148
Log:
refs #4664 extract is working for legacy results
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.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/ExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.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/ExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Reports.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java
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-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -27,6 +27,7 @@
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 org.apache.commons.collections4.CollectionUtils;
@@ -108,7 +109,7 @@
public CoserResult executeUnique(CoserRequestContext context, CoserRequest request) {
Preconditions.checkNotNull(request);
- Preconditions.checkArgument(request.isFilled());
+ Preconditions.checkArgument(request.isFilled(), "Request " + request + " is not filled.");
List<ResultRepository> repositories = getMatchingRepositories(context, request);
if (CollectionUtils.isEmpty(repositories)) {
@@ -126,6 +127,16 @@
return result;
}
+ public void deleteResults(CoserRequestContext context,
+ DeleteResultsRequest request) {
+
+ // do delete results (don't care about result)
+ executeAll(context, request);
+
+ // reload projects
+ repositoryProvider.resetRepositories();
+ }
+
/**
* Execute the given {@code request} on any matching result repository.
* <p/>
@@ -138,14 +149,11 @@
public List<CoserResult> executeAll(CoserRequestContext context, CoserRequest request) {
Preconditions.checkNotNull(request);
- Preconditions.checkArgument(request.isFilled());
+ Preconditions.checkArgument(request.isFilled(), "Request " + request + " is not filled.");
List<CoserResult> result = Lists.newArrayList();
List<ResultRepository> repositories = getMatchingRepositories(context, request);
- if (CollectionUtils.isEmpty(repositories)) {
- throw new NoResultRepositoryFoundException("No result repository matching request", request);
- }
for (ResultRepository repository : repositories) {
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -30,6 +30,7 @@
import fr.ifremer.coser.result.util.Charts;
import fr.ifremer.coser.result.util.Extracts;
import fr.ifremer.coser.result.util.Reports;
+import org.nuiton.util.FileUtil;
import java.io.File;
import java.io.IOException;
@@ -93,7 +94,7 @@
public File getTemporaryDirectory() {
if (temporaryDirectory == null) {
try {
- temporaryDirectory = File.createTempFile("coser-", "");
+ temporaryDirectory = FileUtil.createTempDirectory("coser-", "");
} catch (IOException e) {
throw new CoserTechnicalException("Could not create temporary directory.", e);
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -22,6 +22,7 @@
* #L%
*/
+import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
@@ -76,6 +77,7 @@
private final List<String> species;
CommunitySpeciesPredicate(List<String> species) {
+ Preconditions.checkNotNull(species, "Species can not be null");
this.species = species;
}
@@ -92,6 +94,7 @@
private final List<String> indicator;
CommunityIndicatorPredicate(List<String> indicator) {
+ Preconditions.checkNotNull(indicator, "Indicators can not be null");
this.indicator = indicator;
}
@@ -108,6 +111,7 @@
private final List<String> species;
PopulationSpeciesPredicate(List<String> species) {
+ Preconditions.checkNotNull(species, "Species can not be null");
this.species = species;
}
@@ -124,6 +128,7 @@
private final List<String> indicator;
PopulationIndicatorPredicate(List<String> indicator) {
+ Preconditions.checkNotNull(indicator, "Indicators can not be null");
this.indicator = indicator;
}
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-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -118,7 +118,7 @@
return result;
}
- protected ExtractRawDataAndResultsResult newExtractRawDataAndResultsResult(MultiKeyMap<String, File> pdfMaps, Map<String, Pair<File, String>> pdfCharts) {
+ protected ExtractRawDataAndResultsResult newExtractRawDataAndResultsResult(MultiKeyMap<String, File> pdfMaps, MultiKeyMap<String, Pair<File, String>> pdfCharts) {
ExtractRawDataAndResultsResult result = new ExtractRawDataAndResultsResult(
repository.getId(), pdfMaps, pdfCharts);
return result;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -25,7 +25,6 @@
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.bean.SpeciesMap;
import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
@@ -67,9 +66,10 @@
//TODO Remove false when will be ok...
boolean result = false && repository.matchExtractTypeList(request) &&
repository.matchZone(request);
- if (result) {
+ if (result && repository.isIndicatorsResult()) {
- if (request.getExtractTypeList().contains(DataType.POPULATION)) {
+ if (request.getExtractTypeList().contains(DataType.POPULATION) &&
+ CollectionUtils.isNotEmpty(request.getPopulationIndicatorList())) {
// match population indicator?
Predicate<String[]> predicate = Predicates.and(
@@ -80,7 +80,8 @@
if (!result) {
- if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
+ if (request.getExtractTypeList().contains(DataType.COMMUNITY) &&
+ CollectionUtils.isNotEmpty(request.getCommunityIndicatorList())) {
// match community indicator?
Predicate<String[]> predicate = Predicates.and(
@@ -104,7 +105,7 @@
File extractDirectory = request.getExtractDirectory();
// les sources se retrouve dans le zip a cote du pdf
- if (extractTypeList.contains(DataType.SOURCE)) {
+ if (extractTypeList.contains(DataType.SOURCE) && repository.isDataResult()) {
if (log.isDebugEnabled()) {
log.debug("Extracting sources");
}
@@ -114,31 +115,38 @@
// les cartes doivent se retrouver dans le pdf
MultiKeyMap<String, File> pdfMaps = null;
- if (extractTypeList.contains(DataType.MAP)) {
+ if (extractTypeList.contains(DataType.MAP) && repository.isMapsResult()) {
if (log.isDebugEnabled()) {
log.debug("Extracting maps");
}
- pdfMaps = new MultiKeyMap<String, File>();
- SpeciesMap speciesMap = repository.getSpeciesMap();
- String zone = repository.getZone();
- for (String species : speciesList) {
- File mapFile = repository.getMapSpeciesFile(species);
- String speciesName = speciesMap.getSpeciesName(species);
- pdfMaps.put(zone, speciesName, mapFile);
- }
+ pdfMaps = extractMaps(speciesList);
}
// les graphiques sont également dans le pdf
- Map<String, Pair<File, String>> pdfCharts = null;
- if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
- CollectionUtils.isNotEmpty(populationIndicatorList)) {
+ MultiKeyMap<String, Pair<File, String>> pdfCharts = new MultiKeyMap<String, Pair<File, String>>();
+
+ if (CollectionUtils.isNotEmpty(communityIndicatorList) && repository.isIndicatorsResult()) {
if (log.isDebugEnabled()) {
- log.debug("Extracting charts");
+ log.debug("Extracting community charts");
}
- pdfCharts = extractCharts(speciesList,
- communityIndicatorList,
- populationIndicatorList);
+
+ MultiKeyMap<String, Pair<File, String>> map = extractCommunityResults(communityIndicatorList,
+ repository.getZone(),
+ 650,
+ 430);
+ pdfCharts.putAll(map);
}
+ if (CollectionUtils.isNotEmpty(populationIndicatorList) && repository.isIndicatorsResult()) {
+ if (log.isDebugEnabled()) {
+ log.debug("Extracting population charts");
+ }
+ MultiKeyMap<String, Pair<File, String>> map = extractPopulationResults(speciesList,
+ populationIndicatorList,
+ repository.getZone(),
+ 650,
+ 430);
+ pdfCharts.putAll(map);
+ }
ExtractRawDataAndResultsResult result = newExtractRawDataAndResultsResult(pdfMaps, pdfCharts);
return result;
}
@@ -162,36 +170,22 @@
}
/**
- * @param species species to extract in population indicators
- * @param communityIndicators community indicators to extract
- * @param populationIndicators population indicators to extract
- * @return charts files and their data with key: zone , indicator [- speciesName for population])
- * and value: (graphFile, graphData)
+ * Extract all maps for matchings species.
+ *
+ * @param speciesList list of species to extract
+ * @return map of map files indexed by zone - speciesName
*/
- protected Map<String, Pair<File, String>> extractCharts(List<String> species,
- List<String> communityIndicators,
- List<String> populationIndicators) {
-
+ protected MultiKeyMap<String, File> extractMaps(List<String> speciesList) {
+ MultiKeyMap<String, File> pdfMaps;
+ pdfMaps = new MultiKeyMap<String, File>();
+ SpeciesMap speciesMap = repository.getSpeciesMap();
String zone = repository.getZone();
-
- Map<String, Pair<File, String>> result = Maps.newLinkedHashMap();
-
- if (CollectionUtils.isNotEmpty(communityIndicators)) {
- result.putAll(extractCommunityResults(communityIndicators,
- zone,
- 650,
- 430));
+ for (String species : speciesList) {
+ File mapFile = repository.getMapSpeciesFile(species);
+ String speciesName = speciesMap.getSpeciesName(species);
+ pdfMaps.put(zone, speciesName, mapFile);
}
-
- if (CollectionUtils.isNotEmpty(populationIndicators)) {
- result.putAll(extractPopulationResults(species,
- populationIndicators,
- zone,
- 650,
- 430));
- }
-
- return result;
+ return pdfMaps;
}
/**
@@ -203,10 +197,10 @@
* @param height graph height
* @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
*/
- public Map<String, Pair<File, String>> extractCommunityResults(List<String> selectedIndicators,
- String zone,
- int width,
- int height) {
+ public MultiKeyMap<String, Pair<File, String>> extractCommunityResults(List<String> selectedIndicators,
+ String zone,
+ int width,
+ int height) {
// Get exact list of indicators usable for this result
List<String> indicators = Lists.newArrayList(getCommunityIndicators());
@@ -228,7 +222,7 @@
}
});
- Map<String, Pair<File, String>> result = Maps.newHashMap();
+ MultiKeyMap<String, Pair<File, String>> result = new MultiKeyMap<String, Pair<File, String>>();
for (String indicator : indicators) {
@@ -254,7 +248,7 @@
width,
height);
- result.put(indicator, Pair.of(chartFile, rawDataText));
+ result.put(zone, indicator, Pair.of(chartFile, rawDataText));
}
return result;
}
@@ -269,17 +263,17 @@
* @param height graph height
* @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
*/
- public Map<String, Pair<File, String>> extractPopulationResults(List<String> selectedSpecies,
- List<String> selectedIndicators,
- String zone,
- int width,
- int height) {
+ public MultiKeyMap<String, Pair<File, String>> extractPopulationResults(List<String> selectedSpecies,
+ List<String> selectedIndicators,
+ String zone,
+ int width,
+ int height) {
// Get exact list of species to use
List<String> speciesList = Lists.newArrayList(getPopulationSpecies());
speciesList.retainAll(selectedSpecies);
- Map<String, Pair<File, String>> result = Maps.newHashMap();
+ MultiKeyMap<String, Pair<File, String>> result = new MultiKeyMap<String, Pair<File, String>>();
for (String species : speciesList) {
@@ -309,7 +303,7 @@
width,
height);
- result.put(indicator + "-" + species, Pair.of(chartFile, rawDataText));
+ result.put(zone, indicator + "-" + species, Pair.of(chartFile, rawDataText));
}
}
return result;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -22,6 +22,7 @@
* #L%
*/
+import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
@@ -80,6 +81,7 @@
protected final String speciesListLetter;
SpeciesListPredicate(String speciesList) {
+ Preconditions.checkNotNull(speciesList, "SpeciesList can not be null");
this.speciesListLetter = String.valueOf(speciesList.charAt(0));
}
@@ -96,6 +98,7 @@
private final List<String> speciesList;
CommunitySpeciesListPredicate(List<String> speciesList) {
+ Preconditions.checkNotNull(speciesList, "SpeciesList can not be null");
this.speciesList = speciesList;
}
@@ -113,6 +116,7 @@
private final List<String> species;
CommunitySpeciesPredicate(List<String> species) {
+ Preconditions.checkNotNull(species, "Species can not be null");
this.species = species;
}
@@ -130,6 +134,7 @@
private final List<String> indicator;
CommunityIndicatorPredicate(List<String> indicator) {
+ Preconditions.checkNotNull(indicator, "Indicators can not be null");
this.indicator = indicator;
}
@@ -146,6 +151,7 @@
private final List<String> species;
PopulationSpeciesPredicate(List<String> species) {
+ Preconditions.checkNotNull(species, "Species can not be null");
this.species = species;
}
@@ -162,6 +168,7 @@
private final List<String> indicator;
PopulationIndicatorPredicate(List<String> indicator) {
+ Preconditions.checkNotNull(indicator, "Indicators can not be null");
this.indicator = indicator;
}
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-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -159,7 +159,7 @@
return result;
}
- protected ExtractRawDataAndResultsResult newExtractRawDataAndResultsResult(MultiKeyMap<String, File> pdfMaps, Map<String, Pair<File, String>> pdfCharts) {
+ protected ExtractRawDataAndResultsResult newExtractRawDataAndResultsResult(MultiKeyMap<String, File> pdfMaps, MultiKeyMap<String, Pair<File, String>> pdfCharts) {
ExtractRawDataAndResultsResult result = new ExtractRawDataAndResultsResult(
repository.getId(), pdfMaps, pdfCharts);
return result;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -25,7 +25,6 @@
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
import fr.ifremer.coser.bean.SpeciesMap;
import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
@@ -62,9 +61,13 @@
public boolean accept(ExtractRawDataAndResultsRequest request) {
boolean result = repository.matchExtractTypeList(request) &&
repository.matchZone(request);
- if (result) {
+ if (result && repository.isMapsResult()) {
+ //FIXME Should we do something here? check species list...
+ }
+ if (result && repository.isIndicatorsResult()) {
- if (request.getExtractTypeList().contains(DataType.POPULATION)) {
+ if (request.getExtractTypeList().contains(DataType.POPULATION) &&
+ CollectionUtils.isNotEmpty(request.getPopulationIndicatorList())) {
// match population indicator?
Predicate<String[]> predicate = Predicates.and(
@@ -75,7 +78,8 @@
if (!result) {
- if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
+ if (request.getExtractTypeList().contains(DataType.COMMUNITY) &&
+ CollectionUtils.isNotEmpty(request.getCommunityIndicatorList())) {
// match community indicator?
Predicate<String[]> predicate = Predicates.and(
@@ -99,7 +103,7 @@
File extractDirectory = request.getExtractDirectory();
// les sources se retrouve dans le zip a cote du pdf
- if (extractTypeList.contains(DataType.SOURCE)) {
+ if (extractTypeList.contains(DataType.SOURCE) && repository.isDataResult()) {
if (log.isDebugEnabled()) {
log.debug("Extracting sources");
}
@@ -109,31 +113,38 @@
// les cartes doivent se retrouver dans le pdf
MultiKeyMap<String, File> pdfMaps = null;
- if (extractTypeList.contains(DataType.MAP)) {
+ if (extractTypeList.contains(DataType.MAP) && repository.isMapsResult()) {
if (log.isDebugEnabled()) {
log.debug("Extracting maps");
}
- pdfMaps = new MultiKeyMap<String, File>();
- SpeciesMap speciesMap = repository.getSpeciesMap();
- String zone = repository.getZone();
- for (String species : speciesList) {
- File mapFile = repository.getMapSpeciesFile(species);
- String speciesName = speciesMap.getSpeciesName(species);
- pdfMaps.put(zone, speciesName, mapFile);
- }
+ pdfMaps = extractMaps(speciesList);
}
// les graphiques sont également dans le pdf
- Map<String, Pair<File, String>> pdfCharts = null;
- if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
- CollectionUtils.isNotEmpty(populationIndicatorList)) {
+ MultiKeyMap<String, Pair<File, String>> pdfCharts = new MultiKeyMap<String, Pair<File, String>>();
+
+ if (CollectionUtils.isNotEmpty(communityIndicatorList) && repository.isIndicatorsResult()) {
if (log.isDebugEnabled()) {
- log.debug("Extracting charts");
+ log.debug("Extracting community charts");
}
- pdfCharts = extractCharts(speciesList,
- communityIndicatorList,
- populationIndicatorList);
+
+ MultiKeyMap<String, Pair<File, String>> map = extractCommunityResults(communityIndicatorList,
+ repository.getZone(),
+ 650,
+ 430);
+ pdfCharts.putAll(map);
}
+ if (CollectionUtils.isNotEmpty(populationIndicatorList) && repository.isIndicatorsResult()) {
+ if (log.isDebugEnabled()) {
+ log.debug("Extracting population charts");
+ }
+ MultiKeyMap<String, Pair<File, String>> map = extractPopulationResults(speciesList,
+ populationIndicatorList,
+ repository.getZone(),
+ 650,
+ 430);
+ pdfCharts.putAll(map);
+ }
ExtractRawDataAndResultsResult result = newExtractRawDataAndResultsResult(pdfMaps, pdfCharts);
return result;
}
@@ -155,36 +166,22 @@
}
/**
- * @param species species to extract in population indicators
- * @param communityIndicators community indicators to extract
- * @param populationIndicators population indicators to extract
- * @return charts files and their data with key: zone , indicator [- speciesName for population])
- * and value: (graphFile, graphData)
+ * Extract all maps for matchings species.
+ *
+ * @param speciesList list of species to extract
+ * @return map of map files indexed by zone - speciesName
*/
- protected Map<String, Pair<File, String>> extractCharts(List<String> species,
- List<String> communityIndicators,
- List<String> populationIndicators) {
-
+ protected MultiKeyMap<String, File> extractMaps(List<String> speciesList) {
+ MultiKeyMap<String, File> pdfMaps;
+ pdfMaps = new MultiKeyMap<String, File>();
+ SpeciesMap speciesMap = repository.getSpeciesMap();
String zone = repository.getZone();
-
- Map<String, Pair<File, String>> result = Maps.newLinkedHashMap();
-
- if (CollectionUtils.isNotEmpty(communityIndicators)) {
- result.putAll(extractCommunityResults(communityIndicators,
- zone,
- 650,
- 430));
+ for (String species : speciesList) {
+ File mapFile = repository.getMapSpeciesFile(species);
+ String speciesName = speciesMap.getSpeciesName(species);
+ pdfMaps.put(zone, speciesName, mapFile);
}
-
- if (CollectionUtils.isNotEmpty(populationIndicators)) {
- result.putAll(extractPopulationResults(species,
- populationIndicators,
- zone,
- 650,
- 430));
- }
-
- return result;
+ return pdfMaps;
}
/**
@@ -196,10 +193,10 @@
* @param height graph height
* @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
*/
- public Map<String, Pair<File, String>> extractCommunityResults(List<String> selectedIndicators,
- String zone,
- int width,
- int height) {
+ public MultiKeyMap<String, Pair<File, String>> extractCommunityResults(List<String> selectedIndicators,
+ String zone,
+ int width,
+ int height) {
// Get exact list of indicators usable for this result
List<String> indicators = Lists.newArrayList(getCommunityIndicators());
@@ -221,7 +218,7 @@
}
});
- Map<String, Pair<File, String>> result = Maps.newHashMap();
+ MultiKeyMap<String, Pair<File, String>> result = new MultiKeyMap<String, Pair<File, String>>();
for (String indicator : indicators) {
@@ -247,7 +244,7 @@
width,
height);
- result.put(indicator, Pair.of(chartFile, rawDataText));
+ result.put(zone, indicator, Pair.of(chartFile, rawDataText));
}
return result;
}
@@ -262,17 +259,17 @@
* @param height graph height
* @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
*/
- public Map<String, Pair<File, String>> extractPopulationResults(List<String> selectedSpecies,
- List<String> selectedIndicators,
- String zone,
- int width,
- int height) {
+ public MultiKeyMap<String, Pair<File, String>> extractPopulationResults(List<String> selectedSpecies,
+ List<String> selectedIndicators,
+ String zone,
+ int width,
+ int height) {
// Get exact list of species to use
List<String> speciesList = Lists.newArrayList(getPopulationSpecies());
speciesList.retainAll(selectedSpecies);
- Map<String, Pair<File, String>> result = Maps.newHashMap();
+ MultiKeyMap<String, Pair<File, String>> result = new MultiKeyMap<String, Pair<File, String>>();
for (String species : speciesList) {
@@ -302,7 +299,7 @@
width,
height);
- result.put(indicator + "-" + species, Pair.of(chartFile, rawDataText));
+ result.put(zone, indicator + "-" + species, Pair.of(chartFile, rawDataText));
}
}
return result;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -62,8 +62,8 @@
@Override
public boolean isFilled() {
return !(resultRepositoryType == null ||
- resultType == null ||
- CollectionUtils.isEmpty(zoneList));
+ resultType == null ||
+ CollectionUtils.isEmpty(zoneList));
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -59,12 +59,12 @@
@Override
public boolean isFilled() {
- return !(
- CollectionUtils.isEmpty(extractTypeList) ||
- CollectionUtils.isEmpty(zoneList) ||
- CollectionUtils.isEmpty(populationIndicatorList) ||
- CollectionUtils.isEmpty(communityIndicatorList) ||
- CollectionUtils.isEmpty(speciesList));
+ return !(CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList) ||
+ CollectionUtils.isEmpty(speciesList) ||
+ (CollectionUtils.isEmpty(populationIndicatorList) &&
+ CollectionUtils.isEmpty(communityIndicatorList))
+ );
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -43,19 +43,12 @@
protected List<String> zoneList;
- protected List<String> populationIndicatorList;
-
- protected List<String> communityIndicatorList;
-
protected List<DataType> extractTypeList;
@Override
public boolean isFilled() {
- return !(
- CollectionUtils.isEmpty(extractTypeList) ||
- CollectionUtils.isEmpty(zoneList) ||
- CollectionUtils.isEmpty(populationIndicatorList) ||
- CollectionUtils.isEmpty(communityIndicatorList));
+ return !(CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList));
}
@Override
@@ -79,22 +72,4 @@
Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
this.zoneList = zoneList;
}
-
- public List<String> getPopulationIndicatorList() {
- return populationIndicatorList;
- }
-
- public void setPopulationIndicatorList(List<String> populationIndicatorList) {
- Preconditions.checkArgument(CollectionUtils.isNotEmpty(populationIndicatorList));
- this.populationIndicatorList = populationIndicatorList;
- }
-
- public List<String> getCommunityIndicatorList() {
- return communityIndicatorList;
- }
-
- public void setCommunityIndicatorList(List<String> communityIndicatorList) {
- Preconditions.checkArgument(CollectionUtils.isNotEmpty(communityIndicatorList));
- this.communityIndicatorList = communityIndicatorList;
- }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -45,9 +45,7 @@
@Override
public boolean isFilled() {
- return !(facade == null ||
- zone == null ||
- species == null);
+ return !(facade == null || zone == null || species == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForExtractRawDataAndResultsRequest.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForExtractRawDataAndResultsRequest.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -47,9 +47,8 @@
@Override
public boolean isFilled() {
- return !(
- CollectionUtils.isEmpty(extractTypeList) ||
- CollectionUtils.isEmpty(zoneList));
+ return !(CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList));
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -43,9 +43,7 @@
@Override
public boolean isFilled() {
- return !(
- facade == null ||
- zone == null);
+ return !(facade == null || zone == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -45,10 +45,7 @@
@Override
public boolean isFilled() {
- return !(
- facade == null ||
- zone == null ||
- indicator == null);
+ return !(facade == null || zone == null || indicator == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -22,12 +22,8 @@
* #L%
*/
-import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import org.apache.commons.collections4.CollectionUtils;
-import java.util.List;
-
/**
* Request to extract data.
* <p/>
@@ -36,26 +32,12 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForExtractRawDataAndResultsRequest implements CoserRequest, CoserRequestZoneListAware {
+public class GetZonesForExtractRawDataAndResultsRequest implements CoserRequest {
private static final long serialVersionUID = 1L;
- protected List<String> zoneList;
-
@Override
public boolean isFilled() {
- return !(CollectionUtils.isEmpty(zoneList));
+ return true;
}
-
- @Override
- public List<String> getZoneList() {
- return zoneList;
- }
-
- @Override
- public void setZoneList(List<String> zoneList) {
- Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
- this.zoneList = zoneList;
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -27,7 +27,6 @@
import org.apache.commons.lang3.tuple.Pair;
import java.io.File;
-import java.util.Map;
/**
* Created on 3/15/14.
@@ -43,11 +42,11 @@
protected final MultiKeyMap<String, File> pdfMaps;
- protected final Map<String, Pair<File, String>> pdfCharts;
+ protected final MultiKeyMap<String, Pair<File, String>> pdfCharts;
public ExtractRawDataAndResultsResult(String source,
MultiKeyMap<String, File> pdfMaps,
- Map<String, Pair<File, String>> pdfCharts) {
+ MultiKeyMap<String, Pair<File, String>> pdfCharts) {
this.source = source;
this.pdfMaps = pdfMaps;
this.pdfCharts = pdfCharts;
@@ -59,7 +58,7 @@
}
@Override
- public Pair<MultiKeyMap<String, File>, Map<String, Pair<File, String>>> getResult() {
+ public Pair<MultiKeyMap<String, File>, MultiKeyMap<String, Pair<File, String>>> getResult() {
return Pair.of(pdfMaps, pdfCharts);
}
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -36,6 +36,7 @@
import java.io.File;
import java.io.IOException;
+import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -61,12 +62,12 @@
// merge all results
MultiKeyMap<String, File> pdfMaps = new MultiKeyMap<String, File>();
- Map<String, Pair<File, String>> pdfCharts = Maps.newHashMap();
+ MultiKeyMap<String, Pair<File, String>> pdfCharts = new MultiKeyMap<String, Pair<File, String>>();
for (ExtractRawDataAndResultsResult result : results) {
- Pair<MultiKeyMap<String, File>, Map<String, Pair<File, String>>> repositoryResult = result.getResult();
+ Pair<MultiKeyMap<String, File>, MultiKeyMap<String, Pair<File, String>>> repositoryResult = result.getResult();
MultiKeyMap<String, File> pdfMap = repositoryResult.getLeft();
- Map<String, Pair<File, String>> pdfChart = repositoryResult.getRight();
+ MultiKeyMap<String, Pair<File, String>> pdfChart = repositoryResult.getRight();
if (MapUtils.isNotEmpty(pdfMap)) {
pdfMaps.putAll(pdfMap);
}
@@ -97,7 +98,8 @@
}
String filename = Reports.getDechargeFilename(locale);
File dechargePDF = new File(extractDirectory, filename);
- reports.generateDechargePDF(dechargePDF, locale, null, null);
+ Date lastDataUpdateDate = context.getConfig().getLastDataUpdateDate();
+ reports.generateDechargePDF(dechargePDF, locale, lastDataUpdateDate, null);
// make zip
if (log.isDebugEnabled()) {
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Reports.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Reports.java 2014-03-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Reports.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -23,6 +23,9 @@
*/
import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import com.itextpdf.text.DocumentException;
import fr.ifremer.coser.CoserConstants;
import fr.ifremer.coser.CoserTechnicalException;
@@ -40,6 +43,7 @@
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
+import org.apache.commons.collections4.MapUtils;
import org.apache.commons.collections4.keyvalue.MultiKey;
import org.apache.commons.collections4.map.MultiKeyMap;
import org.apache.commons.io.FileUtils;
@@ -59,16 +63,13 @@
import java.io.OutputStream;
import java.io.StringWriter;
import java.io.Writer;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.SortedSet;
-import java.util.TreeSet;
import static org.nuiton.i18n.I18n.l;
@@ -141,8 +142,8 @@
// chargement du reftax et des code types especes pour connaitre
// le type des especes de poissons
// parcourt du fichier des types de données
- Map<String, Integer> refTaxSpeciesNumSys = new HashMap<String, Integer>();
- Map<String, String> refTaxSpeciesName = new HashMap<String, String>();
+ Map<String, Integer> refTaxSpeciesNumSys = Maps.newHashMap();
+ Map<String, String> refTaxSpeciesName = Maps.newHashMap();
Iterator<String[]> itReftax = project.getRefTaxSpecies().iterator(true);
while (itReftax.hasNext()) {
String[] tuple = itReftax.next();
@@ -160,7 +161,7 @@
}
// code type / especes
- Map<String, Integer[]> specyTypes = new HashMap<String, Integer[]>();
+ Map<String, Integer[]> specyTypes = Maps.newHashMap();
Iterator<String[]> itTypeSpecies = project.getTypeEspeces().iterator(true);
while (itTypeSpecies.hasNext()) {
// "Types";"Commentaire";"NumSys min";"NumSys max","Code"
@@ -176,11 +177,11 @@
File estComIndFile = new File(resultDirectory, rsufiResult.getEstComIndName());
// donnees intermediare (map liste id > liste des indicateurs)
- Map<String, SortedSet<String>> indicatorMap = new HashMap<String, SortedSet<String>>();
+ Map<String, SortedSet<String>> indicatorMap = Maps.newHashMap();
// le resutat sera une map complexe
// map liste id > liste des especes (nom complet)
- Map<String, SortedSet<String>> speciesMap = new HashMap<String, SortedSet<String>>();
+ Map<String, SortedSet<String>> speciesMap = Maps.newHashMap();
// Campagne Indicateur Liste Strate Annee Estimation EcartType CV
DataStorage dataStorage = DataStorages.load(estComIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
@@ -196,7 +197,7 @@
// get indicator list
SortedSet<String> indicatorList = indicatorMap.get(listNumber);
if (indicatorList == null) {
- indicatorList = new TreeSet<String>();
+ indicatorList = Sets.newTreeSet();
indicatorMap.put(listNumber, indicatorList);
}
@@ -223,7 +224,7 @@
}
if (selectionSpeciesList != null) {
- SortedSet<String> speciesList = new TreeSet<String>();
+ SortedSet<String> speciesList = Sets.newTreeSet();
for (String speciesCode : selectionSpeciesList) {
// get species full name
@@ -257,7 +258,7 @@
// render freemarker template
Template mapTemplate = freemarkerConfiguration.getTemplate("metainfo.ftl", locale);
- Map<String, Object> root = new HashMap<String, Object>();
+ Map<String, Object> root = Maps.newHashMap();
root.put("indicatorsMap", indicatorMap);
root.put("speciesMap", speciesMap);
@@ -297,9 +298,17 @@
*
* @param disclamerPdf pdf file to generate
* @param locale generated pdf locale
+ * @param updateDate last update date of results
+ * @param surveyName optional survey name
*/
- public void generateDechargePDF(File disclamerPdf, Locale locale, Date updateDate, String surveyName) {
+ public void generateDechargePDF(File disclamerPdf,
+ Locale locale,
+ Date updateDate,
+ String surveyName) {
+ Preconditions.checkNotNull(disclamerPdf);
+ Preconditions.checkNotNull(locale);
+ Preconditions.checkNotNull(updateDate);
OutputStream os = null;
try {
@@ -317,9 +326,12 @@
// render freemarker template
Template mapTemplate = freemarkerConfiguration.getTemplate("decharge.ftl", locale);
- Map<String, Object> root = new HashMap<String, Object>();
+ Map<String, Object> root = Maps.newHashMap();
root.put("updateDate", updateDate);
- root.put("surveyName", surveyName);
+ // il se peut que pour l'extraction un fichier de décharge ne soit
+ // pas généré pour une campagne en particulier
+ // on passe un nom vide a freemarker
+ root.put("surveyName", surveyName == null ? "" : surveyName);
Writer out = new StringWriter();
mapTemplate.process(root, out);
@@ -361,12 +373,12 @@
public void generateExtractPDF(File directory,
List<String> zones,
MultiKeyMap<String, File> pdfMaps,
- Map<String, Pair<File, String>> pdfCharts,
+ MultiKeyMap<String, Pair<File, String>> pdfCharts,
ZoneMap zoneMap,
Locale locale) {
for (String zone : zones) {
- Collection<File> toDelete = new ArrayList<File>();
+ Collection<File> toDelete = Lists.newArrayList();
OutputStream os = null;
try {
@@ -376,7 +388,7 @@
htmlContent.append("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />");
htmlContent.append("</head><body>");
- if (pdfMaps != null) {
+ if (MapUtils.isNotEmpty(pdfMaps)) {
for (Map.Entry<MultiKey<? extends String>, File> mapEntry : pdfMaps.entrySet()) {
String zoneId = mapEntry.getKey().getKey(0);
if (zoneId.equals(zone)) {
@@ -392,9 +404,9 @@
}
}
- if (pdfCharts != null) {
- for (Map.Entry<String, Pair<File, String>> chartFileAndData : pdfCharts.entrySet()) {
- String zoneId = chartFileAndData.getKey();
+ if (MapUtils.isNotEmpty(pdfCharts)) {
+ for (MultiKeyMap.Entry<MultiKey<? extends String>, Pair<File, String>> chartFileAndData : pdfCharts.entrySet()) {
+ String zoneId = chartFileAndData.getKey().getKey(0);
if (zoneId.equals(zone)) {
File chartFile = chartFileAndData.getValue().getLeft();
String content = chartFileAndData.getValue().getRight();
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-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -132,6 +132,16 @@
// --- Result methods -------------------------------------------------- //
// --------------------------------------------------------------------- //
+ public FileResult extractRawDataAndResults(Locale locale,
+ ExtractRawDataAndResultsRequest request) {
+
+ CoserRequestContext context = newRequestContext(locale);
+
+ FileResult result = getRequestExecutor().executeUnique(context, request);
+
+ return result;
+ }
+
public FileResult getFileResult(CoserRequest request) {
CoserRequestContext context = newRequestContext();
@@ -178,29 +188,12 @@
return resultAsMap;
}
- /**
- * Extract raw data and results.
- *
- * @param request extract request
- */
- public FileResult extractResults(ExtractRawDataAndResultsRequest request) {
-
- CoserRequestContext context = newRequestContext();
-
- // Get all extracted data
- FileResult result = getRequestExecutor().executeUnique(context, request);
- return result;
- }
-
public void deleteResults(DeleteResultsRequest request) {
CoserRequestContext context = newRequestContext();
// do delete results (don't care about result)
- getRequestExecutor().executeAll(context, request);
-
- // reload projects
- applicationContext.getRepositoryProvider().resetRepositories();
+ getRequestExecutor().deleteResults(context, request);
}
public void registerNewUploadedResults(String login, File resultFile) {
@@ -249,7 +242,10 @@
}
protected CoserRequestContext newRequestContext() {
- return new DefaultCoserRequestContext(applicationContext,
- action.getLocale());
+ return newRequestContext(action.getLocale());
}
+
+ protected CoserRequestContext newRequestContext(Locale locale) {
+ return new DefaultCoserRequestContext(applicationContext, locale);
+ }
}
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-16 18:59:34 UTC (rev 1147)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-16 19:00:12 UTC (rev 1148)
@@ -199,6 +199,7 @@
GetSpeciesForExtractRawDataAndResultsRequest speciesRequest =
requestBuilder(GetSpeciesForExtractRawDataAndResultsRequest.class).
addZoneList(selectZones).
+ addExtractTypeList(selectTypes).
toRequest();
species = getService().getMultipleResultAsMap(speciesRequest);
@@ -290,8 +291,7 @@
addPopulationIndicatorList(selectPopIndicators).
toRequest();
- resultFile = getService().getFileResult(request);
-
+ resultFile = getService().extractRawDataAndResults(locale, request);
return SUCCESS;
}
1
0
r1147 - in trunk/coser-web/src/main/webapp: WEB-INF/content/search js
by tchemit@users.forge.codelutin.com 16 Mar '14
by tchemit@users.forge.codelutin.com 16 Mar '14
16 Mar '14
Author: tchemit
Date: 2014-03-16 19:59:34 +0100 (Sun, 16 Mar 2014)
New Revision: 1147
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1147
Log:
fixes #4669
Modified:
trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-input.jsp
trunk/coser-web/src/main/webapp/js/coser.js
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-input.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-input.jsp 2014-03-15 15:11:29 UTC (rev 1146)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-input.jsp 2014-03-16 18:59:34 UTC (rev 1147)
@@ -24,6 +24,56 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><s:text name="message.search.extract.title" /></title>
+ <style type="text/css">
+ .select {
+ width:100%;
+ }
+ </style>
+ <script type="text/javascript">
+ <s:if test="!selectZones.empty">
+ var f = function() {
+
+ var valid = $('#selectZones option:selected').length>0;
+ if (valid) {
+ valid = $('#selectTypes option:selected').length >0;
+ }
+ if (valid) {
+ valid = $('#selectSpecies option:selected').length >0;
+ }
+ if (valid) {
+ valid = ($('#selectPopIndicators option:selected').length +
+ $('#selectComIndicators option:selected').length) >0;
+ }
+ var action = $('#submitAction');
+ if (valid) {
+ action.removeAttr('disabled');
+ } else {
+ action.attr('disabled', 'disabled');
+ }
+ };
+ $('select').change(f).trigger( "change" );
+ f();
+ </s:if>
+ <s:else>
+ var f = function() {
+
+ var valid = $('#selectZones option:selected').length>0;
+ if (valid) {
+ valid = $('#selectTypes option:selected').length >0;
+ }
+ var action = $('#nextAction');
+ if (valid) {
+ action.removeAttr('disabled');
+ } else {
+ action.attr('disabled', 'disabled');
+ }
+ };
+ </s:else>
+ $(document).ready(function () {
+ $('select').change(f).trigger( "change" );
+ f();
+ });
+ </script>
</head>
<body>
@@ -35,7 +85,8 @@
<tr>
<td><s:text name="message.common.zones" /> :</td>
<td>
- <select name="selectZones" multiple="multiple" style="width:100%" id="selectZones">
+ <select name="selectZones" multiple="multiple" id="selectZones"
+ class="select">
<s:iterator value="zones" var="zone">
<option value="<s:property value="key" />"
<s:if test="selectZones.contains(#zone.key)">
@@ -56,7 +107,8 @@
<tr>
<td><s:text name="message.common.datatypes" /> :</td>
<td>
- <select name="selectTypes" multiple="multiple" style="width:100%" id="selectTypes">
+ <select name="selectTypes" multiple="multiple" id="selectTypes"
+ class="select">
<s:iterator value="types" var="type">
<option value="<s:property value="key" />"
<s:if test="selectTypes.contains(#type.key)">
@@ -97,7 +149,8 @@
title="<s:text name="message.common.selectnone" />" /></td>
</tr>
<tr>
- <td colspan="2"><s:submit value="%{getText('message.search.extract.updatelists')}" /></td>
+ <td colspan="2"><s:submit id='nextAction'
+ value="%{getText('message.search.extract.updatelists')}" /></td>
</tr>
</table>
@@ -110,7 +163,8 @@
<td><s:text name="message.common.indicatorsof" /><br />
<s:text name="message.common.community" /> :</td>
<td>
- <select name="selectComIndicators" multiple="multiple" style="width:100%" size="10" id="selectComIndicators">
+ <select name="selectComIndicators" multiple="multiple"
+ class="select" size="10" id="selectComIndicators">
<s:iterator value="comIndicators" var="comIndicator">
<option value="<s:property value="key" />"
<s:if test="selectComIndicators.contains(#comIndicator.key)">
@@ -134,7 +188,8 @@
<td><s:text name="message.common.indicatorsof" /><br />
<s:text name="message.common.population" /> :</td>
<td>
- <select name="selectPopIndicators" multiple="multiple" style="width:100%" size="10" id="selectPopIndicators">
+ <select name="selectPopIndicators" multiple="multiple"
+ class="select" size="10" id="selectPopIndicators">
<s:iterator value="popIndicators" var="popIndicator">
<option value="<s:property value="key" />"
<s:if test="selectPopIndicators.contains(#popIndicator.key)">
@@ -156,7 +211,8 @@
<tr>
<td><s:text name="message.common.species" /> :</td>
<td>
- <select name="selectSpecies" multiple="multiple" style="width:100%" size="10" id="selectSpecies">
+ <select name="selectSpecies" multiple="multiple"
+ class="select" size="10" id="selectSpecies">
<s:iterator value="species" var="specy">
<option value="<s:property value="key" />"
<s:if test="selectSpecies.contains(#specy.key)">
@@ -175,7 +231,9 @@
title="<s:text name="message.common.selectnone" />" /></td>
</tr>
<tr>
- <td colspan="2"><s:submit name="submitAction" value="%{getText('message.search.extract.extract')}" /></td>
+ <td colspan="2"><s:submit name="submitAction"
+ value="%{getText('message.search.extract.extract')}"
+ disabled="true"/></td>
</tr>
</table>
</s:if>
Modified: trunk/coser-web/src/main/webapp/js/coser.js
===================================================================
--- trunk/coser-web/src/main/webapp/js/coser.js 2014-03-15 15:11:29 UTC (rev 1146)
+++ trunk/coser-web/src/main/webapp/js/coser.js 2014-03-16 18:59:34 UTC (rev 1147)
@@ -29,9 +29,11 @@
// selection tous les elements d'un select
function coserSelectAll(select) {
$(select).children("option").prop('selected',true);
+ $(select).change();
}
// deselection tous les elements d'un select
function coserUnSelectAll(select) {
$(select).children("option").prop('selected',false);
+ $(select).change();
}
1
0
16 Mar '14
See <http://ci.codelutin.com/jenkins/job/coser-nightly/11/changes>
Changes:
[Tony CHEMIT] refs #4664 review Result API (using Command pattern), need to finish the web part
------------------------------------------
[...truncated 1012 lines...]
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[139,29] cannot find symbol
symbol: method getAvailableSpecies(fr.ifremer.coser.result.CoserRequest)
location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[154,29] cannot find symbol
symbol: method getAvailableIndicators(fr.ifremer.coser.result.CoserRequest)
location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[86,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[95,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[87,39] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[96,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[104,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[94,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[88,23] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[96,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[95,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[96,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[187,79] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[273,75] no suitable method found for requestBuilder(java.util.Locale)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(no instance(s) of type variable(s) R exist so that argument type java.util.Locale conforms to formal parameter type java.lang.Class<R>)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[121,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[INFO] 19 errors
[INFO] -------------------------------------------------------------
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Coser ............................................. SUCCESS [ 9.755 s]
[INFO] Coser :: Business ................................. SUCCESS [ 31.876 s]
[INFO] Coser :: UI ....................................... SUCCESS [01:30 min]
[INFO] Coser :: Web ...................................... FAILURE [ 3.171 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:17 min
[INFO] Finished at: 2014-03-13T01:07:19+01:00
[INFO] Final Memory: 104M/1465M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project coser-web: Compilation failure: Compilation failure:
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[43,16] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[139,29] cannot find symbol
[ERROR] symbol: method getAvailableSpecies(fr.ifremer.coser.result.CoserRequest)
[ERROR] location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[154,29] cannot find symbol
[ERROR] symbol: method getAvailableIndicators(fr.ifremer.coser.result.CoserRequest)
[ERROR] location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[86,19] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[95,40] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[87,39] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[96,53] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[104,19] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[94,55] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[88,23] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[43,16] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[96,19] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[95,53] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[43,16] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[96,55] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[187,79] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[273,75] no suitable method found for requestBuilder(java.util.Locale)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (no instance(s) of type variable(s) R exist so that argument type java.util.Locale conforms to formal parameter type java.lang.Class<R>)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[121,40] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-web/src/ma…>:[43,16] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project coser-web: Compilation failure
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
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.compiler.CompilationFailureException: Compilation failure
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:858)
at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 30 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/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :coser-web
Sending e-mails to: coser-commits(a)list.forge.codelutin.com chemit+codelutin-ci(a)codelutin.com
channel stopped
Skipping sonar analysis due to bad build status FAILURE
1
1
Build failed in Jenkins: coser-nightly » Coser :: Web #11
by admin+ci-codelutin.com@codelutin.com 16 Mar '14
by admin+ci-codelutin.com@codelutin.com 16 Mar '14
16 Mar '14
See <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
Changes:
[Tony CHEMIT] refs #4664 review Result API (using Command pattern), need to finish the web part
------------------------------------------
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Coser :: Web 1.5-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ coser-web ---
[INFO] Deleting <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (ensure-no-container-api) @ coser-web ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ coser-web ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-redmine-login) @ coser-web ---
[INFO] Exporting server [redmine-forge.codelutin.com] username in ${redmine.username}
[INFO] Exporting server [redmine-forge.codelutin.com] privateKey in ${redmine.apiKey}
[INFO]
[INFO] --- license-maven-plugin:1.6:update-project-license (attach-licenses) @ coser-web ---
[INFO]
[INFO] --- license-maven-plugin:1.6:add-third-party (attach-licenses) @ coser-web ---
[INFO] Load missing file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] Missing file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…> is up-to-date.
[INFO] Writing third-party file to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] Will attach third party file from <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserStruts2 (parseJsp) @ coser-web ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserValidation (parseOthersAndGen) @ coser-web ---
[INFO] Load rules file validation.rules
[INFO] Load rules file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserJava (parseOthersAndGen) @ coser-web ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ coser-web >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:get (get) @ coser-web ---
[INFO] Copying coser-web.properties to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] Copying coser-web.properties to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ coser-web <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ coser-web ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:bundle (bundle) @ coser-web >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:collect-i18n-artifacts (collect-i18n-artifacts) @ coser-web ---
[INFO] collected 5 i18n artifacts for locale fr_FR stored in <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] collected 5 i18n artifacts for locale en_GB stored in <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:bundle (bundle) @ coser-web <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:bundle (bundle) @ coser-web ---
[WARNING] bundle fr_FR contains 1/439 empty entries!
- 0/1 : Can't replace data value. Expected %s but was %s
[WARNING] bundle en_GB contains 37/439 empty entries!
- 0/37 : Can't create project
- 1/37 : Can't find line %s for deletion
- 2/37 : Can't find line %s for undeletion
- 3/37 : Can't read file %s for category %s
- 4/37 : Can't read file '%s'. Check CSV file separator
- 5/37 : Can't replace data value. Expected %s but was %s
- 6/37 : Creating matrix : %d*%d*%d*%d
- 7/37 : Missing file %s
- 8/37 : Missing maturity attribute
- 9/37 : Missing sex attribute
- 10/37 : Missing species name
- 11/37 : Missing stratum name
- 12/37 : Missing survey name
- 13/37 : Missing sweptSurface attribute
- 14/37 : Project %s already exist
- 15/37 : Project %s doesn't exists !
- 16/37 : Selection %s already exists
- 17/37 : Selection %s doesn't exists !
- 18/37 : Species %s doesn't exist in referential
- 19/37 : age attribute is not a valid double
- 20/37 : depth attribute is not a valid double
- 21/37 : haul name is not valid
- 22/37 : lat attribute is not a valid double
- 23/37 : lat must contain at least 4 decimals
- 24/37 : length attribute is not a valid double
- 25/37 : length attribute must be positive
- 26/37 : long attribute is not a valid double
- 27/37 : long must contain at least 4 decimals
- 28/37 : month is not valid (2 digits)
- 29/37 : number attribute is not a valid double
- 30/37 : surface attribute is not a valid double
- 31/37 : surface attribute must be positive
- 32/37 : sweptSurface attribute is not a valid double
- 33/37 : sweptSurface attribute must be positive
- 34/37 : sweptSurface must contain at least 3 decimals
- 35/37 : weight attribute is not a valid double
- 36/37 : year is not valid (4 digits.2 digits)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ coser-web ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 7 resources
[INFO] Copying 2 resources
[INFO] Copying 3 resources
[INFO]
[INFO] --- license-maven-plugin:1.6:update-file-header (update-file-header) @ coser-web ---
[INFO] Will search files to update from root <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] Will search files to update from root <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] - ignore file (detected %%Ignore-License) <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] - ignore file (detected %%Ignore-License) <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] - adding license header on file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] - adding license header on file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] - adding license header on file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] Scan 97 files header done in 518.141ms.
[INFO]
* uptodate header on 92 files.
* add header on 3 files.
* ignore header on 2 files.
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ coser-web ---
[INFO] Compiling 48 source files to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING :
[INFO] -------------------------------------------------------------
[WARNING] bootstrap class path not set in conjunction with -source 1.6
[INFO] 1 warning
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[139,29] cannot find symbol
symbol: method getAvailableSpecies(fr.ifremer.coser.result.CoserRequest)
location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[154,29] cannot find symbol
symbol: method getAvailableIndicators(fr.ifremer.coser.result.CoserRequest)
location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[86,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[95,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[87,39] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[96,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[104,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[94,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[88,23] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[96,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[95,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[96,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[187,79] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[273,75] no suitable method found for requestBuilder(java.util.Locale)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(no instance(s) of type variable(s) R exist so that argument type java.util.Locale conforms to formal parameter type java.lang.Class<R>)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[121,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[INFO] 19 errors
[INFO] -------------------------------------------------------------
[JENKINS] Archiving disabled
1
1
Build failed in Jenkins: coser-ci » Coser :: Web #22
by admin+ci-codelutin.com@codelutin.com 15 Mar '14
by admin+ci-codelutin.com@codelutin.com 15 Mar '14
15 Mar '14
See <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/22/…>
Changes:
[Tony CHEMIT] refs #4664 review Result API (using Command pattern), need to finish the web part
------------------------------------------
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Coser :: Web 1.5-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/snapshots/org/nuiton/web…
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/web/nu…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/snapshots/org/nuiton/web… (2 KB at 40.6 KB/sec)
[INFO] Downloaded: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/web/nu… (2 KB at 14.5 KB/sec)
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/snapshots/org/nuiton/web…
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/web/nu…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/snapshots/org/nuiton/web… (822 B at 28.7 KB/sec)
[INFO] Downloaded: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/web/nu… (822 B at 7.5 KB/sec)
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ coser-web ---
[INFO] Deleting <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ coser-web ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserStruts2 (parseJsp) @ coser-web ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserValidation (parseOthersAndGen) @ coser-web ---
[INFO] Load rules file validation.rules
[INFO] Load rules file <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserJava (parseOthersAndGen) @ coser-web ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ coser-web >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:get (get) @ coser-web ---
[INFO] Copying coser-web.properties to <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO] Copying coser-web.properties to <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ coser-web <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ coser-web ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:bundle (bundle) @ coser-web >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:collect-i18n-artifacts (collect-i18n-artifacts) @ coser-web ---
[INFO] collected 5 i18n artifacts for locale fr_FR stored in <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO] collected 5 i18n artifacts for locale en_GB stored in <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:bundle (bundle) @ coser-web <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:bundle (bundle) @ coser-web ---
[WARNING] bundle fr_FR contains 1/439 empty entries!
- 0/1 : Can't replace data value. Expected %s but was %s
[WARNING] bundle en_GB contains 37/439 empty entries!
- 0/37 : Can't create project
- 1/37 : Can't find line %s for deletion
- 2/37 : Can't find line %s for undeletion
- 3/37 : Can't read file %s for category %s
- 4/37 : Can't read file '%s'. Check CSV file separator
- 5/37 : Can't replace data value. Expected %s but was %s
- 6/37 : Creating matrix : %d*%d*%d*%d
- 7/37 : Missing file %s
- 8/37 : Missing maturity attribute
- 9/37 : Missing sex attribute
- 10/37 : Missing species name
- 11/37 : Missing stratum name
- 12/37 : Missing survey name
- 13/37 : Missing sweptSurface attribute
- 14/37 : Project %s already exist
- 15/37 : Project %s doesn't exists !
- 16/37 : Selection %s already exists
- 17/37 : Selection %s doesn't exists !
- 18/37 : Species %s doesn't exist in referential
- 19/37 : age attribute is not a valid double
- 20/37 : depth attribute is not a valid double
- 21/37 : haul name is not valid
- 22/37 : lat attribute is not a valid double
- 23/37 : lat must contain at least 4 decimals
- 24/37 : length attribute is not a valid double
- 25/37 : length attribute must be positive
- 26/37 : long attribute is not a valid double
- 27/37 : long must contain at least 4 decimals
- 28/37 : month is not valid (2 digits)
- 29/37 : number attribute is not a valid double
- 30/37 : surface attribute is not a valid double
- 31/37 : surface attribute must be positive
- 32/37 : sweptSurface attribute is not a valid double
- 33/37 : sweptSurface attribute must be positive
- 34/37 : sweptSurface must contain at least 3 decimals
- 35/37 : weight attribute is not a valid double
- 36/37 : year is not valid (4 digits.2 digits)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ coser-web ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 7 resources
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ coser-web ---
[INFO] Compiling 48 source files to <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING :
[INFO] -------------------------------------------------------------
[WARNING] bootstrap class path not set in conjunction with -source 1.6
[INFO] 1 warning
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[139,29] cannot find symbol
symbol: method getAvailableSpecies(fr.ifremer.coser.result.CoserRequest)
location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[154,29] cannot find symbol
symbol: method getAvailableIndicators(fr.ifremer.coser.result.CoserRequest)
location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[104,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[95,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[121,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[95,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[86,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[88,23] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[96,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[96,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[96,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[94,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[187,79] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[273,75] no suitable method found for requestBuilder(java.util.Locale)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(no instance(s) of type variable(s) R exist so that argument type java.util.Locale conforms to formal parameter type java.lang.Class<R>)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[87,39] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[INFO] 19 errors
[INFO] -------------------------------------------------------------
[JENKINS] Archiving disabled
1
1
See <http://ci.codelutin.com/jenkins/job/coser-ci/22/changes>
Changes:
[Tony CHEMIT] refs #4664 review Result API (using Command pattern), need to finish the web part
------------------------------------------
[...truncated 669 lines...]
symbol: method getAvailableIndicators(fr.ifremer.coser.result.CoserRequest)
location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[104,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[95,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[121,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[95,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[86,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[88,23] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[96,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[96,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[96,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[94,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[187,79] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[273,75] no suitable method found for requestBuilder(java.util.Locale)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(no instance(s) of type variable(s) R exist so that argument type java.util.Locale conforms to formal parameter type java.lang.Class<R>)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[87,39] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[INFO] 19 errors
[INFO] -------------------------------------------------------------
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Coser ............................................. SUCCESS [ 2.395 s]
[INFO] Coser :: Business ................................. SUCCESS [ 15.142 s]
[INFO] Coser :: UI ....................................... SUCCESS [ 11.669 s]
[INFO] Coser :: Web ...................................... FAILURE [ 1.148 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 31.830 s
[INFO] Finished at: 2014-03-12T18:55:30+01:00
[INFO] Final Memory: 89M/1466M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project coser-web: Compilation failure: Compilation failure:
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[139,29] cannot find symbol
[ERROR] symbol: method getAvailableSpecies(fr.ifremer.coser.result.CoserRequest)
[ERROR] location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[154,29] cannot find symbol
[ERROR] symbol: method getAvailableIndicators(fr.ifremer.coser.result.CoserRequest)
[ERROR] location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[104,19] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[95,40] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[121,40] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[95,53] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[86,19] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[88,23] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[96,55] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[96,53] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[96,19] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[94,55] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[187,79] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[273,75] no suitable method found for requestBuilder(java.util.Locale)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (no instance(s) of type variable(s) R exist so that argument type java.util.Locale conforms to formal parameter type java.lang.Class<R>)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[87,39] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project coser-web: Compilation failure
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
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.compiler.CompilationFailureException: Compilation failure
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:858)
at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 30 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/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :coser-web
Sending e-mails to: coser-commits(a)list.forge.codelutin.com chemit+codelutin-ci(a)codelutin.com
channel stopped
1
1
15 Mar '14
Author: tchemit
Date: 2014-03-15 16:11:29 +0100 (Sat, 15 Mar 2014)
New Revision: 1146
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1146
Log:
refs-90 #4664
Added:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserApplicationContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserApplicationContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommandFactory.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/CoserRequestContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.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/GetCommunityIndicatorResultDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultGraphCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultGraphCommand.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/echobase/command/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.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/GetCommunityIndicatorResultDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultGraphCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultGraphCommand.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/result/repository/legacy/command/GetZonesForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestExtractTypeListAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryResultTypeAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryTypeAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultDataRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultGraphRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultDataRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultGraphRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/FileResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/MapResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/VoidResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/
trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Charts.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Reports.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorageWalker.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebApplicationContext.java
Removed:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.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/result/CoserRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.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/EchoBaseResultRepositoryProvider.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/echobase/command/DeleteResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/package-info.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/LegacyResultRepositoryType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/DeleteResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/AbstractGetIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetMapResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.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/bean/IndicatorMapTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.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/DeleteProjectsAction.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/com/IndicatorAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.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/common/CoserAction.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/map/ZoneAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.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/pop/ZoneAction.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/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserApplicationContext.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserApplicationContext.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserApplicationContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,89 @@
+package fr.ifremer.coser;
+
+/*
+ * #%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 fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.CoserCommandFactory;
+import fr.ifremer.coser.result.CoserMainRepositoryProvider;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import fr.ifremer.coser.result.util.Charts;
+import fr.ifremer.coser.result.util.Extracts;
+import fr.ifremer.coser.result.util.Reports;
+
+import java.util.ServiceLoader;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserApplicationContext {
+
+ /**
+ * @return application configuration
+ */
+ CoserBusinessConfig getConfig();
+
+ /**
+ * @return all types of {@link ResultRepositoryType} found via the {@link ServiceLoader} mecanism
+ */
+ Set<ResultRepositoryType> getRepositoryTypes();
+
+ /**
+ * @return repository provider
+ */
+ CoserMainRepositoryProvider getRepositoryProvider();
+
+ /**
+ * @return factory of command
+ */
+ CoserCommandFactory getCommandFactory();
+
+ /**
+ * @return indicator map
+ */
+ IndicatorMap getIndicatorMap();
+
+ /**
+ * @return zone map
+ */
+ ZoneMap getZoneMap();
+
+ /**
+ * @return reports helper
+ */
+ Reports getReports();
+
+ /**
+ * @return charts helper
+ */
+ Charts getCharts();
+
+ /**
+ * @return extracts helper
+ */
+ Extracts getExtracts();
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,49 +0,0 @@
-package fr.ifremer.coser;
-
-/*
- * #%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 fr.ifremer.coser.bean.IndicatorMap;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
-import fr.ifremer.coser.result.repository.ResultRepositoryType;
-
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public interface CoserServiceContext {
-
- CoserBusinessConfig getConfig();
-
- Set<ResultRepositoryType> getResultRepositoryTypes();
-
- Set<ResultRepositoryProvider<?>> getResultRepositoryProviders();
-
- IndicatorMap getIndicatorsMap();
-
- ZoneMap getZonesMap();
-}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,38 @@
+package fr.ifremer.coser;
+
+/*
+ * #%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 java.io.File;
+
+/**
+ * Created on 3/14/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserServiceContext {
+
+ CoserApplicationContext getApplicationContext();
+
+ File getTemporaryDirectory();
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserApplicationContext.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserApplicationContext.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserApplicationContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,171 @@
+package fr.ifremer.coser;
+
+/*
+ * #%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.collect.Sets;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.CoserCommandFactory;
+import fr.ifremer.coser.result.CoserMainRepositoryProvider;
+import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import fr.ifremer.coser.result.util.Charts;
+import fr.ifremer.coser.result.util.Extracts;
+import fr.ifremer.coser.result.util.Reports;
+import org.nuiton.config.ArgumentsParserException;
+
+import java.util.ServiceLoader;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class DefaultCoserApplicationContext implements CoserApplicationContext {
+
+ /**
+ * Application configuration.
+ */
+ protected CoserBusinessConfig config;
+
+ /**
+ * Result repository types (loaded by service loader).
+ */
+ protected Set<ResultRepositoryType> repositoryTypes;
+
+ /**
+ * Result repository provider.
+ */
+ protected CoserMainRepositoryProvider repositoryProvider;
+
+ /**
+ * Factory of commands.
+ */
+ protected CoserCommandFactory commandFactory;
+
+ /**
+ * Cache of indicator definition.
+ */
+ protected IndicatorMap indicatorsMap;
+
+ /**
+ * Cache of zone definition.
+ */
+ protected ZoneMap zonesMap;
+
+ /**
+ * Reports helper.
+ */
+ protected Reports reports;
+
+ /**
+ * Charts helper.
+ */
+ protected Charts charts;
+
+ private Extracts extracts;
+
+ public DefaultCoserApplicationContext(CoserBusinessConfig config) {
+ this.config = config;
+ try {
+ config.parse();
+ } catch (ArgumentsParserException ex) {
+ throw new CoserTechnicalException("Can't read configuration", ex);
+ }
+ }
+
+ @Override
+ public CoserBusinessConfig getConfig() {
+ return config;
+ }
+
+ @Override
+ public Set<ResultRepositoryType> getRepositoryTypes() {
+ if (repositoryTypes == null) {
+ ServiceLoader<ResultRepositoryType> loader = ServiceLoader.load(ResultRepositoryType.class);
+ repositoryTypes = Sets.newHashSet(loader);
+ }
+ return repositoryTypes;
+ }
+
+ @Override
+ public IndicatorMap getIndicatorMap() {
+ if (indicatorsMap == null) {
+ indicatorsMap = new IndicatorMap(config.getWebIndicatorsFile());
+ }
+ return indicatorsMap;
+ }
+
+ @Override
+ public ZoneMap getZoneMap() {
+ if (zonesMap == null) {
+ zonesMap = new ZoneMap(config.getWebZonesFile());
+ }
+ return zonesMap;
+ }
+
+ @Override
+ public Reports getReports() {
+ if (reports == null) {
+ reports = new Reports();
+ }
+ return reports;
+ }
+
+ @Override
+ public Charts getCharts() {
+ if (charts == null) {
+ charts = new Charts();
+ }
+ return charts;
+ }
+
+ @Override
+ public Extracts getExtracts() {
+ if (extracts == null) {
+ extracts = new Extracts();
+ }
+ return extracts;
+ }
+
+ @Override
+ public CoserMainRepositoryProvider getRepositoryProvider() {
+ if (repositoryProvider == null) {
+
+ Set<ResultRepositoryProvider<?>> repositoryProviders = CoserMainRepositoryProvider.createDefaultRepositoryProviders(config);
+ repositoryProvider = new CoserMainRepositoryProvider(repositoryProviders);
+ }
+ return repositoryProvider;
+ }
+
+ @Override
+ public CoserCommandFactory getCommandFactory() {
+ if (commandFactory == null) {
+ commandFactory = new CoserCommandFactory(getRepositoryTypes());
+ }
+ return commandFactory;
+ }
+
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,130 +0,0 @@
-package fr.ifremer.coser;
-
-/*
- * #%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 com.google.common.collect.Sets;
-import fr.ifremer.coser.bean.IndicatorMap;
-import fr.ifremer.coser.bean.ZoneMap;
-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.legacy.LegacyResultRepositoryProvider;
-
-import java.util.ServiceLoader;
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class DefaultCoserServiceContext implements CoserServiceContext {
-
- /**
- * Application configuration.
- */
- protected CoserBusinessConfig config;
-
- /**
- * Available type of result repositories (loaded by service loader).
- */
- protected Set<ResultRepositoryType> resultRepositoryTypes;
-
- /**
- * Result repositories providers.
- */
- protected Set<ResultRepositoryProvider<?>> resultRepositoryProviders;
-
- /**
- * Cache of indicator definition.
- */
- protected IndicatorMap indicatorsMap;
-
- /**
- * Cache of zone definition.
- */
- protected ZoneMap zonesMap;
-
- public DefaultCoserServiceContext(CoserBusinessConfig config) {
- this.config = config;
- }
-
- public static Set<ResultRepositoryProvider<?>> createDefaultRepositoryProviders(CoserBusinessConfig config) {
- Preconditions.checkNotNull(config);
- Set<ResultRepositoryProvider<?>> result = Sets.newHashSet();
-
- // add legacy map repository
- Preconditions.checkNotNull(config.getWebMapsProjectsDirectory());
- result.add(new LegacyResultRepositoryProvider(config.getWebMapsProjectsDirectory()));
-
- // add legacy indicators repository
- Preconditions.checkNotNull(config.getWebIndicatorsProjectsDirectory());
- result.add(new LegacyResultRepositoryProvider(config.getWebIndicatorsProjectsDirectory()));
-
- // add EchoBase repository
- Preconditions.checkNotNull(config.getWebEchobaseProjectsDirectory());
- result.add(new EchoBaseResultRepositoryProvider(config.getWebEchobaseProjectsDirectory()));
- return result;
- }
-
- @Override
- public CoserBusinessConfig getConfig() {
- return config;
- }
-
- @Override
- public Set<ResultRepositoryType> getResultRepositoryTypes() {
- if (resultRepositoryTypes == null) {
- ServiceLoader<ResultRepositoryType> loader = ServiceLoader.load(ResultRepositoryType.class);
- resultRepositoryTypes = Sets.newHashSet(loader);
- }
- return resultRepositoryTypes;
- }
-
- @Override
- public Set<ResultRepositoryProvider<?>> getResultRepositoryProviders() {
- if (resultRepositoryProviders == null) {
- resultRepositoryProviders = createDefaultRepositoryProviders(config);
- }
- return resultRepositoryProviders;
- }
-
- @Override
- public IndicatorMap getIndicatorsMap() {
- if (indicatorsMap == null) {
- indicatorsMap = new IndicatorMap(config.getWebIndicatorsFile());
- }
- return indicatorsMap;
- }
-
- @Override
- public ZoneMap getZonesMap() {
- if (zonesMap == null) {
- zonesMap = new ZoneMap(config.getWebZonesFile());
- }
- return zonesMap;
- }
-
-}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,7 +24,9 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorageWalker;
import fr.ifremer.coser.storage.DataStorages;
import org.apache.commons.collections4.map.MultiKeyMap;
import org.apache.commons.logging.Log;
@@ -32,9 +34,10 @@
import java.io.File;
import java.util.Collection;
-import java.util.Iterator;
+import java.util.Collections;
import java.util.Locale;
import java.util.Map;
+import java.util.Set;
/**
* Contains the localized indicator definitions.
@@ -50,79 +53,105 @@
private static final Log log = LogFactory.getLog(IndicatorMap.class);
/**
- * Indicator map (id, locale > translation, id, "unit" > unit) (etat du service).
+ * To get french translations.
*/
+ protected static final String KEY_FRENCH = Locale.FRENCH.getLanguage();
+
+ /**
+ * To get english translations.
+ */
+ protected static final String KEY_ENGLISH = Locale.ENGLISH.getLanguage();
+
+ /**
+ * To get spanish translations.
+ */
+ protected static final String KEY_SPANISH = "es";
+
+ /**
+ * To get unit translations.
+ */
+ protected static final String KEY_UNIT = "unit";
+
+ /**
+ * Universe of safe keys usable in the cache.
+ *
+ * @see #getSafeLocaleKey(String)
+ */
+ protected static final Set<String> SAFE_KEYS = Collections.unmodifiableSet(
+ Sets.newHashSet(KEY_FRENCH, KEY_ENGLISH, KEY_UNIT, KEY_SPANISH));
+
+ /**
+ * Localized Indicator map (id, locale > translation, id, "unit" > unit).
+ */
protected final MultiKeyMap<String, String> map;
public IndicatorMap(File indicatorsFile) {
Preconditions.checkNotNull(indicatorsFile);
+ Preconditions.checkArgument(indicatorsFile.exists(), "Indicator file: " + indicatorsFile + " does not exist.");
if (log.isInfoEnabled()) {
log.info("Loading Indicator file: " + indicatorsFile);
}
this.map = new MultiKeyMap<String, String>();
- DataStorage indicatorsStorage;
- indicatorsStorage = DataStorages.load(indicatorsFile);
- Iterator<String[]> iteratorInd = indicatorsStorage.iterator(true);
- while (iteratorInd.hasNext()) {
- // "id";"label_fr";"label_en";"label_es";"unit"
- String[] indicator = iteratorInd.next();
- map.put(indicator[0], "fr", indicator[1]);
- map.put(indicator[0], "en", indicator[2]);
- map.put(indicator[0], "es", indicator[3]);
- map.put(indicator[0], "unit", indicator[4]);
- }
+
+ DataStorage storage = DataStorages.load(indicatorsFile);
+ DataStorages.walk(storage, new DataStorageWalker() {
+ @Override
+ public void onRow(String... row) {
+ String indicatorCode = row[0];
+ 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]);
+ }
+ });
}
- public String getIndicatorValue(String indicator, Locale locale) {
+ public String getIndicatorValue(Locale locale, String indicator) {
+ Preconditions.checkNotNull(locale);
Preconditions.checkNotNull(indicator);
- Preconditions.checkNotNull(locale);
- String translations = getIndicatorValue(indicator, locale.getLanguage());
- if (translations == null) {
- translations = "##" + indicator + "##" + locale.getLanguage();
- }
- return translations;
+ String localeCode = getSafeLocaleKey(locale.getLanguage());
+ String translation = getIndicatorValue(localeCode, indicator);
+ return translation;
}
public String getIndicatorUnit(String indicator) {
Preconditions.checkNotNull(indicator);
- return getIndicatorValue(indicator, "unit");
+ return getIndicatorValue(KEY_UNIT, indicator);
}
- /**
- * Get indicator translation by checking correct locale.
- *
- * @param indicator indicator code
- * @param localeCode locale
- * @return indicator translation
- */
- public String getIndicatorValue(String indicator, String localeCode) {
- Preconditions.checkNotNull(indicator);
- Preconditions.checkNotNull(localeCode);
- String localLocaleCode = localeCode;
- if (!"fr".equals(localLocaleCode) && !"es".equals(localLocaleCode)
- && !"unit".equals(localLocaleCode)) {
- localLocaleCode = "en"; // en by default
- }
- return map.get(indicator, localLocaleCode);
- }
+ public Map<String, String> getIndicatorsValues(Locale locale,
+ Collection<String> indicatorList) {
- public Map<String, String> getIndicatorsValues(Collection<String> indicatorList, Locale locale) {
-
Map<String, String> result = Maps.newTreeMap();
if (indicatorList != null) {
+ String localeCode = getSafeLocaleKey(locale.getLanguage());
for (String indicator : indicatorList) {
- String indicatorLabel = getIndicatorValue(indicator, locale);
+ String indicatorLabel = getIndicatorValue(localeCode, indicator);
result.put(indicator, indicatorLabel);
}
}
-
return result;
}
- protected MultiKeyMap<String, String> getMap() {
- return map;
+ protected String getIndicatorValue(String localeCode, String indicator) {
+ Preconditions.checkNotNull(localeCode);
+ Preconditions.checkNotNull(indicator);
+ Preconditions.checkArgument(SAFE_KEYS.contains(localeCode));
+ String translation = map.get(indicator, localeCode);
+ if (translation == null) {
+ translation = "##" + indicator + "##" + localeCode;
+ }
+ return translation;
}
+
+ protected String getSafeLocaleKey(String localeCode) {
+ if (!SAFE_KEYS.contains(localeCode)) {
+ localeCode = KEY_ENGLISH; // en by default
+ }
+ return localeCode;
+ }
+
}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesListMap.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,13 +22,19 @@
* #L%
*/
+import com.google.common.base.Predicate;
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorageWalker;
import fr.ifremer.coser.storage.DataStorages;
import org.nuiton.i18n.I18n;
import java.io.File;
+import java.util.Collection;
import java.util.Iterator;
import java.util.Locale;
+import java.util.Map;
/**
* Created on 3/11/14.
@@ -50,42 +56,64 @@
public String getSpeciesListName(Locale locale, String specesList) {
// recherche de la traduction de l'id de liste
// les liste sont a1, T1, T2 ...
- String listLetter = String.valueOf(specesList.charAt(0));
- String translation = "## " + specesList + " not found ##";
- Iterator<String[]> typeIterator = iterator(true);
- while (typeIterator.hasNext()) {
- // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
- String[] tupleType = typeIterator.next();
- if (tupleType[4].equals(listLetter)) {
- // gestion du groupe "Tous"
- // cas special, c'est la seule valeur du fichier
- // code type espece qui a besoin d'une traduction
- if (tupleType[4].equalsIgnoreCase("T")) {
+ Predicate<String[]> predicate = LegacyPredicates.speciesListPredicate(specesList);
+ GetNameWalker walker = new GetNameWalker(locale, specesList);
+ DataStorages.walk(storage, predicate, walker);
+ String translation = walker.getTranslation();
- translation = I18n.l(locale, "coser.business.specesList.nameForAll", specesList.charAt(1));
-// if (locale != null && "fr".equals(locale.getLanguage())) {
-// translation = "Tous Liste " + specesList.charAt(1);
-// } else if (locale != null && "en".equals(locale.getLanguage())) {
-// translation = "Todo Lista " + specesList.charAt(1);
-// } else {
-// translation = "All List " + specesList.charAt(1);
-// }
- } else {
- // ajout de la traduction du nom de liste plus le numéro
- translation = I18n.l(locale, "coser.business.specesList.name", tupleType[0], specesList.charAt(1));
-// if (locale != null && "fr".equals(locale.getLanguage())) {
-// translation = tupleType[0] + " Liste " + specesList.charAt(1);
-// } else if (locale != null && "en".equals(locale.getLanguage())) {
-// translation = tupleType[0] + " Lista " + specesList.charAt(1);
-// } else {
-// translation = tupleType[0] + " List " + specesList.charAt(1);
-// }
- }
- break;
+// String listLetter = String.valueOf(specesList.charAt(0));
+// String translation = "## " + specesList + " not found ##";
+// Iterator<String[]> typeIterator = iterator(true);
+// while (typeIterator.hasNext()) {
+// // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
+// String[] tupleType = typeIterator.next();
+// if (tupleType[4].equals(listLetter)) {
+//
+// // gestion du groupe "Tous"
+// // cas special, c'est la seule valeur du fichier
+// // code type espece qui a besoin d'une traduction
+// if (tupleType[4].equalsIgnoreCase("T")) {
+//
+// translation = I18n.l(locale, "coser.business.specesList.nameForAll", specesList.charAt(1));
+//// if (locale != null && "fr".equals(locale.getLanguage())) {
+//// translation = "Tous Liste " + specesList.charAt(1);
+//// } else if (locale != null && "en".equals(locale.getLanguage())) {
+//// translation = "Todo Lista " + specesList.charAt(1);
+//// } else {
+//// translation = "All List " + specesList.charAt(1);
+//// }
+// } else {
+// // ajout de la traduction du nom de liste plus le numéro
+// translation = I18n.l(locale, "coser.business.specesList.name", tupleType[0], specesList.charAt(1));
+//// if (locale != null && "fr".equals(locale.getLanguage())) {
+//// translation = tupleType[0] + " Liste " + specesList.charAt(1);
+//// } else if (locale != null && "en".equals(locale.getLanguage())) {
+//// translation = tupleType[0] + " Lista " + specesList.charAt(1);
+//// } else {
+//// translation = tupleType[0] + " List " + specesList.charAt(1);
+//// }
+// }
+// break;
+// }
+// }
+ return translation;
+ }
+
+ public Map<String, String> getSpeciesSubMap(Locale locale, Collection<String> speciesList) {
+
+ // keep incoming order
+ Map<String, String> result = Maps.newLinkedHashMap();
+
+ if (speciesList != null) {
+
+ for (String species : speciesList) {
+ String speciesLabel = getSpeciesListName(locale, species);
+ result.put(species, speciesLabel);
}
}
- return translation;
+
+ return result;
}
protected Iterator<String[]> iterator(boolean skipFirstLine) {
@@ -93,4 +121,37 @@
Iterator<String[]> iterator = storage.iterator(skipFirstLine);
return iterator;
}
+
+ public static class GetNameWalker implements DataStorageWalker {
+
+ protected String translation;
+
+ protected String speciesList;
+
+ protected final Locale locale;
+
+ public GetNameWalker(Locale locale, String speciesList) {
+ this.speciesList = speciesList;
+ this.locale = locale;
+ translation = "## " + speciesList + " not found ##";
+ }
+
+ public String getTranslation() {
+ return translation;
+ }
+
+ @Override
+ public void onRow(String... tuple) {
+
+ // gestion du groupe "Tous"
+ // cas special, c'est la seule valeur du fichier
+ // code type espece qui a besoin d'une traduction
+ if (tuple[4].equalsIgnoreCase("T")) {
+ translation = I18n.l(locale, "coser.business.specesList.nameForAll", speciesList.charAt(1));
+ } else {
+ // ajout de la traduction du nom de liste plus le numéro
+ translation = I18n.l(locale, "coser.business.specesList.name", tuple[0], speciesList.charAt(1));
+ }
+ }
+ }
}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesMap.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,6 +25,7 @@
import com.google.common.collect.Maps;
import fr.ifremer.coser.storage.DataStorage;
import fr.ifremer.coser.storage.DataStorages;
+import org.apache.commons.lang3.StringUtils;
import java.io.File;
import java.util.Collection;
@@ -95,7 +96,9 @@
Map<String, String> map = getSpeciesMap();
for (String species : speciesList) {
String speciesLabel = map.get(species);
- result.put(species, speciesLabel);
+ if (StringUtils.isNotEmpty(speciesLabel)) {
+ result.put(species, speciesLabel);
+ }
}
}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,44 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%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.result.repository.ResultRepository;
+
+/**
+ * To execute a command on a request for a given result repository.
+ * <p/>
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserCommand<Repository extends ResultRepository, Request extends CoserRequest> {
+
+ boolean accept(Request request);
+
+ CoserResult execute(Request request);
+
+ void setRepository(Repository repository);
+
+ void setRequestContext(CoserRequestContext context);
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommandFactory.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommandFactory.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommandFactory.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,80 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%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 fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import org.apache.commons.collections4.map.MultiKeyMap;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * To create commands.
+ * Created on 3/14/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserCommandFactory {
+
+ /**
+ * Cache of command types.
+ * <p/>
+ * Keys are (repository type id, request type).
+ */
+ protected final MultiKeyMap<Object, Class<? extends CoserCommand>> commands;
+
+ public CoserCommandFactory(Set<ResultRepositoryType> resultRepositoryTypes) {
+ this.commands = new MultiKeyMap<Object, Class<? extends CoserCommand>>();
+ for (ResultRepositoryType resultRepositoryType : resultRepositoryTypes) {
+
+ String resultRepositoryTypeId = resultRepositoryType.getId();
+
+ Map<Class<? extends CoserRequest>, Class<? extends CoserCommand>> commandTypes = resultRepositoryType.getCommandTypes();
+ for (Map.Entry<Class<? extends CoserRequest>, Class<? extends CoserCommand>> entry : commandTypes.entrySet()) {
+ commands.put(resultRepositoryTypeId, entry.getKey(), entry.getValue());
+ }
+ }
+ }
+
+ public <Repo extends ResultRepository, R extends CoserRequest> CoserCommand<Repo, R> newCommand(CoserRequestContext requestContext,
+ Repo repository,
+ R request) {
+
+ Class<? extends CoserCommand> commandType = commands.get(repository.getResultRepositoryType().getId(), request.getClass());
+
+ try {
+ // instanciate the command to get the request type :(
+ CoserCommand<Repo, R> command = commandType.newInstance();
+ command.setRepository(repository);
+ command.setRequestContext(requestContext);
+ return command;
+ } catch (InstantiationException e) {
+ throw new CoserTechnicalException(e);
+ } catch (IllegalAccessException e) {
+ throw new CoserTechnicalException(e);
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommandFactory.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,123 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%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 com.google.common.collect.Sets;
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProvider;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Set;
+
+/**
+ * Created on 3/15/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserMainRepositoryProvider {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(CoserMainRepositoryProvider.class);
+
+ /**
+ * Repositories providers.
+ */
+ protected final Set<ResultRepositoryProvider<?>> repositoryProviders;
+
+ /**
+ * Cache of repositories.
+ */
+ protected Set<ResultRepository> repositories;
+
+ public static Set<ResultRepositoryProvider<?>> createDefaultRepositoryProviders(CoserBusinessConfig config) {
+ Preconditions.checkNotNull(config);
+ Set<ResultRepositoryProvider<?>> result = Sets.newHashSet();
+
+ // add legacy map repository
+ Preconditions.checkNotNull(config.getWebMapsProjectsDirectory());
+ result.add(new LegacyResultRepositoryProvider(config, config.getWebMapsProjectsDirectory()));
+
+ // add legacy indicators repository
+ Preconditions.checkNotNull(config.getWebIndicatorsProjectsDirectory());
+ result.add(new LegacyResultRepositoryProvider(config, config.getWebIndicatorsProjectsDirectory()));
+
+ // add EchoBase repository
+ Preconditions.checkNotNull(config.getWebEchobaseProjectsDirectory());
+ result.add(new EchoBaseResultRepositoryProvider(config.getWebEchobaseProjectsDirectory()));
+ return result;
+ }
+
+ public CoserMainRepositoryProvider(Set<ResultRepositoryProvider<?>> repositoryProviders) {
+ Preconditions.checkNotNull(repositoryProviders);
+ this.repositoryProviders = repositoryProviders;
+ }
+
+ public void resetRepositories() {
+ repositories = null;
+ }
+
+ public Set<ResultRepository> getResultRepositories() {
+ if (repositories == null) {
+ Set<String> ids = Sets.newHashSet();
+ repositories = Sets.newHashSet();
+ for (ResultRepositoryProvider<?> repositoryProvider : repositoryProviders) {
+
+ Set<ResultRepository> repos = loadFromRepositoryProvider(repositoryProvider, ids);
+ repositories.addAll(repos);
+ }
+ if (log.isInfoEnabled()) {
+ log.info("Found " + repositories.size() + " result repository(ies).");
+ }
+ }
+ return repositories;
+ }
+
+ protected Set<ResultRepository> loadFromRepositoryProvider(ResultRepositoryProvider<?> repositoryProvider,
+ Set<String> ids) {
+
+ Set<? extends ResultRepository> resultRepositories = repositoryProvider.loadRepositories();
+
+ Set<ResultRepository> result = Sets.newHashSet();
+
+ // check all repository use a unique id
+ for (ResultRepository resultRepository : resultRepositories) {
+ String id = resultRepository.getId();
+ if (log.isDebugEnabled()) {
+ log.debug("Try to register result Repository: " + id);
+ }
+ if (!ids.add(id)) {
+
+ // there is already a repository with this id
+ throw new ResultRepositoryInitializationException(repositoryProvider, "Duplicate result repository with id: " + id, null);
+ }
+ result.add(resultRepository);
+ }
+ return result;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,7 +23,6 @@
*/
import java.io.Serializable;
-import java.util.Locale;
/**
* Request to obtain results.
@@ -35,9 +34,11 @@
*/
public interface CoserRequest extends Serializable {
- Locale getLocale();
-
- void setLocale(Locale locale);
-
+ /**
+ * Is the request is filled to be consumed?
+ *
+ * @return {@code true} if all mandatory fields of the request
+ * are filled, {@code false} otherwise
+ */
boolean isFilled();
}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestBuilder.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestBuilder.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestBuilder.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,290 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%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.Maps;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.request.CoserRequestExtractTypeListAware;
+import fr.ifremer.coser.result.request.CoserRequestFacadeAware;
+import fr.ifremer.coser.result.request.CoserRequestIndicatorAware;
+import fr.ifremer.coser.result.request.CoserRequestRepositoryResultTypeAware;
+import fr.ifremer.coser.result.request.CoserRequestRepositoryTypeAware;
+import fr.ifremer.coser.result.request.CoserRequestSpeciesAware;
+import fr.ifremer.coser.result.request.CoserRequestZoneAware;
+import fr.ifremer.coser.result.request.CoserRequestZoneListAware;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.util.DataType;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * To build requests.
+ * <p/>
+ * TO build a new request, instanciate a new build, add some parameters and then use the {@link #toRequest()} method.
+ * <p/>
+ * Example:
+ * <pre>
+ * MapRequest r = CoserRequestBuilder.
+ * newBuilder(locale,MapRequest.class).
+ * addFacade(facade).
+ * addZone(zone).
+ * toRequest();
+ * </pre>
+ * Created on 3/7/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserRequestBuilder<R extends CoserRequest> {
+
+ protected static final String PARAMETER_RESULT_TYPE = "resultType";
+
+ protected static final String PARAMETER_REPOSITORY_TYPE = "resultRepositoryType";
+
+ protected static final String PARAMETER_INDICATOR = "indicator";
+
+ protected static final String PARAMETER_ZONE_LIST = "zoneList";
+
+ protected static final String PARAMETER_SPECIES = "species";
+
+ protected static final String PARAMETER_ZONE = "zone";
+
+ protected static final String PARAMETER_FACADE = "facade";
+
+ protected static final String PARAMETER_SPECIES_LIST = "speciesList";
+
+ protected static final String PARAMETER_POPULATION_INDICATOR_LIST = "populationIndicatorList";
+
+ protected static final String PARAMETER_COMMUNITY_INDICATOR_LIST = "communityIndicatorList";
+
+ protected static final String PARAMETER_EXTRACT_TYPE_LIST = "extractTypeList";
+
+ /**
+ * Locale to inject in request.
+ */
+ protected final Locale locale;
+
+ /**
+ * Type of request to build.
+ */
+ protected final Class<R> requestType;
+
+ /**
+ * Holder of parameters to inject in request.
+ */
+ protected final Map<String, Object> parameters;
+
+ public static <R extends CoserRequest> CoserRequestBuilder<R> newBuilder(Locale locale,
+ Class<R> requestType) {
+ return new CoserRequestBuilder<R>(locale, requestType);
+ }
+
+ protected CoserRequestBuilder(Locale locale, Class<R> requestType) {
+ Preconditions.checkNotNull(locale);
+ Preconditions.checkNotNull(requestType);
+ this.locale = locale;
+ this.requestType = requestType;
+ this.parameters = Maps.newTreeMap();
+ }
+
+ public CoserRequestBuilder<R> addFacade(String facade) {
+ parameters.put(PARAMETER_FACADE, facade);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addZone(String zone) {
+ parameters.put(PARAMETER_ZONE, zone);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addSpecies(String species) {
+ parameters.put(PARAMETER_SPECIES, species);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addIndicator(String indicator) {
+ parameters.put(PARAMETER_INDICATOR, indicator);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addExtractTypeList(List<DataType> extractTypeList) {
+ parameters.put(PARAMETER_EXTRACT_TYPE_LIST, extractTypeList);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addZoneList(List<String> zoneList) {
+ parameters.put(PARAMETER_ZONE_LIST, zoneList);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addSpeciesList(List<String> speciesList) {
+ parameters.put(PARAMETER_SPECIES_LIST, speciesList);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addPopulationIndicatorList(List<String> populationIndicatorList) {
+ parameters.put(PARAMETER_POPULATION_INDICATOR_LIST, populationIndicatorList);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addCommunityIndicatorList(List<String> communityIndicatorList) {
+ parameters.put(PARAMETER_COMMUNITY_INDICATOR_LIST, communityIndicatorList);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addRepositoryType(String repositoryType) {
+ parameters.put(PARAMETER_REPOSITORY_TYPE, repositoryType);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addResultType(ResultType resultType) {
+ parameters.put(PARAMETER_RESULT_TYPE, resultType);
+ return this;
+ }
+
+ public R toRequest() {
+ try {
+ R request = requestType.newInstance();
+ flushCoserRequestFacadeAware(request);
+ flushCoserRequestZoneAware(request);
+ flushCoserRequestZoneListAware(request);
+ flushCoserRequestSpeciesAware(request);
+ flushCoserRequestIndicatorAware(request);
+ flushCoserRequestRepositoryTypeAware(request);
+ flushCoserRequestRepositoryResultTypeAware(request);
+ flushCoserRequestExtractTypeListAware(request);
+ flushExtractRawDataAndResultsRequest(request);
+ return request;
+ } catch (InstantiationException e) {
+ throw new CoserTechnicalException(e);
+ } catch (IllegalAccessException e) {
+ throw new CoserTechnicalException(e);
+ }
+ }
+
+ protected void flushExtractRawDataAndResultsRequest(R request) {
+ if (request instanceof ExtractRawDataAndResultsRequest) {
+ ExtractRawDataAndResultsRequest r = (ExtractRawDataAndResultsRequest) request;
+
+ List<String> populationIndicatorList = getListParam(PARAMETER_POPULATION_INDICATOR_LIST);
+ if (CollectionUtils.isNotEmpty(populationIndicatorList)) {
+ r.setPopulationIndicatorList(populationIndicatorList);
+ }
+ List<String> communityIndicatorList = getListParam(PARAMETER_COMMUNITY_INDICATOR_LIST);
+ if (CollectionUtils.isNotEmpty(communityIndicatorList)) {
+ r.setCommunityIndicatorList(communityIndicatorList);
+ }
+ List<String> speciesList = getListParam(PARAMETER_SPECIES_LIST);
+ if (CollectionUtils.isNotEmpty(speciesList)) {
+ r.setSpeciesList(speciesList);
+ }
+ }
+ }
+
+ protected void flushCoserRequestFacadeAware(R request) {
+ if (request instanceof CoserRequestFacadeAware) {
+ String facade = getParam(PARAMETER_FACADE);
+ if (facade != null) {
+ ((CoserRequestFacadeAware) request).setFacade(facade);
+ }
+ }
+ }
+
+ protected void flushCoserRequestZoneAware(R request) {
+ if (request instanceof CoserRequestZoneAware) {
+ String zone = getParam(PARAMETER_ZONE);
+ if (zone != null) {
+ ((CoserRequestZoneAware) request).setZone(zone);
+ }
+ }
+ }
+
+ protected void flushCoserRequestSpeciesAware(R request) {
+ if (request instanceof CoserRequestSpeciesAware) {
+ String species = getParam(PARAMETER_SPECIES);
+ if (species != null) {
+ ((CoserRequestSpeciesAware) request).setSpecies(species);
+ }
+ }
+ }
+
+ protected void flushCoserRequestZoneListAware(R request) {
+ if (request instanceof CoserRequestZoneListAware) {
+ List<String> zoneList = getListParam(PARAMETER_ZONE_LIST);
+ if (CollectionUtils.isNotEmpty(zoneList)) {
+ ((CoserRequestZoneListAware) request).setZoneList(zoneList);
+ }
+ }
+ }
+
+ protected void flushCoserRequestExtractTypeListAware(R request) {
+ if (request instanceof CoserRequestExtractTypeListAware) {
+ List<DataType> zoneList = getListParam(PARAMETER_EXTRACT_TYPE_LIST);
+ if (CollectionUtils.isNotEmpty(zoneList)) {
+ ((CoserRequestExtractTypeListAware) request).setExtractTypeList(zoneList);
+ }
+ }
+ }
+
+ protected void flushCoserRequestIndicatorAware(R request) {
+ if (request instanceof CoserRequestIndicatorAware) {
+ String indicator = getParam(PARAMETER_INDICATOR);
+ if (indicator != null) {
+ ((CoserRequestIndicatorAware) request).setIndicator(indicator);
+ }
+ }
+ }
+
+ protected void flushCoserRequestRepositoryTypeAware(R request) {
+ if (request instanceof CoserRequestRepositoryTypeAware) {
+ String repositoryType = getParam(PARAMETER_REPOSITORY_TYPE);
+ if (repositoryType != null) {
+ ((CoserRequestRepositoryTypeAware) request).setRepositoryType(repositoryType);
+ }
+ }
+ }
+
+ protected void flushCoserRequestRepositoryResultTypeAware(R request) {
+ if (request instanceof CoserRequestRepositoryResultTypeAware) {
+ ResultType resultType = getParam(PARAMETER_RESULT_TYPE);
+ if (resultType != null) {
+ ((CoserRequestRepositoryResultTypeAware) request).setResultType(resultType);
+ }
+ }
+ }
+
+ protected <O> O getParam(String parameterName) {
+ Object o = parameters.get(parameterName);
+ return (O) o;
+ }
+
+ protected <O> List<O> getListParam(String parameterName) {
+ Object o = parameters.get(parameterName);
+ return (List<O>) o;
+ }
+
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestContext.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,61 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%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 fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.util.Charts;
+import fr.ifremer.coser.result.util.Extracts;
+import fr.ifremer.coser.result.util.Reports;
+
+import java.io.File;
+import java.util.Locale;
+
+/**
+ * Useful object used by commands.
+ * <p/>
+ * Created on 3/14/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequestContext {
+
+ Locale getLocale();
+
+ IndicatorMap getIndicatorMap();
+
+ ZoneMap getZoneMap();
+
+ Reports getReports();
+
+ Charts getCharts();
+
+ Extracts getExtracts();
+
+ CoserBusinessConfig getConfig();
+
+ File getTemporaryDirectory();
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,201 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%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.CoserApplicationContext;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.FileResult;
+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.Set;
+
+/**
+ * To execute request all over coser result repositories.
+ * <p/>
+ * This new API will let us to define any result format to be queried.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserRequestExecutor {
+
+ /**
+ * To get repositories.
+ */
+ protected final CoserMainRepositoryProvider repositoryProvider;
+
+ /**
+ * To create commands.
+ */
+ protected final CoserCommandFactory commandFactory;
+
+ public CoserRequestExecutor(CoserApplicationContext applicationContext) {
+ this.commandFactory = applicationContext.getCommandFactory();
+ this.repositoryProvider = applicationContext.getRepositoryProvider();
+ }
+
+ /**
+ * 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 executeUnique(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 repositoryResults = executeAll(context, request);
+
+ File file = context.getExtracts().assemblyExtractResult(context,
+ extractDirectory,
+ request.getZoneList(),
+ repositoryResults);
+ FileResult result = new FileResult("ALL", file);
+ return result;
+ }
+
+ /**
+ * Execute the given {@code request} to botain a single result.
+ * <p/>
+ * A unique result repository must match this request, otherwise a {@link DuplicatedResultException} will be thrown.
+ * <p/>
+ * If no result repository matches the request a {@link NoResultRepositoryFoundException} will be thrown
+ *
+ * @param context request context
+ * @param request request to execute
+ * @return the unique result
+ */
+ public CoserResult executeUnique(CoserRequestContext context, CoserRequest request) {
+
+ Preconditions.checkNotNull(request);
+ Preconditions.checkArgument(request.isFilled());
+
+ List<ResultRepository> repositories = getMatchingRepositories(context, request);
+ if (CollectionUtils.isEmpty(repositories)) {
+ throw new NoResultRepositoryFoundException("No result repository matching request", request);
+ }
+
+ if (repositories.size() > 1) {
+ throw new DuplicatedResultException(
+ repositories.toArray(new ResultRepository[repositories.size()]));
+ }
+
+ ResultRepository repository = repositories.get(0);
+
+ CoserResult result = execute(context, repository, request);
+ return result;
+ }
+
+ /**
+ * Execute the given {@code request} on any matching result repository.
+ * <p/>
+ * If no result repository matches the request a {@link NoResultRepositoryFoundException} will be thrown.
+ *
+ * @param context request context
+ * @param request request to execute
+ * @return the list of result (one by each result repository).
+ */
+ public List<CoserResult> executeAll(CoserRequestContext context, CoserRequest request) {
+
+ Preconditions.checkNotNull(request);
+ Preconditions.checkArgument(request.isFilled());
+
+ List<CoserResult> result = Lists.newArrayList();
+
+ List<ResultRepository> repositories = getMatchingRepositories(context, request);
+ if (CollectionUtils.isEmpty(repositories)) {
+ throw new NoResultRepositoryFoundException("No result repository matching request", request);
+ }
+
+ for (ResultRepository repository : repositories) {
+
+ CoserResult repositoryResult = execute(context, repository, request);
+
+ result.add(repositoryResult);
+ }
+ return result;
+ }
+
+ protected List<ResultRepository> getMatchingRepositories(CoserRequestContext context, CoserRequest request) {
+
+ List<ResultRepository> result = Lists.newArrayList();
+
+ Set<ResultRepository> repositories = repositoryProvider.getResultRepositories();
+ for (ResultRepository repository : repositories) {
+
+ if (accept(context, repository, request)) {
+ result.add(repository);
+ }
+ }
+ return result;
+ }
+
+ protected <Request extends CoserRequest, Repository extends ResultRepository> boolean
+ accept(CoserRequestContext context, Repository repository, Request request) {
+
+ CoserCommand<Repository, Request> command = newCommand(context, repository, request);
+
+ boolean result = command.accept(request);
+ return result;
+ }
+
+ protected <Request extends CoserRequest, Repository extends ResultRepository> CoserResult
+ execute(CoserRequestContext context, Repository repository, Request request) {
+
+ CoserCommand<Repository, Request> command = newCommand(context, repository, request);
+
+ CoserResult result = command.execute(request);
+ if (result == null) {
+ throw new NoResultFoundException(repository.getId(), request);
+ }
+ return result;
+ }
+
+ protected <Request extends CoserRequest, Repository extends ResultRepository> CoserCommand<Repository, Request>
+ newCommand(CoserRequestContext context, Repository repository, Request request) {
+
+ CoserCommand<Repository, Request> command =
+ commandFactory.newCommand(context, repository, request);
+ return command;
+ }
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,162 +0,0 @@
-package fr.ifremer.coser.result;
-
-/*
- * #%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 com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserServiceContext;
-import fr.ifremer.coser.result.repository.ResultRepository;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
-import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
-import fr.ifremer.coser.result.repository.ResultRepositoryType;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * To execute command all over coser result repositories.
- * <p/>
- * This new API will let us to define any result format to be queried.
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class CoserResultEngine {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(CoserResultEngine.class);
-
- protected Set<ResultRepositoryCommandEngine> repositories;
-
- protected final CoserServiceContext serviceContext;
-
- public CoserResultEngine(CoserServiceContext serviceContext) {
- Preconditions.checkNotNull(serviceContext);
- this.serviceContext = serviceContext;
- }
-
- public Map<String, ResultRepositoryType> getRepositoryTypes() {
- Map<String, ResultRepositoryType> result = Maps.newHashMap();
- for (ResultRepositoryType resultRepositoryType : serviceContext.getResultRepositoryTypes()) {
- result.put(resultRepositoryType.getId(), resultRepositoryType);
- }
- return result;
- }
-
- public void resetRepositories() {
- this.repositories = null;
- }
-
- public CoserResult getUniqueResult(CoserRequest request) throws DuplicatedResultException {
-
- Preconditions.checkArgument(request.isFilled());
-
- ResultRepositoryCommandEngine repository = getMatchingRepository(request);
-
- if (repository == null) {
- throw new NoResultRepositoryFoundException("No result repository matching request", request);
- }
- CoserResult result = repository.executeRequest(request);
- if (result == null) {
- throw new NoResultFoundException(repository.getResultRepository().getId(), request);
- }
- return result;
- }
-
- public List<CoserResult> getMultipleResult(CoserRequest request) throws DuplicatedResultException {
-
- Preconditions.checkArgument(request.isFilled());
-
- List<CoserResult> result = Lists.newArrayList();
- for (ResultRepositoryCommandEngine repository : getRepositories()) {
- if (repository.acceptRequest(request)) {
-
- CoserResult repositoryResult = repository.executeRequest(request);
- result.add(repositoryResult);
- }
- }
- return result;
- }
-
- protected ResultRepositoryCommandEngine getMatchingRepository(CoserRequest request) throws DuplicatedResultException {
-
- List<ResultRepositoryCommandEngine> repositoryList = Lists.newArrayList();
-
- for (ResultRepositoryCommandEngine resultRepository : getRepositories()) {
-
- if (resultRepository.acceptRequest(request)) {
- repositoryList.add(resultRepository);
- }
- }
-
- ResultRepositoryCommandEngine repository;
- switch (repositoryList.size()) {
- case 0:
- repository = null;
- break;
- case 1:
- repository = repositoryList.get(0);
- break;
- default:
- throw new DuplicatedResultException(
- repositoryList.toArray(new ResultRepository[repositoryList.size()]));
- }
- return repository;
- }
-
- protected Set<ResultRepositoryCommandEngine> getRepositories() {
- if (repositories == null) {
- Set<String> ids = Sets.newHashSet();
- repositories = Sets.newHashSet();
- for (ResultRepositoryProvider repositoryProvider : serviceContext.getResultRepositoryProviders()) {
- Set<ResultRepository> resultRepositories = repositoryProvider.loadRepositories(serviceContext);
-
- // check all repository use a unique id
- for (ResultRepository resultRepository : resultRepositories) {
- String id = resultRepository.getId();
- if (log.isDebugEnabled()) {
- log.debug("Try to register result Repository: " + id);
- }
- if (!ids.add(id)) {
-
- // there is already a repository with this id
- throw new ResultRepositoryInitializationException(repositoryProvider, "Duplicate result repository with id: " + id, null);
- }
- ResultRepositoryCommandEngine repositoryCommandEngine = repositoryProvider.newEngine(resultRepository);
- repositories.add(repositoryCommandEngine);
- }
- }
- if (log.isInfoEnabled()) {
- log.info("Found " + repositories.size() + " result repository(ies).");
- }
- }
- return repositories;
- }
-}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,104 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%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 fr.ifremer.coser.CoserApplicationContext;
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.util.Charts;
+import fr.ifremer.coser.result.util.Extracts;
+import fr.ifremer.coser.result.util.Reports;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Locale;
+
+/**
+ * Created on 3/14/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class DefaultCoserRequestContext implements CoserRequestContext {
+
+ protected final CoserApplicationContext applicationContext;
+
+ protected final Locale locale;
+
+ protected File temporaryDirectory;
+
+ public DefaultCoserRequestContext(CoserApplicationContext applicationContext, Locale locale) {
+ this.applicationContext = applicationContext;
+ this.locale = locale;
+ }
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public IndicatorMap getIndicatorMap() {
+ return applicationContext.getIndicatorMap();
+ }
+
+ @Override
+ public ZoneMap getZoneMap() {
+ return applicationContext.getZoneMap();
+ }
+
+ @Override
+ public Reports getReports() {
+ return applicationContext.getReports();
+ }
+
+ @Override
+ public Charts getCharts() {
+ return applicationContext.getCharts();
+ }
+
+ @Override
+ public Extracts getExtracts() {
+ return applicationContext.getExtracts();
+ }
+
+ @Override
+ public CoserBusinessConfig getConfig() {
+ return applicationContext.getConfig();
+ }
+
+ @Override
+ public File getTemporaryDirectory() {
+ if (temporaryDirectory == null) {
+ try {
+ temporaryDirectory = File.createTempFile("coser-", "");
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not create temporary directory.", e);
+ }
+ }
+ return temporaryDirectory;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,74 +0,0 @@
-package fr.ifremer.coser.result;
-
-/*
- * #%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 java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-
-/**
- * A result with only one file.
- * <p/>
- * A useful method is offered to obtain directly a {@link InputStream} from the result file ({@link #getInputStream()}).
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class FileResult implements CoserResult {
-
- private static final long serialVersionUID = 1L;
-
- protected final String source;
-
- protected final File file;
-
- public FileResult(String source, File file) {
- this.file = file;
- this.source = source;
- }
-
- @Override
- public String getSource() {
- return source;
- }
-
- @Override
- public File getResult() {
- return file;
- }
-
- public InputStream getInputStream() {
- try {
- InputStream inputStream = new FileInputStream(file);
- return inputStream;
- } catch (FileNotFoundException e) {
- // should never happen ?
- throw new CoserTechnicalException("Could not find file: " + file, e);
- }
- }
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,56 +0,0 @@
-package fr.ifremer.coser.result;
-
-/*
- * #%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 java.util.Map;
-
-/**
- * Created on 3/12/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class MapResult implements CoserResult {
-
- private static final long serialVersionUID = 1L;
-
- protected final String source;
-
- protected final Map<String, String> map;
-
- public MapResult(String source, Map<String, String> map) {
- this.map = map;
- this.source = source;
- }
-
- @Override
- public String getSource() {
- return source;
- }
-
- @Override
- public Map<String, String> getResult() {
- return map;
- }
-
-}
\ No newline at end of file
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,465 +0,0 @@
-package fr.ifremer.coser.result;
-
-/*
- * #%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.itextpdf.text.DocumentException;
-import fr.ifremer.coser.CoserConstants;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.CoserUtils;
-import fr.ifremer.coser.bean.IndicatorMap;
-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.bean.ZoneMap;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import freemarker.cache.ClassTemplateLoader;
-import freemarker.ext.beans.BeansWrapper;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
-import org.apache.commons.collections4.keyvalue.MultiKey;
-import org.apache.commons.collections4.map.MultiKeyMap;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.i18n.I18n;
-import org.w3c.dom.Document;
-import org.xhtmlrenderer.pdf.ITextRenderer;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import static org.nuiton.i18n.I18n.l;
-
-/**
- * For reports generation.
- * <p/>
- * Created on 3/7/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class Reports {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(Reports.class);
-
- /** Freemarker. */
- protected Configuration freemarkerConfiguration;
-
- public Reports() {
-
- freemarkerConfiguration = new Configuration();
-
- // needed to overwrite "Defaults to default system encoding."
- // fix encoding issue on some systems
- freemarkerConfiguration.setEncoding(Locale.getDefault(), "UTF-8");
-
- // specific template loader to get template from jars (classpath)
- ClassTemplateLoader templateLoader = new ClassTemplateLoader(Reports.class, "/ftl");
- freemarkerConfiguration.setTemplateLoader(templateLoader);
-
- // pour les maps dans les template (entre autre)
- freemarkerConfiguration.setObjectWrapper(new BeansWrapper());
- }
-
- public String getDechargeFilename(Locale locale) {
- Preconditions.checkNotNull(locale);
- String filename = I18n.l(locale, "coser.business.dataDisclaimer.filename");
-// if (locale != null && "fr".equals(locale.getLanguage())) {
-// filename = "DechargeDonnees.pdf";
-// } else if (locale != null && "es".equals(locale.getLanguage())) {
-// filename = "DatosDeExencionDeResponsabilidad.pdf";
-// } else {
-// filename = "DataDisclaimer.pdf";
-// }
- return filename;
- }
-
- public String getYearChartTitle(Locale locale) {
- Preconditions.checkNotNull(locale);
- String yearAxis = I18n.l(locale, "coser.business.year");
-// String yearAxis = "Year";
-// if ("fr".equals(locale.getLanguage())) {
-// yearAxis = "Ann\u00E9e";
-// } else if ("es".equals(locale.getLanguage())) {
-// yearAxis = "A\u00F1o";
-// }
- return yearAxis;
- }
-
- /**
- * Genere le fichier PDF d'information sur les espèces incluses dans les
- * calculs des indicateurs de communautés, à jointe à chaque téléchargement.
- *
- * @param path path to result
- * @param resultDirectory result directory
- * @param locale locale
- * @param indicatorLocalizedMap localized indicator map
- * @return generated pdf file
- */
- public File generateMetaFilePDF(RSufiResultPath path,
- File resultDirectory,
- Locale locale,
- IndicatorMap indicatorLocalizedMap) {
-
- Project project = path.getProject();
- Selection selection = path.getSelection();
- RSufiResult rsufiResult = path.getRsufiResult();
-
- File result = null;
-
- // chargement du reftax et des code types especes pour connaitre
- // le type des especes de poissons
- // parcourt du fichier des types de données
- Map<String, Integer> refTaxSpeciesNumSys = new HashMap<String, Integer>();
- Map<String, String> refTaxSpeciesName = new HashMap<String, String>();
- Iterator<String[]> itReftax = project.getRefTaxSpecies().iterator(true);
- while (itReftax.hasNext()) {
- String[] tuple = itReftax.next();
- // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
- String speciesCode = tuple[3];
- Integer iNumSys = Integer.valueOf(tuple[1]);
- refTaxSpeciesNumSys.put(speciesCode, iNumSys);
-
- // fix html entities bug
- String speciesSciName = StringEscapeUtils.escapeXml(tuple[4]);
- String speciesAuthor = StringEscapeUtils.escapeXml(tuple[5]);
-
- // TODO little hack for italic species
- refTaxSpeciesName.put(speciesCode, "<span style='font-style:italic'>" + speciesSciName + "</span> " + speciesAuthor);
- }
-
- // code type / especes
- Map<String, Integer[]> specyTypes = new HashMap<String, Integer[]>();
- Iterator<String[]> itTypeSpecies = project.getTypeEspeces().iterator(true);
- while (itTypeSpecies.hasNext()) {
- // "Types";"Commentaire";"NumSys min";"NumSys max","Code"
- String[] tuple = itTypeSpecies.next();
- String specyTypeCode = tuple[4];
-
- Integer iMinNumSys = Integer.valueOf(tuple[2]);
- Integer iMaxNumSys = Integer.valueOf(tuple[3]);
- specyTypes.put(specyTypeCode, new Integer[]{iMinNumSys, iMaxNumSys});
- }
-
- // le fichier estpopind
- File estComIndFile = new File(resultDirectory, rsufiResult.getEstComIndName());
-
- // donnees intermediare (map liste id > liste des indicateurs)
- Map<String, SortedSet<String>> indicatorMap = new HashMap<String, SortedSet<String>>();
-
- // le resutat sera une map complexe
- // map liste id > liste des especes (nom complet)
- Map<String, SortedSet<String>> speciesMap = new HashMap<String, SortedSet<String>>();
-
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- DataStorage dataStorage = DataStorages.load(estComIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
- Iterator<String[]> estComIndIterator = dataStorage.iterator(true);
- while (estComIndIterator.hasNext()) {
- String[] tuple = estComIndIterator.next();
-
- String indicatorCode = tuple[1];
- String listIdCode = tuple[2]; // c1, p2, T3 ...
-
- String listNumber = listIdCode.substring(1); // 1, 2, 3
-
- // get indicator list
- SortedSet<String> indicatorList = indicatorMap.get(listNumber);
- if (indicatorList == null) {
- indicatorList = new TreeSet<String>();
- indicatorMap.put(listNumber, indicatorList);
- }
-
- // get indicator full name
- String indicatorName = indicatorLocalizedMap.getIndicatorValue(indicatorCode, locale.getLanguage());
- // peut arriver pour les indicateurs inconnu par coser
- if (indicatorName != null) {
- indicatorList.add(indicatorName);
- }
- }
-
- // seconde pass, remplit la map speciesMap avec les listes configurées
- // dans la selection
- for (String listNumber : indicatorMap.keySet()) {
- List<String> selectionSpeciesList = null;
- if ("1".equals(listNumber)) {
- selectionSpeciesList = selection.getSelectedSpecies();
- } else if ("2".equals(listNumber)) {
- selectionSpeciesList = selection.getSelectedSpeciesOccDens();
- } else if ("3".equals(listNumber)) {
- selectionSpeciesList = selection.getSelectedSpeciesSizeAllYear();
- } else if ("4".equals(listNumber)) {
- selectionSpeciesList = selection.getSelectedSpeciesMaturity();
- }
-
- if (selectionSpeciesList != null) {
- SortedSet<String> speciesList = new TreeSet<String>();
-
- for (String speciesCode : selectionSpeciesList) {
- // get species full name
- String speciesName = refTaxSpeciesName.get(speciesCode);
-
- // recupere le code type de l'espece, "m", "c", "p" ...
- Integer speciesNumSys = refTaxSpeciesNumSys.get(speciesCode);
- for (Map.Entry<String, Integer[]> speciesTypeEntry : specyTypes.entrySet()) {
- String speciesTypeCode = speciesTypeEntry.getKey();
- Integer[] bound = speciesTypeEntry.getValue();
-
- if (speciesNumSys >= bound[0] && speciesNumSys <= bound[1]) {
- speciesName = "(" + speciesTypeCode + ") " + speciesName;
- break;
- }
- }
- // end code type espece
-
- speciesList.add(speciesName);
- }
- speciesMap.put(listNumber, speciesList);
- } else {
- if (log.isWarnEnabled()) {
- log.warn("Can't get species list for list id " + listNumber);
- }
- }
- }
-
- OutputStream os = null;
- try {
- // render freemarker template
- Template mapTemplate = freemarkerConfiguration.getTemplate("metainfo.ftl", locale);
-
- Map<String, Object> root = new HashMap<String, Object>();
- root.put("indicatorsMap", indicatorMap);
- root.put("speciesMap", speciesMap);
-
- Writer out = new StringWriter();
- mapTemplate.process(root, out);
- out.flush();
-
- // get content as w3c document
- Document document = CoserUtils.parseDocument(out.toString());
-
- // render template output as pdf
- result = File.createTempFile("coser-metainfo-", ".pdf");
- result.deleteOnExit();
- os = new FileOutputStream(result);
-
- ITextRenderer renderer = new ITextRenderer();
- renderer.setDocument(document, null);
- renderer.layout();
- renderer.createPDF(os);
-
- os.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't generate meta info file", ex);
- } catch (TemplateException ex) {
- throw new CoserTechnicalException("Can't generate meta info file", ex);
- } catch (DocumentException ex) {
- throw new CoserTechnicalException("Can't generate meta info file", ex);
- } finally {
- IOUtils.closeQuietly(os);
- }
-
- return result;
- }
-
- /**
- * Genere le PDF dynamique de decharge à partir du template freemarker.
- *
- * @param disclamerPdf pdf file to generate
- * @param locale generated pdf locale
- */
- public void generateDechargePDF(File disclamerPdf, Locale locale, Date updateDate, String surveyName) {
-
- OutputStream os = null;
-
- try {
- // get some info to put into pdf
-// Date updateDate = getLastDataUpdateDate();
-
-// // il se peut que pour l'extraction un fichier de décharge ne soit
-// // pas généré pour une campagne en particulier
-// // on passe un nom vide a freemarker
-// String surveyName = "";
-// if (resultDirectory != null && rSufiResult != null) {
-// surveyName = projectService.getProjectSurveyName(resultDirectory, rSufiResult);
-// }
-
- // render freemarker template
- Template mapTemplate = freemarkerConfiguration.getTemplate("decharge.ftl", locale);
-
- Map<String, Object> root = new HashMap<String, Object>();
- root.put("updateDate", updateDate);
- root.put("surveyName", surveyName);
-
- Writer out = new StringWriter();
- mapTemplate.process(root, out);
- out.flush();
-
- // get content as w3c document
- Document document = CoserUtils.parseDocument(out.toString());
-
- // render template output as pdf
- os = new FileOutputStream(disclamerPdf);
-
- ITextRenderer renderer = new ITextRenderer();
- renderer.setDocument(document, null);
- renderer.layout();
- renderer.createPDF(os);
-
- os.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't generate decharge file", ex);
- } catch (TemplateException ex) {
- throw new CoserTechnicalException("Can't generate decharge file", ex);
- } catch (DocumentException ex) {
- throw new CoserTechnicalException("Can't generate decharge file", ex);
- } finally {
- IOUtils.closeQuietly(os);
- }
- }
-
- /**
- * Generate pdf file filled with maps and charts.
- *
- * @param directory directory to generate pdf to
- * @param zones zones ids
- * @param pdfMaps pdf maps (can be {@code null})
- * @param pdfCharts pdf charts (can be {@code null})
- * @param zoneMap zoneMap (to get zone fullnames)
- * @param locale locale to use for translations
- */
- public void generateExtractPDF(File directory,
- List<String> zones,
- MultiKeyMap pdfMaps,
- MultiKeyMap pdfCharts,
- ZoneMap zoneMap,
- Locale locale) {
-
- for (String zone : zones) {
- Collection<File> toDelete = new ArrayList<File>();
- OutputStream os = null;
-
- try {
- StringBuilder htmlContent = new StringBuilder();
- htmlContent.append("<html><head>");
- htmlContent.append("<title>").append(l(locale, "coser.business.extract.extracttitle")).append("</title>");
- htmlContent.append("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />");
- htmlContent.append("</head><body>");
-
- if (pdfMaps != null) {
- for (Map.Entry<MultiKey, File> mapEntry : (Set<Map.Entry<MultiKey, File>>) pdfMaps.entrySet()) {
- String zoneId = (String) mapEntry.getKey().getKey(0);
- if (zoneId.equals(zone)) {
- String speciesName = (String) mapEntry.getKey().getKey(1);
- File file = mapEntry.getValue();
-
- String zoneName = zoneMap.getZoneFullName(zoneId);
- htmlContent.append("<div style='page-break-after: always'>");
- htmlContent.append("<p>").append(zoneName).append(" - ").append(speciesName).append("</p>");
- htmlContent.append("<img src='file://").append(file.getAbsolutePath()).append("' />");
- htmlContent.append("</div>");
- }
- }
- }
-
- if (pdfCharts != null) {
- for (Map.Entry<MultiKey, Object[]> chartFileAndData : (Set<Map.Entry<MultiKey, Object[]>>) pdfCharts.entrySet()) {
- String zoneId = (String) chartFileAndData.getKey().getKey(0);
- if (zoneId.equals(zone)) {
- File chartFile = (File) chartFileAndData.getValue()[0];
- String content = (String) chartFileAndData.getValue()[1];
-
- htmlContent.append("<div style='page-break-after: always'>");
- htmlContent.append("<img src='file://");
- htmlContent.append(chartFile.getAbsolutePath());
- htmlContent.append("' />");
- htmlContent.append("<br />");
- htmlContent.append(l(locale, "coser.business.extract.extractdata")).append(" :");
- htmlContent.append("<pre>").append(content).append("</pre>");
- htmlContent.append("</div>");
-
- // les graphiques ont été générés, a supprimer donc
- // a ne surtout pas faire avec les cartes !!!
- toDelete.add(chartFile);
- }
- }
- }
-
- htmlContent.append("</body></html>");
-
- // get content as w3c document
- Document document = CoserUtils.parseDocument(htmlContent.toString());
-
- // render template output as pdf
- // remove accents and strange characters from zone display name
- String zoneDisplay = zoneMap.getZoneFullName(zone);
- zoneDisplay = StringUtils.stripAccents(zoneDisplay);
- zoneDisplay = zoneDisplay.replaceAll("[^\\w- ]", "_");
- File pdfFile = new File(directory, zoneDisplay + ".pdf");
- os = new FileOutputStream(pdfFile);
-
- ITextRenderer renderer = new ITextRenderer();
- renderer.setDocument(document, null);
- renderer.layout();
- renderer.createPDF(os);
-
- os.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't generate log pdf", ex);
- } catch (DocumentException ex) {
- throw new CoserTechnicalException("Can't generate log pdf", ex);
- } finally {
- IOUtils.closeQuietly(os);
-
-
- // delete file collection
- for (File file : toDelete) {
-// file.delete();
- FileUtils.deleteQuietly(file);
- }
- }
- }
- }
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,50 +0,0 @@
-package fr.ifremer.coser.result;
-
-/*
- * #%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%
- */
-
-/**
- * Created on 3/12/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class VoidResult implements CoserResult {
-
- private static final long serialVersionUID = 1L;
-
- protected final String source;
-
- public VoidResult(String source) {
- this.source = source;
- }
-
- @Override
- public String getSource() {
- return source;
- }
-
- @Override
- public Void getResult() {
- return null;
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,6 +22,8 @@
* #L%
*/
+import java.io.File;
+
/**
* General contract of a repository of results in CoserWeb.
* <p/>
@@ -41,4 +43,23 @@
* @return the type of result repository
*/
ResultRepositoryType getResultRepositoryType();
+
+ /**
+ * @return base directory of the result repository
+ */
+ File getBasedir();
+
+ String getProjectName();
+
+ String getZone();
+
+ String getSurveyName();
+
+ boolean isMapsResult();
+
+ boolean isIndicatorsResult();
+
+ boolean isDataResult();
+
+ boolean isPubliableResult();
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,50 +0,0 @@
-package fr.ifremer.coser.result.repository;
-
-/*
- * #%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.result.CoserRequest;
-import fr.ifremer.coser.result.CoserResult;
-
-/**
- * To execute a command on a result.
- * <p/>
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public interface ResultRepositoryCommand<Repo extends ResultRepository, Request extends CoserRequest> {
-
- Class<Request> getRequestType();
-
- boolean accept(Repo repository, Request request);
-
- CoserResult execute(Repo repository, Request request);
-
-// Map<String, String> getAvailableZones(Repo repository, Request request);
-//
-// Map<String, String> getAvailableSpecies(Repo repository, Request request);
-//
-// Map<String, String> getAvailableIndicators(Repo repository, Request request);
-
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,56 +0,0 @@
-package fr.ifremer.coser.result.repository;
-
-/*
- * #%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 fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.CoserResult;
-
-/**
- * To execute commands on a result repository.
- * <p/>
- * Created on 3/12/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public interface ResultRepositoryCommandEngine {
-
- ResultRepository getResultRepository();
-
- /**
- * @param request request to test
- * @return {@code true} if this repository has some result for the given
- * request, {@code false} otherwise
- */
- <R extends CoserRequest> boolean acceptRequest(R request);
-
- /**
- * Execute given request.
- * <p/>
- * We assume here that the repository has a result for the given request.
- *
- * @param request request to execute
- * @return the result for the given request
- */
- <R extends CoserRequest> CoserResult executeRequest(R request);
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,26 +22,25 @@
* #L%
*/
-import fr.ifremer.coser.CoserServiceContext;
-import fr.ifremer.coser.result.ResultRepositoryInitializationException;
-
import java.util.Set;
/**
- * Provides some {@link ResultRepository}.
+ * Provides some {@link ResultRepository} for a given type of result repository.
* <p/>
* Created on 3/5/14.
*
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public interface ResultRepositoryProvider<R extends ResultRepository> {
+public interface ResultRepositoryProvider<Repository extends ResultRepository> {
/**
- * @param serviceContext service context
- * @return the set of provided result repositories.
+ * @return the type of result repository.
*/
- Set<R> loadRepositories(CoserServiceContext serviceContext) throws ResultRepositoryInitializationException;
+ ResultRepositoryType getRepositoryType();
- ResultRepositoryCommandEngine newEngine(R repository);
+ /**
+ * @return the set of provided result repositories.
+ */
+ Set<Repository> loadRepositories();
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,17 +22,19 @@
* #L%
*/
+import fr.ifremer.coser.result.CoserCommand;
+import fr.ifremer.coser.result.CoserRequest;
import fr.ifremer.coser.result.ResultType;
import fr.ifremer.coser.result.request.GetAllResultsRequest;
import java.io.Serializable;
+import java.util.Map;
import java.util.Set;
/**
* To define a new type of result repository.
* <p/>
- * This contract does nothing in special, but is just loaded by
- * a service loader to know all possible result repositories type.
+ * <strong>Important Note:</strong> Each repository type must have a unique id ({@link #getId()}).
* <p/>
* Created on 3/11/14.
*
@@ -47,4 +49,6 @@
String getLabelKey();
Set<ResultType> getResultTypes();
+
+ Map<Class<? extends CoserRequest>, Class<? extends CoserCommand>> getCommandTypes();
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,137 @@
+package fr.ifremer.coser.result.repository.echobase;
+
+/*
+ * #%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.Predicate;
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+/**
+ * Created on 3/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class EchoBasePredicates {
+
+ protected EchoBasePredicates() {
+ // avoid instances
+ }
+
+ public static Predicate<String[]> communityIndicatorPredicate(String indicator) {
+ return new CommunityIndicatorPredicate(Lists.newArrayList(indicator));
+ }
+
+ public static Predicate<String[]> communityIndicatorPredicate(List<String> indicator) {
+ return new CommunityIndicatorPredicate(indicator);
+ }
+
+ public static Predicate<String[]> communitySpeciesPredicate(String species) {
+ return new CommunitySpeciesPredicate(Lists.newArrayList(species));
+ }
+
+ public static Predicate<String[]> communitySpeciesPredicate(List<String> species) {
+ return new CommunitySpeciesPredicate(species);
+ }
+
+ public static Predicate<String[]> populationSpeciesPredicate(String species) {
+ return new PopulationSpeciesPredicate(Lists.newArrayList(species));
+ }
+
+ public static Predicate<String[]> populationSpeciesPredicate(List<String> species) {
+ return new PopulationSpeciesPredicate(species);
+ }
+
+ public static Predicate<String[]> populationIndicatorPredicate(String indicator) {
+ return new PopulationIndicatorPredicate(Lists.newArrayList(indicator));
+ }
+
+ public static Predicate<String[]> populationIndicatorPredicate(List<String> indicator) {
+ return new PopulationIndicatorPredicate(indicator);
+ }
+
+ protected static class CommunitySpeciesPredicate implements Predicate<String[]> {
+
+ private final List<String> species;
+
+ CommunitySpeciesPredicate(List<String> species) {
+ this.species = species;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String speciesCode = input[3];
+ boolean result = species.contains(speciesCode);
+ return result;
+ }
+ }
+
+ protected static class CommunityIndicatorPredicate implements Predicate<String[]> {
+
+ private final List<String> indicator;
+
+ CommunityIndicatorPredicate(List<String> indicator) {
+ this.indicator = indicator;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String indicatorCode = input[1];
+ boolean result = indicator.contains(indicatorCode);
+ return result;
+ }
+ }
+
+ protected static class PopulationSpeciesPredicate implements Predicate<String[]> {
+
+ private final List<String> species;
+
+ PopulationSpeciesPredicate(List<String> species) {
+ this.species = species;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String speciesCode = input[3];
+ boolean result = species.contains(speciesCode);
+ return result;
+ }
+ }
+
+ protected static class PopulationIndicatorPredicate implements Predicate<String[]> {
+
+ private final List<String> indicator;
+
+ PopulationIndicatorPredicate(List<String> indicator) {
+ this.indicator = indicator;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String indicatorCode = input[1];
+ boolean result = indicator.contains(indicatorCode);
+ return result;
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.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/echobase/EchoBaseResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,26 +24,29 @@
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.bean.EchoBaseProject;
-import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.SpeciesMap;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.Reports;
+import fr.ifremer.coser.result.ResultType;
import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.request.CoserRequestExtractTypeListAware;
import fr.ifremer.coser.result.request.CoserRequestFacadeAware;
+import fr.ifremer.coser.result.request.CoserRequestRepositoryResultTypeAware;
+import fr.ifremer.coser.result.request.CoserRequestRepositoryTypeAware;
import fr.ifremer.coser.result.request.CoserRequestZoneAware;
+import fr.ifremer.coser.result.request.CoserRequestZoneListAware;
import fr.ifremer.coser.storage.DataStorage;
import fr.ifremer.coser.storage.DataStorages;
+import fr.ifremer.coser.util.DataType;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.File;
import java.io.FilenameFilter;
-import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -63,11 +66,6 @@
protected final EchoBaseProject project;
/**
- * Maps directory.
- */
- protected final File mapsDirectory;
-
- /**
* Transform a map result species file to the species code.
*/
protected final Function<File, String> mapFileToSpeciesCode;
@@ -83,36 +81,27 @@
protected final FilenameFilter mapSpeciesFilenameFilter;
/**
- * Service context.
- */
- protected final CoserServiceContext serviceContext;
-
- /**
* Cache of species definition.
*/
protected SpeciesMap speciesMap;
/**
- * Report helper.
+ * Unique id of the result repository.
*/
- protected final Reports reports;
+ protected final String id;
- public EchoBaseResultRepository(CoserServiceContext serviceContext,
- EchoBaseProject project) {
- Preconditions.checkNotNull(serviceContext);
+ public EchoBaseResultRepository(EchoBaseProject project) {
Preconditions.checkNotNull(project);
- this.serviceContext = serviceContext;
this.project = project;
- this.mapsDirectory = project.getMapsDirectory();
- this.reports = new Reports();
String surveyName = project.getSurveyName();
this.mapFileToSpeciesCode = EchoBaseProject.newMapFileToSpeciesCode(surveyName);
this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName);
this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName);
+ this.id = EchoBaseResultRepositoryType.ID + "::" + project.getBasedir();
if (log.isInfoEnabled()) {
- log.info("New result repository: " + getId());
+ log.info("New result repository: " + id);
}
}
@@ -122,7 +111,7 @@
@Override
public String getId() {
- return EchoBaseResultRepositoryType.ID + "::" + project.getBasedir();
+ return id;
}
@Override
@@ -130,99 +119,109 @@
return EchoBaseResultRepositoryType.INSTANCE;
}
+ @Override
public File getBasedir() {
return project.getBasedir();
}
- public EchoBaseProject getProject() {
- return project;
- }
-
+ @Override
public String getProjectName() {
return project.getName();
}
- public Reports getReports() {
- return reports;
- }
-
+ @Override
public String getSurveyName() {
return project.getSurveyName();
}
+ @Override
public String getZone() {
return project.getZoneName();
}
+ @Override
public boolean isMapsResult() {
return true;
}
+ @Override
public boolean isIndicatorsResult() {
return true;
}
+ @Override
+ public boolean isDataResult() {
+ //FIXME
+ return false;
+ }
+
+ @Override
public boolean isPubliableResult() {
return project.isPubliableResult();
}
+ public EchoBaseProject getProject() {
+ return project;
+ }
+
// --------------------------------------------------------------------- //
// --- Matchers -------------------------------------------------------- //
// --------------------------------------------------------------------- //
public boolean matchFacade(CoserRequestFacadeAware request) {
- return project.getFacadeName().equals(request.getFacade());
+ return getProject().getFacadeName().equals(request.getFacade());
}
public boolean matchZone(CoserRequestZoneAware request) {
- return project.getZoneName().equals(request.getZone());
+ return getZone().equals(request.getZone());
}
- public boolean matchIndicatorSpecies(String[] tuple, String species) {
- String speciesCode = tuple[3];
- boolean result = species.equals(speciesCode);
+ public boolean matchZone(CoserRequestZoneListAware request) {
+ List<String> zoneList = request.getZoneList();
+ boolean result = zoneList.contains(getZone());
return result;
}
- public boolean matchIndicatorIndicator(String[] tuple, String indicator) {
- String indicatorCode = tuple[1];
- boolean result = indicator.equals(indicatorCode);
+ public boolean matchRepositoryType(CoserRequestRepositoryTypeAware request) {
+ boolean result = request.getRepositoryType().equals(EchoBaseResultRepositoryType.ID);
return result;
}
- public boolean matchIndicatorSpeciesAndIndicator(String[] tuple,
- String species,
- String indicator) {
- String speciesCode = tuple[3];
- String indicatorCode = tuple[1];
- boolean result = species.equals(speciesCode) &&
- indicator.equals(indicatorCode);
+ public boolean matchResultType(CoserRequestRepositoryResultTypeAware request) {
+ ResultType resultType = request.getResultType();
+ boolean result = ResultType.MAP_AND_INDICATOR == resultType;
return result;
}
- public boolean matchCommunityIndicatorAndSpeciesList(String[] tuple,
- String indicator,
- String speciesList) {
- String indicatorCode = tuple[1];
- String speciesListCode = tuple[2];
- boolean result = indicator.equals(indicatorCode) &&
- speciesList.equals(speciesListCode);
+ public boolean matchExtractTypeList(CoserRequestExtractTypeListAware request) {
+ boolean result = false;
+ if (isMapsResult()) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
+ } else if (isIndicatorsResult()) {
+ result = request.getExtractTypeList().contains(DataType.POPULATION) ||
+ request.getExtractTypeList().contains(DataType.COMMUNITY);
+ }
+ if (isDataResult()) {
+ result |= request.getExtractTypeList().contains(DataType.SOURCE);
+ }
return result;
}
- public boolean matchIndicatorList(String[] tuple, List<String> indicatorList) {
- String indicatorCode = tuple[1];
- boolean result = indicatorList.contains(indicatorCode);
+ public boolean matchCommunity(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = getCommunityIndicatorStorage();
+ boolean result = DataStorages.match(storage, predicate, true);
+
return result;
}
- public boolean matchIndicatorListAndSpeciesList(String[] tuple,
- List<String> indicatorList,
- List<String> speciesList) {
- String indicatorCode = tuple[1];
- String speciesCode = tuple[3];
- boolean result = indicatorList.contains(indicatorCode) &&
- speciesList.contains(speciesCode);
+ public boolean matchPopulation(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = getPopulationIndicatorStorage();
+ boolean result = DataStorages.match(storage, predicate, true);
+
return result;
}
@@ -232,99 +231,22 @@
public File getMapSpeciesFile(String species) {
String fileName = speciesCodeToMapFile.apply(species);
- File file = fileName == null ? null : new File(mapsDirectory, fileName);
+ File file = fileName == null ? null : new File(project.getMapsDirectory(), fileName);
return file;
}
- // --------------------------------------------------------------------- //
- // --- Get species lists ----------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- public Set<String> getMapSpecies() {
- Set<String> result = Sets.newHashSet();
+ public Map<String, String> getMapSpecies() {
+ Set<String> speciesList = Sets.newHashSet();
File[] files = project.getMapsDirectory().listFiles(mapSpeciesFilenameFilter);
if (files != null) {
List<String> transform = Lists.transform(Lists.newArrayList(files), mapFileToSpeciesCode);
- result.addAll(transform);
+ speciesList.addAll(transform);
}
+ Map<String, String> result = getSpeciesMap().getSpeciesSubMap(speciesList);
return result;
}
- public Set<String> getPopulationIndicatorSpecies() {
- Set<String> result = Sets.newHashSet();
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String speciesCode = tuple[3];
- result.add(speciesCode);
- }
- return result;
- }
-
- public Set<String> getCommunityIndicatorSpecies() {
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String speciesCode = tuple[2];
- result.add(speciesCode);
- }
- return result;
- }
-
- public Set<String> getCommunityIndicatorSpecies(String indicator) {
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorIndicator(tuple, indicator)) {
- String speciesCode = tuple[2];
- result.add(speciesCode);
- }
- }
- return result;
- }
-
// --------------------------------------------------------------------- //
- // --- Get indicator lists --------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- public Set<String> getCommunityIndicators() {
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String indicatorCode = tuple[1];
- result.add(indicatorCode);
- }
- return result;
- }
-
- public Set<String> getPopulationIndicators() {
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String indicatorCode = tuple[1];
- result.add(indicatorCode);
- }
- return result;
- }
-
- protected Set<String> getPopulationIndicators(String species) {
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorSpecies(tuple, species)) {
- String indicatorCode = tuple[1];
- result.add(indicatorCode);
- }
- }
- return result;
- }
-
- // --------------------------------------------------------------------- //
// --- Get definition maps --------------------------------------------- //
// --------------------------------------------------------------------- //
@@ -336,32 +258,22 @@
return speciesMap;
}
- public IndicatorMap getIndicatorsMap() {
- return serviceContext.getIndicatorsMap();
- }
-
- public ZoneMap getZonesMap() {
- return serviceContext.getZonesMap();
- }
-
// --------------------------------------------------------------------- //
- // --- storage util methods -------------------------------------------- //
+ // --- storage methods ------------------------------------------------- //
// --------------------------------------------------------------------- //
- public Iterator<String[]> loadPopulationIndicatorStorage(boolean skipFirstLine) {
+ public DataStorage getPopulationIndicatorStorage() {
File file = project.getPopulationIndicatorsFile();
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
- DataStorage dataStorage = DataStorages.load(file);
- Iterator<String[]> iterator = dataStorage.iterator(skipFirstLine);
- return iterator;
+ DataStorage result = DataStorages.load(file);
+ return result;
}
- public Iterator<String[]> loadCommunityIndicatorStorage(boolean skipFirstLine) {
+ public DataStorage getCommunityIndicatorStorage() {
File file = project.getCommunityIndicatorsFile();
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
- DataStorage dataStorage = DataStorages.load(file);
- Iterator<String[]> iterator = dataStorage.iterator(skipFirstLine);
- return iterator;
+ DataStorage result = DataStorages.load(file);
+ return result;
}
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,135 +0,0 @@
-package fr.ifremer.coser.result.repository.echobase;
-
-/*
- * #%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 com.google.common.collect.Maps;
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
-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;
-import fr.ifremer.coser.result.repository.echobase.command.GetAllResultsCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForExtractRawDataAndResultsCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetMapResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesListForExtractRawDataAndResultsCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForMapResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesListForCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetZonesForCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetZonesForExtractRawDataAndResultsCommand;
-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 java.util.Map;
-
-/**
- * Created on 3/12/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class EchoBaseResultRepositoryCommandEngine implements ResultRepositoryCommandEngine {
-
- protected final EchoBaseResultRepository resultRepository;
-
- protected final Map<String, ResultRepositoryCommand<EchoBaseResultRepository, ?>> commands;
-
- public EchoBaseResultRepositoryCommandEngine(EchoBaseResultRepository resultRepository) {
- this.resultRepository = resultRepository;
- this.commands = Maps.newHashMap();
-
- // get map result
- loadCommand(new GetZonesForMapResultCommand());
- loadCommand(new GetSpeciesForMapResultCommand());
- loadCommand(new GetMapResultCommand());
-
- // get community indicator result
- loadCommand(new GetZonesForCommunityIndicatorResultCommand());
- loadCommand(new GetIndicatorsForCommunityIndicatorResultCommand());
- loadCommand(new GetSpeciesListForCommunityIndicatorResultCommand());
- loadCommand(new GetCommunityIndicatorResultCommand());
-
- // get population indicator result
- loadCommand(new GetZonesForPopulationIndicatorResultCommand());
- loadCommand(new GetSpeciesForPopulationIndicatorResultCommand());
- loadCommand(new GetIndicatorsForPopulationIndicatorResultCommand());
- loadCommand(new GetPopulationIndicatorResultCommand());
-
- // get all results
- loadCommand(new GetAllResultsCommand());
-
- // extract raw data
- loadCommand(new GetZonesForExtractRawDataCommand());
- loadCommand(new ExtractRawDataCommand());
-
- // extract raw data and results
- loadCommand(new GetZonesForExtractRawDataAndResultsCommand());
- loadCommand(new GetSpeciesListForExtractRawDataAndResultsCommand());
- loadCommand(new GetIndicatorsForExtractRawDataAndResultsCommand());
- loadCommand(new ExtractRawDataAndResultsCommand());
-
- // delete results
- loadCommand(new DeleteResultsCommand());
- }
-
- @Override
- public EchoBaseResultRepository getResultRepository() {
- return resultRepository;
- }
-
- @Override
- public <R extends CoserRequest> boolean acceptRequest(R request) {
-
- ResultRepositoryCommand<EchoBaseResultRepository, R> command = getCommand(request);
- boolean result = command.accept(resultRepository, request);
- return result;
- }
-
- @Override
- public <R extends CoserRequest> CoserResult executeRequest(R request) {
- ResultRepositoryCommand<EchoBaseResultRepository, R> command = getCommand(request);
- CoserResult result = command.execute(resultRepository, request);
- return result;
- }
-
- protected <R extends CoserRequest> ResultRepositoryCommand<EchoBaseResultRepository, R> getCommand(R request) {
- Preconditions.checkNotNull(request);
- String requestTypeName = request.getClass().getName();
- ResultRepositoryCommand<EchoBaseResultRepository, ?> resultRepositoryCommand = commands.get(requestTypeName);
- Preconditions.checkNotNull(resultRepositoryCommand);
- return (ResultRepositoryCommand<EchoBaseResultRepository, R>) resultRepositoryCommand;
- }
-
- protected void loadCommand(ResultRepositoryCommand<EchoBaseResultRepository, ?> command) {
- String name = command.getRequestType().getName();
- this.commands.put(name, command);
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,10 +24,8 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.bean.EchoBaseProject;
import fr.ifremer.coser.result.ResultRepositoryInitializationException;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
import org.apache.commons.io.filefilter.AbstractFileFilter;
import org.apache.commons.io.filefilter.AndFileFilter;
@@ -62,8 +60,13 @@
}
@Override
- public Set<EchoBaseResultRepository> loadRepositories(CoserServiceContext serviceContext) {
+ public EchoBaseResultRepositoryType getRepositoryType() {
+ return EchoBaseResultRepositoryType.INSTANCE;
+ }
+ @Override
+ public Set<EchoBaseResultRepository> loadRepositories() {
+
if (log.isInfoEnabled()) {
log.info(String.format("Scan for projects from basedir: %s", basedir));
}
@@ -93,7 +96,7 @@
} catch (IOException e) {
throw new ResultRepositoryInitializationException(this, "Could not load project file", e);
}
- result.add(new EchoBaseResultRepository(serviceContext, project));
+ result.add(new EchoBaseResultRepository(project));
}
}
if (log.isInfoEnabled()) {
@@ -101,9 +104,4 @@
}
return result;
}
-
- @Override
- public ResultRepositoryCommandEngine newEngine(EchoBaseResultRepository repository) {
- return new EchoBaseResultRepositoryCommandEngine(repository);
- }
}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,10 +22,56 @@
* #L%
*/
+import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+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.DeleteResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.ExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.ExtractRawDataCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetAllResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetCommunityIndicatorResultDataCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetCommunityIndicatorResultGraphCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForPopulationIndicatorResultCommand;
+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.GetSpeciesForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForMapResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesListForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetZonesForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetZonesForExtractRawDataAndResultsCommand;
+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.DeleteResultsRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import fr.ifremer.coser.result.request.GetAllResultsRequest;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultDataRequest;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
+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.GetSpeciesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
+import java.util.Map;
import java.util.Set;
import static org.nuiton.i18n.I18n.n;
@@ -62,4 +108,45 @@
return Sets.immutableEnumSet(ResultType.MAP_AND_INDICATOR);
}
+ @Override
+ public Map<Class<? extends CoserRequest>, Class<? extends CoserCommand>> getCommandTypes() {
+ Map<Class<? extends CoserRequest>, Class<? extends CoserCommand>> result = Maps.newHashMap();
+
+ // get map result
+ result.put(GetZonesForMapResultRequest.class, GetZonesForMapResultCommand.class);
+ result.put(GetSpeciesForMapResultRequest.class, GetSpeciesForMapResultCommand.class);
+ result.put(GetMapResultRequest.class, GetMapResultCommand.class);
+
+ // get community indicator result
+ result.put(GetZonesForCommunityIndicatorResultRequest.class, GetZonesForCommunityIndicatorResultCommand.class);
+ result.put(GetIndicatorsForCommunityIndicatorResultRequest.class, GetIndicatorsForCommunityIndicatorResultCommand.class);
+ result.put(GetSpeciesListForCommunityIndicatorResultRequest.class, GetSpeciesListForCommunityIndicatorResultCommand.class);
+ result.put(GetCommunityIndicatorResultDataRequest.class, GetCommunityIndicatorResultDataCommand.class);
+ result.put(GetCommunityIndicatorResultGraphRequest.class, GetCommunityIndicatorResultGraphCommand.class);
+
+ // get population indicator result
+ result.put(GetZonesForPopulationIndicatorResultRequest.class, GetZonesForPopulationIndicatorResultCommand.class);
+ result.put(GetSpeciesForPopulationIndicatorResultRequest.class, GetSpeciesForPopulationIndicatorResultCommand.class);
+ result.put(GetIndicatorsForPopulationIndicatorResultRequest.class, GetIndicatorsForPopulationIndicatorResultCommand.class);
+ result.put(GetPopulationIndicatorResultDataRequest.class, GetPopulationIndicatorResultDataCommand.class);
+ result.put(GetPopulationIndicatorResultGraphRequest.class, GetPopulationIndicatorResultGraphCommand.class);
+
+ // get all results
+ result.put(GetAllResultsRequest.class, GetAllResultsCommand.class);
+
+ // extract raw data
+ result.put(GetZonesForExtractRawDataRequest.class, GetZonesForExtractRawDataCommand.class);
+ result.put(ExtractRawDataRequest.class, ExtractRawDataCommand.class);
+
+ // extract raw data and results
+ result.put(GetZonesForExtractRawDataAndResultsRequest.class, GetZonesForExtractRawDataAndResultsCommand.class);
+ result.put(GetSpeciesForExtractRawDataAndResultsRequest.class, GetSpeciesForExtractRawDataAndResultsCommand.class);
+ result.put(GetIndicatorsForExtractRawDataAndResultsRequest.class, GetIndicatorsForExtractRawDataAndResultsCommand.class);
+ result.put(ExtractRawDataAndResultsRequest.class, ExtractRawDataAndResultsCommand.class);
+
+ // delete results
+ result.put(DeleteResultsRequest.class, DeleteResultsCommand.class);
+ return result;
+ }
+
}
Added: 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 (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,373 @@
+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.base.Preconditions;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.CoserCommand;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserRequestContext;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.result.ExtractRawDataAndResultsResult;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.result.result.VoidResult;
+import fr.ifremer.coser.result.util.Charts;
+import fr.ifremer.coser.result.util.Reports;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorageWalker;
+import fr.ifremer.coser.storage.DataStorages;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.lang3.tuple.Pair;
+import org.jfree.chart.JFreeChart;
+
+import java.io.File;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n.l;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public abstract class AbstractEchoBaseCommand<R extends CoserRequest> implements CoserCommand<EchoBaseResultRepository, R> {
+
+ protected CoserRequestContext context;
+
+ protected EchoBaseResultRepository repository;
+
+ @Override
+ public void setRequestContext(CoserRequestContext context) {
+ this.context = context;
+ }
+
+ @Override
+ public void setRepository(EchoBaseResultRepository repository) {
+ this.repository = repository;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Context shortcuts method ---------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ public IndicatorMap getIndicatorsMap() {
+ return context.getIndicatorMap();
+ }
+
+ public ZoneMap getZonesMap() {
+ return context.getZoneMap();
+ }
+
+ public Reports getReports() {
+ return context.getReports();
+ }
+
+ public Charts getCharts() {
+ return context.getCharts();
+ }
+
+ public Locale getLocale() {
+ return context.getLocale();
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- To create results ----------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected MapResult newMapResult(Map<String, String> map) {
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ protected FileResult newFileResult(File file) {
+ FileResult result = new FileResult(repository.getId(), file);
+ return result;
+ }
+
+ protected VoidResult newVoidResult() {
+ VoidResult result = new VoidResult(repository.getId());
+ return result;
+ }
+
+ protected ExtractRawDataAndResultsResult newExtractRawDataAndResultsResult(MultiKeyMap<String, File> pdfMaps, Map<String, Pair<File, String>> pdfCharts) {
+ ExtractRawDataAndResultsResult result = new ExtractRawDataAndResultsResult(
+ repository.getId(), pdfMaps, pdfCharts);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get species lists ----------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Set<String> getPopulationSpecies() {
+ final Set<String> result = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String speciesCode = tuple[3];
+ result.add(speciesCode);
+ }
+ };
+ walkOnPopulation(walker);
+ return result;
+ }
+
+ protected Map<String, String> getPopulationSpeciesMap() {
+ final Set<String> speciesList = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String speciesCode = tuple[3];
+ speciesList.add(speciesCode);
+ }
+ };
+ walkOnPopulation(walker);
+ Map<String, String> result = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+ return result;
+ }
+
+ protected Map<String, String> getCommunitySpeciesMap() {
+ final Set<String> speciesList = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String speciesCode = tuple[3];
+ speciesList.add(speciesCode);
+ }
+ };
+ walkOnCommunity(walker);
+ Map<String, String> result = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get indicator lists --------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Set<String> getCommunityIndicators() {
+ final Set<String> result = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ };
+ walkOnCommunity(walker);
+ return result;
+ }
+
+ protected Set<String> getPopulationIndicators() {
+ final Set<String> result = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ };
+ walkOnPopulation(walker);
+ return result;
+ }
+
+ protected Set<String> getPopulationIndicators(String species) {
+ Preconditions.checkNotNull(species);
+
+ final Set<String> result = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ };
+ walkOnPopulation(EchoBasePredicates.populationSpeciesPredicate(species), walker);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Walk on indicators ---------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected void walkOnCommunity(DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+
+ DataStorage storage = repository.getCommunityIndicatorStorage();
+ DataStorages.walk(storage, walker);
+ }
+
+ protected void walkOnCommunity(Predicate<String[]> predicate, DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = repository.getCommunityIndicatorStorage();
+ DataStorages.walk(storage, predicate, walker);
+ }
+
+ protected void walkOnPopulation(DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+
+ DataStorage storage = repository.getPopulationIndicatorStorage();
+ DataStorages.walk(storage, walker);
+ }
+
+ protected void walkOnPopulation(Predicate<String[]> predicate, DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = repository.getPopulationIndicatorStorage();
+ DataStorages.walk(storage, predicate, walker);
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Extract indicator data ------------------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ protected DataStorage extractCommunity(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ String headerList = l(getLocale(), "coser.business.echobase.community.header");
+ String header[] = headerList.split("\\s*,\\s*");
+
+ DataStorage source = repository.getCommunityIndicatorStorage();
+ DataStorage result = DataStorages.sub(source, predicate, header);
+ return result;
+ }
+
+ protected DataStorage extractPopulation(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ String headerList = l(getLocale(), "coser.business.echobase.population.header");
+ String header[] = headerList.split("\\s*,\\s*");
+
+ DataStorage source = repository.getPopulationIndicatorStorage();
+ DataStorage result = DataStorages.sub(source, predicate, header);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Generate indicator charts --------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected JFreeChart generateCommunityChart(String zone,
+ String indicator,
+ String species) {
+
+ Predicate<String[]> predicate = Predicates.and(
+ EchoBasePredicates.communityIndicatorPredicate(indicator),
+ EchoBasePredicates.communitySpeciesPredicate(species));
+
+ Charts.ExtractGraphDataWalker walker = new Charts.ExtractGraphDataWalker() {
+
+ @Override
+ protected String getEstimationData(String... tuple) {
+ return tuple[5];
+ }
+
+ @Override
+ protected String getEcartData(String... tuple) {
+ return tuple[6];
+ }
+
+ @Override
+ protected String getYearData(String... tuple) {
+ return tuple[4];
+ }
+ };
+ walkOnCommunity(predicate, walker);
+
+ Locale locale = getLocale();
+
+ // get graph title
+ String zoneDisplayName = getZonesMap().getZoneFullName(zone);
+ String indicatorName = getIndicatorsMap().getIndicatorValue(locale, indicator);
+ String speciesListName = repository.getSpeciesMap().getSpeciesName(species);
+ String chartTitle = zoneDisplayName + " - " + indicatorName + " - " + speciesListName;
+
+ JFreeChart chart = getCharts().generateCommunityChart(locale,
+ walker,
+ getIndicatorsMap(),
+ indicator,
+ chartTitle);
+ return chart;
+ }
+
+ protected JFreeChart generatePopulationChart(String zone,
+ String species,
+ String indicator) {
+
+ // get data to put in graph
+ Predicate<String[]> predicate = Predicates.and(
+ EchoBasePredicates.populationSpeciesPredicate(species),
+ EchoBasePredicates.populationIndicatorPredicate(indicator));
+
+ Charts.ExtractGraphDataWalker walker = new Charts.ExtractGraphDataWalker() {
+
+ @Override
+ protected String getEstimationData(String... tuple) {
+ return tuple[6];
+ }
+
+ @Override
+ protected String getEcartData(String... tuple) {
+ return tuple[7];
+ }
+
+ @Override
+ protected String getYearData(String... tuple) {
+ return tuple[5];
+ }
+ };
+ walkOnPopulation(predicate, walker);
+
+ Locale locale = getLocale();
+
+ // get graph title
+ String zoneDisplayName = getZonesMap().getZoneFullName(zone);
+ String indicatorName = getIndicatorsMap().getIndicatorValue(locale, indicator);
+ String speciesName = repository.getSpeciesMap().getReportDisplayName(species);
+ String chartTitle = zoneDisplayName + " - " + indicatorName + " - " + speciesName;
+
+ JFreeChart chart = getCharts().generatePopulationChart(locale,
+ walker,
+ getIndicatorsMap(),
+ indicator,
+ chartTitle);
+ return chart;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.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/echobase/command/DeleteResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/DeleteResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/DeleteResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,11 +24,6 @@
import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.ResultType;
-import fr.ifremer.coser.result.VoidResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryType;
import fr.ifremer.coser.result.request.DeleteResultsRequest;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
@@ -36,7 +31,6 @@
import java.io.File;
import java.io.IOException;
-import java.util.List;
/**
* Created on 3/11/14.
@@ -44,29 +38,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class DeleteResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, DeleteResultsRequest> {
+public class DeleteResultsCommand extends AbstractEchoBaseCommand<DeleteResultsRequest> {
/** Logger. */
private static final Log log = LogFactory.getLog(DeleteResultsCommand.class);
@Override
- public Class<DeleteResultsRequest> getRequestType() {
- return DeleteResultsRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- DeleteResultsRequest request) {
- boolean result = matchRepositoryType(request) &&
- matchResultType(request) &&
- matchPublish(repository) &&
- matchZone(repository, request);
+ public boolean accept(DeleteResultsRequest request) {
+ boolean result = repository.matchRepositoryType(request) &&
+ repository.matchResultType(request) &&
+ repository.isPubliableResult() &&
+ repository.matchZone(request);
return result;
}
@Override
- public CoserResult execute(EchoBaseResultRepository repository,
- DeleteResultsRequest request) {
+ public CoserResult execute(DeleteResultsRequest request) {
File basedir = repository.getBasedir();
if (log.isInfoEnabled()) {
log.info("Will delete project at: " + basedir);
@@ -76,34 +63,7 @@
} catch (IOException e) {
throw new CoserTechnicalException("Could not delete project at: " + basedir, e);
}
- return new VoidResult(repository.getId());
+ return newVoidResult();
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchRepositoryType(DeleteResultsRequest request) {
- boolean result = request.getResultRepositoryType().equals(EchoBaseResultRepositoryType.ID);
- return result;
- }
-
- protected boolean matchResultType(DeleteResultsRequest request) {
- ResultType resultType = request.getResultType();
- boolean result = ResultType.MAP_AND_INDICATOR == resultType;
- return result;
- }
-
- protected boolean matchPublish(EchoBaseResultRepository repository) {
- boolean result = repository.isPubliableResult();
- return result;
- }
-
- protected boolean matchZone(EchoBaseResultRepository repository,
- DeleteResultsRequest request) {
- List<String> zoneList = request.getZoneList();
- boolean result = zoneList.contains(repository.getZone());
- return result;
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,53 +22,34 @@
* #L%
*/
-import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.SpeciesMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.ExtractRawDataAndResultsResult;
import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorageWalker;
import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
import fr.ifremer.coser.util.DataType;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.collections4.keyvalue.MultiKey;
import org.apache.commons.collections4.map.MultiKeyMap;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-import java.awt.Color;
import java.io.File;
import java.io.IOException;
-import java.io.StringWriter;
-import java.util.Collection;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
-import java.util.Set;
/**
* Created on 3/11/14.
@@ -76,120 +57,89 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class ExtractRawDataAndResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, ExtractRawDataAndResultsRequest> {
+public class ExtractRawDataAndResultsCommand extends AbstractEchoBaseCommand<ExtractRawDataAndResultsRequest> {
/** Logger. */
private static final Log log = LogFactory.getLog(ExtractRawDataAndResultsCommand.class);
@Override
- public Class<ExtractRawDataAndResultsRequest> getRequestType() {
- return ExtractRawDataAndResultsRequest.class;
- }
+ public boolean accept(ExtractRawDataAndResultsRequest request) {
+ //TODO Remove false when will be ok...
+ boolean result = false && repository.matchExtractTypeList(request) &&
+ repository.matchZone(request);
+ if (result) {
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- return matchExtractTypeSet(request) &&
- matchZoneList(repository, request) &&
- (matchPopulationIndicatorListAndSpeciesList(repository, request) ||
- matchCommunityIndicatorListAndSpeciesList(repository, request));
- }
+ if (request.getExtractTypeList().contains(DataType.POPULATION)) {
- @Override
- public FileResult execute(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest r) {
+ // match population indicator?
+ Predicate<String[]> predicate = Predicates.and(
+ EchoBasePredicates.populationIndicatorPredicate(request.getPopulationIndicatorList()),
+ EchoBasePredicates.populationSpeciesPredicate(request.getSpeciesList()));
+ result = repository.matchPopulation(predicate);
+ }
- Locale locale = r.getLocale();
- List<String> zoneList = r.getZoneList();
- List<DataType> extractTypeList = r.getExtractTypeList();
- List<String> speciesList = r.getSpeciesList();
- List<String> communityIndicatorList = r.getCommunityIndicatorList();
- List<String> populationIndicatorList = r.getPopulationIndicatorList();
+ if (!result) {
- File resultZip = null;
- File tempDir = null;
- try {
- tempDir = FileUtil.createTempDirectory("coser-extract-", "-tmp");
+ if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
- File subDir = new File(tempDir, "Indicateurs_Ifremer");
- FileUtils.forceMkdir(subDir);
-
- // les sources se retrouve dans le zip a cote du pdf
- if (extractTypeList.contains(DataType.SOURCE)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting sources");
+ // match community indicator?
+ Predicate<String[]> predicate = Predicates.and(
+ EchoBasePredicates.communityIndicatorPredicate(request.getCommunityIndicatorList()),
+ EchoBasePredicates.communitySpeciesPredicate(request.getSpeciesList()));
+ result = repository.matchCommunity(predicate);
}
- File srcDir = new File(subDir, "sources");
- extractSource(srcDir);
}
+ }
+ return result;
+ }
- // les cartes doivent se retrouver dans le pdf
- MultiKeyMap pdfMaps = null;
- if (extractTypeList.contains(DataType.MAP)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting maps");
- }
- String zone = repository.getZone();
- SpeciesMap speciesMap = repository.getSpeciesMap();
- for (String species : speciesList) {
- File mapFile = repository.getMapSpeciesFile(species);
- pdfMaps.put(zone, speciesMap.getSpeciesName(species), mapFile);
- }
- }
+ @Override
+ public ExtractRawDataAndResultsResult execute(ExtractRawDataAndResultsRequest request) {
- // les graphiques sont également dans le pdf
- MultiKeyMap pdfCharts = null;
- if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
- CollectionUtils.isNotEmpty(populationIndicatorList)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting charts");
- }
- pdfCharts = extractCharts(repository,
- speciesList,
- communityIndicatorList,
- populationIndicatorList,
- locale);
- }
+ List<DataType> extractTypeList = request.getExtractTypeList();
+ List<String> speciesList = request.getSpeciesList();
+ List<String> communityIndicatorList = request.getCommunityIndicatorList();
+ List<String> populationIndicatorList = request.getPopulationIndicatorList();
- // generate pdf if necessary
- if (MapUtils.isNotEmpty(pdfMaps) || MapUtils.isNotEmpty(pdfCharts)) {
- if (log.isDebugEnabled()) {
- log.debug("Generated Extract PDF");
- }
- repository.getReports().generateExtractPDF(subDir,
- zoneList,
- pdfMaps,
- pdfCharts,
- repository.getZonesMap(),
- locale);
- }
+ File extractDirectory = request.getExtractDirectory();
- // fichier de décharge en pdf
+ // les sources se retrouve dans le zip a cote du pdf
+ if (extractTypeList.contains(DataType.SOURCE)) {
if (log.isDebugEnabled()) {
- log.debug("Generated decharge PDF");
+ log.debug("Extracting sources");
}
- String filename = repository.getReports().getDechargeFilename(locale);
- File dechargePDF = new File(subDir, filename);
- repository.getReports().generateDechargePDF(dechargePDF, locale, null, null);
+ File srcDir = new File(extractDirectory, "sources");
+ extractSource(srcDir);
+ }
- // make zip
+ // les cartes doivent se retrouver dans le pdf
+ MultiKeyMap<String, File> pdfMaps = null;
+ if (extractTypeList.contains(DataType.MAP)) {
if (log.isDebugEnabled()) {
- log.debug("Make final archive");
+ log.debug("Extracting maps");
}
- resultZip = File.createTempFile("coser-extract-", ".zip");
- resultZip.deleteOnExit();
- ZipUtil.compress(resultZip, subDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't create zip file", ex);
- } finally {
- // clean directory
- FileUtils.deleteQuietly(tempDir);
+ pdfMaps = new MultiKeyMap<String, File>();
+ SpeciesMap speciesMap = repository.getSpeciesMap();
+ String zone = repository.getZone();
+ for (String species : speciesList) {
+ File mapFile = repository.getMapSpeciesFile(species);
+ String speciesName = speciesMap.getSpeciesName(species);
+ pdfMaps.put(zone, speciesName, mapFile);
+ }
}
- FileResult result = new FileResult(repository.getId(), resultZip);
+ // les graphiques sont également dans le pdf
+ Map<String, Pair<File, String>> pdfCharts = null;
+ if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
+ CollectionUtils.isNotEmpty(populationIndicatorList)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Extracting charts");
+ }
+ pdfCharts = extractCharts(speciesList,
+ communityIndicatorList,
+ populationIndicatorList);
+ }
+ ExtractRawDataAndResultsResult result = newExtractRawDataAndResultsResult(pdfMaps, pdfCharts);
return result;
}
@@ -200,521 +150,170 @@
*/
protected void extractSource(File directory) {
+ File zoneDirectory = new File(directory, repository.getZone());
+
+ try {
+ FileUtils.forceMkdir(zoneDirectory);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not create directory: " + zoneDirectory, e);
+ }
+
//TODO
}
/**
- * Retourne les indicateurs calculés avec leurs traductions scientifique
- * pour la zone et l'especes souhaitées.
- *
- * @param species especes (if {@code null} look for com indicators
- * @param comIndicators comIndicator
- * @param popIndicators popIndicators
- * @param locale locale
- * @return la liste des indicateurs (zone, speciesname, [graphfile, graphdata])
+ * @param species species to extract in population indicators
+ * @param communityIndicators community indicators to extract
+ * @param populationIndicators population indicators to extract
+ * @return charts files and their data with key: zone , indicator [- speciesName for population])
+ * and value: (graphFile, graphData)
*/
- protected MultiKeyMap extractCharts(EchoBaseResultRepository repository,
- Collection<String> species,
- Collection<String> comIndicators,
- Collection<String> popIndicators,
- Locale locale) {
+ protected Map<String, Pair<File, String>> extractCharts(List<String> species,
+ List<String> communityIndicators,
+ List<String> populationIndicators) {
- MultiKeyMap chartFileAndDatas = new MultiKeyMap();
-
String zone = repository.getZone();
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- if (CollectionUtils.isNotEmpty(comIndicators)) {
- Map<String, Pair<File, String>> chartFileAndDataCom = getRsufiResultComCharts(repository,
- comIndicators,
- zoneDisplayName,
- repository.getIndicatorsMap(),
- locale,
- 650,
- 430);
- // put in multimap as zone,speciesname, data
- for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataCom.entrySet()) {
- chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
- }
+ Map<String, Pair<File, String>> result = Maps.newLinkedHashMap();
+
+ if (CollectionUtils.isNotEmpty(communityIndicators)) {
+ result.putAll(extractCommunityResults(communityIndicators,
+ zone,
+ 650,
+ 430));
}
- if (CollectionUtils.isNotEmpty(popIndicators)) {
- Map<String, Pair<File, String>> chartFileAndDataPop = getRsufiResultPopCharts(repository,
- species,
- popIndicators,
- zoneDisplayName,
- repository.getIndicatorsMap(),
- locale,
- 650,
- 430);
- // put in multimap as zone,speciesname, data
- for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataPop.entrySet()) {
- chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
- }
+ if (CollectionUtils.isNotEmpty(populationIndicators)) {
+ result.putAll(extractPopulationResults(species,
+ populationIndicators,
+ zone,
+ 650,
+ 430));
}
- return chartFileAndDatas;
+ return result;
}
/**
- * Generate community graph for selected indicators.
- * Used by web ui extraction.
+ * Generate community graph and their data for selected indicators.
*
- * @param indicators indicators to extract
- * @param zoneDisplayName zone full name
- * @param indicatorMap indicator localized map
- * @param locale locale
- * @param width graph width
- * @param height graph height
+ * @param selectedIndicators indicators to extract
+ * @param zone zone
+ * @param width graph width
+ * @param height graph height
* @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
*/
- public Map<String, Pair<File, String>> getRsufiResultComCharts(EchoBaseResultRepository repository,
- Collection<String> indicators,
- String zoneDisplayName,
- IndicatorMap indicatorMap,
- Locale locale,
- int width, int height) {
+ public Map<String, Pair<File, String>> extractCommunityResults(List<String> selectedIndicators,
+ String zone,
+ int width,
+ int height) {
- Map<String, Pair<File, String>> result = Maps.newHashMap();
+ // Get exact list of indicators usable for this result
+ List<String> indicators = Lists.newArrayList(getCommunityIndicators());
+ indicators.retainAll(selectedIndicators);
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
-
- Map<String, Map<Integer, Double[]>> indicatorGraphData = new HashMap<String, Map<Integer, Double[]>>();
- Map<String, String> indicatorLists = new HashMap<String, String>();
- Map<String, DataStorage> indicatorStorages = new HashMap<String, DataStorage>();
-
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- Iterator<String[]> estComIndIterator = repository.loadCommunityIndicatorStorage(true);
- while (estComIndIterator.hasNext()) {
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- String[] tuple = estComIndIterator.next();
- String indicatorCode = tuple[1];
- String indicatorList = tuple[2];
-
- if (indicators.contains(indicatorCode)) {
-
- // si pas de list selectionnée, on prend la premiere
+ //FIXME Check if this is correct
+ // get for all indicators the first species list found (we only extract this one)
+ final Map<String, String> indicatorLists = new HashMap<String, String>();
+ walkOnCommunity(LegacyPredicates.communityIndicatorPredicate(indicators), new DataStorageWalker() {
+ @Override
+ public void onRow(String... row) {
+ String indicatorCode = row[1];
String localList = indicatorLists.get(indicatorCode);
+ //FIXME Should only test if indicatorCode is present ?
if (StringUtils.isBlank(localList)) {
- localList = indicatorList;
- indicatorLists.put(indicatorCode, localList);
+ String indicatorList = row[2];
+ indicatorLists.put(indicatorCode, indicatorList);
}
-
- if (indicatorList.equals(localList)) {
- Double estimation = Double.parseDouble(tuple[5]);
- Double ecart = Double.parseDouble(tuple[6]);
- int year = Integer.parseInt(tuple[4]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- Map<Integer, Double[]> graphData = indicatorGraphData.get(indicatorCode);
- if (graphData == null) {
- graphData = new HashMap<Integer, Double[]>();
- indicatorGraphData.put(indicatorCode, graphData);
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
-
- // for data part
- DataStorage subDataStorage = indicatorStorages.get(indicatorCode);
- if (subDataStorage == null) {
- subDataStorage = new MemoryDataStorage();
- if ("fr".equals(locale.getLanguage())) {
- subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Strate", "Année", "Estimation", "EcartType", "CV"});
- } else {
- subDataStorage.add(new String[]{"Survey", "Index", "List", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
- }
- indicatorStorages.put(indicatorCode, subDataStorage);
- }
- subDataStorage.add(tuple);
- }
}
- }
+ });
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- for (String indicator : indicatorGraphData.keySet()) {
- // get graph title
- String chartTitle = zoneDisplayName;
- String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
- String unit = indicatorMap.getIndicatorUnit(indicator);
- chartTitle += " - " + indicatorName;
+ Map<String, Pair<File, String>> result = Maps.newHashMap();
- // ajout de la traduction de la liste d'indicateur
- // les liste sont a1, T1, T2 ...
- String localList = indicatorLists.get(indicator);
- String listLetter = String.valueOf(localList.charAt(0));
- Iterator<String[]> typeIterator = repository.getSpeciesMap().iterator(true);
- while (typeIterator.hasNext()) {
- // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
- String[] tuple = typeIterator.next();
- if (tuple[4].equals(listLetter)) {
- /// gestion du groupe "Tous"
- // cas special, c'est la seule valeur du fichier
- // code type espece qui a besoin d'une traduction
- if (tuple[4].equalsIgnoreCase("T")) {
- if ("fr".equals(locale.getLanguage())) {
- chartTitle += " - " + "Tous Liste " + localList.charAt(1);
- } else if ("es".equals(locale.getLanguage())) {
- chartTitle += " - " + "Todo Lista " + localList.charAt(1);
- } else {
- chartTitle += " - " + "All List " + localList.charAt(1);
- }
- } else {
- // ajout de la traduction du nom de liste plus le numéro
- if ("fr".equals(locale.getLanguage())) {
- chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
- } else if ("es".equals(locale.getLanguage())) {
- chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
- } else {
- chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
- }
- }
- break;
- }
- }
+ for (String indicator : indicators) {
- // generate dataset with sorted data
- Map<Integer, Double[]> graphData = indicatorGraphData.get(indicator);
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
+ String speciesList = indicatorLists.get(indicator);
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.communityIndicatorPredicate(indicator),
+ LegacyPredicates.communitySpeciesListPredicate(speciesList));
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+ // extract raw data
+ DataStorage storage = extractCommunity(predicate);
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
+ String rawDataText = DataStorages.toString(storage);
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(chartTitle,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+ // generate chart
+ JFreeChart chart = generateCommunityChart(zone,
+ indicator,
+ speciesList);
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
+ // generate chart file
+ File chartFile = getCharts().generateChartFile("coser-community-chart-",
+ chart,
+ width,
+ height);
- try {
- File chartFile = File.createTempFile("coser-community-chart-", ".png");
- chartFile.deleteOnExit();
- ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
- //ByteArrayOutputStream out = new ByteArrayOutputStream();
- //ChartUtilities.writeChartAsPNG(out, chart, width, height);
-
- // data extraction
- DataStorage subDataStorage = indicatorStorages.get(indicator);
- StringWriter writer = new StringWriter();
- DataStorages.save(subDataStorage, writer);
-
- // add chart file dans chart data in result
- result.put(indicator, Pair.of(chartFile, writer.toString()));
- writer.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
+ result.put(indicator, Pair.of(chartFile, rawDataText));
}
-
return result;
}
/**
- * Generate population graph for selected species and indicator.
+ * Generate population graph and their data for selected indicators.
*
- * @param species species to extract
- * @param indicators indicators to extract
- * @param zoneDisplayName zone full name
- * @param indicatorMap indicator localized map
- * @param locale locale
- * @param width graph width
- * @param height graph height
+ * @param selectedSpecies species to extract
+ * @param selectedIndicators indicators to extract
+ * @param zone zone
+ * @param width graph width
+ * @param height graph height
* @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
*/
- public Map<String, Pair<File, String>> getRsufiResultPopCharts(EchoBaseResultRepository repository,
- Collection<String> species,
- Collection<String> indicators,
- String zoneDisplayName,
- IndicatorMap indicatorMap,
- Locale locale,
- int width,
- int height) {
+ public Map<String, Pair<File, String>> extractPopulationResults(List<String> selectedSpecies,
+ List<String> selectedIndicators,
+ String zone,
+ int width,
+ int height) {
+ // Get exact list of species to use
+ List<String> speciesList = Lists.newArrayList(getPopulationSpecies());
+ speciesList.retainAll(selectedSpecies);
+
Map<String, Pair<File, String>> result = Maps.newHashMap();
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
+ for (String species : speciesList) {
- MultiKeyMap indicatorGraphData = new MultiKeyMap();
- MultiKeyMap indicatorStorages = new MultiKeyMap();
+ // Get extact indicators to use
+ List<String> indicators = Lists.newArrayList(getPopulationIndicators(species));
+ indicators.retainAll(selectedIndicators);
- // Campagne Indicateur Liste Species Strate Annee Estimation EcartType CV
- Iterator<String[]> estPopIndIterator = repository.loadPopulationIndicatorStorage(true);
- while (estPopIndIterator.hasNext()) {
- String[] tuple = estPopIndIterator.next();
+ for (String indicator : indicators) {
- String speciesCode = tuple[3];
- String indicatorCode = tuple[1];
- if (species.contains(speciesCode) && indicators.contains(indicatorCode)) {
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.populationIndicatorPredicate(indicator),
+ LegacyPredicates.populationSpeciesPredicate(species));
- // XXX echatellier, maybe take care of list here ?
+ // extract raw data
+ DataStorage storage = extractPopulation(predicate);
- Double estimation = Double.parseDouble(tuple[6]);
- Double ecart = Double.parseDouble(tuple[7]);
- int year = Integer.parseInt(tuple[5]);
+ String rawDataText = DataStorages.toString(storage);
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicatorCode, speciesCode);
- if (graphData == null) {
- graphData = new HashMap<Integer, Double[]>();
- indicatorGraphData.put(indicatorCode, speciesCode, graphData);
- }
- graphData.put(year, new Double[]{estimation, ecart});
+ // generate chart
+ JFreeChart chart = generatePopulationChart(zone,
+ indicator,
+ species);
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
+ // generate chart file
+ File chartFile = getCharts().generateChartFile("coser-population-chart-",
+ chart,
+ width,
+ height);
- // for data part
- DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicatorCode, speciesCode);
- if (subDataStorage == null) {
- subDataStorage = new MemoryDataStorage();
- if ("fr".equals(locale.getLanguage())) {
- subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Espèce", "Strate", "Annee", "Estimation", "EcartType", "CV"});
- } else {
- subDataStorage.add(new String[]{"Survey", "Index", "List", "Species", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
- }
- indicatorStorages.put(indicatorCode, speciesCode, subDataStorage);
- }
- subDataStorage.add(tuple);
+ result.put(indicator + "-" + species, Pair.of(chartFile, rawDataText));
}
}
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- for (MultiKey indicatorSpecies : (Set<MultiKey>) indicatorGraphData.keySet()) {
- String indicator = (String) indicatorSpecies.getKey(0);
- String aSpecies = (String) indicatorSpecies.getKey(1);
- // get graph title
- String title = zoneDisplayName;
- String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
- String unit = indicatorMap.getIndicatorUnit(indicator);
- title += " - " + indicatorName;
- title += " - " + repository.getSpeciesMap().getReportDisplayName(aSpecies);
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicator, aSpecies);
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(title,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- File chartFile = File.createTempFile("coser-population-chart-", ".png");
- chartFile.deleteOnExit();
- ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
- //ByteArrayOutputStream out = new ByteArrayOutputStream();
- //ChartUtilities.writeChartAsPNG(out, chart, width, height);
-
- // data extraction
- DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicator, aSpecies);
- StringWriter writer = new StringWriter();
- DataStorages.save(subDataStorage, writer);
-
- // add chart file dans chart data in result
- result.put(indicator + "-" + aSpecies, Pair.of(chartFile, writer.toString()));
- writer.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
- protected boolean matchExtractTypeSet(ExtractRawDataAndResultsRequest request) {
- //TODO Should deal also with raw-data type
- return !request.getExtractTypeList().contains(DataType.SOURCE);
- }
-
- protected boolean matchZoneList(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- return request.getZoneList().contains(repository.getZone());
- }
-
- protected boolean matchCommunityIndicatorList(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorList(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorListAndSpeciesList(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchCommunityIndicatorListAndSpeciesList(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,10 +22,8 @@
* #L%
*/
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import fr.ifremer.coser.result.result.FileResult;
/**
* Created on 3/11/14.
@@ -33,31 +31,19 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class ExtractRawDataCommand implements ResultRepositoryCommand<EchoBaseResultRepository, ExtractRawDataRequest> {
+public class ExtractRawDataCommand extends AbstractEchoBaseCommand<ExtractRawDataRequest> {
@Override
- public Class<ExtractRawDataRequest> getRequestType() {
- return ExtractRawDataRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- ExtractRawDataRequest request) {
+ public boolean accept(ExtractRawDataRequest request) {
return repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public FileResult execute(EchoBaseResultRepository repository,
- ExtractRawDataRequest r) {
+ public FileResult execute(ExtractRawDataRequest r) {
//TODO
throw new IllegalStateException("TODO!");
}
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- //TODO
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,12 +24,8 @@
import com.google.common.collect.Maps;
import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.ResultType;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryType;
import fr.ifremer.coser.result.request.GetAllResultsRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.Map;
@@ -39,48 +35,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetAllResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetAllResultsRequest> {
+public class GetAllResultsCommand extends AbstractEchoBaseCommand<GetAllResultsRequest> {
@Override
- public Class<GetAllResultsRequest> getRequestType() {
- return GetAllResultsRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetAllResultsRequest request) {
- boolean result = matchRepositoryType(request) &&
- matchResultType(request) &&
- matchPublish(repository);
+ public boolean accept(GetAllResultsRequest request) {
+ boolean result = repository.matchRepositoryType(request) &&
+ repository.matchResultType(request) &&
+ repository.isPubliableResult();
return result;
}
@Override
- public CoserResult execute(EchoBaseResultRepository repository,
- GetAllResultsRequest request) {
+ public CoserResult execute(GetAllResultsRequest request) {
Map<String, String> map = Maps.newHashMap();
map.put(repository.getZone(), repository.getSurveyName());
- MapResult result = new MapResult(repository.getId(), map);
- return result;
- }
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchRepositoryType(GetAllResultsRequest request) {
- boolean result = request.getResultRepositoryType().equals(EchoBaseResultRepositoryType.ID);
+ MapResult result = newMapResult(map);
return result;
}
-
- protected boolean matchResultType(GetAllResultsRequest request) {
- ResultType resultType = request.getResultType();
- boolean result = ResultType.MAP_AND_INDICATOR == resultType;
- return result;
- }
-
- protected boolean matchPublish(EchoBaseResultRepository repository) {
- boolean result = repository.isPubliableResult();
- return result;
- }
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,379 +0,0 @@
-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.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
-import fr.ifremer.coser.result.request.GetCommunityIndicatorResultRequest;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-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.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetCommunityIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetCommunityIndicatorResultRequest> {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(GetCommunityIndicatorResultCommand.class);
-
- @Override
- public Class<GetCommunityIndicatorResultRequest> getRequestType() {
- return GetCommunityIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository, GetCommunityIndicatorResultRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchIndicatorAndSpeciesList(repository, request);
- }
-
- @Override
- public FileResult execute(EchoBaseResultRepository repository, GetCommunityIndicatorResultRequest r) {
-
- File file = null;
- switch (r.getIndicatorResultType()) {
- case DATA:
- file = getCommunityIndicatorDataFile(repository,
- r.getLocale(),
- r.getIndicator(),
- r.getSpecies());
- break;
-
- case GRAPH:
- file = getCommunityIndicatorGraphFile(repository,
- r.getLocale(),
- r.getZone(),
- r.getIndicator(),
- r.getSpecies());
- break;
- }
- FileResult result = new FileResult(repository.getId(), file);
- return result;
- }
-
-
- protected File getCommunityIndicatorDataFile(EchoBaseResultRepository repository, Locale locale,
- String indicator,
- String speciesList) {
-
- try {
-
- File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp");
-
- File baseDir = new File(tempDir, repository.getSurveyName());
- FileUtils.forceMkdir(baseDir);
-
- // ajout du fichier csv avec les indicateurs
- DataStorage dataStorage = new MemoryDataStorage();
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(false);
-
- // add header
- dataStorage.add(iterator.next());
-
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- dataStorage.add(tuple);
- }
- }
- File csvFile = DataStorages.save(dataStorage, "coser-chart-community-indicator",
- ".csv"
- );
-
- File csvFileCopied = new File(baseDir, indicator + ".csv");
- FileUtils.copyFile(csvFile, csvFileCopied);
- FileUtils.forceDelete(csvFile);
-
- //TODO See what to generate here (we don't have any selection in echobase results).
-// // ajout du fichier d'information sur les espèces incluses dans
-// // les calculs des indicateurs de communautés
-// // load project (without data to get reftax data)
-// Project project = path.getProject();
-// Selection selection = path.getSelection();
-// File metaFile = webService.generateMetaFilePDF(project,
-// selection,
-// resultDirectory,
-// rSufiResult,
-// indicator,
-// locale);
-// File metaFileCopied = new File(baseDir, "Information.pdf");
-// FileUtils.copyFile(metaFile, metaFileCopied);
-
- // make zip
- File result = File.createTempFile("coser-chart-community-indicator", ".zip");
- result.deleteOnExit();
- ZipUtil.compress(result, baseDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- return result;
- } catch (Exception e) {
- throw new CoserTechnicalException("Can't create zip file", e);
- }
- }
-
- protected File getCommunityIndicatorGraphFile(EchoBaseResultRepository repository,
- Locale locale,
- String zone,
- String indicator,
- String speciesList) {
-
- // indicator list to take care
- // pour avoir une valeur non nulle si list est null
- // on prend dans ce cas la premiere valeur trouvée
- String localList = speciesList;
-
- if (log.isDebugEnabled()) {
- log.debug("Searching list for indicator : " + indicator);
- }
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
- boolean indicatorFound = false;
- Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- String[] tuple = iterator.next();
- String indicatorList = tuple[2];
-
- if (repository.matchIndicatorIndicator(tuple, indicator)) {
- indicatorFound = true;
-
- // si pas de list selectionnée, on prend la premiere
- if (StringUtils.isBlank(localList)) {
- localList = indicatorList;
- }
-
- if (indicatorList.equals(localList)) {
- Double estimation = Double.parseDouble(tuple[5]);
- Double ecart = Double.parseDouble(tuple[6]);
- int year = Integer.parseInt(tuple[4]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
- }
- }
- }
-
- File result = null;
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- if (indicatorFound) {
-
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
- String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
-
- // get graph title
- String chartTitle = zoneDisplayName;
- chartTitle += " - " + indicatorName;
-
- // ajout de la traduction de la liste d'indicateur
- // les liste sont a1, T1, T2 ...
- String listLetter = String.valueOf(localList.charAt(0));
- Iterator<String[]> typeIterator = repository.getSpeciesMap().iterator(true);
- while (typeIterator.hasNext()) {
- // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
- String[] tuple = typeIterator.next();
- if (tuple[4].equals(listLetter)) {
- /// gestion du groupe "Tous"
- // cas special, c'est la seule valeur du fichier
- // code type espece qui a besoin d'une traduction
- if (tuple[4].equalsIgnoreCase("T")) {
- if ("fr".equals(locale.getLanguage())) {
- chartTitle += " - " + "Tous Liste " + localList.charAt(1);
- } else if ("es".equals(locale.getLanguage())) {
- chartTitle += " - " + "Todo Lista " + localList.charAt(1);
- } else {
- chartTitle += " - " + "All List " + localList.charAt(1);
- }
- } else {
- // ajout de la traduction du nom de liste plus le numéro
- if ("fr".equals(locale.getLanguage())) {
- chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
- } else if ("es".equals(locale.getLanguage())) {
- chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
- } else {
- chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
- }
- }
- break;
- }
- }
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
-
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(chartTitle,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- result = File.createTempFile("coser-chart-community-indicator-", ".png");
- result.deleteOnExit();
- ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchIndicator(EchoBaseResultRepository repository,
- GetCommunityIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
-
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorIndicator(tuple, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchIndicatorAndSpeciesList(EchoBaseResultRepository repository,
- GetCommunityIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
- Preconditions.checkNotNull(request.getSpecies());
-
- String indicator = request.getIndicator();
- String speciesList = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultDataCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultDataCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,125 @@
+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.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultDataRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import org.apache.commons.io.FileUtils;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.ZipUtil;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultDataCommand extends AbstractEchoBaseCommand<GetCommunityIndicatorResultDataRequest> {
+
+ @Override
+ public boolean accept(GetCommunityIndicatorResultDataRequest request) {
+ boolean result = repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = createPredicate(request);
+ result = repository.matchCommunity(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetCommunityIndicatorResultDataRequest request) {
+
+ Predicate<String[]> predicate = createPredicate(request);
+
+ File file = getCommunityIndicatorDataFile(predicate,
+ request.getIndicator());
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+ protected File getCommunityIndicatorDataFile(Predicate<String[]> predicate,
+ String indicator) {
+
+ try {
+
+ File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp");
+
+ File baseDir = new File(tempDir, repository.getSurveyName());
+ FileUtils.forceMkdir(baseDir);
+
+ // ajout du fichier csv avec les indicateurs
+ DataStorage dataStorage = extractCommunity(predicate);
+ File csvFile = DataStorages.save(dataStorage, "coser-chart-community-indicator", ".csv");
+
+ File csvFileCopied = new File(baseDir, indicator + ".csv");
+ FileUtils.copyFile(csvFile, csvFileCopied);
+ FileUtils.forceDelete(csvFile);
+
+ //TODO See what to generate here (we don't have any selection in echobase results).
+// // ajout du fichier d'information sur les espèces incluses dans
+// // les calculs des indicateurs de communautés
+// // load project (without data to get reftax data)
+// Project project = path.getProject();
+// Selection selection = path.getSelection();
+// File metaFile = webService.generateMetaFilePDF(project,
+// selection,
+// resultDirectory,
+// rSufiResult,
+// indicator,
+// locale);
+// File metaFileCopied = new File(baseDir, "Information.pdf");
+// FileUtils.copyFile(metaFile, metaFileCopied);
+
+ // make zip
+ File result = File.createTempFile("coser-chart-community-indicator", ".zip");
+ result.deleteOnExit();
+ ZipUtil.compress(result, baseDir);
+
+ // clean directory
+ FileUtils.deleteDirectory(tempDir);
+ return result;
+ } catch (Exception e) {
+ throw new CoserTechnicalException("Can't create zip file", e);
+ }
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Predicate<String[]> createPredicate(GetCommunityIndicatorResultDataRequest request) {
+ return Predicates.and(
+ EchoBasePredicates.communityIndicatorPredicate(request.getIndicator()),
+ EchoBasePredicates.communitySpeciesPredicate(request.getSpecies()));
+ }
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultGraphCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultGraphCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultGraphCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,74 @@
+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.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import org.jfree.chart.JFreeChart;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultGraphCommand extends AbstractEchoBaseCommand<GetCommunityIndicatorResultGraphRequest> {
+
+ @Override
+ public boolean accept(GetCommunityIndicatorResultGraphRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = Predicates.and(
+ EchoBasePredicates.communityIndicatorPredicate(request.getIndicator()),
+ EchoBasePredicates.communitySpeciesPredicate(request.getSpecies()));
+ result = repository.matchCommunity(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetCommunityIndicatorResultGraphRequest request) {
+
+ // generate chart
+ JFreeChart chart = generateCommunityChart(request.getZone(),
+ request.getIndicator(),
+ request.getSpecies());
+
+ // generate file from chart
+ File file = getCharts().generateChartFile("coser-chart-community-indicator-",
+ chart,
+ 800,
+ 400);
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,10 +22,8 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.Map;
import java.util.Set;
@@ -36,29 +34,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForCommunityIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetIndicatorsForCommunityIndicatorResultRequest> {
+public class GetIndicatorsForCommunityIndicatorResultCommand extends AbstractEchoBaseCommand<GetIndicatorsForCommunityIndicatorResultRequest> {
@Override
- public Class<GetIndicatorsForCommunityIndicatorResultRequest> getRequestType() {
- return GetIndicatorsForCommunityIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetIndicatorsForCommunityIndicatorResultRequest request) {
+ public boolean accept(GetIndicatorsForCommunityIndicatorResultRequest request) {
return repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetIndicatorsForCommunityIndicatorResultRequest request) {
+ public MapResult execute(GetIndicatorsForCommunityIndicatorResultRequest request) {
- Set<String> indicatorList = repository.getCommunityIndicators();
- Map<String, String> map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ Set<String> indicatorList = getCommunityIndicators();
+ Map<String, String> map = getIndicatorsMap().getIndicatorsValues(getLocale(), indicatorList);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,10 +22,8 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetIndicatorsForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.util.DataType;
import java.util.Map;
@@ -37,57 +35,37 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetIndicatorsForExtractRawDataAndResultsRequest> {
+public class GetIndicatorsForExtractRawDataAndResultsCommand extends AbstractEchoBaseCommand<GetIndicatorsForExtractRawDataAndResultsRequest> {
@Override
- public Class<GetIndicatorsForExtractRawDataAndResultsRequest> getRequestType() {
- return GetIndicatorsForExtractRawDataAndResultsRequest.class;
+ public boolean accept(GetIndicatorsForExtractRawDataAndResultsRequest request) {
+ return repository.matchExtractTypeList(request) &&
+ repository.matchZone(request);
}
@Override
- public boolean accept(EchoBaseResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
- return matchExtractTypeSet(request) && matchZoneList(repository, request);
- }
+ public MapResult execute(GetIndicatorsForExtractRawDataAndResultsRequest request) {
- @Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
-
Set<String> indicatorList = null;
if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
// get all community indicators for given zone
- indicatorList = repository.getCommunityIndicators();
+ indicatorList = getCommunityIndicators();
} else if (request.getExtractTypeList().contains(DataType.POPULATION)) {
// get all population indicators for given zone
- indicatorList = repository.getPopulationIndicators();
+ indicatorList = getPopulationIndicators();
}
Map<String, String> map = null;
if (indicatorList != null) {
- map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ map = getIndicatorsMap().getIndicatorsValues(getLocale(), indicatorList);
}
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(GetIndicatorsForExtractRawDataAndResultsRequest request) {
- //TODO Should deal also with raw-data type
- return !request.getExtractTypeList().contains(DataType.SOURCE);
- }
-
- protected boolean matchZoneList(EchoBaseResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
- return request.getZoneList().contains(repository.getZone());
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,13 +22,11 @@
* #L%
*/
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import com.google.common.base.Predicate;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
-import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -38,53 +36,28 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForPopulationIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetIndicatorsForPopulationIndicatorResultRequest> {
+public class GetIndicatorsForPopulationIndicatorResultCommand extends AbstractEchoBaseCommand<GetIndicatorsForPopulationIndicatorResultRequest> {
@Override
- public Class<GetIndicatorsForPopulationIndicatorResultRequest> getRequestType() {
- return GetIndicatorsForPopulationIndicatorResultRequest.class;
- }
+ public boolean accept(GetIndicatorsForPopulationIndicatorResultRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetIndicatorsForPopulationIndicatorResultRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpecies(repository, request);
+ Predicate<String[]> predicate = EchoBasePredicates.populationSpeciesPredicate(request.getSpecies());
+ result = repository.matchPopulation(predicate);
+ }
+ return result;
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetIndicatorsForPopulationIndicatorResultRequest request) {
+ public MapResult execute(GetIndicatorsForPopulationIndicatorResultRequest request) {
- Set<String> indicatorList = repository.getCommunityIndicators();
- Map<String, String> map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ Set<String> indicatorList = getCommunityIndicators();
+ Map<String, String> map = getIndicatorsMap().getIndicatorsValues(getLocale(), indicatorList);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(EchoBaseResultRepository repository,
- GetIndicatorsForPopulationIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
-
- String species = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorSpecies(tuple, species)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetMapResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,11 +22,8 @@
* #L%
*/
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetMapResultRequest;
+import fr.ifremer.coser.result.result.FileResult;
import java.io.File;
@@ -36,39 +33,26 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetMapResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetMapResultRequest> {
+public class GetMapResultCommand extends AbstractEchoBaseCommand<GetMapResultRequest> {
@Override
- public Class<GetMapResultRequest> getRequestType() {
- return GetMapResultRequest.class;
+ public boolean accept(GetMapResultRequest request) {
+ boolean result = repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ File file = repository.getMapSpeciesFile(request.getSpecies());
+ result = file != null;
+ }
+ return result;
}
@Override
- public boolean accept(EchoBaseResultRepository repository,
- GetMapResultRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpecies(repository, request);
- }
+ public FileResult execute(GetMapResultRequest request) {
- @Override
- public FileResult execute(EchoBaseResultRepository repository,
- GetMapResultRequest request) {
-
File file = repository.getMapSpeciesFile(request.getSpecies());
- FileResult result = new FileResult(repository.getId(), file);
+ FileResult result = newFileResult(file);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(EchoBaseResultRepository repository,
- GetMapResultRequest request) {
- String species = request.getSpecies();
- File file = repository.getMapSpeciesFile(species);
- return file != null && file.exists();
- }
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,283 +0,0 @@
-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.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-import org.apache.commons.lang3.StringUtils;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetPopulationIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetPopulationIndicatorResultRequest> {
-
- @Override
- public Class<GetPopulationIndicatorResultRequest> getRequestType() {
- return GetPopulationIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository, GetPopulationIndicatorResultRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpeciesAndIndicator(repository, request);
- }
-
- @Override
- public FileResult execute(EchoBaseResultRepository repository, GetPopulationIndicatorResultRequest r) {
-
- File file = null;
- switch (r.getIndicatorResultType()) {
- case DATA:
- file = getPopulationIndicatorDataFile(repository,
- r.getIndicator(),
- r.getSpecies());
- break;
-
- case GRAPH:
- file = getPopulationIndicatorGraphFile(repository,
- r.getLocale(),
- r.getZone(),
- r.getIndicator(),
- r.getSpecies());
- break;
- }
-
-
- FileResult result = new FileResult(repository.getId(), file);
- return result;
- }
-
- protected File getPopulationIndicatorDataFile(EchoBaseResultRepository repository, String species, String indicator) {
-
- DataStorage dataStorage = new MemoryDataStorage();
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(false);
-
- // add header
- dataStorage.add(iterator.next());
-
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
- dataStorage.add(tuple);
- }
- }
- File result = DataStorages.save(dataStorage, "coser-chart-population-indicator",
- ".csv"
- );
- return result;
- }
-
- protected File getPopulationIndicatorGraphFile(EchoBaseResultRepository repository, Locale locale,
- String zone,
- String species,
- String indicator) {
-
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
- boolean indicatorFound = false;
- Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
-
- if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
- indicatorFound = true;
-
- // XXX echatellier, maybe take care of list here ?
-
- Double estimation = Double.parseDouble(tuple[6]);
- Double ecart = Double.parseDouble(tuple[7]);
- int year = Integer.parseInt(tuple[5]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
- }
- }
-
- File result = null;
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- if (indicatorFound) {
-
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
- String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
-
- // get graph title
- String title = zoneDisplayName;
- title += " - " + indicatorName;
- title += " - " + repository.getSpeciesMap().getReportDisplayName(species);
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(title,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- result = File.createTempFile("coser-chart-population-indicator-", ".png");
- result.deleteOnExit();
- ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(EchoBaseResultRepository repository,
- GetPopulationIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
-
- String species = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorSpecies(tuple, species)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchSpeciesAndIndicator(EchoBaseResultRepository repository,
- GetPopulationIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
- Preconditions.checkNotNull(request.getIndicator());
-
- String species = request.getSpecies();
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
-}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultDataCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultDataCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,73 @@
+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.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultDataRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultDataCommand extends AbstractEchoBaseCommand<GetPopulationIndicatorResultDataRequest> {
+
+ @Override
+ public boolean accept(GetPopulationIndicatorResultDataRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = createPredicate(request);
+ result = repository.matchPopulation(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetPopulationIndicatorResultDataRequest request) {
+
+ Predicate<String[]> predicate = createPredicate(request);
+
+ DataStorage dataStorage = extractPopulation(predicate);
+ File file = DataStorages.save(dataStorage, "coser-chart-population-indicator", ".csv");
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+ protected Predicate<String[]> createPredicate(GetPopulationIndicatorResultDataRequest request) {
+ return Predicates.and(
+ EchoBasePredicates.populationSpeciesPredicate(request.getSpecies()),
+ EchoBasePredicates.populationIndicatorPredicate(request.getIndicator()));
+ }
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultGraphCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultGraphCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultGraphCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,74 @@
+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.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import org.jfree.chart.JFreeChart;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultGraphCommand extends AbstractEchoBaseCommand<GetPopulationIndicatorResultGraphRequest> {
+
+ @Override
+ public boolean accept(GetPopulationIndicatorResultGraphRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = Predicates.and(
+ EchoBasePredicates.populationSpeciesPredicate(request.getSpecies()),
+ EchoBasePredicates.populationIndicatorPredicate(request.getIndicator()));
+ result = repository.matchPopulation(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetPopulationIndicatorResultGraphRequest request) {
+
+ // generate chart
+ JFreeChart chart = generatePopulationChart(request.getZone(),
+ request.getSpecies(),
+ request.getIndicator());
+
+ // generate file from chart
+ File file = getCharts().generateChartFile("coser-chart-population-indicator-",
+ chart,
+ 800,
+ 400);
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,57 @@
+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.GetSpeciesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.MapResult;
+
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesForExtractRawDataAndResultsCommand extends AbstractEchoBaseCommand<GetSpeciesForExtractRawDataAndResultsRequest> {
+
+ @Override
+ public boolean accept(GetSpeciesForExtractRawDataAndResultsRequest request) {
+ return repository.matchExtractTypeList(request) && repository.matchZone(request);
+ }
+
+ @Override
+ 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());
+
+ MapResult result = newMapResult(map);
+ return result;
+ }
+
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,13 +22,10 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.Map;
-import java.util.Set;
/**
* Created on 3/11/14.
@@ -36,28 +33,20 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetSpeciesForMapResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetSpeciesForMapResultRequest> {
+public class GetSpeciesForMapResultCommand extends AbstractEchoBaseCommand<GetSpeciesForMapResultRequest> {
@Override
- public Class<GetSpeciesForMapResultRequest> getRequestType() {
- return GetSpeciesForMapResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetSpeciesForMapResultRequest request) {
+ public boolean accept(GetSpeciesForMapResultRequest request) {
return repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetSpeciesForMapResultRequest request) {
+ public MapResult execute(GetSpeciesForMapResultRequest request) {
- Set<String> speciesList = repository.getMapSpecies();
- Map<String, String> map = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+ Map<String, String> map = repository.getMapSpecies();
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,13 +22,10 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.Map;
-import java.util.Set;
/**
* Created on 3/11/14.
@@ -36,28 +33,20 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetSpeciesForPopulationIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetSpeciesForPopulationIndicatorResultRequest> {
+public class GetSpeciesForPopulationIndicatorResultCommand extends AbstractEchoBaseCommand<GetSpeciesForPopulationIndicatorResultRequest> {
@Override
- public Class<GetSpeciesForPopulationIndicatorResultRequest> getRequestType() {
- return GetSpeciesForPopulationIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetSpeciesForPopulationIndicatorResultRequest request) {
+ public boolean accept(GetSpeciesForPopulationIndicatorResultRequest request) {
return repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetSpeciesForPopulationIndicatorResultRequest request) {
+ public MapResult execute(GetSpeciesForPopulationIndicatorResultRequest request) {
- Set<String> speciesList = repository.getPopulationIndicatorSpecies();
- Map<String, String> map = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+ Map<String, String> map = getPopulationSpeciesMap();
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,15 +22,12 @@
* #L%
*/
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import com.google.common.base.Predicate;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
-import java.util.Iterator;
import java.util.Map;
-import java.util.Set;
/**
* Created on 3/11/14.
@@ -38,52 +35,28 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetSpeciesListForCommunityIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetSpeciesListForCommunityIndicatorResultRequest> {
+public class GetSpeciesListForCommunityIndicatorResultCommand extends AbstractEchoBaseCommand<GetSpeciesListForCommunityIndicatorResultRequest> {
@Override
- public Class<GetSpeciesListForCommunityIndicatorResultRequest> getRequestType() {
- return GetSpeciesListForCommunityIndicatorResultRequest.class;
+ public boolean accept(GetSpeciesListForCommunityIndicatorResultRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate =
+ EchoBasePredicates.communityIndicatorPredicate(request.getIndicator());
+ result = repository.matchCommunity(predicate);
+ }
+ return result;
}
@Override
- public boolean accept(EchoBaseResultRepository repository,
- GetSpeciesListForCommunityIndicatorResultRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchIndicator(repository, request);
- }
+ public MapResult execute(GetSpeciesListForCommunityIndicatorResultRequest request) {
- @Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetSpeciesListForCommunityIndicatorResultRequest request) {
+ Map<String, String> map = getCommunitySpeciesMap();
- Set<String> speciesList = repository.getCommunityIndicatorSpecies(request.getIndicator());
- Map<String, String> map = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
-
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchIndicator(EchoBaseResultRepository repository,
- GetSpeciesListForCommunityIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
-
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorIndicator(tuple, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,84 +0,0 @@
-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.Sets;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
-import fr.ifremer.coser.result.request.GetSpeciesListForExtractRawDataAndResultsRequest;
-import fr.ifremer.coser.util.DataType;
-
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetSpeciesListForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetSpeciesListForExtractRawDataAndResultsRequest> {
-
- @Override
- public Class<GetSpeciesListForExtractRawDataAndResultsRequest> getRequestType() {
- return GetSpeciesListForExtractRawDataAndResultsRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
- return matchExtractTypeSet(request) && matchZoneList(repository, request);
- }
-
- @Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
-
- Set<String> speciesList = Sets.newHashSet();
- // get all species for population indicators
- speciesList.addAll(repository.getPopulationIndicatorSpecies());
- // get all species for community indicators
- speciesList.addAll(repository.getCommunityIndicatorSpecies());
-
- Map<String, String> map = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
-
- MapResult result = new MapResult(repository.getId(), map);
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(GetSpeciesListForExtractRawDataAndResultsRequest request) {
- //TODO Should deal also with raw-data type
- return !request.getExtractTypeList().contains(DataType.SOURCE);
- }
-
- protected boolean matchZoneList(EchoBaseResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
- return request.getZoneList().contains(repository.getZone());
- }
-
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,10 +23,8 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.List;
import java.util.Map;
@@ -37,27 +35,20 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForCommunityIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForCommunityIndicatorResultRequest> {
+public class GetZonesForCommunityIndicatorResultCommand extends AbstractEchoBaseCommand<GetZonesForCommunityIndicatorResultRequest> {
@Override
- public Class<GetZonesForCommunityIndicatorResultRequest> getRequestType() {
- return GetZonesForCommunityIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetZonesForCommunityIndicatorResultRequest request) {
+ public boolean accept(GetZonesForCommunityIndicatorResultRequest request) {
return repository.matchFacade(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetZonesForCommunityIndicatorResultRequest request) {
+ public MapResult execute(GetZonesForCommunityIndicatorResultRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,10 +23,8 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.List;
import java.util.Map;
@@ -37,28 +35,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForExtractRawDataAndResultsRequest> {
+public class GetZonesForExtractRawDataAndResultsCommand extends AbstractEchoBaseCommand<GetZonesForExtractRawDataAndResultsRequest> {
@Override
- public Class<GetZonesForExtractRawDataAndResultsRequest> getRequestType() {
- return GetZonesForExtractRawDataAndResultsRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetZonesForExtractRawDataAndResultsRequest request) {
+ public boolean accept(GetZonesForExtractRawDataAndResultsRequest request) {
return true;
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetZonesForExtractRawDataAndResultsRequest r) {
+ public MapResult execute(GetZonesForExtractRawDataAndResultsRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(null);
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,10 +23,8 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.List;
import java.util.Map;
@@ -37,27 +35,20 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForExtractRawDataCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForExtractRawDataRequest> {
+public class GetZonesForExtractRawDataCommand extends AbstractEchoBaseCommand<GetZonesForExtractRawDataRequest> {
@Override
- public Class<GetZonesForExtractRawDataRequest> getRequestType() {
- return GetZonesForExtractRawDataRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetZonesForExtractRawDataRequest request) {
+ public boolean accept(GetZonesForExtractRawDataRequest request) {
return repository.matchFacade(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetZonesForExtractRawDataRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ public MapResult execute(GetZonesForExtractRawDataRequest request) {
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,10 +23,8 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.List;
import java.util.Map;
@@ -37,28 +35,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForMapResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForMapResultRequest> {
+public class GetZonesForMapResultCommand extends AbstractEchoBaseCommand<GetZonesForMapResultRequest> {
@Override
- public Class<GetZonesForMapResultRequest> getRequestType() {
- return GetZonesForMapResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetZonesForMapResultRequest request) {
+ public boolean accept(GetZonesForMapResultRequest request) {
return repository.matchFacade(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetZonesForMapResultRequest request) {
+ public MapResult execute(GetZonesForMapResultRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,10 +23,8 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.List;
import java.util.Map;
@@ -37,27 +35,20 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForPopulationIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForPopulationIndicatorResultRequest> {
+public class GetZonesForPopulationIndicatorResultCommand extends AbstractEchoBaseCommand<GetZonesForPopulationIndicatorResultRequest> {
@Override
- public Class<GetZonesForPopulationIndicatorResultRequest> getRequestType() {
- return GetZonesForPopulationIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetZonesForPopulationIndicatorResultRequest request) {
+ public boolean accept(GetZonesForPopulationIndicatorResultRequest request) {
return repository.matchFacade(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetZonesForPopulationIndicatorResultRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ public MapResult execute(GetZonesForPopulationIndicatorResultRequest request) {
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,28 @@
+/**
+ * Implementations of {@link fr.ifremer.coser.result.CoserCommand} for echobase result repository.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%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%
+ */
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/package-info.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/echobase/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/package-info.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,5 +1,5 @@
/**
- * Implementation for EchoBase results.
+ * Implementation for EchoBase result repository.
*
* @since 1.5
*/
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,175 @@
+package fr.ifremer.coser.result.repository.legacy;
+
+/*
+ * #%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.Predicate;
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+/**
+ * Created on 3/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class LegacyPredicates {
+
+ protected LegacyPredicates() {
+ // avoid instances
+ }
+
+ public static Predicate<String[]> communitySpeciesListPredicate(String species) {
+ return new CommunitySpeciesListPredicate(Lists.newArrayList(species));
+ }
+
+ public static Predicate<String[]> communityIndicatorPredicate(String indicator) {
+ return new CommunityIndicatorPredicate(Lists.newArrayList(indicator));
+ }
+
+ public static Predicate<String[]> communityIndicatorPredicate(List<String> indicator) {
+ return new CommunityIndicatorPredicate(indicator);
+ }
+
+ public static Predicate<String[]> communitySpeciesPredicate(List<String> species) {
+ return new CommunitySpeciesPredicate(Lists.newArrayList(species));
+ }
+
+ public static Predicate<String[]> populationSpeciesPredicate(String species) {
+ return new PopulationSpeciesPredicate(Lists.newArrayList(species));
+ }
+
+ public static Predicate<String[]> populationSpeciesPredicate(List<String> species) {
+ return new PopulationSpeciesPredicate(species);
+ }
+
+ public static Predicate<String[]> populationIndicatorPredicate(String indicator) {
+ return new PopulationIndicatorPredicate(Lists.newArrayList(indicator));
+ }
+
+ public static Predicate<String[]> populationIndicatorPredicate(List<String> indicator) {
+ return new PopulationIndicatorPredicate(indicator);
+ }
+
+ public static Predicate<String[]> speciesListPredicate(String speciesList) {
+ return new SpeciesListPredicate(speciesList);
+ }
+
+ protected static class SpeciesListPredicate implements Predicate<String[]> {
+
+ protected final String speciesListLetter;
+
+ SpeciesListPredicate(String speciesList) {
+ this.speciesListLetter = String.valueOf(speciesList.charAt(0));
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String speciesListCode = input[4];
+ boolean result = speciesListLetter.equals(speciesListCode);
+ return result;
+ }
+ }
+
+ protected static class CommunitySpeciesListPredicate implements Predicate<String[]> {
+
+ private final List<String> speciesList;
+
+ CommunitySpeciesListPredicate(List<String> speciesList) {
+ this.speciesList = speciesList;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ // here we match a *speciesList*
+ String speciesListCode = input[2];
+ boolean result = speciesList.contains(speciesListCode);
+ return result;
+ }
+ }
+
+ protected static class CommunitySpeciesPredicate implements Predicate<String[]> {
+
+ private final List<String> species;
+
+ CommunitySpeciesPredicate(List<String> species) {
+ this.species = species;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ // here we match a *species*
+ String speciesCode = input[3];
+ boolean result = species.contains(speciesCode);
+ return result;
+ }
+ }
+
+ protected static class CommunityIndicatorPredicate implements Predicate<String[]> {
+
+ private final List<String> indicator;
+
+ CommunityIndicatorPredicate(List<String> indicator) {
+ this.indicator = indicator;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String indicatorCode = input[1];
+ boolean result = indicator.contains(indicatorCode);
+ return result;
+ }
+ }
+
+ protected static class PopulationSpeciesPredicate implements Predicate<String[]> {
+
+ private final List<String> species;
+
+ PopulationSpeciesPredicate(List<String> species) {
+ this.species = species;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String speciesCode = input[3];
+ boolean result = species.contains(speciesCode);
+ return result;
+ }
+ }
+
+ protected static class PopulationIndicatorPredicate implements Predicate<String[]> {
+
+ private final List<String> indicator;
+
+ PopulationIndicatorPredicate(List<String> indicator) {
+ this.indicator = indicator;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String indicatorCode = input[1];
+ boolean result = indicator.contains(indicatorCode);
+ return result;
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.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/LegacyResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,37 +24,31 @@
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserBusinessConfig;
-import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.CoserConstants;
-import fr.ifremer.coser.CoserServiceContext;
-import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.bean.EchoBaseProject;
-import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.RSufiResultPath;
import fr.ifremer.coser.bean.SpeciesListMap;
import fr.ifremer.coser.bean.SpeciesMap;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.Reports;
import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.request.CoserRequestExtractTypeListAware;
import fr.ifremer.coser.result.request.CoserRequestFacadeAware;
+import fr.ifremer.coser.result.request.CoserRequestRepositoryResultTypeAware;
+import fr.ifremer.coser.result.request.CoserRequestRepositoryTypeAware;
import fr.ifremer.coser.result.request.CoserRequestZoneAware;
-import fr.ifremer.coser.services.ProjectService;
+import fr.ifremer.coser.result.request.CoserRequestZoneListAware;
import fr.ifremer.coser.storage.DataStorage;
import fr.ifremer.coser.storage.DataStorages;
+import fr.ifremer.coser.util.DataType;
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 java.io.File;
import java.io.FilenameFilter;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -105,11 +99,6 @@
protected final FilenameFilter mapSpeciesFilenameFilter;
/**
- * Service context.
- */
- protected final CoserServiceContext serviceContext;
-
- /**
* Survey name (used to get maps).
*/
protected final String surveyName;
@@ -125,22 +114,16 @@
protected SpeciesListMap speciesListMap;
/**
- * Report helper.
+ * Unique id of the result
*/
- protected final Reports reports;
+ protected final String id;
- //FIXME Remove this
- protected final ProjectService projectService;
-
- public LegacyResultRepository(CoserServiceContext serviceContext,
- File basedir,
+ public LegacyResultRepository(File basedir,
RSufiResultPath path,
String surveyName) {
- Preconditions.checkNotNull(serviceContext);
Preconditions.checkNotNull(basedir);
Preconditions.checkNotNull(path);
Preconditions.checkNotNull(surveyName);
- this.serviceContext = serviceContext;
this.basedir = basedir;
this.surveyName = surveyName;
this.resultDirectory = FileUtils.getFile(
@@ -151,15 +134,18 @@
path.getRsufiResult().getName());
this.mapsDirectory = new File(resultDirectory, CoserConstants.STORAGE_MAPS_DIRECTORY);
this.path = path;
- this.reports = new Reports();
this.mapFileToSpeciesCode = EchoBaseProject.newMapFileToSpeciesCode(surveyName);
this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName);
this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName);
- this.projectService = new ProjectService(serviceContext.getConfig());
+ this.id = String.format("%s::%s::%s",
+ LegacyResultRepositoryType.ID,
+ resultDirectory,
+ path.getRsufiResult().isMapsResult() ? "Map" : "Indicator");
+
if (log.isInfoEnabled()) {
- log.info("New result repository: " + getId());
+ log.info("New result repository: " + id);
}
}
@@ -169,11 +155,7 @@
@Override
public String getId() {
- return String.format("%s::%s::%s",
- LegacyResultRepositoryType.ID,
- resultDirectory,
- path.getRsufiResult().isMapsResult() ? "Map" : "Indicator"
- );
+ return id;
}
@Override
@@ -181,80 +163,60 @@
return LegacyResultRepositoryType.INSTANCE;
}
- public File getResultDirectory() {
- return resultDirectory;
- }
-
- public RSufiResultPath getPath() {
- return path;
- }
-
+ @Override
public String getSurveyName() {
return surveyName;
}
- public Reports getReports() {
- return reports;
- }
-
+ @Override
public File getBasedir() {
return basedir;
}
+ @Override
public String getProjectName() {
return path.getProject().getName();
}
- public String getSelectionName() {
- return path.getSelection().getName();
- }
-
+ @Override
public String getZone() {
return path.getRsufiResult().getZone();
}
- public String getResultName() {
- return path.getRsufiResult().getName();
- }
-
+ @Override
public boolean isMapsResult() {
return path.getRsufiResult().isMapsResult();
}
+ @Override
public boolean isIndicatorsResult() {
return path.getRsufiResult().isIndicatorsResult();
}
+ @Override
public boolean isPubliableResult() {
return path.getRsufiResult().isPubliableResult();
}
+ @Override
public boolean isDataResult() {
return path.getRsufiResult().isDataAllowed();
}
- //FIXME Remove this
- public ProjectService getProjectService() {
- return projectService;
+ public File getResultDirectory() {
+ return resultDirectory;
}
- public void loadSelectionData() {
- try {
- // be sure that data are available for this project
- // or it will fail
+ public RSufiResultPath getPath() {
+ return path;
+ }
- getProjectService().loadSelectionData(getBasedir().getParentFile(), path.getProject(), path.getSelection());
- } catch (CoserBusinessException e) {
- throw new CoserTechnicalException("Could not load project selection", e);
- }
+ public String getSelectionName() {
+ return path.getSelection().getName();
}
- public File extractRSUfiData(File zoneDirectory) {
- try {
- return getProjectService().extractRSUfiData(path.getProject(), path.getSelection(), zoneDirectory, true);
- } catch (CoserBusinessException e) {
- throw new CoserTechnicalException("Could not extract raw data", e);
- }
+ public String getResultName() {
+ return path.getRsufiResult().getName();
}
// --------------------------------------------------------------------- //
@@ -262,51 +224,72 @@
// --------------------------------------------------------------------- //
public boolean matchFacade(CoserRequestFacadeAware request) {
+ if (log.isTraceEnabled()) {
+ log.trace("No usage of facade in request: " + request);
+ }
return true;
}
public boolean matchZone(CoserRequestZoneAware request) {
- return path.getRsufiResult().getZone().equals(request.getZone());
+ return getZone().equals(request.getZone());
}
- public boolean matchPopulationSpecies(String[] tuple, String species) {
- String speciesCode = tuple[3];
- boolean result = species.equals(speciesCode);
+ public boolean matchZone(CoserRequestZoneListAware request) {
+ List<String> zoneList = request.getZoneList();
+ boolean result = zoneList.contains(getZone());
return result;
}
- public boolean matchPopulationSpeciesAndIndicator(String[] tuple, String species, String indicator) {
- String indicatorCode = tuple[1];
- boolean result = matchPopulationSpecies(tuple, species) && indicator.equals(indicatorCode);
+ public boolean matchRepositoryType(CoserRequestRepositoryTypeAware request) {
+ boolean result = request.getRepositoryType().equals(LegacyResultRepositoryType.ID);
return result;
}
- public boolean matchCommunityIndicator(String[] tuple, String indicator) {
- String indicatorCode = tuple[1];
- boolean result = indicator.equals(indicatorCode);
+ public boolean matchResultType(CoserRequestRepositoryResultTypeAware request) {
+ boolean result;
+ switch (request.getResultType()) {
+ case MAP:
+ result = isMapsResult();
+ break;
+ case INDICATOR:
+ result = isIndicatorsResult();
+ break;
+ default:
+ result = false;
+ break;
+ }
return result;
}
- public boolean matchCommunityIndicatorAndSpeciesList(String[] tuple, String indicator, String speciesList) {
- String indicatorCode = tuple[1];
- String speciesListCode = tuple[2];
- boolean result = indicator.equals(indicatorCode) && speciesList.equals(speciesListCode);
+ public boolean matchExtractTypeList(CoserRequestExtractTypeListAware request) {
+ boolean result = false;
+ if (isMapsResult()) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
+ } else if (isIndicatorsResult()) {
+ result = request.getExtractTypeList().contains(DataType.POPULATION) ||
+ request.getExtractTypeList().contains(DataType.COMMUNITY);
+ }
+ if (isDataResult()) {
+ result |= request.getExtractTypeList().contains(DataType.SOURCE);
+ }
return result;
}
- public boolean matchIndicatorList(String[] tuple, List<String> indicatorList) {
- String indicatorCode = tuple[1];
- boolean result = indicatorList.contains(indicatorCode);
+ public boolean matchCommunity(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = getCommunityIndicatorStorage();
+ boolean result = DataStorages.match(storage, predicate, true);
+
return result;
}
- public boolean matchIndicatorListAndSpeciesList(String[] tuple,
- List<String> indicatorList,
- List<String> speciesList) {
- String indicatorCode = tuple[1];
- String speciesCode = tuple[3];
- boolean result = indicatorList.contains(indicatorCode) &&
- speciesList.contains(speciesCode);
+ public boolean matchPopulation(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = getPopulationIndicatorStorage();
+ boolean result = DataStorages.match(storage, predicate, true);
+
return result;
}
@@ -320,107 +303,18 @@
return file;
}
- // --------------------------------------------------------------------- //
- // --- Get species lists ----------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- public Map<String, String> getPopulationIndicatorSpecies() {
- Map<String, String> result = Maps.newHashMap();
-
- SpeciesMap speciesNames = getSpeciesMap();
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String speciesCode = tuple[3];
-
- String speciesName = speciesNames.getSpeciesName(speciesCode);
-
- if (StringUtils.isNotEmpty(speciesName)) {
- result.put(speciesCode, speciesName);
- }
- result.put(speciesCode, speciesName);
+ public Map<String, String> getMapSpeciesMap() {
+ Set<String> speciesList = Sets.newHashSet();
+ File[] files = mapsDirectory.listFiles(mapSpeciesFilenameFilter);
+ if (files != null) {
+ List<String> transform = Lists.transform(Lists.newArrayList(files), mapFileToSpeciesCode);
+ speciesList.addAll(transform);
}
+ Map<String, String> result = getSpeciesMap().getSpeciesSubMap(speciesList);
return result;
}
- public Map<String, String> getCommunityIndicatorSpecies() {
- Map<String, String> result = Maps.newHashMap();
-
- SpeciesMap speciesNames = getSpeciesMap();
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String speciesCode = tuple[3];
-
- String speciesName = speciesNames.getSpeciesName(speciesCode);
-
- if (StringUtils.isNotEmpty(speciesName)) {
- result.put(speciesCode, speciesName);
- }
- result.put(speciesCode, speciesName);
- }
- return result;
- }
-
- public Map<String, String> getCommunityIndicatorSpecies(Locale locale, String indicator) {
-
- // linked hash map (doit respecter l'ordre d'insertion)
- Map<String, String> result = new LinkedHashMap<String, String>();
-
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
-
- if (matchCommunityIndicator(tuple, indicator)) {
- String list = tuple[2];
-
- String translation = getSpeciesListMap().getSpeciesListName(locale, list);
- result.put(list, translation);
- }
- }
- return result;
- }
-
// --------------------------------------------------------------------- //
- // --- Get indicator lists --------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- public Set<String> getCommunityIndicators() {
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String indicatorCode = tuple[1];
- result.add(indicatorCode);
- }
- return result;
- }
-
- public Set<String> getPopulationIndicators() {
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String indicatorCode = tuple[1];
- result.add(indicatorCode);
- }
- return result;
- }
-
- public Set<String> getPopulationIndicators(String species) {
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchPopulationSpecies(tuple, species)) {
- String indicatorCode = tuple[1];
- result.add(indicatorCode);
- }
- }
- return result;
- }
-
- // --------------------------------------------------------------------- //
// --- Get definition maps --------------------------------------------- //
// --------------------------------------------------------------------- //
@@ -441,43 +335,21 @@
return speciesMap;
}
- public IndicatorMap getIndicatorsMap() {
- return serviceContext.getIndicatorsMap();
- }
-
- public ZoneMap getZonesMap() {
- return serviceContext.getZonesMap();
- }
-
// --------------------------------------------------------------------- //
- // --- storage util methods -------------------------------------------- //
+ // --- storage methods ------------------------------------------------- //
// --------------------------------------------------------------------- //
- public Iterator<String[]> loadPopulationIndicatorStorage(boolean skipFirstLine) {
+ public DataStorage getPopulationIndicatorStorage() {
File file = new File(resultDirectory, path.getRsufiResult().getEstPopIndName());
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
- DataStorage dataStorage = DataStorages.load(file, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
- Iterator<String[]> iterator = dataStorage.iterator(skipFirstLine);
- return iterator;
+ DataStorage result = DataStorages.load(file, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+ return result;
}
- public Iterator<String[]> loadCommunityIndicatorStorage(boolean skipFirstLine) {
+ public DataStorage getCommunityIndicatorStorage() {
File file = new File(resultDirectory, path.getRsufiResult().getEstComIndName());
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
- DataStorage dataStorage = DataStorages.load(file, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
- Iterator<String[]> iterator = dataStorage.iterator(skipFirstLine);
- return iterator;
+ DataStorage result = DataStorages.load(file, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+ return result;
}
-
-// protected <R extends CoserRequest> ResultRepositoryCommand<R> getProducer(R request) {
-// Preconditions.checkNotNull(request);
-// String requestTypeName = request.getClass().getName();
-// ResultRepositoryCommand<?> resultRepositoryCommand = resultProducers.get(requestTypeName);
-// Preconditions.checkNotNull(resultRepositoryCommand);
-// return (ResultRepositoryCommand<R>) resultRepositoryCommand;
-// }
-
- public CoserBusinessConfig getConfig() {
- return serviceContext.getConfig();
- }
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,134 +0,0 @@
-package fr.ifremer.coser.result.repository.legacy;
-
-/*
- * #%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 com.google.common.collect.Maps;
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
-import fr.ifremer.coser.result.repository.legacy.command.DeleteResultsCommand;
-import fr.ifremer.coser.result.repository.legacy.command.ExtractRawDataAndResultsCommand;
-import fr.ifremer.coser.result.repository.legacy.command.ExtractRawDataCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetAllResultsCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForExtractRawDataAndResultsCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetMapResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForMapResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesListForCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesListForExtractRawDataAndResultsCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetZonesForCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetZonesForExtractRawDataCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetZonesForMapResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetZonesForPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetZonesListForExtractRawDataAndResultsCommand;
-
-import java.util.Map;
-
-/**
- * Created on 3/12/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class LegacyResultRepositoryCommandEngine implements ResultRepositoryCommandEngine {
-
- protected final LegacyResultRepository resultRepository;
-
- protected final Map<String, ResultRepositoryCommand<LegacyResultRepository, ?>> commands;
-
- public LegacyResultRepositoryCommandEngine(LegacyResultRepository resultRepository) {
- this.resultRepository = resultRepository;
- this.commands = Maps.newHashMap();
-
- // get map result
- loadCommand(new GetZonesForMapResultCommand());
- loadCommand(new GetSpeciesForMapResultCommand());
- loadCommand(new GetMapResultCommand());
-
- // get community indicator result
- loadCommand(new GetZonesForCommunityIndicatorResultCommand());
- loadCommand(new GetIndicatorsForCommunityIndicatorResultCommand());
- loadCommand(new GetSpeciesListForCommunityIndicatorResultCommand());
- loadCommand(new GetCommunityIndicatorResultCommand());
-
- // get population indicator result
- loadCommand(new GetZonesForPopulationIndicatorResultCommand());
- loadCommand(new GetSpeciesForPopulationIndicatorResultCommand());
- loadCommand(new GetIndicatorsForPopulationIndicatorResultCommand());
- loadCommand(new GetPopulationIndicatorResultCommand());
-
- // get all results
- loadCommand(new GetAllResultsCommand());
-
- // extract raw data
- loadCommand(new GetZonesForExtractRawDataCommand());
- loadCommand(new ExtractRawDataCommand());
-
- // extract raw data and results
- loadCommand(new GetZonesListForExtractRawDataAndResultsCommand());
- loadCommand(new GetSpeciesListForExtractRawDataAndResultsCommand());
- loadCommand(new GetIndicatorsForExtractRawDataAndResultsCommand());
- loadCommand(new ExtractRawDataAndResultsCommand());
-
- // delete results
- loadCommand(new DeleteResultsCommand());
- }
-
- @Override
- public LegacyResultRepository getResultRepository() {
- return resultRepository;
- }
-
- @Override
- public <R extends CoserRequest> boolean acceptRequest(R request) {
- ResultRepositoryCommand<LegacyResultRepository, R> command = getCommand(request);
- boolean result = command.accept(resultRepository, request);
- return result;
- }
-
- @Override
- public <R extends CoserRequest> CoserResult executeRequest(R request) {
- ResultRepositoryCommand<LegacyResultRepository, R> command = getCommand(request);
- CoserResult result = command.execute(resultRepository, request);
- return result;
- }
-
- protected <R extends CoserRequest> ResultRepositoryCommand<LegacyResultRepository, R> getCommand(R request) {
- Preconditions.checkNotNull(request);
- String requestTypeName = request.getClass().getName();
- ResultRepositoryCommand<LegacyResultRepository, ?> resultRepositoryCommand = commands.get(requestTypeName);
- Preconditions.checkNotNull(resultRepositoryCommand);
- return (ResultRepositoryCommand<LegacyResultRepository, R>) resultRepositoryCommand;
- }
-
- protected void loadCommand(ResultRepositoryCommand<LegacyResultRepository, ?> command) {
- String name = command.getRequestType().getName();
- commands.put(name, command);
- }
-}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,15 +24,14 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Sets;
+import fr.ifremer.coser.CoserBusinessConfig;
import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.CoserConstants;
-import fr.ifremer.coser.CoserServiceContext;
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.ResultRepositoryInitializationException;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
import fr.ifremer.coser.services.ProjectService;
import org.apache.commons.logging.Log;
@@ -57,20 +56,32 @@
*/
protected final File basedir;
- public LegacyResultRepositoryProvider(File basedir) {
+ /**
+ * //FIXME Should remove this
+ * Application config (used to instanciate some service).
+ */
+ protected final CoserBusinessConfig config;
+
+ public LegacyResultRepositoryProvider(CoserBusinessConfig config, File basedir) {
+ this.config = config;
Preconditions.checkNotNull(basedir);
this.basedir = basedir;
}
@Override
- public Set<LegacyResultRepository> loadRepositories(CoserServiceContext serviceContext) {
+ public LegacyResultRepositoryType getRepositoryType() {
+ return LegacyResultRepositoryType.INSTANCE;
+ }
+ @Override
+ public Set<LegacyResultRepository> loadRepositories() {
+
if (log.isInfoEnabled()) {
log.info(String.format("Scan for projects from basedir: %s", basedir));
}
Set<LegacyResultRepository> result;
try {
- result = findAllProjectWithResult(serviceContext);
+ result = findAllProjectWithResult();
} catch (CoserBusinessException e) {
throw new ResultRepositoryInitializationException(this, "Could not find projects", e);
}
@@ -81,24 +92,18 @@
return result;
}
- @Override
- public ResultRepositoryCommandEngine newEngine(LegacyResultRepository repository) {
- return new LegacyResultRepositoryCommandEngine(repository);
- }
-
/**
* 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 serviceContext service context
- * @return results paths
+ * @return result paths
* @throws CoserBusinessException
*/
- protected Set<LegacyResultRepository> findAllProjectWithResult(CoserServiceContext serviceContext) throws CoserBusinessException {
+ protected Set<LegacyResultRepository> findAllProjectWithResult() throws CoserBusinessException {
- ProjectService projectService = new ProjectService(serviceContext.getConfig());
+ ProjectService projectService = new ProjectService(config);
Set<LegacyResultRepository> result = Sets.newHashSet();
// loop on projets
@@ -134,7 +139,7 @@
}
String surveyName = projectService.getProjectSurveyName(rSufiResult, r);
- LegacyResultRepository repository = new LegacyResultRepository(serviceContext, existingProject, path, surveyName);
+ LegacyResultRepository repository = new LegacyResultRepository(existingProject, path, surveyName);
if (log.isInfoEnabled()) {
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,10 +22,56 @@
* #L%
*/
+import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+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;
+import fr.ifremer.coser.result.repository.legacy.command.ExtractRawDataCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetAllResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetCommunityIndicatorResultDataCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetCommunityIndicatorResultGraphCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForPopulationIndicatorResultCommand;
+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.GetSpeciesForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForMapResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesListForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForExtractRawDataCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForMapResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.request.DeleteResultsRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import fr.ifremer.coser.result.request.GetAllResultsRequest;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultDataRequest;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
+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.GetSpeciesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
+import java.util.Map;
import java.util.Set;
import static org.nuiton.i18n.I18n.n;
@@ -65,4 +111,44 @@
return Sets.immutableEnumSet(ResultType.MAP, ResultType.INDICATOR);
}
+ @Override
+ public Map<Class<? extends fr.ifremer.coser.result.CoserRequest>, Class<? extends CoserCommand>> getCommandTypes() {
+ Map<Class<? extends CoserRequest>, Class<? extends CoserCommand>> result = Maps.newHashMap();
+
+ // get map result
+ result.put(GetZonesForMapResultRequest.class, GetZonesForMapResultCommand.class);
+ result.put(GetSpeciesForMapResultRequest.class, GetSpeciesForMapResultCommand.class);
+ result.put(GetMapResultRequest.class, GetMapResultCommand.class);
+
+ // get community indicator result
+ result.put(GetZonesForCommunityIndicatorResultRequest.class, GetZonesForCommunityIndicatorResultCommand.class);
+ result.put(GetIndicatorsForCommunityIndicatorResultRequest.class, GetIndicatorsForCommunityIndicatorResultCommand.class);
+ result.put(GetSpeciesListForCommunityIndicatorResultRequest.class, GetSpeciesListForCommunityIndicatorResultCommand.class);
+ result.put(GetCommunityIndicatorResultDataRequest.class, GetCommunityIndicatorResultDataCommand.class);
+ result.put(GetCommunityIndicatorResultGraphRequest.class, GetCommunityIndicatorResultGraphCommand.class);
+
+ // get population indicator result
+ result.put(GetZonesForPopulationIndicatorResultRequest.class, GetZonesForPopulationIndicatorResultCommand.class);
+ result.put(GetSpeciesForPopulationIndicatorResultRequest.class, GetSpeciesForPopulationIndicatorResultCommand.class);
+ result.put(GetIndicatorsForPopulationIndicatorResultRequest.class, GetIndicatorsForPopulationIndicatorResultCommand.class);
+ result.put(GetPopulationIndicatorResultDataRequest.class, GetPopulationIndicatorResultDataCommand.class);
+ result.put(GetPopulationIndicatorResultGraphRequest.class, GetPopulationIndicatorResultGraphCommand.class);
+
+ // get all results
+ result.put(GetAllResultsRequest.class, GetAllResultsCommand.class);
+
+ // extract raw data
+ result.put(GetZonesForExtractRawDataRequest.class, GetZonesForExtractRawDataCommand.class);
+ result.put(ExtractRawDataRequest.class, ExtractRawDataCommand.class);
+
+ // extract raw data and results
+ result.put(GetZonesForExtractRawDataAndResultsRequest.class, GetZonesForExtractRawDataAndResultsCommand.class);
+ result.put(GetSpeciesForExtractRawDataAndResultsRequest.class, GetSpeciesForExtractRawDataAndResultsCommand.class);
+ result.put(GetIndicatorsForExtractRawDataAndResultsRequest.class, GetIndicatorsForExtractRawDataAndResultsCommand.class);
+ result.put(ExtractRawDataAndResultsRequest.class, ExtractRawDataAndResultsCommand.class);
+
+ // delete results
+ result.put(DeleteResultsRequest.class, DeleteResultsCommand.class);
+ return result;
+ }
}
Added: 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 (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,713 @@
+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.base.Preconditions;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserBusinessException;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.RSufiResultPath;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.CoserCommand;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserRequestContext;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.ExtractRawDataAndResultsResult;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.result.result.VoidResult;
+import fr.ifremer.coser.result.util.Charts;
+import fr.ifremer.coser.result.util.Reports;
+import fr.ifremer.coser.services.ProjectService;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorageWalker;
+import fr.ifremer.coser.storage.DataStorages;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.jfree.chart.JFreeChart;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n.l;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public abstract class AbstractLegacyCommand<R extends CoserRequest> implements CoserCommand<LegacyResultRepository, R> {
+
+ protected CoserRequestContext context;
+
+ protected LegacyResultRepository repository;
+
+ @Override
+ public void setRequestContext(CoserRequestContext context) {
+ this.context = context;
+ }
+
+ @Override
+ public void setRepository(LegacyResultRepository repository) {
+ this.repository = repository;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Context shortcuts method ---------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ public IndicatorMap getIndicatorsMap() {
+ return context.getIndicatorMap();
+ }
+
+ public ZoneMap getZonesMap() {
+ return context.getZoneMap();
+ }
+
+ public Reports getReports() {
+ return context.getReports();
+ }
+
+ public Charts getCharts() {
+ return context.getCharts();
+ }
+
+ public CoserBusinessConfig getConfig() {
+ return context.getConfig();
+ }
+
+ public Locale getLocale() {
+ return context.getLocale();
+ }
+
+ public void loadSelectionData() {
+ try {
+ // be sure that data are available for this project
+ // or it will fail
+
+ ProjectService projectService = new ProjectService(context.getConfig());
+
+ RSufiResultPath path = repository.getPath();
+ projectService.loadSelectionData(repository.getBasedir().getParentFile(), path.getProject(), path.getSelection());
+ } catch (CoserBusinessException e) {
+ throw new CoserTechnicalException("Could not load project selection", e);
+ }
+ }
+
+ public File extractRSUfiData(File zoneDirectory) {
+ try {
+ FileUtils.forceMkdir(zoneDirectory);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not create directory: " + zoneDirectory, e);
+ }
+ try {
+ ProjectService projectService = new ProjectService(context.getConfig());
+
+ RSufiResultPath path = repository.getPath();
+ return projectService.extractRSUfiData(path.getProject(), path.getSelection(), zoneDirectory, true);
+ } catch (CoserBusinessException e) {
+ throw new CoserTechnicalException("Could not extract raw data", e);
+ }
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- To create results ----------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected MapResult newMapResult(Map<String, String> map) {
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ protected FileResult newFileResult(File file) {
+ FileResult result = new FileResult(repository.getId(), file);
+ return result;
+ }
+
+ protected VoidResult newVoidResult() {
+ VoidResult result = new VoidResult(repository.getId());
+ return result;
+ }
+
+ protected ExtractRawDataAndResultsResult newExtractRawDataAndResultsResult(MultiKeyMap<String, File> pdfMaps, Map<String, Pair<File, String>> pdfCharts) {
+ ExtractRawDataAndResultsResult result = new ExtractRawDataAndResultsResult(
+ repository.getId(), pdfMaps, pdfCharts);
+ return result;
+ }
+
+
+
+ // --------------------------------------------------------------------- //
+ // --- Get species lists ----------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Set<String> getPopulationSpecies() {
+ final Set<String> result = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String speciesCode = tuple[3];
+ result.add(speciesCode);
+ }
+ };
+ walkOnPopulation(walker);
+ return result;
+ }
+
+ protected Map<String, String> getPopulationSpeciesMap() {
+ final Set<String> speciesList = getPopulationSpecies();
+
+ Map<String, String> result = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+
+// SpeciesMap speciesNames = getSpeciesMap();
+// Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+// while (iterator.hasNext()) {
+// String[] tuple = iterator.next();
+// String speciesCode = tuple[3];
+//
+// String speciesName = speciesNames.getSpeciesName(speciesCode);
+//
+// if (StringUtils.isNotEmpty(speciesName)) {
+// result.put(speciesCode, speciesName);
+// }
+// result.put(speciesCode, speciesName);
+// }
+ return result;
+ }
+
+ protected Map<String, String> getCommunitySpeciesMap() {
+ final Set<String> speciesList = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String speciesCode = tuple[3];
+ speciesList.add(speciesCode);
+ }
+ };
+ walkOnCommunity(walker);
+ Map<String, String> result = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+
+// SpeciesMap speciesNames = getSpeciesMap();
+// Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
+// while (iterator.hasNext()) {
+// String[] tuple = iterator.next();
+// String speciesCode = tuple[3];
+//
+// String speciesName = speciesNames.getSpeciesName(speciesCode);
+//
+// if (StringUtils.isNotEmpty(speciesName)) {
+// result.put(speciesCode, speciesName);
+// }
+// result.put(speciesCode, speciesName);
+// }
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get indicator lists --------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Set<String> getCommunityIndicators() {
+ final Set<String> result = Sets.newHashSet();
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ };
+ walkOnCommunity(walker);
+// Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
+// final Set<String> result = Sets.newHashSet();
+// while (iterator.hasNext()) {
+// String[] tuple = iterator.next();
+// String indicatorCode = tuple[1];
+// result.add(indicatorCode);
+// }
+ return result;
+ }
+
+ protected Set<String> getPopulationIndicators() {
+ final Set<String> result = Sets.newHashSet();
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ };
+ walkOnPopulation(walker);
+// Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+// Set<String> result = Sets.newHashSet();
+// while (iterator.hasNext()) {
+// String[] tuple = iterator.next();
+// String indicatorCode = tuple[1];
+// result.add(indicatorCode);
+// }
+ return result;
+ }
+
+ protected Set<String> getPopulationIndicators(String species) {
+ final Set<String> result = Sets.newHashSet();
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ };
+ walkOnPopulation(LegacyPredicates.populationSpeciesPredicate(species), walker);
+// Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+// Set<String> result = Sets.newHashSet();
+// while (iterator.hasNext()) {
+// String[] tuple = iterator.next();
+// if (matchPopulationSpecies(tuple, species)) {
+// String indicatorCode = tuple[1];
+// result.add(indicatorCode);
+// }
+// }
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Walk on indicators ---------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected void walkOnCommunity(DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+
+ DataStorage storage = repository.getCommunityIndicatorStorage();
+ DataStorages.walk(storage, walker);
+ }
+
+ protected void walkOnCommunity(Predicate<String[]> predicate, DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = repository.getCommunityIndicatorStorage();
+ DataStorages.walk(storage, predicate, walker);
+ }
+
+ protected void walkOnPopulation(DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+
+ DataStorage storage = repository.getPopulationIndicatorStorage();
+ DataStorages.walk(storage, walker);
+ }
+
+ protected void walkOnPopulation(Predicate<String[]> predicate, DataStorageWalker walker) {
+ Preconditions.checkNotNull(predicate);
+ Preconditions.checkNotNull(walker);
+
+ DataStorage storage = repository.getPopulationIndicatorStorage();
+ DataStorages.walk(storage, predicate, walker);
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Extract indicator data ------------------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ protected DataStorage extractCommunity(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ String headerList = l(getLocale(), "coser.business.rsufi.community.header");
+ String header[] = headerList.split("\\s*,\\s*");
+
+ DataStorage source = repository.getCommunityIndicatorStorage();
+ DataStorage result = DataStorages.sub(source, predicate, header);
+ return result;
+ }
+
+ protected DataStorage extractPopulation(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ String headerList = l(getLocale(), "coser.business.rsufi.population.header");
+ String header[] = headerList.split("\\s*,\\s*");
+
+ DataStorage source = repository.getPopulationIndicatorStorage();
+ DataStorage result = DataStorages.sub(source, predicate, header);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Generate indicator charts --------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected JFreeChart generateCommunityChart(String zone,
+ String indicator,
+ String speciesList) {
+
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.communityIndicatorPredicate(indicator),
+ LegacyPredicates.communitySpeciesListPredicate(speciesList));
+
+ Charts.ExtractGraphDataWalker walker = new Charts.ExtractGraphDataWalker() {
+
+ @Override
+ protected String getEstimationData(String... tuple) {
+ return tuple[5];
+ }
+
+ @Override
+ protected String getEcartData(String... tuple) {
+ return tuple[6];
+ }
+
+ @Override
+ protected String getYearData(String... tuple) {
+ return tuple[4];
+ }
+ };
+ walkOnCommunity(predicate, walker);
+
+ Locale locale = getLocale();
+
+ // get graph title
+ String zoneDisplayName = getZonesMap().getZoneFullName(zone);
+ String indicatorName = getIndicatorsMap().getIndicatorValue(locale, indicator);
+ String speciesListName = repository.getSpeciesListMap().getSpeciesListName(locale, speciesList);
+ String chartTitle = zoneDisplayName + " - " + indicatorName + " - " + speciesListName;
+
+ JFreeChart chart = getCharts().generateCommunityChart(locale,
+ walker,
+ getIndicatorsMap(),
+ indicator,
+ chartTitle);
+ return chart;
+ }
+
+ protected JFreeChart generatePopulationChart(String zone,
+ String species,
+ String indicator) {
+
+ // get data to put in graph
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.populationSpeciesPredicate(species),
+ LegacyPredicates.populationIndicatorPredicate(indicator));
+
+ Charts.ExtractGraphDataWalker walker = new Charts.ExtractGraphDataWalker() {
+
+ @Override
+ protected String getEstimationData(String... tuple) {
+ return tuple[6];
+ }
+
+ @Override
+ protected String getEcartData(String... tuple) {
+ return tuple[7];
+ }
+
+ @Override
+ protected String getYearData(String... tuple) {
+ return tuple[5];
+ }
+ };
+ walkOnPopulation(predicate, walker);
+
+ Locale locale = getLocale();
+
+ // get graph title
+ String zoneDisplayName = getZonesMap().getZoneFullName(zone);
+ String indicatorName = getIndicatorsMap().getIndicatorValue(locale, indicator);
+ String speciesName = repository.getSpeciesMap().getReportDisplayName(species);
+ String chartTitle = zoneDisplayName + " - " + indicatorName + " - " + speciesName;
+
+ JFreeChart chart = getCharts().generatePopulationChart(locale,
+ walker,
+ getIndicatorsMap(),
+ indicator,
+ chartTitle);
+ return chart;
+ }
+
+// protected JFreeChart generateCommunityChart(Locale locale,
+// String zone,
+// String indicator,
+// String speciesList) {
+//
+// Predicate<String[]> predicate = Predicates.and(
+// LegacyPredicates.communityIndicatorPredicate(indicator),
+// LegacyPredicates.communitySpeciesListPredicate(speciesList));
+//
+// CommunityExtractGraphDataWalker walker = new CommunityExtractGraphDataWalker();
+// walkOnCommunity(predicate, walker);
+//
+// // get graph title
+// String zoneDisplayName = getZoneMap().getZoneFullName(zone);
+// String indicatorName = getIndicatorMap().getIndicatorValue(locale, indicator);
+// String speciesListName = repository.getSpeciesListMap().getSpeciesListName(locale, speciesList);
+// String chartTitle = zoneDisplayName + " - " + indicatorName + " - " + speciesListName;
+//
+// int multiplicator = walker.getMultiplicator();
+// int minYear = walker.getMinYear();
+// int maxYear = walker.getMaxYear();
+// Map<Integer, Double[]> graphData = walker.getGraphData();
+//
+// // generate dataset with sorted data
+// DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+// for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+// Double[] entry = graphData.get(indexYear);
+// if (entry != null) {
+// Double estimation = entry[0] / multiplicator;
+// Double ecart = entry[1] / multiplicator;
+// statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+// } else {
+// statisticalDataset.add(null, null, "Serie1", indexYear);
+// }
+// }
+//
+// // configure chart
+// String yearAxis = Reports.getYearChartTitle(locale);
+// CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+// categoryAxis.setCategoryMargin(0);
+// categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+//
+// String unit = getIndicatorMap().getIndicatorUnit(indicator);
+// // label horizontaux
+// String legendY = indicatorName;
+// if (multiplicator != 1) {
+// // affiche par exemple : cm * 1000
+// legendY += " (" + unit + "*" + multiplicator + ")";
+// } else if (StringUtils.isNotEmpty(unit)) {
+// legendY += " (" + unit + ")";
+// }
+// ValueAxis valueAxis = new NumberAxis(legendY);
+// valueAxis.setUpperMargin(0.1);
+//
+// CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+//
+// CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+// plot.setOrientation(PlotOrientation.VERTICAL);
+// JFreeChart chart = new JFreeChart(chartTitle, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+//
+// // remove series legend
+// chart.removeLegend();
+// // white background
+// chart.setBackgroundPaint(Color.WHITE);
+//
+// return chart;
+// }
+
+// protected JFreeChart generatePopulationChart(Locale locale,
+// String zone,
+// String species,
+// String indicator) {
+//
+// // get data to put in graph
+// Predicate<String[]> predicate = Predicates.and(
+// LegacyPredicates.populationSpeciesPredicate(species),
+// LegacyPredicates.populationIndicatorPredicate(indicator));
+//
+// PopulationExtractGraphDataWalker walker = new PopulationExtractGraphDataWalker();
+// walkOnPopulation(predicate, walker);
+//
+// int multiplicator = walker.getMultiplicator();
+// int minYear = walker.getMinYear();
+// int maxYear = walker.getMaxYear();
+// Map<Integer, Double[]> graphData = walker.getGraphData();
+//
+// String zoneDisplayName = getZoneMap().getZoneFullName(zone);
+// String indicatorName = getIndicatorMap().getIndicatorValue(locale, indicator);
+//
+// // get graph title
+// String title = zoneDisplayName + " - " + indicatorName + " - " + repository.getSpeciesMap().getReportDisplayName(species);
+//
+// // generate dataset with sorted data
+// DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+// for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+// Double[] entry = graphData.get(indexYear);
+// if (entry != null) {
+// Double estimation = entry[0] / multiplicator;
+// Double ecart = entry[1] / multiplicator;
+// statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+// } else {
+// statisticalDataset.add(null, null, "Serie1", indexYear);
+// }
+// }
+//
+// // configure chart
+// //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
+// String yearAxis = Reports.getYearChartTitle(locale);
+// CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+// categoryAxis.setCategoryMargin(0);
+// categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+//
+// // label horizontaux
+// String unit = getIndicatorMap().getIndicatorUnit(indicator);
+// String legendY = indicatorName;
+// if (multiplicator != 1) {
+// // affiche par exemple : cm * 1000
+// legendY += " (" + unit + "*" + multiplicator + ")";
+// } else if (StringUtils.isNotEmpty(unit)) {
+// legendY += " (" + unit + ")";
+// }
+// ValueAxis valueAxis = new NumberAxis(legendY);
+// valueAxis.setUpperMargin(0.1);
+//
+// CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+//
+// CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+// plot.setOrientation(PlotOrientation.VERTICAL);
+// JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+//
+// // remove series legend
+// chart.removeLegend();
+// // white background
+// chart.setBackgroundPaint(Color.WHITE);
+//
+// return chart;
+// }
+//
+// protected static class CommunityExtractGraphDataWalker implements DataStorageWalker {
+//
+// int multiplicator = 1;
+//
+// int minYear = Integer.MAX_VALUE;
+//
+// int maxYear = Integer.MIN_VALUE;
+//
+// boolean indicatorFound = false;
+//
+// Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
+//
+// @Override
+// public void onRow(String... tuple) {
+//
+// indicatorFound = true;
+//
+// Double estimation = Double.parseDouble(tuple[5]);
+// Double ecart = Double.parseDouble(tuple[6]);
+// int year = Integer.parseInt(tuple[4]);
+//
+// if (year < minYear) {
+// minYear = year;
+// }
+// if (year > maxYear) {
+// maxYear = year;
+// }
+// graphData.put(year, new Double[]{estimation, ecart});
+//
+// // si les données sont énormes, on affiche les données
+// // / multiplicator et on le mentionne dans la légende
+// if (estimation > 1e9) {
+// multiplicator = 1000000;
+// }
+// if (estimation > 1e6 && multiplicator < 1000000) {
+// multiplicator = 1000;
+// }
+// }
+//
+// public int getMultiplicator() {
+// return multiplicator;
+// }
+//
+// public int getMinYear() {
+// return minYear;
+// }
+//
+// public int getMaxYear() {
+// return maxYear;
+// }
+//
+// public boolean isIndicatorFound() {
+// return indicatorFound;
+// }
+//
+// public Map<Integer, Double[]> getGraphData() {
+// return graphData;
+// }
+// }
+
+// protected static class PopulationExtractGraphDataWalker implements DataStorageWalker {
+//
+// int multiplicator = 1;
+//
+// int minYear = Integer.MAX_VALUE;
+//
+// int maxYear = Integer.MIN_VALUE;
+//
+// boolean indicatorFound = false;
+//
+// Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
+//
+// @Override
+// public void onRow(String... tuple) {
+//
+// indicatorFound = true;
+//
+// Double estimation = Double.parseDouble(tuple[6]);
+// Double ecart = Double.parseDouble(tuple[7]);
+// int year = Integer.parseInt(tuple[5]);
+//
+// if (year < minYear) {
+// minYear = year;
+// }
+// if (year > maxYear) {
+// maxYear = year;
+// }
+// graphData.put(year, new Double[]{estimation, ecart});
+//
+// // si les données sont énormes, on affiche les données
+// // / multiplicator et on le mentionne dans la légende
+// if (estimation > 1e9) {
+// multiplicator = 1000000;
+// }
+// if (estimation > 1e6 && multiplicator < 1000000) {
+// multiplicator = 1000;
+// }
+// }
+//
+// public int getMultiplicator() {
+// return multiplicator;
+// }
+//
+// public int getMinYear() {
+// return minYear;
+// }
+//
+// public int getMaxYear() {
+// return maxYear;
+// }
+//
+// public boolean isIndicatorFound() {
+// return indicatorFound;
+// }
+//
+// public Map<Integer, Double[]> getGraphData() {
+// return graphData;
+// }
+// }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.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/command/DeleteResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/DeleteResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/DeleteResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,11 +24,6 @@
import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.ResultType;
-import fr.ifremer.coser.result.VoidResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryType;
import fr.ifremer.coser.result.request.DeleteResultsRequest;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
@@ -36,7 +31,6 @@
import java.io.File;
import java.io.IOException;
-import java.util.List;
/**
* Created on 3/11/14.
@@ -44,42 +38,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class DeleteResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, DeleteResultsRequest> {
+public class DeleteResultsCommand extends AbstractLegacyCommand<DeleteResultsRequest> {
/** Logger. */
private static final Log log = LogFactory.getLog(DeleteResultsCommand.class);
-//
-// protected final LegacyResultRepository repository;
-//
-// protected final RSufiResult rsufiResult;
-//
-// public DeleteResultsCommand(LegacyResultRepository repository) {
-// this.repository = repository;
-// this.rsufiResult = repository.path.getRsufiResult();
-// }
-//
-// @Override
-// public LegacyResultRepository getRepository() {
-// return repository;
-// }
-
@Override
- public Class<DeleteResultsRequest> getRequestType() {
- return DeleteResultsRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository, DeleteResultsRequest request) {
- boolean result = matchRepositoryType(request) &&
- matchResultType(repository, request) &&
- matchPublish(repository) &&
- matchZone(repository, request);
+ public boolean accept(DeleteResultsRequest request) {
+ boolean result = repository.matchRepositoryType(request) &&
+ repository.matchResultType(request) &&
+ repository.isPubliableResult() &&
+ repository.matchZone(request);
return result;
}
@Override
- public CoserResult execute(LegacyResultRepository repository, DeleteResultsRequest request) {
+ public CoserResult execute(DeleteResultsRequest request) {
File basedir = repository.getBasedir();
if (log.isInfoEnabled()) {
log.info("Will delete project at: " + basedir);
@@ -89,45 +63,7 @@
} catch (IOException e) {
throw new CoserTechnicalException("Could not delete project at: " + basedir, e);
}
- return new VoidResult(repository.getId());
+ return newVoidResult();
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchRepositoryType(DeleteResultsRequest request) {
- boolean result = request.getResultRepositoryType().equals(LegacyResultRepositoryType.ID);
- return result;
- }
-
- protected boolean matchResultType(LegacyResultRepository repository, DeleteResultsRequest request) {
- boolean result;
- ResultType resultType = request.getResultType();
- switch (resultType) {
-
- case MAP:
- result = repository.isMapsResult();
- break;
- case INDICATOR:
- result = repository.isIndicatorsResult();
- break;
- default:
- result = false;
- break;
- }
- return result;
- }
-
- protected boolean matchPublish(LegacyResultRepository repository) {
- boolean result = repository.isPubliableResult();
- return result;
- }
-
- protected boolean matchZone(LegacyResultRepository repository, DeleteResultsRequest request) {
- List<String> zoneList = request.getZoneList();
- boolean result = zoneList.contains(repository.getZone());
- return result;
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,54 +22,30 @@
* #L%
*/
-import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.SpeciesMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.ExtractRawDataAndResultsResult;
import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorageWalker;
import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
import fr.ifremer.coser.util.DataType;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.collections4.keyvalue.MultiKey;
import org.apache.commons.collections4.map.MultiKeyMap;
-import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-import java.awt.Color;
import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.util.Collection;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
-import java.util.Set;
/**
* Created on 3/11/14.
@@ -77,122 +53,88 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class ExtractRawDataAndResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, ExtractRawDataAndResultsRequest> {
+public class ExtractRawDataAndResultsCommand extends AbstractLegacyCommand<ExtractRawDataAndResultsRequest> {
/** Logger. */
private static final Log log = LogFactory.getLog(ExtractRawDataAndResultsCommand.class);
@Override
- public Class<ExtractRawDataAndResultsRequest> getRequestType() {
- return ExtractRawDataAndResultsRequest.class;
- }
+ public boolean accept(ExtractRawDataAndResultsRequest request) {
+ boolean result = repository.matchExtractTypeList(request) &&
+ repository.matchZone(request);
+ if (result) {
- @Override
- public boolean accept(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- return matchExtractTypeSet(repository, request) &&
- matchZoneList(repository, request) &&
- (matchPopulationIndicatorListAndSpeciesList(repository, request) ||
- matchCommunityIndicatorListAndSpeciesList(repository, request));
- }
+ if (request.getExtractTypeList().contains(DataType.POPULATION)) {
- @Override
- public FileResult execute(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest r) {
+ // match population indicator?
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.populationIndicatorPredicate(request.getPopulationIndicatorList()),
+ LegacyPredicates.populationSpeciesPredicate(request.getSpeciesList()));
+ result = repository.matchPopulation(predicate);
+ }
- Locale locale = r.getLocale();
- List<String> zoneList = r.getZoneList();
- List<DataType> extractTypeList = r.getExtractTypeList();
- List<String> speciesList = r.getSpeciesList();
- List<String> communityIndicatorList = r.getCommunityIndicatorList();
- List<String> populationIndicatorList = r.getPopulationIndicatorList();
+ if (!result) {
- File resultZip = null;
- File tempDir = null;
- try {
- tempDir = FileUtil.createTempDirectory("coser-extract-", "-tmp");
+ if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
- File subDir = new File(tempDir, "Indicateurs_Ifremer");
- FileUtils.forceMkdir(subDir);
-
- // les sources se retrouve dans le zip a cote du pdf
- if (extractTypeList.contains(DataType.SOURCE)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting sources");
+ // match community indicator?
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.communityIndicatorPredicate(request.getCommunityIndicatorList()),
+ LegacyPredicates.communitySpeciesPredicate(request.getSpeciesList()));
+ result = repository.matchCommunity(predicate);
}
- File srcDir = new File(subDir, "sources");
- extractSource(repository, srcDir);
}
+ }
+ return result;
+ }
- // les cartes doivent se retrouver dans le pdf
- MultiKeyMap pdfMaps = null;
- if (extractTypeList.contains(DataType.MAP)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting maps");
- }
- SpeciesMap speciesMap = repository.getSpeciesMap();
- String zone = repository.getZone();
- for (String species : speciesList) {
- File mapFile = repository.getMapSpeciesFile(species);
- pdfMaps.put(zone, speciesMap.getSpeciesName(species), mapFile);
- }
- }
+ @Override
+ public ExtractRawDataAndResultsResult execute(ExtractRawDataAndResultsRequest request) {
- // les graphiques sont également dans le pdf
- MultiKeyMap pdfCharts = null;
- if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
- CollectionUtils.isNotEmpty(populationIndicatorList)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting charts");
- }
- pdfCharts = extractCharts(repository,
- speciesList,
- communityIndicatorList,
- populationIndicatorList,
- locale);
- }
+ List<DataType> extractTypeList = request.getExtractTypeList();
+ List<String> speciesList = request.getSpeciesList();
+ List<String> communityIndicatorList = request.getCommunityIndicatorList();
+ List<String> populationIndicatorList = request.getPopulationIndicatorList();
- Reports reports = repository.getReports();
+ File extractDirectory = request.getExtractDirectory();
- // generate pdf if necessary
- if (MapUtils.isNotEmpty(pdfMaps) || MapUtils.isNotEmpty(pdfCharts)) {
- if (log.isDebugEnabled()) {
- log.debug("Generated Extract PDF");
- }
- reports.generateExtractPDF(subDir,
- zoneList,
- pdfMaps,
- pdfCharts,
- repository.getZonesMap(),
- locale);
+ // les sources se retrouve dans le zip a cote du pdf
+ if (extractTypeList.contains(DataType.SOURCE)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Extracting sources");
}
+ File srcDir = new File(extractDirectory, "sources");
+ extractSource(srcDir);
+ }
- // fichier de décharge en pdf
+ // les cartes doivent se retrouver dans le pdf
+ MultiKeyMap<String, File> pdfMaps = null;
+ if (extractTypeList.contains(DataType.MAP)) {
if (log.isDebugEnabled()) {
- log.debug("Generated decharge PDF");
+ log.debug("Extracting maps");
}
- String filename = reports.getDechargeFilename(locale);
- File dechargePDF = new File(subDir, filename);
- reports.generateDechargePDF(dechargePDF, locale, null, null);
+ pdfMaps = new MultiKeyMap<String, File>();
+ SpeciesMap speciesMap = repository.getSpeciesMap();
+ String zone = repository.getZone();
+ for (String species : speciesList) {
+ File mapFile = repository.getMapSpeciesFile(species);
+ String speciesName = speciesMap.getSpeciesName(species);
+ pdfMaps.put(zone, speciesName, mapFile);
+ }
+ }
- // make zip
+ // les graphiques sont également dans le pdf
+ Map<String, Pair<File, String>> pdfCharts = null;
+ if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
+ CollectionUtils.isNotEmpty(populationIndicatorList)) {
if (log.isDebugEnabled()) {
- log.debug("Make final archive");
+ log.debug("Extracting charts");
}
- resultZip = File.createTempFile("coser-extract-", ".zip");
- resultZip.deleteOnExit();
- ZipUtil.compress(resultZip, subDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't create zip file", ex);
- } finally {
- // clean directory
- FileUtils.deleteQuietly(tempDir);
+ pdfCharts = extractCharts(speciesList,
+ communityIndicatorList,
+ populationIndicatorList);
}
-
- FileResult result = new FileResult(repository.getId(), resultZip);
+ ExtractRawDataAndResultsResult result = newExtractRawDataAndResultsResult(pdfMaps, pdfCharts);
return result;
}
@@ -201,553 +143,169 @@
*
* @param directory where to generate file
*/
- protected void extractSource(LegacyResultRepository repository, File directory) {
+ protected void extractSource(File directory) {
- repository.loadSelectionData();
+ loadSelectionData();
// il ne faut pas les fichiers de selection, mais leurs
// export rsufi (sans les lignes, et les quotes)
File zoneDirectory = new File(directory, repository.getZone());
- try {
- FileUtils.forceMkdir(zoneDirectory);
- } catch (IOException e) {
- throw new CoserTechnicalException("Could not create directory: " + zoneDirectory, e);
- }
-
- repository.extractRSUfiData(zoneDirectory);
+ extractRSUfiData(zoneDirectory);
}
/**
- * Retourne les indicateurs calculés avec leurs traductions scientifique
- * pour la zone et l'especes souhaitées.
- *
- * @param species especes (if {@code null} look for com indicators
- * @param comIndicators comIndicator
- * @param popIndicators popIndicators
- * @param locale locale
- * @return la liste des indicateurs (zone, speciesname, [graphfile, graphdata])
+ * @param species species to extract in population indicators
+ * @param communityIndicators community indicators to extract
+ * @param populationIndicators population indicators to extract
+ * @return charts files and their data with key: zone , indicator [- speciesName for population])
+ * and value: (graphFile, graphData)
*/
- protected MultiKeyMap extractCharts(LegacyResultRepository repository,
- Collection<String> species,
- Collection<String> comIndicators,
- Collection<String> popIndicators,
- Locale locale) {
+ protected Map<String, Pair<File, String>> extractCharts(List<String> species,
+ List<String> communityIndicators,
+ List<String> populationIndicators) {
- MultiKeyMap chartFileAndDatas = new MultiKeyMap();
-
String zone = repository.getZone();
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- if (CollectionUtils.isNotEmpty(comIndicators)) {
- Map<String, Pair<File, String>> chartFileAndDataCom = getRsufiResultComCharts(repository,
- comIndicators,
- zoneDisplayName,
- repository.getIndicatorsMap(),
- locale,
- 650,
- 430);
- // put in multimap as zone,speciesname, data
- for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataCom.entrySet()) {
- chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
- }
+ Map<String, Pair<File, String>> result = Maps.newLinkedHashMap();
+
+ if (CollectionUtils.isNotEmpty(communityIndicators)) {
+ result.putAll(extractCommunityResults(communityIndicators,
+ zone,
+ 650,
+ 430));
}
- if (CollectionUtils.isNotEmpty(popIndicators)) {
- Map<String, Pair<File, String>> chartFileAndDataPop = getRsufiResultPopCharts(repository,
- species,
- popIndicators,
- zoneDisplayName,
- repository.getIndicatorsMap(),
- locale,
- 650,
- 430);
- // put in multimap as zone,speciesname, data
- for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataPop.entrySet()) {
- chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
- }
+ if (CollectionUtils.isNotEmpty(populationIndicators)) {
+ result.putAll(extractPopulationResults(species,
+ populationIndicators,
+ zone,
+ 650,
+ 430));
}
- return chartFileAndDatas;
+ return result;
}
/**
- * Generate community graph for selected indicators.
- * Used by web ui extraction.
+ * Generate community graph and their data for selected indicators.
*
- * @param indicators indicators to extract
- * @param zoneDisplayName zone full name
- * @param indicatorMap indicator localized map
- * @param locale locale
- * @param width graph width
- * @param height graph height
+ * @param selectedIndicators indicators to extract
+ * @param zone zone
+ * @param width graph width
+ * @param height graph height
* @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
*/
- public Map<String, Pair<File, String>> getRsufiResultComCharts(LegacyResultRepository repository,
- Collection<String> indicators,
- String zoneDisplayName,
- IndicatorMap indicatorMap,
- Locale locale,
- int width, int height) {
+ public Map<String, Pair<File, String>> extractCommunityResults(List<String> selectedIndicators,
+ String zone,
+ int width,
+ int height) {
- Map<String, Pair<File, String>> result = Maps.newHashMap();
+ // Get exact list of indicators usable for this result
+ List<String> indicators = Lists.newArrayList(getCommunityIndicators());
+ indicators.retainAll(selectedIndicators);
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
-
- Map<String, Map<Integer, Double[]>> indicatorGraphData = new HashMap<String, Map<Integer, Double[]>>();
- Map<String, String> indicatorLists = new HashMap<String, String>();
- Map<String, DataStorage> indicatorStorages = new HashMap<String, DataStorage>();
-
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- Iterator<String[]> estComIndIterator = repository.loadCommunityIndicatorStorage(true);
- while (estComIndIterator.hasNext()) {
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- String[] tuple = estComIndIterator.next();
- String indicatorCode = tuple[1];
- String indicatorList = tuple[2];
-
- if (indicators.contains(indicatorCode)) {
-
- // si pas de list selectionnée, on prend la premiere
+ //FIXME Check if this is correct
+ // get for all indicators the first species list found (we only extract this one)
+ final Map<String, String> indicatorLists = new HashMap<String, String>();
+ walkOnCommunity(LegacyPredicates.communityIndicatorPredicate(indicators), new DataStorageWalker() {
+ @Override
+ public void onRow(String... row) {
+ String indicatorCode = row[1];
String localList = indicatorLists.get(indicatorCode);
+ //FIXME Should only test if indicatorCode is present ?
if (StringUtils.isBlank(localList)) {
- localList = indicatorList;
- indicatorLists.put(indicatorCode, localList);
+ String indicatorList = row[2];
+ indicatorLists.put(indicatorCode, indicatorList);
}
-
- if (indicatorList.equals(localList)) {
- Double estimation = Double.parseDouble(tuple[5]);
- Double ecart = Double.parseDouble(tuple[6]);
- int year = Integer.parseInt(tuple[4]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- Map<Integer, Double[]> graphData = indicatorGraphData.get(indicatorCode);
- if (graphData == null) {
- graphData = new HashMap<Integer, Double[]>();
- indicatorGraphData.put(indicatorCode, graphData);
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
-
- // for data part
- DataStorage subDataStorage = indicatorStorages.get(indicatorCode);
- if (subDataStorage == null) {
- subDataStorage = new MemoryDataStorage();
- if ("fr".equals(locale.getLanguage())) {
- subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Strate", "Année", "Estimation", "EcartType", "CV"});
- } else {
- subDataStorage.add(new String[]{"Survey", "Index", "List", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
- }
- indicatorStorages.put(indicatorCode, subDataStorage);
- }
- subDataStorage.add(tuple);
- }
}
- }
+ });
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- for (String indicator : indicatorGraphData.keySet()) {
- // get graph title
- String chartTitle = zoneDisplayName;
- String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
- String unit = indicatorMap.getIndicatorUnit(indicator);
- chartTitle += " - " + indicatorName;
+ Map<String, Pair<File, String>> result = Maps.newHashMap();
- // ajout de la traduction de la liste d'indicateur
- // les liste sont a1, T1, T2 ...
- String localList = indicatorLists.get(indicator);
- String speciesListName = repository.getSpeciesListMap().getSpeciesListName(locale, localList);
- chartTitle += " - " + speciesListName;
-// String listLetter = String.valueOf(localList.charAt(0));
-// Iterator<String[]> typeIterator = repository.getSpeciesListMap().iterator(true);
-// while (typeIterator.hasNext()) {
-// // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
-// String[] tuple = typeIterator.next();
-// if (tuple[4].equals(listLetter)) {
-// /// gestion du groupe "Tous"
-// // cas special, c'est la seule valeur du fichier
-// // code type espece qui a besoin d'une traduction
-// if (tuple[4].equalsIgnoreCase("T")) {
-// if ("fr".equals(locale.getLanguage())) {
-// chartTitle += " - " + "Tous Liste " + localList.charAt(1);
-// } else if ("es".equals(locale.getLanguage())) {
-// chartTitle += " - " + "Todo Lista " + localList.charAt(1);
-// } else {
-// chartTitle += " - " + "All List " + localList.charAt(1);
-// }
-// } else {
-// // ajout de la traduction du nom de liste plus le numéro
-// if ("fr".equals(locale.getLanguage())) {
-// chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
-// } else if ("es".equals(locale.getLanguage())) {
-// chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
-// } else {
-// chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
-// }
-// }
-// break;
-// }
-// }
+ for (String indicator : indicators) {
- // generate dataset with sorted data
- Map<Integer, Double[]> graphData = indicatorGraphData.get(indicator);
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
+ String speciesList = indicatorLists.get(indicator);
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.communityIndicatorPredicate(indicator),
+ LegacyPredicates.communitySpeciesListPredicate(speciesList));
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+ // extract raw data
+ DataStorage storage = extractCommunity(predicate);
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
+ String rawDataText = DataStorages.toString(storage);
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(chartTitle,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+ // generate chart
+ JFreeChart chart = generateCommunityChart(zone,
+ indicator,
+ speciesList);
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
+ // generate chart file
+ File chartFile = getCharts().generateChartFile("coser-community-chart-",
+ chart,
+ width,
+ height);
- try {
- File chartFile = File.createTempFile("coser-community-chart-", ".png");
- chartFile.deleteOnExit();
- ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
- //ByteArrayOutputStream out = new ByteArrayOutputStream();
- //ChartUtilities.writeChartAsPNG(out, chart, width, height);
-
- // data extraction
- DataStorage subDataStorage = indicatorStorages.get(indicator);
- StringWriter writer = new StringWriter();
- DataStorages.save(subDataStorage, writer);
-
- // add chart file dans chart data in result
- result.put(indicator, Pair.of(chartFile, writer.toString()));
- writer.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
+ result.put(indicator, Pair.of(chartFile, rawDataText));
}
-
return result;
}
/**
- * Generate population graph for selected species and indicator.
+ * Generate population graph and their data for selected indicators.
*
- * @param species species to extract
- * @param indicators indicators to extract
- * @param zoneDisplayName zone full name
- * @param indicatorMap indicator localized map
- * @param locale locale
- * @param width graph width
- * @param height graph height
+ * @param selectedSpecies species to extract
+ * @param selectedIndicators indicators to extract
+ * @param zone zone
+ * @param width graph width
+ * @param height graph height
* @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
*/
- public Map<String, Pair<File, String>> getRsufiResultPopCharts(LegacyResultRepository repository,
- Collection<String> species,
- Collection<String> indicators,
- String zoneDisplayName,
- IndicatorMap indicatorMap,
- Locale locale,
- int width,
- int height) {
+ public Map<String, Pair<File, String>> extractPopulationResults(List<String> selectedSpecies,
+ List<String> selectedIndicators,
+ String zone,
+ int width,
+ int height) {
+ // Get exact list of species to use
+ List<String> speciesList = Lists.newArrayList(getPopulationSpecies());
+ speciesList.retainAll(selectedSpecies);
+
Map<String, Pair<File, String>> result = Maps.newHashMap();
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
+ for (String species : speciesList) {
- MultiKeyMap indicatorGraphData = new MultiKeyMap();
- MultiKeyMap indicatorStorages = new MultiKeyMap();
+ // Get extact indicators to use
+ List<String> indicators = Lists.newArrayList(getPopulationIndicators(species));
+ indicators.retainAll(selectedIndicators);
- // Campagne Indicateur Liste Species Strate Annee Estimation EcartType CV
- Iterator<String[]> estPopIndIterator = repository.loadPopulationIndicatorStorage(true);
- while (estPopIndIterator.hasNext()) {
- String[] tuple = estPopIndIterator.next();
+ for (String indicator : indicators) {
- String speciesCode = tuple[3];
- String indicatorCode = tuple[1];
- if (species.contains(speciesCode) && indicators.contains(indicatorCode)) {
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.populationIndicatorPredicate(indicator),
+ LegacyPredicates.populationSpeciesPredicate(species));
- // XXX echatellier, maybe take care of list here ?
+ // extract raw data
+ DataStorage storage = extractPopulation(predicate);
- Double estimation = Double.parseDouble(tuple[6]);
- Double ecart = Double.parseDouble(tuple[7]);
- int year = Integer.parseInt(tuple[5]);
+ String rawDataText = DataStorages.toString(storage);
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicatorCode, speciesCode);
- if (graphData == null) {
- graphData = new HashMap<Integer, Double[]>();
- indicatorGraphData.put(indicatorCode, speciesCode, graphData);
- }
- graphData.put(year, new Double[]{estimation, ecart});
+ // generate chart
+ JFreeChart chart = generatePopulationChart(zone,
+ indicator,
+ species);
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
+ // generate chart file
+ File chartFile = getCharts().generateChartFile("coser-population-chart-",
+ chart,
+ width,
+ height);
- // for data part
- DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicatorCode, speciesCode);
- if (subDataStorage == null) {
- subDataStorage = new MemoryDataStorage();
- if ("fr".equals(locale.getLanguage())) {
- subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Espèce", "Strate", "Annee", "Estimation", "EcartType", "CV"});
- } else {
- subDataStorage.add(new String[]{"Survey", "Index", "List", "Species", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
- }
- indicatorStorages.put(indicatorCode, speciesCode, subDataStorage);
- }
- subDataStorage.add(tuple);
+ result.put(indicator + "-" + species, Pair.of(chartFile, rawDataText));
}
}
-
- SpeciesMap speciesMap = repository.getSpeciesMap();
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- for (MultiKey indicatorSpecies : (Set<MultiKey>) indicatorGraphData.keySet()) {
- String indicator = (String) indicatorSpecies.getKey(0);
- String aSpecies = (String) indicatorSpecies.getKey(1);
- // get graph title
- String title = zoneDisplayName;
- String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
- String unit = indicatorMap.getIndicatorUnit(indicator);
- title += " - " + indicatorName;
- title += " - " + speciesMap.getReportDisplayName(aSpecies);
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicator, aSpecies);
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- Reports reports = repository.getReports();
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = reports.getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(title,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- File chartFile = File.createTempFile("coser-population-chart-", ".png");
- chartFile.deleteOnExit();
- ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
- //ByteArrayOutputStream out = new ByteArrayOutputStream();
- //ChartUtilities.writeChartAsPNG(out, chart, width, height);
-
- // data extraction
- DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicator, aSpecies);
- StringWriter writer = new StringWriter();
- DataStorages.save(subDataStorage, writer);
-
- // add chart file dans chart data in result
- result.put(indicator + "-" + aSpecies, Pair.of(chartFile, writer.toString()));
- writer.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- boolean result = false;
- if (repository.isMapsResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- if (repository.isIndicatorsResult()) {
- result = request.getExtractTypeList().contains(DataType.POPULATION) ||
- request.getExtractTypeList().contains(DataType.COMMUNITY);
- }
- if (repository.isDataResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- return result;
- }
-
- protected boolean matchZoneList(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- return request.getZoneList().contains(repository.getZone());
- }
-
- protected boolean matchCommunityIndicatorList(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorList(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorListAndSpeciesList(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchCommunityIndicatorListAndSpeciesList(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,11 +24,9 @@
import fr.ifremer.coser.CoserConstants;
import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.util.Reports;
import org.apache.commons.io.FileUtils;
import org.nuiton.util.FileUtil;
import org.nuiton.util.ZipUtil;
@@ -44,28 +42,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class ExtractRawDataCommand implements ResultRepositoryCommand<LegacyResultRepository, ExtractRawDataRequest> {
+public class ExtractRawDataCommand extends AbstractLegacyCommand<ExtractRawDataRequest> {
@Override
- public Class<ExtractRawDataRequest> getRequestType() {
- return ExtractRawDataRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- ExtractRawDataRequest request) {
+ public boolean accept(ExtractRawDataRequest request) {
return repository.isDataResult() &&
repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public FileResult execute(LegacyResultRepository repository,
- ExtractRawDataRequest r) {
+ public FileResult execute(ExtractRawDataRequest request) {
- Locale locale = r.getLocale();
+ Locale locale = getLocale();
- repository.loadSelectionData();
+ loadSelectionData();
File resultZip;
@@ -74,16 +65,18 @@
// il ne faut pas les fichiers de selection, mais leurs
// export rsufi (sans les lignes, et les quotes)
- File archiveDir = repository.extractRSUfiData(tempDir);
+ File archiveDir = extractRSUfiData(tempDir);
// add decharge file
- Reports reports = repository.getReports();
- String filename = reports.getDechargeFilename(locale);
+ String filename = Reports.getDechargeFilename(locale);
File dechargePDF = new File(archiveDir, filename);
- Date lastDataUpdateDate = repository.getConfig().getLastDataUpdateDate();
+ Date lastDataUpdateDate = getConfig().getLastDataUpdateDate();
- reports.generateDechargePDF(dechargePDF, locale, lastDataUpdateDate, repository.getSurveyName());
+ getReports().generateDechargePDF(dechargePDF,
+ locale,
+ lastDataUpdateDate,
+ repository.getSurveyName());
// ajout du reftax dans le zip
File reftaxFile = new File(repository.getBasedir(), CoserConstants.Category.REFTAX_SPECIES.getStorageFileName());
@@ -100,7 +93,7 @@
throw new CoserTechnicalException("Can't create zip file", e);
}
- FileResult result = new FileResult(repository.getId(), resultZip);
+ FileResult result = newFileResult(resultZip);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,11 +24,7 @@
import com.google.common.collect.Maps;
import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.ResultType;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryType;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetAllResultsRequest;
import java.util.Map;
@@ -39,65 +35,25 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetAllResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, GetAllResultsRequest> {
+public class GetAllResultsCommand extends AbstractLegacyCommand<GetAllResultsRequest> {
@Override
- public Class<GetAllResultsRequest> getRequestType() {
- return GetAllResultsRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetAllResultsRequest request) {
- boolean result = matchRepositoryType(request) &&
- matchResultType(repository, request) &&
- matchPublish(repository);
+ public boolean accept(GetAllResultsRequest request) {
+ boolean result = repository.matchRepositoryType(request) &&
+ repository.matchResultType(request) &&
+ repository.isPubliableResult();
return result;
}
@Override
- public CoserResult execute(LegacyResultRepository repository,
- GetAllResultsRequest request) {
+ public CoserResult execute(GetAllResultsRequest request) {
Map<String, String> map = Maps.newHashMap();
String resultResultId = repository.getZone();
String name = repository.getProjectName() + "/" + repository.getSelectionName()
+ "/" + repository.getResultName();
map.put(resultResultId, name);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchRepositoryType(GetAllResultsRequest request) {
- boolean result = request.getResultRepositoryType().equals(LegacyResultRepositoryType.ID);
- return result;
- }
-
- protected boolean matchResultType(LegacyResultRepository repository,
- GetAllResultsRequest request) {
- boolean result;
- ResultType resultType = request.getResultType();
- switch (resultType) {
-
- case MAP:
- result = repository.isMapsResult();
- break;
- case INDICATOR:
- result = repository.isIndicatorsResult();
- break;
- default:
- result = false;
- break;
- }
- return result;
- }
-
- protected boolean matchPublish(LegacyResultRepository repository) {
- boolean result = repository.isPubliableResult();
- return result;
- }
-
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,380 +0,0 @@
-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.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
-import fr.ifremer.coser.result.request.GetCommunityIndicatorResultRequest;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-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.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetCommunityIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetCommunityIndicatorResultRequest> {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(GetCommunityIndicatorResultCommand.class);
-
- @Override
- public Class<GetCommunityIndicatorResultRequest> getRequestType() {
- return GetCommunityIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetCommunityIndicatorResultRequest request) {
- return repository.isIndicatorsResult() &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchIndicatorAndSpeciesList(repository, request);
- }
-
- @Override
- public FileResult execute(LegacyResultRepository repository,
- GetCommunityIndicatorResultRequest request) {
-
- File file = null;
- switch (request.getIndicatorResultType()) {
- case DATA:
- file = getCommunityIndicatorDataFile(repository,
- request.getLocale(),
- request.getIndicator(),
- request.getSpecies());
- break;
-
- case GRAPH:
- file = getCommunityIndicatorGraphFile(repository,
- request.getLocale(),
- request.getZone(),
- request.getIndicator(),
- request.getSpecies());
- break;
- }
- FileResult result = new FileResult(repository.getId(), file);
- return result;
- }
-
- protected File getCommunityIndicatorDataFile(LegacyResultRepository repository,
- Locale locale,
- String indicator,
- String speciesList) {
-
- try {
-
- File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp");
-
- File baseDir = new File(tempDir, repository.getSurveyName());
- FileUtils.forceMkdir(baseDir);
-
- // ajout du fichier csv avec les indicateurs
- DataStorage dataStorage = new MemoryDataStorage();
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(false);
-
- // add header
- dataStorage.add(iterator.next());
-
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- dataStorage.add(tuple);
- }
- }
- File csvFile = DataStorages.save(dataStorage, "coser-chart-community-indicator",
- ".csv"
- );
-
- File csvFileCopied = new File(baseDir, indicator + ".csv");
- FileUtils.copyFile(csvFile, csvFileCopied);
- FileUtils.forceDelete(csvFile);
-
- // ajout du fichier d'information sur les espèces incluses dans
- // les calculs des indicateurs de communautés
- // load project (without data to get reftax data)
- File metaFile = repository.getReports().generateMetaFilePDF(repository.getPath(),
- repository.getResultDirectory(),
- locale,
- repository.getIndicatorsMap()
- );
- File metaFileCopied = new File(baseDir, "Information.pdf");
- FileUtils.copyFile(metaFile, metaFileCopied);
-
- // make zip
- File result = File.createTempFile("coser-chart-community-indicator", ".zip");
- result.deleteOnExit();
- ZipUtil.compress(result, baseDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- return result;
- } catch (Exception e) {
- throw new CoserTechnicalException("Can't create zip file", e);
- }
- }
-
- protected File getCommunityIndicatorGraphFile(LegacyResultRepository repository,
- Locale locale,
- String zone,
- String indicator,
- String speciesList) {
-
- // indicator list to take care
- // pour avoir une valeur non nulle si list est null
- // on prend dans ce cas la premiere valeur trouvée
- String localList = speciesList;
-
- if (log.isDebugEnabled()) {
- log.debug("Searching list for indicator : " + indicator);
- }
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
- boolean indicatorFound = false;
- Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- String[] tuple = iterator.next();
- String indicatorList = tuple[2];
-
- if (repository.matchCommunityIndicator(tuple, indicator)) {
- indicatorFound = true;
-
- // si pas de list selectionnée, on prend la premiere
- if (StringUtils.isBlank(localList)) {
- localList = indicatorList;
- }
-
- if (indicatorList.equals(localList)) {
- Double estimation = Double.parseDouble(tuple[5]);
- Double ecart = Double.parseDouble(tuple[6]);
- int year = Integer.parseInt(tuple[4]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
- }
- }
- }
-
- File result = null;
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- if (indicatorFound) {
-
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
- String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
-
- // get graph title
- String chartTitle = zoneDisplayName;
- chartTitle += " - " + indicatorName;
-
- String speciesListName = repository.getSpeciesListMap().getSpeciesListName(locale, localList);
- chartTitle += " - " + speciesListName;
-// // ajout de la traduction de la liste d'indicateur
-// // les liste sont a1, T1, T2 ...
-// String listLetter = String.valueOf(localList.charAt(0));
-// Iterator<String[]> typeIterator = repository.getSpeciesListMap().iterator(true);
-// while (typeIterator.hasNext()) {
-// // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
-// String[] tuple = typeIterator.next();
-// if (tuple[4].equals(listLetter)) {
-// /// gestion du groupe "Tous"
-// // cas special, c'est la seule valeur du fichier
-// // code type espece qui a besoin d'une traduction
-// if (tuple[4].equalsIgnoreCase("T")) {
-// if ("fr".equals(locale.getLanguage())) {
-// chartTitle += " - " + "Tous Liste " + localList.charAt(1);
-// } else if ("es".equals(locale.getLanguage())) {
-// chartTitle += " - " + "Todo Lista " + localList.charAt(1);
-// } else {
-// chartTitle += " - " + "All List " + localList.charAt(1);
-// }
-// } else {
-// // ajout de la traduction du nom de liste plus le numéro
-// if ("fr".equals(locale.getLanguage())) {
-// chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
-// } else if ("es".equals(locale.getLanguage())) {
-// chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
-// } else {
-// chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
-// }
-// }
-// break;
-// }
-// }
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
-
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(chartTitle,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- result = File.createTempFile("coser-chart-community-indicator-", ".png");
- result.deleteOnExit();
- ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchIndicator(LegacyResultRepository repository,
- GetCommunityIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
-
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicator(tuple, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchIndicatorAndSpeciesList(LegacyResultRepository repository,
- GetCommunityIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
- Preconditions.checkNotNull(request.getSpecies());
-
- String indicator = request.getIndicator();
- String speciesList = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultDataCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultDataCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,117 @@
+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.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultDataRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import org.apache.commons.io.FileUtils;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.ZipUtil;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultDataCommand extends AbstractLegacyCommand<GetCommunityIndicatorResultDataRequest> {
+
+ @Override
+ public boolean accept(GetCommunityIndicatorResultDataRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = createPredicate(request);
+ result = repository.matchCommunity(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetCommunityIndicatorResultDataRequest request) {
+
+ Predicate<String[]> predicate = createPredicate(request);
+
+ File file = getCommunityIndicatorDataFile(predicate,
+ request.getIndicator());
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+ protected File getCommunityIndicatorDataFile(Predicate<String[]> predicate,
+ String indicator) {
+
+ try {
+
+ File tempDir = FileUtil.createTempDirectory("coser-chart-community-indicator", "-tmp");
+
+ File baseDir = new File(tempDir, repository.getSurveyName());
+ FileUtils.forceMkdir(baseDir);
+
+ // ajout du fichier csv avec les indicateurs
+ DataStorage dataStorage = extractCommunity(predicate);
+ File csvFile = DataStorages.save(dataStorage, "coser-chart-community-indicator", ".csv");
+
+ File csvFileCopied = new File(baseDir, indicator + ".csv");
+ FileUtils.copyFile(csvFile, csvFileCopied);
+ FileUtils.forceDelete(csvFile);
+
+ // ajout du fichier d'information sur les espèces incluses dans
+ // les calculs des indicateurs de communautés
+ // load project (without data to get reftax data)
+ File metaFile = getReports().generateMetaFilePDF(repository.getPath(),
+ repository.getResultDirectory(),
+ getLocale(),
+ getIndicatorsMap());
+ File metaFileCopied = new File(baseDir, "Information.pdf");
+ FileUtils.copyFile(metaFile, metaFileCopied);
+
+ // make zip
+ File result = File.createTempFile("coser-chart-community-indicator", ".zip");
+ result.deleteOnExit();
+ ZipUtil.compress(result, baseDir);
+
+ // clean directory
+ FileUtils.deleteDirectory(tempDir);
+ return result;
+ } catch (Exception e) {
+ throw new CoserTechnicalException("Can't create zip file", e);
+ }
+ }
+
+ protected Predicate<String[]> createPredicate(GetCommunityIndicatorResultDataRequest request) {
+ return Predicates.and(
+ LegacyPredicates.communityIndicatorPredicate(request.getIndicator()),
+ LegacyPredicates.communitySpeciesListPredicate(request.getSpecies()));
+ }
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultGraphCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultGraphCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultGraphCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,73 @@
+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.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import org.jfree.chart.JFreeChart;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultGraphCommand extends AbstractLegacyCommand<GetCommunityIndicatorResultGraphRequest> {
+
+ @Override
+ public boolean accept(GetCommunityIndicatorResultGraphRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.communityIndicatorPredicate(request.getIndicator()),
+ LegacyPredicates.communitySpeciesListPredicate(request.getSpecies()));
+ result = repository.matchCommunity(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetCommunityIndicatorResultGraphRequest request) {
+
+ // generate chart
+ JFreeChart chart = generateCommunityChart(request.getZone(),
+ request.getIndicator(),
+ request.getSpecies());
+
+ // generate file from chart
+ File file = getCharts().generateChartFile("coser-chart-community-indicator-",
+ chart,
+ 800,
+ 400);
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,9 +22,7 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
import java.util.Map;
@@ -36,29 +34,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForCommunityIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetIndicatorsForCommunityIndicatorResultRequest> {
+public class GetIndicatorsForCommunityIndicatorResultCommand extends AbstractLegacyCommand<GetIndicatorsForCommunityIndicatorResultRequest> {
@Override
- public Class<GetIndicatorsForCommunityIndicatorResultRequest> getRequestType() {
- return GetIndicatorsForCommunityIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetIndicatorsForCommunityIndicatorResultRequest request) {
+ public boolean accept(GetIndicatorsForCommunityIndicatorResultRequest request) {
return repository.isIndicatorsResult() &&
repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository,
- GetIndicatorsForCommunityIndicatorResultRequest request) {
+ public MapResult execute(GetIndicatorsForCommunityIndicatorResultRequest request) {
- Set<String> indicatorList = repository.getCommunityIndicators();
- Map<String, String> map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ Set<String> indicatorList = getCommunityIndicators();
+ Map<String, String> map = getIndicatorsMap().getIndicatorsValues(getLocale(), indicatorList);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,9 +22,7 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetIndicatorsForExtractRawDataAndResultsRequest;
import fr.ifremer.coser.util.DataType;
@@ -37,69 +35,37 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, GetIndicatorsForExtractRawDataAndResultsRequest> {
+public class GetIndicatorsForExtractRawDataAndResultsCommand extends AbstractLegacyCommand<GetIndicatorsForExtractRawDataAndResultsRequest> {
@Override
- public Class<GetIndicatorsForExtractRawDataAndResultsRequest> getRequestType() {
- return GetIndicatorsForExtractRawDataAndResultsRequest.class;
+ public boolean accept(GetIndicatorsForExtractRawDataAndResultsRequest request) {
+ return repository.matchExtractTypeList(request) &&
+ repository.matchZone(request);
}
@Override
- public boolean accept(LegacyResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
- return matchExtractTypeSet(repository, request) &&
- matchZoneList(repository, request);
- }
+ public MapResult execute(GetIndicatorsForExtractRawDataAndResultsRequest request) {
- @Override
- public MapResult execute(LegacyResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
-
Set<String> indicatorList = null;
if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
// get all community indicators for given zone
- indicatorList = repository.getCommunityIndicators();
+ indicatorList = getCommunityIndicators();
} else if (request.getExtractTypeList().contains(DataType.POPULATION)) {
// get all population indicators for given zone
- indicatorList = repository.getPopulationIndicators();
+ indicatorList = getPopulationIndicators();
}
Map<String, String> map = null;
if (indicatorList != null) {
- map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ map = getIndicatorsMap().getIndicatorsValues(getLocale(), indicatorList);
}
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(LegacyResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
- boolean result = false;
- if (repository.isMapsResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- if (repository.isIndicatorsResult()) {
- result = request.getExtractTypeList().contains(DataType.POPULATION) ||
- request.getExtractTypeList().contains(DataType.COMMUNITY);
- }
- if (repository.isDataResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- return result;
- }
-
- protected boolean matchZoneList(LegacyResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
- return request.getZoneList().contains(repository.getZone());
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,13 +22,11 @@
* #L%
*/
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import com.google.common.base.Predicate;
+import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
-import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -38,53 +36,29 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForPopulationIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetIndicatorsForPopulationIndicatorResultRequest> {
+public class GetIndicatorsForPopulationIndicatorResultCommand extends AbstractLegacyCommand<GetIndicatorsForPopulationIndicatorResultRequest> {
@Override
- public Class<GetIndicatorsForPopulationIndicatorResultRequest> getRequestType() {
- return GetIndicatorsForPopulationIndicatorResultRequest.class;
- }
+ public boolean accept(GetIndicatorsForPopulationIndicatorResultRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetIndicatorsForPopulationIndicatorResultRequest request) {
- return repository.isIndicatorsResult() &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpecies(repository, request);
- }
+ Predicate<String[]> predicate = LegacyPredicates.populationSpeciesPredicate(request.getSpecies());
+ result = repository.matchPopulation(predicate);
- @Override
- public MapResult execute(LegacyResultRepository repository,
- GetIndicatorsForPopulationIndicatorResultRequest request) {
-
- Set<String> indicatorList = repository.getPopulationIndicators(request.getSpecies());
- Map<String, String> map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
-
- MapResult result = new MapResult(repository.getId(), map);
+ }
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
+ @Override
+ public MapResult execute(GetIndicatorsForPopulationIndicatorResultRequest request) {
- protected boolean matchSpecies(LegacyResultRepository repository,
- GetIndicatorsForPopulationIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
+ Set<String> indicatorList = getPopulationIndicators(request.getSpecies());
+ Map<String, String> map = getIndicatorsMap().getIndicatorsValues(getLocale(), indicatorList);
- String species = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchPopulationSpecies(tuple, species)) {
- result = true;
- break;
- }
- }
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetMapResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,9 +22,7 @@
* #L%
*/
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.request.GetMapResultRequest;
import java.io.File;
@@ -35,41 +33,27 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetMapResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetMapResultRequest> {
+public class GetMapResultCommand extends AbstractLegacyCommand<GetMapResultRequest> {
@Override
- public Class<GetMapResultRequest> getRequestType() {
- return GetMapResultRequest.class;
+ public boolean accept(GetMapResultRequest request) {
+ boolean result = repository.isMapsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ File file = repository.getMapSpeciesFile(request.getSpecies());
+ result = file != null;
+ }
+ return result;
}
@Override
- public boolean accept(LegacyResultRepository repository,
- GetMapResultRequest request) {
- return repository.isMapsResult() &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpecies(repository, request);
- }
+ public FileResult execute(GetMapResultRequest request) {
- @Override
- public FileResult execute(LegacyResultRepository repository,
- GetMapResultRequest r) {
+ File resultZip = repository.getMapSpeciesFile(request.getSpecies());
- File resultZip = repository.getMapSpeciesFile(r.getSpecies());
-
FileResult result = new FileResult(repository.getId(), resultZip);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(LegacyResultRepository repository,
- GetMapResultRequest request) {
- String species = request.getSpecies();
- File file = repository.getMapSpeciesFile(species);
- return file != null;
- }
-
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,288 +0,0 @@
-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.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-import org.apache.commons.lang3.StringUtils;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetPopulationIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetPopulationIndicatorResultRequest> {
-
- @Override
- public Class<GetPopulationIndicatorResultRequest> getRequestType() {
- return GetPopulationIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetPopulationIndicatorResultRequest request) {
- return repository.isIndicatorsResult() &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpeciesAndIndicator(repository, request);
- }
-
- @Override
- public FileResult execute(LegacyResultRepository repository,
- GetPopulationIndicatorResultRequest request) {
-
- File file = null;
- switch (request.getIndicatorResultType()) {
- case DATA:
- file = getPopulationIndicatorDataFile(repository,
- request.getIndicator(),
- request.getSpecies());
- break;
-
- case GRAPH:
- file = getPopulationIndicatorGraphFile(repository,
- request.getLocale(),
- request.getZone(),
- request.getIndicator(),
- request.getSpecies());
- break;
- }
-
-
- FileResult result = new FileResult(repository.getId(), file);
- return result;
- }
-
- protected File getPopulationIndicatorDataFile(LegacyResultRepository repository,
- String species,
- String indicator) {
-
- DataStorage dataStorage = new MemoryDataStorage();
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(false);
-
- // add header
- dataStorage.add(iterator.next());
-
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
- dataStorage.add(tuple);
- }
- }
- File result = DataStorages.save(dataStorage, "coser-chart-population-indicator",
- ".csv"
- );
- return result;
- }
-
- protected File getPopulationIndicatorGraphFile(LegacyResultRepository repository,
- Locale locale,
- String zone,
- String species,
- String indicator) {
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
- boolean indicatorFound = false;
- Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
-
- if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
- indicatorFound = true;
-
- // XXX echatellier, maybe take care of list here ?
-
- Double estimation = Double.parseDouble(tuple[6]);
- Double ecart = Double.parseDouble(tuple[7]);
- int year = Integer.parseInt(tuple[5]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
- }
- }
-
- File result = null;
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- if (indicatorFound) {
-
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
- String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
-
- // get graph title
- String title = zoneDisplayName;
- title += " - " + indicatorName;
- title += " - " + repository.getSpeciesMap().getReportDisplayName(species);
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(title,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- result = File.createTempFile("coser-chart-population-indicator-", ".png");
- result.deleteOnExit();
- ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(LegacyResultRepository repository,
- GetPopulationIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
-
- String species = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchPopulationSpecies(tuple, species)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchSpeciesAndIndicator(LegacyResultRepository repository,
- GetPopulationIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
- Preconditions.checkNotNull(request.getIndicator());
-
- String species = request.getSpecies();
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
-}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultDataCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultDataCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,75 @@
+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.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultDataRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultDataCommand extends AbstractLegacyCommand<GetPopulationIndicatorResultDataRequest> {
+
+ @Override
+ public boolean accept(GetPopulationIndicatorResultDataRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = createPredicate(request);
+ result = repository.matchPopulation(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetPopulationIndicatorResultDataRequest request) {
+
+ Predicate<String[]> predicate = createPredicate(request);
+
+ DataStorage dataStorage = extractPopulation(predicate);
+ File file = DataStorages.save(dataStorage,
+ "coser-chart-population-indicator",
+ ".csv");
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+ protected Predicate<String[]> createPredicate(GetPopulationIndicatorResultDataRequest request) {
+ return Predicates.and(
+ LegacyPredicates.populationSpeciesPredicate(request.getSpecies()),
+ LegacyPredicates.populationIndicatorPredicate(request.getIndicator()));
+ }
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultGraphCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultGraphCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultGraphCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,74 @@
+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.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultGraphRequest;
+import org.jfree.chart.JFreeChart;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultGraphCommand extends AbstractLegacyCommand<GetPopulationIndicatorResultGraphRequest> {
+
+ @Override
+ public boolean accept(GetPopulationIndicatorResultGraphRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.populationSpeciesPredicate(request.getSpecies()),
+ LegacyPredicates.populationIndicatorPredicate(request.getIndicator()));
+ result = repository.matchPopulation(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetPopulationIndicatorResultGraphRequest request) {
+
+ // generate chart
+ JFreeChart chart = generatePopulationChart(request.getZone(),
+ request.getSpecies(),
+ request.getIndicator());
+
+ // generate file from chart
+ File file = getCharts().generateChartFile("coser-chart-population-indicator-",
+ chart,
+ 800,
+ 400);
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,59 @@
+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.result.MapResult;
+import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest;
+
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesForExtractRawDataAndResultsCommand extends AbstractLegacyCommand<GetSpeciesForExtractRawDataAndResultsRequest> {
+
+ @Override
+ public boolean accept(GetSpeciesForExtractRawDataAndResultsRequest request) {
+ return repository.matchExtractTypeList(request) &&
+ repository.matchZone(request);
+ }
+
+ @Override
+ 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());
+
+ MapResult result = newMapResult(map);
+ return result;
+ }
+
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,9 +22,7 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
import java.util.Map;
@@ -35,27 +33,24 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetSpeciesForMapResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetSpeciesForMapResultRequest> {
+public class GetSpeciesForMapResultCommand extends AbstractLegacyCommand<GetSpeciesForMapResultRequest> {
@Override
- public Class<GetSpeciesForMapResultRequest> getRequestType() {
- return GetSpeciesForMapResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository, GetSpeciesForMapResultRequest request) {
+ public boolean accept(GetSpeciesForMapResultRequest request) {
return repository.isMapsResult() &&
repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository, GetSpeciesForMapResultRequest request) {
+ public MapResult execute(GetSpeciesForMapResultRequest request) {
- Map<String, String> map = repository.getPopulationIndicatorSpecies();
+// Map<String, String> map = repository.getPopulationSpeciesMap();
+ Map<String, String> map = repository.getMapSpeciesMap();
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
+
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,9 +22,7 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
import java.util.Map;
@@ -35,28 +33,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetSpeciesForPopulationIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetSpeciesForPopulationIndicatorResultRequest> {
+public class GetSpeciesForPopulationIndicatorResultCommand extends AbstractLegacyCommand<GetSpeciesForPopulationIndicatorResultRequest> {
@Override
- public Class<GetSpeciesForPopulationIndicatorResultRequest> getRequestType() {
- return GetSpeciesForPopulationIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetSpeciesForPopulationIndicatorResultRequest request) {
+ public boolean accept(GetSpeciesForPopulationIndicatorResultRequest request) {
return repository.isIndicatorsResult() &&
repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository,
- GetSpeciesForPopulationIndicatorResultRequest request) {
+ public MapResult execute(GetSpeciesForPopulationIndicatorResultRequest request) {
- Map<String, String> map = repository.getPopulationIndicatorSpecies();
+ Map<String, String> map = getPopulationSpeciesMap();
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,14 +22,15 @@
* #L%
*/
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.storage.DataStorageWalker;
-import java.util.Iterator;
import java.util.Map;
+import java.util.Set;
/**
* Created on 3/11/14.
@@ -37,54 +38,41 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetSpeciesListForCommunityIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetSpeciesListForCommunityIndicatorResultRequest> {
+public class GetSpeciesListForCommunityIndicatorResultCommand extends AbstractLegacyCommand<GetSpeciesListForCommunityIndicatorResultRequest> {
@Override
- public Class<GetSpeciesListForCommunityIndicatorResultRequest> getRequestType() {
- return GetSpeciesListForCommunityIndicatorResultRequest.class;
- }
+ public boolean accept(GetSpeciesListForCommunityIndicatorResultRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetSpeciesListForCommunityIndicatorResultRequest request) {
- return repository.isIndicatorsResult() &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchIndicator(repository, request);
+ Predicate<String[]> predicate =
+ LegacyPredicates.communityIndicatorPredicate(request.getIndicator());
+ result = repository.matchCommunity(predicate);
+ }
+ return result;
}
@Override
- public MapResult execute(LegacyResultRepository repository,
- GetSpeciesListForCommunityIndicatorResultRequest request) {
+ public MapResult execute(GetSpeciesListForCommunityIndicatorResultRequest request) {
- Map<String, String> map = repository.getCommunityIndicatorSpecies(request.getLocale(),
- request.getIndicator());
+ // linked hash map (doit respecter l'ordre d'insertion)
+ final Set<String> speciesList = Sets.newLinkedHashSet();
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String speciesListCode = tuple[2];
+ speciesList.add(speciesListCode);
+ }
+ };
+ Predicate<String[]> predicate = LegacyPredicates.communityIndicatorPredicate(request.getIndicator());
+ walkOnCommunity(predicate, walker);
+ Map<String, String> map = repository.getSpeciesListMap().getSpeciesSubMap(getLocale(),
+ speciesList);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchIndicator(LegacyResultRepository repository,
- GetSpeciesListForCommunityIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
-
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicator(tuple, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,93 +0,0 @@
-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.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
-import fr.ifremer.coser.result.request.GetSpeciesListForExtractRawDataAndResultsRequest;
-import fr.ifremer.coser.util.DataType;
-
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetSpeciesListForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, GetSpeciesListForExtractRawDataAndResultsRequest> {
-
- @Override
- public Class<GetSpeciesListForExtractRawDataAndResultsRequest> getRequestType() {
- return GetSpeciesListForExtractRawDataAndResultsRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
- return matchExtractTypeSet(repository, request) &&
- matchZoneList(repository, request);
- }
-
- @Override
- public MapResult execute(LegacyResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
-
- Map<String, String> map = Maps.newHashMap();
-
- // get all species for population indicators
- map.putAll(repository.getPopulationIndicatorSpecies());
- // get all species for community indicators
- map.putAll(repository.getCommunityIndicatorSpecies());
-
- MapResult result = new MapResult(repository.getId(), map);
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(LegacyResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
- boolean result = false;
- if (repository.isMapsResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- if (repository.isIndicatorsResult()) {
- result = request.getExtractTypeList().contains(DataType.POPULATION) ||
- request.getExtractTypeList().contains(DataType.COMMUNITY);
- }
- if (repository.isDataResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- return result;
- }
-
- protected boolean matchZoneList(LegacyResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
- return request.getZoneList().contains(repository.getZone());
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,9 +23,7 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
import java.util.List;
@@ -37,26 +35,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForCommunityIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForCommunityIndicatorResultRequest> {
+public class GetZonesForCommunityIndicatorResultCommand extends AbstractLegacyCommand<GetZonesForCommunityIndicatorResultRequest> {
@Override
- public Class<GetZonesForCommunityIndicatorResultRequest> getRequestType() {
- return GetZonesForCommunityIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository, GetZonesForCommunityIndicatorResultRequest request) {
+ public boolean accept(GetZonesForCommunityIndicatorResultRequest request) {
return repository.isIndicatorsResult() && repository.matchFacade(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository, GetZonesForCommunityIndicatorResultRequest request) {
+ public MapResult execute(GetZonesForCommunityIndicatorResultRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataAndResultsCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,55 @@
+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 fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForExtractRawDataAndResultsCommand extends AbstractLegacyCommand<GetZonesForExtractRawDataAndResultsRequest> {
+
+ @Override
+ public boolean accept(GetZonesForExtractRawDataAndResultsRequest request) {
+ return true;
+ }
+
+ @Override
+ public MapResult execute(GetZonesForExtractRawDataAndResultsRequest request) {
+ ZoneMap zonesMap = getZonesMap();
+ List<String> allowedZones = zonesMap.getZonesForFacade(null);
+ Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
+
+ MapResult result = newMapResult(map);
+ return result;
+ }
+
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,9 +23,7 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
import java.util.List;
@@ -37,29 +35,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForExtractRawDataCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForExtractRawDataRequest> {
+public class GetZonesForExtractRawDataCommand extends AbstractLegacyCommand<GetZonesForExtractRawDataRequest> {
@Override
- public Class<GetZonesForExtractRawDataRequest> getRequestType() {
- return GetZonesForExtractRawDataRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetZonesForExtractRawDataRequest request) {
+ public boolean accept(GetZonesForExtractRawDataRequest request) {
return repository.isDataResult() &&
repository.matchFacade(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository,
- GetZonesForExtractRawDataRequest request) {
+ public MapResult execute(GetZonesForExtractRawDataRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,9 +23,7 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
import java.util.List;
@@ -37,29 +35,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForMapResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForMapResultRequest> {
+public class GetZonesForMapResultCommand extends AbstractLegacyCommand<GetZonesForMapResultRequest> {
@Override
- public Class<GetZonesForMapResultRequest> getRequestType() {
- return GetZonesForMapResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetZonesForMapResultRequest request) {
+ public boolean accept(GetZonesForMapResultRequest request) {
return repository.isMapsResult() &&
repository.matchFacade(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository,
- GetZonesForMapResultRequest request) {
+ public MapResult execute(GetZonesForMapResultRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,9 +23,7 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
import java.util.List;
@@ -37,29 +35,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForPopulationIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForPopulationIndicatorResultRequest> {
+public class GetZonesForPopulationIndicatorResultCommand extends AbstractLegacyCommand<GetZonesForPopulationIndicatorResultRequest> {
@Override
- public Class<GetZonesForPopulationIndicatorResultRequest> getRequestType() {
- return GetZonesForPopulationIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetZonesForPopulationIndicatorResultRequest request) {
+ public boolean accept(GetZonesForPopulationIndicatorResultRequest request) {
return repository.isIndicatorsResult() &&
repository.matchFacade(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository,
- GetZonesForPopulationIndicatorResultRequest request) {
+ public MapResult execute(GetZonesForPopulationIndicatorResultRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,63 +0,0 @@
-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 fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
-import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetZonesListForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForExtractRawDataAndResultsRequest> {
-
- @Override
- public Class<GetZonesForExtractRawDataAndResultsRequest> getRequestType() {
- return GetZonesForExtractRawDataAndResultsRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetZonesForExtractRawDataAndResultsRequest request) {
- return true;
- }
-
- @Override
- public MapResult execute(LegacyResultRepository repository,
- GetZonesForExtractRawDataAndResultsRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
- List<String> allowedZones = zonesMap.getZonesForFacade(null);
- Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
- return result;
- }
-
-}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,28 @@
+/**
+ * Implementations of {@link fr.ifremer.coser.result.CoserCommand} for legacy result repository.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%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%
+ */
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/package-info.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/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/package-info.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,5 +1,5 @@
/**
- * Implementation for legacy results.
+ * Implementation for legacy result repository.
*
* @since 1.5
*/
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/AbstractGetIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/AbstractGetIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/AbstractGetIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain indicator results.
* <p/>
@@ -39,41 +37,19 @@
private static final long serialVersionUID = 1L;
- /**
- * Type of result.
- */
- public enum IndicatorResultType {
- DATA,
- GRAPH
- }
-
- protected Locale locale;
-
protected String facade;
protected String zone;
protected String indicator;
- protected IndicatorResultType indicatorResultType;
+ protected String species;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- facade == null ||
+ return !(facade == null ||
zone == null ||
- indicatorResultType == null ||
+ species == null ||
indicator == null);
}
@@ -99,15 +75,6 @@
this.zone = zone;
}
- public IndicatorResultType getIndicatorResultType() {
- return indicatorResultType;
- }
-
- public void setIndicatorResultType(IndicatorResultType indicatorResultType) {
- Preconditions.checkNotNull(indicatorResultType);
- this.indicatorResultType = indicatorResultType;
- }
-
@Override
public String getIndicator() {
return indicator;
@@ -119,4 +86,15 @@
this.indicator = indicator;
}
+ @Override
+ public String getSpecies() {
+ return species;
+ }
+
+ @Override
+ public void setSpecies(String species) {
+ Preconditions.checkNotNull(species);
+ this.species = species;
+ }
+
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,221 +0,0 @@
-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.CoserTechnicalException;
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.ResultType;
-import fr.ifremer.coser.util.DataType;
-import org.apache.commons.collections4.CollectionUtils;
-
-import java.util.List;
-import java.util.Locale;
-
-/**
- * To build requests.
- * <p/>
- * Created on 3/7/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class CoserRequestBuilder<R extends CoserRequest> {
-
- protected final Locale locale;
-
- protected String facade;
-
- protected String zone;
-
- protected String species;
-
- protected String indicator;
-
- protected AbstractGetIndicatorResultRequest.IndicatorResultType indicatorResultType;
-
- protected List<DataType> extractTypeList;
-
- protected List<String> zoneList;
-
- protected List<String> speciesList;
-
- protected List<String> populationIndicatorList;
-
- protected List<String> communityIndicatorList;
-
- protected String resultRepositoryType;
-
- protected ResultType resultType;
-
- protected final Class<R> requestType;
-
- public CoserRequestBuilder(Locale locale, Class<R> requestType) {
- Preconditions.checkNotNull(locale);
- Preconditions.checkNotNull(requestType);
- this.locale = locale;
- this.requestType = requestType;
- }
-
- public CoserRequestBuilder<R> addFacade(String facade) {
- this.facade = facade;
- return this;
- }
-
- public CoserRequestBuilder<R> addZone(String zone) {
- this.zone = zone;
- return this;
- }
-
- public CoserRequestBuilder<R> addSpecies(String species) {
- this.species = species;
- return this;
- }
-
- public CoserRequestBuilder<R> addIndicator(String indicator) {
- this.indicator = indicator;
- return this;
- }
-
- public CoserRequestBuilder<R> addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType indicatorResultType) {
- this.indicatorResultType = indicatorResultType;
- return this;
- }
-
- public CoserRequestBuilder<R> addExtractTypeList(List<DataType> extractTypeSet) {
- this.extractTypeList = extractTypeSet;
- return this;
- }
-
- public CoserRequestBuilder<R> addZoneList(List<String> zoneList) {
- this.zoneList = zoneList;
- return this;
- }
-
- public CoserRequestBuilder<R> addSpeciesList(List<String> speciesList) {
- this.speciesList = speciesList;
- return this;
- }
-
- public CoserRequestBuilder<R> addPopulationIndicatorList(List<String> populationIndicatorList) {
- this.populationIndicatorList = populationIndicatorList;
- return this;
- }
-
- public CoserRequestBuilder<R> addCommunityIndicatorList(List<String> communityIndicatorList) {
- this.communityIndicatorList = communityIndicatorList;
- return this;
- }
-
- public CoserRequestBuilder<R> addResultRepositoryType(String resultRepositoryType) {
- this.resultRepositoryType = resultRepositoryType;
- return this;
- }
-
- public CoserRequestBuilder<R> addResultType(ResultType resultType) {
- this.resultType = resultType;
- return this;
- }
-
- public R toRequest() {
- try {
- R request = requestType.newInstance();
- flush(request);
- return request;
- } catch (InstantiationException e) {
- throw new CoserTechnicalException(e);
- } catch (IllegalAccessException e) {
- throw new CoserTechnicalException(e);
- }
- }
-
- protected void flush(R request) {
- request.setLocale(locale);
- if (request instanceof CoserRequestFacadeAware) {
- if (facade != null) {
- ((CoserRequestFacadeAware) request).setFacade(facade);
- }
- }
- if (request instanceof CoserRequestZoneAware) {
- if (zone != null) {
- ((CoserRequestZoneAware) request).setZone(zone);
- }
- }
- if (request instanceof CoserRequestSpeciesAware) {
- if (species != null) {
- ((CoserRequestSpeciesAware) request).setSpecies(species);
- }
- }
- if (request instanceof CoserRequestZoneListAware) {
- if (CollectionUtils.isNotEmpty(zoneList)) {
- ((CoserRequestZoneListAware) request).setZoneList(zoneList);
- }
- }
- if (request instanceof CoserRequestIndicatorAware) {
- if (indicator != null) {
- ((CoserRequestIndicatorAware) request).setIndicator(indicator);
- }
- }
-
- if (request instanceof AbstractGetIndicatorResultRequest) {
- if (indicatorResultType != null) {
- ((AbstractGetIndicatorResultRequest) request).setIndicatorResultType(indicatorResultType);
- }
- }
-
- if (request instanceof ExtractRawDataAndResultsRequest) {
- if (CollectionUtils.isNotEmpty(extractTypeList)) {
- ((ExtractRawDataAndResultsRequest) request).setExtractTypeList(extractTypeList);
- }
- if (CollectionUtils.isNotEmpty(populationIndicatorList)) {
- ((ExtractRawDataAndResultsRequest) request).setPopulationIndicatorList(populationIndicatorList);
- }
- if (CollectionUtils.isNotEmpty(communityIndicatorList)) {
- ((ExtractRawDataAndResultsRequest) request).setCommunityIndicatorList(communityIndicatorList);
- }
- if (CollectionUtils.isNotEmpty(speciesList)) {
- ((ExtractRawDataAndResultsRequest) request).setSpeciesList(speciesList);
- }
-
- }
-
- if (request instanceof DeleteResultsRequest) {
- if (resultRepositoryType != null) {
- ((DeleteResultsRequest) request).setResultRepositoryType(resultRepositoryType);
- }
- if (resultType != null) {
- ((DeleteResultsRequest) request).setResultType(resultType);
- }
- }
-
- if (request instanceof GetAllResultsRequest) {
- if (resultRepositoryType != null) {
- ((GetAllResultsRequest) request).setResultRepositoryType(resultRepositoryType);
- }
- if (resultType != null) {
- ((GetAllResultsRequest) request).setResultType(resultType);
- }
- }
- }
-
-}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestExtractTypeListAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestExtractTypeListAware.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestExtractTypeListAware.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,41 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%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 fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.util.DataType;
+
+import java.util.List;
+
+/**
+ * Created on 3/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequestExtractTypeListAware extends CoserRequest {
+
+ List<DataType> getExtractTypeList();
+
+ void setExtractTypeList(List<DataType> extractTypeSet);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestExtractTypeListAware.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/CoserRequestRepositoryResultTypeAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryResultTypeAware.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryResultTypeAware.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,39 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%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 fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.ResultType;
+
+/**
+ * Created on 3/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequestRepositoryResultTypeAware extends CoserRequest {
+
+ ResultType getResultType();
+
+ void setResultType(ResultType resultType);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryResultTypeAware.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/CoserRequestRepositoryTypeAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryTypeAware.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryTypeAware.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,38 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%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 fr.ifremer.coser.result.CoserRequest;
+
+/**
+ * Created on 3/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequestRepositoryTypeAware extends CoserRequest {
+
+ String getRepositoryType();
+
+ void setRepositoryType(String resultRepositoryType);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryTypeAware.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -29,7 +29,6 @@
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
-import java.util.Locale;
/**
* To delete some results.
@@ -38,11 +37,10 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class DeleteResultsRequest implements CoserRequest, CoserRequestZoneListAware {
+public class DeleteResultsRequest implements CoserRequest, CoserRequestZoneListAware, CoserRequestRepositoryTypeAware, CoserRequestRepositoryResultTypeAware {
private static final long serialVersionUID = 1L;
- protected Locale locale;
/**
* Id of matching result repository type.
@@ -62,36 +60,29 @@
protected List<String> zoneList;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- resultRepositoryType == null ||
- resultType == null ||
- CollectionUtils.isEmpty(zoneList));
+ return !(resultRepositoryType == null ||
+ resultType == null ||
+ CollectionUtils.isEmpty(zoneList));
}
- public String getResultRepositoryType() {
+ @Override
+ public String getRepositoryType() {
return resultRepositoryType;
}
- public void setResultRepositoryType(String resultRepositoryType) {
+ @Override
+ public void setRepositoryType(String resultRepositoryType) {
Preconditions.checkNotNull(resultRepositoryType);
this.resultRepositoryType = resultRepositoryType;
}
+ @Override
public ResultType getResultType() {
return resultType;
}
+ @Override
public void setResultType(ResultType resultType) {
Preconditions.checkNotNull(resultType);
this.resultType = resultType;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -27,8 +27,8 @@
import fr.ifremer.coser.util.DataType;
import org.apache.commons.collections4.CollectionUtils;
+import java.io.File;
import java.util.List;
-import java.util.Locale;
/**
* Request to extract data.
@@ -38,12 +38,10 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class ExtractRawDataAndResultsRequest implements CoserRequest, CoserRequestZoneListAware {
+public class ExtractRawDataAndResultsRequest implements CoserRequest, CoserRequestZoneListAware, CoserRequestExtractTypeListAware {
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected List<String> zoneList;
protected List<String> populationIndicatorList;
@@ -54,31 +52,27 @@
protected List<DataType> extractTypeList;
- @Override
- public Locale getLocale() {
- return locale;
- }
+ /**
+ * Where to extract all data and graphs.
+ */
+ protected File extractDirectory;
@Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
+ public boolean isFilled() {
+ return !(
+ CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList) ||
+ CollectionUtils.isEmpty(populationIndicatorList) ||
+ CollectionUtils.isEmpty(communityIndicatorList) ||
+ CollectionUtils.isEmpty(speciesList));
}
@Override
- public boolean isFilled() {
- return !(locale == null ||
- CollectionUtils.isEmpty(extractTypeList) ||
- CollectionUtils.isEmpty(zoneList) ||
- CollectionUtils.isEmpty(populationIndicatorList) ||
- CollectionUtils.isEmpty(communityIndicatorList) ||
- CollectionUtils.isEmpty(speciesList));
- }
-
public List<DataType> getExtractTypeList() {
return extractTypeList;
}
+ @Override
public void setExtractTypeList(List<DataType> extractTypeSet) {
Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeSet));
this.extractTypeList = extractTypeSet;
@@ -121,4 +115,12 @@
Preconditions.checkArgument(CollectionUtils.isNotEmpty(speciesList));
this.speciesList = speciesList;
}
+
+ public void setExtractDirectory(File extractDirectory) {
+ this.extractDirectory = extractDirectory;
+ }
+
+ public File getExtractDirectory() {
+ return extractDirectory;
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain raw data results.
* <p/>
@@ -39,26 +37,13 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
protected String zone;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null || facade == null || zone == null);
+ return !(facade == null || zone == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -27,20 +27,16 @@
import fr.ifremer.coser.result.ResultType;
import fr.ifremer.coser.result.repository.ResultRepositoryType;
-import java.util.Locale;
-
/**
* Created on 3/11/14.
*
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetAllResultsRequest implements CoserRequest {
+public class GetAllResultsRequest implements CoserRequest, CoserRequestRepositoryTypeAware, CoserRequestRepositoryResultTypeAware {
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
/**
* Id of matching result repository type.
*
@@ -55,33 +51,26 @@
@Override
public boolean isFilled() {
- return !(locale == null || resultRepositoryType == null || resultType == null);
+ return !(resultRepositoryType == null || resultType == null);
}
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- public String getResultRepositoryType() {
+ public String getRepositoryType() {
return resultRepositoryType;
}
- public void setResultRepositoryType(String resultRepositoryType) {
+ @Override
+ public void setRepositoryType(String resultRepositoryType) {
Preconditions.checkNotNull(resultRepositoryType);
this.resultRepositoryType = resultRepositoryType;
}
+ @Override
public ResultType getResultType() {
return resultType;
}
+ @Override
public void setResultType(ResultType resultType) {
Preconditions.checkNotNull(resultType);
this.resultType = resultType;
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultDataRequest.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultDataRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultDataRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,37 @@
+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%
+ */
+
+/**
+ * Request to obtain community indicator results data.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultDataRequest extends AbstractGetIndicatorResultRequest {
+
+ private static final long serialVersionUID = 1L;
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultGraphRequest.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultGraphRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultGraphRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,37 @@
+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%
+ */
+
+/**
+ * Request to obtain community indicator results graph.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultGraphRequest extends AbstractGetIndicatorResultRequest {
+
+ private static final long serialVersionUID = 1L;
+
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,56 +0,0 @@
-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;
-
-/**
- * Request to obtain community indicator results.
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetCommunityIndicatorResultRequest extends AbstractGetIndicatorResultRequest {
-
- private static final long serialVersionUID = 1L;
-
- protected String species;
-
- @Override
- public String getSpecies() {
- return species;
- }
-
- @Override
- public void setSpecies(String species) {
- Preconditions.checkNotNull(facade);
- this.species = species;
- }
-
- @Override
- public boolean isFilled() {
- return super.isFilled() && species != null;
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain community indicator results.
* <p/>
@@ -39,28 +37,13 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
protected String zone;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- facade == null ||
- zone == null);
+ return !(facade == null || zone == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -28,7 +28,6 @@
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
-import java.util.Locale;
/**
* Request to extract data.
@@ -38,12 +37,10 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForExtractRawDataAndResultsRequest implements CoserRequest {
+public class GetIndicatorsForExtractRawDataAndResultsRequest implements CoserRequest, CoserRequestZoneListAware, CoserRequestExtractTypeListAware {
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected List<String> zoneList;
protected List<String> populationIndicatorList;
@@ -53,38 +50,31 @@
protected List<DataType> extractTypeList;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- CollectionUtils.isEmpty(extractTypeList) ||
- CollectionUtils.isEmpty(zoneList) ||
- CollectionUtils.isEmpty(populationIndicatorList) ||
- CollectionUtils.isEmpty(communityIndicatorList));
+ return !(
+ CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList) ||
+ CollectionUtils.isEmpty(populationIndicatorList) ||
+ CollectionUtils.isEmpty(communityIndicatorList));
}
+ @Override
public List<DataType> getExtractTypeList() {
return extractTypeList;
}
+ @Override
public void setExtractTypeList(List<DataType> extractTypeSet) {
Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeSet));
this.extractTypeList = extractTypeSet;
}
+ @Override
public List<String> getZoneList() {
return zoneList;
}
+ @Override
public void setZoneList(List<String> zoneList) {
Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
this.zoneList = zoneList;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain community indicator results.
* <p/>
@@ -35,34 +33,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForPopulationIndicatorResultRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware , CoserRequestSpeciesAware{
+public class GetIndicatorsForPopulationIndicatorResultRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware, CoserRequestSpeciesAware {
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
protected String zone;
+
protected String species;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- facade == null ||
- zone == null ||
- species==null);
+ return !(facade == null ||
+ zone == null ||
+ species == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetMapResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetMapResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetMapResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain map results.
* <p/>
@@ -45,8 +43,6 @@
*/
public static final String NULL_SPECIES = "Repartition-stations";
- protected Locale locale;
-
protected String facade;
protected String zone;
@@ -55,21 +51,10 @@
@Override
public boolean isFilled() {
- return !(locale == null || facade == null || zone == null && species == null);
+ return !(facade == null || zone == null && species == null);
}
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public String getFacade() {
return facade;
}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultDataRequest.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultDataRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultDataRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,37 @@
+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%
+ */
+
+/**
+ * Request to obtain population indicator results data.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultDataRequest extends AbstractGetIndicatorResultRequest {
+
+ private static final long serialVersionUID = 1L;
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultGraphRequest.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultGraphRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultGraphRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,37 @@
+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%
+ */
+
+/**
+ * Request to obtain population indicator result as a graph.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultGraphRequest extends AbstractGetIndicatorResultRequest {
+
+ private static final long serialVersionUID = 1L;
+
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,56 +0,0 @@
-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;
-
-/**
- * Request to obtain population indicator results.
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetPopulationIndicatorResultRequest extends AbstractGetIndicatorResultRequest {
-
- private static final long serialVersionUID = 1L;
-
- protected String species;
-
- @Override
- public String getSpecies() {
- return species;
- }
-
- @Override
- public void setSpecies(String species) {
- Preconditions.checkNotNull(species);
- this.species = species;
- }
-
- @Override
- public boolean isFilled() {
- return super.isFilled() && species != null;
- }
-}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForExtractRawDataAndResultsRequest.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForExtractRawDataAndResultsRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForExtractRawDataAndResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,76 @@
+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;
+
+/**
+ * Request to extract data.
+ * <p/>
+ * Created on 3/9/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesForExtractRawDataAndResultsRequest implements CoserRequest, CoserRequestZoneListAware, CoserRequestExtractTypeListAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected List<String> zoneList;
+
+ protected List<DataType> extractTypeList;
+
+ @Override
+ public boolean isFilled() {
+ return !(
+ CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList));
+ }
+
+ @Override
+ public List<DataType> getExtractTypeList() {
+ return extractTypeList;
+ }
+
+ @Override
+ public void setExtractTypeList(List<DataType> extractTypeSet) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeSet));
+ this.extractTypeList = extractTypeSet;
+ }
+
+ @Override
+ public List<String> getZoneList() {
+ return zoneList;
+ }
+
+ @Override
+ public void setZoneList(List<String> zoneList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
+ this.zoneList = zoneList;
+ }
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain available species for map results.
* <p/>
@@ -39,29 +37,16 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
protected String zone;
@Override
public boolean isFilled() {
- return !(locale == null || facade == null || zone == null);
+ return !(facade == null || zone == null);
}
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public String getFacade() {
return facade;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain community indicator results.
* <p/>
@@ -39,28 +37,15 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
protected String zone;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- facade == null ||
- zone == null);
+ return !(
+ facade == null ||
+ zone == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain community indicator results.
* <p/>
@@ -39,8 +37,6 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
protected String zone;
@@ -48,22 +44,11 @@
protected String indicator;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- facade == null ||
- zone == null ||
- indicator == null);
+ return !(
+ facade == null ||
+ zone == null ||
+ indicator == null);
}
@Override
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,86 +0,0 @@
-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;
-import java.util.Locale;
-
-/**
- * Request to extract data.
- * <p/>
- * Created on 3/9/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetSpeciesListForExtractRawDataAndResultsRequest implements CoserRequest {
-
- private static final long serialVersionUID = 1L;
-
- protected Locale locale;
-
- protected List<String> zoneList;
-
- protected List<DataType> extractTypeList;
-
- @Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
- public boolean isFilled() {
- return !(locale == null ||
- CollectionUtils.isEmpty(extractTypeList) ||
- CollectionUtils.isEmpty(zoneList));
- }
-
- public List<DataType> getExtractTypeList() {
- return extractTypeList;
- }
-
- public void setExtractTypeList(List<DataType> extractTypeSet) {
- Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeSet));
- this.extractTypeList = extractTypeSet;
- }
-
- public List<String> getZoneList() {
- return zoneList;
- }
-
- public void setZoneList(List<String> zoneList) {
- Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
- this.zoneList = zoneList;
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain available zones for community indicator results.
* <p/>
@@ -39,27 +37,14 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
@Override
public boolean isFilled() {
- return !(locale == null || facade == null);
+ return !(facade == null);
}
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public String getFacade() {
return facade;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -27,7 +27,6 @@
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
-import java.util.Locale;
/**
* Request to extract data.
@@ -37,34 +36,23 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForExtractRawDataAndResultsRequest implements CoserRequest {
+public class GetZonesForExtractRawDataAndResultsRequest implements CoserRequest, CoserRequestZoneListAware {
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected List<String> zoneList;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null || CollectionUtils.isEmpty(zoneList));
+ return !(CollectionUtils.isEmpty(zoneList));
}
+ @Override
public List<String> getZoneList() {
return zoneList;
}
+ @Override
public void setZoneList(List<String> zoneList) {
Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
this.zoneList = zoneList;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain raw data results.
* <p/>
@@ -39,24 +37,11 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null || facade == null);
+ return !(facade == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain available zones for map results.
* <p/>
@@ -39,27 +37,14 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
@Override
public boolean isFilled() {
- return !(locale == null || facade == null);
+ return !(facade == null);
}
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public String getFacade() {
return facade;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain available zones for community indicator results.
* <p/>
@@ -39,27 +37,14 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
@Override
public boolean isFilled() {
- return !(locale == null || facade == null);
+ return !(facade == null);
}
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public String getFacade() {
return facade;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,5 +1,5 @@
/**
- * Differents implementations of {@link fr.ifremer.coser.result.CoserRequest}.
+ * Implementations of {@link fr.ifremer.coser.result.CoserRequest}.
*
* @since 1.5
*/
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,65 @@
+package fr.ifremer.coser.result.result;
+
+/*
+ * #%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 fr.ifremer.coser.result.CoserResult;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.lang3.tuple.Pair;
+
+import java.io.File;
+import java.util.Map;
+
+/**
+ * Created on 3/15/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ExtractRawDataAndResultsResult implements CoserResult {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final String source;
+
+ protected final MultiKeyMap<String, File> pdfMaps;
+
+ protected final Map<String, Pair<File, String>> pdfCharts;
+
+ public ExtractRawDataAndResultsResult(String source,
+ MultiKeyMap<String, File> pdfMaps,
+ Map<String, Pair<File, String>> pdfCharts) {
+ this.source = source;
+ this.pdfMaps = pdfMaps;
+ this.pdfCharts = pdfCharts;
+ }
+
+ @Override
+ public String getSource() {
+ return source;
+ }
+
+ @Override
+ public Pair<MultiKeyMap<String, File>, Map<String, Pair<File, String>>> getResult() {
+ return Pair.of(pdfMaps, pdfCharts);
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/FileResult.java (from rev 1134, trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/FileResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/FileResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,75 @@
+package fr.ifremer.coser.result.result;
+
+/*
+ * #%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.result.CoserResult;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+
+/**
+ * A result with only one file.
+ * <p/>
+ * A useful method is offered to obtain directly a {@link InputStream} from the result file ({@link #getInputStream()}).
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class FileResult implements CoserResult {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final String source;
+
+ protected final File file;
+
+ public FileResult(String source, File file) {
+ this.file = file;
+ this.source = source;
+ }
+
+ @Override
+ public String getSource() {
+ return source;
+ }
+
+ @Override
+ public File getResult() {
+ return file;
+ }
+
+ public InputStream getInputStream() {
+ try {
+ InputStream inputStream = new FileInputStream(file);
+ return inputStream;
+ } catch (FileNotFoundException e) {
+ // should never happen ?
+ throw new CoserTechnicalException("Could not find file: " + file, e);
+ }
+ }
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/MapResult.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/MapResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/MapResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,58 @@
+package fr.ifremer.coser.result.result;
+
+/*
+ * #%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 fr.ifremer.coser.result.CoserResult;
+
+import java.util.Map;
+
+/**
+ * Created on 3/12/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class MapResult implements CoserResult {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final String source;
+
+ protected final Map<String, String> map;
+
+ public MapResult(String source, Map<String, String> map) {
+ this.map = map;
+ this.source = source;
+ }
+
+ @Override
+ public String getSource() {
+ return source;
+ }
+
+ @Override
+ public Map<String, String> getResult() {
+ return map;
+ }
+
+}
\ No newline at end of file
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/VoidResult.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/VoidResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/VoidResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,52 @@
+package fr.ifremer.coser.result.result;
+
+/*
+ * #%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 fr.ifremer.coser.result.CoserResult;
+
+/**
+ * Created on 3/12/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class VoidResult implements CoserResult {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final String source;
+
+ public VoidResult(String source) {
+ this.source = source;
+ }
+
+ @Override
+ public String getSource() {
+ return source;
+ }
+
+ @Override
+ public Void getResult() {
+ return null;
+ }
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,28 @@
+/**
+ * Implementations of {@link fr.ifremer.coser.result.CoserResult}.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result.result;
+
+/*
+ * #%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%
+ */
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Charts.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Charts.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Charts.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,275 @@
+package fr.ifremer.coser.result.util;
+
+/*
+ * #%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 fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.storage.DataStorageWalker;
+import org.apache.commons.lang3.StringUtils;
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.CategoryAxis;
+import org.jfree.chart.axis.CategoryLabelPositions;
+import org.jfree.chart.axis.NumberAxis;
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.chart.plot.CategoryPlot;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.renderer.category.CategoryItemRenderer;
+import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
+import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
+import org.nuiton.i18n.I18n;
+
+import java.awt.Color;
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Useful methods to generate charts.
+ * <p/>
+ * Created on 3/15/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class Charts {
+
+ public File generateChartFile(String prefix,
+ JFreeChart chart,
+ int width,
+ int height) {
+ try {
+ File file = File.createTempFile(prefix, ".png");
+ file.deleteOnExit();
+ ChartUtilities.saveChartAsPNG(file, chart, width, height);
+ return file;
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save chart", ex);
+ }
+ }
+
+ public String getYearChartTitle(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ String yearAxis = I18n.l(locale, "coser.business.year");
+// String yearAxis = "Year";
+// if ("fr".equals(locale.getLanguage())) {
+// yearAxis = "Ann\u00E9e";
+// } else if ("es".equals(locale.getLanguage())) {
+// yearAxis = "A\u00F1o";
+// }
+ return yearAxis;
+ }
+
+ public JFreeChart generateCommunityChart(Locale locale,
+ ExtractGraphDataWalker walker,
+ IndicatorMap indicatorMap,
+ String indicator,
+ String chartTitle) {
+
+ String indicatorName = indicatorMap.getIndicatorValue(locale, indicator);
+
+ int multiplicator = walker.getMultiplicator();
+ int minYear = walker.getMinYear();
+ int maxYear = walker.getMaxYear();
+ Map<Integer, Double[]> graphData = walker.getGraphData();
+
+ // generate dataset with sorted data
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ Double estimation = entry[0] / multiplicator;
+ Double ecart = entry[1] / multiplicator;
+ statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+ } else {
+ statisticalDataset.add(null, null, "Serie1", indexYear);
+ }
+ }
+
+ // configure chart
+ String yearAxis = getYearChartTitle(locale);
+ CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+ categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+
+ String unit = indicatorMap.getIndicatorUnit(indicator);
+ // label horizontaux
+ String legendY = indicatorName;
+ if (multiplicator != 1) {
+ // affiche par exemple : cm * 1000
+ legendY += " (" + unit + "*" + multiplicator + ")";
+ } else if (StringUtils.isNotEmpty(unit)) {
+ legendY += " (" + unit + ")";
+ }
+ ValueAxis valueAxis = new NumberAxis(legendY);
+ valueAxis.setUpperMargin(0.1);
+
+ CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+
+ CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+ JFreeChart chart = new JFreeChart(chartTitle, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+
+ // remove series legend
+ chart.removeLegend();
+ // white background
+ chart.setBackgroundPaint(Color.WHITE);
+
+ return chart;
+ }
+
+ public JFreeChart generatePopulationChart(Locale locale,
+ ExtractGraphDataWalker walker,
+ IndicatorMap indicatorMap,
+ String indicator,
+ String title) {
+
+ if (!walker.isIndicatorFound()) {
+ // indicator not found
+ return null;
+ }
+
+ int multiplicator = walker.getMultiplicator();
+ int minYear = walker.getMinYear();
+ int maxYear = walker.getMaxYear();
+ Map<Integer, Double[]> graphData = walker.getGraphData();
+
+ String indicatorName = indicatorMap.getIndicatorValue(locale, indicator);
+
+ // generate dataset with sorted data
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ Double estimation = entry[0] / multiplicator;
+ Double ecart = entry[1] / multiplicator;
+ statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+ } else {
+ statisticalDataset.add(null, null, "Serie1", indexYear);
+ }
+ }
+
+ // configure chart
+ String yearAxis = getYearChartTitle(locale);
+ CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+ categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+
+ // label horizontaux
+ String unit = indicatorMap.getIndicatorUnit(indicator);
+ String legendY = indicatorName;
+ if (multiplicator != 1) {
+ // affiche par exemple : cm * 1000
+ legendY += " (" + unit + "*" + multiplicator + ")";
+ } else if (StringUtils.isNotEmpty(unit)) {
+ legendY += " (" + unit + ")";
+ }
+ ValueAxis valueAxis = new NumberAxis(legendY);
+ valueAxis.setUpperMargin(0.1);
+
+ CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+
+ CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+ JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+
+ // remove series legend
+ chart.removeLegend();
+ // white background
+ chart.setBackgroundPaint(Color.WHITE);
+
+ return chart;
+ }
+
+ /**
+ * To extract graph data from a indicator data storage.
+ */
+ public static abstract class ExtractGraphDataWalker implements DataStorageWalker {
+
+ int multiplicator = 1;
+
+ int minYear = Integer.MAX_VALUE;
+
+ int maxYear = Integer.MIN_VALUE;
+
+ boolean indicatorFound = false;
+
+ Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
+
+ protected abstract String getEstimationData(String... tuple);
+
+ protected abstract String getEcartData(String... tuple);
+
+ protected abstract String getYearData(String... tuple);
+
+ @Override
+ public void onRow(String... tuple) {
+
+ indicatorFound = true;
+
+ Double estimation = Double.parseDouble(getEstimationData(tuple));
+ Double ecart = Double.parseDouble(getEcartData(tuple));
+ int year = Integer.parseInt(getYearData(tuple));
+
+ if (year < minYear) {
+ minYear = year;
+ }
+ if (year > maxYear) {
+ maxYear = year;
+ }
+ graphData.put(year, new Double[]{estimation, ecart});
+
+ // si les données sont énormes, on affiche les données
+ // / multiplicator et on le mentionne dans la légende
+ if (estimation > 1e9) {
+ multiplicator = 1000000;
+ }
+ if (estimation > 1e6 && multiplicator < 1000000) {
+ multiplicator = 1000;
+ }
+ }
+
+ public int getMultiplicator() {
+ return multiplicator;
+ }
+
+ public int getMinYear() {
+ return minYear;
+ }
+
+ public int getMaxYear() {
+ return maxYear;
+ }
+
+ public boolean isIndicatorFound() {
+ return indicatorFound;
+ }
+
+ public Map<Integer, Double[]> getGraphData() {
+ return graphData;
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Charts.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,122 @@
+package fr.ifremer.coser.result.util;
+
+/*
+ * #%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.collect.Maps;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.CoserRequestContext;
+import fr.ifremer.coser.result.result.ExtractRawDataAndResultsResult;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ZipUtil;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Useful methods for extract commands.
+ * Created on 3/15/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class Extracts {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(Extracts.class);
+
+ public File assemblyExtractResult(CoserRequestContext context,
+ File extractDirectory,
+ List<String> zoneList,
+ List<ExtractRawDataAndResultsResult> results) {
+
+ Locale locale = context.getLocale();
+
+ // merge all results
+ MultiKeyMap<String, File> pdfMaps = new MultiKeyMap<String, File>();
+ Map<String, Pair<File, String>> pdfCharts = Maps.newHashMap();
+
+ for (ExtractRawDataAndResultsResult result : results) {
+ Pair<MultiKeyMap<String, File>, Map<String, Pair<File, String>>> repositoryResult = result.getResult();
+ MultiKeyMap<String, File> pdfMap = repositoryResult.getLeft();
+ Map<String, Pair<File, String>> pdfChart = repositoryResult.getRight();
+ if (MapUtils.isNotEmpty(pdfMap)) {
+ pdfMaps.putAll(pdfMap);
+ }
+ if (MapUtils.isNotEmpty(pdfChart)) {
+ pdfCharts.putAll(pdfChart);
+ }
+
+ }
+
+ Reports reports = context.getReports();
+
+ // generate pdf if necessary
+ if (MapUtils.isNotEmpty(pdfMaps) || MapUtils.isNotEmpty(pdfCharts)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Generated Extract PDF");
+ }
+ reports.generateExtractPDF(extractDirectory,
+ zoneList,
+ pdfMaps,
+ pdfCharts,
+ context.getZoneMap(),
+ locale);
+ }
+
+ // fichier de décharge en pdf
+ if (log.isDebugEnabled()) {
+ log.debug("Generated decharge PDF");
+ }
+ String filename = Reports.getDechargeFilename(locale);
+ File dechargePDF = new File(extractDirectory, filename);
+ reports.generateDechargePDF(dechargePDF, locale, null, null);
+
+ // make zip
+ if (log.isDebugEnabled()) {
+ log.debug("Make final archive");
+ }
+
+ try {
+ File resultZip = File.createTempFile("coser-extract-", ".zip");
+ resultZip.deleteOnExit();
+ ZipUtil.compress(resultZip, extractDirectory);
+
+ // clean directory
+ FileUtils.deleteDirectory(extractDirectory.getParentFile());
+ return resultZip;
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't create zip file", ex);
+ } finally {
+ // clean directory
+ FileUtils.deleteQuietly(extractDirectory.getParentFile());
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Reports.java (from rev 1141, trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Reports.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Reports.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,451 @@
+package fr.ifremer.coser.result.util;
+
+/*
+ * #%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.itextpdf.text.DocumentException;
+import fr.ifremer.coser.CoserConstants;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.CoserUtils;
+import fr.ifremer.coser.bean.IndicatorMap;
+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.bean.ZoneMap;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import freemarker.cache.ClassTemplateLoader;
+import freemarker.ext.beans.BeansWrapper;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+import org.apache.commons.collections4.keyvalue.MultiKey;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.i18n.I18n;
+import org.w3c.dom.Document;
+import org.xhtmlrenderer.pdf.ITextRenderer;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import static org.nuiton.i18n.I18n.l;
+
+/**
+ * For reports generation.
+ * <p/>
+ * Created on 3/7/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class Reports {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(Reports.class);
+
+ /** Freemarker. */
+ protected Configuration freemarkerConfiguration;
+
+ public Reports() {
+
+ freemarkerConfiguration = new Configuration();
+
+ // needed to overwrite "Defaults to default system encoding."
+ // fix encoding issue on some systems
+ freemarkerConfiguration.setEncoding(Locale.getDefault(), "UTF-8");
+
+ // specific template loader to get template from jars (classpath)
+ ClassTemplateLoader templateLoader = new ClassTemplateLoader(Reports.class, "/ftl");
+ freemarkerConfiguration.setTemplateLoader(templateLoader);
+
+ // pour les maps dans les template (entre autre)
+ freemarkerConfiguration.setObjectWrapper(new BeansWrapper());
+ }
+
+ public static String getDechargeFilename(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ String filename = I18n.l(locale, "coser.business.dataDisclaimer.filename");
+// if (locale != null && "fr".equals(locale.getLanguage())) {
+// filename = "DechargeDonnees.pdf";
+// } else if (locale != null && "es".equals(locale.getLanguage())) {
+// filename = "DatosDeExencionDeResponsabilidad.pdf";
+// } else {
+// filename = "DataDisclaimer.pdf";
+// }
+ return filename;
+ }
+
+ /**
+ * Genere le fichier PDF d'information sur les espèces incluses dans les
+ * calculs des indicateurs de communautés, à jointe à chaque téléchargement.
+ *
+ * @param path path to result
+ * @param resultDirectory result directory
+ * @param locale locale
+ * @param indicatorLocalizedMap localized indicator map
+ * @return generated pdf file
+ */
+ public File generateMetaFilePDF(RSufiResultPath path,
+ File resultDirectory,
+ Locale locale,
+ IndicatorMap indicatorLocalizedMap) {
+
+ Project project = path.getProject();
+ Selection selection = path.getSelection();
+ RSufiResult rsufiResult = path.getRsufiResult();
+
+ File result = null;
+
+ // chargement du reftax et des code types especes pour connaitre
+ // le type des especes de poissons
+ // parcourt du fichier des types de données
+ Map<String, Integer> refTaxSpeciesNumSys = new HashMap<String, Integer>();
+ Map<String, String> refTaxSpeciesName = new HashMap<String, String>();
+ Iterator<String[]> itReftax = project.getRefTaxSpecies().iterator(true);
+ while (itReftax.hasNext()) {
+ String[] tuple = itReftax.next();
+ // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
+ String speciesCode = tuple[3];
+ Integer iNumSys = Integer.valueOf(tuple[1]);
+ refTaxSpeciesNumSys.put(speciesCode, iNumSys);
+
+ // fix html entities bug
+ String speciesSciName = StringEscapeUtils.escapeXml(tuple[4]);
+ String speciesAuthor = StringEscapeUtils.escapeXml(tuple[5]);
+
+ // TODO little hack for italic species
+ refTaxSpeciesName.put(speciesCode, "<span style='font-style:italic'>" + speciesSciName + "</span> " + speciesAuthor);
+ }
+
+ // code type / especes
+ Map<String, Integer[]> specyTypes = new HashMap<String, Integer[]>();
+ Iterator<String[]> itTypeSpecies = project.getTypeEspeces().iterator(true);
+ while (itTypeSpecies.hasNext()) {
+ // "Types";"Commentaire";"NumSys min";"NumSys max","Code"
+ String[] tuple = itTypeSpecies.next();
+ String specyTypeCode = tuple[4];
+
+ Integer iMinNumSys = Integer.valueOf(tuple[2]);
+ Integer iMaxNumSys = Integer.valueOf(tuple[3]);
+ specyTypes.put(specyTypeCode, new Integer[]{iMinNumSys, iMaxNumSys});
+ }
+
+ // le fichier estpopind
+ File estComIndFile = new File(resultDirectory, rsufiResult.getEstComIndName());
+
+ // donnees intermediare (map liste id > liste des indicateurs)
+ Map<String, SortedSet<String>> indicatorMap = new HashMap<String, SortedSet<String>>();
+
+ // le resutat sera une map complexe
+ // map liste id > liste des especes (nom complet)
+ Map<String, SortedSet<String>> speciesMap = new HashMap<String, SortedSet<String>>();
+
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ DataStorage dataStorage = DataStorages.load(estComIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+ Iterator<String[]> estComIndIterator = dataStorage.iterator(true);
+ while (estComIndIterator.hasNext()) {
+ String[] tuple = estComIndIterator.next();
+
+ String indicatorCode = tuple[1];
+ String listIdCode = tuple[2]; // c1, p2, T3 ...
+
+ String listNumber = listIdCode.substring(1); // 1, 2, 3
+
+ // get indicator list
+ SortedSet<String> indicatorList = indicatorMap.get(listNumber);
+ if (indicatorList == null) {
+ indicatorList = new TreeSet<String>();
+ indicatorMap.put(listNumber, indicatorList);
+ }
+
+ // get indicator full name
+ String indicatorName = indicatorLocalizedMap.getIndicatorValue(locale, indicatorCode);
+ // peut arriver pour les indicateurs inconnu par coser
+ if (indicatorName != null) {
+ indicatorList.add(indicatorName);
+ }
+ }
+
+ // seconde pass, remplit la map speciesMap avec les listes configurées
+ // dans la selection
+ for (String listNumber : indicatorMap.keySet()) {
+ List<String> selectionSpeciesList = null;
+ if ("1".equals(listNumber)) {
+ selectionSpeciesList = selection.getSelectedSpecies();
+ } else if ("2".equals(listNumber)) {
+ selectionSpeciesList = selection.getSelectedSpeciesOccDens();
+ } else if ("3".equals(listNumber)) {
+ selectionSpeciesList = selection.getSelectedSpeciesSizeAllYear();
+ } else if ("4".equals(listNumber)) {
+ selectionSpeciesList = selection.getSelectedSpeciesMaturity();
+ }
+
+ if (selectionSpeciesList != null) {
+ SortedSet<String> speciesList = new TreeSet<String>();
+
+ for (String speciesCode : selectionSpeciesList) {
+ // get species full name
+ String speciesName = refTaxSpeciesName.get(speciesCode);
+
+ // recupere le code type de l'espece, "m", "c", "p" ...
+ Integer speciesNumSys = refTaxSpeciesNumSys.get(speciesCode);
+ for (Map.Entry<String, Integer[]> speciesTypeEntry : specyTypes.entrySet()) {
+ String speciesTypeCode = speciesTypeEntry.getKey();
+ Integer[] bound = speciesTypeEntry.getValue();
+
+ if (speciesNumSys >= bound[0] && speciesNumSys <= bound[1]) {
+ speciesName = "(" + speciesTypeCode + ") " + speciesName;
+ break;
+ }
+ }
+ // end code type espece
+
+ speciesList.add(speciesName);
+ }
+ speciesMap.put(listNumber, speciesList);
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't get species list for list id " + listNumber);
+ }
+ }
+ }
+
+ OutputStream os = null;
+ try {
+ // render freemarker template
+ Template mapTemplate = freemarkerConfiguration.getTemplate("metainfo.ftl", locale);
+
+ Map<String, Object> root = new HashMap<String, Object>();
+ root.put("indicatorsMap", indicatorMap);
+ root.put("speciesMap", speciesMap);
+
+ Writer out = new StringWriter();
+ mapTemplate.process(root, out);
+ out.flush();
+
+ // get content as w3c document
+ Document document = CoserUtils.parseDocument(out.toString());
+
+ // render template output as pdf
+ result = File.createTempFile("coser-metainfo-", ".pdf");
+ result.deleteOnExit();
+ os = new FileOutputStream(result);
+
+ ITextRenderer renderer = new ITextRenderer();
+ renderer.setDocument(document, null);
+ renderer.layout();
+ renderer.createPDF(os);
+
+ os.close();
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't generate meta info file", ex);
+ } catch (TemplateException ex) {
+ throw new CoserTechnicalException("Can't generate meta info file", ex);
+ } catch (DocumentException ex) {
+ throw new CoserTechnicalException("Can't generate meta info file", ex);
+ } finally {
+ IOUtils.closeQuietly(os);
+ }
+
+ return result;
+ }
+
+ /**
+ * Genere le PDF dynamique de decharge à partir du template freemarker.
+ *
+ * @param disclamerPdf pdf file to generate
+ * @param locale generated pdf locale
+ */
+ public void generateDechargePDF(File disclamerPdf, Locale locale, Date updateDate, String surveyName) {
+
+ OutputStream os = null;
+
+ try {
+ // get some info to put into pdf
+// Date updateDate = getLastDataUpdateDate();
+
+// // il se peut que pour l'extraction un fichier de décharge ne soit
+// // pas généré pour une campagne en particulier
+// // on passe un nom vide a freemarker
+// String surveyName = "";
+// if (resultDirectory != null && rSufiResult != null) {
+// surveyName = projectService.getProjectSurveyName(resultDirectory, rSufiResult);
+// }
+
+ // render freemarker template
+ Template mapTemplate = freemarkerConfiguration.getTemplate("decharge.ftl", locale);
+
+ Map<String, Object> root = new HashMap<String, Object>();
+ root.put("updateDate", updateDate);
+ root.put("surveyName", surveyName);
+
+ Writer out = new StringWriter();
+ mapTemplate.process(root, out);
+ out.flush();
+
+ // get content as w3c document
+ Document document = CoserUtils.parseDocument(out.toString());
+
+ // render template output as pdf
+ os = new FileOutputStream(disclamerPdf);
+
+ ITextRenderer renderer = new ITextRenderer();
+ renderer.setDocument(document, null);
+ renderer.layout();
+ renderer.createPDF(os);
+
+ os.close();
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't generate decharge file", ex);
+ } catch (TemplateException ex) {
+ throw new CoserTechnicalException("Can't generate decharge file", ex);
+ } catch (DocumentException ex) {
+ throw new CoserTechnicalException("Can't generate decharge file", ex);
+ } finally {
+ IOUtils.closeQuietly(os);
+ }
+ }
+
+ /**
+ * Generate pdf file filled with maps and charts.
+ *
+ * @param directory directory to generate pdf to
+ * @param zones zones ids
+ * @param pdfMaps pdf maps (can be {@code null})
+ * @param pdfCharts pdf charts (can be {@code null})
+ * @param zoneMap zoneMap (to get zone fullnames)
+ * @param locale locale to use for translations
+ */
+ public void generateExtractPDF(File directory,
+ List<String> zones,
+ MultiKeyMap<String, File> pdfMaps,
+ Map<String, Pair<File, String>> pdfCharts,
+ ZoneMap zoneMap,
+ Locale locale) {
+
+ for (String zone : zones) {
+ Collection<File> toDelete = new ArrayList<File>();
+ OutputStream os = null;
+
+ try {
+ StringBuilder htmlContent = new StringBuilder();
+ htmlContent.append("<html><head>");
+ htmlContent.append("<title>").append(l(locale, "coser.business.extract.extracttitle")).append("</title>");
+ htmlContent.append("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />");
+ htmlContent.append("</head><body>");
+
+ if (pdfMaps != null) {
+ for (Map.Entry<MultiKey<? extends String>, File> mapEntry : pdfMaps.entrySet()) {
+ String zoneId = mapEntry.getKey().getKey(0);
+ if (zoneId.equals(zone)) {
+ String speciesName = mapEntry.getKey().getKey(1);
+ File file = mapEntry.getValue();
+
+ String zoneName = zoneMap.getZoneFullName(zoneId);
+ htmlContent.append("<div style='page-break-after: always'>");
+ htmlContent.append("<p>").append(zoneName).append(" - ").append(speciesName).append("</p>");
+ htmlContent.append("<img src='file://").append(file.getAbsolutePath()).append("' />");
+ htmlContent.append("</div>");
+ }
+ }
+ }
+
+ if (pdfCharts != null) {
+ for (Map.Entry<String, Pair<File, String>> chartFileAndData : pdfCharts.entrySet()) {
+ String zoneId = chartFileAndData.getKey();
+ if (zoneId.equals(zone)) {
+ File chartFile = chartFileAndData.getValue().getLeft();
+ String content = chartFileAndData.getValue().getRight();
+
+ htmlContent.append("<div style='page-break-after: always'>");
+ htmlContent.append("<img src='file://");
+ htmlContent.append(chartFile.getAbsolutePath());
+ htmlContent.append("' />");
+ htmlContent.append("<br />");
+ htmlContent.append(l(locale, "coser.business.extract.extractdata")).append(" :");
+ htmlContent.append("<pre>").append(content).append("</pre>");
+ htmlContent.append("</div>");
+
+ // les graphiques ont été générés, a supprimer donc
+ // a ne surtout pas faire avec les cartes !!!
+ toDelete.add(chartFile);
+ }
+ }
+ }
+
+ htmlContent.append("</body></html>");
+
+ // get content as w3c document
+ Document document = CoserUtils.parseDocument(htmlContent.toString());
+
+ // render template output as pdf
+ // remove accents and strange characters from zone display name
+ String zoneDisplay = zoneMap.getZoneFullName(zone);
+ zoneDisplay = StringUtils.stripAccents(zoneDisplay);
+ zoneDisplay = zoneDisplay.replaceAll("[^\\w- ]", "_");
+ File pdfFile = new File(directory, zoneDisplay + ".pdf");
+ os = new FileOutputStream(pdfFile);
+
+ ITextRenderer renderer = new ITextRenderer();
+ renderer.setDocument(document, null);
+ renderer.layout();
+ renderer.createPDF(os);
+
+ os.close();
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't generate log pdf", ex);
+ } catch (DocumentException ex) {
+ throw new CoserTechnicalException("Can't generate log pdf", ex);
+ } finally {
+ IOUtils.closeQuietly(os);
+
+ // delete file collection
+ for (File file : toDelete) {
+ FileUtils.deleteQuietly(file);
+ }
+ }
+ }
+ }
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,28 @@
+/**
+ * Useful tools used by commands.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result.util;
+
+/*
+ * #%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%
+ */
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorageWalker.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorageWalker.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorageWalker.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,41 @@
+package fr.ifremer.coser.storage;
+
+/*
+ * #%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%
+ */
+
+/**
+ * To walk throw a data storage.
+ * <p/>
+ * Created on 3/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface DataStorageWalker {
+
+ /**
+ * Invoked for each row of the data storage.
+ *
+ * @param row the current row
+ */
+ void onRow(String... row);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorageWalker.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,6 +23,8 @@
*/
import au.com.bytecode.opencsv.CSVReader;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
import fr.ifremer.coser.CoserConstants;
import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.services.CommonService;
@@ -38,7 +40,9 @@
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
+import java.io.StringWriter;
import java.io.Writer;
+import java.util.Iterator;
import static org.nuiton.i18n.I18n.t;
@@ -142,6 +146,24 @@
return file;
}
+ public static String toString(DataStorage storage) {
+ String rawDataText;
+ StringWriter writer = null;
+ try {
+ writer = new StringWriter();
+ DataStorages.save(storage, writer);
+ rawDataText = writer.toString();
+ try {
+ writer.close();
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not close writer", e);
+ }
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+ return rawDataText;
+ }
+
/**
* Save a datastorage to a writer.
*
@@ -177,4 +199,98 @@
IOUtils.closeQuietly(writer);
}
}
+
+ /**
+ * //TODO Use a walker
+ *
+ * @param storage the storage to test
+ * @param predicate predicate to match at least on one row
+ * @param skipHeader to skip the header of storage
+ * @param <P> type of predicate
+ * @return {@code true} if a row matchs the predicate
+ * @since 1.5
+ */
+ public static <P extends Predicate<String[]>> boolean match(DataStorage storage,
+ P predicate,
+ boolean skipHeader) {
+ Preconditions.checkNotNull(storage);
+ Preconditions.checkNotNull(predicate);
+
+ Iterator<String[]> iterator = storage.iterator(skipHeader);
+
+ boolean result = false;
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (predicate.apply(tuple)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Gets a sub storage of all matching rows for the given predicate on the given storage.
+ * <p/>
+ * The result header is the given one in parameter {@code header}.
+ *
+ * @param storage storage to read
+ * @param predicate predicate to match rows to include in sub storage
+ * @param header new header to use
+ * @param <P> type of predicate
+ * @return the sub storage
+ */
+ public static <P extends Predicate<String[]>> DataStorage sub(DataStorage storage,
+ P predicate,
+ String... header) {
+
+ Preconditions.checkNotNull(storage);
+ Preconditions.checkNotNull(predicate);
+ Preconditions.checkNotNull(header);
+
+ final DataStorage result = new MemoryDataStorage();
+ result.add(header);
+
+ walk(storage, predicate, new DataStorageWalker() {
+ @Override
+ public void onRow(String... row) {
+ result.add(row);
+ }
+ });
+ return result;
+ }
+
+ public static <W extends DataStorageWalker> void walk(DataStorage storage,
+ W walker) {
+
+ Preconditions.checkNotNull(storage);
+ Preconditions.checkNotNull(walker);
+
+ Iterator<String[]> iterator = storage.iterator(true);
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ walker.onRow(tuple);
+ }
+ }
+
+ public static <P extends Predicate<String[]>, W extends DataStorageWalker> void walk(DataStorage storage,
+ P predicate,
+ W walker) {
+
+ Preconditions.checkNotNull(storage);
+ Preconditions.checkNotNull(predicate);
+ Preconditions.checkNotNull(walker);
+
+ Iterator<String[]> iterator = storage.iterator(true);
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (predicate.apply(tuple)) {
+ walker.onRow(tuple);
+ }
+ }
+ }
+
}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2014-03-15 15:11:29 UTC (rev 1146)
@@ -106,6 +106,8 @@
coser.business.data.type.population=Population indices by species by area
coser.business.data.type.source=Raw data by sampling unit (generally by haul)
coser.business.dataDisclaimer.filename=DataDisclaimer.pdf
+coser.business.echobase.community.header=Survey,Index,Species,Stratum,Year,Estimate,StandardDeviation,CV
+coser.business.echobase.population.header=Survey,Index,List,Species,Stratum,Year,Estimate,StandardDeviation,CV
coser.business.extract.creationdate=Creation date \:
coser.business.extract.extractdata=Data
coser.business.extract.extracttitle=Extract
@@ -147,6 +149,8 @@
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.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 \!
coser.business.specesList.name=%s List %s
coser.business.specesList.nameForAll=All List %s
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2014-03-15 15:11:29 UTC (rev 1146)
@@ -106,6 +106,8 @@
coser.business.data.type.population=Des indices biologiques par espèce et par zone
coser.business.data.type.source=Des données par opération d'échantillonnage (en général par trait de chalut)
coser.business.dataDisclaimer.filename=DechargeDonnees.pdf
+coser.business.echobase.community.header=Campagne,Indice,Espèce,Strate,Annee,Estimation,EcartType,CV
+coser.business.echobase.population.header=Campagne,Indice,Liste,Espèce,Strate,Annee,Estimation,EcartType,CV
coser.business.extract.creationdate=Date de création \:
coser.business.extract.extractdata=Données du graphique
coser.business.extract.extracttitle=Extraction
@@ -147,6 +149,8 @@
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.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é \!
coser.business.specesList.name=%s Liste %s
coser.business.specesList.nameForAll=Tous Liste %s
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -47,7 +47,7 @@
@Test
public void getIndicators() {
IndicatorMap indicatorMap = new IndicatorMap(config.getWebIndicatorsFile());
- MultiKeyMap<String, String> map = indicatorMap.getMap();
+ MultiKeyMap<String, String> map = indicatorMap.map;
Assert.assertNotNull(map);
Assert.assertEquals(200, map.size());
}
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -50,7 +50,7 @@
EchoBaseResultRepositoryProvider provider = new EchoBaseResultRepositoryProvider(basedir);
- Set<EchoBaseResultRepository> resultRepositories = provider.loadRepositories(serviceContext);
+ Set<EchoBaseResultRepository> resultRepositories = provider.loadRepositories();
Assert.assertNotNull(resultRepositories);
Assert.assertEquals(2, resultRepositories.size());
}
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,7 +22,9 @@
* #L%
*/
-import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
+import fr.ifremer.coser.result.CoserCommand;
+import fr.ifremer.coser.result.CoserCommandFactory;
+import fr.ifremer.coser.result.DefaultCoserRequestContext;
import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
@@ -45,9 +47,9 @@
*/
public class EchoBaseResultRepositoryTest extends CoserTestAbstract {
- protected ResultRepositoryCommandEngine repository1;
+ protected EchoBaseResultRepository repository1;
- protected ResultRepositoryCommandEngine repository2;
+ protected EchoBaseResultRepository repository2;
@Override
public void initProjectDatabase() throws IOException {
@@ -56,14 +58,14 @@
EchoBaseResultRepositoryProvider repositoryProvider = new EchoBaseResultRepositoryProvider(projectsDirectory);
- Set<EchoBaseResultRepository> repositories = repositoryProvider.loadRepositories(serviceContext);
+ Set<EchoBaseResultRepository> repositories = repositoryProvider.loadRepositories();
for (EchoBaseResultRepository repository : repositories) {
String projectName = repository.project.getName();
if ("project1".equals(projectName)) {
- repository1 = repositoryProvider.newEngine(repository);
+ repository1 = repository;
} else if ("project2".equals(projectName)) {
- repository2 = repositoryProvider.newEngine(repository);
+ repository2 = repository;
}
}
Assume.assumeTrue("Could not find repository named *project1*", repository1 != null);
@@ -73,16 +75,24 @@
@Test
public void getAvailableZones() throws Exception {
+ CoserCommandFactory commandFactory = serviceContext.getCommandFactory();
+ DefaultCoserRequestContext requestContext =
+ new DefaultCoserRequestContext(serviceContext, Locale.FRANCE);
+
+ CoserCommand command;
+
// Map request
GetZonesForMapResultRequest mapRequest = new GetZonesForMapResultRequest();
- mapRequest.setLocale(Locale.FRANCE);
mapRequest.setFacade("atlantique");
Map<String, String> availableZones;
- Assert.assertTrue(repository1.acceptRequest(mapRequest));
- availableZones = (Map<String, String>) repository1.executeRequest(mapRequest).getResult();
+
+ command = commandFactory.newCommand(requestContext, repository1, mapRequest);
+
+ Assert.assertTrue(command.accept(mapRequest));
+ availableZones = (Map<String, String>) command.execute(mapRequest).getResult();
Assert.assertNotNull(availableZones);
Assert.assertEquals(1, availableZones.size());
Assert.assertTrue(availableZones.containsKey("gdgciem8"));
@@ -90,24 +100,25 @@
// pas de zones pour la facade
mapRequest.setFacade("mediteranee");
- Assert.assertFalse(repository1.acceptRequest(mapRequest));
-// availableZones = (Map<String, String>) repository1.executeRequest(mapRequest).getResult();
+ Assert.assertFalse(command.accept(mapRequest));
+// availableZones = (Map<String, String>) command.execute(repository1, mapRequest).getResult();
// Assert.assertNull(availableZones);
// facade inconnue
mapRequest.setFacade("mediteranee2");
- Assert.assertFalse(repository1.acceptRequest(mapRequest));
-// availableZones = (Map<String, String>) repository1.executeRequest(mapRequest).getResult();
+ Assert.assertFalse(command.accept(mapRequest));
+// availableZones = (Map<String, String>) command.execute(repository1, mapRequest).getResult();
// Assert.assertNull(availableZones);
// Population request
GetZonesForPopulationIndicatorResultRequest popRequest = new GetZonesForPopulationIndicatorResultRequest();
- popRequest.setLocale(Locale.FRANCE);
+ command = commandFactory.newCommand(requestContext, repository1, popRequest);
+
popRequest.setFacade("atlantique");
- Assert.assertTrue(repository1.acceptRequest(popRequest));
- availableZones = (Map<String, String>) repository1.executeRequest(popRequest).getResult();
+ Assert.assertTrue(command.accept(popRequest));
+ availableZones = (Map<String, String>) command.execute(popRequest).getResult();
Assert.assertNotNull(availableZones);
Assert.assertEquals(1, availableZones.size());
Assert.assertTrue(availableZones.containsKey("gdgciem8"));
@@ -115,24 +126,25 @@
// pas de zones pour la facade
popRequest.setFacade("mediteranee");
- Assert.assertFalse(repository1.acceptRequest(popRequest));
-// availableZones = (Map<String, String>) repository1.executeRequest(popRequest).getResult();
+ Assert.assertFalse(command.accept(popRequest));
+// availableZones = (Map<String, String>) command.execute(repository1, popRequest).getResult();
// Assert.assertNull(availableZones);
// facade inconnue
popRequest.setFacade("mediteranee2");
- Assert.assertFalse(repository1.acceptRequest(popRequest));
-// availableZones = (Map<String, String>) repository1.executeRequest(popRequest).getResult();
+ Assert.assertFalse(command.accept(popRequest));
+// availableZones = (Map<String, String>) command.execute(repository1, popRequest).getResult();
// Assert.assertNull(availableZones);
// Community request
GetZonesForCommunityIndicatorResultRequest comRequest = new GetZonesForCommunityIndicatorResultRequest();
- comRequest.setLocale(Locale.FRANCE);
+
+ command = commandFactory.newCommand(requestContext, repository1, comRequest);
comRequest.setFacade("atlantique");
- Assert.assertTrue(repository1.acceptRequest(comRequest));
- availableZones = (Map<String, String>) repository1.executeRequest(comRequest).getResult();
+ Assert.assertTrue(command.accept(comRequest));
+ availableZones = (Map<String, String>) command.execute(comRequest).getResult();
Assert.assertNotNull(availableZones);
Assert.assertEquals(1, availableZones.size());
Assert.assertTrue(availableZones.containsKey("gdgciem8"));
@@ -140,14 +152,14 @@
// pas de zones pour la facade
comRequest.setFacade("mediteranee");
- Assert.assertFalse(repository1.acceptRequest(comRequest));
-// availableZones = (Map<String, String>) repository1.executeRequest(comRequest).getResult();
+ Assert.assertFalse(command.accept(comRequest));
+// availableZones = (Map<String, String>) command.execute(repository1, comRequest).getResult();
// Assert.assertNull(availableZones);
// facade inconnue
comRequest.setFacade("mediteranee2");
- Assert.assertFalse(repository1.acceptRequest(comRequest));
-// availableZones = (Map<String, String>) repository1.executeRequest(comRequest).getResult();
+ Assert.assertFalse(command.accept(comRequest));
+// availableZones = (Map<String, String>) command.execute(repository1, comRequest).getResult();
// Assert.assertNull(availableZones);
}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -49,9 +49,9 @@
File basedir = config.getWebIndicatorsProjectsDirectory();
- LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(basedir);
+ LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(config, basedir);
- Set<LegacyResultRepository> resultRepositories = provider.loadRepositories(serviceContext);
+ Set<LegacyResultRepository> resultRepositories = provider.loadRepositories();
Assert.assertNotNull(resultRepositories);
Assert.assertEquals(2, resultRepositories.size());
}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -30,8 +30,8 @@
import java.util.Locale;
import java.util.Map;
-import fr.ifremer.coser.CoserServiceContext;
-import fr.ifremer.coser.DefaultCoserServiceContext;
+import fr.ifremer.coser.CoserApplicationContext;
+import fr.ifremer.coser.DefaultCoserApplicationContext;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -61,7 +61,7 @@
private static final Log log = LogFactory.getLog(CoserTestAbstract.class);
protected static CoserBusinessConfig config;
- protected static CoserServiceContext serviceContext;
+ protected static CoserApplicationContext serviceContext;
protected static File testDirectory;
@@ -86,7 +86,7 @@
config.setWebIndicatorsFile(CoserTestAbstract.class.getResource("/webindicators.csv").getFile());
config.setWebZonesFile(CoserTestAbstract.class.getResource("/webzones.csv").getFile());
- serviceContext = new DefaultCoserServiceContext(config);
+ serviceContext = new DefaultCoserApplicationContext(config);
}
@AfterClass
Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,117 +0,0 @@
-package fr.ifremer.coser.web;
-
-/*
- * #%L
- * Coser :: Web
- * %%
- * 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 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 com.google.common.base.Preconditions;
-import fr.ifremer.coser.CoserServiceContext;
-import fr.ifremer.coser.DefaultCoserServiceContext;
-import fr.ifremer.coser.bean.IndicatorMap;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.CoserResultEngine;
-import fr.ifremer.coser.services.WebService;
-import org.nuiton.config.ArgumentsParserException;
-import org.nuiton.i18n.I18n;
-import org.nuiton.i18n.init.DefaultI18nInitializer;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class CoserApplicationContext {
-
- /**
- * Shared application context.
- */
- protected static CoserApplicationContext context;
-
- public static CoserApplicationContext get() {
- Preconditions.checkState(context != null, "Application was not initialized!");
- return context;
- }
-
- public static void init() {
- context = new CoserApplicationContext();
- }
-
- public static void close() {
- context = null;
- }
-
- /**
- * Business layer context.
- */
- protected CoserServiceContext serviceContext;
-
- /**
- * Web config.
- */
- protected CoserWebConfig config;
-
- //TODO Remove this soon
- protected WebService webService;
-
- protected CoserResultEngine resultService;
-
- public CoserApplicationContext() {
-
- DefaultI18nInitializer i18nInitializer = new DefaultI18nInitializer("coser-i18n");
- // To see on screen none translated sentences
- i18nInitializer.setMissingKeyReturnNull(true);
- I18n.init(i18nInitializer, null);
-
- config = new CoserWebConfig();
-
- try {
- config.parse();
- } catch (ArgumentsParserException ex) {
- throw new CoserWebException("Can't read configuration", ex);
- }
-
- serviceContext = new DefaultCoserServiceContext(config);
-
- webService = new WebService(config);
- resultService = new CoserResultEngine(serviceContext);
- }
-
- public WebService getWebService() {
- return webService;
- }
-
- public CoserResultEngine getResultService() {
- return resultService;
- }
-
- public CoserWebConfig getConfig() {
- return config;
- }
-
- public IndicatorMap getIndicatorsMap() {
- return serviceContext.getIndicatorsMap();
- }
-
- public ZoneMap getZonesMap() {
- return serviceContext.getZonesMap();
- }
-
-}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -31,9 +31,9 @@
/**
* To listen start and end of the application.
* <p/>
- * On start we will init the application context ({@link CoserApplicationContext#init()}).
+ * On start we will init the application context ({@link CoserWebApplicationContext#init()}).
* <p/>
- * On stop, just release close the application context ({@link CoserApplicationContext#close()}).
+ * On stop, just release close the application context ({@link CoserWebApplicationContext#close()}).
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.5
@@ -50,7 +50,7 @@
if (log.isInfoEnabled()) {
log.info("Application starting at " + new Date() + "...");
}
- CoserApplicationContext.init();
+ CoserWebApplicationContext.init();
}
@Override
@@ -58,6 +58,6 @@
if (log.isInfoEnabled()) {
log.info("Application is ending at " + new Date() + "...");
}
- CoserApplicationContext.close();
+ CoserWebApplicationContext.close();
}
}
Copied: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebApplicationContext.java (from rev 1145, trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java)
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebApplicationContext.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebApplicationContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,81 @@
+package fr.ifremer.coser.web;
+
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * 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 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 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;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserWebApplicationContext extends DefaultCoserApplicationContext {
+
+ /**
+ * Shared application context.
+ */
+ protected static CoserWebApplicationContext context;
+
+ public static CoserWebApplicationContext get() {
+ Preconditions.checkState(context != null, "Application was not initialized!");
+ return context;
+ }
+
+ public static void init() {
+
+ DefaultI18nInitializer i18nInitializer = new DefaultI18nInitializer("coser-i18n");
+ // To see on screen none translated sentences
+ i18nInitializer.setMissingKeyReturnNull(true);
+ I18n.init(i18nInitializer, null);
+
+ context = new CoserWebApplicationContext();
+ }
+
+ public static void close() {
+ context = null;
+ }
+
+ public CoserWebApplicationContext() {
+ super(new CoserWebConfig());
+ }
+
+ @Override
+ 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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,15 +25,15 @@
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.CoserResultEngine;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.DefaultCoserRequestContext;
import fr.ifremer.coser.result.repository.ResultRepositoryType;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
-import fr.ifremer.coser.result.request.CoserRequestSpeciesAware;
-import fr.ifremer.coser.result.request.CoserRequestZoneAware;
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.web.actions.common.CoserAction;
@@ -57,33 +57,24 @@
protected final CoserAction action;
- protected final WebService webService;
+ protected WebService webService;
- protected final CoserResultEngine resultService;
+ protected CoserRequestExecutor resultService;
- protected final CoserWebConfig config;
+ protected final CoserWebApplicationContext applicationContext;
- protected final CoserApplicationContext applicationContext;
-
public ServiceHelper(CoserAction action) {
Preconditions.checkNotNull(action);
- this.applicationContext = CoserApplicationContext.get();
+ this.applicationContext = CoserWebApplicationContext.get();
this.action = action;
- this.webService = applicationContext.getWebService();
- this.resultService = applicationContext.getResultService();
- this.config = applicationContext.getConfig();
}
- public Map<String, ResultRepositoryType> getRepositoryTypes() {
- return resultService.getRepositoryTypes();
- }
-
// --------------------------------------------------------------------- //
// --- Facade methods -------------------------------------------------- //
// --------------------------------------------------------------------- //
public Map<String, String> getFacades() {
- return applicationContext.getZonesMap().getFacades();
+ return applicationContext.getZoneMap().getFacades();
}
public String getFacadeDisplayName(String facade) {
@@ -96,37 +87,24 @@
// --------------------------------------------------------------------- //
public Map<String, List<String>> getZoneByFacade() {
- return applicationContext.getZonesMap().getZoneByFacade();
+ return applicationContext.getZoneMap().getZoneByFacade();
}
public Map<String, String> getZonePictures() {
- return applicationContext.getZonesMap().getZonePictures();
+ return applicationContext.getZoneMap().getZonePictures();
}
public Map<String, String> getZoneMetaInfo(Locale locale) {
- return applicationContext.getZonesMap().getZoneMetaInfo(locale);
+ return applicationContext.getZoneMap().getZoneMetaInfo(locale);
}
- //FIXME Remove this
- public Map<String, String> getAvailableZones(CoserRequest request) {
- return getMultipleResultAsMap(request);
- }
-
-// public Map<String, String> getZoneForFacade() {
-// try {
-// return webService.getZoneForFacade(null, false, false);
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not obtain zone for facades", e);
-// }
-// }
-
public String getZoneFullName(String zoneId) {
- return applicationContext.getZonesMap().getZoneFullName(zoneId);
+ return applicationContext.getZoneMap().getZoneFullName(zoneId);
}
- public String getZoneDisplayName(CoserRequestZoneAware request) {
- Map<String, String> availableZones = getAvailableZones(request);
- String displayName = availableZones.get(request.getZone());
+ public String getZoneDisplayName(CoserRequest request, String zone) {
+ Map<String, String> availableZones = getMultipleResultAsMap(request);
+ String displayName = availableZones.get(zone);
return displayName;
}
@@ -134,14 +112,9 @@
// --- Species methods ------------------------------------------------- //
// --------------------------------------------------------------------- //
- //FIXME Remove this
- public Map<String, String> getAvailableSpecies(CoserRequest request) {
- return resultService.getAvailableSpecies(request);
- }
-
- public String getSpeciesDisplayName(CoserRequestSpeciesAware request) {
- Map<String, String> availableSpecies = getAvailableSpecies(request);
- String displayName = availableSpecies.get(request.getSpecies());
+ public String getSpeciesDisplayName(CoserRequest request, String species) {
+ Map<String, String> availableSpecies = getMultipleResultAsMap(request);
+ String displayName = availableSpecies.get(species);
return displayName;
}
@@ -149,30 +122,9 @@
// --- Indicator methods ----------------------------------------------- //
// --------------------------------------------------------------------- //
- //FIXME Remove this
- public Map<String, String> getAvailableIndicators(CoserRequest request) {
- return resultService.getAvailableIndicators(request);
- }
-
-// public Map<String, String> getIndicators(List<String> selectZones, DataType dataType) {
-// try {
-// return webService.getIndicators(selectZones, dataType, action.getLocale());
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not obtain indicators", e);
-// }
-// }
-
-// public Map<String, String> getSpecies(List<String> selectZones) {
-// try {
-// return webService.getSpecies(selectZones, false);
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not obtain species", e);
-// }
-// }
-
- public String getIndicatorDisplayName(AbstractGetIndicatorResultRequest request) {
- Map<String, String> availableIndicators = getAvailableIndicators(request);
- String displayName = availableIndicators.get(request.getIndicator());
+ public String getIndicatorDisplayName(CoserRequest request, String indicator) {
+ Map<String, String> availableIndicators = getMultipleResultAsMap(request);
+ String displayName = availableIndicators.get(indicator);
return displayName;
}
@@ -180,26 +132,12 @@
// --- Result methods -------------------------------------------------- //
// --------------------------------------------------------------------- //
-// public Map<String, String> getIndicatorsResultsPerZone() {
-// try {
-// return webService.getIndicatorsResultsPerZone();
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not get indicators results per zone", e);
-// }
-// }
-
-// public Map<String, String> getMapsResultsPerZone() {
-// try {
-// return webService.getMapsResultsPerZone();
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not get map results per zone", e);
-// }
-// }
-
public FileResult getFileResult(CoserRequest request) {
- CoserResult result = resultService.getUniqueResult(request);
+ CoserRequestContext context = newRequestContext();
+ CoserResult result = getRequestExecutor().executeUnique(context, request);
+
if (!(result instanceof FileResult)) {
throw new CoserWebException(
"Result should a FileResult, but was: " + result);
@@ -210,8 +148,10 @@
public MapResult getMapResult(CoserRequest request) {
- CoserResult result = resultService.getUniqueResult(request);
+ CoserRequestContext context = newRequestContext();
+ CoserResult result = getRequestExecutor().executeUnique(context, request);
+
if (!(result instanceof MapResult)) {
throw new CoserWebException(
"Result should a MapResult, but was: " + result);
@@ -222,8 +162,10 @@
public Map<String, String> getMultipleResultAsMap(CoserRequest request) {
- List<CoserResult> result = resultService.getMultipleResult(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)) {
@@ -236,37 +178,40 @@
return resultAsMap;
}
+ /**
+ * Extract raw data and results.
+ *
+ * @param request extract request
+ */
+ public FileResult extractResults(ExtractRawDataAndResultsRequest request) {
+
+ CoserRequestContext context = newRequestContext();
+
+ // Get all extracted data
+ FileResult result = getRequestExecutor().executeUnique(context, request);
+ return result;
+ }
+
public void deleteResults(DeleteResultsRequest request) {
+ CoserRequestContext context = newRequestContext();
+
// do delete results (don't care about result)
- resultService.getMultipleResult(request);
+ getRequestExecutor().executeAll(context, request);
// reload projects
- resultService.resetRepositories();
+ applicationContext.getRepositoryProvider().resetRepositories();
}
-// public void deleteIndicatorsResult(List<String> indicatorsZonesId) {
-// try {
-// webService.deleteIndicatorsResult(indicatorsZonesId);
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not delete indicator results", e);
-// }
-// }
-//
-// public void deleteMapsResult(List<String> mapsZonesId) {
-// try {
-// webService.deleteMapsResult(mapsZonesId);
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not delete map results", e);
-// }
-// }
-
public void registerNewUploadedResults(String login, File resultFile) {
try {
- webService.registerNewUploadedResults(login, resultFile);
+ getWebService().registerNewUploadedResults(login, resultFile);
} catch (CoserBusinessException ex) {
throw new CoserWebException("Can't register new result file", ex);
}
+
+ // reload projects
+ applicationContext.getRepositoryProvider().resetRepositories();
}
// --------------------------------------------------------------------- //
@@ -274,10 +219,37 @@
// --------------------------------------------------------------------- //
public CoserWebConfig getConfig() {
- return config;
+ return applicationContext.getConfig();
}
public void reloadProjects() {
- resultService.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;
+ }
+
+ protected WebService getWebService() {
+ if (webService == null) {
+ webService = new WebService(getConfig());
+ }
+ return webService;
+ }
+
+ protected CoserRequestExecutor getRequestExecutor() {
+ if (resultService == null) {
+ resultService = new CoserRequestExecutor(applicationContext);
+ }
+ return resultService;
+ }
+
+ protected CoserRequestContext newRequestContext() {
+ return new DefaultCoserRequestContext(applicationContext,
+ action.getLocale());
+ }
}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -92,11 +92,11 @@
zonesId));
}
- DeleteResultsRequest request = requestBuilder().
- addResultRepositoryType(repositoryType).
+ DeleteResultsRequest request = requestBuilder(DeleteResultsRequest.class).
+ addRepositoryType(repositoryType).
addResultType(resultType).
addZoneList(zonesId).
- toDeleteResultsRequest();
+ toRequest();
getService().deleteResults(request);
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -118,9 +118,9 @@
facades = getService().getFacades();
zonesByFacades = getService().getZoneByFacade();
- GetAllResultsRequest request = requestBuilder().
- addResultRepositoryType(getSelectedRepositoryType()).
- toGetAllResultsRequest();
+ GetAllResultsRequest request = requestBuilder(GetAllResultsRequest.class).
+ addRepositoryType(getSelectedRepositoryType()).
+ toRequest();
results = Maps.newEnumMap(ResultType.class);
if (selectedRepositoryType != null) {
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,8 +21,9 @@
package fr.ifremer.coser.web.actions.com;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
-import fr.ifremer.coser.result.request.GetCommunityIndicatorResultRequest;
+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 java.util.Map;
@@ -55,8 +56,6 @@
/** La liste actuellement selectionnée (cas null géré). */
protected String list;
- protected AbstractGetIndicatorResultRequest request;
-
public String getFacade() {
return facade;
}
@@ -98,23 +97,31 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ GetZonesForCommunityIndicatorResultRequest request =
+ requestBuilder(GetZonesForCommunityIndicatorResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return getService().getZoneDisplayName(request, zone);
}
public String getIndicatorDisplayName() {
- return getService().getIndicatorDisplayName(request);
+ GetIndicatorsForCommunityIndicatorResultRequest request =
+ requestBuilder(GetIndicatorsForCommunityIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ return getService().getIndicatorDisplayName(request, indicator);
}
@Override
public String execute() {
-
- request = requestBuilder(GetCommunityIndicatorResultRequest.class).
- addFacade(facade).
- addZone(zone).
- addIndicator(indicator).
- addSpecies(list).
- toRequest();
- lists = getService().getAvailableSpecies(request);
+ GetSpeciesListForCommunityIndicatorResultRequest request =
+ requestBuilder(GetSpeciesListForCommunityIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ toRequest();
+ lists = getService().getMultipleResultAsMap(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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,9 +21,12 @@
package fr.ifremer.coser.web.actions.com;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
+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 org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -89,24 +92,29 @@
return result.getSource();
}
- // @Action(results = {@Result(type = "stream", params = {"contentType", "image/png", "inputName", "inputStream"})})
@Action(results = {@Result(type = "stream", params = {"contentType", "image/png"})})
public String execute() {
- AbstractGetIndicatorResultRequest request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- addIndicator(indicator).
- addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType.GRAPH).
- addSpecies(list).
- toGetCommunityIndicatorResultRequest();
- if (list == null) {
+ GetCommunityIndicatorResultGraphRequest request =
+ requestBuilder(GetCommunityIndicatorResultGraphRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ addSpecies(list).
+ toRequest();
- //TODO Improve this (add a getFirstAvailableSpecies method)
- // on prend la première entrée dans le fichier
- Map<String, String> lists = getService().getAvailableSpecies(request);
- if (!lists.isEmpty()) {
- request.setSpecies(lists.keySet().iterator().next());
+ if (StringUtils.isEmpty(list)) {
+
+ // Get the first species found in indicators file
+ GetSpeciesListForCommunityIndicatorResultRequest speciesRequest =
+ requestBuilder(GetSpeciesListForCommunityIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ toRequest();
+ Map<String, String> speciesMap = getService().getMultipleResultAsMap(speciesRequest);
+ if (MapUtils.isNotEmpty(speciesMap)) {
+ request.setSpecies(speciesMap.keySet().iterator().next());
}
}
result = getService().getFileResult(request);
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,9 +21,12 @@
package fr.ifremer.coser.web.actions.com;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
+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 org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -89,25 +92,29 @@
return result.getSource();
}
- // @Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
@Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "contentDisposition", "attachment; filename=\"${filename}\""})})
public String execute() {
- AbstractGetIndicatorResultRequest request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- addIndicator(indicator).
- addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType.DATA).
- addSpecies(list).
- toGetCommunityIndicatorResultRequest();
+ GetCommunityIndicatorResultDataRequest request =
+ requestBuilder(GetCommunityIndicatorResultDataRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ addSpecies(list).
+ toRequest();
- if (list == null) {
+ if (StringUtils.isEmpty(list)) {
- //TODO Improve this (add a getFirstAvailableSpecies method)
- // on prend la première entrée dans le fichier
- Map<String, String> lists = getService().getAvailableSpecies(request);
- if (!lists.isEmpty()) {
- request.setSpecies(lists.keySet().iterator().next());
+ // Get the first species found in indicators file
+ GetSpeciesListForCommunityIndicatorResultRequest speciesRequest =
+ requestBuilder(GetSpeciesListForCommunityIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ toRequest();
+ Map<String, String> speciesMap = getService().getMultipleResultAsMap(speciesRequest);
+ if (MapUtils.isNotEmpty(speciesMap)) {
+ request.setSpecies(speciesMap.keySet().iterator().next());
}
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,8 @@
package fr.ifremer.coser.web.actions.com;
-import fr.ifremer.coser.result.request.GetCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CommonIndicator;
/**
@@ -39,10 +40,17 @@
private static final long serialVersionUID = 1663244944108703571L;
@Override
- protected GetCommunityIndicatorResultRequest createRequest() {
- return requestBuilder(GetCommunityIndicatorResultRequest.class).
+ protected GetIndicatorsForCommunityIndicatorResultRequest createIndicatorsRequest() {
+ return requestBuilder(GetIndicatorsForCommunityIndicatorResultRequest.class).
addFacade(facade).
addZone(zone).
toRequest();
}
+
+ @Override
+ protected GetZonesForCommunityIndicatorResultRequest createZonesRequest() {
+ return requestBuilder(GetZonesForCommunityIndicatorResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ }
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.com;
-import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
@@ -39,9 +39,9 @@
private static final long serialVersionUID = 3385467755357775199L;
@Override
- protected CoserRequest createRequest() {
- return requestBuilder().
+ protected GetZonesForCommunityIndicatorResultRequest createZonesRequest() {
+ return requestBuilder(GetZonesForCommunityIndicatorResultRequest.class).
addFacade(facade).
- toGetCommunityIndicatorResultRequest();
+ toRequest();
}
}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,9 +21,7 @@
package fr.ifremer.coser.web.actions.common;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import fr.ifremer.coser.result.CoserRequest;
import java.util.Map;
@@ -42,21 +40,23 @@
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
- private static final Log log = LogFactory.getLog(CommonIndicator.class);
-
protected String facade;
protected String zone;
- protected String species;
-
protected String zonePicture;
protected Map<String, String> indicators;
- protected AbstractGetIndicatorResultRequest request;
+ /**
+ * @return the request to get zones
+ */
+ protected abstract CoserRequest createZonesRequest();
- protected abstract AbstractGetIndicatorResultRequest createRequest();
+ /**
+ * @return the request to get indicators
+ */
+ protected abstract CoserRequest createIndicatorsRequest();
public String getFacade() {
return facade;
@@ -74,14 +74,6 @@
this.zone = zone;
}
- public String getSpecies() {
- return species;
- }
-
- public void setSpecies(String species) {
- this.species = species;
- }
-
public Map<String, String> getIndicators() {
return indicators;
}
@@ -95,23 +87,15 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ CoserRequest zonesRequest = createZonesRequest();
+ return getService().getZoneDisplayName(zonesRequest, zone);
}
- public String getSpeciesDisplayName() {
- return getService().getSpeciesDisplayName(request);
- }
-
@Override
public String execute() {
- if (log.isInfoEnabled()) {
- log.info(String.format("Looking for indicator for zone %s and species %s", zone, species));
- }
-
- request = createRequest();
-
- indicators = getService().getAvailableIndicators(request);
+ CoserRequest request = createIndicatorsRequest();
+ indicators = getService().getMultipleResultAsMap(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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -48,7 +48,11 @@
protected Map<String, String> zonesMetaInfo;
- protected abstract CoserRequest createRequest();
+ /**
+ *
+ * @return the request to get zones
+ */
+ protected abstract CoserRequest createZonesRequest();
public String getFacade() {
return facade;
@@ -77,8 +81,8 @@
@Override
public String execute() {
- CoserRequest request = createRequest();
- zones = getService().getAvailableZones(request);
+ CoserRequest request = createZonesRequest();
+ zones = getService().getMultipleResultAsMap(request);
zonesPictures = getService().getZonePictures();
zonesMetaInfo = getService().getZoneMetaInfo(getLocale());
Modified: 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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,7 +22,7 @@
package fr.ifremer.coser.web.actions.common;
import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.request.CoserRequestBuilder;
+import fr.ifremer.coser.result.CoserRequestBuilder;
import fr.ifremer.coser.web.CoserWebConfig;
import fr.ifremer.coser.web.ServiceHelper;
import org.nuiton.web.struts2.BaseAction;
@@ -100,7 +100,7 @@
* @since 1.5
*/
protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(Locale locale, Class<R> requestType) {
- return new CoserRequestBuilder<R>(locale, requestType);
+ return CoserRequestBuilder.newBuilder(locale, requestType);
}
/**
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,8 @@
package fr.ifremer.coser.web.actions.map;
-import fr.ifremer.coser.result.request.GetMapResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
/**
@@ -44,8 +45,6 @@
protected String species;
- protected GetMapResultRequest request;
-
public void setFacade(String facade) {
this.facade = facade;
}
@@ -75,25 +74,23 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ GetZonesForMapResultRequest request =
+ requestBuilder(GetZonesForMapResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return getService().getZoneDisplayName(request, zone);
}
public String getSpeciesDisplayName() {
- return getService().getSpeciesDisplayName(request);
+ GetSpeciesForMapResultRequest request =
+ requestBuilder(GetSpeciesForMapResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ return getService().getSpeciesDisplayName(request, species);
}
- @Override
- public String execute() throws Exception {
-
- request = requestBuilder(GetMapResultRequest.class).
- addFacade(facade).
- addZone(zone).
- addSpecies(species).
- toRequest();
- return SUCCESS;
- }
-
- // public String getFacadeDisplayName() {
+// public String getFacadeDisplayName() {
// WebService webService = ServiceFactory.getWebService();
// String displayName = null;
// try {
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.map;
-import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.request.GetMapResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
@@ -84,11 +84,11 @@
@Action(results = {@Result(type = "stream", params = {"contentType", "image/png"})})
public String execute() {
// work with null species (get Repartition-stations map)
- GetMapResultRequest request = requestBuilder().
+ GetMapResultRequest request = requestBuilder(GetMapResultRequest.class).
addFacade(facade).
addZone(zone).
addSpecies(species == null ? GetMapResultRequest.NULL_SPECIES : species).
- toGetMapResultRequest();
+ toRequest();
if (log.isInfoEnabled()) {
log.info("Looking for map of species: " + request.getSpecies());
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,8 @@
package fr.ifremer.coser.web.actions.map;
-import fr.ifremer.coser.result.request.GetMapResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -50,8 +51,6 @@
protected Map<String, String> species;
- protected GetMapResultRequest request;
-
public String getFacade() {
return facade;
}
@@ -77,22 +76,26 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ GetZonesForMapResultRequest request =
+ requestBuilder(GetZonesForMapResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return getService().getZoneDisplayName(request, zone);
}
@Override
public String execute() {
- request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- toGetMapResultRequest();
-
if (log.isInfoEnabled()) {
log.info("Looking for species for zone " + zone);
}
- species = getService().getAvailableSpecies(request);
+ GetSpeciesForMapResultRequest request =
+ requestBuilder(GetSpeciesForMapResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ species = getService().getMultipleResultAsMap(request);
if (log.isDebugEnabled()) {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.map;
-import fr.ifremer.coser.result.request.GetMapResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
@@ -39,8 +39,12 @@
private static final long serialVersionUID = 3385467755357775199L;
@Override
- protected GetMapResultRequest createRequest() {
- return requestBuilder().addFacade(facade).toGetMapResultRequest();
+ protected GetZonesForMapResultRequest createZonesRequest() {
+ GetZonesForMapResultRequest request =
+ requestBuilder(GetZonesForMapResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return request;
}
// @Override
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,9 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
+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;
/**
@@ -48,8 +50,6 @@
protected String indicator;
- protected GetPopulationIndicatorResultRequest request;
-
public String getFacade() {
return facade;
}
@@ -87,29 +87,32 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ GetZonesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetZonesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return getService().getZoneDisplayName(request, zone);
}
public String getSpeciesDisplayName() {
- return getService().getSpeciesDisplayName(request);
+ GetSpeciesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetSpeciesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ return getService().getSpeciesDisplayName(request, species);
}
public String getIndicatorDisplayName() {
- return getService().getIndicatorDisplayName(request);
+ GetIndicatorsForPopulationIndicatorResultRequest request =
+ requestBuilder(GetIndicatorsForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ toRequest();
+ return getService().getIndicatorDisplayName(request, indicator);
}
- @Override
- public String execute() {
-
- request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- addSpecies(species).
- addIndicator(indicator).
- toGetPopulationIndicatorResultRequest();
- return SUCCESS;
- }
-
// public String getFacadeDisplayName() {
// WebService webService = ServiceFactory.getWebService();
// String displayName = null;
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,9 +21,8 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultGraphRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -90,16 +89,15 @@
return result.getSource();
}
- // @Action(results = {@Result(type = "stream", params = {"contentType", "image/png", "inputName", "inputStream"})})
@Action(results = {@Result(type = "stream", params = {"contentType", "image/png"})})
public String execute() {
- GetPopulationIndicatorResultRequest request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- addSpecies(species).
- addIndicator(indicator).
- addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType.GRAPH).
- toGetPopulationIndicatorResultRequest();
+ GetPopulationIndicatorResultGraphRequest request =
+ requestBuilder(GetPopulationIndicatorResultGraphRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ addIndicator(indicator).
+ toRequest();
result = getService().getFileResult(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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,9 +21,8 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultDataRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -88,16 +87,15 @@
return result.getSource();
}
- // @Action(results = {@Result(type = "stream", params = {"contentType", "text/csv", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
@Action(results = {@Result(type = "stream", params = {"contentType", "text/csv", "contentDisposition", "attachment; filename=\"${filename}\""})})
public String execute() {
- GetPopulationIndicatorResultRequest request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- addSpecies(species).
- addIndicator(indicator).
- addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType.DATA).
- toGetPopulationIndicatorResultRequest();
+ GetPopulationIndicatorResultDataRequest request =
+ requestBuilder(GetPopulationIndicatorResultDataRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ addIndicator(indicator).
+ toRequest();
result = getService().getFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,10 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.CoserRequest;
+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.CommonIndicator;
/**
@@ -38,12 +41,42 @@
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
+ protected String species;
+
+ public String getSpecies() {
+ return species;
+ }
+
+ public void setSpecies(String species) {
+ this.species = species;
+ }
+
@Override
- protected GetPopulationIndicatorResultRequest createRequest() {
- return requestBuilder(GetPopulationIndicatorResultRequest.class).
- addFacade(facade).
- addZone(zone).
- addSpecies(species).
- toRequest();
+ protected CoserRequest createZonesRequest() {
+ GetZonesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetZonesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return request;
}
+
+ @Override
+ protected GetIndicatorsForPopulationIndicatorResultRequest createIndicatorsRequest() {
+ GetIndicatorsForPopulationIndicatorResultRequest request =
+ requestBuilder(GetIndicatorsForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ toRequest();
+ return request;
+ }
+
+ public String getSpeciesDisplayName() {
+ GetSpeciesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetSpeciesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ return getService().getSpeciesDisplayName(request, species);
+ }
}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,8 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -52,8 +53,6 @@
protected String zonePicture;
- protected GetPopulationIndicatorResultRequest request;
-
public String getFacade() {
return facade;
}
@@ -83,7 +82,11 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ GetZonesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetZonesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return getService().getZoneDisplayName(request, zone);
}
@Override
@@ -93,12 +96,13 @@
log.info("Looking for species for zone " + zone);
}
- request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- toGetPopulationIndicatorResultRequest();
+ GetSpeciesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetSpeciesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ species = getService().getMultipleResultAsMap(request);
- species = getService().getAvailableSpecies(request);
if (log.isDebugEnabled()) {
log.debug("Species are : " + species);
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
@@ -39,9 +39,11 @@
private static final long serialVersionUID = 3385467755357775199L;
@Override
- protected CoserRequest createRequest() {
- return requestBuilder().
- addFacade(facade).
- toGetPopulationIndicatorResultRequest();
+ protected GetZonesForPopulationIndicatorResultRequest createZonesRequest() {
+ GetZonesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetZonesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return request;
}
}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,8 +22,11 @@
package fr.ifremer.coser.web.actions.search;
import com.google.common.collect.Lists;
-import fr.ifremer.coser.result.FileResult;
+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.util.DataType;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.collections4.CollectionUtils;
@@ -86,7 +89,8 @@
protected boolean accepted;
- protected transient HttpServletRequest request;
+ //FIXME Should only use the struts2 session ?
+ protected transient HttpServletRequest servletRequest;
protected FileResult resultFile;
@@ -168,8 +172,8 @@
* On met des choses dans la session pour pouvoir les récupérer.
*/
@Override
- public void setServletRequest(HttpServletRequest request) {
- this.request = request;
+ public void setServletRequest(HttpServletRequest servletrequest) {
+ this.servletRequest = servletrequest;
}
@Override
@@ -184,27 +188,36 @@
types = DataType.getExtractTypes(getLocale());
- ExtractRawDataAndResultsRequest extractRawDataAndResultsRequest = requestBuilder().toExtractRawDataAndResultsRequest();
// renvoi la liste des id subzone-survey et leurs label associé
- zones = getService().getAvailableZones(extractRawDataAndResultsRequest);
+ GetZonesForExtractRawDataAndResultsRequest zonesRequest =
+ requestBuilder(GetZonesForExtractRawDataAndResultsRequest.class).
+ toRequest();
+ zones = getService().getMultipleResultAsMap(zonesRequest);
if (CollectionUtils.isNotEmpty(selectZones)) {
- extractRawDataAndResultsRequest.setZoneList(selectZones);
+ GetSpeciesForExtractRawDataAndResultsRequest speciesRequest =
+ requestBuilder(GetSpeciesForExtractRawDataAndResultsRequest.class).
+ addZoneList(selectZones).
+ toRequest();
+ species = getService().getMultipleResultAsMap(speciesRequest);
- species = getService().getAvailableSpecies(extractRawDataAndResultsRequest);
-
if (selectTypes != null) {
+ GetIndicatorsForExtractRawDataAndResultsRequest indicatorsRequest =
+ requestBuilder(GetIndicatorsForExtractRawDataAndResultsRequest.class).
+ addZoneList(selectZones).
+ toRequest();
+
if (selectTypes.contains(DataType.COMMUNITY)) {
- extractRawDataAndResultsRequest.setExtractTypeList(Lists.newArrayList(DataType.COMMUNITY));
- comIndicators = getService().getAvailableIndicators(extractRawDataAndResultsRequest);
+ indicatorsRequest.setExtractTypeList(Lists.newArrayList(DataType.COMMUNITY));
+ comIndicators = getService().getMultipleResultAsMap(indicatorsRequest);
}
if (selectTypes.contains(DataType.POPULATION)) {
- extractRawDataAndResultsRequest.setExtractTypeList(Lists.newArrayList(DataType.POPULATION));
- popIndicators = getService().getAvailableIndicators(extractRawDataAndResultsRequest);
+ indicatorsRequest.setExtractTypeList(Lists.newArrayList(DataType.POPULATION));
+ popIndicators = getService().getMultipleResultAsMap(indicatorsRequest);
}
}
}
@@ -216,12 +229,11 @@
@Action(value = "extract-quality",
results = {
@Result(name = "input", location = "/WEB-INF/content/search/extract-success.jsp"),
- @Result(name = DOWNLOAD, type = "redirect", params = {
- "location", "${location}"})})
+ @Result(name = DOWNLOAD, type = "redirect", params = {"location", "${location}"})})
public String quality() {
// petit hack pour mettre la locale dans la session car
// après, on n'a plus accès au context dans le executeAndWait
- request.getSession().setAttribute(LOCALE_ATTRIBUTE, getLocale());
+ servletRequest.getSession().setAttribute(LOCALE_ATTRIBUTE, getLocale());
return DOWNLOAD;
}
@@ -264,21 +276,21 @@
@Action(value = "extract-download",
results = {
@Result(name = "wait", location = "/WEB-INF/content/search/extract-wait.jsp"),
-// @Result(type = "stream", params = {"contentType", "application/zip", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
@Result(type = "stream", params = {"contentType", "application/zip", "contentDisposition", "attachment; filename=\"${filename}\""})})
public String download() {
- Locale locale = (Locale) request.getSession().getAttribute(LOCALE_ATTRIBUTE);
+ Locale locale = (Locale) servletRequest.getSession().getAttribute(LOCALE_ATTRIBUTE);
- ExtractRawDataAndResultsRequest extractRawDataAndResultsRequest = requestBuilder(locale).
- addZoneList(selectZones).
- addExtractTypeList(selectTypes).
- addSpeciesList(selectSpecies).
- addCommunityIndicatorList(selectComIndicators).
- addPopulationIndicatorList(selectPopIndicators).
- toExtractRawDataAndResultsRequest();
+ ExtractRawDataAndResultsRequest request =
+ requestBuilder(locale, ExtractRawDataAndResultsRequest.class).
+ addZoneList(selectZones).
+ addExtractTypeList(selectTypes).
+ addSpeciesList(selectSpecies).
+ addCommunityIndicatorList(selectComIndicators).
+ addPopulationIndicatorList(selectPopIndicators).
+ toRequest();
- resultFile = getService().getFileResult(extractRawDataAndResultsRequest);
+ resultFile = getService().getFileResult(request);
return SUCCESS;
}
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.source;
-import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import java.util.Map;
@@ -46,8 +46,6 @@
protected String zonePicture;
- protected ExtractRawDataRequest request;
-
public String getFacade() {
return facade;
}
@@ -73,7 +71,12 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(getRequest());
+ GetZonesForExtractRawDataRequest zonesRequest =
+ requestBuilder(GetZonesForExtractRawDataRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ return getService().getZoneDisplayName(zonesRequest, zone);
}
@Override
@@ -83,22 +86,12 @@
return SUCCESS;
}
- protected ExtractRawDataRequest getRequest() {
- if (request == null) {
- request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- toExtractRawDataRequest();
- }
- return request;
- }
-
- // public String getFacadeDisplayName() {
+// public String getFacadeDisplayName() {
// WebService webService = ServiceFactory.getWebService();
// String displayName = null;
// try {
//// displayName = webService.getFacades().get(facade);
-// displayName = webService.getZonesMap().getFacades().get(facade);
+// displayName = webService.getZoneMap().getFacades().get(facade);
// } catch (CoserBusinessException ex) {
// throw new CoserWebException("Can't get facade display name", ex);
// }
@@ -123,7 +116,7 @@
//
// try {
//// zonePicture = webService.getZonePictures().get(zone);
-// zonePicture = webService.getZonesMap().getZonePictures().get(zone);
+// zonePicture = webService.getZoneMap().getZonePictures().get(zone);
// } catch (CoserBusinessException ex) {
// throw new CoserWebException("Can't get zone picture", ex);
// }
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-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,8 @@
package fr.ifremer.coser.web.actions.source;
-import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.request.ExtractRawDataRequest;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -57,7 +58,12 @@
// @Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
@Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "contentDisposition", "attachment; filename=\"${filename}\""})})
public String execute() {
- result = getService().getFileResult(getRequest());
+
+ ExtractRawDataRequest request = requestBuilder(ExtractRawDataRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ result = getService().getFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.source;
-import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
@@ -39,10 +39,12 @@
private static final long serialVersionUID = 3385467755357775199L;
@Override
- protected ExtractRawDataRequest createRequest() {
- return requestBuilder().
- addFacade(facade).
- toExtractRawDataRequest();
+ protected GetZonesForExtractRawDataRequest createZonesRequest() {
+ GetZonesForExtractRawDataRequest request =
+ requestBuilder(GetZonesForExtractRawDataRequest.class).
+ addFacade(facade).
+ toRequest();
+ return request;
}
// @Override
1
0