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
r1139 - in trunk: coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy coser-web/src/main/java/fr/ifremer/coser/web/actions/com coser-web/src/main/java/fr/ifremer/coser/web/actions/pop
by tchemit@users.forge.codelutin.com 09 Mar '14
by tchemit@users.forge.codelutin.com 09 Mar '14
09 Mar '14
Author: tchemit
Date: 2014-03-09 07:34:41 +0100 (Sun, 09 Mar 2014)
New Revision: 1139
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1139
Log:
refs-50 #4651 legacy results of ok
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/legacy/LegacyResultRepository.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/pop/GraphDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
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-08 12:46:01 UTC (rev 1138)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-09 06:34:41 UTC (rev 1139)
@@ -45,6 +45,7 @@
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;
@@ -59,6 +60,8 @@
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;
@@ -560,23 +563,61 @@
protected File getCommunityIndicatorDataFile(String indicator, String speciesList) {
- DataStorage dataStorage = new MemoryDataStorage();
+ try {
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(false);
+ File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp");
- // add header
- dataStorage.add(iterator.next());
+ File baseDir = new File(tempDir, project.getSurveyName());
+ FileUtils.forceMkdir(baseDir);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- dataStorage.add(tuple);
+ // ajout du fichier csv avec les indicateurs
+ DataStorage dataStorage = new MemoryDataStorage();
+
+ Iterator<String[]> iterator = loadCommunityIndicatorStorage(false);
+
+ // add header
+ dataStorage.add(iterator.next());
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
+ dataStorage.add(tuple);
+ }
}
+ File csvFile = DataStorages.save("coser-chart-community-indicator",
+ ".csv",
+ dataStorage);
+
+ 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 (IOException e) {
+ throw new CoserTechnicalException("Can't create zip file", e);
}
- File result = DataStorages.save("coser-chart-community-indicator",
- ".csv",
- dataStorage);
- return result;
}
protected File getCommunityIndicatorGraphFile(Locale locale, String zone,
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-08 12:46:01 UTC (rev 1138)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-09 06:34:41 UTC (rev 1139)
@@ -32,7 +32,10 @@
import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.bean.EchoBaseProject;
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.result.CoserRequest;
import fr.ifremer.coser.result.CoserResult;
@@ -427,7 +430,9 @@
File file = null;
switch (r.getResultType()) {
case DATA:
- file = getCommunityIndicatorDataFile(r.getIndicator(),
+ file = getCommunityIndicatorDataFile(r.getLocale(),
+ r.getZone(),
+ r.getIndicator(),
r.getSpecies());
break;
@@ -684,28 +689,71 @@
// --- Get Community indicator result ---------------------------------- //
// --------------------------------------------------------------------- //
- protected File getCommunityIndicatorDataFile(String indicator, String speciesList) {
+ protected File getCommunityIndicatorDataFile(Locale locale,
+ String zone,
+ String indicator,
+ String speciesList) {
- DataStorage dataStorage = new MemoryDataStorage();
+ try {
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(false);
+ File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp");
- // add header
- dataStorage.add(iterator.next());
+ File baseDir = new File(tempDir, surveyName);
+ FileUtils.forceMkdir(baseDir);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- dataStorage.add(tuple);
+ RSufiResult rSufiResult = path.getRsufiResult();
+
+ // ajout du fichier csv avec les indicateurs
+ DataStorage dataStorage = new MemoryDataStorage();
+
+ Iterator<String[]> iterator = loadCommunityIndicatorStorage(false);
+
+ // add header
+ dataStorage.add(iterator.next());
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
+ dataStorage.add(tuple);
+ }
}
+ File csvFile = DataStorages.save("coser-chart-community-indicator",
+ ".csv",
+ dataStorage);
+
+ 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)
+ 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);
}
- File result = DataStorages.save("coser-chart-community-indicator",
- ".csv",
- dataStorage);
- return result;
}
- protected File getCommunityIndicatorGraphFile(Locale locale, String zone,
+ protected File getCommunityIndicatorGraphFile(Locale locale,
+ String zone,
String indicator,
String speciesList) {
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-08 12:46:01 UTC (rev 1138)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-09 06:34:41 UTC (rev 1139)
@@ -28,6 +28,7 @@
import org.apache.struts2.convention.annotation.Result;
import java.io.InputStream;
+import java.util.Map;
/**
* Affiche le graphique demandé.
@@ -95,9 +96,18 @@
addFacade(facade).
addZone(zone).
addIndicator(indicator).
- addResultType(IndicatorRequest.ResultType.DATA).
+ addResultType(IndicatorRequest.ResultType.GRAPH).
addSpecies(list).
toCommunityIndicatorRequest();
+
+ if (list == null) {
+
+ // 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());
+ }
+ }
result = getService().getFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-08 12:46:01 UTC (rev 1138)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-09 06:34:41 UTC (rev 1139)
@@ -28,6 +28,7 @@
import org.apache.struts2.convention.annotation.Result;
import java.io.InputStream;
+import java.util.Map;
/**
* Télécharge les données qui ont servi a généré le graph au format CSV.
@@ -91,13 +92,24 @@
// @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() {
+
IndicatorRequest request = requestBuilder().
addFacade(facade).
addZone(zone).
addIndicator(indicator).
- addResultType(IndicatorRequest.ResultType.GRAPH).
+ addResultType(IndicatorRequest.ResultType.DATA).
addSpecies(list).
toCommunityIndicatorRequest();
+
+ if (list == null) {
+
+ // 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());
+ }
+ }
+
result = getService().getFileResult(request);
return SUCCESS;
}
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-08 12:46:01 UTC (rev 1138)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-09 06:34:41 UTC (rev 1139)
@@ -98,7 +98,7 @@
addZone(zone).
addSpecies(species).
addIndicator(indicator).
- addResultType(IndicatorRequest.ResultType.DATA).
+ addResultType(IndicatorRequest.ResultType.GRAPH).
toPopulationIndicatorRequest();
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-08 12:46:01 UTC (rev 1138)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-09 06:34:41 UTC (rev 1139)
@@ -96,7 +96,7 @@
addZone(zone).
addSpecies(species).
addIndicator(indicator).
- addResultType( IndicatorRequest.ResultType.GRAPH).
+ addResultType( IndicatorRequest.ResultType.DATA).
toPopulationIndicatorRequest();
result = getService().getFileResult(request);
return SUCCESS;
1
0
r1138 - in trunk/coser-web/src/main: java/fr/ifremer/coser/web/actions/source resources/fr/ifremer/coser/web resources/fr/ifremer/coser/web/actions resources/fr/ifremer/coser/web/actions/source
by tchemit@users.forge.codelutin.com 08 Mar '14
by tchemit@users.forge.codelutin.com 08 Mar '14
08 Mar '14
Author: tchemit
Date: 2014-03-08 13:46:01 +0100 (Sat, 08 Mar 2014)
New Revision: 1138
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1138
Log:
fix source action + use xml validation
Added:
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/actions/
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/actions/source/
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/actions/source/SourceDataAction-validation.xml
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/SourceDataAction.java
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-08 07:26:39 UTC (rev 1137)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java 2014-03-08 12:46:01 UTC (rev 1138)
@@ -73,22 +73,27 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ return getService().getZoneDisplayName(getRequest());
}
@Override
public String execute() {
-
- request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- toRawDataRequest();
Map<String, String> zonePictures = getService().getZonePictures();
zonePicture = zonePictures.get(zone);
return SUCCESS;
}
-// public String getFacadeDisplayName() {
+ protected RawDataRequest getRequest() {
+ if (request == null) {
+ request = requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ toRawDataRequest();
+ }
+ return request;
+ }
+
+ // public String getFacadeDisplayName() {
// WebService webService = ServiceFactory.getWebService();
// String displayName = null;
// try {
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-08 07:26:39 UTC (rev 1137)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java 2014-03-08 12:46:01 UTC (rev 1138)
@@ -2,7 +2,7 @@
* #%L
* Coser :: Web
* %%
- * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -49,21 +49,15 @@
this.accepted = accepted;
}
- @Override
- public void validate() {
-
- if (!accepted) {
- addFieldError("accepted", getText("message.quality.notaccepted"));
- }
-
+ // used by validator
+ public boolean isAccepted() {
+ return accepted;
}
// @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() {
- super.execute();
-
- result = getService().getFileResult(request);
+ result = getService().getFileResult(getRequest());
return SUCCESS;
}
@@ -75,6 +69,15 @@
return result.getInputStream();
}
+// @Override
+// public void validate() {
+//
+// if (!accepted) {
+// addFieldError("accepted", getText("message.quality.notaccepted"));
+// }
+//
+// }
+//
// public InputStream getInputStream() {
// WebService webService = ServiceFactory.getWebService();
//
Added: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/actions/source/SourceDataAction-validation.xml
===================================================================
--- trunk/coser-web/src/main/resources/fr/ifremer/coser/web/actions/source/SourceDataAction-validation.xml (rev 0)
+++ trunk/coser-web/src/main/resources/fr/ifremer/coser/web/actions/source/SourceDataAction-validation.xml 2014-03-08 12:46:01 UTC (rev 1138)
@@ -0,0 +1,34 @@
+<!--
+ #%L
+ Coser :: Web
+ %%
+ Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #L%
+ -->
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="accepted">
+
+ <field-validator type="fieldexpression">
+ <param name="expression">accepted</param>
+ <message key="message.quality.notaccepted"/>
+ </field-validator>
+
+ </field>
+
+</validators>
\ No newline at end of file
Property changes on: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/actions/source/SourceDataAction-validation.xml
___________________________________________________________________
Added: svn:mime-type
+ text/xml
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
1
0
r1137 - in trunk/coser-business/src/main/java/fr/ifremer/coser: result/repository/legacy services
by tchemit@users.forge.codelutin.com 08 Mar '14
by tchemit@users.forge.codelutin.com 08 Mar '14
08 Mar '14
Author: tchemit
Date: 2014-03-08 08:26:39 +0100 (Sat, 08 Mar 2014)
New Revision: 1137
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1137
Log:
make raw data result ok for legacy storages)
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
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-08 07:26:03 UTC (rev 1136)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-08 07:26:39 UTC (rev 1137)
@@ -27,6 +27,7 @@
import com.google.common.collect.Maps;
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.CoserTechnicalException;
import fr.ifremer.coser.bean.EchoBaseProject;
@@ -43,6 +44,8 @@
import fr.ifremer.coser.result.request.MapRequest;
import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
import fr.ifremer.coser.result.request.RawDataRequest;
+import fr.ifremer.coser.services.ProjectService;
+import fr.ifremer.coser.services.WebService;
import fr.ifremer.coser.storage.DataStorage;
import fr.ifremer.coser.storage.DataStorages;
import fr.ifremer.coser.storage.MemoryDataStorage;
@@ -61,6 +64,8 @@
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;
@@ -152,12 +157,25 @@
*/
protected ZoneMap zonesMap;
+ /**
+ * Is the result contains maps ?
+ */
protected final boolean mapsResult;
+ /**
+ * Is the result contains indicators ?
+ */
protected final boolean indicatorsResult;
+ /**
+ * IS the results contains raw data ?
+ */
protected final boolean dataResult;
+ protected final ProjectService projectService;
+
+ protected final WebService webService;
+
public LegacyResultRepository(CoserBusinessConfig config,
File basedir,
RSufiResultPath path,
@@ -188,6 +206,8 @@
this.mapFileToSpeciesCode = EchoBaseProject.newMapFileToSpeciesCode(surveyName);
this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName);
this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName);
+ this.projectService = new ProjectService(config);
+ this.webService = new WebService(config);
}
// --------------------------------------------------------------------- //
@@ -211,7 +231,6 @@
if (request instanceof MapRequest) {
MapRequest r = (MapRequest) request;
-
boolean match = mapsResult && matchFacade(r);
if (match) {
allowedZones = getZonesMap().getZonesForFacade(r.getFacade());
@@ -396,10 +415,12 @@
} else if (request instanceof RawDataRequest) {
// No such result for echobase at the moment
- if (log.isDebugEnabled()) {
- log.debug("No result for RawDataRequest");
- }
+ RawDataRequest r = (RawDataRequest) request;
+ File file = getRawDataFile(r.getLocale()
+ );
+ result = new FileResult(getId(), file);
+
} else if (request instanceof CommunityIndicatorRequest) {
CommunityIndicatorRequest r = (CommunityIndicatorRequest) request;
@@ -610,8 +631,55 @@
// --- Get Raw Data result --------------------------------------------- //
// --------------------------------------------------------------------- //
- // None for the moment
+ protected File getRawDataFile(Locale locale) {
+ try {
+ // be sure that data are available for this project
+ // or it will fail
+ projectService.loadSelectionData(basedir.getParentFile(), path.getProject(), path.getSelection());
+ } catch (CoserBusinessException e) {
+ throw new CoserTechnicalException("Could not load project selection", e);
+ }
+
+ File result;
+
+ try {
+ File tempDir = FileUtil.createTempDirectory("coser-source-", "-tmp");
+
+ // il ne faut pas les fichiers de selection, mais leurs
+ // export rsufi (sans les lignes, et les quotes)
+ File archiveDir = projectService.extractRSUfiData(path.getProject(), path.getSelection(), tempDir, true);
+
+ // add decharge file
+ String 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";
+ }
+ File dechargePDF = new File(archiveDir, filename);
+ webService.generateDechargePDF(dechargePDF, resultDirectory, path.getRsufiResult(), locale);
+
+ // ajout du reftax dans le zip
+ File reftaxFile = new File(basedir, CoserConstants.Category.REFTAX_SPECIES.getStorageFileName());
+ FileUtils.copyFileToDirectory(reftaxFile, archiveDir);
+
+ // make zip
+ result = File.createTempFile("coser-source-", ".zip");
+ result.deleteOnExit();
+ ZipUtil.compress(result, archiveDir);
+
+ // clean directory
+ FileUtils.deleteDirectory(tempDir);
+ } catch (Exception ex) {
+ throw new CoserTechnicalException("Can't create zip file", ex);
+ }
+
+ return result;
+ }
+
// --------------------------------------------------------------------- //
// --- Get Community indicator result ---------------------------------- //
// --------------------------------------------------------------------- //
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2014-03-08 07:26:03 UTC (rev 1136)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2014-03-08 07:26:39 UTC (rev 1137)
@@ -2176,7 +2176,7 @@
* @return le fichier généré
* @throws CoserBusinessException
*/
- protected File generateDechargePDF(File disclamerPdf, File resultDirectory, RSufiResult rSufiResult, Locale locale) throws CoserBusinessException {
+ public File generateDechargePDF(File disclamerPdf, File resultDirectory, RSufiResult rSufiResult, Locale locale) throws CoserBusinessException {
File result = null;
1
0
r1136 - trunk/coser-web/src/main/resources/fr/ifremer/coser/web
by tchemit@users.forge.codelutin.com 08 Mar '14
by tchemit@users.forge.codelutin.com 08 Mar '14
08 Mar '14
Author: tchemit
Date: 2014-03-08 08:26:03 +0100 (Sat, 08 Mar 2014)
New Revision: 1136
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1136
Log:
fix i18n file encoding
Modified:
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_en.properties
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties
Modified: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties
===================================================================
--- trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties 2014-03-08 07:25:34 UTC (rev 1135)
+++ trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties 2014-03-08 07:26:03 UTC (rev 1136)
@@ -8,12 +8,12 @@
# 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%
@@ -31,7 +31,7 @@
message.com.downloadascsv=Download as CSV
message.com.downloadaszip=Download as ZIP
message.com.moredetailspdf=More information on calculated community indices
-message.com.paragraph1=Community indices are calculated for a list of species for each survey time series. The list of species included when calculating each index depends on the available data.
+message.com.paragraph1=Community indices are calculated for a list of species for each survey time series. The list of species included when calculating each index depends on the available data.
message.com.paragraph2=The lists of species used for the calculations of community indices are given in the zip file "Information.pdf" (see the link "Download as ZIP" at the bottom of each graph).
message.com.selectindicatorlist=Select a data list
message.com.title=Community indices
@@ -44,7 +44,7 @@
message.common.population=population
message.common.selectall=Select all
message.common.selectnone=Unselect all
-message.common.selectfacade=Select an area
+message.common.selectfacade=Select an area
message.common.selectindicator=Select an indicator
message.common.selectpop=Select a population
message.common.selectspecies=Select a species
@@ -55,22 +55,22 @@
message.common.zone=Zone
message.common.zones=Zones
message.common.datatypes=Data types
-message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
-message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
-message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c\u00F4tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
-message.documents.genparagraph4=Poissons et invert�br�s au large des c\u00F4tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
-message.documents.gentitle1=Rapports g�n�raux
+message.documents.genparagraph1=Grands invert\u00E9br\u00E9s et poissons observ\u00E9s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
+message.documents.genparagraph2=Grands invert\u00E9br\u00E9s et poissons observ\u00E9s par les campagnes scientifiques. Bilan 2007. 2009. {0}
+message.documents.genparagraph3=L''\u00E9tat des communaut\u00E9s exploit\u00E9es au large des c\u00F4tes de France. Application d''indicateurs \u00E0 l''\u00E9valuation de l''impact de la p\u00EAche. Bilan 2004 Edition 2009. {0}
+message.documents.genparagraph4=Poissons et invert\u00E9br\u00E9s au large des c\u00F4tes de France. Indicateurs issus des p\u00EAches scientifiques. Bilan 2004. 2007. {0}
+message.documents.gentitle1=Rapports g\u00E9n\u00E9raux
message.documents.activityparagraph1=Battaglia A., V. M. Trenkel & M. J. Rochet, 2006. Estimating end effects in trawl catches. ICES J. Mar. Sci. 63: 956-959.
message.documents.activityparagraph2=Lorance P., J. A. Bertrand, A. Brind''Amour, M. J. Rochet & V. Trenkel, 2009. Assessment of impacts from human activities on ecosystem components in the Bay of Biscay in the early 1990s. Aquatic living resources 22: 409-431.
-message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
+message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah\u00E9, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
message.documents.activityparagraph4=Rochet M. J. & J. Rice, 2005. Do explicit criteria help in selecting indicators for ecosystem-based fisheries management? ICES J. Mar. Sci. 62: 528-539.
message.documents.activityparagraph5=Rochet M. J. & V. Trenkel, 2003. Which community indicators can measure the impact of fishing? A review and proposals. Can. J. Fish. Aquat. Sci. 60: 86-99.
-message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
-message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
+message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah\u00E9, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V\u00E9rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
+message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L\u00E9aut\u00E9, J. C. Mah\u00E9, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
message.documents.activityparagraph8=Trenkel V. & M. J. Rochet, 2003. Performance of indicators derived from abundance estimates for detecting the impact of fishing on a fish community. Can. J. Fish. Aquat. Sci. 60: 67-85.
-message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
-message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
-message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
+message.documents.activitytitle2=Publications des membres du GT relatives \u00E0 l''activit\u00E9 du groupe
+message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T\u00E9tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth\u00E8se hydrobiologique du site \u00E9lectronucl\u00E9aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
+message.documents.indicatortitle3=Travaux ayant utilis\u00E9 les r\u00E9sultats du groupe de travail sur les indicateurs de populations et de peuplements
message.documents.title=Documents
message.index.datatypecom=Community indices by area
message.index.datatypemap=Species distribution maps by area
@@ -85,10 +85,10 @@
message.index.paragraph1=This web site has been created to provide easy access to the raw data and index estimates derived from the scientific surveys carried out by Ifremer along the French coasts.
message.index.paragraph2=All data made available have passed rigorous quality checks. However, as the reliability of results interpretations depends directly on the data used, users are cordially invited to study carefully the survey and quality check protocols.
message.index.paragraph3=Each survey is carried out using a specific sampling design. Data analyses and interpretation of each time series must therefore take into account the sampling designs. The data are presented by survey series on the web site.
-message.index.paragraph4=The species codes used in the data tables are those of the taxinomic reference file of the Syst�me d''informations halieutiques de l''Ifremer ({0}).
+message.index.paragraph4=The species codes used in the data tables are those of the taxinomic reference file of the Syst\u00E8me d''informations halieutiques de l''Ifremer ({0}).
message.index.paragraph5=The link below allows you to extract the elements of the site (graphics and data) in the form of a .zip file (containing a pdf document and data)
message.index.partnertitle=Group members
-message.index.partnerparagraph1=The results presented on this web site are the fruit of an internal Ifremer working group which has been active since 2001 with the objective of developing population and community indicators for the survey data collected since the end of the 1970s along the French coasts. The main group members are (by Ifremer location and in alphabetical order): Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz and Yves V�rin (Boulogne-sur-mer), Andr� Battaglia and Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� and Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet and Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin and Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud and Arnaud Souplet (S�te). The quality process is managed by Vincent Badts. The data-processing is supported by Olivier Berthel�.
+message.index.partnerparagraph1=The results presented on this web site are the fruit of an internal Ifremer working group which has been active since 2001 with the objective of developing population and community indicators for the survey data collected since the end of the 1970s along the French coasts. The main group members are (by Ifremer location and in alphabetical order): Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz and Yves V\u00E9rin (Boulogne-sur-mer), Andr\u00E9 Battaglia and Jean-Pierre L\u00E9aut\u00E9 (L''Houmeau), Jean-Claude Mah\u00E9 and Mich\u00E8le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D\u00E9saunay, Pascal Laffargue, Olivier Le Pape, J\u00E9r\u00E9my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet and Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin and Ivan Schlaich (Port-en-Bessin), Ang\u00E9lique Jadaud and Arnaud Souplet (S\u00E8te). The quality process is managed by Vincent Badts. The data-processing is supported by Olivier Berthel\u00E9.
message.index.qualitymessage=Quality warning
message.index.qualitytitle=Quality warning
message.index.quotemessage=Ifremer {0,date,yyyy}. Population and community indices derived from scientific surveys carried out by Ifremer. {1} ({0,date,dd MMMM})
@@ -98,11 +98,11 @@
message.index.thankstitle=Acknowledgements
message.index.thanksparagraph1=All surveys presented on this web site were conducted by Ifremer and have received financial support from a variety of sources. After initially having been funded by Ifremer three of the surveys are now part of the European Data Collection Framework (DCF); this concerns IBTS, Evhoe and Medits. Two other surveys remain entirely funded by Ifremer: NourVil and CGFS (discussions to include this survey in the DCF are underway). For NourSein, the last three surveys were funded by GIP-Seine Aval. Finally, Crustaflam and NourSomme are entirely funded by EDF within a program of coastal monitoring of nuclear power plants and carried out by Ifremer. This web site has received the financial support of the French ministry for ecology, sustainable development, transport and housing (MEEDDM) (contract Ifremer-MEEDDM 2010). Pour calculating indices for the North Sea the data from all contributing nations was used; it is available in the Datras data base held by ICES (http://datras.ices.dk)
message.index.title=Home
-message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
-message.layout.oceanicdata2=the Fisheries Information System - Syst�me d''information halieutique de l''Ifremer (SIH)
+message.layout.oceanicdata1=le Syst\u00E8me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
+message.layout.oceanicdata2=the Fisheries Information System - Syst\u00E8me d''information halieutique de l''Ifremer (SIH)
message.layout.oceanicdatatitle=Survey data management at Ifremer
message.layout.title=Population and community indices derived from scientific surveys carried out by Ifremer.
-message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
+message.map.citation=Trenkel V.M., O. Berthel\u00E9, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut\u00E9, J.C. Mah\u00E9, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V\u00E9rin, 2009. Grands invert\u00E9br\u00E9s et poissons observ\u00E9s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
message.map.citationtitle=Citation
message.map.downloadaspdf=Download as PDF
message.map.linkarchimer=Access atlas : {0}
@@ -134,21 +134,21 @@
message.search.extract.waitparagraph3=After downloading, close this page by returning to the home page of the site.
message.search.extract.zonetype=Zone and data types
message.source.download=Download
-message.source.paragraph1=The raw data are presented in four tables which contain the basic information by sampling unit (generally a haul) as well as the relevant information on the sampling design (strata). An additional table provides the latin names for the species codes used in the data files. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
-message.source.paragraph2=Les donn�es IBTS (donn�es fran\u00E7aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr\u00F4les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
+message.source.paragraph1=The raw data are presented in four tables which contain the basic information by sampling unit (generally a haul) as well as the relevant information on the sampling design (strata). An additional table provides the latin names for the species codes used in the data files. Il s''agit des donn\u00E9es utilis\u00E9es pour r\u00E9aliser les calculs des indicateurs pr\u00E9sent\u00E9s. Ces donn\u00E9es ont fait l''objet de filtrages et de regroupements \u00E9ventuels par rapport aux donn\u00E9es de base de chaque s\u00E9rie, afin d''assurer la coh\u00E9rence des jeux de donn\u00E9es en vue du calcul des indicateurs. Ainsi, pour certaines s\u00E9ries, des groupes entiers (e.g. les amphihalins) ont pu \u00EAtre retir\u00E9s. Pour certaines s\u00E9ries, certaines ann\u00E9es ou certaines strates ont \u00E9t\u00E9 retir\u00E9es afin de pr\u00E9server l''homog\u00E9n\u00E9it\u00E9 de la s\u00E9rie. Dans des cas d''\u00E9volution du niveau de d\u00E9termination au cours de la s\u00E9rie, plusieurs taxons ont \u00E9t\u00E9 regroup\u00E9s \u00E0 un niveau sup\u00E9rieur.
+message.source.paragraph2=Les donn\u00E9es IBTS (donn\u00E9es fran\u00E7aises et donn\u00E9es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m\u00EAmes contr\u00F4les de qualit\u00E9 que les autres s\u00E9ries de donn\u00E9es utilis\u00E9es, ainsi que de filtrages et de regroupements taxinomiques pour en pr\u00E9server la coh\u00E9rence vis-\u00E0-vis du pr\u00E9sent objectif de production d''indicateurs de tendances.
message.source.paragraph3=The web site provides access to the raw data corresponding to the population and community indices presented. For any other data please contact the administrator of the Fisheries information system of Ifremer ({0}).
message.source.paragraph4=The survey data consist of stations distributed in space following a stratified random design (which can be constant between years). The spatial resolution determines on which spatial scale population and community indices can be calculated.
message.source.paragraph5=The list of proposed spatial areas includes the original sampling areas, plus post-stratified areas suitable for the European Marine Strategie Framework Directive. These areas have been validated by an internal Ifremer working group following sensitivity analyses.
message.source.title=Raw data
-message.survey.atlantique.celtique.desc=The Evhoe suvey (Evaluation des ressources halieutiques de l''ouest europ�en) lasts one month in the fourth quarter every year since 1997. On average 75 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 150 000 km\u00B2 of the Celtic Sea.
+message.survey.atlantique.celtique.desc=The Evhoe suvey (Evaluation des ressources halieutiques de l''ouest europ\u00E9en) lasts one month in the fourth quarter every year since 1997. On average 75 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 150 000 km\u00B2 of the Celtic Sea.
message.survey.atlantique.celtique.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.celtique.plus=For more information on the Evhoe surveys
message.survey.atlantique.celtique=Celtic Sea
-message.survey.atlantique.gascogne.desc=The Evhoe survey (Evaluation des ressources halieutiques de l''ouest europ�en) lasts one month in the fourth quarter every year since 1992 (except 1993 and 1996). On average 70 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 72 500 km\u00B2 of the Bay of Biscay.
+message.survey.atlantique.gascogne.desc=The Evhoe survey (Evaluation des ressources halieutiques de l''ouest europ\u00E9en) lasts one month in the fourth quarter every year since 1992 (except 1993 and 1996). On average 70 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 72 500 km\u00B2 of the Bay of Biscay.
message.survey.atlantique.gascogne.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.gascogne.plus=For more information on the Evhoe surveys
message.survey.atlantique.gascogne=Bay of Biscay
-message.survey.atlantique.vilaine.desc=Survey in the nursery area of the Vilaine river bay (NourVil) lasted one week every year in autumn from 1980 � 2010, except 1991, 1994, 1995, 1998, 1999, 2006 and 2007. It used a 3m-beam trawl. On average 30 15-min hauls were carried out covering each about 0.0041 km\u00B2. This survey provides a representative picture of the 330 km\u00B2 of the Vilaine bay.
+message.survey.atlantique.vilaine.desc=Survey in the nursery area of the Vilaine river bay (NourVil) lasted one week every year in autumn from 1980 \u00E0 2010, except 1991, 1994, 1995, 1998, 1999, 2006 and 2007. It used a 3m-beam trawl. On average 30 15-min hauls were carried out covering each about 0.0041 km\u00B2. This survey provides a representative picture of the 330 km\u00B2 of the Vilaine bay.
message.survey.atlantique.vilaine.nourvil1=Manuel des protocoles Nourriceries Gascogne - V 1.0 (2002)
message.survey.atlantique.vilaine.plus=For more information on the Nourvil survey
message.survey.atlantique.vilaine=Vilaine river bay
@@ -175,7 +175,7 @@
message.survey.mancheorientale.mancheorientale.cgfs1=Manuel des protocoles CGFS - Version 1.0 (2002)
message.survey.mancheorientale.mancheorientale.desc=French survey CGFS (Channel Ground Fish Survey) lasting one month and internationally coordonnated together with the IBTS survey. The survey takes place every year since 1988. On average 90 half hour hauls are carried out with a small GOV trawl. Each haul covers about 0.03 km\u00B2. This survey provides a representative picture of the 70 748 km\u00B2 of the Eastern English Channel.
message.survey.mancheorientale.mancheorientale.plus=For more information on the CGFS survey
-message.survey.mancheorientale.mancheorientale=Eastern English Channel
+message.survey.mancheorientale.mancheorientale=Eastern English Channel
message.survey.mancheorientale=Eastern English Channel
message.survey.mediterranee.estcorse.desc=French contribution to the internationally coordinated Medits (International bottom Trawl Surveys in the Mediterranean) survey, lasting one week in the second quarter every year since 1994 except 2002 using a GOV bottom trawl with short wings. On average 20 hauls are carried out; haul duration is half an hour above 200 m depth which corresponds to 0.05 km\u00B2 and one hour for bottom depths greater than 200 m (0.1\u00A0km\u00B2). Medits provides a representative picture of the 4 562 km\u00B2 of Eastern Corsican island plateau.
message.survey.mediterranee.estcorse.medits1=Manuel des protocoles Medits, Version 1 (1994)
@@ -197,8 +197,8 @@
message.survey.mediterranee.golfelion=Gulf of Lions
message.survey.mediterranee=Mediterranean Sea
message.survey.merdunord.sudmerdunord.desc=Every years since 1980 France contributes one month of ship time to the IBTS (International Bottom Trawl Survey) in the first quarter using a GOV trawl. On average 58 hauls are carried out. The southern North Sea is sampled by four countries (France, Belgium, Danmark and Germany) who together carry out about 200 hauls per year. Each haul lasts half an hour corresponding to a swept area of about 0.067 km\u00B2. IBTS provides a representative picture of the 678\u00A0000\u00A0km\u00B2 of the area.
-message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
-message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
+message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R\u00E9vision VI (1999)
+message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R\u00E9vision VII (2004)
message.survey.merdunord.sudmerdunord.plus=For more information on the IBTS survey
message.survey.merdunord.sudmerdunord=Southern North Sea
message.survey.merdunord=North Sea
@@ -207,4 +207,4 @@
message.survey.paragraph3=The surveys are carried out using standardised sampling designs. The gear and its rigging, station positions, sample treatment and biological sampling are carried out using fixed protocols.
message.survey.paragraph4=Common protocols are used by all participants for surveys carried out under international coordination in the North Sea, Eastern English channel, Celtic Sea, Bay of Biscay and the Mediterranean Sea. The data collected by the different research vessels are therefore comparable.
message.survey.paragraph5=Each survey area is subdivided in strata according to bottom depth, latitude or other criteria. The sampling protocol specifies the number of hauls or pots by stratum.
-message.survey.paragraph6=For each survey the station location is determined following the specified sampling design. The aim is not to obtain the largest catches as fishers might attempt to do, but to collect comparable data for detecting time trends.
+message.survey.paragraph6=For each survey the station location is determined following the specified sampling design. The aim is not to obtain the largest catches as fishers might attempt to do, but to collect comparable data for detecting time trends.
\ No newline at end of file
Modified: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_en.properties
===================================================================
--- trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_en.properties 2014-03-08 07:25:34 UTC (rev 1135)
+++ trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_en.properties 2014-03-08 07:26:03 UTC (rev 1136)
@@ -8,12 +8,12 @@
# 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%
@@ -31,7 +31,7 @@
message.com.downloadascsv=Download as CSV
message.com.downloadaszip=Download as ZIP
message.com.moredetailspdf=More information on calculated community indices
-message.com.paragraph1=Community indices are calculated for a list of species for each survey time series. The list of species included when calculating each index depends on the available data.
+message.com.paragraph1=Community indices are calculated for a list of species for each survey time series. The list of species included when calculating each index depends on the available data.
message.com.paragraph2=The lists of species used for the calculations of community indices are given in the zip file "Information.pdf" (see the link "Download as ZIP" at the bottom of each graph).
message.com.selectindicatorlist=Select a data list
message.com.title=Community indices
@@ -44,7 +44,7 @@
message.common.population=population
message.common.selectall=Select all
message.common.selectnone=Unselect all
-message.common.selectfacade=Select an area
+message.common.selectfacade=Select an area
message.common.selectindicator=Select an indicator
message.common.selectpop=Select a population
message.common.selectspecies=Select a species
@@ -55,22 +55,22 @@
message.common.zone=Zone
message.common.zones=Zones
message.common.datatypes=Data types
-message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
-message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
-message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c\u00F4tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
-message.documents.genparagraph4=Poissons et invert�br�s au large des c\u00F4tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
-message.documents.gentitle1=Rapports g�n�raux
+message.documents.genparagraph1=Grands invert\u00E9br\u00E9s et poissons observ\u00E9s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
+message.documents.genparagraph2=Grands invert\u00E9br\u00E9s et poissons observ\u00E9s par les campagnes scientifiques. Bilan 2007. 2009. {0}
+message.documents.genparagraph3=L''\u00E9tat des communaut\u00E9s exploit\u00E9es au large des c\u00F4tes de France. Application d''indicateurs \u00E0 l''\u00E9valuation de l''impact de la p\u00EAche. Bilan 2004 Edition 2009. {0}
+message.documents.genparagraph4=Poissons et invert\u00E9br\u00E9s au large des c\u00F4tes de France. Indicateurs issus des p\u00EAches scientifiques. Bilan 2004. 2007. {0}
+message.documents.gentitle1=Rapports g\u00E9n\u00E9raux
message.documents.activityparagraph1=Battaglia A., V. M. Trenkel & M. J. Rochet, 2006. Estimating end effects in trawl catches. ICES J. Mar. Sci. 63: 956-959.
message.documents.activityparagraph2=Lorance P., J. A. Bertrand, A. Brind''Amour, M. J. Rochet & V. Trenkel, 2009. Assessment of impacts from human activities on ecosystem components in the Bay of Biscay in the early 1990s. Aquatic living resources 22: 409-431.
-message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
+message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah\u00E9, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
message.documents.activityparagraph4=Rochet M. J. & J. Rice, 2005. Do explicit criteria help in selecting indicators for ecosystem-based fisheries management? ICES J. Mar. Sci. 62: 528-539.
message.documents.activityparagraph5=Rochet M. J. & V. Trenkel, 2003. Which community indicators can measure the impact of fishing? A review and proposals. Can. J. Fish. Aquat. Sci. 60: 86-99.
-message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
-message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
+message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah\u00E9, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V\u00E9rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
+message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L\u00E9aut\u00E9, J. C. Mah\u00E9, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
message.documents.activityparagraph8=Trenkel V. & M. J. Rochet, 2003. Performance of indicators derived from abundance estimates for detecting the impact of fishing on a fish community. Can. J. Fish. Aquat. Sci. 60: 67-85.
-message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
-message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
-message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
+message.documents.activitytitle2=Publications des membres du GT relatives \u00E0 l''activit\u00E9 du groupe
+message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T\u00E9tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth\u00E8se hydrobiologique du site \u00E9lectronucl\u00E9aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
+message.documents.indicatortitle3=Travaux ayant utilis\u00E9 les r\u00E9sultats du groupe de travail sur les indicateurs de populations et de peuplements
message.documents.title=Documents
message.index.datatypecom=Community indices by area
message.index.datatypemap=Species distribution maps by area
@@ -85,10 +85,10 @@
message.index.paragraph1=This web site has been created to provide easy access to the raw data and index estimates derived from the scientific surveys carried out by Ifremer along the French coasts.
message.index.paragraph2=All data made available have passed rigorous quality checks. However, as the reliability of results interpretations depends directly on the data used, users are cordially invited to study carefully the survey and quality check protocols.
message.index.paragraph3=Each survey is carried out using a specific sampling design. Data analyses and interpretation of each time series must therefore take into account the sampling designs. The data are presented by survey series on the web site.
-message.index.paragraph4=The species codes used in the data tables are those of the taxinomic reference file of the Syst�me d''informations halieutiques de l''Ifremer ({0}).
+message.index.paragraph4=The species codes used in the data tables are those of the taxinomic reference file of the Syst\u00E8me d''informations halieutiques de l''Ifremer ({0}).
message.index.paragraph5=The link below allows you to extract the elements of the site (graphics and data) in the form of a .zip file (containing a pdf document and data)
message.index.partnertitle=Group members
-message.index.partnerparagraph1=The results presented on this web site are the fruit of an internal Ifremer working group which has been active since 2001 with the objective of developing population and community indicators for the survey data collected since the end of the 1970s along the French coasts. The main group members are (by Ifremer location and in alphabetical order): Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz and Yves V�rin (Boulogne-sur-mer), Andr� Battaglia and Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� and Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet and Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin and Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud and Arnaud Souplet (S�te). The quality process is managed by Vincent Badts. The data-processing is supported by Olivier Berthel�.
+message.index.partnerparagraph1=The results presented on this web site are the fruit of an internal Ifremer working group which has been active since 2001 with the objective of developing population and community indicators for the survey data collected since the end of the 1970s along the French coasts. The main group members are (by Ifremer location and in alphabetical order): Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz and Yves V\u00E9rin (Boulogne-sur-mer), Andr\u00E9 Battaglia and Jean-Pierre L\u00E9aut\u00E9 (L''Houmeau), Jean-Claude Mah\u00E9 and Mich\u00E8le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D\u00E9saunay, Pascal Laffargue, Olivier Le Pape, J\u00E9r\u00E9my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet and Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin and Ivan Schlaich (Port-en-Bessin), Ang\u00E9lique Jadaud and Arnaud Souplet (S\u00E8te). The quality process is managed by Vincent Badts. The data-processing is supported by Olivier Berthel\u00E9.
message.index.qualitymessage=Quality warning
message.index.qualitytitle=Quality warning
message.index.quotemessage=Ifremer {0,date,yyyy}. Population and community indices derived from scientific surveys carried out by Ifremer. {1} ({0,date,dd MMMM})
@@ -98,11 +98,11 @@
message.index.thankstitle=Acknowledgements
message.index.thanksparagraph1=All surveys presented on this web site were conducted by Ifremer and have received financial support from a variety of sources. After initially having been funded by Ifremer three of the surveys are now part of the European Data Collection Framework (DCF); this concerns IBTS, Evhoe and Medits. Two other surveys remain entirely funded by Ifremer: NourVil and CGFS (discussions to include this survey in the DCF are underway). For NourSein, the last three surveys were funded by GIP-Seine Aval. Finally, Crustaflam and NourSomme are entirely funded by EDF within a program of coastal monitoring of nuclear power plants and carried out by Ifremer. This web site has received the financial support of the French ministry for ecology, sustainable development, transport and housing (MEEDDM) (contract Ifremer-MEEDDM 2010). Pour calculating indices for the North Sea the data from all contributing nations was used; it is available in the Datras data base held by ICES (http://datras.ices.dk)
message.index.title=Home
-message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
-message.layout.oceanicdata2=the Fisheries Information System - Syst�me d''information halieutique de l''Ifremer (SIH)
+message.layout.oceanicdata1=le Syst\u00E8me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
+message.layout.oceanicdata2=the Fisheries Information System - Syst\u00E8me d''information halieutique de l''Ifremer (SIH)
message.layout.oceanicdatatitle=Survey data management at Ifremer
message.layout.title=Population and community indices derived from scientific surveys carried out by Ifremer.
-message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
+message.map.citation=Trenkel V.M., O. Berthel\u00E9, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut\u00E9, J.C. Mah\u00E9, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V\u00E9rin, 2009. Grands invert\u00E9br\u00E9s et poissons observ\u00E9s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
message.map.citationtitle=Citation
message.map.downloadaspdf=Download as PDF
message.map.linkarchimer=Access atlas : {0}
@@ -134,21 +134,21 @@
message.search.extract.waitparagraph3=After downloading, close this page by returning to the home page of the site.
message.search.extract.zonetype=Zone and data types
message.source.download=Download
-message.source.paragraph1=The raw data are presented in four tables which contain the basic information by sampling unit (generally a haul) as well as the relevant information on the sampling design (strata). An additional table provides the latin names for the species codes used in the data files. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
-message.source.paragraph2=Les donn�es IBTS (donn�es fran\u00E7aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr\u00F4les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
+message.source.paragraph1=The raw data are presented in four tables which contain the basic information by sampling unit (generally a haul) as well as the relevant information on the sampling design (strata). An additional table provides the latin names for the species codes used in the data files. Il s''agit des donn\u00E9es utilis\u00E9es pour r\u00E9aliser les calculs des indicateurs pr\u00E9sent\u00E9s. Ces donn\u00E9es ont fait l''objet de filtrages et de regroupements \u00E9ventuels par rapport aux donn\u00E9es de base de chaque s\u00E9rie, afin d''assurer la coh\u00E9rence des jeux de donn\u00E9es en vue du calcul des indicateurs. Ainsi, pour certaines s\u00E9ries, des groupes entiers (e.g. les amphihalins) ont pu \u00EAtre retir\u00E9s. Pour certaines s\u00E9ries, certaines ann\u00E9es ou certaines strates ont \u00E9t\u00E9 retir\u00E9es afin de pr\u00E9server l''homog\u00E9n\u00E9it\u00E9 de la s\u00E9rie. Dans des cas d''\u00E9volution du niveau de d\u00E9termination au cours de la s\u00E9rie, plusieurs taxons ont \u00E9t\u00E9 regroup\u00E9s \u00E0 un niveau sup\u00E9rieur.
+message.source.paragraph2=Les donn\u00E9es IBTS (donn\u00E9es fran\u00E7aises et donn\u00E9es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m\u00EAmes contr\u00F4les de qualit\u00E9 que les autres s\u00E9ries de donn\u00E9es utilis\u00E9es, ainsi que de filtrages et de regroupements taxinomiques pour en pr\u00E9server la coh\u00E9rence vis-\u00E0-vis du pr\u00E9sent objectif de production d''indicateurs de tendances.
message.source.paragraph3=The web site provides access to the raw data corresponding to the population and community indices presented. For any other data please contact the administrator of the Fisheries information system of Ifremer ({0}).
message.source.paragraph4=The survey data consist of stations distributed in space following a stratified random design (which can be constant between years). The spatial resolution determines on which spatial scale population and community indices can be calculated.
message.source.paragraph5=The list of proposed spatial areas includes the original sampling areas, plus post-stratified areas suitable for the European Marine Strategie Framework Directive. These areas have been validated by an internal Ifremer working group following sensitivity analyses.
message.source.title=Raw data
-message.survey.atlantique.celtique.desc=The Evhoe suvey (Evaluation des ressources halieutiques de l''ouest europ�en) lasts one month in the fourth quarter every year since 1997. On average 75 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 150 000 km\u00B2 of the Celtic Sea.
+message.survey.atlantique.celtique.desc=The Evhoe suvey (Evaluation des ressources halieutiques de l''ouest europ\u00E9en) lasts one month in the fourth quarter every year since 1997. On average 75 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 150 000 km\u00B2 of the Celtic Sea.
message.survey.atlantique.celtique.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.celtique.plus=For more information on the Evhoe surveys
message.survey.atlantique.celtique=Celtic Sea
-message.survey.atlantique.gascogne.desc=The Evhoe survey (Evaluation des ressources halieutiques de l''ouest europ�en) lasts one month in the fourth quarter every year since 1992 (except 1993 and 1996). On average 70 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 72 500 km\u00B2 of the Bay of Biscay.
+message.survey.atlantique.gascogne.desc=The Evhoe survey (Evaluation des ressources halieutiques de l''ouest europ\u00E9en) lasts one month in the fourth quarter every year since 1992 (except 1993 and 1996). On average 70 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 72 500 km\u00B2 of the Bay of Biscay.
message.survey.atlantique.gascogne.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.gascogne.plus=For more information on the Evhoe surveys
message.survey.atlantique.gascogne=Bay of Biscay
-message.survey.atlantique.vilaine.desc=Survey in the nursery area of the Vilaine river bay (NourVil) lasted one week every year in autumn from 1980 � 2010, except 1991, 1994, 1995, 1998, 1999, 2006 and 2007. It used a 3m-beam trawl. On average 30 15-min hauls were carried out covering each about 0.0041 km\u00B2. This survey provides a representative picture of the 330 km\u00B2 of the Vilaine bay.
+message.survey.atlantique.vilaine.desc=Survey in the nursery area of the Vilaine river bay (NourVil) lasted one week every year in autumn from 1980 \u00E0 2010, except 1991, 1994, 1995, 1998, 1999, 2006 and 2007. It used a 3m-beam trawl. On average 30 15-min hauls were carried out covering each about 0.0041 km\u00B2. This survey provides a representative picture of the 330 km\u00B2 of the Vilaine bay.
message.survey.atlantique.vilaine.nourvil1=Manuel des protocoles Nourriceries Gascogne - V 1.0 (2002)
message.survey.atlantique.vilaine.plus=For more information on the Nourvil survey
message.survey.atlantique.vilaine=Vilaine river bay
@@ -175,7 +175,7 @@
message.survey.mancheorientale.mancheorientale.cgfs1=Manuel des protocoles CGFS - Version 1.0 (2002)
message.survey.mancheorientale.mancheorientale.desc=French survey CGFS (Channel Ground Fish Survey) lasting one month and internationally coordonnated together with the IBTS survey. The survey takes place every year since 1988. On average 90 half hour hauls are carried out with a small GOV trawl. Each haul covers about 0.03 km\u00B2. This survey provides a representative picture of the 70 748 km\u00B2 of the Eastern English Channel.
message.survey.mancheorientale.mancheorientale.plus=For more information on the CGFS survey
-message.survey.mancheorientale.mancheorientale=Eastern English Channel
+message.survey.mancheorientale.mancheorientale=Eastern English Channel
message.survey.mancheorientale=Eastern English Channel
message.survey.mediterranee.estcorse.desc=French contribution to the internationally coordinated Medits (International bottom Trawl Surveys in the Mediterranean) survey, lasting one week in the second quarter every year since 1994 except 2002 using a GOV bottom trawl with short wings. On average 20 hauls are carried out; haul duration is half an hour above 200 m depth which corresponds to 0.05 km\u00B2 and one hour for bottom depths greater than 200 m (0.1\u00A0km\u00B2). Medits provides a representative picture of the 4 562 km\u00B2 of Eastern Corsican island plateau.
message.survey.mediterranee.estcorse.medits1=Manuel des protocoles Medits, Version 1 (1994)
@@ -197,8 +197,8 @@
message.survey.mediterranee.golfelion=Gulf of Lions
message.survey.mediterranee=Mediterranean Sea
message.survey.merdunord.sudmerdunord.desc=Every years since 1980 France contributes one month of ship time to the IBTS (International Bottom Trawl Survey) in the first quarter using a GOV trawl. On average 58 hauls are carried out. The southern North Sea is sampled by four countries (France, Belgium, Danmark and Germany) who together carry out about 200 hauls per year. Each haul lasts half an hour corresponding to a swept area of about 0.067 km\u00B2. IBTS provides a representative picture of the 678\u00A0000\u00A0km\u00B2 of the area.
-message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
-message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
+message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R\u00E9vision VI (1999)
+message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R\u00E9vision VII (2004)
message.survey.merdunord.sudmerdunord.plus=For more information on the IBTS survey
message.survey.merdunord.sudmerdunord=Southern North Sea
message.survey.merdunord=North Sea
@@ -207,4 +207,4 @@
message.survey.paragraph3=The surveys are carried out using standardised sampling designs. The gear and its rigging, station positions, sample treatment and biological sampling are carried out using fixed protocols.
message.survey.paragraph4=Common protocols are used by all participants for surveys carried out under international coordination in the North Sea, Eastern English channel, Celtic Sea, Bay of Biscay and the Mediterranean Sea. The data collected by the different research vessels are therefore comparable.
message.survey.paragraph5=Each survey area is subdivided in strata according to bottom depth, latitude or other criteria. The sampling protocol specifies the number of hauls or pots by stratum.
-message.survey.paragraph6=For each survey the station location is determined following the specified sampling design. The aim is not to obtain the largest catches as fishers might attempt to do, but to collect comparable data for detecting time trends.
+message.survey.paragraph6=For each survey the station location is determined following the specified sampling design. The aim is not to obtain the largest catches as fishers might attempt to do, but to collect comparable data for detecting time trends.
\ No newline at end of file
Modified: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties
===================================================================
--- trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties 2014-03-08 07:25:34 UTC (rev 1135)
+++ trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties 2014-03-08 07:26:03 UTC (rev 1136)
@@ -8,177 +8,177 @@
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
-#
+#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-#
+#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# #L%
###
message.admin.title=Coser admin
message.admin.indexaction=Actions d''administration
-message.admin.listprojects.deleteselected=Supprimer les projets s�lectionn�s
+message.admin.listprojects.deleteselected=Supprimer les projets s\u00E9lectionn\u00E9s
message.admin.listprojects.title=Gestion des projets
message.admin.listprojects.indicatorsprojects=Projects d'indicateur par zones
-message.admin.listprojects.indicatorsprojects.comment=La suppression d''un projets d''indicateur supprimera �galement la possibilit� de t�l�charger les donn�es sources du projet concern�.
+message.admin.listprojects.indicatorsprojects.comment=La suppression d''un projets d''indicateur supprimera \u00E9galement la possibilit\u00E9 de t\u00E9l\u00E9charger les donn\u00E9es sources du projet concern\u00E9.
message.admin.listprojects.mapsprojects=Projects de cartes par zones
message.admin.login=Identifiant
message.admin.loginrequiered=Autentification requise
message.admin.password=Mot de passe
-message.com.downloadascsv=T�l�charger en CSV
-message.com.downloadaszip=T�l�charger en ZIP
-message.com.moredetailspdf=Plus d''informations sur les indices calcul�s des communaut�s
-message.com.paragraph1=Des indices de communaut� sont calcul�s pour un ensemble de taxon dans chaque s�rie. La liste des taxons inclus pour le calcul de chaque indice varie selon les donn�es disponibles pour la r�alisation des calculs.
-message.com.paragraph2=La liste des esp�ces incluses dans le calcul de chaque indice de communaut� est pr�sent�e dans le dossier t�l�chargable sous chaque graphe (fichier \"Information.pdf\").
-message.com.selectindicatorlist=S�lectionner une liste de donn�es
-message.com.title=Indices de communaut�s
+message.com.downloadascsv=T\u00E9l\u00E9charger en CSV
+message.com.downloadaszip=T\u00E9l\u00E9charger en ZIP
+message.com.moredetailspdf=Plus d''informations sur les indices calcul\u00E9s des communaut\u00E9s
+message.com.paragraph1=Des indices de communaut\u00E9 sont calcul\u00E9s pour un ensemble de taxon dans chaque s\u00E9rie. La liste des taxons inclus pour le calcul de chaque indice varie selon les donn\u00E9es disponibles pour la r\u00E9alisation des calculs.
+message.com.paragraph2=La liste des esp\u00E8ces incluses dans le calcul de chaque indice de communaut\u00E9 est pr\u00E9sent\u00E9e dans le dossier t\u00E9l\u00E9chargable sous chaque graphe (fichier \"Information.pdf\").
+message.com.selectindicatorlist=S\u00E9lectionner une liste de donn\u00E9es
+message.com.title=Indices de communaut\u00E9s
message.common.anchortop=Haut
message.common.community=community
message.common.facade=Facade
message.common.indicatorsof=Indicateurs de
message.common.jsreadmore=Voir la suite
-message.common.noresults=Aucun r�sultat disponible.
+message.common.noresults=Aucun r\u00E9sultat disponible.
message.common.population=population
-message.common.selectall=Tout s�lectionner
-message.common.selectnone=Tout d�-s�lectionner
-message.common.selectfacade=S�lectionnez une fa�ade
-message.common.selectindicator=S�lectionnez un indicateur
-message.common.selectpop=S�lectionnez une population
-message.common.selectspecies=S�lectionnez une esp�ce
-message.common.selectsurvey=S�lectionnez une campagne
-message.common.selectzone=S�lectionnez une zone
+message.common.selectall=Tout s\u00E9lectionner
+message.common.selectnone=Tout d\u00E9-s\u00E9lectionner
+message.common.selectfacade=S\u00E9lectionnez une fa\u00E7ade
+message.common.selectindicator=S\u00E9lectionnez un indicateur
+message.common.selectpop=S\u00E9lectionnez une population
+message.common.selectspecies=S\u00E9lectionnez une esp\u00E8ce
+message.common.selectsurvey=S\u00E9lectionnez une campagne
+message.common.selectzone=S\u00E9lectionnez une zone
message.common.species=Species
message.common.validform=Valider
message.common.zone=Zone
message.common.zones=Zones
-message.common.datatypes=Type de donn�es
-message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
-message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
-message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c�tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
-message.documents.genparagraph4=Poissons et invert�br�s au large des c�tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
-message.documents.gentitle1=Rapports g�n�raux
+message.common.datatypes=Type de donn\u00E9es
+message.documents.genparagraph1=Grands invert\u00E9br\u00E9s et poissons observ\u00E9s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
+message.documents.genparagraph2=Grands invert\u00E9br\u00E9s et poissons observ\u00E9s par les campagnes scientifiques. Bilan 2007. 2009. {0}
+message.documents.genparagraph3=L''\u00E9tat des communaut\u00E9s exploit\u00E9es au large des c\u00F4tes de France. Application d''indicateurs \u00E0 l''\u00E9valuation de l''impact de la p\u00EAche. Bilan 2004 Edition 2009. {0}
+message.documents.genparagraph4=Poissons et invert\u00E9br\u00E9s au large des c\u00F4tes de France. Indicateurs issus des p\u00EAches scientifiques. Bilan 2004. 2007. {0}
+message.documents.gentitle1=Rapports g\u00E9n\u00E9raux
message.documents.activityparagraph1=Battaglia A., V. M. Trenkel & M. J. Rochet, 2006. Estimating end effects in trawl catches. ICES J. Mar. Sci. 63: 956-959.
message.documents.activityparagraph2=Lorance P., J. A. Bertrand, A. Brind''Amour, M. J. Rochet & V. Trenkel, 2009. Assessment of impacts from human activities on ecosystem components in the Bay of Biscay in the early 1990s. Aquatic living resources 22: 409-431.
-message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
+message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah\u00E9, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
message.documents.activityparagraph4=Rochet M. J. & J. Rice, 2005. Do explicit criteria help in selecting indicators for ecosystem-based fisheries management? ICES J. Mar. Sci. 62: 528-539.
message.documents.activityparagraph5=Rochet M. J. & V. Trenkel, 2003. Which community indicators can measure the impact of fishing? A review and proposals. Can. J. Fish. Aquat. Sci. 60: 86-99.
-message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
-message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
+message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah\u00E9, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V\u00E9rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
+message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L\u00E9aut\u00E9, J. C. Mah\u00E9, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
message.documents.activityparagraph8=Trenkel V. & M. J. Rochet, 2003. Performance of indicators derived from abundance estimates for detecting the impact of fishing on a fish community. Can. J. Fish. Aquat. Sci. 60: 67-85.
-message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
-message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
-message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
+message.documents.activitytitle2=Publications des membres du GT relatives \u00E0 l''activit\u00E9 du groupe
+message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T\u00E9tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth\u00E8se hydrobiologique du site \u00E9lectronucl\u00E9aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
+message.documents.indicatortitle3=Travaux ayant utilis\u00E9 les r\u00E9sultats du groupe de travail sur les indicateurs de populations et de peuplements
message.documents.title=Documents
-message.index.datatypecom=Des indices de communaut� par zone
-message.index.datatypemap=Des cartes de distribution par esp�ce et par zone
-message.index.datatypepop=Des indices biologiques par esp�ce et par zone
-message.index.datatypesource=Des donn�es par op�ration d''�chantillonnage (en g�n�ral par trait de chalut)
-message.index.datatypesource.short=Des donn�es par op�ration d''�chantillonnage
-message.index.datatypetitle=Consultation des donn�es en ligne
+message.index.datatypecom=Des indices de communaut\u00E9 par zone
+message.index.datatypemap=Des cartes de distribution par esp\u00E8ce et par zone
+message.index.datatypepop=Des indices biologiques par esp\u00E8ce et par zone
+message.index.datatypesource=Des donn\u00E9es par op\u00E9ration d''\u00E9chantillonnage (en g\u00E9n\u00E9ral par trait de chalut)
+message.index.datatypesource.short=Des donn\u00E9es par op\u00E9ration d''\u00E9chantillonnage
+message.index.datatypetitle=Consultation des donn\u00E9es en ligne
message.index.documentsmessage=Documents
message.index.documentstitle=Documents
-message.index.extractdatatitle=Extraction des donn�es
+message.index.extractdatatitle=Extraction des donn\u00E9es
message.index.extractdatalink=Formulaire de recherche
-message.index.paragraph1=Ce site a �t� con�u pour fournir en libre acc�s des donn�es brutes et des donn�es �labor�es relatives aux campagnes scientifiques d''observation halieutique conduites par l''Ifremer le long des c�tes fran�aises.
-message.index.paragraph2=Toutes les donn�es mises � disposition ont fait l''objet de qualification selon des protocoles sp�cifiques. La qualit� des interpr�tations �tant directement li�e � la nature des donn�es source, les utilisateurs de donn�es sont invit�s � consid�rer avec attention les descriptions des protocoles mis en \u0153uvre ainsi que les niveaux de qualit� contr�l�s.
-message.index.paragraph3=Chaque s�rie de campagnes est conduite selon une strat�gie d''�chantillonnage sp�cifique. Sauf cas particuliers, les analyses et interpr�tations doivent �tre conduites par s�rie, en prenant en compte les strat�gies d''�chantillonnage propres � chacune de ces s�ries. Sur le site, les donn�es sont pr�sent�es par s�rie.
-message.index.paragraph4=Dans les tables de donn�es, toutes les esp�ces sont identifi�es selon le r�f�rentiel taxinomique du Syst�me d''informations halieutiques de l''Ifremer ({0}).
-message.index.paragraph5=Les liens ci-dessous vous permet d''extraire les �l�ments du site (graphique et donn�es) sous la forme d''un fichier .zip (contenant un document pdf et les donn�es)
+message.index.paragraph1=Ce site a \u00E9t\u00E9 con\u00E7u pour fournir en libre acc\u00E8s des donn\u00E9es brutes et des donn\u00E9es \u00E9labor\u00E9es relatives aux campagnes scientifiques d''observation halieutique conduites par l''Ifremer le long des c\u00F4tes fran\u00E7aises.
+message.index.paragraph2=Toutes les donn\u00E9es mises \u00E0 disposition ont fait l''objet de qualification selon des protocoles sp\u00E9cifiques. La qualit\u00E9 des interpr\u00E9tations \u00E9tant directement li\u00E9e \u00E0 la nature des donn\u00E9es source, les utilisateurs de donn\u00E9es sont invit\u00E9s \u00E0 consid\u00E9rer avec attention les descriptions des protocoles mis en \u0153uvre ainsi que les niveaux de qualit\u00E9 contr\u00F4l\u00E9s.
+message.index.paragraph3=Chaque s\u00E9rie de campagnes est conduite selon une strat\u00E9gie d''\u00E9chantillonnage sp\u00E9cifique. Sauf cas particuliers, les analyses et interpr\u00E9tations doivent \u00EAtre conduites par s\u00E9rie, en prenant en compte les strat\u00E9gies d''\u00E9chantillonnage propres \u00E0 chacune de ces s\u00E9ries. Sur le site, les donn\u00E9es sont pr\u00E9sent\u00E9es par s\u00E9rie.
+message.index.paragraph4=Dans les tables de donn\u00E9es, toutes les esp\u00E8ces sont identifi\u00E9es selon le r\u00E9f\u00E9rentiel taxinomique du Syst\u00E8me d''informations halieutiques de l''Ifremer ({0}).
+message.index.paragraph5=Les liens ci-dessous vous permet d''extraire les \u00E9l\u00E9ments du site (graphique et donn\u00E9es) sous la forme d''un fichier .zip (contenant un document pdf et les donn\u00E9es)
message.index.partnertitle=Membres du groupe
-message.index.partnerparagraph1=Les r�sultats pr�sent�s sur ce site sont le produit de l''activit� d''un groupe de travail de l''Ifremer qui se r�unit chaque ann�e depuis 2001 pour d�velopper des indicateurs de populations et de peuplements � partir des donn�es des s�ries de campagnes halieutiques standardis�es conduites depuis la fin des ann�es 1970 par l''Ifremer le long des c�tes de France m�tropolitaine. Les principaux membres du groupe sont (par ordre alphab�tique de site et de patronyme)\u00A0: Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz et Yves V�rin (Boulogne-sur-mer), Andr� Battaglia et Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� et Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet et Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin et Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud et Arnaud Souplet (S�te). La d�marche qualit� est g�r�e par Vincent Badts. Le support informatique de gestion des donn�es est assur� par Olivier Berthel�.
-message.index.qualitymessage=Avertissement qualit�
-message.index.qualitytitle=Avertissement qualit�
+message.index.partnerparagraph1=Les r\u00E9sultats pr\u00E9sent\u00E9s sur ce site sont le produit de l''activit\u00E9 d''un groupe de travail de l''Ifremer qui se r\u00E9unit chaque ann\u00E9e depuis 2001 pour d\u00E9velopper des indicateurs de populations et de peuplements \u00E0 partir des donn\u00E9es des s\u00E9ries de campagnes halieutiques standardis\u00E9es conduites depuis la fin des ann\u00E9es 1970 par l''Ifremer le long des c\u00F4tes de France m\u00E9tropolitaine. Les principaux membres du groupe sont (par ordre alphab\u00E9tique de site et de patronyme)\u00A0: Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz et Yves V\u00E9rin (Boulogne-sur-mer), Andr\u00E9 Battaglia et Jean-Pierre L\u00E9aut\u00E9 (L''Houmeau), Jean-Claude Mah\u00E9 et Mich\u00E8le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D\u00E9saunay, Pascal Laffargue, Olivier Le Pape, J\u00E9r\u00E9my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet et Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin et Ivan Schlaich (Port-en-Bessin), Ang\u00E9lique Jadaud et Arnaud Souplet (S\u00E8te). La d\u00E9marche qualit\u00E9 est g\u00E9r\u00E9e par Vincent Badts. Le support informatique de gestion des donn\u00E9es est assur\u00E9 par Olivier Berthel\u00E9.
+message.index.qualitymessage=Avertissement qualit\u00E9
+message.index.qualitytitle=Avertissement qualit\u00E9
message.index.quotemessage=Ifremer {0,date,yyyy}. Indices de populations et de communautés issus des campagnes de surveillance halieutique de l''Ifremer. {1} ({0,date,dd MMMM})
message.index.quotetitle=Pour citer ce site
-message.index.surveyparagraph=Des manuels des protocoles d�crivent les modalit�s techniques de r�alisation de chaque s�rie de campagnes.
+message.index.surveyparagraph=Des manuels des protocoles d\u00E9crivent les modalit\u00E9s techniques de r\u00E9alisation de chaque s\u00E9rie de campagnes.
message.index.surveytitle=Description des campagnes
message.index.thankstitle=Remerciements
-message.index.thanksparagraph1=Bien que toutes les s�ries de campagnes dont des r�sultats sont pr�sent�s sur ce site aient �t� conduites par l''Ifremer, elles ont fait l''objet de financements vari�s. Certaines, apr�s une phase �ventuelle de financement unique par l''Ifremer font l''objet de cofinancements, comme les s�ries IBTS, Evhoe et Medits retenues au titre du r�glement europ�en sur la collecte des donn�es halieutiques (DCF). D''autres sont prises en charge en totalit� par l''Ifremer, comme les s�ries NourVil et CGFS (cette derni�re �tant en cours d''�valuation pour une reconnaissance au titre du r�glement europ�en sur la collecte des donn�es halieutiques - DCF). Pour la s�rie NourSein, les campagnes ont �t� co-financ�es par le conseil r�gional de Haute Normandie, le GPMH, le programme Liteau, le programme Seine Aval et le GIP-Seine Aval, selon les ann�es. Enfin, les s�ries Crustaflam et NourSomme sont financ�es en totalit� par EDF au titre de la surveillance de centrales nucl�aires littorales, dans le cadre de contrats entre Ifremer et EDF. Le pr�sent site a �t� cr�� gr\u00E2ce � un soutien du MEEDDM (contrat Ifremer-MEEDDM 2010). Pour l''�tablissement des indices en mer du Nord, les donn�es sources utilis�es sont celles mises � disposition par les diff�rents pays partenaires de la s�rie IBTS dans la base Datras du CIEM (http://datras.ices.dk)
+message.index.thanksparagraph1=Bien que toutes les s\u00E9ries de campagnes dont des r\u00E9sultats sont pr\u00E9sent\u00E9s sur ce site aient \u00E9t\u00E9 conduites par l''Ifremer, elles ont fait l''objet de financements vari\u00E9s. Certaines, apr\u00E8s une phase \u00E9ventuelle de financement unique par l''Ifremer font l''objet de cofinancements, comme les s\u00E9ries IBTS, Evhoe et Medits retenues au titre du r\u00E8glement europ\u00E9en sur la collecte des donn\u00E9es halieutiques (DCF). D''autres sont prises en charge en totalit\u00E9 par l''Ifremer, comme les s\u00E9ries NourVil et CGFS (cette derni\u00E8re \u00E9tant en cours d''\u00E9valuation pour une reconnaissance au titre du r\u00E8glement europ\u00E9en sur la collecte des donn\u00E9es halieutiques - DCF). Pour la s\u00E9rie NourSein, les campagnes ont \u00E9t\u00E9 co-financ\u00E9es par le conseil r\u00E9gional de Haute Normandie, le GPMH, le programme Liteau, le programme Seine Aval et le GIP-Seine Aval, selon les ann\u00E9es. Enfin, les s\u00E9ries Crustaflam et NourSomme sont financ\u00E9es en totalit\u00E9 par EDF au titre de la surveillance de centrales nucl\u00E9aires littorales, dans le cadre de contrats entre Ifremer et EDF. Le pr\u00E9sent site a \u00E9t\u00E9 cr\u00E9\u00E9 gr\u00E2ce \u00E0 un soutien du MEEDDM (contrat Ifremer-MEEDDM 2010). Pour l''\u00E9tablissement des indices en mer du Nord, les donn\u00E9es sources utilis\u00E9es sont celles mises \u00E0 disposition par les diff\u00E9rents pays partenaires de la s\u00E9rie IBTS dans la base Datras du CIEM (http://datras.ices.dk)
message.index.title=Bienvenida
-message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
-message.layout.oceanicdata2=le Syst�me d''information halieutique de l''Ifremer (SIH)
-message.layout.oceanicdatatitle=Gestion des donn�es des campagnes oc�anographiques � l''Ifremer
-message.layout.title=�ndices de las poblaciones y comunidades de las campa�as de seguimiento, que participan de la pesquer�a pulgadas Ifremer
-message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
+message.layout.oceanicdata1=le Syst\u00E8me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
+message.layout.oceanicdata2=le Syst\u00E8me d''information halieutique de l''Ifremer (SIH)
+message.layout.oceanicdatatitle=Gestion des donn\u00E9es des campagnes oc\u00E9anographiques \u00E0 l''Ifremer
+message.layout.title=\u00CDndices de las poblaciones y comunidades de las campa\u00F1as de seguimiento, que participan de la pesquer\u00EDa pulgadas Ifremer
+message.map.citation=Trenkel V.M., O. Berthel\u00E9, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut\u00E9, J.C. Mah\u00E9, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V\u00E9rin, 2009. Grands invert\u00E9br\u00E9s et poissons observ\u00E9s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
message.map.citationtitle=Citation
-message.map.downloadaspdf=T�l�charger en PDF
-message.map.linkarchimer=Acc�s � l''atlas : {0}
-message.map.paragraph1=L''objectif de cet atlas est de donner un aper�u de la distribution spatiale des esp�ces de poissons et de certains invert�br�s marins � partir des observations des campagnes de p�che scientifiques.
-message.map.paragraph2=Pour chaque zone un quadrillage syst�matique a �t� d�fini, puis la densit� moyenne par km\u00B2 dans chaque cellule a �t� calcul�e en utilisant les observations de toute la p�riode. Pour la repr�sentation cartographique, les cellules avec des densit�s moyenne correspondant aux quartiles de densit� ont re�u la m�me couleur\u00A0: bleu\u00A0: esp�ce jamais observ�e, jaune clair\u00A0: densit� moyenne entre [0 et 25\u00A0%[; jaune fonc�\u00A0: [25-50\u00A0%[, orange\u00A0: [50-75\u00A0%[ et rouge\u00A0: [75-100\u00A0%]. Donc, les zones o\u00F9 se trouvent les densit�s les plus �lev�es en moyenne sont repr�sent�es en rouge.
+message.map.downloadaspdf=T\u00E9l\u00E9charger en PDF
+message.map.linkarchimer=Acc\u00E8s \u00E0 l''atlas : {0}
+message.map.paragraph1=L''objectif de cet atlas est de donner un aper\u00E7u de la distribution spatiale des esp\u00E8ces de poissons et de certains invert\u00E9br\u00E9s marins \u00E0 partir des observations des campagnes de p\u00EAche scientifiques.
+message.map.paragraph2=Pour chaque zone un quadrillage syst\u00E9matique a \u00E9t\u00E9 d\u00E9fini, puis la densit\u00E9 moyenne par km\u00B2 dans chaque cellule a \u00E9t\u00E9 calcul\u00E9e en utilisant les observations de toute la p\u00E9riode. Pour la repr\u00E9sentation cartographique, les cellules avec des densit\u00E9s moyenne correspondant aux quartiles de densit\u00E9 ont re\u00E7u la m\u00EAme couleur\u00A0: bleu\u00A0: esp\u00E8ce jamais observ\u00E9e, jaune clair\u00A0: densit\u00E9 moyenne entre [0 et 25\u00A0%[; jaune fonc\u00E9\u00A0: [25-50\u00A0%[, orange\u00A0: [50-75\u00A0%[ et rouge\u00A0: [75-100\u00A0%]. Donc, les zones o\u00F9 se trouvent les densit\u00E9s les plus \u00E9lev\u00E9es en moyenne sont repr\u00E9sent\u00E9es en rouge.
message.map.title=Cartes de distribution
message.map.warning=Avertissement
-message.map.warningcontent=Les cartes pr�sent�es ne doivent pas �tre interpr�t�es comme des cartes de distribution des esp�ces mais comme celle des zones o\u00F9 elles sont captur�es lors des campagnes scientifiques. Les campagnes �tant r�alis�es avec des chaluts diff�rents et � diff�rentes saisons, les esp�ces peuvent avoir des capturabilit�s tr�s diff�rentes entre les s�ries de campagnes, donc d''une zone � l''autre.
-message.pop.downloadascsv=T�l�charger en CSV
-message.pop.moredetailspdf=Plus d''informations sur les indices calcul�s des populations
-message.pop.paragraph1=Les indices pr�sent�s ont �t� s�lectionn�s en r�f�rence � leur aptitude � renseigner sur l''impact de la p�che, en vue de leur int�gration dans des tableaux de bord d''indicateurs d''�volution d''�cosyst�mes exploit�s par la p�che.
-message.pop.paragraph2=Les donn�es disponibles sur le site sont les valeurs de chaque indice. Les informations ont �t� valid�es par un groupe de travail dans une approche int�grative d''indicateurs de populations et de communaut�s. Les r�sultats sont donn�s par zone g�ographique et par esp�ce pour l''ensemble de la s�rie de donn�es disponible. L''utilisateur peut s�lectionner la zone g�ographique, la saison (dans le cas de s�ries saisonni�res), l''esp�ce et l''indice. Pour les s�lections pour lesquelles une information est disponible, le syst�me produit un graphe pr�sentant la distribution temporelle de l''indice, avec une repr�sentation de l''�cart-type. Il fournit la possibilit� d''extraire la table des donn�es correspondantes, incluant la valeur de l''indice par ann�e, ainsi que son �cart-type et son coefficient de variation.
+message.map.warningcontent=Les cartes pr\u00E9sent\u00E9es ne doivent pas \u00EAtre interpr\u00E9t\u00E9es comme des cartes de distribution des esp\u00E8ces mais comme celle des zones o\u00F9 elles sont captur\u00E9es lors des campagnes scientifiques. Les campagnes \u00E9tant r\u00E9alis\u00E9es avec des chaluts diff\u00E9rents et \u00E0 diff\u00E9rentes saisons, les esp\u00E8ces peuvent avoir des capturabilit\u00E9s tr\u00E8s diff\u00E9rentes entre les s\u00E9ries de campagnes, donc d''une zone \u00E0 l''autre.
+message.pop.downloadascsv=T\u00E9l\u00E9charger en CSV
+message.pop.moredetailspdf=Plus d''informations sur les indices calcul\u00E9s des populations
+message.pop.paragraph1=Les indices pr\u00E9sent\u00E9s ont \u00E9t\u00E9 s\u00E9lectionn\u00E9s en r\u00E9f\u00E9rence \u00E0 leur aptitude \u00E0 renseigner sur l''impact de la p\u00EAche, en vue de leur int\u00E9gration dans des tableaux de bord d''indicateurs d''\u00E9volution d''\u00E9cosyst\u00E8mes exploit\u00E9s par la p\u00EAche.
+message.pop.paragraph2=Les donn\u00E9es disponibles sur le site sont les valeurs de chaque indice. Les informations ont \u00E9t\u00E9 valid\u00E9es par un groupe de travail dans une approche int\u00E9grative d''indicateurs de populations et de communaut\u00E9s. Les r\u00E9sultats sont donn\u00E9s par zone g\u00E9ographique et par esp\u00E8ce pour l''ensemble de la s\u00E9rie de donn\u00E9es disponible. L''utilisateur peut s\u00E9lectionner la zone g\u00E9ographique, la saison (dans le cas de s\u00E9ries saisonni\u00E8res), l''esp\u00E8ce et l''indice. Pour les s\u00E9lections pour lesquelles une information est disponible, le syst\u00E8me produit un graphe pr\u00E9sentant la distribution temporelle de l''indice, avec une repr\u00E9sentation de l''\u00E9cart-type. Il fournit la possibilit\u00E9 d''extraire la table des donn\u00E9es correspondantes, incluant la valeur de l''indice par ann\u00E9e, ainsi que son \u00E9cart-type et son coefficient de variation.
message.pop.title=Indices biologiques
-message.quality.acceptance=Je reconnais avoir pris connaissance des documents et des restrictions associ�es et je m''engage � citer la source des donn�es.
-message.quality.notaccepted=Vous devez valider les conditions Avertissement Qualit� !
-message.quality.paragraph1=Bien que les donn�es aient �t� pr�cautionneusement contr�l�es par l''Ifremer, des d�fauts inh�rents � l''agr�gation des informations peuvent persister. Par exemple\u00A0:
-message.quality.paragraph2=En d�pit du fait que toutes les donn�es de toutes les s�ries de campagnes soient pr�sent�es selon le m�me format, sauf cas particuliers, des diff�rences dans les strat�gies d''observation emp�chent la combinaison de donn�es de diff�rentes campagnes dans une m�me analyse. Par exemple, la capturabilit� d''une m�me esp�ce varie selon le type d''engin d''�chantillonnage utilis�. Il en r�sulte que chaque engin capture un sous-ensemble particulier des bioc�noses �chantillonn�es.
-message.quality.paragraph3=Une propri�t� commune aux s�ries d''observations � la mer est l''�volution dans le temps de la comp�tence des �quipes embarqu�es pour la d�termination des esp�ces. Il peut en r�sulter des apparitions, des disparitions ou des assignations sous un m�me nom de taxons proches dans les jeux de donn�es, non repr�sentatifs de l''�volution des populations concern�es dans l''�cosyst�me.
-message.quality.paragraph4=Pour les campagnes d''une m�me s�rie, des changements dans les proc�dures d''�chantillonnage, dans les caract�ristiques des engins, dans la p�riode de r�alisation de la campagne et la zone couverte peuvent influencer les captures. Pour pr�venir les risques de biais dans les analyses en raison de ces facteurs, les jeux de donn�es doivent �tre pr�alablement filtr�s ad�quatement.
-message.quality.paragraph5=Il est vivement recommand� aux utilisateurs de donn�es de les traiter avec pr�caution. Si des utilisateurs s''interrogent sur la validit� de donn�es, ils sont invit�s � contacter l''administrateur de la base de donn�es ({0}).
-message.quality.title=Avertissement Qualit�
+message.quality.acceptance=Je reconnais avoir pris connaissance des documents et des restrictions associ\u00E9es et je m''engage \u00E0 citer la source des donn\u00E9es.
+message.quality.notaccepted=Vous devez valider les conditions Avertissement Qualit\u00E9 !
+message.quality.paragraph1=Bien que les donn\u00E9es aient \u00E9t\u00E9 pr\u00E9cautionneusement contr\u00F4l\u00E9es par l''Ifremer, des d\u00E9fauts inh\u00E9rents \u00E0 l''agr\u00E9gation des informations peuvent persister. Par exemple\u00A0:
+message.quality.paragraph2=En d\u00E9pit du fait que toutes les donn\u00E9es de toutes les s\u00E9ries de campagnes soient pr\u00E9sent\u00E9es selon le m\u00EAme format, sauf cas particuliers, des diff\u00E9rences dans les strat\u00E9gies d''observation emp\u00EAchent la combinaison de donn\u00E9es de diff\u00E9rentes campagnes dans une m\u00EAme analyse. Par exemple, la capturabilit\u00E9 d''une m\u00EAme esp\u00E8ce varie selon le type d''engin d''\u00E9chantillonnage utilis\u00E9. Il en r\u00E9sulte que chaque engin capture un sous-ensemble particulier des bioc\u00E9noses \u00E9chantillonn\u00E9es.
+message.quality.paragraph3=Une propri\u00E9t\u00E9 commune aux s\u00E9ries d''observations \u00E0 la mer est l''\u00E9volution dans le temps de la comp\u00E9tence des \u00E9quipes embarqu\u00E9es pour la d\u00E9termination des esp\u00E8ces. Il peut en r\u00E9sulter des apparitions, des disparitions ou des assignations sous un m\u00EAme nom de taxons proches dans les jeux de donn\u00E9es, non repr\u00E9sentatifs de l''\u00E9volution des populations concern\u00E9es dans l''\u00E9cosyst\u00E8me.
+message.quality.paragraph4=Pour les campagnes d''une m\u00EAme s\u00E9rie, des changements dans les proc\u00E9dures d''\u00E9chantillonnage, dans les caract\u00E9ristiques des engins, dans la p\u00E9riode de r\u00E9alisation de la campagne et la zone couverte peuvent influencer les captures. Pour pr\u00E9venir les risques de biais dans les analyses en raison de ces facteurs, les jeux de donn\u00E9es doivent \u00EAtre pr\u00E9alablement filtr\u00E9s ad\u00E9quatement.
+message.quality.paragraph5=Il est vivement recommand\u00E9 aux utilisateurs de donn\u00E9es de les traiter avec pr\u00E9caution. Si des utilisateurs s''interrogent sur la validit\u00E9 de donn\u00E9es, ils sont invit\u00E9s \u00E0 contacter l''administrateur de la base de donn\u00E9es ({0}).
+message.quality.title=Avertissement Qualit\u00E9
message.search.extract.extract=Extraire
-message.search.extract.speciesindicators=Esp�ces et indicateurs
-message.search.extract.title=Extraction des donn�es
+message.search.extract.speciesindicators=Esp\u00E8ces et indicateurs
+message.search.extract.title=Extraction des donn\u00E9es
message.search.extract.updatelists=Suite
message.search.extract.waittitle=Extraction en cours...
-message.search.extract.waitparagraph1=Les donn�es sont en cours d'extraction. Merci de patienter.
-message.search.extract.waitparagraph2=Cette op�ration peut prendre plusieurs minute dans le cas ou de nombreux graphiques doivent �tre g�n�r�s.
-message.search.extract.waitparagraph3=Apr�s le t�l�chargement, fermer cette page en revenant sur la page d''accueil du site.
-message.search.extract.zonetype=Zone et type de donn�es
-message.search.extract.title=Extraction des donn�es
-message.source.download=T�l�charger
-message.source.paragraph1=Les donn�es de base sont pr�sent�es selon quatre tables fournissant des informations de base �lev�es � l''op�ration d''�chantillonnage (en g�n�ral un trait de chalut) et organis�es selon des unit�s g�ographiques d�finies en relation avec le plan d''�chantillonnage. Une table suppl�mentaire pr�sente le r�f�rentiel taxinomique associ� aux donn�es. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
-message.source.paragraph2=Les donn�es IBTS (donn�es fran�aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr�les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
-message.source.paragraph3=Le site ne contient des donn�es de base que pour une partie des s�ries de campagnes pour lesquelles des indices de populations et de communaut�s sont pr�sent�s, selon les modalit�s d''acc�s � ces donn�es. Pour un acc�s aux s�ries de donn�es source, il convient de contacter l''administrateur du Syst�me d''informations halieutiques de l''Ifremer ({0}) pour les donn�es fran�aises, et le site Datras du CIEM (http://datras.ices.dk) pour les donn�es IBTS des autres pays.
-message.source.paragraph4=Les donn�es de campagnes halieutiques sont constitu�es � partir de stations d''�chantillonnage r�parties dans l''espace selon le principe de tirage stratifi�. La densit� de l''�chantillonnage conditionne la partition g�ographique selon laquelle les indices de population et de communaut� peuvent �tre �tablis.
-message.source.paragraph5=Les plans de zonage propos�s incluent le plan de r�f�rence correspondant au plan d''�chantillonnage, ainsi que des adaptations pour tenir compte des limites des sous-r�gions d�finies par la strat�gie marine europ�enne. Ils ont �t� valid�s par un groupe de travail de l''Ifremer, apr�s exploration de la sensibilit� de divers indices aux ajustements propos�s.
-message.source.title=Donn�es de base
-message.survey.atlantique.celtique.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1997. En moyenne 75 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 150 000 km\u00B2 de la mer Celtique.
+message.search.extract.waitparagraph1=Les donn\u00E9es sont en cours d'extraction. Merci de patienter.
+message.search.extract.waitparagraph2=Cette op\u00E9ration peut prendre plusieurs minute dans le cas ou de nombreux graphiques doivent \u00EAtre g\u00E9n\u00E9r\u00E9s.
+message.search.extract.waitparagraph3=Apr\u00E8s le t\u00E9l\u00E9chargement, fermer cette page en revenant sur la page d''accueil du site.
+message.search.extract.zonetype=Zone et type de donn\u00E9es
+message.search.extract.title=Extraction des donn\u00E9es
+message.source.download=T\u00E9l\u00E9charger
+message.source.paragraph1=Les donn\u00E9es de base sont pr\u00E9sent\u00E9es selon quatre tables fournissant des informations de base \u00E9lev\u00E9es \u00E0 l''op\u00E9ration d''\u00E9chantillonnage (en g\u00E9n\u00E9ral un trait de chalut) et organis\u00E9es selon des unit\u00E9s g\u00E9ographiques d\u00E9finies en relation avec le plan d''\u00E9chantillonnage. Une table suppl\u00E9mentaire pr\u00E9sente le r\u00E9f\u00E9rentiel taxinomique associ\u00E9 aux donn\u00E9es. Il s''agit des donn\u00E9es utilis\u00E9es pour r\u00E9aliser les calculs des indicateurs pr\u00E9sent\u00E9s. Ces donn\u00E9es ont fait l''objet de filtrages et de regroupements \u00E9ventuels par rapport aux donn\u00E9es de base de chaque s\u00E9rie, afin d''assurer la coh\u00E9rence des jeux de donn\u00E9es en vue du calcul des indicateurs. Ainsi, pour certaines s\u00E9ries, des groupes entiers (e.g. les amphihalins) ont pu \u00EAtre retir\u00E9s. Pour certaines s\u00E9ries, certaines ann\u00E9es ou certaines strates ont \u00E9t\u00E9 retir\u00E9es afin de pr\u00E9server l''homog\u00E9n\u00E9it\u00E9 de la s\u00E9rie. Dans des cas d''\u00E9volution du niveau de d\u00E9termination au cours de la s\u00E9rie, plusieurs taxons ont \u00E9t\u00E9 regroup\u00E9s \u00E0 un niveau sup\u00E9rieur.
+message.source.paragraph2=Les donn\u00E9es IBTS (donn\u00E9es fran\u00E7aises et donn\u00E9es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m\u00EAmes contr\u00F4les de qualit\u00E9 que les autres s\u00E9ries de donn\u00E9es utilis\u00E9es, ainsi que de filtrages et de regroupements taxinomiques pour en pr\u00E9server la coh\u00E9rence vis-\u00E0-vis du pr\u00E9sent objectif de production d''indicateurs de tendances.
+message.source.paragraph3=Le site ne contient des donn\u00E9es de base que pour une partie des s\u00E9ries de campagnes pour lesquelles des indices de populations et de communaut\u00E9s sont pr\u00E9sent\u00E9s, selon les modalit\u00E9s d''acc\u00E8s \u00E0 ces donn\u00E9es. Pour un acc\u00E8s aux s\u00E9ries de donn\u00E9es source, il convient de contacter l''administrateur du Syst\u00E8me d''informations halieutiques de l''Ifremer ({0}) pour les donn\u00E9es fran\u00E7aises, et le site Datras du CIEM (http://datras.ices.dk) pour les donn\u00E9es IBTS des autres pays.
+message.source.paragraph4=Les donn\u00E9es de campagnes halieutiques sont constitu\u00E9es \u00E0 partir de stations d''\u00E9chantillonnage r\u00E9parties dans l''espace selon le principe de tirage stratifi\u00E9. La densit\u00E9 de l''\u00E9chantillonnage conditionne la partition g\u00E9ographique selon laquelle les indices de population et de communaut\u00E9 peuvent \u00EAtre \u00E9tablis.
+message.source.paragraph5=Les plans de zonage propos\u00E9s incluent le plan de r\u00E9f\u00E9rence correspondant au plan d''\u00E9chantillonnage, ainsi que des adaptations pour tenir compte des limites des sous-r\u00E9gions d\u00E9finies par la strat\u00E9gie marine europ\u00E9enne. Ils ont \u00E9t\u00E9 valid\u00E9s par un groupe de travail de l''Ifremer, apr\u00E8s exploration de la sensibilit\u00E9 de divers indices aux ajustements propos\u00E9s.
+message.source.title=Donn\u00E9es de base
+message.survey.atlantique.celtique.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ\u00E9en) d''un mois au quatri\u00E8me trimestre, tous les ans depuis 1997. En moyenne 75 traits d''une demi-heure, au chalut de fond \u00E0 grande ouverture verticale, sont r\u00E9alis\u00E9s. Chaque trait couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr\u00E9sentative des 150 000 km\u00B2 de la mer Celtique.
message.survey.atlantique.celtique.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.celtique.plus=Pour en savoir plus sur les campagnes Evhoe
message.survey.atlantique.celtique=Mer Celtique
-message.survey.atlantique.gascogne.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1992 (sauf en 1993 et 1996). En moyenne, 70 traits de chalut d''une demi-heure au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface de 0,067 km\u00B2. Cette campagne est repr�sentative des 72 500 km\u00B2 du golfe de Gascogne. La campagne Evhoe couvre donc le golfe de Gascogne et la mer Celtique avec le m�me protocole. De plus elle est coordonn�e internationalement, dans le cadre des campagnes IBTS, avec une campagne espagnole en mer Cantabrique, une campagne irlandaise et une campagne anglaise en mer Celtique.
+message.survey.atlantique.gascogne.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ\u00E9en) d''un mois au quatri\u00E8me trimestre, tous les ans depuis 1992 (sauf en 1993 et 1996). En moyenne, 70 traits de chalut d''une demi-heure au chalut de fond \u00E0 grande ouverture verticale, sont r\u00E9alis\u00E9s. Chaque trait couvre une surface de 0,067 km\u00B2. Cette campagne est repr\u00E9sentative des 72 500 km\u00B2 du golfe de Gascogne. La campagne Evhoe couvre donc le golfe de Gascogne et la mer Celtique avec le m\u00EAme protocole. De plus elle est coordonn\u00E9e internationalement, dans le cadre des campagnes IBTS, avec une campagne espagnole en mer Cantabrique, une campagne irlandaise et une campagne anglaise en mer Celtique.
message.survey.atlantique.gascogne.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.gascogne.plus=Pour en savoir plus sur les campagnes Evhoe
message.survey.atlantique.gascogne=Golfe de Gascogne
-message.survey.atlantique.vilaine.desc=Campagne sur la nourricerie de la baie de Vilaine (NourVil), d''une semaine � l''automne, tous les ans de 1980 � 2010, sauf en 1991, 1994, 1995, 1998, 1999, 2006 et 2007, au chalut � perche de 3 m�tres de large. En moyenne, 30 chalutages de 15 minutes sont r�alis�s. Chaque trait couvre une surface d''environ 0,0041 km\u00B2. Cette campagne est repr�sentative des 330 km\u00B2 de la baie.
+message.survey.atlantique.vilaine.desc=Campagne sur la nourricerie de la baie de Vilaine (NourVil), d''une semaine \u00E0 l''automne, tous les ans de 1980 \u00E0 2010, sauf en 1991, 1994, 1995, 1998, 1999, 2006 et 2007, au chalut \u00E0 perche de 3 m\u00E8tres de large. En moyenne, 30 chalutages de 15 minutes sont r\u00E9alis\u00E9s. Chaque trait couvre une surface d''environ 0,0041 km\u00B2. Cette campagne est repr\u00E9sentative des 330 km\u00B2 de la baie.
message.survey.atlantique.vilaine.nourvil1=Manuel des protocoles Nourriceries Gascogne - V 1.0 (2002)
message.survey.atlantique.vilaine.plus=Pour en savoir plus sur les campagnes Nourvil
message.survey.atlantique.vilaine=Baie de Vilaine
-message.survey.atlantique=Fa�ade Atlantique
-message.survey.dataengincasier=Un �chantillonnage au casier pour les campagnes d''�valuation des grands crustac�s, en particulier le homard, aux abords du cap de Flamanville.
-message.survey.dataenginfond=Un chalut de fond � grande ouverture verticale pour l''observation des ressources d�mersales, sur les plateaux continentaux et le haut des pentes continentales (accores) en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne, golfe du Lion et Est de la Corse,
-message.survey.dataenginperche=Un chalut � perche pour les zones tr�s c�ti�res et les estuaires lors des campagnes visant les juv�niles de poissons plats : baies de Somme et de Vilaine,
-message.survey.dataengintitle=Diff�rents engins d''�chantillonnage sont utilis�s :
-message.survey.detailstitle=Caract�ristiques des campagnes de surveillance halieutique de l''Ifremer
+message.survey.atlantique=Fa\u00E7ade Atlantique
+message.survey.dataengincasier=Un \u00E9chantillonnage au casier pour les campagnes d''\u00E9valuation des grands crustac\u00E9s, en particulier le homard, aux abords du cap de Flamanville.
+message.survey.dataenginfond=Un chalut de fond \u00E0 grande ouverture verticale pour l''observation des ressources d\u00E9mersales, sur les plateaux continentaux et le haut des pentes continentales (accores) en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne, golfe du Lion et Est de la Corse,
+message.survey.dataenginperche=Un chalut \u00E0 perche pour les zones tr\u00E8s c\u00F4ti\u00E8res et les estuaires lors des campagnes visant les juv\u00E9niles de poissons plats : baies de Somme et de Vilaine,
+message.survey.dataengintitle=Diff\u00E9rents engins d''\u00E9chantillonnage sont utilis\u00E9s :
+message.survey.detailstitle=Caract\u00E9ristiques des campagnes de surveillance halieutique de l''Ifremer
message.survey.maintitle=Les campagnes de surveillance halieutique de l''Ifremer
message.survey.mancheoccidentale.flamanville.crustaflam1=Manuel des protocoles CRUSTAFLAM - Version 1.0 (2003)
-message.survey.mancheoccidentale.flamanville.desc=Deux campagnes de 15 jours aux casiers � crustac�s aux abords du cap de Flamanville (CrustaFlam), en juin et septembre, depuis 1986 : 1200 casiers relev�s par campagne sur une zone de 26 km\u00B2.
+message.survey.mancheoccidentale.flamanville.desc=Deux campagnes de 15 jours aux casiers \u00E0 crustac\u00E9s aux abords du cap de Flamanville (CrustaFlam), en juin et septembre, depuis 1986 : 1200 casiers relev\u00E9s par campagne sur une zone de 26 km\u00B2.
message.survey.mancheoccidentale.flamanville.plus=Pour en savoir plus sur les campagnes CrustFlam
message.survey.mancheoccidentale.flamanville=Abords du cap de Flamanville
-message.survey.mancheoccidentale=Fa�ade Manche occidentale
+message.survey.mancheoccidentale=Fa\u00E7ade Manche occidentale
message.survey.mancheorientale.baiedeseine=Baie de Seine
-message.survey.mancheorientale.baiedeseine.desc=Campagnes annuelles de prospection sur les nourriceries de l''estuaire de Seine et de la baie de Seine orientale (NourSeine) effectu�es essentiellement � l''automne, de 1995 � 2002. L''objectif premier �tait d''identifier les nourriceries c�ti�res de ce site et d''en �valuer la richesse halieutique et macro-�pibenthique. Environ 45 traits effectu�s � chaque campagne, � l''aide d''un chalut � perche standard.
+message.survey.mancheorientale.baiedeseine.desc=Campagnes annuelles de prospection sur les nourriceries de l''estuaire de Seine et de la baie de Seine orientale (NourSeine) effectu\u00E9es essentiellement \u00E0 l''automne, de 1995 \u00E0 2002. L''objectif premier \u00E9tait d''identifier les nourriceries c\u00F4ti\u00E8res de ce site et d''en \u00E9valuer la richesse halieutique et macro-\u00E9pibenthique. Environ 45 traits effectu\u00E9s \u00E0 chaque campagne, \u00E0 l''aide d''un chalut \u00E0 perche standard.
message.survey.mancheorientale.baiedeseine.plus=Pour en savoir plus sur les campagnes NourSeine
message.survey.mancheorientale.baiedeseine.nourseine1=http://archimer.ifremer.fr/doc/00036/14714/
-message.survey.mancheorientale.baiedesomme.desc=Campagne de p�che sur la nourricerie de la baie de Somme (NourSomme) d''une semaine en septembre-octobre, tous les ans depuis 1995, aux chaluts � perche de 2 m�tres de large dans la partie la plus estuarienne de la baie et 3 m�tres dans la partie externe, plus marine. En moyenne 50 chalutages sont r�alis�s chaque ann�e. Ils durent en moyenne 7 minutes sur une surface de 0,001 km\u00B2 chacun dans la partie interne de la baie et 15 minutes sur une surface d''environ 0,004 km\u00B2 dans la partie externe. Cette campagne est repr�sentative des 720 km\u00B2 de la baie.
+message.survey.mancheorientale.baiedesomme.desc=Campagne de p\u00EAche sur la nourricerie de la baie de Somme (NourSomme) d''une semaine en septembre-octobre, tous les ans depuis 1995, aux chaluts \u00E0 perche de 2 m\u00E8tres de large dans la partie la plus estuarienne de la baie et 3 m\u00E8tres dans la partie externe, plus marine. En moyenne 50 chalutages sont r\u00E9alis\u00E9s chaque ann\u00E9e. Ils durent en moyenne 7 minutes sur une surface de 0,001 km\u00B2 chacun dans la partie interne de la baie et 15 minutes sur une surface d''environ 0,004 km\u00B2 dans la partie externe. Cette campagne est repr\u00E9sentative des 720 km\u00B2 de la baie.
message.survey.mancheorientale.baiedesomme.noursomme1=Manuel des protocoles Nourriceries Somme - V 1.0 (2002)
message.survey.mancheorientale.baiedesomme.plus=Pour en savoir plus sur les campagnes NourSomme
message.survey.mancheorientale.baiedesomme=Baie de Somme
message.survey.mancheorientale.mancheorientale.cgfs1=Manuel des protocoles CGFS - Version 1.0 (2002)
-message.survey.mancheorientale.mancheorientale.desc=Campagne fran�aise CGFS (Channel Ground Fish Survey) d''un mois en octobre, coordonn�e au plan international avec les campagnes IBTS. La campagne a lieu tous les ans depuis 1988. En moyenne 90 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,03 km\u00B2. Cette campagne est repr�sentative des 70 748 km\u00B2 de la Manche orientale.
+message.survey.mancheorientale.mancheorientale.desc=Campagne fran\u00E7aise CGFS (Channel Ground Fish Survey) d''un mois en octobre, coordonn\u00E9e au plan international avec les campagnes IBTS. La campagne a lieu tous les ans depuis 1988. En moyenne 90 traits d''une demi-heure, au chalut de fond \u00E0 grande ouverture verticale, sont r\u00E9alis\u00E9s. Chaque trait couvre une surface d''environ 0,03 km\u00B2. Cette campagne est repr\u00E9sentative des 70 748 km\u00B2 de la Manche orientale.
message.survey.mancheorientale.mancheorientale.plus=Pour en savoir plus sur les campagnes CGFS
-message.survey.mancheorientale.mancheorientale=Manche orientale
-message.survey.mancheorientale=Fa�ade Manche orientale
-message.survey.mediterranee.estcorse.desc=Contribution fran�aise � la campagne internationale Medits (International bottom Trawl Surveys in the Mediterranean), d''une semaine au printemps, tous les ans depuis 1994, sauf en 2002, au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 20 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. La campagne est repr�sentative des 4 562 km\u00B2 du plateau insulaire de l''est de la Corse.
+message.survey.mancheorientale.mancheorientale=Manche orientale
+message.survey.mancheorientale=Fa\u00E7ade Manche orientale
+message.survey.mediterranee.estcorse.desc=Contribution fran\u00E7aise \u00E0 la campagne internationale Medits (International bottom Trawl Surveys in the Mediterranean), d''une semaine au printemps, tous les ans depuis 1994, sauf en 2002, au chalut de fond \u00E0 grande ouverture verticale \u00E0 ailes courtes. En moyenne 20 chalutages sont r\u00E9alis\u00E9s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf\u00E9rieures \u00E0 200 m\u00E8tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup\u00E9rieures \u00E0 200 m\u00E8tres. La campagne est repr\u00E9sentative des 4 562 km\u00B2 du plateau insulaire de l''est de la Corse.
message.survey.mediterranee.estcorse.medits1=Manuel des protocoles Medits, Version 1 (1994)
message.survey.mediterranee.estcorse.medits2=Manuel des protocoles Medits, Version 2 (1995)
message.survey.mediterranee.estcorse.medits3=Manuel des protocoles Medits, Version 3 (1999)
@@ -187,7 +187,7 @@
message.survey.mediterranee.estcorse.medits6=Manuel des protocoles Medits, Version 6 (2012)
message.survey.mediterranee.estcorse.plus=Pour en savoir plus sur les campagnes Medits
message.survey.mediterranee.estcorse=Est de la Corse
-message.survey.mediterranee.golfelion.desc=Contribution fran�aise aux campagnes internationales Medits (International bottom Trawl Surveys in the Mediterranean), d''un mois au deuxi�me trimestre tous les ans depuis 1994 au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 69 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. Medits est repr�sentative des 13 860 km\u00B2 du golfe de Lion.
+message.survey.mediterranee.golfelion.desc=Contribution fran\u00E7aise aux campagnes internationales Medits (International bottom Trawl Surveys in the Mediterranean), d''un mois au deuxi\u00E8me trimestre tous les ans depuis 1994 au chalut de fond \u00E0 grande ouverture verticale \u00E0 ailes courtes. En moyenne 69 chalutages sont r\u00E9alis\u00E9s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf\u00E9rieures \u00E0 200 m\u00E8tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup\u00E9rieures \u00E0 200 m\u00E8tres. Medits est repr\u00E9sentative des 13 860 km\u00B2 du golfe de Lion.
message.survey.mediterranee.golfelion.medits1=Manuel des protocoles Medits, Version 1 (1994)
message.survey.mediterranee.golfelion.medits2=Manuel des protocoles Medits, Version 2 (1995)
message.survey.mediterranee.golfelion.medits3=Manuel des protocoles Medits, Version 3 (1999)
@@ -196,16 +196,16 @@
message.survey.mediterranee.golfelion.medits6=Manuel des protocoles Medits, Version 6 (2012)
message.survey.mediterranee.golfelion.plus=Pour en savoir plus sur les campagnes Medits
message.survey.mediterranee.golfelion=Golfe du Lion
-message.survey.mediterranee=Fa�ade M�diterran�e
-message.survey.merdunord.sudmerdunord.desc=Contribution fran�aise d''un mois � la campagne internationale IBTS (International Bottom Trawl Survey) au premier trimestre, tous les ans depuis 1980, au chalut de fond � grande ouverture verticale. En moyenne, le navire fran�ais fait 58 chalutages par an. Le sud de la mer du Nord est couvert par 4 navires (fran�ais, belge, danois et allemand) qui r�alisent en tout environ 200 traits par an. Chaque trait dure une demi-heure et couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 678\u00A0000\u00A0km\u00B2 de la zone.
-message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
-message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
+message.survey.mediterranee=Fa\u00E7ade M\u00E9diterran\u00E9e
+message.survey.merdunord.sudmerdunord.desc=Contribution fran\u00E7aise d''un mois \u00E0 la campagne internationale IBTS (International Bottom Trawl Survey) au premier trimestre, tous les ans depuis 1980, au chalut de fond \u00E0 grande ouverture verticale. En moyenne, le navire fran\u00E7ais fait 58 chalutages par an. Le sud de la mer du Nord est couvert par 4 navires (fran\u00E7ais, belge, danois et allemand) qui r\u00E9alisent en tout environ 200 traits par an. Chaque trait dure une demi-heure et couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr\u00E9sentative des 678\u00A0000\u00A0km\u00B2 de la zone.
+message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R\u00E9vision VI (1999)
+message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R\u00E9vision VII (2004)
message.survey.merdunord.sudmerdunord.plus=Pour en savoir plus sur les campagnes IBTS
message.survey.merdunord.sudmerdunord=Sud mer du Nord
-message.survey.merdunord=Fa�ade Mer du Nord
-message.survey.paragraph1=Les campagnes de p�che scientifique standardis�es ont pour objectif d''observer les ressources halieutiques, en suivant toujours les m�mes m�thodes d''�chantillonnage. Elles sont toujours r�alis�es dans la m�me zone, � la m�me saison, avec des engins de p�che standardis�s, afin que les donn�es soient comparables d''ann�e en ann�e. Elles servent � d�crire les esp�ces, qu''elles soient commerciales ou non, d''une zone et � observer les changements s''il y en a. Les poissons, les mollusques et les crustac�s sont d�nombr�s, mesur�s et pes�s. Certains d''entre eux font l''objet de pr�l�vements biologiques. Chaque campagne fournit ainsi une repr�sentation quantitative de l''ensemble des esp�ces de la zone � une p�riode donn�e. Selon les s�ries, d''autres informations sont relev�es (temp�rature, salinit�, macrofaune, observation des mammif�res marins, oiseaux, macro d�chets etc., mais ne sont pas pr�sent�es dans ce site)
-message.survey.paragraph2=Depuis une vingtaine d''ann�es, l''Ifremer organise des campagnes de p�che scientifique en mer du Nord, en Manche, en Atlantique et en M�diterran�e concernant les ressources d�mersales et benthiques. L''objectif prioritaire est de produire des indices d''abondance des principales esp�ces commerciales. Elles recueillent �galement des donn�es sur les esp�ces captur�es non commerciales. Elles contribuent ainsi aux connaissances n�cessaires au d�veloppement de l''approche �cosyst�mique des p�ches, notamment dans le cadre de la politique commune des p�ches et plus largement de la strat�gie marine de l''Union europ�enne.
-message.survey.paragraph3=Les campagnes sont r�alis�es selon des plans d''�chantillonnage standardis�s. L''engin de p�che et son gr�ement, la position des stations, le tri des captures, les pr�l�vements biologiques suivent des protocoles fix�s.
-message.survey.paragraph4=Pour les campagnes coordonn�es entre navires de recherche des pays riverains en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne et M�diterran�e, les protocoles sont communs � l''ensemble des pays partenaires. Les traits de chalut des diff�rents navires de recherche sont comparables.
-message.survey.paragraph5=Chaque zone �tudi�e est d�coup�e en strates en fonction de la profondeur, de la latitude ou d''autres crit�res. L''�chantillonnage pr�voit un nombre de traits de chalut ou de mouillages de casiers par strate.
-message.survey.paragraph6=Dans une campagne de chalutage scientifique, les positions des traits de chalut sont choisies selon un plan d''�chantillonnage statistique. L''objectif n''est pas d''obtenir les meilleures captures possibles comme le recherchent les p�cheurs, mais de r�colter des donn�es comparables d''une ann�e sur l''autre afin de relever des �volutions.
+message.survey.merdunord=Fa\u00E7ade Mer du Nord
+message.survey.paragraph1=Les campagnes de p\u00EAche scientifique standardis\u00E9es ont pour objectif d''observer les ressources halieutiques, en suivant toujours les m\u00EAmes m\u00E9thodes d''\u00E9chantillonnage. Elles sont toujours r\u00E9alis\u00E9es dans la m\u00EAme zone, \u00E0 la m\u00EAme saison, avec des engins de p\u00EAche standardis\u00E9s, afin que les donn\u00E9es soient comparables d''ann\u00E9e en ann\u00E9e. Elles servent \u00E0 d\u00E9crire les esp\u00E8ces, qu''elles soient commerciales ou non, d''une zone et \u00E0 observer les changements s''il y en a. Les poissons, les mollusques et les crustac\u00E9s sont d\u00E9nombr\u00E9s, mesur\u00E9s et pes\u00E9s. Certains d''entre eux font l''objet de pr\u00E9l\u00E8vements biologiques. Chaque campagne fournit ainsi une repr\u00E9sentation quantitative de l''ensemble des esp\u00E8ces de la zone \u00E0 une p\u00E9riode donn\u00E9e. Selon les s\u00E9ries, d''autres informations sont relev\u00E9es (temp\u00E9rature, salinit\u00E9, macrofaune, observation des mammif\u00E8res marins, oiseaux, macro d\u00E9chets etc., mais ne sont pas pr\u00E9sent\u00E9es dans ce site)
+message.survey.paragraph2=Depuis une vingtaine d''ann\u00E9es, l''Ifremer organise des campagnes de p\u00EAche scientifique en mer du Nord, en Manche, en Atlantique et en M\u00E9diterran\u00E9e concernant les ressources d\u00E9mersales et benthiques. L''objectif prioritaire est de produire des indices d''abondance des principales esp\u00E8ces commerciales. Elles recueillent \u00E9galement des donn\u00E9es sur les esp\u00E8ces captur\u00E9es non commerciales. Elles contribuent ainsi aux connaissances n\u00E9cessaires au d\u00E9veloppement de l''approche \u00E9cosyst\u00E9mique des p\u00EAches, notamment dans le cadre de la politique commune des p\u00EAches et plus largement de la strat\u00E9gie marine de l''Union europ\u00E9enne.
+message.survey.paragraph3=Les campagnes sont r\u00E9alis\u00E9es selon des plans d''\u00E9chantillonnage standardis\u00E9s. L''engin de p\u00EAche et son gr\u00E9ement, la position des stations, le tri des captures, les pr\u00E9l\u00E8vements biologiques suivent des protocoles fix\u00E9s.
+message.survey.paragraph4=Pour les campagnes coordonn\u00E9es entre navires de recherche des pays riverains en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne et M\u00E9diterran\u00E9e, les protocoles sont communs \u00E0 l''ensemble des pays partenaires. Les traits de chalut des diff\u00E9rents navires de recherche sont comparables.
+message.survey.paragraph5=Chaque zone \u00E9tudi\u00E9e est d\u00E9coup\u00E9e en strates en fonction de la profondeur, de la latitude ou d''autres crit\u00E8res. L''\u00E9chantillonnage pr\u00E9voit un nombre de traits de chalut ou de mouillages de casiers par strate.
+message.survey.paragraph6=Dans une campagne de chalutage scientifique, les positions des traits de chalut sont choisies selon un plan d''\u00E9chantillonnage statistique. L''objectif n''est pas d''obtenir les meilleures captures possibles comme le recherchent les p\u00EAcheurs, mais de r\u00E9colter des donn\u00E9es comparables d''une ann\u00E9e sur l''autre afin de relever des \u00E9volutions.
\ No newline at end of file
Modified: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties
===================================================================
--- trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties 2014-03-08 07:25:34 UTC (rev 1135)
+++ trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties 2014-03-08 07:26:03 UTC (rev 1136)
@@ -8,176 +8,176 @@
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
-#
+#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-#
+#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# #L%
###
message.admin.title=Coser admin
message.admin.indexaction=Actions d''administration
-message.admin.listprojects.deleteselected=Supprimer les projets s�lectionn�s
+message.admin.listprojects.deleteselected=Supprimer les projets s\u00E9lectionn\u00E9s
message.admin.listprojects.title=Gestion des projets
message.admin.listprojects.indicatorsprojects=Projects d'indicateur par zones
-message.admin.listprojects.indicatorsprojects.comment=La suppression d''un projets d''indicateur supprimera �galement la possibilit� de t�l�charger les donn�es sources du projet concern�.
+message.admin.listprojects.indicatorsprojects.comment=La suppression d''un projets d''indicateur supprimera \u00E9galement la possibilit\u00E9 de t\u00E9l\u00E9charger les donn\u00E9es sources du projet concern\u00E9.
message.admin.listprojects.mapsprojects=Projects de cartes par zones
message.admin.login=Identifiant
message.admin.loginrequiered=Autentification requise
message.admin.password=Mot de passe
-message.com.downloadascsv=T�l�charger en CSV
-message.com.downloadaszip=T�l�charger en ZIP
-message.com.moredetailspdf=Plus d''informations sur les indices calcul�s des communaut�s
-message.com.paragraph1=Des indices de communaut� sont calcul�s pour un ensemble de taxon dans chaque s�rie. La liste des taxons inclus pour le calcul de chaque indice varie selon les donn�es disponibles pour la r�alisation des calculs.
-message.com.paragraph2=La liste des esp�ces incluses dans le calcul de chaque indice de communaut� est pr�sent�e dans le dossier t�l�chargable sous chaque graphe (fichier \"Information.pdf\").
-message.com.selectindicatorlist=S�lectionner une liste de donn�es
-message.com.title=Indices de communaut�s
+message.com.downloadascsv=T\u00E9l\u00E9charger en CSV
+message.com.downloadaszip=T\u00E9l\u00E9charger en ZIP
+message.com.moredetailspdf=Plus d''informations sur les indices calcul\u00E9s des communaut\u00E9s
+message.com.paragraph1=Des indices de communaut\u00E9 sont calcul\u00E9s pour un ensemble de taxon dans chaque s\u00E9rie. La liste des taxons inclus pour le calcul de chaque indice varie selon les donn\u00E9es disponibles pour la r\u00E9alisation des calculs.
+message.com.paragraph2=La liste des esp\u00E8ces incluses dans le calcul de chaque indice de communaut\u00E9 est pr\u00E9sent\u00E9e dans le dossier t\u00E9l\u00E9chargable sous chaque graphe (fichier \"Information.pdf\").
+message.com.selectindicatorlist=S\u00E9lectionner une liste de donn\u00E9es
+message.com.title=Indices de communaut\u00E9s
message.common.anchortop=Haut
-message.common.community=communaut�
+message.common.community=communaut\u00E9
message.common.facade=Facade
message.common.indicatorsof=Indicateurs de
message.common.jsreadmore=Voir la suite
-message.common.noresults=Aucun r�sultat disponible.
+message.common.noresults=Aucun r\u00E9sultat disponible.
message.common.population=population
-message.common.selectall=Tout s�lectionner
-message.common.selectnone=Tout d�-s�lectionner
-message.common.selectfacade=S�lectionnez une fa�ade
-message.common.selectindicator=S�lectionnez un indicateur
-message.common.selectpop=S�lectionnez une population
-message.common.selectspecies=S�lectionnez une esp�ce
-message.common.selectsurvey=S�lectionnez une campagne
-message.common.selectzone=S�lectionnez une zone
-message.common.species=Esp�ces
+message.common.selectall=Tout s\u00E9lectionner
+message.common.selectnone=Tout d\u00E9-s\u00E9lectionner
+message.common.selectfacade=S\u00E9lectionnez une fa\u00E7ade
+message.common.selectindicator=S\u00E9lectionnez un indicateur
+message.common.selectpop=S\u00E9lectionnez une population
+message.common.selectspecies=S\u00E9lectionnez une esp\u00E8ce
+message.common.selectsurvey=S\u00E9lectionnez une campagne
+message.common.selectzone=S\u00E9lectionnez une zone
+message.common.species=Esp\u00E8ces
message.common.validform=Valider
message.common.zone=Zone
message.common.zones=Zones
-message.common.datatypes=Type de donn�es
-message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
-message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
-message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c�tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
-message.documents.genparagraph4=Poissons et invert�br�s au large des c�tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
-message.documents.gentitle1=Rapports g�n�raux
+message.common.datatypes=Type de donn\u00E9es
+message.documents.genparagraph1=Grands invert\u00E9br\u00E9s et poissons observ\u00E9s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
+message.documents.genparagraph2=Grands invert\u00E9br\u00E9s et poissons observ\u00E9s par les campagnes scientifiques. Bilan 2007. 2009. {0}
+message.documents.genparagraph3=L''\u00E9tat des communaut\u00E9s exploit\u00E9es au large des c\u00F4tes de France. Application d''indicateurs \u00E0 l''\u00E9valuation de l''impact de la p\u00EAche. Bilan 2004 Edition 2009. {0}
+message.documents.genparagraph4=Poissons et invert\u00E9br\u00E9s au large des c\u00F4tes de France. Indicateurs issus des p\u00EAches scientifiques. Bilan 2004. 2007. {0}
+message.documents.gentitle1=Rapports g\u00E9n\u00E9raux
message.documents.activityparagraph1=Battaglia A., V. M. Trenkel & M. J. Rochet, 2006. Estimating end effects in trawl catches. ICES J. Mar. Sci. 63: 956-959.
message.documents.activityparagraph2=Lorance P., J. A. Bertrand, A. Brind''Amour, M. J. Rochet & V. Trenkel, 2009. Assessment of impacts from human activities on ecosystem components in the Bay of Biscay in the early 1990s. Aquatic living resources 22: 409-431.
-message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
+message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah\u00E9, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
message.documents.activityparagraph4=Rochet M. J. & J. Rice, 2005. Do explicit criteria help in selecting indicators for ecosystem-based fisheries management? ICES J. Mar. Sci. 62: 528-539.
message.documents.activityparagraph5=Rochet M. J. & V. Trenkel, 2003. Which community indicators can measure the impact of fishing? A review and proposals. Can. J. Fish. Aquat. Sci. 60: 86-99.
-message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
-message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
+message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah\u00E9, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V\u00E9rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
+message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L\u00E9aut\u00E9, J. C. Mah\u00E9, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
message.documents.activityparagraph8=Trenkel V. & M. J. Rochet, 2003. Performance of indicators derived from abundance estimates for detecting the impact of fishing on a fish community. Can. J. Fish. Aquat. Sci. 60: 67-85.
-message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
-message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
-message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
+message.documents.activitytitle2=Publications des membres du GT relatives \u00E0 l''activit\u00E9 du groupe
+message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T\u00E9tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth\u00E8se hydrobiologique du site \u00E9lectronucl\u00E9aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
+message.documents.indicatortitle3=Travaux ayant utilis\u00E9 les r\u00E9sultats du groupe de travail sur les indicateurs de populations et de peuplements
message.documents.title=Documents
-message.index.datatypecom=Des indices de communaut� par zone
-message.index.datatypemap=Des cartes de distribution par esp�ce et par zone
-message.index.datatypepop=Des indices biologiques par esp�ce et par zone
-message.index.datatypesource=Des donn�es par op�ration d''�chantillonnage (en g�n�ral par trait de chalut)
-message.index.datatypesource.short=Des donn�es par op�ration d''�chantillonnage
-message.index.datatypetitle=Consultation des donn�es en ligne
+message.index.datatypecom=Des indices de communaut\u00E9 par zone
+message.index.datatypemap=Des cartes de distribution par esp\u00E8ce et par zone
+message.index.datatypepop=Des indices biologiques par esp\u00E8ce et par zone
+message.index.datatypesource=Des donn\u00E9es par op\u00E9ration d''\u00E9chantillonnage (en g\u00E9n\u00E9ral par trait de chalut)
+message.index.datatypesource.short=Des donn\u00E9es par op\u00E9ration d''\u00E9chantillonnage
+message.index.datatypetitle=Consultation des donn\u00E9es en ligne
message.index.documentsmessage=Documents
message.index.documentstitle=Documents
-message.index.extractdatatitle=Extraction des donn�es
+message.index.extractdatatitle=Extraction des donn\u00E9es
message.index.extractdatalink=Formulaire de recherche
-message.index.paragraph1=Ce site a �t� con�u pour fournir en libre acc�s des donn�es brutes et des donn�es �labor�es relatives aux campagnes scientifiques d''observation halieutique conduites par l''Ifremer le long des c�tes fran�aises.
-message.index.paragraph2=Toutes les donn�es mises � disposition ont fait l''objet de qualification selon des protocoles sp�cifiques. La qualit� des interpr�tations �tant directement li�e � la nature des donn�es source, les utilisateurs de donn�es sont invit�s � consid�rer avec attention les descriptions des protocoles mis en \u0153uvre ainsi que les niveaux de qualit� contr�l�s.
-message.index.paragraph3=Chaque s�rie de campagnes est conduite selon une strat�gie d''�chantillonnage sp�cifique. Sauf cas particuliers, les analyses et interpr�tations doivent �tre conduites par s�rie, en prenant en compte les strat�gies d''�chantillonnage propres � chacune de ces s�ries. Sur le site, les donn�es sont pr�sent�es par s�rie.
-message.index.paragraph4=Dans les tables de donn�es, toutes les esp�ces sont identifi�es selon le r�f�rentiel taxinomique du Syst�me d''informations halieutiques de l''Ifremer ({0}).
-message.index.paragraph5=Les liens ci-dessous vous permet d''extraire les �l�ments du site (graphique et donn�es) sous la forme d''un fichier .zip (contenant un document pdf et les donn�es)
+message.index.paragraph1=Ce site a \u00E9t\u00E9 con\u00E7u pour fournir en libre acc\u00E8s des donn\u00E9es brutes et des donn\u00E9es \u00E9labor\u00E9es relatives aux campagnes scientifiques d''observation halieutique conduites par l''Ifremer le long des c\u00F4tes fran\u00E7aises.
+message.index.paragraph2=Toutes les donn\u00E9es mises \u00E0 disposition ont fait l''objet de qualification selon des protocoles sp\u00E9cifiques. La qualit\u00E9 des interpr\u00E9tations \u00E9tant directement li\u00E9e \u00E0 la nature des donn\u00E9es source, les utilisateurs de donn\u00E9es sont invit\u00E9s \u00E0 consid\u00E9rer avec attention les descriptions des protocoles mis en \u0153uvre ainsi que les niveaux de qualit\u00E9 contr\u00F4l\u00E9s.
+message.index.paragraph3=Chaque s\u00E9rie de campagnes est conduite selon une strat\u00E9gie d''\u00E9chantillonnage sp\u00E9cifique. Sauf cas particuliers, les analyses et interpr\u00E9tations doivent \u00EAtre conduites par s\u00E9rie, en prenant en compte les strat\u00E9gies d''\u00E9chantillonnage propres \u00E0 chacune de ces s\u00E9ries. Sur le site, les donn\u00E9es sont pr\u00E9sent\u00E9es par s\u00E9rie.
+message.index.paragraph4=Dans les tables de donn\u00E9es, toutes les esp\u00E8ces sont identifi\u00E9es selon le r\u00E9f\u00E9rentiel taxinomique du Syst\u00E8me d''informations halieutiques de l''Ifremer ({0}).
+message.index.paragraph5=Les liens ci-dessous vous permet d''extraire les \u00E9l\u00E9ments du site (graphique et donn\u00E9es) sous la forme d''un fichier .zip (contenant un document pdf et les donn\u00E9es)
message.index.partnertitle=Membres du groupe
-message.index.partnerparagraph1=Les r�sultats pr�sent�s sur ce site sont le produit de l''activit� d''un groupe de travail de l''Ifremer qui se r�unit chaque ann�e depuis 2001 pour d�velopper des indicateurs de populations et de peuplements � partir des donn�es des s�ries de campagnes halieutiques standardis�es conduites depuis la fin des ann�es 1970 par l''Ifremer le long des c�tes de France m�tropolitaine. Les principaux membres du groupe sont (par ordre alphab�tique de site et de patronyme)\u00A0: Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz et Yves V�rin (Boulogne-sur-mer), Andr� Battaglia et Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� et Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet et Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin et Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud et Arnaud Souplet (S�te). La d�marche qualit� est g�r�e par Vincent Badts. Le support informatique de gestion des donn�es est assur� par Olivier Berthel�.
-message.index.qualitymessage=Avertissement qualit�
-message.index.qualitytitle=Avertissement qualit�
+message.index.partnerparagraph1=Les r\u00E9sultats pr\u00E9sent\u00E9s sur ce site sont le produit de l''activit\u00E9 d''un groupe de travail de l''Ifremer qui se r\u00E9unit chaque ann\u00E9e depuis 2001 pour d\u00E9velopper des indicateurs de populations et de peuplements \u00E0 partir des donn\u00E9es des s\u00E9ries de campagnes halieutiques standardis\u00E9es conduites depuis la fin des ann\u00E9es 1970 par l''Ifremer le long des c\u00F4tes de France m\u00E9tropolitaine. Les principaux membres du groupe sont (par ordre alphab\u00E9tique de site et de patronyme)\u00A0: Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz et Yves V\u00E9rin (Boulogne-sur-mer), Andr\u00E9 Battaglia et Jean-Pierre L\u00E9aut\u00E9 (L''Houmeau), Jean-Claude Mah\u00E9 et Mich\u00E8le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D\u00E9saunay, Pascal Laffargue, Olivier Le Pape, J\u00E9r\u00E9my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet et Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin et Ivan Schlaich (Port-en-Bessin), Ang\u00E9lique Jadaud et Arnaud Souplet (S\u00E8te). La d\u00E9marche qualit\u00E9 est g\u00E9r\u00E9e par Vincent Badts. Le support informatique de gestion des donn\u00E9es est assur\u00E9 par Olivier Berthel\u00E9.
+message.index.qualitymessage=Avertissement qualit\u00E9
+message.index.qualitytitle=Avertissement qualit\u00E9
message.index.quotemessage=Ifremer {0,date,yyyy}. Indices de populations et de communautés issus des campagnes de surveillance halieutique de l''Ifremer. {1} ({0,date,dd MMMM})
message.index.quotetitle=Pour citer ce site
-message.index.surveyparagraph=Des manuels des protocoles d�crivent les modalit�s techniques de r�alisation de chaque s�rie de campagnes.
+message.index.surveyparagraph=Des manuels des protocoles d\u00E9crivent les modalit\u00E9s techniques de r\u00E9alisation de chaque s\u00E9rie de campagnes.
message.index.surveytitle=Description des campagnes
message.index.thankstitle=Remerciements
-message.index.thanksparagraph1=Bien que toutes les s�ries de campagnes dont des r�sultats sont pr�sent�s sur ce site aient �t� conduites par l''Ifremer, elles ont fait l''objet de financements vari�s. Certaines, apr�s une phase �ventuelle de financement unique par l''Ifremer font l''objet de cofinancements, comme les s�ries IBTS, Evhoe et Medits retenues au titre du r�glement europ�en sur la collecte des donn�es halieutiques (DCF). D''autres sont prises en charge en totalit� par l''Ifremer, comme les s�ries NourVil et CGFS (cette derni�re �tant en cours d''�valuation pour une reconnaissance au titre du r�glement europ�en sur la collecte des donn�es halieutiques - DCF). Pour la s�rie NourSein, les campagnes ont �t� co-financ�es par le conseil r�gional de Haute Normandie, le GPMH, le programme Liteau, le programme Seine Aval et le GIP-Seine Aval, selon les ann�es. Enfin, les s�ries Crustaflam et NourSomme sont financ�es en totalit� par EDF au titre de la surveillance de centrales nucl�aires littorales, dans le cadre de contrats entre Ifremer et EDF. Le pr�sent site a �t� cr�� gr\u00E2ce � un soutien du MEEDDM (contrat Ifremer-MEEDDM 2010). Pour l''�tablissement des indices en mer du Nord, les donn�es sources utilis�es sont celles mises � disposition par les diff�rents pays partenaires de la s�rie IBTS dans la base Datras du CIEM (http://datras.ices.dk)
+message.index.thanksparagraph1=Bien que toutes les s\u00E9ries de campagnes dont des r\u00E9sultats sont pr\u00E9sent\u00E9s sur ce site aient \u00E9t\u00E9 conduites par l''Ifremer, elles ont fait l''objet de financements vari\u00E9s. Certaines, apr\u00E8s une phase \u00E9ventuelle de financement unique par l''Ifremer font l''objet de cofinancements, comme les s\u00E9ries IBTS, Evhoe et Medits retenues au titre du r\u00E8glement europ\u00E9en sur la collecte des donn\u00E9es halieutiques (DCF). D''autres sont prises en charge en totalit\u00E9 par l''Ifremer, comme les s\u00E9ries NourVil et CGFS (cette derni\u00E8re \u00E9tant en cours d''\u00E9valuation pour une reconnaissance au titre du r\u00E8glement europ\u00E9en sur la collecte des donn\u00E9es halieutiques - DCF). Pour la s\u00E9rie NourSein, les campagnes ont \u00E9t\u00E9 co-financ\u00E9es par le conseil r\u00E9gional de Haute Normandie, le GPMH, le programme Liteau, le programme Seine Aval et le GIP-Seine Aval, selon les ann\u00E9es. Enfin, les s\u00E9ries Crustaflam et NourSomme sont financ\u00E9es en totalit\u00E9 par EDF au titre de la surveillance de centrales nucl\u00E9aires littorales, dans le cadre de contrats entre Ifremer et EDF. Le pr\u00E9sent site a \u00E9t\u00E9 cr\u00E9\u00E9 gr\u00E2ce \u00E0 un soutien du MEEDDM (contrat Ifremer-MEEDDM 2010). Pour l''\u00E9tablissement des indices en mer du Nord, les donn\u00E9es sources utilis\u00E9es sont celles mises \u00E0 disposition par les diff\u00E9rents pays partenaires de la s\u00E9rie IBTS dans la base Datras du CIEM (http://datras.ices.dk)
message.index.title=Accueil
-message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
-message.layout.oceanicdata2=le Syst�me d''information halieutique de l''Ifremer (SIH)
-message.layout.oceanicdatatitle=Gestion des donn�es des campagnes oc�anographiques � l''Ifremer
-message.layout.title=Indices de populations et de communaut�s issus des campagnes de surveillance halieutique auxquelles participe l''Ifremer
-message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
+message.layout.oceanicdata1=le Syst\u00E8me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
+message.layout.oceanicdata2=le Syst\u00E8me d''information halieutique de l''Ifremer (SIH)
+message.layout.oceanicdatatitle=Gestion des donn\u00E9es des campagnes oc\u00E9anographiques \u00E0 l''Ifremer
+message.layout.title=Indices de populations et de communaut\u00E9s issus des campagnes de surveillance halieutique auxquelles participe l''Ifremer
+message.map.citation=Trenkel V.M., O. Berthel\u00E9, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut\u00E9, J.C. Mah\u00E9, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V\u00E9rin, 2009. Grands invert\u00E9br\u00E9s et poissons observ\u00E9s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
message.map.citationtitle=Citation
-message.map.downloadaspdf=T�l�charger en PDF
-message.map.linkarchimer=Acc�s � l''atlas : {0}
-message.map.paragraph1=L''objectif de cet atlas est de donner un aper�u de la distribution spatiale des esp�ces de poissons et de certains invert�br�s marins � partir des observations des campagnes de p�che scientifiques.
-message.map.paragraph2=Pour chaque zone un quadrillage syst�matique a �t� d�fini, puis la densit� moyenne par km\u00B2 dans chaque cellule a �t� calcul�e en utilisant les observations de toute la p�riode. Pour la repr�sentation cartographique, les cellules avec des densit�s moyenne correspondant aux quartiles de densit� ont re�u la m�me couleur\u00A0: bleu\u00A0: esp�ce jamais observ�e, jaune clair\u00A0: densit� moyenne entre [0 et 25\u00A0%[; jaune fonc�\u00A0: [25-50\u00A0%[, orange\u00A0: [50-75\u00A0%[ et rouge\u00A0: [75-100\u00A0%]. Donc, les zones o\u00F9 se trouvent les densit�s les plus �lev�es en moyenne sont repr�sent�es en rouge.
+message.map.downloadaspdf=T\u00E9l\u00E9charger en PDF
+message.map.linkarchimer=Acc\u00E8s \u00E0 l''atlas : {0}
+message.map.paragraph1=L''objectif de cet atlas est de donner un aper\u00E7u de la distribution spatiale des esp\u00E8ces de poissons et de certains invert\u00E9br\u00E9s marins \u00E0 partir des observations des campagnes de p\u00EAche scientifiques.
+message.map.paragraph2=Pour chaque zone un quadrillage syst\u00E9matique a \u00E9t\u00E9 d\u00E9fini, puis la densit\u00E9 moyenne par km\u00B2 dans chaque cellule a \u00E9t\u00E9 calcul\u00E9e en utilisant les observations de toute la p\u00E9riode. Pour la repr\u00E9sentation cartographique, les cellules avec des densit\u00E9s moyenne correspondant aux quartiles de densit\u00E9 ont re\u00E7u la m\u00EAme couleur\u00A0: bleu\u00A0: esp\u00E8ce jamais observ\u00E9e, jaune clair\u00A0: densit\u00E9 moyenne entre [0 et 25\u00A0%[; jaune fonc\u00E9\u00A0: [25-50\u00A0%[, orange\u00A0: [50-75\u00A0%[ et rouge\u00A0: [75-100\u00A0%]. Donc, les zones o\u00F9 se trouvent les densit\u00E9s les plus \u00E9lev\u00E9es en moyenne sont repr\u00E9sent\u00E9es en rouge.
message.map.title=Cartes de distribution
message.map.warning=Avertissement
-message.map.warningcontent=Les cartes pr�sent�es ne doivent pas �tre interpr�t�es comme des cartes de distribution des esp�ces mais comme celle des zones o\u00F9 elles sont captur�es lors des campagnes scientifiques. Les campagnes �tant r�alis�es avec des chaluts diff�rents et � diff�rentes saisons, les esp�ces peuvent avoir des capturabilit�s tr�s diff�rentes entre les s�ries de campagnes, donc d''une zone � l''autre.
-message.pop.downloadascsv=T�l�charger en CSV
-message.pop.moredetailspdf=Plus d''informations sur les indices calcul�s des populations
-message.pop.paragraph1=Les indices pr�sent�s ont �t� s�lectionn�s en r�f�rence � leur aptitude � renseigner sur l''impact de la p�che, en vue de leur int�gration dans des tableaux de bord d''indicateurs d''�volution d''�cosyst�mes exploit�s par la p�che.
-message.pop.paragraph2=Les donn�es disponibles sur le site sont les valeurs de chaque indice. Les informations ont �t� valid�es par un groupe de travail dans une approche int�grative d''indicateurs de populations et de communaut�s. Les r�sultats sont donn�s par zone g�ographique et par esp�ce pour l''ensemble de la s�rie de donn�es disponible. L''utilisateur peut s�lectionner la zone g�ographique, la saison (dans le cas de s�ries saisonni�res), l''esp�ce et l''indice. Pour les s�lections pour lesquelles une information est disponible, le syst�me produit un graphe pr�sentant la distribution temporelle de l''indice, avec une repr�sentation de l''�cart-type. Il fournit la possibilit� d''extraire la table des donn�es correspondantes, incluant la valeur de l''indice par ann�e, ainsi que son �cart-type et son coefficient de variation.
+message.map.warningcontent=Les cartes pr\u00E9sent\u00E9es ne doivent pas \u00EAtre interpr\u00E9t\u00E9es comme des cartes de distribution des esp\u00E8ces mais comme celle des zones o\u00F9 elles sont captur\u00E9es lors des campagnes scientifiques. Les campagnes \u00E9tant r\u00E9alis\u00E9es avec des chaluts diff\u00E9rents et \u00E0 diff\u00E9rentes saisons, les esp\u00E8ces peuvent avoir des capturabilit\u00E9s tr\u00E8s diff\u00E9rentes entre les s\u00E9ries de campagnes, donc d''une zone \u00E0 l''autre.
+message.pop.downloadascsv=T\u00E9l\u00E9charger en CSV
+message.pop.moredetailspdf=Plus d''informations sur les indices calcul\u00E9s des populations
+message.pop.paragraph1=Les indices pr\u00E9sent\u00E9s ont \u00E9t\u00E9 s\u00E9lectionn\u00E9s en r\u00E9f\u00E9rence \u00E0 leur aptitude \u00E0 renseigner sur l''impact de la p\u00EAche, en vue de leur int\u00E9gration dans des tableaux de bord d''indicateurs d''\u00E9volution d''\u00E9cosyst\u00E8mes exploit\u00E9s par la p\u00EAche.
+message.pop.paragraph2=Les donn\u00E9es disponibles sur le site sont les valeurs de chaque indice. Les informations ont \u00E9t\u00E9 valid\u00E9es par un groupe de travail dans une approche int\u00E9grative d''indicateurs de populations et de communaut\u00E9s. Les r\u00E9sultats sont donn\u00E9s par zone g\u00E9ographique et par esp\u00E8ce pour l''ensemble de la s\u00E9rie de donn\u00E9es disponible. L''utilisateur peut s\u00E9lectionner la zone g\u00E9ographique, la saison (dans le cas de s\u00E9ries saisonni\u00E8res), l''esp\u00E8ce et l''indice. Pour les s\u00E9lections pour lesquelles une information est disponible, le syst\u00E8me produit un graphe pr\u00E9sentant la distribution temporelle de l''indice, avec une repr\u00E9sentation de l''\u00E9cart-type. Il fournit la possibilit\u00E9 d''extraire la table des donn\u00E9es correspondantes, incluant la valeur de l''indice par ann\u00E9e, ainsi que son \u00E9cart-type et son coefficient de variation.
message.pop.title=Indices biologiques
-message.quality.acceptance=Je reconnais avoir pris connaissance des documents et des restrictions associ�es et je m''engage � citer la source des donn�es.
-message.quality.notaccepted=Vous devez valider les conditions Avertissement Qualit� !
-message.quality.paragraph1=Bien que les donn�es aient �t� pr�cautionneusement contr�l�es par l''Ifremer, des d�fauts inh�rents � l''agr�gation des informations peuvent persister. Par exemple\u00A0:
-message.quality.paragraph2=En d�pit du fait que toutes les donn�es de toutes les s�ries de campagnes soient pr�sent�es selon le m�me format, sauf cas particuliers, des diff�rences dans les strat�gies d''observation emp�chent la combinaison de donn�es de diff�rentes campagnes dans une m�me analyse. Par exemple, la capturabilit� d''une m�me esp�ce varie selon le type d''engin d''�chantillonnage utilis�. Il en r�sulte que chaque engin capture un sous-ensemble particulier des bioc�noses �chantillonn�es.
-message.quality.paragraph3=Une propri�t� commune aux s�ries d''observations � la mer est l''�volution dans le temps de la comp�tence des �quipes embarqu�es pour la d�termination des esp�ces. Il peut en r�sulter des apparitions, des disparitions ou des assignations sous un m�me nom de taxons proches dans les jeux de donn�es, non repr�sentatifs de l''�volution des populations concern�es dans l''�cosyst�me.
-message.quality.paragraph4=Pour les campagnes d''une m�me s�rie, des changements dans les proc�dures d''�chantillonnage, dans les caract�ristiques des engins, dans la p�riode de r�alisation de la campagne et la zone couverte peuvent influencer les captures. Pour pr�venir les risques de biais dans les analyses en raison de ces facteurs, les jeux de donn�es doivent �tre pr�alablement filtr�s ad�quatement.
-message.quality.paragraph5=Il est vivement recommand� aux utilisateurs de donn�es de les traiter avec pr�caution. Si des utilisateurs s''interrogent sur la validit� de donn�es, ils sont invit�s � contacter l''administrateur de la base de donn�es ({0}).
-message.quality.title=Avertissement Qualit�
+message.quality.acceptance=Je reconnais avoir pris connaissance des documents et des restrictions associ\u00E9es et je m''engage \u00E0 citer la source des donn\u00E9es.
+message.quality.notaccepted=Vous devez valider les conditions Avertissement Qualit\u00E9 !
+message.quality.paragraph1=Bien que les donn\u00E9es aient \u00E9t\u00E9 pr\u00E9cautionneusement contr\u00F4l\u00E9es par l''Ifremer, des d\u00E9fauts inh\u00E9rents \u00E0 l''agr\u00E9gation des informations peuvent persister. Par exemple\u00A0:
+message.quality.paragraph2=En d\u00E9pit du fait que toutes les donn\u00E9es de toutes les s\u00E9ries de campagnes soient pr\u00E9sent\u00E9es selon le m\u00EAme format, sauf cas particuliers, des diff\u00E9rences dans les strat\u00E9gies d''observation emp\u00EAchent la combinaison de donn\u00E9es de diff\u00E9rentes campagnes dans une m\u00EAme analyse. Par exemple, la capturabilit\u00E9 d''une m\u00EAme esp\u00E8ce varie selon le type d''engin d''\u00E9chantillonnage utilis\u00E9. Il en r\u00E9sulte que chaque engin capture un sous-ensemble particulier des bioc\u00E9noses \u00E9chantillonn\u00E9es.
+message.quality.paragraph3=Une propri\u00E9t\u00E9 commune aux s\u00E9ries d''observations \u00E0 la mer est l''\u00E9volution dans le temps de la comp\u00E9tence des \u00E9quipes embarqu\u00E9es pour la d\u00E9termination des esp\u00E8ces. Il peut en r\u00E9sulter des apparitions, des disparitions ou des assignations sous un m\u00EAme nom de taxons proches dans les jeux de donn\u00E9es, non repr\u00E9sentatifs de l''\u00E9volution des populations concern\u00E9es dans l''\u00E9cosyst\u00E8me.
+message.quality.paragraph4=Pour les campagnes d''une m\u00EAme s\u00E9rie, des changements dans les proc\u00E9dures d''\u00E9chantillonnage, dans les caract\u00E9ristiques des engins, dans la p\u00E9riode de r\u00E9alisation de la campagne et la zone couverte peuvent influencer les captures. Pour pr\u00E9venir les risques de biais dans les analyses en raison de ces facteurs, les jeux de donn\u00E9es doivent \u00EAtre pr\u00E9alablement filtr\u00E9s ad\u00E9quatement.
+message.quality.paragraph5=Il est vivement recommand\u00E9 aux utilisateurs de donn\u00E9es de les traiter avec pr\u00E9caution. Si des utilisateurs s''interrogent sur la validit\u00E9 de donn\u00E9es, ils sont invit\u00E9s \u00E0 contacter l''administrateur de la base de donn\u00E9es ({0}).
+message.quality.title=Avertissement Qualit\u00E9
message.search.extract.extract=Extraire
-message.search.extract.speciesindicators=Esp�ces et indicateurs
-message.search.extract.title=Extraction des donn�es
+message.search.extract.speciesindicators=Esp\u00E8ces et indicateurs
+message.search.extract.title=Extraction des donn\u00E9es
message.search.extract.updatelists=Suite
message.search.extract.waittitle=Extraction en cours...
-message.search.extract.waitparagraph1=Les donn�es sont en cours d''extraction. Merci de patienter.
-message.search.extract.waitparagraph2=Cette op�ration peut prendre plusieurs minutes dans le cas o� de nombreux graphiques doivent �tre g�n�r�s.
-message.search.extract.waitparagraph3=Apr�s le t�l�chargement, fermer cette page en revenant sur la page d''accueil du site.
-message.search.extract.zonetype=Zone et type de donn�es
-message.source.download=T�l�charger
-message.source.paragraph1=Les donn�es de base sont pr�sent�es selon quatre tables fournissant des informations de base �lev�es � l''op�ration d''�chantillonnage (en g�n�ral un trait de chalut) et organis�es selon des unit�s g�ographiques d�finies en relation avec le plan d''�chantillonnage. Une table suppl�mentaire pr�sente le r�f�rentiel taxinomique associ� aux donn�es. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
-message.source.paragraph2=Les donn�es IBTS (donn�es fran�aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr�les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
-message.source.paragraph3=Le site ne contient des donn�es de base que pour une partie des s�ries de campagnes pour lesquelles des indices de populations et de communaut�s sont pr�sent�s, selon les modalit�s d''acc�s � ces donn�es. Pour un acc�s aux s�ries de donn�es source, il convient de contacter l''administrateur du Syst�me d''informations halieutiques de l''Ifremer ({0}) pour les donn�es fran�aises, et le site Datras du CIEM (http://datras.ices.dk) pour les donn�es IBTS des autres pays.
-message.source.paragraph4=Les donn�es de campagnes halieutiques sont constitu�es � partir de stations d''�chantillonnage r�parties dans l''espace selon le principe de tirage stratifi�. La densit� de l''�chantillonnage conditionne la partition g�ographique selon laquelle les indices de population et de communaut� peuvent �tre �tablis.
-message.source.paragraph5=Les plans de zonage propos�s incluent le plan de r�f�rence correspondant au plan d''�chantillonnage, ainsi que des adaptations pour tenir compte des limites des sous-r�gions d�finies par la strat�gie marine europ�enne. Ils ont �t� valid�s par un groupe de travail de l''Ifremer, apr�s exploration de la sensibilit� de divers indices aux ajustements propos�s.
-message.source.title=Donn�es de base
-message.survey.atlantique.celtique.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1997. En moyenne 75 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 150 000 km\u00B2 de la mer Celtique.
+message.search.extract.waitparagraph1=Les donn\u00E9es sont en cours d''extraction. Merci de patienter.
+message.search.extract.waitparagraph2=Cette op\u00E9ration peut prendre plusieurs minutes dans le cas o\u00F9 de nombreux graphiques doivent \u00EAtre g\u00E9n\u00E9r\u00E9s.
+message.search.extract.waitparagraph3=Apr\u00E8s le t\u00E9l\u00E9chargement, fermer cette page en revenant sur la page d''accueil du site.
+message.search.extract.zonetype=Zone et type de donn\u00E9es
+message.source.download=T\u00E9l\u00E9charger
+message.source.paragraph1=Les donn\u00E9es de base sont pr\u00E9sent\u00E9es selon quatre tables fournissant des informations de base \u00E9lev\u00E9es \u00E0 l''op\u00E9ration d''\u00E9chantillonnage (en g\u00E9n\u00E9ral un trait de chalut) et organis\u00E9es selon des unit\u00E9s g\u00E9ographiques d\u00E9finies en relation avec le plan d''\u00E9chantillonnage. Une table suppl\u00E9mentaire pr\u00E9sente le r\u00E9f\u00E9rentiel taxinomique associ\u00E9 aux donn\u00E9es. Il s''agit des donn\u00E9es utilis\u00E9es pour r\u00E9aliser les calculs des indicateurs pr\u00E9sent\u00E9s. Ces donn\u00E9es ont fait l''objet de filtrages et de regroupements \u00E9ventuels par rapport aux donn\u00E9es de base de chaque s\u00E9rie, afin d''assurer la coh\u00E9rence des jeux de donn\u00E9es en vue du calcul des indicateurs. Ainsi, pour certaines s\u00E9ries, des groupes entiers (e.g. les amphihalins) ont pu \u00EAtre retir\u00E9s. Pour certaines s\u00E9ries, certaines ann\u00E9es ou certaines strates ont \u00E9t\u00E9 retir\u00E9es afin de pr\u00E9server l''homog\u00E9n\u00E9it\u00E9 de la s\u00E9rie. Dans des cas d''\u00E9volution du niveau de d\u00E9termination au cours de la s\u00E9rie, plusieurs taxons ont \u00E9t\u00E9 regroup\u00E9s \u00E0 un niveau sup\u00E9rieur.
+message.source.paragraph2=Les donn\u00E9es IBTS (donn\u00E9es fran\u00E7aises et donn\u00E9es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m\u00EAmes contr\u00F4les de qualit\u00E9 que les autres s\u00E9ries de donn\u00E9es utilis\u00E9es, ainsi que de filtrages et de regroupements taxinomiques pour en pr\u00E9server la coh\u00E9rence vis-\u00E0-vis du pr\u00E9sent objectif de production d''indicateurs de tendances.
+message.source.paragraph3=Le site ne contient des donn\u00E9es de base que pour une partie des s\u00E9ries de campagnes pour lesquelles des indices de populations et de communaut\u00E9s sont pr\u00E9sent\u00E9s, selon les modalit\u00E9s d''acc\u00E8s \u00E0 ces donn\u00E9es. Pour un acc\u00E8s aux s\u00E9ries de donn\u00E9es source, il convient de contacter l''administrateur du Syst\u00E8me d''informations halieutiques de l''Ifremer ({0}) pour les donn\u00E9es fran\u00E7aises, et le site Datras du CIEM (http://datras.ices.dk) pour les donn\u00E9es IBTS des autres pays.
+message.source.paragraph4=Les donn\u00E9es de campagnes halieutiques sont constitu\u00E9es \u00E0 partir de stations d''\u00E9chantillonnage r\u00E9parties dans l''espace selon le principe de tirage stratifi\u00E9. La densit\u00E9 de l''\u00E9chantillonnage conditionne la partition g\u00E9ographique selon laquelle les indices de population et de communaut\u00E9 peuvent \u00EAtre \u00E9tablis.
+message.source.paragraph5=Les plans de zonage propos\u00E9s incluent le plan de r\u00E9f\u00E9rence correspondant au plan d''\u00E9chantillonnage, ainsi que des adaptations pour tenir compte des limites des sous-r\u00E9gions d\u00E9finies par la strat\u00E9gie marine europ\u00E9enne. Ils ont \u00E9t\u00E9 valid\u00E9s par un groupe de travail de l''Ifremer, apr\u00E8s exploration de la sensibilit\u00E9 de divers indices aux ajustements propos\u00E9s.
+message.source.title=Donn\u00E9es de base
+message.survey.atlantique.celtique.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ\u00E9en) d''un mois au quatri\u00E8me trimestre, tous les ans depuis 1997. En moyenne 75 traits d''une demi-heure, au chalut de fond \u00E0 grande ouverture verticale, sont r\u00E9alis\u00E9s. Chaque trait couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr\u00E9sentative des 150 000 km\u00B2 de la mer Celtique.
message.survey.atlantique.celtique.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.celtique.plus=Pour en savoir plus sur les campagnes Evhoe
message.survey.atlantique.celtique=Mer Celtique
-message.survey.atlantique.gascogne.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1992 (sauf en 1993 et 1996). En moyenne, 70 traits de chalut d''une demi-heure au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface de 0,067 km\u00B2. Cette campagne est repr�sentative des 72 500 km\u00B2 du golfe de Gascogne. La campagne Evhoe couvre donc le golfe de Gascogne et la mer Celtique avec le m�me protocole. De plus elle est coordonn�e internationalement, dans le cadre des campagnes IBTS, avec une campagne espagnole en mer Cantabrique, une campagne irlandaise et une campagne anglaise en mer Celtique.
+message.survey.atlantique.gascogne.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ\u00E9en) d''un mois au quatri\u00E8me trimestre, tous les ans depuis 1992 (sauf en 1993 et 1996). En moyenne, 70 traits de chalut d''une demi-heure au chalut de fond \u00E0 grande ouverture verticale, sont r\u00E9alis\u00E9s. Chaque trait couvre une surface de 0,067 km\u00B2. Cette campagne est repr\u00E9sentative des 72 500 km\u00B2 du golfe de Gascogne. La campagne Evhoe couvre donc le golfe de Gascogne et la mer Celtique avec le m\u00EAme protocole. De plus elle est coordonn\u00E9e internationalement, dans le cadre des campagnes IBTS, avec une campagne espagnole en mer Cantabrique, une campagne irlandaise et une campagne anglaise en mer Celtique.
message.survey.atlantique.gascogne.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.gascogne.plus=Pour en savoir plus sur les campagnes Evhoe
message.survey.atlantique.gascogne=Golfe de Gascogne
-message.survey.atlantique.vilaine.desc=Campagne sur la nourricerie de la baie de Vilaine (NourVil), d''une semaine � l''automne, tous les ans de 1980 � 2010, sauf en 1991, 1994, 1995, 1998, 1999, 2006 et 2007, au chalut � perche de 3 m�tres de large. En moyenne, 30 chalutages de 15 minutes sont r�alis�s. Chaque trait couvre une surface d''environ 0,0041 km\u00B2. Cette campagne est repr�sentative des 330 km\u00B2 de la baie.
+message.survey.atlantique.vilaine.desc=Campagne sur la nourricerie de la baie de Vilaine (NourVil), d''une semaine \u00E0 l''automne, tous les ans de 1980 \u00E0 2010, sauf en 1991, 1994, 1995, 1998, 1999, 2006 et 2007, au chalut \u00E0 perche de 3 m\u00E8tres de large. En moyenne, 30 chalutages de 15 minutes sont r\u00E9alis\u00E9s. Chaque trait couvre une surface d''environ 0,0041 km\u00B2. Cette campagne est repr\u00E9sentative des 330 km\u00B2 de la baie.
message.survey.atlantique.vilaine.nourvil1=Manuel des protocoles Nourriceries Gascogne - V 1.0 (2002)
message.survey.atlantique.vilaine.plus=Pour en savoir plus sur les campagnes Nourvil
message.survey.atlantique.vilaine=Baie de Vilaine
-message.survey.atlantique=Fa�ade Atlantique
-message.survey.dataengincasier=Un �chantillonnage au casier pour les campagnes d''�valuation des grands crustac�s, en particulier le homard, aux abords du cap de Flamanville.
-message.survey.dataenginfond=Un chalut de fond � grande ouverture verticale pour l''observation des ressources d�mersales, sur les plateaux continentaux et le haut des pentes continentales (accores) en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne, golfe du Lion et Est de la Corse,
-message.survey.dataenginperche=Un chalut � perche pour les zones tr�s c�ti�res et les estuaires lors des campagnes visant les juv�niles de poissons plats : baies de Somme et de Vilaine,
-message.survey.dataengintitle=Diff�rents engins d''�chantillonnage sont utilis�s :
-message.survey.detailstitle=Caract�ristiques des campagnes de surveillance halieutique de l''Ifremer
+message.survey.atlantique=Fa\u00E7ade Atlantique
+message.survey.dataengincasier=Un \u00E9chantillonnage au casier pour les campagnes d''\u00E9valuation des grands crustac\u00E9s, en particulier le homard, aux abords du cap de Flamanville.
+message.survey.dataenginfond=Un chalut de fond \u00E0 grande ouverture verticale pour l''observation des ressources d\u00E9mersales, sur les plateaux continentaux et le haut des pentes continentales (accores) en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne, golfe du Lion et Est de la Corse,
+message.survey.dataenginperche=Un chalut \u00E0 perche pour les zones tr\u00E8s c\u00F4ti\u00E8res et les estuaires lors des campagnes visant les juv\u00E9niles de poissons plats : baies de Somme et de Vilaine,
+message.survey.dataengintitle=Diff\u00E9rents engins d''\u00E9chantillonnage sont utilis\u00E9s :
+message.survey.detailstitle=Caract\u00E9ristiques des campagnes de surveillance halieutique de l''Ifremer
message.survey.maintitle=Les campagnes de surveillance halieutique de l''Ifremer
message.survey.mancheoccidentale.flamanville.crustaflam1=Manuel des protocoles CRUSTAFLAM - Version 1.0 (2003)
-message.survey.mancheoccidentale.flamanville.desc=Deux campagnes de 15 jours aux casiers � crustac�s aux abords du cap de Flamanville (CrustaFlam), en juin et septembre, depuis 1986 : 1200 casiers relev�s par campagne sur une zone de 26 km\u00B2.
+message.survey.mancheoccidentale.flamanville.desc=Deux campagnes de 15 jours aux casiers \u00E0 crustac\u00E9s aux abords du cap de Flamanville (CrustaFlam), en juin et septembre, depuis 1986 : 1200 casiers relev\u00E9s par campagne sur une zone de 26 km\u00B2.
message.survey.mancheoccidentale.flamanville.plus=Pour en savoir plus sur les campagnes CrustFlam
message.survey.mancheoccidentale.flamanville=Abords du cap de Flamanville
-message.survey.mancheoccidentale=Fa�ade Manche occidentale
+message.survey.mancheoccidentale=Fa\u00E7ade Manche occidentale
message.survey.mancheorientale.baiedeseine=Baie de Seine
-message.survey.mancheorientale.baiedeseine.desc=Campagnes annuelles de prospection sur les nourriceries de l''estuaire de Seine et de la baie de Seine orientale (NourSeine) effectu�es essentiellement � l''automne, de 1995 � 2002. L''objectif premier �tait d''identifier les nourriceries c�ti�res de ce site et d''en �valuer la richesse halieutique et macro-�pibenthique. Environ 45 traits effectu�s � chaque campagne, � l''aide d''un chalut � perche standard.
+message.survey.mancheorientale.baiedeseine.desc=Campagnes annuelles de prospection sur les nourriceries de l''estuaire de Seine et de la baie de Seine orientale (NourSeine) effectu\u00E9es essentiellement \u00E0 l''automne, de 1995 \u00E0 2002. L''objectif premier \u00E9tait d''identifier les nourriceries c\u00F4ti\u00E8res de ce site et d''en \u00E9valuer la richesse halieutique et macro-\u00E9pibenthique. Environ 45 traits effectu\u00E9s \u00E0 chaque campagne, \u00E0 l''aide d''un chalut \u00E0 perche standard.
message.survey.mancheorientale.baiedeseine.plus=Pour en savoir plus sur les campagnes NourSeine
message.survey.mancheorientale.baiedeseine.nourseine1=http://archimer.ifremer.fr/doc/00036/14714/
-message.survey.mancheorientale.baiedesomme.desc=Campagne de p�che sur la nourricerie de la baie de Somme (NourSomme) d''une semaine en septembre-octobre, tous les ans depuis 1995, aux chaluts � perche de 2 m�tres de large dans la partie la plus estuarienne de la baie et 3 m�tres dans la partie externe, plus marine. En moyenne 50 chalutages sont r�alis�s chaque ann�e. Ils durent en moyenne 7 minutes sur une surface de 0,001 km\u00B2 chacun dans la partie interne de la baie et 15 minutes sur une surface d''environ 0,004 km\u00B2 dans la partie externe. Cette campagne est repr�sentative des 720 km\u00B2 de la baie.
+message.survey.mancheorientale.baiedesomme.desc=Campagne de p\u00EAche sur la nourricerie de la baie de Somme (NourSomme) d''une semaine en septembre-octobre, tous les ans depuis 1995, aux chaluts \u00E0 perche de 2 m\u00E8tres de large dans la partie la plus estuarienne de la baie et 3 m\u00E8tres dans la partie externe, plus marine. En moyenne 50 chalutages sont r\u00E9alis\u00E9s chaque ann\u00E9e. Ils durent en moyenne 7 minutes sur une surface de 0,001 km\u00B2 chacun dans la partie interne de la baie et 15 minutes sur une surface d''environ 0,004 km\u00B2 dans la partie externe. Cette campagne est repr\u00E9sentative des 720 km\u00B2 de la baie.
message.survey.mancheorientale.baiedesomme.noursomme1=Manuel des protocoles Nourriceries Somme - V 1.0 (2002)
message.survey.mancheorientale.baiedesomme.plus=Pour en savoir plus sur les campagnes NourSomme
message.survey.mancheorientale.baiedesomme=Baie de Somme
message.survey.mancheorientale.mancheorientale.cgfs1=Manuel des protocoles CGFS - Version 1.0 (2002)
-message.survey.mancheorientale.mancheorientale.desc=Campagne fran�aise CGFS (Channel Ground Fish Survey) d''un mois en octobre, coordonn�e au plan international avec les campagnes IBTS. La campagne a lieu tous les ans depuis 1988. En moyenne 90 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,03 km\u00B2. Cette campagne est repr�sentative des 70 748 km\u00B2 de la Manche orientale.
+message.survey.mancheorientale.mancheorientale.desc=Campagne fran\u00E7aise CGFS (Channel Ground Fish Survey) d''un mois en octobre, coordonn\u00E9e au plan international avec les campagnes IBTS. La campagne a lieu tous les ans depuis 1988. En moyenne 90 traits d''une demi-heure, au chalut de fond \u00E0 grande ouverture verticale, sont r\u00E9alis\u00E9s. Chaque trait couvre une surface d''environ 0,03 km\u00B2. Cette campagne est repr\u00E9sentative des 70 748 km\u00B2 de la Manche orientale.
message.survey.mancheorientale.mancheorientale.plus=Pour en savoir plus sur les campagnes CGFS
-message.survey.mancheorientale.mancheorientale=Manche orientale
-message.survey.mancheorientale=Fa�ade Manche orientale
-message.survey.mediterranee.estcorse.desc=Contribution fran�aise � la campagne internationale Medits (International bottom Trawl Surveys in the Mediterranean), d''une semaine au printemps, tous les ans depuis 1994, sauf en 2002, au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 20 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. La campagne est repr�sentative des 4 562 km\u00B2 du plateau insulaire de l''est de la Corse.
+message.survey.mancheorientale.mancheorientale=Manche orientale
+message.survey.mancheorientale=Fa\u00E7ade Manche orientale
+message.survey.mediterranee.estcorse.desc=Contribution fran\u00E7aise \u00E0 la campagne internationale Medits (International bottom Trawl Surveys in the Mediterranean), d''une semaine au printemps, tous les ans depuis 1994, sauf en 2002, au chalut de fond \u00E0 grande ouverture verticale \u00E0 ailes courtes. En moyenne 20 chalutages sont r\u00E9alis\u00E9s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf\u00E9rieures \u00E0 200 m\u00E8tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup\u00E9rieures \u00E0 200 m\u00E8tres. La campagne est repr\u00E9sentative des 4 562 km\u00B2 du plateau insulaire de l''est de la Corse.
message.survey.mediterranee.estcorse.medits1=Manuel des protocoles Medits, Version 1 (1994)
message.survey.mediterranee.estcorse.medits2=Manuel des protocoles Medits, Version 2 (1995)
message.survey.mediterranee.estcorse.medits3=Manuel des protocoles Medits, Version 3 (1999)
@@ -186,7 +186,7 @@
message.survey.mediterranee.estcorse.medits6=Manuel des protocoles Medits, Version 6 (2012)
message.survey.mediterranee.estcorse.plus=Pour en savoir plus sur les campagnes Medits
message.survey.mediterranee.estcorse=Est de la Corse
-message.survey.mediterranee.golfelion.desc=Contribution fran�aise aux campagnes internationales Medits (International bottom Trawl Surveys in the Mediterranean), d''un mois au deuxi�me trimestre tous les ans depuis 1994 au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 69 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. Medits est repr�sentative des 13 860 km\u00B2 du golfe de Lion.
+message.survey.mediterranee.golfelion.desc=Contribution fran\u00E7aise aux campagnes internationales Medits (International bottom Trawl Surveys in the Mediterranean), d''un mois au deuxi\u00E8me trimestre tous les ans depuis 1994 au chalut de fond \u00E0 grande ouverture verticale \u00E0 ailes courtes. En moyenne 69 chalutages sont r\u00E9alis\u00E9s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf\u00E9rieures \u00E0 200 m\u00E8tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup\u00E9rieures \u00E0 200 m\u00E8tres. Medits est repr\u00E9sentative des 13 860 km\u00B2 du golfe de Lion.
message.survey.mediterranee.golfelion.medits1=Manuel des protocoles Medits, Version 1 (1994)
message.survey.mediterranee.golfelion.medits2=Manuel des protocoles Medits, Version 2 (1995)
message.survey.mediterranee.golfelion.medits3=Manuel des protocoles Medits, Version 3 (1999)
@@ -195,16 +195,16 @@
message.survey.mediterranee.golfelion.medits6=Manuel des protocoles Medits, Version 6 (2012)
message.survey.mediterranee.golfelion.plus=Pour en savoir plus sur les campagnes Medits
message.survey.mediterranee.golfelion=Golfe du Lion
-message.survey.mediterranee=Fa�ade M�diterran�e
-message.survey.merdunord.sudmerdunord.desc=Contribution fran�aise d''un mois � la campagne internationale IBTS (International Bottom Trawl Survey) au premier trimestre, tous les ans depuis 1980, au chalut de fond � grande ouverture verticale. En moyenne, le navire fran�ais fait 58 chalutages par an. Le sud de la mer du Nord est couvert par 4 navires (fran�ais, belge, danois et allemand) qui r�alisent en tout environ 200 traits par an. Chaque trait dure une demi-heure et couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 678\u00A0000\u00A0km\u00B2 de la zone.
-message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
-message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
+message.survey.mediterranee=Fa\u00E7ade M\u00E9diterran\u00E9e
+message.survey.merdunord.sudmerdunord.desc=Contribution fran\u00E7aise d''un mois \u00E0 la campagne internationale IBTS (International Bottom Trawl Survey) au premier trimestre, tous les ans depuis 1980, au chalut de fond \u00E0 grande ouverture verticale. En moyenne, le navire fran\u00E7ais fait 58 chalutages par an. Le sud de la mer du Nord est couvert par 4 navires (fran\u00E7ais, belge, danois et allemand) qui r\u00E9alisent en tout environ 200 traits par an. Chaque trait dure une demi-heure et couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr\u00E9sentative des 678\u00A0000\u00A0km\u00B2 de la zone.
+message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R\u00E9vision VI (1999)
+message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R\u00E9vision VII (2004)
message.survey.merdunord.sudmerdunord.plus=Pour en savoir plus sur les campagnes IBTS
message.survey.merdunord.sudmerdunord=Sud mer du Nord
-message.survey.merdunord=Fa�ade Mer du Nord
-message.survey.paragraph1=Les campagnes de p�che scientifique standardis�es ont pour objectif d''observer les ressources halieutiques, en suivant toujours les m�mes m�thodes d''�chantillonnage. Elles sont toujours r�alis�es dans la m�me zone, � la m�me saison, avec des engins de p�che standardis�s, afin que les donn�es soient comparables d''ann�e en ann�e. Elles servent � d�crire les esp�ces, qu''elles soient commerciales ou non, d''une zone et � observer les changements s''il y en a. Les poissons, les mollusques et les crustac�s sont d�nombr�s, mesur�s et pes�s. Certains d''entre eux font l''objet de pr�l�vements biologiques. Chaque campagne fournit ainsi une repr�sentation quantitative de l''ensemble des esp�ces de la zone � une p�riode donn�e. Selon les s�ries, d''autres informations sont relev�es (temp�rature, salinit�, macrofaune, observation des mammif�res marins, oiseaux, macro d�chets etc., mais ne sont pas pr�sent�es dans ce site)
-message.survey.paragraph2=Depuis une vingtaine d''ann�es, l''Ifremer organise des campagnes de p�che scientifique en mer du Nord, en Manche, en Atlantique et en M�diterran�e concernant les ressources d�mersales et benthiques. L''objectif prioritaire est de produire des indices d''abondance des principales esp�ces commerciales. Elles recueillent �galement des donn�es sur les esp�ces captur�es non commerciales. Elles contribuent ainsi aux connaissances n�cessaires au d�veloppement de l''approche �cosyst�mique des p�ches, notamment dans le cadre de la politique commune des p�ches et plus largement de la strat�gie marine de l''Union europ�enne.
-message.survey.paragraph3=Les campagnes sont r�alis�es selon des plans d''�chantillonnage standardis�s. L''engin de p�che et son gr�ement, la position des stations, le tri des captures, les pr�l�vements biologiques suivent des protocoles fix�s.
-message.survey.paragraph4=Pour les campagnes coordonn�es entre navires de recherche des pays riverains en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne et M�diterran�e, les protocoles sont communs � l''ensemble des pays partenaires. Les traits de chalut des diff�rents navires de recherche sont comparables.
-message.survey.paragraph5=Chaque zone �tudi�e est d�coup�e en strates en fonction de la profondeur, de la latitude ou d''autres crit�res. L''�chantillonnage pr�voit un nombre de traits de chalut ou de mouillages de casiers par strate.
-message.survey.paragraph6=Dans une campagne de chalutage scientifique, les positions des traits de chalut sont choisies selon un plan d''�chantillonnage statistique. L''objectif n''est pas d''obtenir les meilleures captures possibles comme le recherchent les p�cheurs, mais de r�colter des donn�es comparables d''une ann�e sur l''autre afin de relever des �volutions.
+message.survey.merdunord=Fa\u00E7ade Mer du Nord
+message.survey.paragraph1=Les campagnes de p\u00EAche scientifique standardis\u00E9es ont pour objectif d''observer les ressources halieutiques, en suivant toujours les m\u00EAmes m\u00E9thodes d''\u00E9chantillonnage. Elles sont toujours r\u00E9alis\u00E9es dans la m\u00EAme zone, \u00E0 la m\u00EAme saison, avec des engins de p\u00EAche standardis\u00E9s, afin que les donn\u00E9es soient comparables d''ann\u00E9e en ann\u00E9e. Elles servent \u00E0 d\u00E9crire les esp\u00E8ces, qu''elles soient commerciales ou non, d''une zone et \u00E0 observer les changements s''il y en a. Les poissons, les mollusques et les crustac\u00E9s sont d\u00E9nombr\u00E9s, mesur\u00E9s et pes\u00E9s. Certains d''entre eux font l''objet de pr\u00E9l\u00E8vements biologiques. Chaque campagne fournit ainsi une repr\u00E9sentation quantitative de l''ensemble des esp\u00E8ces de la zone \u00E0 une p\u00E9riode donn\u00E9e. Selon les s\u00E9ries, d''autres informations sont relev\u00E9es (temp\u00E9rature, salinit\u00E9, macrofaune, observation des mammif\u00E8res marins, oiseaux, macro d\u00E9chets etc., mais ne sont pas pr\u00E9sent\u00E9es dans ce site)
+message.survey.paragraph2=Depuis une vingtaine d''ann\u00E9es, l''Ifremer organise des campagnes de p\u00EAche scientifique en mer du Nord, en Manche, en Atlantique et en M\u00E9diterran\u00E9e concernant les ressources d\u00E9mersales et benthiques. L''objectif prioritaire est de produire des indices d''abondance des principales esp\u00E8ces commerciales. Elles recueillent \u00E9galement des donn\u00E9es sur les esp\u00E8ces captur\u00E9es non commerciales. Elles contribuent ainsi aux connaissances n\u00E9cessaires au d\u00E9veloppement de l''approche \u00E9cosyst\u00E9mique des p\u00EAches, notamment dans le cadre de la politique commune des p\u00EAches et plus largement de la strat\u00E9gie marine de l''Union europ\u00E9enne.
+message.survey.paragraph3=Les campagnes sont r\u00E9alis\u00E9es selon des plans d''\u00E9chantillonnage standardis\u00E9s. L''engin de p\u00EAche et son gr\u00E9ement, la position des stations, le tri des captures, les pr\u00E9l\u00E8vements biologiques suivent des protocoles fix\u00E9s.
+message.survey.paragraph4=Pour les campagnes coordonn\u00E9es entre navires de recherche des pays riverains en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne et M\u00E9diterran\u00E9e, les protocoles sont communs \u00E0 l''ensemble des pays partenaires. Les traits de chalut des diff\u00E9rents navires de recherche sont comparables.
+message.survey.paragraph5=Chaque zone \u00E9tudi\u00E9e est d\u00E9coup\u00E9e en strates en fonction de la profondeur, de la latitude ou d''autres crit\u00E8res. L''\u00E9chantillonnage pr\u00E9voit un nombre de traits de chalut ou de mouillages de casiers par strate.
+message.survey.paragraph6=Dans une campagne de chalutage scientifique, les positions des traits de chalut sont choisies selon un plan d''\u00E9chantillonnage statistique. L''objectif n''est pas d''obtenir les meilleures captures possibles comme le recherchent les p\u00EAcheurs, mais de r\u00E9colter des donn\u00E9es comparables d''une ann\u00E9e sur l''autre afin de relever des \u00E9volutions.
\ No newline at end of file
1
0
r1135 - trunk/coser-business/src/main/java/fr/ifremer/coser/services
by tchemit@users.forge.codelutin.com 08 Mar '14
by tchemit@users.forge.codelutin.com 08 Mar '14
08 Mar '14
Author: tchemit
Date: 2014-03-08 08:25:34 +0100 (Sat, 08 Mar 2014)
New Revision: 1135
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1135
Log:
remove duplicate WebService
Removed:
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java 2014-03-07 23:12:11 UTC (rev 1134)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java 2014-03-08 07:25:34 UTC (rev 1135)
@@ -1,3027 +0,0 @@
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2013 Ifremer, Codelutin, Chatellier Eric
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-package fr.ifremer.coser.services;
-
-import static org.nuiton.i18n.I18n.t;
-import static org.nuiton.i18n.I18n.l;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.nio.charset.Charset;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeMap;
-import java.util.TreeSet;
-import java.util.regex.Matcher;
-
-import fr.ifremer.coser.bean.IndicatorMap;
-import fr.ifremer.coser.bean.ZoneMap;
-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.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.apache.commons.mail.EmailException;
-import org.apache.commons.mail.MultiPartEmail;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.mime.HttpMultipartMode;
-import org.apache.http.entity.mime.MultipartEntity;
-import org.apache.http.entity.mime.content.StringBody;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.StringUtil;
-import org.nuiton.util.ZipUtil;
-import org.w3c.dom.Document;
-import org.xhtmlrenderer.pdf.ITextRenderer;
-
-import com.itextpdf.text.DocumentException;
-
-import fr.ifremer.coser.CoserBusinessConfig;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.CoserConstants;
-import fr.ifremer.coser.CoserConstants.Category;
-import fr.ifremer.coser.CoserUtils;
-import fr.ifremer.coser.bean.Project;
-import fr.ifremer.coser.bean.RSufiResult;
-import fr.ifremer.coser.bean.RSufiResultPath;
-import fr.ifremer.coser.bean.Selection;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.util.DataType;
-import fr.ifremer.coser.util.InputStreamKnownSizeBody;
-import fr.ifremer.coser.util.ProgressMonitor;
-import fr.ifremer.coser.util.ProgressStream;
-import freemarker.cache.ClassTemplateLoader;
-import freemarker.ext.beans.BeansWrapper;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
-
-/**
- * Service specifique à l'interface web de visualisation et à la partie UI
- * qui sert a envoyer les resultats vers l'interface web.
- *
- * Ce service, contrairement aux autres a un état, les indicateurs et zones
- * chargées persistent après chargement, car elle ne peuvent pas changer
- * tant que l'application est en cours d'utilisation.
- *
- * Il faut garder à l'esprit que les projets n'ont pas forcement
- * de données publiées, donc le chargement du projet est possible, mais
- * pas les données de controle et les données de selection (donc plutot
- * travailler sur les fichiers estcomind/estpopind que sur les 4 tables).
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class WebService2 {
-
- private static final Log log = LogFactory.getLog(WebService.class);
-
- protected CoserBusinessConfig config;
-
- protected CommonService commonService;
-
- protected ProjectService projectService;
-
- protected PublicationService publicationService;
-
- /** Indicator map (id, locale > translation, id, "unit" > unit) (etat du service). */
-// protected MultiKeyMap indicatorsMap;
- protected IndicatorMap indicatorsMap;
-
- /** Zones map (etat du service). */
-// protected DataStorage zonesMap;
- protected ZoneMap zonesMap;
-
- /** Freemarker */
- protected Configuration freemarkerConfiguration;
-
- public WebService2(CoserBusinessConfig config) {
- this.config = config;
-
- commonService = new CommonService(config);
- projectService = new ProjectService(config);
- publicationService = new PublicationService(config);
-
- 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(WebService.class, "/ftl");
- freemarkerConfiguration.setTemplateLoader(templateLoader);
-
- // pour les maps dans les template (entre autre)
- freemarkerConfiguration.setObjectWrapper(new BeansWrapper());
- }
-
- protected IndicatorMap getIndicatorsMap() {
- if (indicatorsMap == null) {
- indicatorsMap = new IndicatorMap(config.getWebIndicatorsFile());
- }
- return indicatorsMap;
- }
-// /**
-// * Charge les indicateurs disponible depuis le fichier des indicateurs.
-// * (indid, indname)
-// *
-// * @return indicators map
-// * @throws CoserBusinessException
-// */
-// protected MultiKeyMap getIndicatorsMap() throws CoserBusinessException {
-//
-// if (indicatorsMap == null) {
-// indicatorsMap = new MultiKeyMap();
-// File indicatorsFile = config.getWebIndicatorsFile();
-// DataStorage indicatorsStorage = commonService.loadCSVFile(indicatorsFile);
-// Iterator<String[]> iteratorInd = indicatorsStorage.iterator(true);
-// while (iteratorInd.hasNext()) {
-// // "id";"label_fr";"label_en";"label_es";"unit"
-// String[] indicator = iteratorInd.next();
-// indicatorsMap.put(indicator[0], "fr", indicator[1]);
-// indicatorsMap.put(indicator[0], "en", indicator[2]);
-// indicatorsMap.put(indicator[0], "es", indicator[3]);
-// indicatorsMap.put(indicator[0], "unit", indicator[4]);
-// }
-// }
-//
-// return indicatorsMap;
-// }
-
-// /**
-// * Get indicator translation by checking correct locale.
-// *
-// * @param indicator indicator code
-// * @param localeCode locale
-// * @return indicator translation
-// */
-// protected String getIndicatorValue(String indicator, String localeCode) throws CoserBusinessException {
-// String localLocaleCode = localeCode;
-// if (!"fr".equals(localLocaleCode) && !"es".equals(localLocaleCode)
-// && !"unit".equals(localLocaleCode)) {
-// localLocaleCode = "en"; // en by default
-// }
-// return (String)getIndicatorsMap().get(indicator, localLocaleCode);
-// }
-
-// /**
-// * Charge les zones disponibles depuis le fichier des zones.
-// * (zoneid, zonename)
-// *
-// * @return zones map
-// * @throws CoserBusinessException
-// */
-// public DataStorage getZonesMap() throws CoserBusinessException {
-//
-// if (zonesMap == null) {
-// File zoneFile = config.getWebZonesFile();
-//
-// // l'operation n'est pas obligatoire pour tous les clients
-// // lourd, le fichier peut donc ne pas exister
-// if (zoneFile.isFile()) {
-// zonesMap = commonService.loadCSVFile(zoneFile);
-// }
-// else {
-// // fait volontairement un return new, n'affecte pas l'etat du
-// // service
-// return new MemoryDataStorage();
-// }
-// }
-//
-// return zonesMap;
-// }
-
- /**
- * Charge les zones disponibles depuis le fichier des zones.
- * (zoneid, zonename)
- *
- * @return zones map
- */
- public ZoneMap getZonesMap() {
-
- if (zonesMap == null) {
- File zoneFile = config.getWebZonesFile();
-
- // l'operation n'est pas obligatoire pour tous les clients
- // lourd, le fichier peut donc ne pas exister
- if (zoneFile.isFile()) {
- zonesMap = new ZoneMap(zoneFile);
- }
- else {
- // fait volontairement un return new, n'affecte pas l'etat du
- // service
- return new ZoneMap(null);
- }
- }
-
- return zonesMap;
- }
-
- /**
- * Retourne les nom d'une zone (avec la facade, l'année et la serie) en
- * fonction de l'id de la zone.
- *
- * @param zoneId zone id
- * @return zone name (or {@code null} if not found)
- */
- public String getZoneFullName(String zoneId) {
- return getZonesMap().getZoneFullName(zoneId);
- }
-
- /**
- * Retourne les zones disponible par facade.
- *
- * @return couple facadeid/list<zoneid>
- */
- public Map<String, List<String>> getZoneByFacade() {
- return getZonesMap().getZoneByFacade();
- }
-
- /**
- * Recupere la liste des cartes pour chaque id de zone sous forme de Map.
- *
- * @return zone images map
- */
- public Map<String, String> getZonePictures() {
- return getZonesMap().getZonePictures();
- }
-
- /**
- * Recupere la liste des meta info pour chaque id de zone sous forme de Map.
- *
- * @param locale locale
- * @return zone meta info map
- */
- public Map<String, String> getZoneMetaInfo(Locale locale) {
- return getZonesMap().getZoneMetaInfo(locale);
- }
-
- /**
- * Get facades list (as facadeid/facadename).
- *
- * @return facades map
- */
- public Map<String, String> getFacades() {
- return getZonesMap().getFacades();
- }
-
- /**
- * Pour une zone principale, recupere la liste des couples sous-zone /
- * campagne qui sont disponible dans cette zone principale.
- *
- * @param facade facade (le nom de la facade principale) (can be {@code null} : don't filter on facade)
- * @param onlyWithSource retourn zone liste with available source data
- * @param forMap look in map directory
- * @return couple subzoneid/sub
- * @throws CoserBusinessException
- */
- public Map<String, String> getZoneForFacade(String facade, boolean onlyWithSource, boolean forMap) throws CoserBusinessException {
- Map<String, String> zonesForFacade = new HashMap<String, String>();
-
- // get subzone for main zone
- Collection<String> subZones = getZonesMap().getZonesForFacade(facade);
-// Collection<String> subZones = new ArrayList<String>();
-// Iterator<String[]> itZone = getZonesMap().storage.iterator(true);
-// while (itZone.hasNext()) {
-// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
-// String[] tuple = itZone.next();
-// if (facade == null || tuple[1].equals(facade)) {
-// subZones.add(tuple[0]);
-// }
-// }
-
- File projectsDirectory = null;
- if (forMap) {
- projectsDirectory = config.getWebMapsProjectsDirectory();
- }
- else {
- projectsDirectory = config.getWebIndicatorsProjectsDirectory();
- }
-
- // get survey names in subZones collection
- File[] projectFiles = projectsDirectory.listFiles();
-
- // project iteration
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
-
- // selection iteration
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
-
- // result iteration
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- if (!onlyWithSource || rsufiResult.isDataAllowed()) {
- String resultZoneId = rsufiResult.getZone();
- if (subZones.contains(resultZoneId)) {
- String zoneid = resultZoneId;
- // get zone name
-// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"map"
-// int zoneIndex = getZonesMap().indexOf(zoneid);
-// String[] zoneData = getZonesMap().get(zoneIndex);
-// String zoneName = zoneData[3] + " - " + zoneData[4] + " - " + zoneData[5];
- String zoneName = getZonesMap().getZoneFullNameWithNoFacade(zoneid);
-
- zonesForFacade.put(zoneid, zoneName);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return zonesForFacade;
- }
-
-// /**
-// * Get facades list (as facadeid/facadename).
-// *
-// * @return facades map
-// * @throws CoserBusinessException
-// */
-// public Map<String, String> getFacades() throws CoserBusinessException {
-// Map<String, String> facades = new LinkedHashMap<String, String>();
-// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
-// DataStorage zonesMap = getZonesMap();
-// Iterator<String[]> itZone = zonesMap.iterator(true);
-// while (itZone.hasNext()) {
-// String[] tuple = itZone.next();
-// // on a pas d'id pour les facades
-// facades.put(tuple[1], tuple[2]);
-// }
-// return facades;
-// }
-// /**
-// * Retourne les zones disponible par facade.
-// *
-// * @return couple facadeid/list<zoneid>
-// * @throws CoserBusinessException
-// */
-// public Map<String, List<String>> getZoneByFacade() throws CoserBusinessException {
-// Map<String, List<String>> zonesByFacade = new HashMap<String, List<String>>();
-//
-// // get subzone for main zone
-// Iterator<String[]> itZone = getZonesMap().iterator(true);
-// while (itZone.hasNext()) {
-// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
-// String[] tuple = itZone.next();
-// String facadeid = tuple[1];
-// String zoneid = tuple[0];
-// List<String> zones = zonesByFacade.get(facadeid);
-// if (zones == null) {
-// zones = new ArrayList<String>();
-// zonesByFacade.put(facadeid, zones);
-// }
-// zones.add(zoneid);
-// }
-//
-// return zonesByFacade;
-// }
-//
-// /**
-// * Recupere la liste des cartes pour chaque id de zone sous forme de Map.
-// *
-// * @return zone images map
-// * @throws CoserBusinessException
-// */
-// public Map<String, String> getZonePictures() throws CoserBusinessException {
-// Map<String, String> result = new HashMap<String, String>();
-//
-// Iterator<String[]> itZone = getZonesMap().iterator(true);
-// while (itZone.hasNext()) {
-// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
-// String[] tuple = itZone.next();
-// result.put(tuple[0], tuple[9]);
-// }
-//
-// return result;
-// }
-//
-// /**
-// * Recupere la liste des meta info pour chaque id de zone sous forme de Map.
-// *
-// * @param locale locale
-// * @return zone meta info map
-// * @throws CoserBusinessException
-// */
-// public Map<String, String> getZoneMetaInfo(Locale locale) throws CoserBusinessException {
-// Map<String, String> result = new HashMap<String, String>();
-//
-// Iterator<String[]> itZone = getZonesMap().iterator(true);
-// while (itZone.hasNext()) {
-// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
-// String[] tuple = itZone.next();
-// if (locale != null && "fr".equals(locale.getLanguage())) {
-// result.put(tuple[0], tuple[6]);
-// } else if (locale != null && "es".equals(locale.getLanguage())) {
-// result.put(tuple[0], tuple[8]);
-// } else {
-// result.put(tuple[0], tuple[7]);
-// }
-// }
-//
-// return result;
-// }
-
-// /**
-// * Retourne les nom d'une zone (avec la facade, l'année et la serie) en
-// * fonction de l'id de la zone.
-// *
-// * @param zoneId zone id
-// * @return zone name (or {@code null} if not found)
-// * @throws CoserBusinessException
-// */
-// public String getZoneFullName(String zoneId) throws CoserBusinessException {
-// DataStorage localZoneMap = getZonesMap();
-// String resultName = null;
-// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
-// int zoneIndex = localZoneMap.indexOf(zoneId);
-// if (zoneIndex != -1) {
-// resultName = localZoneMap.get(zoneIndex)[2];
-// resultName += " - " + localZoneMap.get(zoneIndex)[3];
-// resultName += " - " + localZoneMap.get(zoneIndex)[4];
-// resultName += " - " + localZoneMap.get(zoneIndex)[5];
-// }
-// return resultName;
-// }
-
- /**
- * Retourne tous les projets qui ont des résultats.
- *
- * De la forme d'une liste de de path (à la tree path) :
- * ProjetName/SelectionName/ResultName
- *
- * @param beginDate begin date (can be null)
- * @param endDate end date (can be null)
- * @param onlyPubliableResult select only publiable results
- *
- * @return results paths
- * @throws CoserBusinessException
- */
- public List<RSufiResultPath> findAllProjectWithResult(Date beginDate, Date endDate, boolean onlyPubliableResult) throws CoserBusinessException {
- List<RSufiResultPath> results = findAllProjectWithResult(config.getProjectsDirectory(),
- beginDate,
- endDate,
- onlyPubliableResult);
- return results;
- }
-
- /**
- * Retourne tous les projets qui ont des résultats.
- *
- * De la forme d'une liste de de path (à la tree path) :
- * ProjetName/SelectionName/ResultName
- *
- * @param projectsDirectory where to search for projects
- * @param beginDate begin date (can be null)
- * @param endDate end date (can be null)
- * @param onlyPubliableResult select only publiable results
- *
- * @return results paths
- * @throws CoserBusinessException
- */
- public List<RSufiResultPath> findAllProjectWithResult(File projectsDirectory, Date beginDate, Date endDate, boolean onlyPubliableResult) throws CoserBusinessException {
- List<RSufiResultPath> results = new ArrayList<RSufiResultPath>();
-
- // loop on projets
- File[] projects = projectsDirectory.listFiles();
- if (projects != null) {
- for (File existingProject : projects) {
- if (existingProject.isDirectory()) {
- String projectName = existingProject.getName();
- Project p = new Project(projectName);
-
- // loop on selections
- File selectionsDirectory = new File(existingProject, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selections = selectionsDirectory.listFiles();
- if (selections != null) {
- for (File existingSelection : selections) {
- if (existingSelection.isDirectory()) {
- String selectionName = existingSelection.getName();
- Selection s = new Selection(selectionName);
-
- // loop on result
- File rsufisDirectory = new File(existingSelection, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] rSufiResults = rsufisDirectory.listFiles();
- if (rSufiResults != null) {
- for (File rSufiResult : rSufiResults) {
- if (rSufiResult.isDirectory()) {
- RSufiResult r = projectService.getRSufiResult(rSufiResult);
-
- boolean candidate = isCandidateResult(r, beginDate, endDate, onlyPubliableResult);
- if (candidate) {
- RSufiResultPath result = new RSufiResultPath(p, s, r);
- results.add(result);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return results;
- }
-
- /**
- * Test if result is valid with filtering.
- *
- * @param rsufiResult rsufi result to test
- * @param beginDate begin date (can be null)
- * @param endDate end date (can be null)
- * @param onlyPubliableResult select only publiable results
- * @return if result is valid candidate
- */
- protected boolean isCandidateResult(RSufiResult rsufiResult, Date beginDate,
- Date endDate, boolean onlyPubliableResult) {
-
- boolean result = true;
-
- if (beginDate != null) {
- result &= rsufiResult.getCreationDate().compareTo(beginDate) >= 0;
- }
-
- if (endDate != null) {
- result &= rsufiResult.getCreationDate().compareTo(endDate) <= 0;
- }
-
- if (onlyPubliableResult) {
- result &= rsufiResult.isPubliableResult();
- }
-
- return result;
- }
-
- /**
- * Extract directory to custom directory.
- *
- * @param selectedResults selected result paths
- * @param extractDirectory extract directory (can be null)
- * @param publishDataResults result paths flaged with results export
- * @return extracted file (no automatically deleted)
- * @throws CoserBusinessException
- */
- public File performResultExtract(Collection<RSufiResultPath> selectedResults, Collection<RSufiResultPath> publishDataResults, File extractDirectory) throws CoserBusinessException {
- File prepareZip = null;
- try {
-
- // create zip file name not random name
- if (extractDirectory == null) {
- prepareZip = File.createTempFile("Coserextract-", ".zip");
- }
- else {
- // cas extraction vers un répertoire specifique
- DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
- String zipName = "Coserextract" + dateFormat.format(new Date()) + ".zip";
- prepareZip = new File(extractDirectory, zipName);
- }
-
- // copy selectively all data to target directory
- MultipleFileFilter mFileFilters = new MultipleFileFilter();
- for (RSufiResultPath path : selectedResults) {
- // load projet, needed to known source data file name
- Project project = path.getProject();
- project = projectService.openProject(project.getName());
-
- OneResultFileFilter oneRFF = new OneResultFileFilter(config.getProjectsDirectory(),
- project, path.getSelection(), path.getRsufiResult(), publishDataResults.contains(path));
- mFileFilters.add(oneRFF);
- }
-
- // create zip temp file
- File projectsDirectory = config.getProjectsDirectory();
-
- //ZipUtil.compress(prepareZip, projectsDirectory, mFileFilters);
- // compress les projets à la racines de l'archive
- // sans le dossier "projects"
- Collection<File> files = FileUtil.getFilteredElements(projectsDirectory, mFileFilters, true);
- ZipUtil.compressFiles(prepareZip, projectsDirectory, files, false);
- } catch (IOException ex) {
- throw new CoserBusinessException("Can't prepare upload data", ex);
- }
-
- return prepareZip;
- }
-
- /**
- * Upload user selected result to coser web front-end using common http
- * client.
- *
- * TODO remove les 4 listes s'il y a mieux.
- *
- * @param selectedResults selected result (collection of project/selection/rsufiresult)
- * @param indicatorsResults results selected as indicator results
- * @param mapResults results selected as map result
- * @param publishDataResults results selected as results published with data
- * @param login remote admin login
- * @param password remote admin password
- * @param progress progress monitor
- * @return upload error status or {@code null} if no error
- * @throws CoserBusinessException
- */
- public String performResultUpload(Collection<RSufiResultPath> selectedResults,
- Collection<RSufiResultPath> indicatorsResults, Collection<RSufiResultPath> mapResults,
- Collection<RSufiResultPath> publishDataResults, String login,
- String password, ProgressMonitor progress) throws CoserBusinessException {
-
- String uploadStatus = null;
-
- // first copy prepare directory with only necessary data
- // ie project with only selected selections
- // and selection with only selected results
-
- progress.setCurrent(0);
- progress.setText(t("coser.business.uploadresult.modifyResultOptions"));
- modifyRSufiResults(selectedResults, indicatorsResults, mapResults, publishDataResults);
-
- progress.setText(t("coser.business.uploadresult.checkcollision"));
- checkDataCollision(selectedResults);
-
- progress.setText(t("coser.business.uploadresult.preparezip"));
-
- // default extract to temp directory with data sources
- File prepareZip = performResultExtract(selectedResults, publishDataResults, null);
-
- progress.setText(t("coser.business.uploadresult.sendzip"));
- progress.setTotal((int)prepareZip.length());
-
- // then upload zip file to website
- try {
- HttpClient httpclient = new DefaultHttpClient();
- MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
-
- // login/password param (password encoded)
- StringBody loginBody = new StringBody(login, Charset.forName("UTF-8"));
- reqEntity.addPart("login", loginBody);
- String sha1password = StringUtil.encodeSHA1(password);
- StringBody passwordBody = new StringBody(sha1password, Charset.forName("UTF-8"));
- reqEntity.addPart("sha1Password", passwordBody);
-
- // file param
- ProgressStream stream = new ProgressStream(new FileInputStream(prepareZip), progress);
- InputStreamKnownSizeBody fileBody = new InputStreamKnownSizeBody(stream, prepareZip.length(),
- "application/zip", prepareZip.getName());
- reqEntity.addPart("resultFile", fileBody);
-
- HttpPost httppost = new HttpPost(config.getWebUploadURL());
- httppost.setEntity(reqEntity);
-
- if (log.isInfoEnabled()) {
- log.info("Uploading " + prepareZip + " to " + httppost.getURI());
- }
-
- HttpResponse response = httpclient.execute(httppost);
-
- if (response.getStatusLine().getStatusCode() != 200) {
- uploadStatus = response.getStatusLine().getReasonPhrase();
- }
- } catch (ClientProtocolException ex) {
- throw new CoserBusinessException("Can't upload file", ex);
- } catch (IOException ex) {
- throw new CoserBusinessException("Can't upload file", ex);
- }
-
- prepareZip.delete();
-
- return uploadStatus;
- }
-
- /**
- * Modifie les types et options de certains résultats rsufi (map result,
- * data sources result).
- *
- * @param selectedResults selected result (collection of project/selection/rsufiresult)
- * @param indicatorsResults results selected as indicator results
- * @param mapResults map results
- * @param publishDataResults publish data results
- * @throws CoserBusinessException
- */
- protected void modifyRSufiResults(Collection<RSufiResultPath> selectedResults,
- Collection<RSufiResultPath> indicatorsResults, Collection<RSufiResultPath> mapResults,
- Collection<RSufiResultPath> publishDataResults) throws CoserBusinessException {
-
- // TODO echatellier 20110117 revoir ce code
-
- // attention, il faut sauver tout les resultats, sinon, les
- // decochage de type map / publish result ne seront pas pris en compte
-
- // reset type map and data source for all
- for (RSufiResultPath selectedResult : selectedResults) {
- RSufiResult rsufiResult = selectedResult.getRsufiResult();
- rsufiResult.setIndicatorsResult(false);
- rsufiResult.setMapsResult(false);
- rsufiResult.setDataAllowed(false);
- }
-
- // set map type
- for (RSufiResultPath indicatorsResult : indicatorsResults) {
- RSufiResult rsufiResult = indicatorsResult.getRsufiResult();
- rsufiResult.setIndicatorsResult(true);
- }
-
- // set map type
- for (RSufiResultPath mapResult : mapResults) {
- RSufiResult rsufiResult = mapResult.getRsufiResult();
- rsufiResult.setMapsResult(true);
- }
-
- // set data type
- for (RSufiResultPath publishDataResult : publishDataResults) {
- RSufiResult rsufiResult = publishDataResult.getRsufiResult();
- rsufiResult.setDataAllowed(true);
- }
-
- // save all selected results
- for (RSufiResultPath selectedResult : selectedResults) {
- Project project = selectedResult.getProject();
- Selection selection = selectedResult.getSelection();
- RSufiResult rsufiResult = selectedResult.getRsufiResult();
-
- File projectDirectory = new File(config.getProjectsDirectory(), project.getName());
- File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File selectionDirectory = new File(selectionsDirectory, selection.getName());
- File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File resultDirectory = new File(resultsDirectory, rsufiResult.getName());
-
- projectService.saveRSufiResult(resultDirectory, rsufiResult);
- }
- }
-
- /**
- * Met à jour les fichiers de propriétés des resultats (maps, dataSource)
- * and check for duplicated couple (zoneid/resulttype (map) upload).
- *
- * @param selectedResults result id to check
- * @throws CoserBusinessException
- */
- protected void checkDataCollision(Collection<RSufiResultPath> selectedResults) throws CoserBusinessException {
-
- Collection<String> resultZoneTypeIds = new ArrayList<String>();
-
- for (RSufiResultPath selectedResult : selectedResults) {
- Project project = selectedResult.getProject();
- Selection selection = selectedResult.getSelection();
- RSufiResult rsufiResult = selectedResult.getRsufiResult();
-
- // on creer une clé composé pour l'id du resultat
- String resultZoneTypeId = rsufiResult.getZone() + String.valueOf(rsufiResult.isMapsResult());
- if (resultZoneTypeIds.contains(resultZoneTypeId)) {
- throw new CoserBusinessException(t("coser.business.resultupload.duplicatedresult",
- project.getName(), selection.getName(), rsufiResult.getName(), rsufiResult.getZone()));
- } else {
- resultZoneTypeIds.add(resultZoneTypeId);
- }
- }
- }
-
- /**
- * Aggrege plusieurs file filters.
- */
- protected static class MultipleFileFilter implements FileFilter {
- protected Collection<FileFilter> fileFilters = new ArrayList<FileFilter>();
-
- public void add(FileFilter f) {
- fileFilters.add(f);
- }
-
- /*
- * @see java.io.FileFilter#accept(java.io.File)
- */
- @Override
- public boolean accept(File pathname) {
-
- boolean result = false;
- Iterator<FileFilter> it = fileFilters.iterator();
- while (it.hasNext() && !result) {
- result = it.next().accept(pathname);
- }
- return result;
- }
- }
-
- /**
- * Filter pour un resultat donné.
- *
- * Attention, implémentation que ne doit fonctionner que avec ZipUtil
- * car meme si on refuse en répertoire, il redemande quand même
- * les fils (et il faut qu'il les demande)
- */
- protected class OneResultFileFilter implements FileFilter {
- protected File projectsDirectory;
-
- /** Doit etre un project chargé avec nom de fichier originaux. */
- protected Project project;
- protected Selection selection;
- protected RSufiResult rsufi;
- protected boolean exportWithData;
-
- public OneResultFileFilter(File projectsDirectory, Project project, Selection selection, RSufiResult rsufi, boolean exportWithData) {
- this.projectsDirectory = projectsDirectory;
- this.project = project;
- this.selection = selection;
- this.rsufi = rsufi;
- this.exportWithData = exportWithData;
- }
-
- /*
- * @see java.io.FileFilter#accept(java.io.File)
- */
- @Override
- public boolean accept(File pathname) {
-
- boolean result = false;
-
- try {
- String currentPathName = pathname.getCanonicalPath() + File.separator;
-
- File projectDirectory = new File(projectsDirectory, project.getName());
- File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File selectionDirectory = new File(selectionsDirectory, selection.getName());
- File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File resultDirectory = new File(resultsDirectory, rsufi.getName());
-
- String projectPath = projectDirectory.getCanonicalPath() + File.separator;
- String selectionsPath = selectionsDirectory.getCanonicalPath() + File.separator;
- String selectionPath = selectionDirectory.getCanonicalPath() + File.separator;
- String resultsPath = resultsDirectory.getCanonicalPath() + File.separator;
- String resultPath = resultDirectory.getCanonicalPath() + File.separator;
-
- // on prend
- // - tout ce qu'il y a dans le projet
- // - sauf le répertoire "selections"
- // - ou la selection entierement
- // - sauf le répertoire result
- // - ou le resultat entierrement
- result = (currentPathName.startsWith(projectPath)
- && !currentPathName.startsWith(selectionsPath))
- || (currentPathName.startsWith(selectionPath)
- && !currentPathName.startsWith(resultsPath))
- || currentPathName.startsWith(resultPath);
-
- // cas ou les données sources ne doivent pas être exporter
- // condition sur les noms de fichiers ?
- if (!exportWithData) {
- String fileName = pathname.getName();
-
- // on exclu tout les fichiers qui commencent
- // par les memes noms de fichiers que ceux du projet
- // (les noms de fichiers sont personnalisables)
- for (Category category : Category.values()) {
- if (category.isDataCategory()) {
- String sourceFileName = commonService.getDataStorageFileName(project, category, null);
- Matcher matcher = CoserUtils.FILENAME_SUFFIX_PATTERN.matcher(sourceFileName);
- if (matcher.matches()) {
- result &= !(fileName.startsWith(matcher.group(1)) && fileName.endsWith(matcher.group(2)));
- } else {
- result &= !fileName.startsWith(sourceFileName);
- }
- }
- }
- }
- } catch (IOException ex) {
- throw new RuntimeException("Can't get system canonical path");
- }
-
- return result;
- }
- }
-
- /**
- * Traite le fichier uploade par l'application client et l'enregistre
- * dans le stockage coté web.
- *
- * Le nouveau fichier uploadé est mergé avec l'ancien, c'est à dire:
- * <ul>
- * <li>dezipage dans un fichier temporaire
- * <li>recuperation des noms de zones des nouveau fichiers (par type, carte/indicateur)
- * <li>suppression dans l'ancien répertoire des resultats deja presents dans le nouveau (pour les conflits zone)
- * <li>suppression des selections vides
- * <li>suppression des projets vides
- * <li>copie (avec ecrasement) des nouveaux fichiers dans l'ancien répertoire
- * mais seulement pour ceux des zones concernés (partie difficile)
- * </ul>
- *
- * TODO chatellier 20110125 l'algorithme n'est pour l'instant pas performant
- * et contient pas mal de code dupliqué, mais pour la v1.0 ca ira.
- *
- * @param login user login
- * @param archiveFile uploaded file
- * @throws CoserBusinessException
- */
- public void registerNewUploadedResults(String login, File archiveFile) throws CoserBusinessException {
-
- try {
-
- // dezipage dans un fichier temporaire
- File tempDirectory = FileUtil.createTempDirectory("coser-upload-", "-tmp");
- ZipUtil.uncompress(archiveFile, tempDirectory);
-
- File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
- File mapsDirectory = config.getWebMapsProjectsDirectory();
-
- // recuperer les resultats actuels pour le mail de mise à jour
- Map<String, String> indicatorResults = getZonesIds(projectsDirectory, true, null, null);
- Map<String, String> mapsResults = getZonesIds(mapsDirectory, null, true, null);
- Map<String, String> dataResults = getZonesIds(projectsDirectory, null, null, true);
-
- // suppression des resultats qui ont été envoyé mais
- // ne sont ni maps result, ni indicator result
- Map<String, String> noIndicatorsResultZoneIds = getZonesIds(tempDirectory, false, null, null);
- cleanCurrentProjectDirectory(projectsDirectory, noIndicatorsResultZoneIds.keySet());
- Map<String, String> noMapsResultZoneIds = getZonesIds(tempDirectory, null, false, null);
- cleanCurrentProjectDirectory(mapsDirectory, noMapsResultZoneIds.keySet());
- Map<String, String> noDataResultZoneIds = getZonesIds(tempDirectory, null, null, false);
-
- // recuperation des noms zone des nouveau fichiers
- Map<String, String> indicatorsResultZoneIds = getZonesIds(tempDirectory, true, null, null);
- // suppression dans l'ancien répertoire des resultat deja present
- // dans le nouveau (pour les conflits)
- cleanCurrentProjectDirectory(projectsDirectory, indicatorsResultZoneIds.keySet());
- // creation du filter qui copiera juste ce qu'il faut
- FileFilter indicatorsFileFilter = getCopyFileFilter(tempDirectory, false);
- // copie (avec ecrasement) des nouveaux fichiers dans l'ancien répertoire
- customCopyDirectory(tempDirectory, projectsDirectory, indicatorsFileFilter);
-
- // recuperation des noms zone des nouveau fichiers
- Map<String, String> mapsResultZoneIds = getZonesIds(tempDirectory, null, true, null);
- // suppression dans l'ancien répertoire des resultat deja present
- // dans le nouveau (pour les conflits)
- cleanCurrentProjectDirectory(mapsDirectory, mapsResultZoneIds.keySet());
- // creation du filter qui copiera juste ce qu'il faut
- FileFilter mapsFileFilter = getCopyFileFilter(tempDirectory, true);
- // copie (avec ecrasement) des nouveaux fichiers dans l'ancien répertoire
- customCopyDirectory(tempDirectory, mapsDirectory, mapsFileFilter);
-
- // recuperation des nom de resultat data
- Map<String, String> dataResultZoneIds = getZonesIds(tempDirectory, null, null, true);
-
- FileUtils.deleteDirectory(tempDirectory);
-
- if (log.isInfoEnabled()) {
- log.info("Unzipping file " + archiveFile + " to " + projectsDirectory);
- }
-
- // generate email content
- StringBuilder content = new StringBuilder();
-
- int count = 0;
- content.append(t("coser.business.notificationmail.mapsresults") + "\n");
- for (Map.Entry<String, String> noMapsResultZoneId : noMapsResultZoneIds.entrySet()) {
- if (mapsResults.containsValue(noMapsResultZoneId.getValue())) {
- content.append(" - " + t("coser.business.notificationmail.deleted",
- getZoneFullName(noMapsResultZoneId.getKey()),
- noMapsResultZoneId.getValue()) + "\n");
- count++;
- }
- }
- for (Map.Entry<String, String> mapsResultZoneId : mapsResultZoneIds.entrySet()) {
- if (!mapsResults.containsValue(mapsResultZoneId.getValue())) {
- content.append(" - " + t("coser.business.notificationmail.added",
- getZoneFullName(mapsResultZoneId.getKey()),
- mapsResultZoneId.getValue()) + "\n");
- count++;
- }
- }
- content.append("\n");
-
- content.append(t("coser.business.notificationmail.indicatorsresults") + "\n");
- for (Map.Entry<String, String> noIndicatorsResultZoneId : noIndicatorsResultZoneIds.entrySet()) {
- if (indicatorResults.containsValue(noIndicatorsResultZoneId.getValue())) {
- content.append(" - " + t("coser.business.notificationmail.deleted",
- getZoneFullName(noIndicatorsResultZoneId.getKey()),
- noIndicatorsResultZoneId.getValue()) + "\n");
- count++;
- }
-
- }
- for (Map.Entry<String, String> indicatorsResultZoneId : indicatorsResultZoneIds.entrySet()) {
- if (!indicatorResults.containsValue(indicatorsResultZoneId.getValue())) {
- content.append(" - " + t("coser.business.notificationmail.added",
- getZoneFullName(indicatorsResultZoneId.getKey()),
- indicatorsResultZoneId.getValue()) + "\n");
- count++;
- }
- }
- content.append("\n");
-
- content.append(t("coser.business.notificationmail.dataresults") + "\n");
- for (Map.Entry<String, String> noDataResultZoneId : noDataResultZoneIds.entrySet()) {
- if (dataResults.containsValue(noDataResultZoneId.getValue())) {
- content.append(" - " + t("coser.business.notificationmail.deleted",
- getZoneFullName(noDataResultZoneId.getKey()),
- noDataResultZoneId.getValue()) + "\n");
- count++;
- }
-
- }
- for (Map.Entry<String, String> dataResultZoneId : dataResultZoneIds.entrySet()) {
- if (!dataResults.containsValue(dataResultZoneId.getValue())) {
- content.append(" - " + t("coser.business.notificationmail.added",
- getZoneFullName(dataResultZoneId.getKey()),
- dataResultZoneId.getValue()) + "\n");
- count++;
- }
- }
- content.append("\n");
-
- // send notification mails
- sendNewResultNotifications(login, count, content.toString());
-
- // update data date
- updateDataProperties();
- } catch (IOException ex) {
- throw new CoserBusinessException("Can't uncompress file", ex);
- }
- }
-
- /**
- * N'utilise pas la methode de commons-fileutils, car lorsqu'un répertoire
- * est refusé, il ne descend pas dans les sous répertoire alors que dans
- * notre cas il le faut.
- *
- * @param srcDir source directory to copy
- * @param destDir destination directory
- * @param indicatorsFileFilter file filter for file to copy
- * @throws IOException
- */
- protected void customCopyDirectory(File srcDir,
- File destDir, FileFilter indicatorsFileFilter) throws IOException {
- List<File> files = FileUtil.getFilteredElements(srcDir, null, true);
- for (File file : files) {
- if (indicatorsFileFilter.accept(file)) {
- String path = file.getPath().substring(srcDir.getPath().length());
-
- File destFile = new File(destDir, path);
- if (file.isDirectory()) {
- destFile.mkdirs();
- }
- else {
- FileUtils.copyFile(file, destFile);
- }
- }
- }
- }
-
- /**
- * Met à jour certaines proprietes apres la mise à jour des données.
- *
- * @throws CoserBusinessException
- */
- protected void updateDataProperties() throws CoserBusinessException {
-
- File webProperties = config.getWebPropertiesFile();
-
- Properties props = new Properties();
- InputStream iStream = null;
- OutputStream oStream = null;
- try {
- if (webProperties.isFile()) {
- iStream = new FileInputStream(webProperties);
- props.load(iStream);
- }
-
- props.setProperty("updateDate", String.valueOf(new Date().getTime()));
- oStream = new FileOutputStream(webProperties);
- props.store(oStream, "Update data");
- } catch (IOException ex) {
- throw new CoserBusinessException("Can't save properties file", ex);
- }
- finally {
- IOUtils.closeQuietly(iStream);
- IOUtils.closeQuietly(oStream);
- }
- }
-
- /**
- * Retourne la date de dernière mise à jour des données du site web.
- *
- * Retourne une date bidon, si pas de dernière mise à jour.
- *
- * @return last data update date
- * @throws CoserBusinessException
- */
- public Date getLastDataUpdateDate() throws CoserBusinessException {
- Date dataUpdateDate = null;
- File webProperties = config.getWebPropertiesFile();
- if (webProperties.isFile()) {
- // get update date
- Properties props = new Properties();
- InputStream stream = null;
- try {
- stream = new FileInputStream(webProperties);
- props.load(stream);
-
- if (props.containsKey("updateDate")) {
- String date = props.getProperty("updateDate");
- long time = Long.parseLong(date);
- dataUpdateDate = new Date(time);
- }
-
- } catch (IOException ex) {
- throw new CoserBusinessException("Can't read properties file", ex);
- }
- finally {
- IOUtils.closeQuietly(stream);
- }
- }
-
- if (dataUpdateDate == null) {
- dataUpdateDate = new Date(0);
- }
-
- return dataUpdateDate;
- }
-
- /**
- * Recupere dans un repertoire donné, les zoneid des resultat avec
- * pour chaque id, le nom du projet associé.
- *
- * Les boolean sont des grands {@code Boolean} car si la valeur
- * est {@code null}, on ne tient pas compte du critere lors de la recherche.
- *
- * @param scanDirectory le repertoire a scanner
- * @param indicatorResults if true get indicator results
- * @param mapResults if true get map results
- * @param dataResults if true get data allowed result
- * @return une map de resultid/nom visuel des projets
- * @throws CoserBusinessException
- */
- protected Map<String, String> getZonesIds(File scanDirectory, Boolean indicatorResults,
- Boolean mapResults, Boolean dataResults) throws CoserBusinessException {
-
- Map<String, String> resultIds = new HashMap<String, String>();
- File[] projectFiles = scanDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
-
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
-
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // return result depending on result type
- if ( ( indicatorResults == null || rsufiResult.isIndicatorsResult() == indicatorResults )
- &&
- ( mapResults == null || rsufiResult.isMapsResult() == mapResults )
- &&
- ( dataResults == null || rsufiResult.isDataAllowed() == dataResults)) {
- String resultResultId = rsufiResult.getZone();
- if (StringUtils.isNotBlank(resultResultId)) {
- String resultPath = projectFile.getName() + "/" +
- selectionFile.getName() + "/" +
- resultFile.getName();
- resultIds.put(resultResultId, resultPath);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return resultIds;
- }
-
- /**
- * Retourne un file filter qui ne copiera que les dossiers resultat
- * correspondant au type demandé. Pour un resultat, le filtre devra
- * egalement copier les dossiers projet et selection correspondants.
- *
- * @param scanDirectory directory containing result to copy
- * @param mapResults result type to get
- * @return aggragated file filter
- * @throws CoserBusinessException
- */
- protected FileFilter getCopyFileFilter(File scanDirectory, boolean mapResults) throws CoserBusinessException {
-
- MultipleFileFilter aggregateFileFilter = new MultipleFileFilter();
-
- File[] projectFiles = scanDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
-
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
-
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // return result depending on result type
- if ( (mapResults && rsufiResult.isMapsResult()) ||
- (!mapResults && rsufiResult.isIndicatorsResult())) {
-
- Project p = new Project(projectFile.getName());
- Selection s = new Selection(selectionFile.getName());
-
- OneResultFileFilter resultFileFilter = new OneResultFileFilter(scanDirectory, p, s, rsufiResult, true);
- aggregateFileFilter.add(resultFileFilter);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return aggregateFileFilter;
- }
-
- /**
- * Fait le menage dans le dossier courant des projets en supprimant
- * tout les resulat qui ont un result id present dans la liste
- * {@code newResultIds}.
- *
- * Supprime egalement les selections qui n'ont plus de résultats et
- * les projets qui n'ont plus de selection.
- *
- * @param projectsDirectory projectsDirectory
- * @param newResultIds new ids
- * @throws CoserBusinessException
- */
- protected void cleanCurrentProjectDirectory(File projectsDirectory, Collection<String> newResultIds) throws CoserBusinessException {
-
- try {
- File[] projectFiles = projectsDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- int projectSelectionCount = 0;
-
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- int selectionResultCount = 0;
-
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
- String resultResultId = rsufiResult.getZone();
- if (newResultIds.contains(resultResultId)) {
- // un nouveau resulat utilsera ce resultid
- FileUtils.deleteDirectory(resultFile);
- } else {
- // un resultat valid trouvé, selection non a supprimer
- selectionResultCount++;
- }
- }
- }
- }
-
- // si aucun resultat valide, suppression de la seletion
- if (selectionResultCount == 0) {
- FileUtils.deleteDirectory(selectionFile);
- } else {
- projectSelectionCount++;
- }
- }
- }
- }
-
- // si aucune selection avec resultat, suppression du projet
- if (projectSelectionCount == 0) {
- FileUtils.deleteDirectory(projectFile);
- }
- }
- }
- }
- } catch (IOException ex) {
- throw new CoserBusinessException("Can't delete directory", ex);
- }
- }
-
- /**
- * Envoi un mail de notification apres la publication des resultat à la
- * liste des adresses email renseignées dans la configuration.
- *
- * @param login user login
- * @param count updated data count
- * @param detail body mail detail
- */
- protected void sendNewResultNotifications(String login, int count, String detail) {
- List<String> emails = config.getNewResultNotificationList();
-
- for (String email : emails) {
- try {
- MultiPartEmail emailPart = new MultiPartEmail();
- emailPart.setHostName(config.getSmtpHost());
- emailPart.addTo(email);
- emailPart.setFrom("noreply-coser(a)ifremer.fr", "Coser");
- emailPart.setSubject(t("coser.business.notificationmail.subject", count));
- emailPart.setContent(t("coser.business.notificationmail.body", login, detail), "text/plain; charset=ISO-8859-9");
-
- // send mail
- emailPart.send();
- } catch (EmailException ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't send mail", ex);
- }
- }
- }
- }
-
- /**
- * Recuperer la liste des populations pour une zone donnée.
- *
- * @param zone zone id
- * @return map species nom info>nom officiel
- * @param forMap for map directory
- * @throws CoserBusinessException
- */
- public Map<String, String> getSpecies(String zone, boolean forMap) throws CoserBusinessException {
- return getSpecies(Collections.singleton(zone), forMap);
- }
-
- /**
- * Recuperer la liste des populations pour un ensemble de zones donnée.
- *
- * @param zones zones ids
- * @return map species nom info>nom officiel
- * @param forMap for map directory
- * @throws CoserBusinessException
- */
- public Map<String, String> getSpecies(Collection<String> zones, boolean forMap) throws CoserBusinessException {
-
- Map<String, String> result = new TreeMap<String, String>();
-
- File projectsDirectory = null;
- if (forMap) {
- projectsDirectory = config.getWebMapsProjectsDirectory();
- }
- else {
- projectsDirectory = config.getWebIndicatorsProjectsDirectory();
- }
-
- File[] projectFiles = projectsDirectory.listFiles();
-
- // parcours des resultats disponibles
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
-
- // selection iteration
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
-
- // result iteration
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // extraction des especes pour le résultat demandé
- if (rsufiResult.getZone() != null && zones.contains(rsufiResult.getZone())) {
-
- // load project (without data to get reftax data)
- Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
-
- Map<String, String> resultSpecies = getRsufiResultSpecies(project, resultFile, rsufiResult);
- result.putAll(resultSpecies);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return result;
- }
-
- /**
- * Recupere la liste de toutes les especes nom sci et nom off à partir
- * d'un resultat.
- *
- * @param project project
- * @param resultDirectory rsufi result directory
- * @param rsufiResult rsufi result
- * @return map with each species code/species name
- * @throws CoserBusinessException
- */
- protected Map<String, String> getRsufiResultSpecies(Project project, File resultDirectory, RSufiResult rsufiResult) throws CoserBusinessException {
- Map<String, String> result = new HashMap<String, String>();
-
- // load reftax in memory
- Map<String, String> speciesNames = new HashMap<String, String>();
- Iterator<String[]> reftax = project.getRefTaxSpecies().iterator(true);
- while (reftax.hasNext()) {
- String[] tuple = reftax.next();
-
- // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
- String speciesCode = tuple[3];
- // nom + auteur (sans ajout de parenthese : important)
- String speciesName = tuple[4] + " " + tuple[5];
-
- speciesNames.put(speciesCode, speciesName);
- }
-
- // un peu lourd mais reconstruit le path jusqu'au fichier estcomind
- File estPopIndFile = new File(resultDirectory, rsufiResult.getEstPopIndName());
-
- // Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
- DataStorage dataStorage = commonService.loadCSVFile(estPopIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
-
- Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
- while (estPopIndIterator.hasNext()) {
- String[] tuple = estPopIndIterator.next();
-
- String specyCode = tuple[3];
- String specyName = speciesNames.get(specyCode);
-
- if (StringUtils.isNotEmpty(specyName)) {
- result.put(specyCode, specyName);
- }
- }
-
- return result;
- }
-
- /**
- * Retourne les indicateurs calculés avec leurs traductions scientifique
- * pour la zone et l'especes souhaitées.
- *
- * @param zone zone id
- * @param species especes (if {@code null} look for com indicators)
- * @param locale locale
- * @return la liste des indicateurs
- * @throws CoserBusinessException
- */
- public Map<String, String> getIndicators(String zone, String species, Locale locale) throws CoserBusinessException {
- Map<String, String> indicators = new TreeMap<String, String>();
-
- // parcours des resultats disponibles
- File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
- File[] projectFiles = projectsDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
-
- // selection iteration
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
-
- // result iteration
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // extraction des especes pour le résultat demandé
- if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
-
- Map<String, String> resultIndicators = null;
-
- if (species == null) {
- resultIndicators = getRsufiResultComIndicators(resultFile, rsufiResult, locale);
- }
- else {
- resultIndicators = getRsufiResultPopIndicators(resultFile, rsufiResult, species, locale);
- }
- indicators.putAll(resultIndicators);
- break;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return indicators;
- }
-
- /**
- * Retourne les indicateurs calculés avec leurs traductions scientifique
- * pour les zones souhaitées. Retournes les indicateurs de populations
- * de de communauté à la fois.
- *
- * @param zones zones id
- * @param dataType data type
- * @param locale locale
- * @return la liste des indicateurs
- * @throws CoserBusinessException
- * @since 1.4
- */
- public Map<String, String> getIndicators(Collection<String> zones, DataType dataType, Locale locale) throws CoserBusinessException {
- Map<String, String> indicators = new TreeMap<String, String>();
-
- // parcours des resultats disponibles
- File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
- File[] projectFiles = projectsDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
-
- // selection iteration
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
-
- // result iteration
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // extraction des especes pour le résultat demandé
- if (zones.contains(rsufiResult.getZone())) {
-
- Map<String, String> resultIndicators = null;
- if (dataType == DataType.COMMUNITY) {
- resultIndicators = getRsufiResultComIndicators(resultFile, rsufiResult, locale);
- indicators.putAll(resultIndicators);
- }
- if (dataType == DataType.POPULATION) {
- resultIndicators = getRsufiResultPopIndicators(resultFile, rsufiResult, null, locale);
- indicators.putAll(resultIndicators);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return indicators;
- }
-
- /**
- * Recupere la liste de toutes les especes nom sci et nom off à partir
- * d'un resultat.
- *
- * @param resultDirectory rsufi result directory
- * @param rsufiResult result
- * @param species to get indicator (can be {@code null} to not filter on species)
- * @param locale locale
- * @return indicator for species
- * @throws CoserBusinessException
- */
- protected Map<String, String> getRsufiResultPopIndicators(File resultDirectory, RSufiResult rsufiResult, String species, Locale locale) throws CoserBusinessException {
-
- Map<String, String> result = new HashMap<String, String>();
-
- IndicatorMap indicatorsMap = getIndicatorsMap();
-
- // le fichier estcomind
- File estPopIndFile = new File(resultDirectory, rsufiResult.getEstPopIndName());
-
- // Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
- DataStorage dataStorage = commonService.loadCSVFile(estPopIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
-
- Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
- while (estPopIndIterator.hasNext()) {
- String[] tuple = estPopIndIterator.next();
-
- String specyCode = tuple[3];
- if (species == null || specyCode.equals(species)) {
-
- String indicatorCode = tuple[1];
- String translations = indicatorsMap.getIndicatorValue(indicatorCode, locale);
-// String translations = getIndicatorValue(indicatorCode, locale.getLanguage());
-// if (translations == null) {
-// translations = "##" + indicatorCode + "##" + locale.getLanguage();
-// }
- result.put(indicatorCode, translations);
- }
- }
-
- return result;
- }
-
- /**
- * Recupere la liste de toutes les especes nom sci et nom off à partir
- * d'un resultat.
- *
- * @param resultDirectory rsufi result directory
- * @param rsufiResult result
- * @param locale locale
- * @return indicator for species
- * @throws CoserBusinessException
- */
- protected Map<String, String> getRsufiResultComIndicators(File resultDirectory, RSufiResult rsufiResult, Locale locale) throws CoserBusinessException {
-
- Map<String, String> result = new HashMap<String, String>();
-
- IndicatorMap indicatorsMap = getIndicatorsMap();
-
- // le fichier estcomind
- File estComIndFile = new File(resultDirectory, rsufiResult.getEstComIndName());
-
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- DataStorage dataStorage = commonService.loadCSVFile(estComIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
-
- Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
- while (estPopIndIterator.hasNext()) {
- String[] tuple = estPopIndIterator.next();
-
- String indicatorCode = tuple[1];
- String translations = indicatorsMap.getIndicatorValue(indicatorCode, locale);
-// String translations = getIndicatorValue(indicatorCode, locale.getLanguage());
-// if (translations == null) {
-// translations = "##" + indicatorCode + "##" + locale.getLanguage();
-// }
- result.put(indicatorCode, translations);
- }
-
- return result;
- }
-
- /**
- * Retourne les listes sur lequel l'indicateur fournit a ete calculé.
- *
- * @param zone zone id
- * @param indicator indicator
- * @param locale locale
- * @return la liste des indicateurs
- * @throws CoserBusinessException
- */
- public Map<String, String> getIndicatorLists(String zone, String indicator, Locale locale) throws CoserBusinessException {
- // linked hash map (doit respecter l'ordre d'insertion)
- Map<String, String> indicators = new LinkedHashMap<String, String>();
-
- // parcours des resultats disponibles
- File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
- File[] projectFiles = projectsDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
-
- // selection iteration
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
-
- // result iteration
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // extraction des especes pour le résultat demandé
- if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
-
- // le fichier contenant le code type espece (utile
- // pour les traductions des list d'indicateur)
- File codeTypeEspecesFile = new File(projectFile, CoserConstants.Category.TYPE_ESPECES.getStorageFileName());
-
- Map<String, String> resultIndicators = getRsufiResultComIndicatorLists(resultFile,
- rsufiResult, codeTypeEspecesFile, indicator, locale);
- indicators.putAll(resultIndicators);
- break;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return indicators;
- }
-
- /**
- * Recupere les nom des listes sur lesquelle ont été calculé les
- * indicateurs avec leurs traductions.
- *
- * @param resultDirectory rsufi result directory
- * @param rsufiResult result
- * @param indicator indicator
- * @param locale locale
- * @return indicator for species
- * @throws CoserBusinessException
- */
- protected Map<String, String> getRsufiResultComIndicatorLists(File resultDirectory,
- RSufiResult rsufiResult, File codeTypeEspecesFile, String indicator, Locale locale) throws CoserBusinessException {
-
- // linked hash map (doit respecter l'ordre d'insertion)
- Map<String, String> result = new LinkedHashMap<String, String>();
-
- // le fichier estcomind
- File estComIndFile = new File(resultDirectory, rsufiResult.getEstComIndName());
-
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- DataStorage dataStorage = commonService.loadCSVFile(estComIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
- DataStorage dataStorageType = commonService.loadCSVFile(codeTypeEspecesFile, CoserConstants.CSV_SEPARATOR_CHAR);
-
- Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
- while (estPopIndIterator.hasNext()) {
- String[] tuple = estPopIndIterator.next();
-
- String indicatorCode = tuple[1];
- if (indicatorCode.equals(indicator)) {
- String list = tuple[2];
-
- // recherche de la traduction de l'id de liste
- // les liste sont a1, T1, T2 ...
- String listLetter = String.valueOf(list.charAt(0));
- String translation = "## " + list + " not found ##";
- Iterator<String[]> typeIterator = dataStorageType.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")) {
- if (locale != null && "fr".equals(locale.getLanguage())) {
- translation = "Tous Liste " + list.charAt(1);
- } else if (locale != null && "en".equals(locale.getLanguage())) {
- translation = "Todo Lista " + list.charAt(1);
- } else {
- translation = "All List " + list.charAt(1);
- }
- }
- else {
- // ajout de la traduction du nom de liste plus le numéro
- if (locale != null && "fr".equals(locale.getLanguage())) {
- translation = tupleType[0] + " Liste " + list.charAt(1);
- } else if (locale != null && "en".equals(locale.getLanguage())) {
- translation = tupleType[0] + " Lista " + list.charAt(1);
- } else {
- translation = tupleType[0] + " List " + list.charAt(1);
- }
- }
- break;
- }
- }
- result.put(list, translation);
- }
- }
-
- return result;
- }
-
- /**
- * Retourne les indicateurs calculés avec leurs traductions scientifique
- * pour la zone et l'especes souhaitées.
- *
- * @param zone zone id
- * @param species especes (if {@code null} look for com indicators
- * @param indicator indicator
- * @param list indicator's list (if {@code null} look for pop indicators or no list selected
- * @param locale locale
- * @return la liste des indicateurs
- * @throws CoserBusinessException
- */
- public File getChart(String zone, String species, String indicator, String list, Locale locale) throws CoserBusinessException {
- File result = null;
-
- IndicatorMap indicatorsMap = getIndicatorsMap();
-
- // parcours des resultats disponibles
- File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
- File[] projectFiles = projectsDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
-
- // selection iteration
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
-
- // result iteration
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // extraction des especes pour le résultat demandé
- if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
-
- // load project (without data to get reftax data)
- Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
-// String indicatorName = getIndicatorValue(indicator, locale.getLanguage());
-// String unit = getIndicatorValue(indicator, "unit");
- String indicatorName = indicatorsMap.getIndicatorValue(indicator, locale);
- String unit = indicatorsMap.getIndicatorUnit(indicator);
-
-// String zoneDisplayName = getZoneFullName(zone);
- String zoneDisplayName = getZonesMap().getZoneFullName(zone);
-
- if (species == null) {
- // le fichier contenant le code type espece (utile
- // pour les traductions des list d'indicateur)
- File codeTypeEspecesFile = new File(projectFile, CoserConstants.Category.TYPE_ESPECES.getStorageFileName());
-
- // title = surveyName - indicateur
- result = publicationService.getRsufiResultComChart(project, resultFile,
- rsufiResult, codeTypeEspecesFile, indicator, list,
- zoneDisplayName, indicatorName, unit, locale);
- }
- else {
- // title = surveyName - indicateur - species
- result = publicationService.getRsufiResultPopChart(project, resultFile,
- rsufiResult, species, indicator, zoneDisplayName, indicatorName,
- unit, locale);
- }
- break;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return result;
- }
-
- /**
- * Retourne les indicateurs calculés avec leurs traductions scientifique
- * pour la zone et l'especes souhaitées.
- *
- * @param zone zone id
- * @param species especes (if {@code null} look for com indicators
- * @param indicator indicator
- * @param list indicator's list (if {@code null} look for pop indicators or no list selected
- * @param locale locale
- * @return la liste des indicateurs
- * @throws CoserBusinessException
- */
- public File getChartData(String zone, String species, String indicator, String list, Locale locale) throws CoserBusinessException {
- File result = null;
-
- // parcours des resultats disponibles
- File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
- File[] projectFiles = projectsDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
-
- // selection iteration
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
-
- // result iteration
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // extraction des especes pour le résultat demandé
- if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
- result = getChartDataFile(projectsDirectory, projectFile, selectionFile, resultFile, rsufiResult, species, indicator, list, locale);
- break;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return result;
- }
-
- /**
- * Generate chart data (as csv for population and as zip for community).
- *
- * @param projectsDirectory projects storage directory
- * @param projectDirectory current project directory
- * @param selectionDirectory selection directory
- * @param resultDirectory rsufi result directory
- * @param rSufiResult rsufi result
- * @param species species (can be null for community)
- * @param indicator indicator
- * @param list indicator's list (if {@code null} look for pop indicators or no list selected
- * @param locale locale
- * @return generated file (auto delete when jvm shutdown)
- * @throws CoserBusinessException
- */
- protected File getChartDataFile(File projectsDirectory, File projectDirectory, File selectionDirectory,
- File resultDirectory, RSufiResult rSufiResult, String species, String indicator, String list,
- Locale locale) throws CoserBusinessException {
-
- File result = null;
-
- try {
- // cas community (zip avec fichier meta)
- if (species == null) {
- File tempDir = FileUtil.createTempDirectory("coser-chartdata-", "-tmp");
-
- String surveyName = projectService.getProjectSurveyName(resultDirectory, rSufiResult);
- File baseDir = new File(tempDir, surveyName);
- baseDir.mkdirs();
-
- File csvFile = publicationService.getRsufiResultComChartData(resultDirectory, rSufiResult, indicator, list);
- File csvFileCopied = new File(baseDir, indicator + ".csv");
- FileUtils.copyFile(csvFile, csvFileCopied);
- csvFile.delete();
-
- // ajout du fichier d'information sur les espèces incluses dans
- // les calculs des indicateurs de communautés
- // load project (without data to get reftax data)
- Project project = projectService.openProject(projectDirectory.getName(), projectsDirectory);
- Selection selection = project.getSelections().get(selectionDirectory.getName());
- File metaFile = generateMetaFilePDF(project, selection, resultDirectory, rSufiResult, indicator, locale);
- File metaFileCopied = new File(baseDir, "Information.pdf");
- FileUtils.copyFile(metaFile, metaFileCopied);
-
- // make zip
- result = File.createTempFile("coser-chartdata-", ".zip");
- result.deleteOnExit();
- ZipUtil.compress(result, baseDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- }
- else {
- // cas pop, fichier csv brut
- result = publicationService.getRsufiResultPopChartData(resultDirectory, rSufiResult, species, indicator);
- }
-
- } catch (IOException ex) {
- throw new CoserBusinessException("Can't generate chart data file", ex);
- }
-
- return result;
- }
-
- /**
- * Recupere le fichier image de la carte demandées en fonction de la zone
- * et de l'espece.
- *
- * Retourne également la repartition globale sur la zone si le nom de
- * l'espece est {@code null}.
- *
- * @param zone zone (zoneid)
- * @param species species or (null to get <survey>_Repartition-stations.png map file)
- * @return map file
- * @throws CoserBusinessException
- */
- public File getMapFile(String zone, String species) throws CoserBusinessException {
-
- File result = null;
-
- // parcours des resultats disponibles
- File projectsDirectory = config.getWebMapsProjectsDirectory();
- File[] projectFiles = projectsDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
-
- // selection iteration
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
-
- // result iteration
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // extraction des especes pour le résultat demandé
- if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone) && rsufiResult.isMapsResult()) {
- // get survey name (other condition)
- String surveyName = projectService.getProjectSurveyName(resultFile, rsufiResult);
-
- String mapName = null;
- if (species != null) {
- mapName = surveyName + "_" + species.toUpperCase() + ".png";
- }
- else {
- mapName = surveyName + "_Repartition-stations.png";
- }
-
- File mapsDirectory = new File(resultFile, CoserConstants.STORAGE_MAPS_DIRECTORY);
- result = new File(mapsDirectory, mapName);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return result;
- }
-
- /**
- * Genere un fichier zip des sources d'un projet.
- *
- * Contient:
- * <ul>
- * <li>les 4 fichiers apres sélection
- * <li>un fichier de décharge (pdf)
- * </ul>
- *
- * @param zone zone (zoneid-surveyname)
- * @param locale locale
- * @return zip source file (auto delete when jvm shutdown)
- * @throws CoserBusinessException
- */
- public File getSourceZip(String zone, Locale locale) throws CoserBusinessException {
-
- File result = null;
-
- // parcours des resultats disponibles
- File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
- File[] projectFiles = projectsDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
-
- // selection iteration
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
-
- // result iteration
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // extraction des especes pour le résultat demandé
- if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
-
- // load project (with data to get original file names)
- Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
-
- // load selection data (to do data export rsufi)
- Selection selection = project.getSelections().get(selectionFile.getName());
-
- // be sure that data are available for this project
- // or it will fail
- projectService.loadSelectionData(projectsDirectory, project, selection);
-
- result = generateSourceZip(project, selection, resultFile, rsufiResult, locale);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return result;
- }
-
- /**
- * Generate zip for selection.
- *
- * Be sure that data are available for this project.
- *
- * @param project project
- * @param selection selection with loaded data
- * @param resultDirectory rsufi result directory
- * @param rSufiResult rsufi result
- * @param locale generated pdf locale
- * @return generated zip file (auto delete when jvm shutdown)
- * @throws CoserBusinessException
- */
- protected File generateSourceZip(Project project, Selection selection, File resultDirectory,
- RSufiResult rSufiResult, Locale locale) throws CoserBusinessException {
-
- if (!rSufiResult.isDataAllowed()) {
- throw new CoserBusinessException("Can't download source for non allowed result");
- }
-
- File resultZip = null;
-
- try {
- File tempDir = FileUtil.createTempDirectory("coser-source-", "-tmp");
-
- // il ne faut pas les fichiers de selection, mais leurs
- // export rsufi (sans les lignes, et les quotes)
- File archiveDir = projectService.extractRSUfiData(project, selection, tempDir, true);
-
- // add decharge file
- String filename = null;
- 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";
- }
- File dechargePDF = new File(archiveDir, filename);
- generateDechargePDF(dechargePDF, resultDirectory, rSufiResult, locale);
-
- // ajout du reftax dans le zip
- File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
- File projectDirectory = new File(projectsDirectory, project.getName());
- File reftaxFile = new File(projectDirectory, CoserConstants.Category.REFTAX_SPECIES.getStorageFileName());
- FileUtils.copyFileToDirectory(reftaxFile, archiveDir);
-
- // make zip
- resultZip = File.createTempFile("coser-source-", ".zip");
- resultZip.deleteOnExit();
- ZipUtil.compress(resultZip, archiveDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- } catch (IOException ex) {
- throw new CoserBusinessException("Can't create zip file", ex);
- }
-
- return resultZip;
- }
-
- /**
- * Genere le PDF dynamique de decharge à partir du template freemarker.
- *
- * @param disclamerPdf pdf file to generate
- * @param resultDirectory rsufi result directory
- * @param rSufiResult rsufi result
- * @param locale generated pdf locale
- * @return le fichier généré
- * @throws CoserBusinessException
- */
- protected File generateDechargePDF(File disclamerPdf, File resultDirectory, RSufiResult rSufiResult, Locale locale) throws CoserBusinessException {
-
- File result = null;
-
- 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 CoserBusinessException("Can't generate decharge file", ex);
- } catch (TemplateException ex) {
- throw new CoserBusinessException("Can't generate decharge file", ex);
- } catch (DocumentException ex) {
- throw new CoserBusinessException("Can't generate decharge file", ex);
- } finally {
- IOUtils.closeQuietly(os);
- }
-
- return result;
- }
-
- /**
- * Genere le fichier PDF d'information sur les espèces incluses dans les
- * calculs des indicateurs de communautés, à jointe à chaque téléchargement.
- *
- * @param project project
- * @param selection selection
- * @param resultDirectory result directory
- * @param rsufiResult rsufi result
- * @param indicator indicator
- * @param locale locale
- * @return generated pdf file
- * @throws CoserBusinessException
- */
- protected File generateMetaFilePDF(Project project, Selection selection, File resultDirectory,
- RSufiResult rsufiResult, String indicator, Locale locale) throws CoserBusinessException {
-
- 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>>();
-
- IndicatorMap indicatorsMap = getIndicatorsMap();
-
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- DataStorage dataStorage = commonService.loadCSVFile(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 = indicatorsMap.getIndicatorValue(indicatorCode, locale.getLanguage());
-// String indicatorName = 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 CoserBusinessException("Can't generate meta info file", ex);
- } catch (TemplateException ex) {
- throw new CoserBusinessException("Can't generate meta info file", ex);
- } catch (DocumentException ex) {
- throw new CoserBusinessException("Can't generate meta info file", ex);
- } finally {
- IOUtils.closeQuietly(os);
- }
-
- return result;
- }
-
- /**
- * Recupere dans le repertoire des projets d'indicateur les resultats
- * disponible par zone (il ne peut y en avoir qu'un par zone).
- *
- * @return une map avec par zone, son resultat associé (ProjectName/SelectionName)
- * @throws CoserBusinessException
- */
- public Map<String, String> getIndicatorsResultsPerZone() throws CoserBusinessException {
- return getResultsPerZone(config.getWebIndicatorsProjectsDirectory());
- }
-
- /**
- * Recupere dans le repertoire des projets d'indicateur les resultats
- * disponible par zone (il ne peut y en avoir qu'un par zone).
- *
- * @return une map avec par zone, son resultat associé (ProjectName/SelectionName)
- * @throws CoserBusinessException
- */
- public Map<String, String> getMapsResultsPerZone() throws CoserBusinessException {
- return getResultsPerZone(config.getWebMapsProjectsDirectory());
- }
-
- /**
- * Recupere dans le repertoire des projets d'indicateur les resultats
- * disponible par zone (il ne peut y en avoir qu'un par zone).
- *
- * @param scanDirectory le repertoire a scanner
- * @return une map avec par zone, son resultat associé (ProjectName/SelectionName/RSUfiName)
- * @throws CoserBusinessException
- */
- protected Map<String, String> getResultsPerZone(File scanDirectory) throws CoserBusinessException {
-
- Map<String, String> resultIds = new HashMap<String, String>();
- File[] projectFiles = scanDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
-
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
-
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
- String resultResultId = rsufiResult.getZone();
- String name = projectFile.getName() + "/" + selectionFile.getName()
- + "/" + resultFile.getName();
- resultIds.put(resultResultId, name);
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return resultIds;
- }
-
- /**
- * Supprime des résultats par leur identifiant de zone de ratachement (car
- * un seul resultat par zone).
- *
- * Utilisé par l'interface d'admin.
- * @param deleteZoneId
- * @throws CoserBusinessException
- */
- public void deleteIndicatorsResult(List<String> deleteZoneId) throws CoserBusinessException {
- cleanCurrentProjectDirectory(config.getWebIndicatorsProjectsDirectory(), deleteZoneId);
- }
-
- /**
- * Supprime des résultats par leur identifiant de zone de ratachement (car
- * un seul resultat par zone).
- *
- * Utilisé par l'interface d'admin.
- * @param deleteZoneId
- * @throws CoserBusinessException
- */
- public void deleteMapsResult(List<String> deleteZoneId) throws CoserBusinessException {
- cleanCurrentProjectDirectory(config.getWebMapsProjectsDirectory(), deleteZoneId);
- }
-
-// /**
-// * Extrait de toutes les données les informations demandées restreintes
-// * sur certaines zone, certaines espèces et certains indicateurs.
-// *
-// * Ajout en plus dans le zip les cartes, les sources... suivant les
-// * types selectionnés.
-// *
-// * @param zones zones
-// * @param types types
-// * @param species species
-// * @param comIndicators indicators
-// * @param popIndicators indicators
-// * @return le zip
-// * @since 1.4
-// */
-// public File extractData(List<String> zones, List<DataType> types, List<String> species,
-// List<String> comIndicators, List<String> popIndicators, Locale locale) throws CoserBusinessException {
-//
-// File resultZip = null;
-// File tempDir = null;
-// try {
-// tempDir = FileUtil.createTempDirectory("coser-extract-", "-tmp");
-//
-// File subDir = new File(tempDir, "Indicateurs_Ifremer");
-// subDir.mkdirs();
-//
-// // les sources se retrouve dans le zip a cote du pdf
-// if (types.contains(DataType.SOURCE)) {
-// if (log.isDebugEnabled()) {
-// log.debug("Extracting sources");
-// }
-// File srcDir = new File(subDir, "sources");
-// extractSource(zones, srcDir);
-// }
-//
-// // les cartes doivent se retrouver dans le pdf
-// MultiKeyMap pdfMaps = null;
-// if (types.contains(DataType.MAP)) {
-// if (log.isDebugEnabled()) {
-// log.debug("Extracting maps");
-// }
-// pdfMaps = extractDataMap(zones, species);
-// }
-//
-// // les graphiques sont également dans le pdf
-// MultiKeyMap pdfCharts = null;
-// if (CollectionUtils.isNotEmpty(comIndicators) || CollectionUtils.isNotEmpty(popIndicators)) {
-// if (log.isDebugEnabled()) {
-// log.debug("Extracting charts");
-// }
-// pdfCharts = extractCharts(zones, species, comIndicators, popIndicators, locale);
-// }
-//
-// // generate pdf if necessary
-// if (MapUtils.isNotEmpty(pdfMaps) || MapUtils.isNotEmpty(pdfCharts)) {
-// generateExtractPDF(subDir, zones, pdfMaps, pdfCharts, locale);
-// }
-//
-// // fichier de décharge en pdf
-// String filename = null;
-// 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";
-// }
-// File dechargePDF = new File(subDir, filename);
-// generateDechargePDF(dechargePDF, null, null, locale);
-//
-// // make zip
-// resultZip = File.createTempFile("coser-extract-", ".zip");
-// resultZip.deleteOnExit();
-// ZipUtil.compress(resultZip, subDir);
-//
-// // clean directory
-// FileUtils.deleteDirectory(tempDir);
-// } catch (IOException ex) {
-// throw new CoserBusinessException("Can't create zip file", ex);
-// } finally {
-// // clean directory
-// FileUtils.deleteQuietly(tempDir);
-// }
-// return resultZip;
-// }
-
- /**
- * Extrait les cartes.
- *
- * @param zones zones (zoneid)
- * @param species species
- * @return map file (zone/speciesname/mapfile)
- * @throws CoserBusinessException
- * @throws IOException
- * @since 1.4
- */
- protected MultiKeyMap extractDataMap(Collection<String> zones, Collection<String> species) throws CoserBusinessException, IOException {
-
- MultiKeyMap mapForZoneAndSpecies = new MultiKeyMap();
-
- // parcours des resultats disponibles
- File projectsDirectory = config.getWebMapsProjectsDirectory();
- File[] projectFiles = projectsDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
-
- // selection iteration
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
-
- // result iteration
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // extraction des especes pour le résultat demandé
- if (rsufiResult.isMapsResult() && zones.contains(rsufiResult.getZone())) {
-
- // load project (to get user display species name)
- Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
-
- // get survey name (other condition)
- String surveyName = projectService.getProjectSurveyName(resultFile, rsufiResult);
-
- File mapsDirectory = new File(resultFile, CoserConstants.STORAGE_MAPS_DIRECTORY);
- for (String aSpecies : species) {
- String mapName = surveyName + "_" + aSpecies.toUpperCase() + ".png";
- File mapFile = new File(mapsDirectory, mapName);
- if (mapFile.isFile()) {
- String speciesName = project.getDisplaySpeciesText(aSpecies);
- mapForZoneAndSpecies.put(rsufiResult.getZone(), speciesName, mapFile);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return mapForZoneAndSpecies;
- }
-
- /**
- * Genere un fichier zip des sources d'un projet.
- *
- * Contient:
- * <ul>
- * <li>les 4 fichiers apres sélection
- * </ul>
- *
- * @param zones zone (zoneid-surveyname)
- * @return zip source file (auto delete when jvm shutdown)
- * @throws CoserBusinessException
- * @since 1.4
- */
- protected File extractSource(Collection<String> zones, File directory) throws CoserBusinessException {
-
- File result = null;
-
- // parcours des resultats disponibles
- File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
- File[] projectFiles = projectsDirectory.listFiles();
- if (projectFiles != null) {
- for (File projectFile : projectFiles) {
- if (projectFile.isDirectory()) {
- File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
- File[] selectionFiles = selectionsDirectory.listFiles();
-
- // selection iteration
- if (selectionFiles != null) {
- for (File selectionFile : selectionFiles) {
- if (selectionFile.isDirectory()) {
- File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
- File[] resultFiles = resultsDirectory.listFiles();
-
- // result iteration
- if (resultFiles != null) {
- for (File resultFile : resultFiles) {
- if (resultFile.isDirectory()) {
- RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-
- // extraction des especes pour le résultat demandé
- if (rsufiResult.isDataAllowed() && zones.contains(rsufiResult.getZone())) {
-
- // load project (with data to get original file names)
- Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
-
- // load selection data (to do data export rsufi)
- Selection selection = project.getSelections().get(selectionFile.getName());
-
- // be sure that data are available for this project
- // or it will fail
- projectService.loadSelectionData(projectsDirectory, project, selection);
-
- // il ne faut pas les fichiers de selection, mais leurs
- // export rsufi (sans les lignes, et les quotes)
- File zoneDirectory = new File(directory, rsufiResult.getZone());
- zoneDirectory.mkdirs();
- projectService.extractRSUfiData(project, selection, zoneDirectory, true);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return result;
- }
-
-// /**
-// * Retourne les indicateurs calculés avec leurs traductions scientifique
-// * pour la zone et l'especes souhaitées.
-// *
-// * @param zones zones
-// * @param species especes (if {@code null} look for com indicators
-// * @param comIndicators comIndicators
-// * @param popIndicators popIndicators
-// * @param locale locale
-// * @return la liste des indicateurs (zone, speciesname, [graphfile, graphdata])
-// * @throws CoserBusinessException
-// */
-// protected MultiKeyMap extractCharts(Collection<String> zones, Collection<String> species,
-// Collection<String> comIndicators, Collection<String> popIndicators, Locale locale) throws CoserBusinessException {
-//
-// MultiKeyMap chartFileAndDatas = new MultiKeyMap();
-//
-// // parcours des resultats disponibles
-// File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
-// File[] projectFiles = projectsDirectory.listFiles();
-// if (projectFiles != null) {
-// for (File projectFile : projectFiles) {
-// if (projectFile.isDirectory()) {
-// File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
-// File[] selectionFiles = selectionsDirectory.listFiles();
-//
-// // selection iteration
-// if (selectionFiles != null) {
-// for (File selectionFile : selectionFiles) {
-// if (selectionFile.isDirectory()) {
-// File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
-// File[] resultFiles = resultsDirectory.listFiles();
-//
-// // result iteration
-// if (resultFiles != null) {
-// for (File resultFile : resultFiles) {
-// if (resultFile.isDirectory()) {
-// RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
-//
-// // extraction des especes pour le résultat demandé
-// if (zones.contains(rsufiResult.getZone())) {
-//
-// if (log.isDebugEnabled()) {
-// log.debug("Extracting charts for result " + resultFile);
-// }
-//
-// // load project (without data to get reftax data)
-// Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
-// String zone = rsufiResult.getZone();
-//// String zoneDisplayName = getZoneFullName(zone);
-// String zoneDisplayName = getZonesMap().getZoneFullName(zone);
-//
-// // le fichier contenant le code type espece (utile
-// // pour les traductions des list d'indicateur)
-// File codeTypeEspecesFile = new File(projectFile, CoserConstants.Category.TYPE_ESPECES.getStorageFileName());
-//
-// if (CollectionUtils.isNotEmpty(comIndicators)) {
-// Map<String, Object[]> chartFileAndDataCom = publicationService.getRsufiResultComCharts(project,
-// resultFile, rsufiResult, codeTypeEspecesFile, comIndicators,
-// zoneDisplayName, getIndicatorsMap(), locale, 650, 430);
-// // put in multimap as zone,speciesname, data
-// for (Entry<String, Object[]> entry : chartFileAndDataCom.entrySet()) {
-// chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
-// }
-// }
-//
-// if (CollectionUtils.isNotEmpty(popIndicators)) {
-// Map<String, Object[]> chartFileAndDataPop = publicationService.getRsufiResultPopCharts(project,
-// resultFile, rsufiResult, species, popIndicators,
-// zoneDisplayName, getIndicatorsMap(), locale, 650, 430);
-// // put in multimap as zone,speciesname, data
-// for (Entry<String, Object[]> entry : chartFileAndDataPop.entrySet()) {
-// chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
-// }
-// }
-// }
-// }
-// }
-// }
-// }
-// }
-// }
-// }
-// }
-// }
-//
-// return chartFileAndDatas;
-// }
-
- /**
- * 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})
- * @throws CoserBusinessException
- */
- protected void generateExtractPDF(File directory, List<String> zones,
- MultiKeyMap pdfMaps, MultiKeyMap pdfCharts, Locale locale) throws CoserBusinessException {
-
- 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>" + l(locale, "coser.business.extract.extracttitle")+ "</title>");
- htmlContent.append("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />");
- htmlContent.append("</head><body>");
-
- if (pdfMaps != null) {
- for (Entry<MultiKey, File> mapEntry : (Set<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 = getZoneFullName(zoneId);
- String zoneName = getZonesMap().getZoneFullName(zoneId);
- htmlContent.append("<div style='page-break-after: always'>");
- htmlContent.append("<p>" + zoneName + " - " + speciesName + "</p>");
- htmlContent.append("<img src='file://" + file.getAbsolutePath() + "' />");
- htmlContent.append("</div>");
- }
- }
- }
-
- if (pdfCharts != null) {
- for (Entry<MultiKey, Object[]> chartFileAndData : (Set<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://" + chartFile.getAbsolutePath() + "' />");
- htmlContent.append("<br />");
- htmlContent.append(l(locale, "coser.business.extract.extractdata") + " :");
- 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 = getZoneFullName(zone);
- String zoneDisplay = getZonesMap().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 CoserBusinessException("Can't generate log pdf", ex);
- } catch (DocumentException ex) {
- throw new CoserBusinessException("Can't generate log pdf", ex);
- } finally {
- IOUtils.closeQuietly(os);
-
- // delete file collection
- for (File file : toDelete) {
- file.delete();
- }
- }
- }
- }
-}
1
0
07 Mar '14
Author: tchemit
Date: 2014-03-08 00:12:11 +0100 (Sat, 08 Mar 2014)
New Revision: 1134
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1134
Log:
move to mavenpom 5.0.1 + remove all svn keyworks from license headers
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserClassLoader.java
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserTechnicalException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/AbstractDataContainer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/AbstractEntity.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Control.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Selection.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/CategoryLineCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/Command.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/DeleteLineCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/MergeSpeciesCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/ModifyFieldCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/ControlError.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/ControlErrorGroup.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/DiffCatchLengthControlError.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesControlError.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesLengthControlError.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/data/AbstractDataEntity.java
trunk/coser-business/src/main/java/fr/ifremer/coser/data/Catch.java
trunk/coser-business/src/main/java/fr/ifremer/coser/data/Haul.java
trunk/coser-business/src/main/java/fr/ifremer/coser/data/Length.java
trunk/coser-business/src/main/java/fr/ifremer/coser/data/Strata.java
trunk/coser-business/src/main/java/fr/ifremer/coser/data/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/DuplicatedResultException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultFoundException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultRepositoryFoundException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultRepositoryInitializationException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/package-info.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/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/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/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.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/CoserRequestFacadeAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestSpeciesAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommandService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorage.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/MemoryDataStorage.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/Coordinate.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/DataType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/InputStreamKnownSizeBody.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressMonitor.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressReader.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/AbstractFieldValidator.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserCheckDoubleValidator.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserDoubleValidator.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserExpressionValidator.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/RegexFieldValidator.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/package-info.java
trunk/coser-business/src/main/resources/ftl/decharge_en.ftl
trunk/coser-business/src/main/resources/ftl/decharge_fr.ftl
trunk/coser-business/src/main/resources/ftl/map.ftl
trunk/coser-business/src/main/resources/ftl/metainfo_en.ftl
trunk/coser-business/src/main/resources/ftl/metainfo_fr.ftl
trunk/coser-business/src/main/resources/validators.xml
trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Catch-error-validation.xml
trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-error-validation.xml
trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-fatal-validation.xml
trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-warning-validation.xml
trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Length-error-validation.xml
trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Strata-error-validation.xml
trunk/coser-business/src/test/java/fr/ifremer/coser/CoserUtilsTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/bean/ZoneMapTest.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/CommandServiceTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/CommonServiceTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/ControlServiceTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/PublicationServiceTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/storage/MemoryDataStorageTest.java
trunk/coser-business/src/test/resources/log4j.properties
trunk/coser-business/src/test/resources/projects/project2/control/control.properties
trunk/coser-business/src/test/resources/projects/project2/project.properties
trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/control.properties
trunk/coser-business/src/test/resources/projects/projectctrvalidated/project.properties
trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties
trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties
trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/control.properties
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/project.properties
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/result.properties
trunk/coser-ui/src/main/assembly/bin.xml
trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserException.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserExceptionHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/ContainerRedoMenu.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/ContainerUndoMenu.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrame.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/HomeView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/SelectionsListMenu.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/CommonHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/LengthStructureMatrixFilter.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesTableCellRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlCategoryListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlCategoryListRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlDataTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlDuplicatedLineTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlErrorTreeRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlFindReplaceDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlGraphFrame.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/GlobalControlErrorModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/SpecyComboModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/Freize.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/FreizeHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/FreizeModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/CoserMap.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/HaulLocationHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ConfigurationHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ConfigurationView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/NoCopiedLayerUI.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/OptionHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectMapsListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectNamesListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SamplingEffortRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionFilesView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesFusionDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesTypesRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/FileListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/MaturitySpeciesListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/OccurrenceDensitySpeciesListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SizeAllYearSpeciesListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SpeciesListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SpeciesTypesListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/StrataListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/YearListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/CommandListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/CommandListRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionByProjectTreeModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListSelectionModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserProgressBar.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/ErrorHelper.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/LookAndFeelViewMenuItem.java
trunk/coser-ui/src/main/resources/coser.properties
trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/Project-error-validation.xml
trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/RSufiResult-error-validation.xml
trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/Selection-error-validation.xml
trunk/coser-ui/src/main/resources/log4j.properties
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebException.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/FacadeAction.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/CommonFacade.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/FacadeAction.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/FacadeAction.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/FacadeAction.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/SourceQualityAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java
trunk/coser-web/src/main/resources/coserweb.properties
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_en.properties
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties
trunk/coser-web/src/main/resources/log4j.properties
trunk/coser-web/src/main/resources/struts.xml
trunk/coser-web/src/main/webapp/WEB-INF/content/admin/index.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/admin/list-projects.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/admin/perform-login-input.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/com/facade.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/com/indicator.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/com/zone.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/documents.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/index.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/map/facade.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/map/map.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/map/species.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/map/zone.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/pop/facade.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/pop/indicator.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/pop/species.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/pop/zone.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/quality.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-input.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-success.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-wait.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/source/facade.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-data.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-quality.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/source/source.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/source/zone.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/survey.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/upload-result-success.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/upload-result.jsp
trunk/coser-web/src/main/webapp/WEB-INF/decorators.xml
trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp
trunk/coser-web/src/main/webapp/WEB-INF/decorators/sublayout.jsp
trunk/coser-web/src/main/webapp/WEB-INF/web.xml
trunk/coser-web/src/main/webapp/js/coser.js
trunk/coser-web/src/main/webapp/styles/coser.css
trunk/pom.xml
trunk/src/site/en/rst/devel/textupdate.rst
trunk/src/site/en/rst/download.rst
trunk/src/site/en/rst/index.rst
trunk/src/site/en/rst/user/configuration.rst
trunk/src/site/en/rst/user/controls.rst
trunk/src/site/en/rst/user/dataformat.rst
trunk/src/site/en/rst/user/faq.rst
trunk/src/site/en/rst/user/guide_control.rst
trunk/src/site/en/rst/user/guide_listcontrols.rst
trunk/src/site/en/rst/user/guide_project.rst
trunk/src/site/en/rst/user/guide_results.rst
trunk/src/site/en/rst/user/guide_selection.rst
trunk/src/site/rst/devel/directory.rst
trunk/src/site/rst/devel/struts.rst
trunk/src/site/rst/devel/textupdate.rst
trunk/src/site/rst/download.rst
trunk/src/site/rst/index.rst
trunk/src/site/rst/user/configuration.rst
trunk/src/site/rst/user/controls.rst
trunk/src/site/rst/user/dataformat.rst
trunk/src/site/rst/user/faq.rst
trunk/src/site/rst/user/guide_control.rst
trunk/src/site/rst/user/guide_listcontrols.rst
trunk/src/site/rst/user/guide_project.rst
trunk/src/site/rst/user/guide_results.rst
trunk/src/site/rst/user/guide_selection.rst
trunk/src/site/site_en.xml
trunk/src/site/site_fr.xml
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessException.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessException.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessException.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: Business
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserClassLoader.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserClassLoader.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserClassLoader.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: Business
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserTechnicalException.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserTechnicalException.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserTechnicalException.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/AbstractDataContainer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/AbstractDataContainer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/AbstractDataContainer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/AbstractEntity.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/AbstractEntity.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/AbstractEntity.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Control.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Control.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Control.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2011 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Selection.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Selection.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Selection.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/command/CategoryLineCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/command/CategoryLineCommand.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/command/CategoryLineCommand.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/command/Command.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/command/Command.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/command/Command.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/command/DeleteLineCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/command/DeleteLineCommand.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/command/DeleteLineCommand.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/command/MergeSpeciesCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/command/MergeSpeciesCommand.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/command/MergeSpeciesCommand.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/command/ModifyFieldCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/command/ModifyFieldCommand.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/command/ModifyFieldCommand.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/command/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/command/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/command/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/control/ControlError.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/control/ControlError.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/control/ControlError.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/control/ControlErrorGroup.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/control/ControlErrorGroup.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/control/ControlErrorGroup.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/control/DiffCatchLengthControlError.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/control/DiffCatchLengthControlError.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/control/DiffCatchLengthControlError.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesControlError.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesControlError.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesControlError.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesLengthControlError.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesLengthControlError.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesLengthControlError.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/control/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/control/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/control/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/data/AbstractDataEntity.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/data/AbstractDataEntity.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/data/AbstractDataEntity.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/data/Catch.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/data/Catch.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/data/Catch.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/data/Haul.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/data/Haul.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/data/Haul.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/data/Length.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/data/Length.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/data/Length.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/data/Strata.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/data/Strata.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/data/Strata.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/data/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/data/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/data/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResult.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResult.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: 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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/DuplicatedResultException.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/DuplicatedResultException.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/DuplicatedResultException.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: 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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultFoundException.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultFoundException.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultFoundException.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultRepositoryFoundException.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultRepositoryFoundException.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultRepositoryFoundException.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: 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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultRepositoryInitializationException.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultRepositoryInitializationException.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultRepositoryInitializationException.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -8,8 +8,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -8,8 +8,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -8,8 +8,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -8,8 +8,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: 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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestFacadeAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestFacadeAware.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestFacadeAware.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestSpeciesAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestSpeciesAware.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestSpeciesAware.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -8,8 +8,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommandService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommandService.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommandService.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: Business
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2013 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2013 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorage.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorage.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorage.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/MemoryDataStorage.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/storage/MemoryDataStorage.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/storage/MemoryDataStorage.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/storage/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/storage/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/util/Coordinate.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/Coordinate.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/Coordinate.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/util/DataType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/DataType.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/DataType.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,8 +1,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/util/InputStreamKnownSizeBody.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/InputStreamKnownSizeBody.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/InputStreamKnownSizeBody.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,8 +1,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2013 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressMonitor.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressMonitor.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressMonitor.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressReader.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressReader.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressReader.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/util/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/util/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/AbstractFieldValidator.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/validators/AbstractFieldValidator.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/validators/AbstractFieldValidator.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserCheckDoubleValidator.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserCheckDoubleValidator.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserCheckDoubleValidator.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserDoubleValidator.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserDoubleValidator.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserDoubleValidator.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserExpressionValidator.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserExpressionValidator.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserExpressionValidator.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: Business
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/RegexFieldValidator.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/validators/RegexFieldValidator.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/validators/RegexFieldValidator.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: Business
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/validators/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/validators/package-info.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/main/resources/ftl/decharge_en.ftl
===================================================================
--- trunk/coser-business/src/main/resources/ftl/decharge_en.ftl 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/resources/ftl/decharge_en.ftl 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<#--
#%L
Coser :: Business
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -112,4 +109,4 @@
<p><b>For North Sea data (IBTS data series).</b>
All users must respect the conditions of use specified by ICES (http://datras.ices.dk)</p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-business/src/main/resources/ftl/decharge_fr.ftl
===================================================================
--- trunk/coser-business/src/main/resources/ftl/decharge_fr.ftl 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/resources/ftl/decharge_fr.ftl 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<#--
#%L
Coser :: Business
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -130,4 +127,4 @@
Les utilisateurs doivent se conformer aux modalités d'usage définies par le
CIEM (http://datras.ices.dk)</p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-business/src/main/resources/ftl/map.ftl
===================================================================
--- trunk/coser-business/src/main/resources/ftl/map.ftl 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/resources/ftl/map.ftl 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<#--
#%L
Coser :: Business
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -38,4 +35,4 @@
<img src="file://${mapFile}" />
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-business/src/main/resources/ftl/metainfo_en.ftl
===================================================================
--- trunk/coser-business/src/main/resources/ftl/metainfo_en.ftl 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/resources/ftl/metainfo_en.ftl 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<#--
#%L
Coser :: Business
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -73,4 +70,4 @@
</#list>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-business/src/main/resources/ftl/metainfo_fr.ftl
===================================================================
--- trunk/coser-business/src/main/resources/ftl/metainfo_fr.ftl 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/resources/ftl/metainfo_fr.ftl 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<#--
#%L
Coser :: Business
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -75,4 +72,4 @@
</#list>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Catch-error-validation.xml
===================================================================
--- trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Catch-error-validation.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Catch-error-validation.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Business
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -66,4 +63,4 @@
<param name="expression"><![CDATA[ (weight > 0 && number > 0) || weight == 0]]></param>
<message>coser.business.control.error.noCatchNumberWithWeight</message>
</validator>
-</validators>
\ No newline at end of file
+</validators>
Modified: trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-error-validation.xml
===================================================================
--- trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-error-validation.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-error-validation.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Business
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -88,4 +85,4 @@
<message>depth attribute is not a valid double</message>
</field-validator>
</field>
-</validators>
\ No newline at end of file
+</validators>
Modified: trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-fatal-validation.xml
===================================================================
--- trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-fatal-validation.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-fatal-validation.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Business
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -31,4 +28,4 @@
<message>sweptSurface must contain at least 3 decimals</message>
</field-validator>
</field>
-</validators>
\ No newline at end of file
+</validators>
Modified: trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-warning-validation.xml
===================================================================
--- trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-warning-validation.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-warning-validation.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Business
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -37,4 +34,4 @@
<message>long must contain at least 4 decimals</message>
</field-validator>
</field>
-</validators>
\ No newline at end of file
+</validators>
Modified: trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Length-error-validation.xml
===================================================================
--- trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Length-error-validation.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Length-error-validation.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Business
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -98,4 +95,4 @@
<param name="expression"><![CDATA[ (weight > 0 && number > 0) || weight == 0]]></param>
<message>coser.business.control.error.noCatchNumberWithWeight</message>
</validator>
-</validators>
\ No newline at end of file
+</validators>
Modified: trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Strata-error-validation.xml
===================================================================
--- trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Strata-error-validation.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Strata-error-validation.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Business
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -54,4 +51,4 @@
<message>surface attribute must be positive</message>
</field-validator>
</field>
-</validators>
\ No newline at end of file
+</validators>
Modified: trunk/coser-business/src/main/resources/validators.xml
===================================================================
--- trunk/coser-business/src/main/resources/validators.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/main/resources/validators.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -2,9 +2,6 @@
<!--
#%L
Coser :: Business
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/CoserUtilsTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/CoserUtilsTest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/CoserUtilsTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin
* %%
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/bean/ZoneMapTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/bean/ZoneMapTest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/bean/ZoneMapTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin
* %%
@@ -27,8 +25,6 @@
import fr.ifremer.coser.result.request.CommunityIndicatorRequest;
import fr.ifremer.coser.result.request.MapRequest;
import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider;
import fr.ifremer.coser.services.CoserTestAbstract;
import org.junit.Assert;
import org.junit.Assume;
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Business
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin
* %%
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/CommandServiceTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/CommandServiceTest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CommandServiceTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/CommonServiceTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/CommonServiceTest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CommonServiceTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/ControlServiceTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/ControlServiceTest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ControlServiceTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/PublicationServiceTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/PublicationServiceTest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/PublicationServiceTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2011 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/storage/MemoryDataStorageTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/storage/MemoryDataStorageTest.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/storage/MemoryDataStorageTest.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: Business
* %%
* Copyright (C) 2011 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-business/src/test/resources/log4j.properties
===================================================================
--- trunk/coser-business/src/test/resources/log4j.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/resources/log4j.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
-#
-#
-# $Id$
-# $HeadURL$
+# Coser :: Business
# %%
# Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
# %%
Modified: trunk/coser-business/src/test/resources/projects/project2/control/control.properties
===================================================================
--- trunk/coser-business/src/test/resources/projects/project2/control/control.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/resources/projects/project2/control/control.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Business
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 Ifremer, Codelutin
# %%
Modified: trunk/coser-business/src/test/resources/projects/project2/project.properties
===================================================================
--- trunk/coser-business/src/test/resources/projects/project2/project.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/resources/projects/project2/project.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Business
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 Ifremer, Codelutin
# %%
Modified: trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/control.properties
===================================================================
--- trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/control.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/control.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Business
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 Ifremer, Codelutin
# %%
Modified: trunk/coser-business/src/test/resources/projects/projectctrvalidated/project.properties
===================================================================
--- trunk/coser-business/src/test/resources/projects/projectctrvalidated/project.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/resources/projects/projectctrvalidated/project.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Business
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 Ifremer, Codelutin
# %%
Modified: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties
===================================================================
--- trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Business
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
# %%
@@ -26,4 +23,4 @@
result.zone=myzone
result.estPopIndName=EstPopInd_test.txt
result.estComIndName=EstComInd_test.txt
-result.publiableResult=true
\ No newline at end of file
+result.publiableResult=true
Modified: trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,8 +1,6 @@
###
# #%L
# Coser :: Business
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 - 2014 Ifremer, Codelutin
# %%
Modified: trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,8 +1,6 @@
###
# #%L
# Coser :: Business
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 - 2014 Ifremer, Codelutin
# %%
Modified: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/control.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/control.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/control.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Business
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 Ifremer, Codelutin
# %%
Modified: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/project.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/project.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/project.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Business
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 Ifremer, Codelutin
# %%
Modified: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Business
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
# %%
@@ -26,4 +23,4 @@
result.zone=myzone
result.estPopIndName=EstPopInd_test.txt
result.estComIndName=EstComInd_test.txt
-result.publiableResult=true
\ No newline at end of file
+result.publiableResult=true
Modified: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/result.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/result.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/result.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Business
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
# %%
@@ -26,4 +23,4 @@
result.zone=myzone
result.estPopIndName=EstPopInd_test.txt
result.estComIndName=EstComInd_test.txt
-result.publiableResult=true
\ No newline at end of file
+result.publiableResult=true
Modified: trunk/coser-ui/src/main/assembly/bin.xml
===================================================================
--- trunk/coser-ui/src/main/assembly/bin.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/assembly/bin.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -2,9 +2,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
%%
@@ -78,4 +75,4 @@
</includes>
</fileSet>
</fileSets>
-</assembly>
\ No newline at end of file
+</assembly>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserException.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserException.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserException.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserExceptionHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserExceptionHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserExceptionHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2012 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/ContainerRedoMenu.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/ContainerRedoMenu.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/ContainerRedoMenu.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/ContainerUndoMenu.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/ContainerUndoMenu.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/ContainerUndoMenu.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrame.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrame.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrame.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/HomeView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/HomeView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/HomeView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/SelectionsListMenu.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/SelectionsListMenu.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/SelectionsListMenu.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/CommonHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/CommonHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/CommonHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/LengthStructureMatrixFilter.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/LengthStructureMatrixFilter.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/LengthStructureMatrixFilter.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesTableCellRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesTableCellRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesTableCellRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlCategoryListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlCategoryListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlCategoryListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlCategoryListRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlCategoryListRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlCategoryListRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlDataTableModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlDataTableModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlDataTableModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlDuplicatedLineTableModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlDuplicatedLineTableModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlDuplicatedLineTableModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlErrorTreeRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlErrorTreeRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlErrorTreeRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlFindReplaceDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlFindReplaceDialog.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlFindReplaceDialog.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlGraphFrame.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlGraphFrame.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlGraphFrame.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlTableModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlTableModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlTableModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/GlobalControlErrorModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/GlobalControlErrorModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/GlobalControlErrorModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/SpecyComboModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/SpecyComboModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/SpecyComboModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/Freize.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/Freize.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/Freize.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/FreizeHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/FreizeHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/FreizeHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/FreizeModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/FreizeModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/FreizeModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,8 +1,6 @@
/*
* #%L
* Coser :: UI
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/CoserMap.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/CoserMap.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/CoserMap.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/HaulLocationHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/HaulLocationHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/HaulLocationHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2011 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ConfigurationHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ConfigurationHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ConfigurationHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2011 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ConfigurationView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ConfigurationView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ConfigurationView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2011 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -203,4 +200,4 @@
</cell>
</row>
</Table>
-</JDialog>
\ No newline at end of file
+</JDialog>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/NoCopiedLayerUI.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/NoCopiedLayerUI.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/NoCopiedLayerUI.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/OptionHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/OptionHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/OptionHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorDialog.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorDialog.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectMapsListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectMapsListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectMapsListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectNamesListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectNamesListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectNamesListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -84,4 +81,4 @@
</cell>
</row>
</Table>
-</JDialog>
\ No newline at end of file
+</JDialog>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -169,4 +166,4 @@
</cell>
</row>
</Table>
-</JDialog>
\ No newline at end of file
+</JDialog>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2011 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -118,4 +115,4 @@
</cell>
</row>
</Table>
-</JDialog>
\ No newline at end of file
+</JDialog>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SamplingEffortRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SamplingEffortRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SamplingEffortRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionFilesView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionFilesView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionFilesView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesFusionDialog.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesFusionDialog.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesFusionDialog.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
@@ -34,7 +31,6 @@
import org.jdesktop.swingx.renderer.DefaultListRenderer;
-import fr.ifremer.coser.bean.Project;
import fr.ifremer.coser.ui.selection.model.OccurrenceDensitySpeciesListModel;
/**
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesTypesRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesTypesRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesTypesRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/FileListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/FileListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/FileListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
- *
- *
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/MaturitySpeciesListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/MaturitySpeciesListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/MaturitySpeciesListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/OccurrenceDensitySpeciesListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/OccurrenceDensitySpeciesListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/OccurrenceDensitySpeciesListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SizeAllYearSpeciesListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SizeAllYearSpeciesListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SizeAllYearSpeciesListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SpeciesListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SpeciesListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SpeciesListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SpeciesTypesListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SpeciesTypesListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SpeciesTypesListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/StrataListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/StrataListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/StrataListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/YearListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/YearListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/YearListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/CommandListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/CommandListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/CommandListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: UI
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/CommandListRenderer.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/CommandListRenderer.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/CommandListRenderer.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionByProjectTreeModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionByProjectTreeModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionByProjectTreeModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayHandler.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayHandler.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayHandler.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2011 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayView.jaxx
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayView.jaxx 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayView.jaxx 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -309,4 +306,4 @@
</cell>
</row>
</Table>
-</JDialog>
\ No newline at end of file
+</JDialog>
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListSelectionModel.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListSelectionModel.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListSelectionModel.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserProgressBar.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserProgressBar.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserProgressBar.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/ErrorHelper.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/ErrorHelper.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/ErrorHelper.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/LookAndFeelViewMenuItem.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/LookAndFeelViewMenuItem.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/LookAndFeelViewMenuItem.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: UI
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-ui/src/main/resources/coser.properties
===================================================================
--- trunk/coser-ui/src/main/resources/coser.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/resources/coser.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: UI
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
# %%
Modified: trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/Project-error-validation.xml
===================================================================
--- trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/Project-error-validation.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/Project-error-validation.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/RSufiResult-error-validation.xml
===================================================================
--- trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/RSufiResult-error-validation.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/RSufiResult-error-validation.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/Selection-error-validation.xml
===================================================================
--- trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/Selection-error-validation.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/Selection-error-validation.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: UI
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin
%%
Modified: trunk/coser-ui/src/main/resources/log4j.properties
===================================================================
--- trunk/coser-ui/src/main/resources/log4j.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-ui/src/main/resources/log4j.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,8 +1,6 @@
###
# #%L
-#
-# $Id$
-# $HeadURL$
+# Coser :: UI
# %%
# Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
# %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Web
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebException.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebException.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebException.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -3,8 +3,6 @@
/*
* #%L
* Coser :: Web
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
* %%
@@ -23,7 +22,6 @@
package fr.ifremer.coser.web.actions;
import fr.ifremer.coser.web.CoserWebConfig;
-import fr.ifremer.coser.web.ServiceFactory;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2011 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2011 Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/FacadeAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/FacadeAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/FacadeAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/FacadeAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/FacadeAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/FacadeAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/FacadeAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/FacadeAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/FacadeAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/FacadeAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/FacadeAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/FacadeAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceQualityAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceQualityAction.java 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceQualityAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
/*
* #%L
- * $Id$
- * $HeadURL$
+ * Coser :: Web
* %%
* Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/resources/coserweb.properties
===================================================================
--- trunk/coser-web/src/main/resources/coserweb.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/resources/coserweb.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
###
# #%L
-# $Id$
-# $HeadURL$
+# Coser :: Web
# %%
# Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
# %%
Modified: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties
===================================================================
--- trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Web
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
# %%
@@ -58,22 +55,22 @@
message.common.zone=Zone
message.common.zones=Zones
message.common.datatypes=Data types
-message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
-message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
-message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c\u00F4tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
-message.documents.genparagraph4=Poissons et invert�br�s au large des c\u00F4tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
-message.documents.gentitle1=Rapports g�n�raux
+message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
+message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
+message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c\u00F4tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
+message.documents.genparagraph4=Poissons et invert�br�s au large des c\u00F4tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
+message.documents.gentitle1=Rapports g�n�raux
message.documents.activityparagraph1=Battaglia A., V. M. Trenkel & M. J. Rochet, 2006. Estimating end effects in trawl catches. ICES J. Mar. Sci. 63: 956-959.
message.documents.activityparagraph2=Lorance P., J. A. Bertrand, A. Brind''Amour, M. J. Rochet & V. Trenkel, 2009. Assessment of impacts from human activities on ecosystem components in the Bay of Biscay in the early 1990s. Aquatic living resources 22: 409-431.
-message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
+message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
message.documents.activityparagraph4=Rochet M. J. & J. Rice, 2005. Do explicit criteria help in selecting indicators for ecosystem-based fisheries management? ICES J. Mar. Sci. 62: 528-539.
message.documents.activityparagraph5=Rochet M. J. & V. Trenkel, 2003. Which community indicators can measure the impact of fishing? A review and proposals. Can. J. Fish. Aquat. Sci. 60: 86-99.
-message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
-message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
+message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
+message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
message.documents.activityparagraph8=Trenkel V. & M. J. Rochet, 2003. Performance of indicators derived from abundance estimates for detecting the impact of fishing on a fish community. Can. J. Fish. Aquat. Sci. 60: 67-85.
-message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
-message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
-message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
+message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
+message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
+message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
message.documents.title=Documents
message.index.datatypecom=Community indices by area
message.index.datatypemap=Species distribution maps by area
@@ -88,10 +85,10 @@
message.index.paragraph1=This web site has been created to provide easy access to the raw data and index estimates derived from the scientific surveys carried out by Ifremer along the French coasts.
message.index.paragraph2=All data made available have passed rigorous quality checks. However, as the reliability of results interpretations depends directly on the data used, users are cordially invited to study carefully the survey and quality check protocols.
message.index.paragraph3=Each survey is carried out using a specific sampling design. Data analyses and interpretation of each time series must therefore take into account the sampling designs. The data are presented by survey series on the web site.
-message.index.paragraph4=The species codes used in the data tables are those of the taxinomic reference file of the Syst�me d''informations halieutiques de l''Ifremer ({0}).
+message.index.paragraph4=The species codes used in the data tables are those of the taxinomic reference file of the Syst�me d''informations halieutiques de l''Ifremer ({0}).
message.index.paragraph5=The link below allows you to extract the elements of the site (graphics and data) in the form of a .zip file (containing a pdf document and data)
message.index.partnertitle=Group members
-message.index.partnerparagraph1=The results presented on this web site are the fruit of an internal Ifremer working group which has been active since 2001 with the objective of developing population and community indicators for the survey data collected since the end of the 1970s along the French coasts. The main group members are (by Ifremer location and in alphabetical order): Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz and Yves V�rin (Boulogne-sur-mer), Andr� Battaglia and Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� and Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet and Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin and Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud and Arnaud Souplet (S�te). The quality process is managed by Vincent Badts. The data-processing is supported by Olivier Berthel�.
+message.index.partnerparagraph1=The results presented on this web site are the fruit of an internal Ifremer working group which has been active since 2001 with the objective of developing population and community indicators for the survey data collected since the end of the 1970s along the French coasts. The main group members are (by Ifremer location and in alphabetical order): Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz and Yves V�rin (Boulogne-sur-mer), Andr� Battaglia and Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� and Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet and Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin and Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud and Arnaud Souplet (S�te). The quality process is managed by Vincent Badts. The data-processing is supported by Olivier Berthel�.
message.index.qualitymessage=Quality warning
message.index.qualitytitle=Quality warning
message.index.quotemessage=Ifremer {0,date,yyyy}. Population and community indices derived from scientific surveys carried out by Ifremer. {1} ({0,date,dd MMMM})
@@ -101,11 +98,11 @@
message.index.thankstitle=Acknowledgements
message.index.thanksparagraph1=All surveys presented on this web site were conducted by Ifremer and have received financial support from a variety of sources. After initially having been funded by Ifremer three of the surveys are now part of the European Data Collection Framework (DCF); this concerns IBTS, Evhoe and Medits. Two other surveys remain entirely funded by Ifremer: NourVil and CGFS (discussions to include this survey in the DCF are underway). For NourSein, the last three surveys were funded by GIP-Seine Aval. Finally, Crustaflam and NourSomme are entirely funded by EDF within a program of coastal monitoring of nuclear power plants and carried out by Ifremer. This web site has received the financial support of the French ministry for ecology, sustainable development, transport and housing (MEEDDM) (contract Ifremer-MEEDDM 2010). Pour calculating indices for the North Sea the data from all contributing nations was used; it is available in the Datras data base held by ICES (http://datras.ices.dk)
message.index.title=Home
-message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
-message.layout.oceanicdata2=the Fisheries Information System - Syst�me d''information halieutique de l''Ifremer (SIH)
+message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
+message.layout.oceanicdata2=the Fisheries Information System - Syst�me d''information halieutique de l''Ifremer (SIH)
message.layout.oceanicdatatitle=Survey data management at Ifremer
message.layout.title=Population and community indices derived from scientific surveys carried out by Ifremer.
-message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
+message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
message.map.citationtitle=Citation
message.map.downloadaspdf=Download as PDF
message.map.linkarchimer=Access atlas : {0}
@@ -137,21 +134,21 @@
message.search.extract.waitparagraph3=After downloading, close this page by returning to the home page of the site.
message.search.extract.zonetype=Zone and data types
message.source.download=Download
-message.source.paragraph1=The raw data are presented in four tables which contain the basic information by sampling unit (generally a haul) as well as the relevant information on the sampling design (strata). An additional table provides the latin names for the species codes used in the data files. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
-message.source.paragraph2=Les donn�es IBTS (donn�es fran\u00E7aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr\u00F4les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
+message.source.paragraph1=The raw data are presented in four tables which contain the basic information by sampling unit (generally a haul) as well as the relevant information on the sampling design (strata). An additional table provides the latin names for the species codes used in the data files. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
+message.source.paragraph2=Les donn�es IBTS (donn�es fran\u00E7aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr\u00F4les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
message.source.paragraph3=The web site provides access to the raw data corresponding to the population and community indices presented. For any other data please contact the administrator of the Fisheries information system of Ifremer ({0}).
message.source.paragraph4=The survey data consist of stations distributed in space following a stratified random design (which can be constant between years). The spatial resolution determines on which spatial scale population and community indices can be calculated.
message.source.paragraph5=The list of proposed spatial areas includes the original sampling areas, plus post-stratified areas suitable for the European Marine Strategie Framework Directive. These areas have been validated by an internal Ifremer working group following sensitivity analyses.
message.source.title=Raw data
-message.survey.atlantique.celtique.desc=The Evhoe suvey (Evaluation des ressources halieutiques de l''ouest europ�en) lasts one month in the fourth quarter every year since 1997. On average 75 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 150 000 km\u00B2 of the Celtic Sea.
+message.survey.atlantique.celtique.desc=The Evhoe suvey (Evaluation des ressources halieutiques de l''ouest europ�en) lasts one month in the fourth quarter every year since 1997. On average 75 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 150 000 km\u00B2 of the Celtic Sea.
message.survey.atlantique.celtique.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.celtique.plus=For more information on the Evhoe surveys
message.survey.atlantique.celtique=Celtic Sea
-message.survey.atlantique.gascogne.desc=The Evhoe survey (Evaluation des ressources halieutiques de l''ouest europ�en) lasts one month in the fourth quarter every year since 1992 (except 1993 and 1996). On average 70 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 72 500 km\u00B2 of the Bay of Biscay.
+message.survey.atlantique.gascogne.desc=The Evhoe survey (Evaluation des ressources halieutiques de l''ouest europ�en) lasts one month in the fourth quarter every year since 1992 (except 1993 and 1996). On average 70 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 72 500 km\u00B2 of the Bay of Biscay.
message.survey.atlantique.gascogne.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.gascogne.plus=For more information on the Evhoe surveys
message.survey.atlantique.gascogne=Bay of Biscay
-message.survey.atlantique.vilaine.desc=Survey in the nursery area of the Vilaine river bay (NourVil) lasted one week every year in autumn from 1980 � 2010, except 1991, 1994, 1995, 1998, 1999, 2006 and 2007. It used a 3m-beam trawl. On average 30 15-min hauls were carried out covering each about 0.0041 km\u00B2. This survey provides a representative picture of the 330 km\u00B2 of the Vilaine bay.
+message.survey.atlantique.vilaine.desc=Survey in the nursery area of the Vilaine river bay (NourVil) lasted one week every year in autumn from 1980 � 2010, except 1991, 1994, 1995, 1998, 1999, 2006 and 2007. It used a 3m-beam trawl. On average 30 15-min hauls were carried out covering each about 0.0041 km\u00B2. This survey provides a representative picture of the 330 km\u00B2 of the Vilaine bay.
message.survey.atlantique.vilaine.nourvil1=Manuel des protocoles Nourriceries Gascogne - V 1.0 (2002)
message.survey.atlantique.vilaine.plus=For more information on the Nourvil survey
message.survey.atlantique.vilaine=Vilaine river bay
@@ -200,8 +197,8 @@
message.survey.mediterranee.golfelion=Gulf of Lions
message.survey.mediterranee=Mediterranean Sea
message.survey.merdunord.sudmerdunord.desc=Every years since 1980 France contributes one month of ship time to the IBTS (International Bottom Trawl Survey) in the first quarter using a GOV trawl. On average 58 hauls are carried out. The southern North Sea is sampled by four countries (France, Belgium, Danmark and Germany) who together carry out about 200 hauls per year. Each haul lasts half an hour corresponding to a swept area of about 0.067 km\u00B2. IBTS provides a representative picture of the 678\u00A0000\u00A0km\u00B2 of the area.
-message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
-message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
+message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
+message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
message.survey.merdunord.sudmerdunord.plus=For more information on the IBTS survey
message.survey.merdunord.sudmerdunord=Southern North Sea
message.survey.merdunord=North Sea
Modified: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_en.properties
===================================================================
--- trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_en.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_en.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Web
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
# %%
@@ -58,22 +55,22 @@
message.common.zone=Zone
message.common.zones=Zones
message.common.datatypes=Data types
-message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
-message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
-message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c\u00F4tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
-message.documents.genparagraph4=Poissons et invert�br�s au large des c\u00F4tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
-message.documents.gentitle1=Rapports g�n�raux
+message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
+message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
+message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c\u00F4tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
+message.documents.genparagraph4=Poissons et invert�br�s au large des c\u00F4tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
+message.documents.gentitle1=Rapports g�n�raux
message.documents.activityparagraph1=Battaglia A., V. M. Trenkel & M. J. Rochet, 2006. Estimating end effects in trawl catches. ICES J. Mar. Sci. 63: 956-959.
message.documents.activityparagraph2=Lorance P., J. A. Bertrand, A. Brind''Amour, M. J. Rochet & V. Trenkel, 2009. Assessment of impacts from human activities on ecosystem components in the Bay of Biscay in the early 1990s. Aquatic living resources 22: 409-431.
-message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
+message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
message.documents.activityparagraph4=Rochet M. J. & J. Rice, 2005. Do explicit criteria help in selecting indicators for ecosystem-based fisheries management? ICES J. Mar. Sci. 62: 528-539.
message.documents.activityparagraph5=Rochet M. J. & V. Trenkel, 2003. Which community indicators can measure the impact of fishing? A review and proposals. Can. J. Fish. Aquat. Sci. 60: 86-99.
-message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
-message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
+message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
+message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
message.documents.activityparagraph8=Trenkel V. & M. J. Rochet, 2003. Performance of indicators derived from abundance estimates for detecting the impact of fishing on a fish community. Can. J. Fish. Aquat. Sci. 60: 67-85.
-message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
-message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
-message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
+message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
+message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
+message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
message.documents.title=Documents
message.index.datatypecom=Community indices by area
message.index.datatypemap=Species distribution maps by area
@@ -88,10 +85,10 @@
message.index.paragraph1=This web site has been created to provide easy access to the raw data and index estimates derived from the scientific surveys carried out by Ifremer along the French coasts.
message.index.paragraph2=All data made available have passed rigorous quality checks. However, as the reliability of results interpretations depends directly on the data used, users are cordially invited to study carefully the survey and quality check protocols.
message.index.paragraph3=Each survey is carried out using a specific sampling design. Data analyses and interpretation of each time series must therefore take into account the sampling designs. The data are presented by survey series on the web site.
-message.index.paragraph4=The species codes used in the data tables are those of the taxinomic reference file of the Syst�me d''informations halieutiques de l''Ifremer ({0}).
+message.index.paragraph4=The species codes used in the data tables are those of the taxinomic reference file of the Syst�me d''informations halieutiques de l''Ifremer ({0}).
message.index.paragraph5=The link below allows you to extract the elements of the site (graphics and data) in the form of a .zip file (containing a pdf document and data)
message.index.partnertitle=Group members
-message.index.partnerparagraph1=The results presented on this web site are the fruit of an internal Ifremer working group which has been active since 2001 with the objective of developing population and community indicators for the survey data collected since the end of the 1970s along the French coasts. The main group members are (by Ifremer location and in alphabetical order): Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz and Yves V�rin (Boulogne-sur-mer), Andr� Battaglia and Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� and Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet and Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin and Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud and Arnaud Souplet (S�te). The quality process is managed by Vincent Badts. The data-processing is supported by Olivier Berthel�.
+message.index.partnerparagraph1=The results presented on this web site are the fruit of an internal Ifremer working group which has been active since 2001 with the objective of developing population and community indicators for the survey data collected since the end of the 1970s along the French coasts. The main group members are (by Ifremer location and in alphabetical order): Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz and Yves V�rin (Boulogne-sur-mer), Andr� Battaglia and Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� and Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet and Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin and Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud and Arnaud Souplet (S�te). The quality process is managed by Vincent Badts. The data-processing is supported by Olivier Berthel�.
message.index.qualitymessage=Quality warning
message.index.qualitytitle=Quality warning
message.index.quotemessage=Ifremer {0,date,yyyy}. Population and community indices derived from scientific surveys carried out by Ifremer. {1} ({0,date,dd MMMM})
@@ -101,11 +98,11 @@
message.index.thankstitle=Acknowledgements
message.index.thanksparagraph1=All surveys presented on this web site were conducted by Ifremer and have received financial support from a variety of sources. After initially having been funded by Ifremer three of the surveys are now part of the European Data Collection Framework (DCF); this concerns IBTS, Evhoe and Medits. Two other surveys remain entirely funded by Ifremer: NourVil and CGFS (discussions to include this survey in the DCF are underway). For NourSein, the last three surveys were funded by GIP-Seine Aval. Finally, Crustaflam and NourSomme are entirely funded by EDF within a program of coastal monitoring of nuclear power plants and carried out by Ifremer. This web site has received the financial support of the French ministry for ecology, sustainable development, transport and housing (MEEDDM) (contract Ifremer-MEEDDM 2010). Pour calculating indices for the North Sea the data from all contributing nations was used; it is available in the Datras data base held by ICES (http://datras.ices.dk)
message.index.title=Home
-message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
-message.layout.oceanicdata2=the Fisheries Information System - Syst�me d''information halieutique de l''Ifremer (SIH)
+message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
+message.layout.oceanicdata2=the Fisheries Information System - Syst�me d''information halieutique de l''Ifremer (SIH)
message.layout.oceanicdatatitle=Survey data management at Ifremer
message.layout.title=Population and community indices derived from scientific surveys carried out by Ifremer.
-message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
+message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
message.map.citationtitle=Citation
message.map.downloadaspdf=Download as PDF
message.map.linkarchimer=Access atlas : {0}
@@ -137,21 +134,21 @@
message.search.extract.waitparagraph3=After downloading, close this page by returning to the home page of the site.
message.search.extract.zonetype=Zone and data types
message.source.download=Download
-message.source.paragraph1=The raw data are presented in four tables which contain the basic information by sampling unit (generally a haul) as well as the relevant information on the sampling design (strata). An additional table provides the latin names for the species codes used in the data files. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
-message.source.paragraph2=Les donn�es IBTS (donn�es fran\u00E7aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr\u00F4les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
+message.source.paragraph1=The raw data are presented in four tables which contain the basic information by sampling unit (generally a haul) as well as the relevant information on the sampling design (strata). An additional table provides the latin names for the species codes used in the data files. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
+message.source.paragraph2=Les donn�es IBTS (donn�es fran\u00E7aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr\u00F4les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
message.source.paragraph3=The web site provides access to the raw data corresponding to the population and community indices presented. For any other data please contact the administrator of the Fisheries information system of Ifremer ({0}).
message.source.paragraph4=The survey data consist of stations distributed in space following a stratified random design (which can be constant between years). The spatial resolution determines on which spatial scale population and community indices can be calculated.
message.source.paragraph5=The list of proposed spatial areas includes the original sampling areas, plus post-stratified areas suitable for the European Marine Strategie Framework Directive. These areas have been validated by an internal Ifremer working group following sensitivity analyses.
message.source.title=Raw data
-message.survey.atlantique.celtique.desc=The Evhoe suvey (Evaluation des ressources halieutiques de l''ouest europ�en) lasts one month in the fourth quarter every year since 1997. On average 75 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 150 000 km\u00B2 of the Celtic Sea.
+message.survey.atlantique.celtique.desc=The Evhoe suvey (Evaluation des ressources halieutiques de l''ouest europ�en) lasts one month in the fourth quarter every year since 1997. On average 75 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 150 000 km\u00B2 of the Celtic Sea.
message.survey.atlantique.celtique.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.celtique.plus=For more information on the Evhoe surveys
message.survey.atlantique.celtique=Celtic Sea
-message.survey.atlantique.gascogne.desc=The Evhoe survey (Evaluation des ressources halieutiques de l''ouest europ�en) lasts one month in the fourth quarter every year since 1992 (except 1993 and 1996). On average 70 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 72 500 km\u00B2 of the Bay of Biscay.
+message.survey.atlantique.gascogne.desc=The Evhoe survey (Evaluation des ressources halieutiques de l''ouest europ�en) lasts one month in the fourth quarter every year since 1992 (except 1993 and 1996). On average 70 half-hour hauls are carried out with a GOV trawl. Each haul covers about 0.067 km\u00B2. This survey provides a representative picture of the 72 500 km\u00B2 of the Bay of Biscay.
message.survey.atlantique.gascogne.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.gascogne.plus=For more information on the Evhoe surveys
message.survey.atlantique.gascogne=Bay of Biscay
-message.survey.atlantique.vilaine.desc=Survey in the nursery area of the Vilaine river bay (NourVil) lasted one week every year in autumn from 1980 � 2010, except 1991, 1994, 1995, 1998, 1999, 2006 and 2007. It used a 3m-beam trawl. On average 30 15-min hauls were carried out covering each about 0.0041 km\u00B2. This survey provides a representative picture of the 330 km\u00B2 of the Vilaine bay.
+message.survey.atlantique.vilaine.desc=Survey in the nursery area of the Vilaine river bay (NourVil) lasted one week every year in autumn from 1980 � 2010, except 1991, 1994, 1995, 1998, 1999, 2006 and 2007. It used a 3m-beam trawl. On average 30 15-min hauls were carried out covering each about 0.0041 km\u00B2. This survey provides a representative picture of the 330 km\u00B2 of the Vilaine bay.
message.survey.atlantique.vilaine.nourvil1=Manuel des protocoles Nourriceries Gascogne - V 1.0 (2002)
message.survey.atlantique.vilaine.plus=For more information on the Nourvil survey
message.survey.atlantique.vilaine=Vilaine river bay
@@ -200,8 +197,8 @@
message.survey.mediterranee.golfelion=Gulf of Lions
message.survey.mediterranee=Mediterranean Sea
message.survey.merdunord.sudmerdunord.desc=Every years since 1980 France contributes one month of ship time to the IBTS (International Bottom Trawl Survey) in the first quarter using a GOV trawl. On average 58 hauls are carried out. The southern North Sea is sampled by four countries (France, Belgium, Danmark and Germany) who together carry out about 200 hauls per year. Each haul lasts half an hour corresponding to a swept area of about 0.067 km\u00B2. IBTS provides a representative picture of the 678\u00A0000\u00A0km\u00B2 of the area.
-message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
-message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
+message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
+message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
message.survey.merdunord.sudmerdunord.plus=For more information on the IBTS survey
message.survey.merdunord.sudmerdunord=Southern North Sea
message.survey.merdunord=North Sea
Modified: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties
===================================================================
--- trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Web
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
# %%
@@ -23,165 +20,165 @@
###
message.admin.title=Coser admin
message.admin.indexaction=Actions d''administration
-message.admin.listprojects.deleteselected=Supprimer les projets s�lectionn�s
+message.admin.listprojects.deleteselected=Supprimer les projets s�lectionn�s
message.admin.listprojects.title=Gestion des projets
message.admin.listprojects.indicatorsprojects=Projects d'indicateur par zones
-message.admin.listprojects.indicatorsprojects.comment=La suppression d''un projets d''indicateur supprimera �galement la possibilit� de t�l�charger les donn�es sources du projet concern�.
+message.admin.listprojects.indicatorsprojects.comment=La suppression d''un projets d''indicateur supprimera �galement la possibilit� de t�l�charger les donn�es sources du projet concern�.
message.admin.listprojects.mapsprojects=Projects de cartes par zones
message.admin.login=Identifiant
message.admin.loginrequiered=Autentification requise
message.admin.password=Mot de passe
-message.com.downloadascsv=T�l�charger en CSV
-message.com.downloadaszip=T�l�charger en ZIP
-message.com.moredetailspdf=Plus d''informations sur les indices calcul�s des communaut�s
-message.com.paragraph1=Des indices de communaut� sont calcul�s pour un ensemble de taxon dans chaque s�rie. La liste des taxons inclus pour le calcul de chaque indice varie selon les donn�es disponibles pour la r�alisation des calculs.
-message.com.paragraph2=La liste des esp�ces incluses dans le calcul de chaque indice de communaut� est pr�sent�e dans le dossier t�l�chargable sous chaque graphe (fichier \"Information.pdf\").
-message.com.selectindicatorlist=S�lectionner une liste de donn�es
-message.com.title=Indices de communaut�s
+message.com.downloadascsv=T�l�charger en CSV
+message.com.downloadaszip=T�l�charger en ZIP
+message.com.moredetailspdf=Plus d''informations sur les indices calcul�s des communaut�s
+message.com.paragraph1=Des indices de communaut� sont calcul�s pour un ensemble de taxon dans chaque s�rie. La liste des taxons inclus pour le calcul de chaque indice varie selon les donn�es disponibles pour la r�alisation des calculs.
+message.com.paragraph2=La liste des esp�ces incluses dans le calcul de chaque indice de communaut� est pr�sent�e dans le dossier t�l�chargable sous chaque graphe (fichier \"Information.pdf\").
+message.com.selectindicatorlist=S�lectionner une liste de donn�es
+message.com.title=Indices de communaut�s
message.common.anchortop=Haut
message.common.community=community
message.common.facade=Facade
message.common.indicatorsof=Indicateurs de
message.common.jsreadmore=Voir la suite
-message.common.noresults=Aucun r�sultat disponible.
+message.common.noresults=Aucun r�sultat disponible.
message.common.population=population
-message.common.selectall=Tout s�lectionner
-message.common.selectnone=Tout d�-s�lectionner
-message.common.selectfacade=S�lectionnez une fa�ade
-message.common.selectindicator=S�lectionnez un indicateur
-message.common.selectpop=S�lectionnez une population
-message.common.selectspecies=S�lectionnez une esp�ce
-message.common.selectsurvey=S�lectionnez une campagne
-message.common.selectzone=S�lectionnez une zone
+message.common.selectall=Tout s�lectionner
+message.common.selectnone=Tout d�-s�lectionner
+message.common.selectfacade=S�lectionnez une fa�ade
+message.common.selectindicator=S�lectionnez un indicateur
+message.common.selectpop=S�lectionnez une population
+message.common.selectspecies=S�lectionnez une esp�ce
+message.common.selectsurvey=S�lectionnez une campagne
+message.common.selectzone=S�lectionnez une zone
message.common.species=Species
message.common.validform=Valider
message.common.zone=Zone
message.common.zones=Zones
-message.common.datatypes=Type de donn�es
-message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
-message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
-message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c�tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
-message.documents.genparagraph4=Poissons et invert�br�s au large des c�tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
-message.documents.gentitle1=Rapports g�n�raux
+message.common.datatypes=Type de donn�es
+message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
+message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
+message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c�tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
+message.documents.genparagraph4=Poissons et invert�br�s au large des c�tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
+message.documents.gentitle1=Rapports g�n�raux
message.documents.activityparagraph1=Battaglia A., V. M. Trenkel & M. J. Rochet, 2006. Estimating end effects in trawl catches. ICES J. Mar. Sci. 63: 956-959.
message.documents.activityparagraph2=Lorance P., J. A. Bertrand, A. Brind''Amour, M. J. Rochet & V. Trenkel, 2009. Assessment of impacts from human activities on ecosystem components in the Bay of Biscay in the early 1990s. Aquatic living resources 22: 409-431.
-message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
+message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
message.documents.activityparagraph4=Rochet M. J. & J. Rice, 2005. Do explicit criteria help in selecting indicators for ecosystem-based fisheries management? ICES J. Mar. Sci. 62: 528-539.
message.documents.activityparagraph5=Rochet M. J. & V. Trenkel, 2003. Which community indicators can measure the impact of fishing? A review and proposals. Can. J. Fish. Aquat. Sci. 60: 86-99.
-message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
-message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
+message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
+message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
message.documents.activityparagraph8=Trenkel V. & M. J. Rochet, 2003. Performance of indicators derived from abundance estimates for detecting the impact of fishing on a fish community. Can. J. Fish. Aquat. Sci. 60: 67-85.
-message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
-message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
-message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
+message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
+message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
+message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
message.documents.title=Documents
-message.index.datatypecom=Des indices de communaut� par zone
-message.index.datatypemap=Des cartes de distribution par esp�ce et par zone
-message.index.datatypepop=Des indices biologiques par esp�ce et par zone
-message.index.datatypesource=Des donn�es par op�ration d''�chantillonnage (en g�n�ral par trait de chalut)
-message.index.datatypesource.short=Des donn�es par op�ration d''�chantillonnage
-message.index.datatypetitle=Consultation des donn�es en ligne
+message.index.datatypecom=Des indices de communaut� par zone
+message.index.datatypemap=Des cartes de distribution par esp�ce et par zone
+message.index.datatypepop=Des indices biologiques par esp�ce et par zone
+message.index.datatypesource=Des donn�es par op�ration d''�chantillonnage (en g�n�ral par trait de chalut)
+message.index.datatypesource.short=Des donn�es par op�ration d''�chantillonnage
+message.index.datatypetitle=Consultation des donn�es en ligne
message.index.documentsmessage=Documents
message.index.documentstitle=Documents
-message.index.extractdatatitle=Extraction des donn�es
+message.index.extractdatatitle=Extraction des donn�es
message.index.extractdatalink=Formulaire de recherche
-message.index.paragraph1=Ce site a �t� con�u pour fournir en libre acc�s des donn�es brutes et des donn�es �labor�es relatives aux campagnes scientifiques d''observation halieutique conduites par l''Ifremer le long des c�tes fran�aises.
-message.index.paragraph2=Toutes les donn�es mises � disposition ont fait l''objet de qualification selon des protocoles sp�cifiques. La qualit� des interpr�tations �tant directement li�e � la nature des donn�es source, les utilisateurs de donn�es sont invit�s � consid�rer avec attention les descriptions des protocoles mis en \u0153uvre ainsi que les niveaux de qualit� contr�l�s.
-message.index.paragraph3=Chaque s�rie de campagnes est conduite selon une strat�gie d''�chantillonnage sp�cifique. Sauf cas particuliers, les analyses et interpr�tations doivent �tre conduites par s�rie, en prenant en compte les strat�gies d''�chantillonnage propres � chacune de ces s�ries. Sur le site, les donn�es sont pr�sent�es par s�rie.
-message.index.paragraph4=Dans les tables de donn�es, toutes les esp�ces sont identifi�es selon le r�f�rentiel taxinomique du Syst�me d''informations halieutiques de l''Ifremer ({0}).
-message.index.paragraph5=Les liens ci-dessous vous permet d''extraire les �l�ments du site (graphique et donn�es) sous la forme d''un fichier .zip (contenant un document pdf et les donn�es)
+message.index.paragraph1=Ce site a �t� con�u pour fournir en libre acc�s des donn�es brutes et des donn�es �labor�es relatives aux campagnes scientifiques d''observation halieutique conduites par l''Ifremer le long des c�tes fran�aises.
+message.index.paragraph2=Toutes les donn�es mises � disposition ont fait l''objet de qualification selon des protocoles sp�cifiques. La qualit� des interpr�tations �tant directement li�e � la nature des donn�es source, les utilisateurs de donn�es sont invit�s � consid�rer avec attention les descriptions des protocoles mis en \u0153uvre ainsi que les niveaux de qualit� contr�l�s.
+message.index.paragraph3=Chaque s�rie de campagnes est conduite selon une strat�gie d''�chantillonnage sp�cifique. Sauf cas particuliers, les analyses et interpr�tations doivent �tre conduites par s�rie, en prenant en compte les strat�gies d''�chantillonnage propres � chacune de ces s�ries. Sur le site, les donn�es sont pr�sent�es par s�rie.
+message.index.paragraph4=Dans les tables de donn�es, toutes les esp�ces sont identifi�es selon le r�f�rentiel taxinomique du Syst�me d''informations halieutiques de l''Ifremer ({0}).
+message.index.paragraph5=Les liens ci-dessous vous permet d''extraire les �l�ments du site (graphique et donn�es) sous la forme d''un fichier .zip (contenant un document pdf et les donn�es)
message.index.partnertitle=Membres du groupe
-message.index.partnerparagraph1=Les r�sultats pr�sent�s sur ce site sont le produit de l''activit� d''un groupe de travail de l''Ifremer qui se r�unit chaque ann�e depuis 2001 pour d�velopper des indicateurs de populations et de peuplements � partir des donn�es des s�ries de campagnes halieutiques standardis�es conduites depuis la fin des ann�es 1970 par l''Ifremer le long des c�tes de France m�tropolitaine. Les principaux membres du groupe sont (par ordre alphab�tique de site et de patronyme)\u00A0: Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz et Yves V�rin (Boulogne-sur-mer), Andr� Battaglia et Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� et Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet et Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin et Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud et Arnaud Souplet (S�te). La d�marche qualit� est g�r�e par Vincent Badts. Le support informatique de gestion des donn�es est assur� par Olivier Berthel�.
-message.index.qualitymessage=Avertissement qualit�
-message.index.qualitytitle=Avertissement qualit�
+message.index.partnerparagraph1=Les r�sultats pr�sent�s sur ce site sont le produit de l''activit� d''un groupe de travail de l''Ifremer qui se r�unit chaque ann�e depuis 2001 pour d�velopper des indicateurs de populations et de peuplements � partir des donn�es des s�ries de campagnes halieutiques standardis�es conduites depuis la fin des ann�es 1970 par l''Ifremer le long des c�tes de France m�tropolitaine. Les principaux membres du groupe sont (par ordre alphab�tique de site et de patronyme)\u00A0: Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz et Yves V�rin (Boulogne-sur-mer), Andr� Battaglia et Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� et Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet et Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin et Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud et Arnaud Souplet (S�te). La d�marche qualit� est g�r�e par Vincent Badts. Le support informatique de gestion des donn�es est assur� par Olivier Berthel�.
+message.index.qualitymessage=Avertissement qualit�
+message.index.qualitytitle=Avertissement qualit�
message.index.quotemessage=Ifremer {0,date,yyyy}. Indices de populations et de communautés issus des campagnes de surveillance halieutique de l''Ifremer. {1} ({0,date,dd MMMM})
message.index.quotetitle=Pour citer ce site
-message.index.surveyparagraph=Des manuels des protocoles d�crivent les modalit�s techniques de r�alisation de chaque s�rie de campagnes.
+message.index.surveyparagraph=Des manuels des protocoles d�crivent les modalit�s techniques de r�alisation de chaque s�rie de campagnes.
message.index.surveytitle=Description des campagnes
message.index.thankstitle=Remerciements
-message.index.thanksparagraph1=Bien que toutes les s�ries de campagnes dont des r�sultats sont pr�sent�s sur ce site aient �t� conduites par l''Ifremer, elles ont fait l''objet de financements vari�s. Certaines, apr�s une phase �ventuelle de financement unique par l''Ifremer font l''objet de cofinancements, comme les s�ries IBTS, Evhoe et Medits retenues au titre du r�glement europ�en sur la collecte des donn�es halieutiques (DCF). D''autres sont prises en charge en totalit� par l''Ifremer, comme les s�ries NourVil et CGFS (cette derni�re �tant en cours d''�valuation pour une reconnaissance au titre du r�glement europ�en sur la collecte des donn�es halieutiques - DCF). Pour la s�rie NourSein, les campagnes ont �t� co-financ�es par le conseil r�gional de Haute Normandie, le GPMH, le programme Liteau, le programme Seine Aval et le GIP-Seine Aval, selon les ann�es. Enfin, les s�ries Crustaflam et NourSomme sont financ�es en totalit� par EDF au titre de la surveillance de centrales nucl�aires littorales, dans le cadre de contrats entre Ifremer et EDF. Le pr�sent site a �t� cr�� gr\u00E2ce � un soutien du MEEDDM (contrat Ifremer-MEEDDM 2010). Pour l''�tablissement des indices en mer du Nord, les donn�es sources utilis�es sont celles mises � disposition par les diff�rents pays partenaires de la s�rie IBTS dans la base Datras du CIEM (http://datras.ices.dk)
+message.index.thanksparagraph1=Bien que toutes les s�ries de campagnes dont des r�sultats sont pr�sent�s sur ce site aient �t� conduites par l''Ifremer, elles ont fait l''objet de financements vari�s. Certaines, apr�s une phase �ventuelle de financement unique par l''Ifremer font l''objet de cofinancements, comme les s�ries IBTS, Evhoe et Medits retenues au titre du r�glement europ�en sur la collecte des donn�es halieutiques (DCF). D''autres sont prises en charge en totalit� par l''Ifremer, comme les s�ries NourVil et CGFS (cette derni�re �tant en cours d''�valuation pour une reconnaissance au titre du r�glement europ�en sur la collecte des donn�es halieutiques - DCF). Pour la s�rie NourSein, les campagnes ont �t� co-financ�es par le conseil r�gional de Haute Normandie, le GPMH, le programme Liteau, le programme Seine Aval et le GIP-Seine Aval, selon les ann�es. Enfin, les s�ries Crustaflam et NourSomme sont financ�es en totalit� par EDF au titre de la surveillance de centrales nucl�aires littorales, dans le cadre de contrats entre Ifremer et EDF. Le pr�sent site a �t� cr�� gr\u00E2ce � un soutien du MEEDDM (contrat Ifremer-MEEDDM 2010). Pour l''�tablissement des indices en mer du Nord, les donn�es sources utilis�es sont celles mises � disposition par les diff�rents pays partenaires de la s�rie IBTS dans la base Datras du CIEM (http://datras.ices.dk)
message.index.title=Bienvenida
-message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
-message.layout.oceanicdata2=le Syst�me d''information halieutique de l''Ifremer (SIH)
-message.layout.oceanicdatatitle=Gestion des donn�es des campagnes oc�anographiques � l''Ifremer
-message.layout.title=�ndices de las poblaciones y comunidades de las campa�as de seguimiento, que participan de la pesquer�a pulgadas Ifremer
-message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
+message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
+message.layout.oceanicdata2=le Syst�me d''information halieutique de l''Ifremer (SIH)
+message.layout.oceanicdatatitle=Gestion des donn�es des campagnes oc�anographiques � l''Ifremer
+message.layout.title=�ndices de las poblaciones y comunidades de las campa�as de seguimiento, que participan de la pesquer�a pulgadas Ifremer
+message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
message.map.citationtitle=Citation
-message.map.downloadaspdf=T�l�charger en PDF
-message.map.linkarchimer=Acc�s � l''atlas : {0}
-message.map.paragraph1=L''objectif de cet atlas est de donner un aper�u de la distribution spatiale des esp�ces de poissons et de certains invert�br�s marins � partir des observations des campagnes de p�che scientifiques.
-message.map.paragraph2=Pour chaque zone un quadrillage syst�matique a �t� d�fini, puis la densit� moyenne par km\u00B2 dans chaque cellule a �t� calcul�e en utilisant les observations de toute la p�riode. Pour la repr�sentation cartographique, les cellules avec des densit�s moyenne correspondant aux quartiles de densit� ont re�u la m�me couleur\u00A0: bleu\u00A0: esp�ce jamais observ�e, jaune clair\u00A0: densit� moyenne entre [0 et 25\u00A0%[; jaune fonc�\u00A0: [25-50\u00A0%[, orange\u00A0: [50-75\u00A0%[ et rouge\u00A0: [75-100\u00A0%]. Donc, les zones o\u00F9 se trouvent les densit�s les plus �lev�es en moyenne sont repr�sent�es en rouge.
+message.map.downloadaspdf=T�l�charger en PDF
+message.map.linkarchimer=Acc�s � l''atlas : {0}
+message.map.paragraph1=L''objectif de cet atlas est de donner un aper�u de la distribution spatiale des esp�ces de poissons et de certains invert�br�s marins � partir des observations des campagnes de p�che scientifiques.
+message.map.paragraph2=Pour chaque zone un quadrillage syst�matique a �t� d�fini, puis la densit� moyenne par km\u00B2 dans chaque cellule a �t� calcul�e en utilisant les observations de toute la p�riode. Pour la repr�sentation cartographique, les cellules avec des densit�s moyenne correspondant aux quartiles de densit� ont re�u la m�me couleur\u00A0: bleu\u00A0: esp�ce jamais observ�e, jaune clair\u00A0: densit� moyenne entre [0 et 25\u00A0%[; jaune fonc�\u00A0: [25-50\u00A0%[, orange\u00A0: [50-75\u00A0%[ et rouge\u00A0: [75-100\u00A0%]. Donc, les zones o\u00F9 se trouvent les densit�s les plus �lev�es en moyenne sont repr�sent�es en rouge.
message.map.title=Cartes de distribution
message.map.warning=Avertissement
-message.map.warningcontent=Les cartes pr�sent�es ne doivent pas �tre interpr�t�es comme des cartes de distribution des esp�ces mais comme celle des zones o\u00F9 elles sont captur�es lors des campagnes scientifiques. Les campagnes �tant r�alis�es avec des chaluts diff�rents et � diff�rentes saisons, les esp�ces peuvent avoir des capturabilit�s tr�s diff�rentes entre les s�ries de campagnes, donc d''une zone � l''autre.
-message.pop.downloadascsv=T�l�charger en CSV
-message.pop.moredetailspdf=Plus d''informations sur les indices calcul�s des populations
-message.pop.paragraph1=Les indices pr�sent�s ont �t� s�lectionn�s en r�f�rence � leur aptitude � renseigner sur l''impact de la p�che, en vue de leur int�gration dans des tableaux de bord d''indicateurs d''�volution d''�cosyst�mes exploit�s par la p�che.
-message.pop.paragraph2=Les donn�es disponibles sur le site sont les valeurs de chaque indice. Les informations ont �t� valid�es par un groupe de travail dans une approche int�grative d''indicateurs de populations et de communaut�s. Les r�sultats sont donn�s par zone g�ographique et par esp�ce pour l''ensemble de la s�rie de donn�es disponible. L''utilisateur peut s�lectionner la zone g�ographique, la saison (dans le cas de s�ries saisonni�res), l''esp�ce et l''indice. Pour les s�lections pour lesquelles une information est disponible, le syst�me produit un graphe pr�sentant la distribution temporelle de l''indice, avec une repr�sentation de l''�cart-type. Il fournit la possibilit� d''extraire la table des donn�es correspondantes, incluant la valeur de l''indice par ann�e, ainsi que son �cart-type et son coefficient de variation.
+message.map.warningcontent=Les cartes pr�sent�es ne doivent pas �tre interpr�t�es comme des cartes de distribution des esp�ces mais comme celle des zones o\u00F9 elles sont captur�es lors des campagnes scientifiques. Les campagnes �tant r�alis�es avec des chaluts diff�rents et � diff�rentes saisons, les esp�ces peuvent avoir des capturabilit�s tr�s diff�rentes entre les s�ries de campagnes, donc d''une zone � l''autre.
+message.pop.downloadascsv=T�l�charger en CSV
+message.pop.moredetailspdf=Plus d''informations sur les indices calcul�s des populations
+message.pop.paragraph1=Les indices pr�sent�s ont �t� s�lectionn�s en r�f�rence � leur aptitude � renseigner sur l''impact de la p�che, en vue de leur int�gration dans des tableaux de bord d''indicateurs d''�volution d''�cosyst�mes exploit�s par la p�che.
+message.pop.paragraph2=Les donn�es disponibles sur le site sont les valeurs de chaque indice. Les informations ont �t� valid�es par un groupe de travail dans une approche int�grative d''indicateurs de populations et de communaut�s. Les r�sultats sont donn�s par zone g�ographique et par esp�ce pour l''ensemble de la s�rie de donn�es disponible. L''utilisateur peut s�lectionner la zone g�ographique, la saison (dans le cas de s�ries saisonni�res), l''esp�ce et l''indice. Pour les s�lections pour lesquelles une information est disponible, le syst�me produit un graphe pr�sentant la distribution temporelle de l''indice, avec une repr�sentation de l''�cart-type. Il fournit la possibilit� d''extraire la table des donn�es correspondantes, incluant la valeur de l''indice par ann�e, ainsi que son �cart-type et son coefficient de variation.
message.pop.title=Indices biologiques
-message.quality.acceptance=Je reconnais avoir pris connaissance des documents et des restrictions associ�es et je m''engage � citer la source des donn�es.
-message.quality.notaccepted=Vous devez valider les conditions Avertissement Qualit� !
-message.quality.paragraph1=Bien que les donn�es aient �t� pr�cautionneusement contr�l�es par l''Ifremer, des d�fauts inh�rents � l''agr�gation des informations peuvent persister. Par exemple\u00A0:
-message.quality.paragraph2=En d�pit du fait que toutes les donn�es de toutes les s�ries de campagnes soient pr�sent�es selon le m�me format, sauf cas particuliers, des diff�rences dans les strat�gies d''observation emp�chent la combinaison de donn�es de diff�rentes campagnes dans une m�me analyse. Par exemple, la capturabilit� d''une m�me esp�ce varie selon le type d''engin d''�chantillonnage utilis�. Il en r�sulte que chaque engin capture un sous-ensemble particulier des bioc�noses �chantillonn�es.
-message.quality.paragraph3=Une propri�t� commune aux s�ries d''observations � la mer est l''�volution dans le temps de la comp�tence des �quipes embarqu�es pour la d�termination des esp�ces. Il peut en r�sulter des apparitions, des disparitions ou des assignations sous un m�me nom de taxons proches dans les jeux de donn�es, non repr�sentatifs de l''�volution des populations concern�es dans l''�cosyst�me.
-message.quality.paragraph4=Pour les campagnes d''une m�me s�rie, des changements dans les proc�dures d''�chantillonnage, dans les caract�ristiques des engins, dans la p�riode de r�alisation de la campagne et la zone couverte peuvent influencer les captures. Pour pr�venir les risques de biais dans les analyses en raison de ces facteurs, les jeux de donn�es doivent �tre pr�alablement filtr�s ad�quatement.
-message.quality.paragraph5=Il est vivement recommand� aux utilisateurs de donn�es de les traiter avec pr�caution. Si des utilisateurs s''interrogent sur la validit� de donn�es, ils sont invit�s � contacter l''administrateur de la base de donn�es ({0}).
-message.quality.title=Avertissement Qualit�
+message.quality.acceptance=Je reconnais avoir pris connaissance des documents et des restrictions associ�es et je m''engage � citer la source des donn�es.
+message.quality.notaccepted=Vous devez valider les conditions Avertissement Qualit� !
+message.quality.paragraph1=Bien que les donn�es aient �t� pr�cautionneusement contr�l�es par l''Ifremer, des d�fauts inh�rents � l''agr�gation des informations peuvent persister. Par exemple\u00A0:
+message.quality.paragraph2=En d�pit du fait que toutes les donn�es de toutes les s�ries de campagnes soient pr�sent�es selon le m�me format, sauf cas particuliers, des diff�rences dans les strat�gies d''observation emp�chent la combinaison de donn�es de diff�rentes campagnes dans une m�me analyse. Par exemple, la capturabilit� d''une m�me esp�ce varie selon le type d''engin d''�chantillonnage utilis�. Il en r�sulte que chaque engin capture un sous-ensemble particulier des bioc�noses �chantillonn�es.
+message.quality.paragraph3=Une propri�t� commune aux s�ries d''observations � la mer est l''�volution dans le temps de la comp�tence des �quipes embarqu�es pour la d�termination des esp�ces. Il peut en r�sulter des apparitions, des disparitions ou des assignations sous un m�me nom de taxons proches dans les jeux de donn�es, non repr�sentatifs de l''�volution des populations concern�es dans l''�cosyst�me.
+message.quality.paragraph4=Pour les campagnes d''une m�me s�rie, des changements dans les proc�dures d''�chantillonnage, dans les caract�ristiques des engins, dans la p�riode de r�alisation de la campagne et la zone couverte peuvent influencer les captures. Pour pr�venir les risques de biais dans les analyses en raison de ces facteurs, les jeux de donn�es doivent �tre pr�alablement filtr�s ad�quatement.
+message.quality.paragraph5=Il est vivement recommand� aux utilisateurs de donn�es de les traiter avec pr�caution. Si des utilisateurs s''interrogent sur la validit� de donn�es, ils sont invit�s � contacter l''administrateur de la base de donn�es ({0}).
+message.quality.title=Avertissement Qualit�
message.search.extract.extract=Extraire
-message.search.extract.speciesindicators=Esp�ces et indicateurs
-message.search.extract.title=Extraction des donn�es
+message.search.extract.speciesindicators=Esp�ces et indicateurs
+message.search.extract.title=Extraction des donn�es
message.search.extract.updatelists=Suite
message.search.extract.waittitle=Extraction en cours...
-message.search.extract.waitparagraph1=Les donn�es sont en cours d'extraction. Merci de patienter.
-message.search.extract.waitparagraph2=Cette op�ration peut prendre plusieurs minute dans le cas ou de nombreux graphiques doivent �tre g�n�r�s.
-message.search.extract.waitparagraph3=Apr�s le t�l�chargement, fermer cette page en revenant sur la page d''accueil du site.
-message.search.extract.zonetype=Zone et type de donn�es
-message.search.extract.title=Extraction des donn�es
-message.source.download=T�l�charger
-message.source.paragraph1=Les donn�es de base sont pr�sent�es selon quatre tables fournissant des informations de base �lev�es � l''op�ration d''�chantillonnage (en g�n�ral un trait de chalut) et organis�es selon des unit�s g�ographiques d�finies en relation avec le plan d''�chantillonnage. Une table suppl�mentaire pr�sente le r�f�rentiel taxinomique associ� aux donn�es. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
-message.source.paragraph2=Les donn�es IBTS (donn�es fran�aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr�les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
-message.source.paragraph3=Le site ne contient des donn�es de base que pour une partie des s�ries de campagnes pour lesquelles des indices de populations et de communaut�s sont pr�sent�s, selon les modalit�s d''acc�s � ces donn�es. Pour un acc�s aux s�ries de donn�es source, il convient de contacter l''administrateur du Syst�me d''informations halieutiques de l''Ifremer ({0}) pour les donn�es fran�aises, et le site Datras du CIEM (http://datras.ices.dk) pour les donn�es IBTS des autres pays.
-message.source.paragraph4=Les donn�es de campagnes halieutiques sont constitu�es � partir de stations d''�chantillonnage r�parties dans l''espace selon le principe de tirage stratifi�. La densit� de l''�chantillonnage conditionne la partition g�ographique selon laquelle les indices de population et de communaut� peuvent �tre �tablis.
-message.source.paragraph5=Les plans de zonage propos�s incluent le plan de r�f�rence correspondant au plan d''�chantillonnage, ainsi que des adaptations pour tenir compte des limites des sous-r�gions d�finies par la strat�gie marine europ�enne. Ils ont �t� valid�s par un groupe de travail de l''Ifremer, apr�s exploration de la sensibilit� de divers indices aux ajustements propos�s.
-message.source.title=Donn�es de base
-message.survey.atlantique.celtique.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1997. En moyenne 75 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 150 000 km\u00B2 de la mer Celtique.
+message.search.extract.waitparagraph1=Les donn�es sont en cours d'extraction. Merci de patienter.
+message.search.extract.waitparagraph2=Cette op�ration peut prendre plusieurs minute dans le cas ou de nombreux graphiques doivent �tre g�n�r�s.
+message.search.extract.waitparagraph3=Apr�s le t�l�chargement, fermer cette page en revenant sur la page d''accueil du site.
+message.search.extract.zonetype=Zone et type de donn�es
+message.search.extract.title=Extraction des donn�es
+message.source.download=T�l�charger
+message.source.paragraph1=Les donn�es de base sont pr�sent�es selon quatre tables fournissant des informations de base �lev�es � l''op�ration d''�chantillonnage (en g�n�ral un trait de chalut) et organis�es selon des unit�s g�ographiques d�finies en relation avec le plan d''�chantillonnage. Une table suppl�mentaire pr�sente le r�f�rentiel taxinomique associ� aux donn�es. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
+message.source.paragraph2=Les donn�es IBTS (donn�es fran�aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr�les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
+message.source.paragraph3=Le site ne contient des donn�es de base que pour une partie des s�ries de campagnes pour lesquelles des indices de populations et de communaut�s sont pr�sent�s, selon les modalit�s d''acc�s � ces donn�es. Pour un acc�s aux s�ries de donn�es source, il convient de contacter l''administrateur du Syst�me d''informations halieutiques de l''Ifremer ({0}) pour les donn�es fran�aises, et le site Datras du CIEM (http://datras.ices.dk) pour les donn�es IBTS des autres pays.
+message.source.paragraph4=Les donn�es de campagnes halieutiques sont constitu�es � partir de stations d''�chantillonnage r�parties dans l''espace selon le principe de tirage stratifi�. La densit� de l''�chantillonnage conditionne la partition g�ographique selon laquelle les indices de population et de communaut� peuvent �tre �tablis.
+message.source.paragraph5=Les plans de zonage propos�s incluent le plan de r�f�rence correspondant au plan d''�chantillonnage, ainsi que des adaptations pour tenir compte des limites des sous-r�gions d�finies par la strat�gie marine europ�enne. Ils ont �t� valid�s par un groupe de travail de l''Ifremer, apr�s exploration de la sensibilit� de divers indices aux ajustements propos�s.
+message.source.title=Donn�es de base
+message.survey.atlantique.celtique.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1997. En moyenne 75 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 150 000 km\u00B2 de la mer Celtique.
message.survey.atlantique.celtique.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.celtique.plus=Pour en savoir plus sur les campagnes Evhoe
message.survey.atlantique.celtique=Mer Celtique
-message.survey.atlantique.gascogne.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1992 (sauf en 1993 et 1996). En moyenne, 70 traits de chalut d''une demi-heure au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface de 0,067 km\u00B2. Cette campagne est repr�sentative des 72 500 km\u00B2 du golfe de Gascogne. La campagne Evhoe couvre donc le golfe de Gascogne et la mer Celtique avec le m�me protocole. De plus elle est coordonn�e internationalement, dans le cadre des campagnes IBTS, avec une campagne espagnole en mer Cantabrique, une campagne irlandaise et une campagne anglaise en mer Celtique.
+message.survey.atlantique.gascogne.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1992 (sauf en 1993 et 1996). En moyenne, 70 traits de chalut d''une demi-heure au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface de 0,067 km\u00B2. Cette campagne est repr�sentative des 72 500 km\u00B2 du golfe de Gascogne. La campagne Evhoe couvre donc le golfe de Gascogne et la mer Celtique avec le m�me protocole. De plus elle est coordonn�e internationalement, dans le cadre des campagnes IBTS, avec une campagne espagnole en mer Cantabrique, une campagne irlandaise et une campagne anglaise en mer Celtique.
message.survey.atlantique.gascogne.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.gascogne.plus=Pour en savoir plus sur les campagnes Evhoe
message.survey.atlantique.gascogne=Golfe de Gascogne
-message.survey.atlantique.vilaine.desc=Campagne sur la nourricerie de la baie de Vilaine (NourVil), d''une semaine � l''automne, tous les ans de 1980 � 2010, sauf en 1991, 1994, 1995, 1998, 1999, 2006 et 2007, au chalut � perche de 3 m�tres de large. En moyenne, 30 chalutages de 15 minutes sont r�alis�s. Chaque trait couvre une surface d''environ 0,0041 km\u00B2. Cette campagne est repr�sentative des 330 km\u00B2 de la baie.
+message.survey.atlantique.vilaine.desc=Campagne sur la nourricerie de la baie de Vilaine (NourVil), d''une semaine � l''automne, tous les ans de 1980 � 2010, sauf en 1991, 1994, 1995, 1998, 1999, 2006 et 2007, au chalut � perche de 3 m�tres de large. En moyenne, 30 chalutages de 15 minutes sont r�alis�s. Chaque trait couvre une surface d''environ 0,0041 km\u00B2. Cette campagne est repr�sentative des 330 km\u00B2 de la baie.
message.survey.atlantique.vilaine.nourvil1=Manuel des protocoles Nourriceries Gascogne - V 1.0 (2002)
message.survey.atlantique.vilaine.plus=Pour en savoir plus sur les campagnes Nourvil
message.survey.atlantique.vilaine=Baie de Vilaine
-message.survey.atlantique=Fa�ade Atlantique
-message.survey.dataengincasier=Un �chantillonnage au casier pour les campagnes d''�valuation des grands crustac�s, en particulier le homard, aux abords du cap de Flamanville.
-message.survey.dataenginfond=Un chalut de fond � grande ouverture verticale pour l''observation des ressources d�mersales, sur les plateaux continentaux et le haut des pentes continentales (accores) en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne, golfe du Lion et Est de la Corse,
-message.survey.dataenginperche=Un chalut � perche pour les zones tr�s c�ti�res et les estuaires lors des campagnes visant les juv�niles de poissons plats : baies de Somme et de Vilaine,
-message.survey.dataengintitle=Diff�rents engins d''�chantillonnage sont utilis�s :
-message.survey.detailstitle=Caract�ristiques des campagnes de surveillance halieutique de l''Ifremer
+message.survey.atlantique=Fa�ade Atlantique
+message.survey.dataengincasier=Un �chantillonnage au casier pour les campagnes d''�valuation des grands crustac�s, en particulier le homard, aux abords du cap de Flamanville.
+message.survey.dataenginfond=Un chalut de fond � grande ouverture verticale pour l''observation des ressources d�mersales, sur les plateaux continentaux et le haut des pentes continentales (accores) en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne, golfe du Lion et Est de la Corse,
+message.survey.dataenginperche=Un chalut � perche pour les zones tr�s c�ti�res et les estuaires lors des campagnes visant les juv�niles de poissons plats : baies de Somme et de Vilaine,
+message.survey.dataengintitle=Diff�rents engins d''�chantillonnage sont utilis�s :
+message.survey.detailstitle=Caract�ristiques des campagnes de surveillance halieutique de l''Ifremer
message.survey.maintitle=Les campagnes de surveillance halieutique de l''Ifremer
message.survey.mancheoccidentale.flamanville.crustaflam1=Manuel des protocoles CRUSTAFLAM - Version 1.0 (2003)
-message.survey.mancheoccidentale.flamanville.desc=Deux campagnes de 15 jours aux casiers � crustac�s aux abords du cap de Flamanville (CrustaFlam), en juin et septembre, depuis 1986 : 1200 casiers relev�s par campagne sur une zone de 26 km\u00B2.
+message.survey.mancheoccidentale.flamanville.desc=Deux campagnes de 15 jours aux casiers � crustac�s aux abords du cap de Flamanville (CrustaFlam), en juin et septembre, depuis 1986 : 1200 casiers relev�s par campagne sur une zone de 26 km\u00B2.
message.survey.mancheoccidentale.flamanville.plus=Pour en savoir plus sur les campagnes CrustFlam
message.survey.mancheoccidentale.flamanville=Abords du cap de Flamanville
-message.survey.mancheoccidentale=Fa�ade Manche occidentale
+message.survey.mancheoccidentale=Fa�ade Manche occidentale
message.survey.mancheorientale.baiedeseine=Baie de Seine
-message.survey.mancheorientale.baiedeseine.desc=Campagnes annuelles de prospection sur les nourriceries de l''estuaire de Seine et de la baie de Seine orientale (NourSeine) effectu�es essentiellement � l''automne, de 1995 � 2002. L''objectif premier �tait d''identifier les nourriceries c�ti�res de ce site et d''en �valuer la richesse halieutique et macro-�pibenthique. Environ 45 traits effectu�s � chaque campagne, � l''aide d''un chalut � perche standard.
+message.survey.mancheorientale.baiedeseine.desc=Campagnes annuelles de prospection sur les nourriceries de l''estuaire de Seine et de la baie de Seine orientale (NourSeine) effectu�es essentiellement � l''automne, de 1995 � 2002. L''objectif premier �tait d''identifier les nourriceries c�ti�res de ce site et d''en �valuer la richesse halieutique et macro-�pibenthique. Environ 45 traits effectu�s � chaque campagne, � l''aide d''un chalut � perche standard.
message.survey.mancheorientale.baiedeseine.plus=Pour en savoir plus sur les campagnes NourSeine
message.survey.mancheorientale.baiedeseine.nourseine1=http://archimer.ifremer.fr/doc/00036/14714/
-message.survey.mancheorientale.baiedesomme.desc=Campagne de p�che sur la nourricerie de la baie de Somme (NourSomme) d''une semaine en septembre-octobre, tous les ans depuis 1995, aux chaluts � perche de 2 m�tres de large dans la partie la plus estuarienne de la baie et 3 m�tres dans la partie externe, plus marine. En moyenne 50 chalutages sont r�alis�s chaque ann�e. Ils durent en moyenne 7 minutes sur une surface de 0,001 km\u00B2 chacun dans la partie interne de la baie et 15 minutes sur une surface d''environ 0,004 km\u00B2 dans la partie externe. Cette campagne est repr�sentative des 720 km\u00B2 de la baie.
+message.survey.mancheorientale.baiedesomme.desc=Campagne de p�che sur la nourricerie de la baie de Somme (NourSomme) d''une semaine en septembre-octobre, tous les ans depuis 1995, aux chaluts � perche de 2 m�tres de large dans la partie la plus estuarienne de la baie et 3 m�tres dans la partie externe, plus marine. En moyenne 50 chalutages sont r�alis�s chaque ann�e. Ils durent en moyenne 7 minutes sur une surface de 0,001 km\u00B2 chacun dans la partie interne de la baie et 15 minutes sur une surface d''environ 0,004 km\u00B2 dans la partie externe. Cette campagne est repr�sentative des 720 km\u00B2 de la baie.
message.survey.mancheorientale.baiedesomme.noursomme1=Manuel des protocoles Nourriceries Somme - V 1.0 (2002)
message.survey.mancheorientale.baiedesomme.plus=Pour en savoir plus sur les campagnes NourSomme
message.survey.mancheorientale.baiedesomme=Baie de Somme
message.survey.mancheorientale.mancheorientale.cgfs1=Manuel des protocoles CGFS - Version 1.0 (2002)
-message.survey.mancheorientale.mancheorientale.desc=Campagne fran�aise CGFS (Channel Ground Fish Survey) d''un mois en octobre, coordonn�e au plan international avec les campagnes IBTS. La campagne a lieu tous les ans depuis 1988. En moyenne 90 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,03 km\u00B2. Cette campagne est repr�sentative des 70 748 km\u00B2 de la Manche orientale.
+message.survey.mancheorientale.mancheorientale.desc=Campagne fran�aise CGFS (Channel Ground Fish Survey) d''un mois en octobre, coordonn�e au plan international avec les campagnes IBTS. La campagne a lieu tous les ans depuis 1988. En moyenne 90 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,03 km\u00B2. Cette campagne est repr�sentative des 70 748 km\u00B2 de la Manche orientale.
message.survey.mancheorientale.mancheorientale.plus=Pour en savoir plus sur les campagnes CGFS
message.survey.mancheorientale.mancheorientale=Manche orientale
-message.survey.mancheorientale=Fa�ade Manche orientale
-message.survey.mediterranee.estcorse.desc=Contribution fran�aise � la campagne internationale Medits (International bottom Trawl Surveys in the Mediterranean), d''une semaine au printemps, tous les ans depuis 1994, sauf en 2002, au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 20 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. La campagne est repr�sentative des 4 562 km\u00B2 du plateau insulaire de l''est de la Corse.
+message.survey.mancheorientale=Fa�ade Manche orientale
+message.survey.mediterranee.estcorse.desc=Contribution fran�aise � la campagne internationale Medits (International bottom Trawl Surveys in the Mediterranean), d''une semaine au printemps, tous les ans depuis 1994, sauf en 2002, au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 20 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. La campagne est repr�sentative des 4 562 km\u00B2 du plateau insulaire de l''est de la Corse.
message.survey.mediterranee.estcorse.medits1=Manuel des protocoles Medits, Version 1 (1994)
message.survey.mediterranee.estcorse.medits2=Manuel des protocoles Medits, Version 2 (1995)
message.survey.mediterranee.estcorse.medits3=Manuel des protocoles Medits, Version 3 (1999)
@@ -190,7 +187,7 @@
message.survey.mediterranee.estcorse.medits6=Manuel des protocoles Medits, Version 6 (2012)
message.survey.mediterranee.estcorse.plus=Pour en savoir plus sur les campagnes Medits
message.survey.mediterranee.estcorse=Est de la Corse
-message.survey.mediterranee.golfelion.desc=Contribution fran�aise aux campagnes internationales Medits (International bottom Trawl Surveys in the Mediterranean), d''un mois au deuxi�me trimestre tous les ans depuis 1994 au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 69 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. Medits est repr�sentative des 13 860 km\u00B2 du golfe de Lion.
+message.survey.mediterranee.golfelion.desc=Contribution fran�aise aux campagnes internationales Medits (International bottom Trawl Surveys in the Mediterranean), d''un mois au deuxi�me trimestre tous les ans depuis 1994 au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 69 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. Medits est repr�sentative des 13 860 km\u00B2 du golfe de Lion.
message.survey.mediterranee.golfelion.medits1=Manuel des protocoles Medits, Version 1 (1994)
message.survey.mediterranee.golfelion.medits2=Manuel des protocoles Medits, Version 2 (1995)
message.survey.mediterranee.golfelion.medits3=Manuel des protocoles Medits, Version 3 (1999)
@@ -199,16 +196,16 @@
message.survey.mediterranee.golfelion.medits6=Manuel des protocoles Medits, Version 6 (2012)
message.survey.mediterranee.golfelion.plus=Pour en savoir plus sur les campagnes Medits
message.survey.mediterranee.golfelion=Golfe du Lion
-message.survey.mediterranee=Fa�ade M�diterran�e
-message.survey.merdunord.sudmerdunord.desc=Contribution fran�aise d''un mois � la campagne internationale IBTS (International Bottom Trawl Survey) au premier trimestre, tous les ans depuis 1980, au chalut de fond � grande ouverture verticale. En moyenne, le navire fran�ais fait 58 chalutages par an. Le sud de la mer du Nord est couvert par 4 navires (fran�ais, belge, danois et allemand) qui r�alisent en tout environ 200 traits par an. Chaque trait dure une demi-heure et couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 678\u00A0000\u00A0km\u00B2 de la zone.
-message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
-message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
+message.survey.mediterranee=Fa�ade M�diterran�e
+message.survey.merdunord.sudmerdunord.desc=Contribution fran�aise d''un mois � la campagne internationale IBTS (International Bottom Trawl Survey) au premier trimestre, tous les ans depuis 1980, au chalut de fond � grande ouverture verticale. En moyenne, le navire fran�ais fait 58 chalutages par an. Le sud de la mer du Nord est couvert par 4 navires (fran�ais, belge, danois et allemand) qui r�alisent en tout environ 200 traits par an. Chaque trait dure une demi-heure et couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 678\u00A0000\u00A0km\u00B2 de la zone.
+message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
+message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
message.survey.merdunord.sudmerdunord.plus=Pour en savoir plus sur les campagnes IBTS
message.survey.merdunord.sudmerdunord=Sud mer du Nord
-message.survey.merdunord=Fa�ade Mer du Nord
-message.survey.paragraph1=Les campagnes de p�che scientifique standardis�es ont pour objectif d''observer les ressources halieutiques, en suivant toujours les m�mes m�thodes d''�chantillonnage. Elles sont toujours r�alis�es dans la m�me zone, � la m�me saison, avec des engins de p�che standardis�s, afin que les donn�es soient comparables d''ann�e en ann�e. Elles servent � d�crire les esp�ces, qu''elles soient commerciales ou non, d''une zone et � observer les changements s''il y en a. Les poissons, les mollusques et les crustac�s sont d�nombr�s, mesur�s et pes�s. Certains d''entre eux font l''objet de pr�l�vements biologiques. Chaque campagne fournit ainsi une repr�sentation quantitative de l''ensemble des esp�ces de la zone � une p�riode donn�e. Selon les s�ries, d''autres informations sont relev�es (temp�rature, salinit�, macrofaune, observation des mammif�res marins, oiseaux, macro d�chets etc., mais ne sont pas pr�sent�es dans ce site)
-message.survey.paragraph2=Depuis une vingtaine d''ann�es, l''Ifremer organise des campagnes de p�che scientifique en mer du Nord, en Manche, en Atlantique et en M�diterran�e concernant les ressources d�mersales et benthiques. L''objectif prioritaire est de produire des indices d''abondance des principales esp�ces commerciales. Elles recueillent �galement des donn�es sur les esp�ces captur�es non commerciales. Elles contribuent ainsi aux connaissances n�cessaires au d�veloppement de l''approche �cosyst�mique des p�ches, notamment dans le cadre de la politique commune des p�ches et plus largement de la strat�gie marine de l''Union europ�enne.
-message.survey.paragraph3=Les campagnes sont r�alis�es selon des plans d''�chantillonnage standardis�s. L''engin de p�che et son gr�ement, la position des stations, le tri des captures, les pr�l�vements biologiques suivent des protocoles fix�s.
-message.survey.paragraph4=Pour les campagnes coordonn�es entre navires de recherche des pays riverains en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne et M�diterran�e, les protocoles sont communs � l''ensemble des pays partenaires. Les traits de chalut des diff�rents navires de recherche sont comparables.
-message.survey.paragraph5=Chaque zone �tudi�e est d�coup�e en strates en fonction de la profondeur, de la latitude ou d''autres crit�res. L''�chantillonnage pr�voit un nombre de traits de chalut ou de mouillages de casiers par strate.
-message.survey.paragraph6=Dans une campagne de chalutage scientifique, les positions des traits de chalut sont choisies selon un plan d''�chantillonnage statistique. L''objectif n''est pas d''obtenir les meilleures captures possibles comme le recherchent les p�cheurs, mais de r�colter des donn�es comparables d''une ann�e sur l''autre afin de relever des �volutions.
+message.survey.merdunord=Fa�ade Mer du Nord
+message.survey.paragraph1=Les campagnes de p�che scientifique standardis�es ont pour objectif d''observer les ressources halieutiques, en suivant toujours les m�mes m�thodes d''�chantillonnage. Elles sont toujours r�alis�es dans la m�me zone, � la m�me saison, avec des engins de p�che standardis�s, afin que les donn�es soient comparables d''ann�e en ann�e. Elles servent � d�crire les esp�ces, qu''elles soient commerciales ou non, d''une zone et � observer les changements s''il y en a. Les poissons, les mollusques et les crustac�s sont d�nombr�s, mesur�s et pes�s. Certains d''entre eux font l''objet de pr�l�vements biologiques. Chaque campagne fournit ainsi une repr�sentation quantitative de l''ensemble des esp�ces de la zone � une p�riode donn�e. Selon les s�ries, d''autres informations sont relev�es (temp�rature, salinit�, macrofaune, observation des mammif�res marins, oiseaux, macro d�chets etc., mais ne sont pas pr�sent�es dans ce site)
+message.survey.paragraph2=Depuis une vingtaine d''ann�es, l''Ifremer organise des campagnes de p�che scientifique en mer du Nord, en Manche, en Atlantique et en M�diterran�e concernant les ressources d�mersales et benthiques. L''objectif prioritaire est de produire des indices d''abondance des principales esp�ces commerciales. Elles recueillent �galement des donn�es sur les esp�ces captur�es non commerciales. Elles contribuent ainsi aux connaissances n�cessaires au d�veloppement de l''approche �cosyst�mique des p�ches, notamment dans le cadre de la politique commune des p�ches et plus largement de la strat�gie marine de l''Union europ�enne.
+message.survey.paragraph3=Les campagnes sont r�alis�es selon des plans d''�chantillonnage standardis�s. L''engin de p�che et son gr�ement, la position des stations, le tri des captures, les pr�l�vements biologiques suivent des protocoles fix�s.
+message.survey.paragraph4=Pour les campagnes coordonn�es entre navires de recherche des pays riverains en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne et M�diterran�e, les protocoles sont communs � l''ensemble des pays partenaires. Les traits de chalut des diff�rents navires de recherche sont comparables.
+message.survey.paragraph5=Chaque zone �tudi�e est d�coup�e en strates en fonction de la profondeur, de la latitude ou d''autres crit�res. L''�chantillonnage pr�voit un nombre de traits de chalut ou de mouillages de casiers par strate.
+message.survey.paragraph6=Dans une campagne de chalutage scientifique, les positions des traits de chalut sont choisies selon un plan d''�chantillonnage statistique. L''objectif n''est pas d''obtenir les meilleures captures possibles comme le recherchent les p�cheurs, mais de r�colter des donn�es comparables d''une ann�e sur l''autre afin de relever des �volutions.
Modified: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties
===================================================================
--- trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
###
# #%L
# Coser :: Web
-#
-# $Id$
-# $HeadURL$
# %%
# Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
# %%
@@ -23,164 +20,164 @@
###
message.admin.title=Coser admin
message.admin.indexaction=Actions d''administration
-message.admin.listprojects.deleteselected=Supprimer les projets s�lectionn�s
+message.admin.listprojects.deleteselected=Supprimer les projets s�lectionn�s
message.admin.listprojects.title=Gestion des projets
message.admin.listprojects.indicatorsprojects=Projects d'indicateur par zones
-message.admin.listprojects.indicatorsprojects.comment=La suppression d''un projets d''indicateur supprimera �galement la possibilit� de t�l�charger les donn�es sources du projet concern�.
+message.admin.listprojects.indicatorsprojects.comment=La suppression d''un projets d''indicateur supprimera �galement la possibilit� de t�l�charger les donn�es sources du projet concern�.
message.admin.listprojects.mapsprojects=Projects de cartes par zones
message.admin.login=Identifiant
message.admin.loginrequiered=Autentification requise
message.admin.password=Mot de passe
-message.com.downloadascsv=T�l�charger en CSV
-message.com.downloadaszip=T�l�charger en ZIP
-message.com.moredetailspdf=Plus d''informations sur les indices calcul�s des communaut�s
-message.com.paragraph1=Des indices de communaut� sont calcul�s pour un ensemble de taxon dans chaque s�rie. La liste des taxons inclus pour le calcul de chaque indice varie selon les donn�es disponibles pour la r�alisation des calculs.
-message.com.paragraph2=La liste des esp�ces incluses dans le calcul de chaque indice de communaut� est pr�sent�e dans le dossier t�l�chargable sous chaque graphe (fichier \"Information.pdf\").
-message.com.selectindicatorlist=S�lectionner une liste de donn�es
-message.com.title=Indices de communaut�s
+message.com.downloadascsv=T�l�charger en CSV
+message.com.downloadaszip=T�l�charger en ZIP
+message.com.moredetailspdf=Plus d''informations sur les indices calcul�s des communaut�s
+message.com.paragraph1=Des indices de communaut� sont calcul�s pour un ensemble de taxon dans chaque s�rie. La liste des taxons inclus pour le calcul de chaque indice varie selon les donn�es disponibles pour la r�alisation des calculs.
+message.com.paragraph2=La liste des esp�ces incluses dans le calcul de chaque indice de communaut� est pr�sent�e dans le dossier t�l�chargable sous chaque graphe (fichier \"Information.pdf\").
+message.com.selectindicatorlist=S�lectionner une liste de donn�es
+message.com.title=Indices de communaut�s
message.common.anchortop=Haut
-message.common.community=communaut�
+message.common.community=communaut�
message.common.facade=Facade
message.common.indicatorsof=Indicateurs de
message.common.jsreadmore=Voir la suite
-message.common.noresults=Aucun r�sultat disponible.
+message.common.noresults=Aucun r�sultat disponible.
message.common.population=population
-message.common.selectall=Tout s�lectionner
-message.common.selectnone=Tout d�-s�lectionner
-message.common.selectfacade=S�lectionnez une fa�ade
-message.common.selectindicator=S�lectionnez un indicateur
-message.common.selectpop=S�lectionnez une population
-message.common.selectspecies=S�lectionnez une esp�ce
-message.common.selectsurvey=S�lectionnez une campagne
-message.common.selectzone=S�lectionnez une zone
-message.common.species=Esp�ces
+message.common.selectall=Tout s�lectionner
+message.common.selectnone=Tout d�-s�lectionner
+message.common.selectfacade=S�lectionnez une fa�ade
+message.common.selectindicator=S�lectionnez un indicateur
+message.common.selectpop=S�lectionnez une population
+message.common.selectspecies=S�lectionnez une esp�ce
+message.common.selectsurvey=S�lectionnez une campagne
+message.common.selectzone=S�lectionnez une zone
+message.common.species=Esp�ces
message.common.validform=Valider
message.common.zone=Zone
message.common.zones=Zones
-message.common.datatypes=Type de donn�es
-message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
-message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
-message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c�tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
-message.documents.genparagraph4=Poissons et invert�br�s au large des c�tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
-message.documents.gentitle1=Rapports g�n�raux
+message.common.datatypes=Type de donn�es
+message.documents.genparagraph1=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. 2009. {0}
+message.documents.genparagraph2=Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Bilan 2007. 2009. {0}
+message.documents.genparagraph3=L''�tat des communaut�s exploit�es au large des c�tes de France. Application d''indicateurs � l''�valuation de l''impact de la p�che. Bilan 2004 Edition 2009. {0}
+message.documents.genparagraph4=Poissons et invert�br�s au large des c�tes de France. Indicateurs issus des p�ches scientifiques. Bilan 2004. 2007. {0}
+message.documents.gentitle1=Rapports g�n�raux
message.documents.activityparagraph1=Battaglia A., V. M. Trenkel & M. J. Rochet, 2006. Estimating end effects in trawl catches. ICES J. Mar. Sci. 63: 956-959.
message.documents.activityparagraph2=Lorance P., J. A. Bertrand, A. Brind''Amour, M. J. Rochet & V. Trenkel, 2009. Assessment of impacts from human activities on ecosystem components in the Bay of Biscay in the early 1990s. Aquatic living resources 22: 409-431.
-message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
+message.documents.activityparagraph3=Rochet M. J., M. Prigent, J. A. Bertrand, A. Carpentier, F. Coppin, J. P. Delpech, G. Fontenelle, E. Foucher, K. Mah�, E. Rostiaux & V. M. Trenkel, 2008. Ecosystem trends: evidence for agreement between fishers'' perceptions and scientific information. ICES J. Mar. Sci. 65: 1057-1068.
message.documents.activityparagraph4=Rochet M. J. & J. Rice, 2005. Do explicit criteria help in selecting indicators for ecosystem-based fisheries management? ICES J. Mar. Sci. 62: 528-539.
message.documents.activityparagraph5=Rochet M. J. & V. Trenkel, 2003. Which community indicators can measure the impact of fishing? A review and proposals. Can. J. Fish. Aquat. Sci. 60: 86-99.
-message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
-message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
+message.documents.activityparagraph6=Rochet M. J., V. M. Trenkel, R. Bellail, F. Coppin, O. Le Pape, J.-C. Mah�, A. Morin, J.-C. Poulard, I. Schlaich, A. Souplet, Y. V�rin & J. A. Bertrand, 2005. Combining indicator trends to assess ongoing changes in exploited fish communities: diagnostic of communities off the coasts of France. ICES Journal of Marine Science 62: 1647-1664.
+message.documents.activityparagraph7=Rochet M. J., V. M. Trenkel, A. Carpentier, F. Coppin, L. Gil de Sola Simarro, J. P. L�aut�, J. C. Mah�, P. Maiorano, A. Mannini, M. Murenu, G. Piet, C. Politou, B. Reale, M. T. Spedicato, G. Tserpes & J. A. Bertrand, 2010. Do changes in environmental pressures impact marine communities? An empirical assessment. J. Applied Ecology 47 (4): 741-750. Publisher''s official version : {0}, Open Access version : {1}
message.documents.activityparagraph8=Trenkel V. & M. J. Rochet, 2003. Performance of indicators derived from abundance estimates for detecting the impact of fishing on a fish community. Can. J. Fish. Aquat. Sci. 60: 67-85.
-message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
-message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
-message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
+message.documents.activitytitle2=Publications des membres du GT relatives � l''activit� du groupe
+message.documents.indicatorparagraph1=Dreves L., C. Abernot-Le Gac, E. Antajan, P. Clabaut, P. Claquin, M.L. Cochard, P. Monbet, J. Morin, A. T�tard, C. Warenbourg & H. Thillaye du Boullay, 2010. Synth�se hydrobiologique du site �lectronucl�aire de Penly. Ifremer. DOP/LER/2010.05. 280 p.
+message.documents.indicatortitle3=Travaux ayant utilis� les r�sultats du groupe de travail sur les indicateurs de populations et de peuplements
message.documents.title=Documents
-message.index.datatypecom=Des indices de communaut� par zone
-message.index.datatypemap=Des cartes de distribution par esp�ce et par zone
-message.index.datatypepop=Des indices biologiques par esp�ce et par zone
-message.index.datatypesource=Des donn�es par op�ration d''�chantillonnage (en g�n�ral par trait de chalut)
-message.index.datatypesource.short=Des donn�es par op�ration d''�chantillonnage
-message.index.datatypetitle=Consultation des donn�es en ligne
+message.index.datatypecom=Des indices de communaut� par zone
+message.index.datatypemap=Des cartes de distribution par esp�ce et par zone
+message.index.datatypepop=Des indices biologiques par esp�ce et par zone
+message.index.datatypesource=Des donn�es par op�ration d''�chantillonnage (en g�n�ral par trait de chalut)
+message.index.datatypesource.short=Des donn�es par op�ration d''�chantillonnage
+message.index.datatypetitle=Consultation des donn�es en ligne
message.index.documentsmessage=Documents
message.index.documentstitle=Documents
-message.index.extractdatatitle=Extraction des donn�es
+message.index.extractdatatitle=Extraction des donn�es
message.index.extractdatalink=Formulaire de recherche
-message.index.paragraph1=Ce site a �t� con�u pour fournir en libre acc�s des donn�es brutes et des donn�es �labor�es relatives aux campagnes scientifiques d''observation halieutique conduites par l''Ifremer le long des c�tes fran�aises.
-message.index.paragraph2=Toutes les donn�es mises � disposition ont fait l''objet de qualification selon des protocoles sp�cifiques. La qualit� des interpr�tations �tant directement li�e � la nature des donn�es source, les utilisateurs de donn�es sont invit�s � consid�rer avec attention les descriptions des protocoles mis en \u0153uvre ainsi que les niveaux de qualit� contr�l�s.
-message.index.paragraph3=Chaque s�rie de campagnes est conduite selon une strat�gie d''�chantillonnage sp�cifique. Sauf cas particuliers, les analyses et interpr�tations doivent �tre conduites par s�rie, en prenant en compte les strat�gies d''�chantillonnage propres � chacune de ces s�ries. Sur le site, les donn�es sont pr�sent�es par s�rie.
-message.index.paragraph4=Dans les tables de donn�es, toutes les esp�ces sont identifi�es selon le r�f�rentiel taxinomique du Syst�me d''informations halieutiques de l''Ifremer ({0}).
-message.index.paragraph5=Les liens ci-dessous vous permet d''extraire les �l�ments du site (graphique et donn�es) sous la forme d''un fichier .zip (contenant un document pdf et les donn�es)
+message.index.paragraph1=Ce site a �t� con�u pour fournir en libre acc�s des donn�es brutes et des donn�es �labor�es relatives aux campagnes scientifiques d''observation halieutique conduites par l''Ifremer le long des c�tes fran�aises.
+message.index.paragraph2=Toutes les donn�es mises � disposition ont fait l''objet de qualification selon des protocoles sp�cifiques. La qualit� des interpr�tations �tant directement li�e � la nature des donn�es source, les utilisateurs de donn�es sont invit�s � consid�rer avec attention les descriptions des protocoles mis en \u0153uvre ainsi que les niveaux de qualit� contr�l�s.
+message.index.paragraph3=Chaque s�rie de campagnes est conduite selon une strat�gie d''�chantillonnage sp�cifique. Sauf cas particuliers, les analyses et interpr�tations doivent �tre conduites par s�rie, en prenant en compte les strat�gies d''�chantillonnage propres � chacune de ces s�ries. Sur le site, les donn�es sont pr�sent�es par s�rie.
+message.index.paragraph4=Dans les tables de donn�es, toutes les esp�ces sont identifi�es selon le r�f�rentiel taxinomique du Syst�me d''informations halieutiques de l''Ifremer ({0}).
+message.index.paragraph5=Les liens ci-dessous vous permet d''extraire les �l�ments du site (graphique et donn�es) sous la forme d''un fichier .zip (contenant un document pdf et les donn�es)
message.index.partnertitle=Membres du groupe
-message.index.partnerparagraph1=Les r�sultats pr�sent�s sur ce site sont le produit de l''activit� d''un groupe de travail de l''Ifremer qui se r�unit chaque ann�e depuis 2001 pour d�velopper des indicateurs de populations et de peuplements � partir des donn�es des s�ries de campagnes halieutiques standardis�es conduites depuis la fin des ann�es 1970 par l''Ifremer le long des c�tes de France m�tropolitaine. Les principaux membres du groupe sont (par ordre alphab�tique de site et de patronyme)\u00A0: Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz et Yves V�rin (Boulogne-sur-mer), Andr� Battaglia et Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� et Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet et Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin et Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud et Arnaud Souplet (S�te). La d�marche qualit� est g�r�e par Vincent Badts. Le support informatique de gestion des donn�es est assur� par Olivier Berthel�.
-message.index.qualitymessage=Avertissement qualit�
-message.index.qualitytitle=Avertissement qualit�
+message.index.partnerparagraph1=Les r�sultats pr�sent�s sur ce site sont le produit de l''activit� d''un groupe de travail de l''Ifremer qui se r�unit chaque ann�e depuis 2001 pour d�velopper des indicateurs de populations et de peuplements � partir des donn�es des s�ries de campagnes halieutiques standardis�es conduites depuis la fin des ann�es 1970 par l''Ifremer le long des c�tes de France m�tropolitaine. Les principaux membres du groupe sont (par ordre alphab�tique de site et de patronyme)\u00A0: Florence Sanchez (Anglet), Franck Coppin, Sandrine Vaz et Yves V�rin (Boulogne-sur-mer), Andr� Battaglia et Jean-Pierre L�aut� (L''Houmeau), Jean-Claude Mah� et Mich�le Salaun (Lorient), Jacques Bertrand, Anik Brind''Amour, Yves D�saunay, Pascal Laffargue, Olivier Le Pape, J�r�my Lobry, Pascal Lorance, Jean-Charles Poulard, Marie-Jo\u00EBlle Rochet et Verena Trenkel (Nantes), Marie-Laure Cochard, Jocelyne Morin et Ivan Schlaich (Port-en-Bessin), Ang�lique Jadaud et Arnaud Souplet (S�te). La d�marche qualit� est g�r�e par Vincent Badts. Le support informatique de gestion des donn�es est assur� par Olivier Berthel�.
+message.index.qualitymessage=Avertissement qualit�
+message.index.qualitytitle=Avertissement qualit�
message.index.quotemessage=Ifremer {0,date,yyyy}. Indices de populations et de communautés issus des campagnes de surveillance halieutique de l''Ifremer. {1} ({0,date,dd MMMM})
message.index.quotetitle=Pour citer ce site
-message.index.surveyparagraph=Des manuels des protocoles d�crivent les modalit�s techniques de r�alisation de chaque s�rie de campagnes.
+message.index.surveyparagraph=Des manuels des protocoles d�crivent les modalit�s techniques de r�alisation de chaque s�rie de campagnes.
message.index.surveytitle=Description des campagnes
message.index.thankstitle=Remerciements
-message.index.thanksparagraph1=Bien que toutes les s�ries de campagnes dont des r�sultats sont pr�sent�s sur ce site aient �t� conduites par l''Ifremer, elles ont fait l''objet de financements vari�s. Certaines, apr�s une phase �ventuelle de financement unique par l''Ifremer font l''objet de cofinancements, comme les s�ries IBTS, Evhoe et Medits retenues au titre du r�glement europ�en sur la collecte des donn�es halieutiques (DCF). D''autres sont prises en charge en totalit� par l''Ifremer, comme les s�ries NourVil et CGFS (cette derni�re �tant en cours d''�valuation pour une reconnaissance au titre du r�glement europ�en sur la collecte des donn�es halieutiques - DCF). Pour la s�rie NourSein, les campagnes ont �t� co-financ�es par le conseil r�gional de Haute Normandie, le GPMH, le programme Liteau, le programme Seine Aval et le GIP-Seine Aval, selon les ann�es. Enfin, les s�ries Crustaflam et NourSomme sont financ�es en totalit� par EDF au titre de la surveillance de centrales nucl�aires littorales, dans le cadre de contrats entre Ifremer et EDF. Le pr�sent site a �t� cr�� gr\u00E2ce � un soutien du MEEDDM (contrat Ifremer-MEEDDM 2010). Pour l''�tablissement des indices en mer du Nord, les donn�es sources utilis�es sont celles mises � disposition par les diff�rents pays partenaires de la s�rie IBTS dans la base Datras du CIEM (http://datras.ices.dk)
+message.index.thanksparagraph1=Bien que toutes les s�ries de campagnes dont des r�sultats sont pr�sent�s sur ce site aient �t� conduites par l''Ifremer, elles ont fait l''objet de financements vari�s. Certaines, apr�s une phase �ventuelle de financement unique par l''Ifremer font l''objet de cofinancements, comme les s�ries IBTS, Evhoe et Medits retenues au titre du r�glement europ�en sur la collecte des donn�es halieutiques (DCF). D''autres sont prises en charge en totalit� par l''Ifremer, comme les s�ries NourVil et CGFS (cette derni�re �tant en cours d''�valuation pour une reconnaissance au titre du r�glement europ�en sur la collecte des donn�es halieutiques - DCF). Pour la s�rie NourSein, les campagnes ont �t� co-financ�es par le conseil r�gional de Haute Normandie, le GPMH, le programme Liteau, le programme Seine Aval et le GIP-Seine Aval, selon les ann�es. Enfin, les s�ries Crustaflam et NourSomme sont financ�es en totalit� par EDF au titre de la surveillance de centrales nucl�aires littorales, dans le cadre de contrats entre Ifremer et EDF. Le pr�sent site a �t� cr�� gr\u00E2ce � un soutien du MEEDDM (contrat Ifremer-MEEDDM 2010). Pour l''�tablissement des indices en mer du Nord, les donn�es sources utilis�es sont celles mises � disposition par les diff�rents pays partenaires de la s�rie IBTS dans la base Datras du CIEM (http://datras.ices.dk)
message.index.title=Accueil
-message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
-message.layout.oceanicdata2=le Syst�me d''information halieutique de l''Ifremer (SIH)
-message.layout.oceanicdatatitle=Gestion des donn�es des campagnes oc�anographiques � l''Ifremer
-message.layout.title=Indices de populations et de communaut�s issus des campagnes de surveillance halieutique auxquelles participe l''Ifremer
-message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
+message.layout.oceanicdata1=le Syst�me d''informations scientifiques pour la mer de l''Ifremer (SISMER)
+message.layout.oceanicdata2=le Syst�me d''information halieutique de l''Ifremer (SIH)
+message.layout.oceanicdatatitle=Gestion des donn�es des campagnes oc�anographiques � l''Ifremer
+message.layout.title=Indices de populations et de communaut�s issus des campagnes de surveillance halieutique auxquelles participe l''Ifremer
+message.map.citation=Trenkel V.M., O. Berthel�, P. Lorance, J.A. Bertrand, A. Brind''Amour, M.L. Cochard, F. Coppin, J.P. Leaut�, J.C. Mah�, J. Morin, M.J. Rochet, M. Salaun, A. Souplet & Y. V�rin, 2009. Grands invert�br�s et poissons observ�s par les campagnes scientifiques. Atlas de distribution. Bilan 2008. Ifremer, Nantes. EMH : 09-003. {0}. 100 p.
message.map.citationtitle=Citation
-message.map.downloadaspdf=T�l�charger en PDF
-message.map.linkarchimer=Acc�s � l''atlas : {0}
-message.map.paragraph1=L''objectif de cet atlas est de donner un aper�u de la distribution spatiale des esp�ces de poissons et de certains invert�br�s marins � partir des observations des campagnes de p�che scientifiques.
-message.map.paragraph2=Pour chaque zone un quadrillage syst�matique a �t� d�fini, puis la densit� moyenne par km\u00B2 dans chaque cellule a �t� calcul�e en utilisant les observations de toute la p�riode. Pour la repr�sentation cartographique, les cellules avec des densit�s moyenne correspondant aux quartiles de densit� ont re�u la m�me couleur\u00A0: bleu\u00A0: esp�ce jamais observ�e, jaune clair\u00A0: densit� moyenne entre [0 et 25\u00A0%[; jaune fonc�\u00A0: [25-50\u00A0%[, orange\u00A0: [50-75\u00A0%[ et rouge\u00A0: [75-100\u00A0%]. Donc, les zones o\u00F9 se trouvent les densit�s les plus �lev�es en moyenne sont repr�sent�es en rouge.
+message.map.downloadaspdf=T�l�charger en PDF
+message.map.linkarchimer=Acc�s � l''atlas : {0}
+message.map.paragraph1=L''objectif de cet atlas est de donner un aper�u de la distribution spatiale des esp�ces de poissons et de certains invert�br�s marins � partir des observations des campagnes de p�che scientifiques.
+message.map.paragraph2=Pour chaque zone un quadrillage syst�matique a �t� d�fini, puis la densit� moyenne par km\u00B2 dans chaque cellule a �t� calcul�e en utilisant les observations de toute la p�riode. Pour la repr�sentation cartographique, les cellules avec des densit�s moyenne correspondant aux quartiles de densit� ont re�u la m�me couleur\u00A0: bleu\u00A0: esp�ce jamais observ�e, jaune clair\u00A0: densit� moyenne entre [0 et 25\u00A0%[; jaune fonc�\u00A0: [25-50\u00A0%[, orange\u00A0: [50-75\u00A0%[ et rouge\u00A0: [75-100\u00A0%]. Donc, les zones o\u00F9 se trouvent les densit�s les plus �lev�es en moyenne sont repr�sent�es en rouge.
message.map.title=Cartes de distribution
message.map.warning=Avertissement
-message.map.warningcontent=Les cartes pr�sent�es ne doivent pas �tre interpr�t�es comme des cartes de distribution des esp�ces mais comme celle des zones o\u00F9 elles sont captur�es lors des campagnes scientifiques. Les campagnes �tant r�alis�es avec des chaluts diff�rents et � diff�rentes saisons, les esp�ces peuvent avoir des capturabilit�s tr�s diff�rentes entre les s�ries de campagnes, donc d''une zone � l''autre.
-message.pop.downloadascsv=T�l�charger en CSV
-message.pop.moredetailspdf=Plus d''informations sur les indices calcul�s des populations
-message.pop.paragraph1=Les indices pr�sent�s ont �t� s�lectionn�s en r�f�rence � leur aptitude � renseigner sur l''impact de la p�che, en vue de leur int�gration dans des tableaux de bord d''indicateurs d''�volution d''�cosyst�mes exploit�s par la p�che.
-message.pop.paragraph2=Les donn�es disponibles sur le site sont les valeurs de chaque indice. Les informations ont �t� valid�es par un groupe de travail dans une approche int�grative d''indicateurs de populations et de communaut�s. Les r�sultats sont donn�s par zone g�ographique et par esp�ce pour l''ensemble de la s�rie de donn�es disponible. L''utilisateur peut s�lectionner la zone g�ographique, la saison (dans le cas de s�ries saisonni�res), l''esp�ce et l''indice. Pour les s�lections pour lesquelles une information est disponible, le syst�me produit un graphe pr�sentant la distribution temporelle de l''indice, avec une repr�sentation de l''�cart-type. Il fournit la possibilit� d''extraire la table des donn�es correspondantes, incluant la valeur de l''indice par ann�e, ainsi que son �cart-type et son coefficient de variation.
+message.map.warningcontent=Les cartes pr�sent�es ne doivent pas �tre interpr�t�es comme des cartes de distribution des esp�ces mais comme celle des zones o\u00F9 elles sont captur�es lors des campagnes scientifiques. Les campagnes �tant r�alis�es avec des chaluts diff�rents et � diff�rentes saisons, les esp�ces peuvent avoir des capturabilit�s tr�s diff�rentes entre les s�ries de campagnes, donc d''une zone � l''autre.
+message.pop.downloadascsv=T�l�charger en CSV
+message.pop.moredetailspdf=Plus d''informations sur les indices calcul�s des populations
+message.pop.paragraph1=Les indices pr�sent�s ont �t� s�lectionn�s en r�f�rence � leur aptitude � renseigner sur l''impact de la p�che, en vue de leur int�gration dans des tableaux de bord d''indicateurs d''�volution d''�cosyst�mes exploit�s par la p�che.
+message.pop.paragraph2=Les donn�es disponibles sur le site sont les valeurs de chaque indice. Les informations ont �t� valid�es par un groupe de travail dans une approche int�grative d''indicateurs de populations et de communaut�s. Les r�sultats sont donn�s par zone g�ographique et par esp�ce pour l''ensemble de la s�rie de donn�es disponible. L''utilisateur peut s�lectionner la zone g�ographique, la saison (dans le cas de s�ries saisonni�res), l''esp�ce et l''indice. Pour les s�lections pour lesquelles une information est disponible, le syst�me produit un graphe pr�sentant la distribution temporelle de l''indice, avec une repr�sentation de l''�cart-type. Il fournit la possibilit� d''extraire la table des donn�es correspondantes, incluant la valeur de l''indice par ann�e, ainsi que son �cart-type et son coefficient de variation.
message.pop.title=Indices biologiques
-message.quality.acceptance=Je reconnais avoir pris connaissance des documents et des restrictions associ�es et je m''engage � citer la source des donn�es.
-message.quality.notaccepted=Vous devez valider les conditions Avertissement Qualit� !
-message.quality.paragraph1=Bien que les donn�es aient �t� pr�cautionneusement contr�l�es par l''Ifremer, des d�fauts inh�rents � l''agr�gation des informations peuvent persister. Par exemple\u00A0:
-message.quality.paragraph2=En d�pit du fait que toutes les donn�es de toutes les s�ries de campagnes soient pr�sent�es selon le m�me format, sauf cas particuliers, des diff�rences dans les strat�gies d''observation emp�chent la combinaison de donn�es de diff�rentes campagnes dans une m�me analyse. Par exemple, la capturabilit� d''une m�me esp�ce varie selon le type d''engin d''�chantillonnage utilis�. Il en r�sulte que chaque engin capture un sous-ensemble particulier des bioc�noses �chantillonn�es.
-message.quality.paragraph3=Une propri�t� commune aux s�ries d''observations � la mer est l''�volution dans le temps de la comp�tence des �quipes embarqu�es pour la d�termination des esp�ces. Il peut en r�sulter des apparitions, des disparitions ou des assignations sous un m�me nom de taxons proches dans les jeux de donn�es, non repr�sentatifs de l''�volution des populations concern�es dans l''�cosyst�me.
-message.quality.paragraph4=Pour les campagnes d''une m�me s�rie, des changements dans les proc�dures d''�chantillonnage, dans les caract�ristiques des engins, dans la p�riode de r�alisation de la campagne et la zone couverte peuvent influencer les captures. Pour pr�venir les risques de biais dans les analyses en raison de ces facteurs, les jeux de donn�es doivent �tre pr�alablement filtr�s ad�quatement.
-message.quality.paragraph5=Il est vivement recommand� aux utilisateurs de donn�es de les traiter avec pr�caution. Si des utilisateurs s''interrogent sur la validit� de donn�es, ils sont invit�s � contacter l''administrateur de la base de donn�es ({0}).
-message.quality.title=Avertissement Qualit�
+message.quality.acceptance=Je reconnais avoir pris connaissance des documents et des restrictions associ�es et je m''engage � citer la source des donn�es.
+message.quality.notaccepted=Vous devez valider les conditions Avertissement Qualit� !
+message.quality.paragraph1=Bien que les donn�es aient �t� pr�cautionneusement contr�l�es par l''Ifremer, des d�fauts inh�rents � l''agr�gation des informations peuvent persister. Par exemple\u00A0:
+message.quality.paragraph2=En d�pit du fait que toutes les donn�es de toutes les s�ries de campagnes soient pr�sent�es selon le m�me format, sauf cas particuliers, des diff�rences dans les strat�gies d''observation emp�chent la combinaison de donn�es de diff�rentes campagnes dans une m�me analyse. Par exemple, la capturabilit� d''une m�me esp�ce varie selon le type d''engin d''�chantillonnage utilis�. Il en r�sulte que chaque engin capture un sous-ensemble particulier des bioc�noses �chantillonn�es.
+message.quality.paragraph3=Une propri�t� commune aux s�ries d''observations � la mer est l''�volution dans le temps de la comp�tence des �quipes embarqu�es pour la d�termination des esp�ces. Il peut en r�sulter des apparitions, des disparitions ou des assignations sous un m�me nom de taxons proches dans les jeux de donn�es, non repr�sentatifs de l''�volution des populations concern�es dans l''�cosyst�me.
+message.quality.paragraph4=Pour les campagnes d''une m�me s�rie, des changements dans les proc�dures d''�chantillonnage, dans les caract�ristiques des engins, dans la p�riode de r�alisation de la campagne et la zone couverte peuvent influencer les captures. Pour pr�venir les risques de biais dans les analyses en raison de ces facteurs, les jeux de donn�es doivent �tre pr�alablement filtr�s ad�quatement.
+message.quality.paragraph5=Il est vivement recommand� aux utilisateurs de donn�es de les traiter avec pr�caution. Si des utilisateurs s''interrogent sur la validit� de donn�es, ils sont invit�s � contacter l''administrateur de la base de donn�es ({0}).
+message.quality.title=Avertissement Qualit�
message.search.extract.extract=Extraire
-message.search.extract.speciesindicators=Esp�ces et indicateurs
-message.search.extract.title=Extraction des donn�es
+message.search.extract.speciesindicators=Esp�ces et indicateurs
+message.search.extract.title=Extraction des donn�es
message.search.extract.updatelists=Suite
message.search.extract.waittitle=Extraction en cours...
-message.search.extract.waitparagraph1=Les donn�es sont en cours d''extraction. Merci de patienter.
-message.search.extract.waitparagraph2=Cette op�ration peut prendre plusieurs minutes dans le cas o� de nombreux graphiques doivent �tre g�n�r�s.
-message.search.extract.waitparagraph3=Apr�s le t�l�chargement, fermer cette page en revenant sur la page d''accueil du site.
-message.search.extract.zonetype=Zone et type de donn�es
-message.source.download=T�l�charger
-message.source.paragraph1=Les donn�es de base sont pr�sent�es selon quatre tables fournissant des informations de base �lev�es � l''op�ration d''�chantillonnage (en g�n�ral un trait de chalut) et organis�es selon des unit�s g�ographiques d�finies en relation avec le plan d''�chantillonnage. Une table suppl�mentaire pr�sente le r�f�rentiel taxinomique associ� aux donn�es. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
-message.source.paragraph2=Les donn�es IBTS (donn�es fran�aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr�les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
-message.source.paragraph3=Le site ne contient des donn�es de base que pour une partie des s�ries de campagnes pour lesquelles des indices de populations et de communaut�s sont pr�sent�s, selon les modalit�s d''acc�s � ces donn�es. Pour un acc�s aux s�ries de donn�es source, il convient de contacter l''administrateur du Syst�me d''informations halieutiques de l''Ifremer ({0}) pour les donn�es fran�aises, et le site Datras du CIEM (http://datras.ices.dk) pour les donn�es IBTS des autres pays.
-message.source.paragraph4=Les donn�es de campagnes halieutiques sont constitu�es � partir de stations d''�chantillonnage r�parties dans l''espace selon le principe de tirage stratifi�. La densit� de l''�chantillonnage conditionne la partition g�ographique selon laquelle les indices de population et de communaut� peuvent �tre �tablis.
-message.source.paragraph5=Les plans de zonage propos�s incluent le plan de r�f�rence correspondant au plan d''�chantillonnage, ainsi que des adaptations pour tenir compte des limites des sous-r�gions d�finies par la strat�gie marine europ�enne. Ils ont �t� valid�s par un groupe de travail de l''Ifremer, apr�s exploration de la sensibilit� de divers indices aux ajustements propos�s.
-message.source.title=Donn�es de base
-message.survey.atlantique.celtique.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1997. En moyenne 75 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 150 000 km\u00B2 de la mer Celtique.
+message.search.extract.waitparagraph1=Les donn�es sont en cours d''extraction. Merci de patienter.
+message.search.extract.waitparagraph2=Cette op�ration peut prendre plusieurs minutes dans le cas o� de nombreux graphiques doivent �tre g�n�r�s.
+message.search.extract.waitparagraph3=Apr�s le t�l�chargement, fermer cette page en revenant sur la page d''accueil du site.
+message.search.extract.zonetype=Zone et type de donn�es
+message.source.download=T�l�charger
+message.source.paragraph1=Les donn�es de base sont pr�sent�es selon quatre tables fournissant des informations de base �lev�es � l''op�ration d''�chantillonnage (en g�n�ral un trait de chalut) et organis�es selon des unit�s g�ographiques d�finies en relation avec le plan d''�chantillonnage. Une table suppl�mentaire pr�sente le r�f�rentiel taxinomique associ� aux donn�es. Il s''agit des donn�es utilis�es pour r�aliser les calculs des indicateurs pr�sent�s. Ces donn�es ont fait l''objet de filtrages et de regroupements �ventuels par rapport aux donn�es de base de chaque s�rie, afin d''assurer la coh�rence des jeux de donn�es en vue du calcul des indicateurs. Ainsi, pour certaines s�ries, des groupes entiers (e.g. les amphihalins) ont pu �tre retir�s. Pour certaines s�ries, certaines ann�es ou certaines strates ont �t� retir�es afin de pr�server l''homog�n�it� de la s�rie. Dans des cas d''�volution du niveau de d�termination au cours de la s�rie, plusieurs taxons ont �t� regroup�s � un niveau sup�rieur.
+message.source.paragraph2=Les donn�es IBTS (donn�es fran�aises et donn�es des autres pays) issues de la base Datras du CIEM (http://datras.ices.dk) ont fait l''objet des m�mes contr�les de qualit� que les autres s�ries de donn�es utilis�es, ainsi que de filtrages et de regroupements taxinomiques pour en pr�server la coh�rence vis-�-vis du pr�sent objectif de production d''indicateurs de tendances.
+message.source.paragraph3=Le site ne contient des donn�es de base que pour une partie des s�ries de campagnes pour lesquelles des indices de populations et de communaut�s sont pr�sent�s, selon les modalit�s d''acc�s � ces donn�es. Pour un acc�s aux s�ries de donn�es source, il convient de contacter l''administrateur du Syst�me d''informations halieutiques de l''Ifremer ({0}) pour les donn�es fran�aises, et le site Datras du CIEM (http://datras.ices.dk) pour les donn�es IBTS des autres pays.
+message.source.paragraph4=Les donn�es de campagnes halieutiques sont constitu�es � partir de stations d''�chantillonnage r�parties dans l''espace selon le principe de tirage stratifi�. La densit� de l''�chantillonnage conditionne la partition g�ographique selon laquelle les indices de population et de communaut� peuvent �tre �tablis.
+message.source.paragraph5=Les plans de zonage propos�s incluent le plan de r�f�rence correspondant au plan d''�chantillonnage, ainsi que des adaptations pour tenir compte des limites des sous-r�gions d�finies par la strat�gie marine europ�enne. Ils ont �t� valid�s par un groupe de travail de l''Ifremer, apr�s exploration de la sensibilit� de divers indices aux ajustements propos�s.
+message.source.title=Donn�es de base
+message.survey.atlantique.celtique.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1997. En moyenne 75 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 150 000 km\u00B2 de la mer Celtique.
message.survey.atlantique.celtique.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.celtique.plus=Pour en savoir plus sur les campagnes Evhoe
message.survey.atlantique.celtique=Mer Celtique
-message.survey.atlantique.gascogne.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1992 (sauf en 1993 et 1996). En moyenne, 70 traits de chalut d''une demi-heure au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface de 0,067 km\u00B2. Cette campagne est repr�sentative des 72 500 km\u00B2 du golfe de Gascogne. La campagne Evhoe couvre donc le golfe de Gascogne et la mer Celtique avec le m�me protocole. De plus elle est coordonn�e internationalement, dans le cadre des campagnes IBTS, avec une campagne espagnole en mer Cantabrique, une campagne irlandaise et une campagne anglaise en mer Celtique.
+message.survey.atlantique.gascogne.desc=Campagne Evhoe (Evaluation des ressources halieutiques de l''ouest europ�en) d''un mois au quatri�me trimestre, tous les ans depuis 1992 (sauf en 1993 et 1996). En moyenne, 70 traits de chalut d''une demi-heure au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface de 0,067 km\u00B2. Cette campagne est repr�sentative des 72 500 km\u00B2 du golfe de Gascogne. La campagne Evhoe couvre donc le golfe de Gascogne et la mer Celtique avec le m�me protocole. De plus elle est coordonn�e internationalement, dans le cadre des campagnes IBTS, avec une campagne espagnole en mer Cantabrique, une campagne irlandaise et une campagne anglaise en mer Celtique.
message.survey.atlantique.gascogne.evhoe1=Manuel des protocoles EVHOE - Version 1.0 (2005)
message.survey.atlantique.gascogne.plus=Pour en savoir plus sur les campagnes Evhoe
message.survey.atlantique.gascogne=Golfe de Gascogne
-message.survey.atlantique.vilaine.desc=Campagne sur la nourricerie de la baie de Vilaine (NourVil), d''une semaine � l''automne, tous les ans de 1980 � 2010, sauf en 1991, 1994, 1995, 1998, 1999, 2006 et 2007, au chalut � perche de 3 m�tres de large. En moyenne, 30 chalutages de 15 minutes sont r�alis�s. Chaque trait couvre une surface d''environ 0,0041 km\u00B2. Cette campagne est repr�sentative des 330 km\u00B2 de la baie.
+message.survey.atlantique.vilaine.desc=Campagne sur la nourricerie de la baie de Vilaine (NourVil), d''une semaine � l''automne, tous les ans de 1980 � 2010, sauf en 1991, 1994, 1995, 1998, 1999, 2006 et 2007, au chalut � perche de 3 m�tres de large. En moyenne, 30 chalutages de 15 minutes sont r�alis�s. Chaque trait couvre une surface d''environ 0,0041 km\u00B2. Cette campagne est repr�sentative des 330 km\u00B2 de la baie.
message.survey.atlantique.vilaine.nourvil1=Manuel des protocoles Nourriceries Gascogne - V 1.0 (2002)
message.survey.atlantique.vilaine.plus=Pour en savoir plus sur les campagnes Nourvil
message.survey.atlantique.vilaine=Baie de Vilaine
-message.survey.atlantique=Fa�ade Atlantique
-message.survey.dataengincasier=Un �chantillonnage au casier pour les campagnes d''�valuation des grands crustac�s, en particulier le homard, aux abords du cap de Flamanville.
-message.survey.dataenginfond=Un chalut de fond � grande ouverture verticale pour l''observation des ressources d�mersales, sur les plateaux continentaux et le haut des pentes continentales (accores) en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne, golfe du Lion et Est de la Corse,
-message.survey.dataenginperche=Un chalut � perche pour les zones tr�s c�ti�res et les estuaires lors des campagnes visant les juv�niles de poissons plats : baies de Somme et de Vilaine,
-message.survey.dataengintitle=Diff�rents engins d''�chantillonnage sont utilis�s :
-message.survey.detailstitle=Caract�ristiques des campagnes de surveillance halieutique de l''Ifremer
+message.survey.atlantique=Fa�ade Atlantique
+message.survey.dataengincasier=Un �chantillonnage au casier pour les campagnes d''�valuation des grands crustac�s, en particulier le homard, aux abords du cap de Flamanville.
+message.survey.dataenginfond=Un chalut de fond � grande ouverture verticale pour l''observation des ressources d�mersales, sur les plateaux continentaux et le haut des pentes continentales (accores) en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne, golfe du Lion et Est de la Corse,
+message.survey.dataenginperche=Un chalut � perche pour les zones tr�s c�ti�res et les estuaires lors des campagnes visant les juv�niles de poissons plats : baies de Somme et de Vilaine,
+message.survey.dataengintitle=Diff�rents engins d''�chantillonnage sont utilis�s :
+message.survey.detailstitle=Caract�ristiques des campagnes de surveillance halieutique de l''Ifremer
message.survey.maintitle=Les campagnes de surveillance halieutique de l''Ifremer
message.survey.mancheoccidentale.flamanville.crustaflam1=Manuel des protocoles CRUSTAFLAM - Version 1.0 (2003)
-message.survey.mancheoccidentale.flamanville.desc=Deux campagnes de 15 jours aux casiers � crustac�s aux abords du cap de Flamanville (CrustaFlam), en juin et septembre, depuis 1986 : 1200 casiers relev�s par campagne sur une zone de 26 km\u00B2.
+message.survey.mancheoccidentale.flamanville.desc=Deux campagnes de 15 jours aux casiers � crustac�s aux abords du cap de Flamanville (CrustaFlam), en juin et septembre, depuis 1986 : 1200 casiers relev�s par campagne sur une zone de 26 km\u00B2.
message.survey.mancheoccidentale.flamanville.plus=Pour en savoir plus sur les campagnes CrustFlam
message.survey.mancheoccidentale.flamanville=Abords du cap de Flamanville
-message.survey.mancheoccidentale=Fa�ade Manche occidentale
+message.survey.mancheoccidentale=Fa�ade Manche occidentale
message.survey.mancheorientale.baiedeseine=Baie de Seine
-message.survey.mancheorientale.baiedeseine.desc=Campagnes annuelles de prospection sur les nourriceries de l''estuaire de Seine et de la baie de Seine orientale (NourSeine) effectu�es essentiellement � l''automne, de 1995 � 2002. L''objectif premier �tait d''identifier les nourriceries c�ti�res de ce site et d''en �valuer la richesse halieutique et macro-�pibenthique. Environ 45 traits effectu�s � chaque campagne, � l''aide d''un chalut � perche standard.
+message.survey.mancheorientale.baiedeseine.desc=Campagnes annuelles de prospection sur les nourriceries de l''estuaire de Seine et de la baie de Seine orientale (NourSeine) effectu�es essentiellement � l''automne, de 1995 � 2002. L''objectif premier �tait d''identifier les nourriceries c�ti�res de ce site et d''en �valuer la richesse halieutique et macro-�pibenthique. Environ 45 traits effectu�s � chaque campagne, � l''aide d''un chalut � perche standard.
message.survey.mancheorientale.baiedeseine.plus=Pour en savoir plus sur les campagnes NourSeine
message.survey.mancheorientale.baiedeseine.nourseine1=http://archimer.ifremer.fr/doc/00036/14714/
-message.survey.mancheorientale.baiedesomme.desc=Campagne de p�che sur la nourricerie de la baie de Somme (NourSomme) d''une semaine en septembre-octobre, tous les ans depuis 1995, aux chaluts � perche de 2 m�tres de large dans la partie la plus estuarienne de la baie et 3 m�tres dans la partie externe, plus marine. En moyenne 50 chalutages sont r�alis�s chaque ann�e. Ils durent en moyenne 7 minutes sur une surface de 0,001 km\u00B2 chacun dans la partie interne de la baie et 15 minutes sur une surface d''environ 0,004 km\u00B2 dans la partie externe. Cette campagne est repr�sentative des 720 km\u00B2 de la baie.
+message.survey.mancheorientale.baiedesomme.desc=Campagne de p�che sur la nourricerie de la baie de Somme (NourSomme) d''une semaine en septembre-octobre, tous les ans depuis 1995, aux chaluts � perche de 2 m�tres de large dans la partie la plus estuarienne de la baie et 3 m�tres dans la partie externe, plus marine. En moyenne 50 chalutages sont r�alis�s chaque ann�e. Ils durent en moyenne 7 minutes sur une surface de 0,001 km\u00B2 chacun dans la partie interne de la baie et 15 minutes sur une surface d''environ 0,004 km\u00B2 dans la partie externe. Cette campagne est repr�sentative des 720 km\u00B2 de la baie.
message.survey.mancheorientale.baiedesomme.noursomme1=Manuel des protocoles Nourriceries Somme - V 1.0 (2002)
message.survey.mancheorientale.baiedesomme.plus=Pour en savoir plus sur les campagnes NourSomme
message.survey.mancheorientale.baiedesomme=Baie de Somme
message.survey.mancheorientale.mancheorientale.cgfs1=Manuel des protocoles CGFS - Version 1.0 (2002)
-message.survey.mancheorientale.mancheorientale.desc=Campagne fran�aise CGFS (Channel Ground Fish Survey) d''un mois en octobre, coordonn�e au plan international avec les campagnes IBTS. La campagne a lieu tous les ans depuis 1988. En moyenne 90 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,03 km\u00B2. Cette campagne est repr�sentative des 70 748 km\u00B2 de la Manche orientale.
+message.survey.mancheorientale.mancheorientale.desc=Campagne fran�aise CGFS (Channel Ground Fish Survey) d''un mois en octobre, coordonn�e au plan international avec les campagnes IBTS. La campagne a lieu tous les ans depuis 1988. En moyenne 90 traits d''une demi-heure, au chalut de fond � grande ouverture verticale, sont r�alis�s. Chaque trait couvre une surface d''environ 0,03 km\u00B2. Cette campagne est repr�sentative des 70 748 km\u00B2 de la Manche orientale.
message.survey.mancheorientale.mancheorientale.plus=Pour en savoir plus sur les campagnes CGFS
message.survey.mancheorientale.mancheorientale=Manche orientale
-message.survey.mancheorientale=Fa�ade Manche orientale
-message.survey.mediterranee.estcorse.desc=Contribution fran�aise � la campagne internationale Medits (International bottom Trawl Surveys in the Mediterranean), d''une semaine au printemps, tous les ans depuis 1994, sauf en 2002, au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 20 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. La campagne est repr�sentative des 4 562 km\u00B2 du plateau insulaire de l''est de la Corse.
+message.survey.mancheorientale=Fa�ade Manche orientale
+message.survey.mediterranee.estcorse.desc=Contribution fran�aise � la campagne internationale Medits (International bottom Trawl Surveys in the Mediterranean), d''une semaine au printemps, tous les ans depuis 1994, sauf en 2002, au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 20 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. La campagne est repr�sentative des 4 562 km\u00B2 du plateau insulaire de l''est de la Corse.
message.survey.mediterranee.estcorse.medits1=Manuel des protocoles Medits, Version 1 (1994)
message.survey.mediterranee.estcorse.medits2=Manuel des protocoles Medits, Version 2 (1995)
message.survey.mediterranee.estcorse.medits3=Manuel des protocoles Medits, Version 3 (1999)
@@ -189,7 +186,7 @@
message.survey.mediterranee.estcorse.medits6=Manuel des protocoles Medits, Version 6 (2012)
message.survey.mediterranee.estcorse.plus=Pour en savoir plus sur les campagnes Medits
message.survey.mediterranee.estcorse=Est de la Corse
-message.survey.mediterranee.golfelion.desc=Contribution fran�aise aux campagnes internationales Medits (International bottom Trawl Surveys in the Mediterranean), d''un mois au deuxi�me trimestre tous les ans depuis 1994 au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 69 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. Medits est repr�sentative des 13 860 km\u00B2 du golfe de Lion.
+message.survey.mediterranee.golfelion.desc=Contribution fran�aise aux campagnes internationales Medits (International bottom Trawl Surveys in the Mediterranean), d''un mois au deuxi�me trimestre tous les ans depuis 1994 au chalut de fond � grande ouverture verticale � ailes courtes. En moyenne 69 chalutages sont r�alis�s, d''une demi-heure couvrant une surface d''environ 0,05 km\u00B2 chacun pour les profondeurs inf�rieures � 200 m�tres et d''une heure (surface d''environ 0,1\u00A0km\u00B2) pour les profondeurs sup�rieures � 200 m�tres. Medits est repr�sentative des 13 860 km\u00B2 du golfe de Lion.
message.survey.mediterranee.golfelion.medits1=Manuel des protocoles Medits, Version 1 (1994)
message.survey.mediterranee.golfelion.medits2=Manuel des protocoles Medits, Version 2 (1995)
message.survey.mediterranee.golfelion.medits3=Manuel des protocoles Medits, Version 3 (1999)
@@ -198,16 +195,16 @@
message.survey.mediterranee.golfelion.medits6=Manuel des protocoles Medits, Version 6 (2012)
message.survey.mediterranee.golfelion.plus=Pour en savoir plus sur les campagnes Medits
message.survey.mediterranee.golfelion=Golfe du Lion
-message.survey.mediterranee=Fa�ade M�diterran�e
-message.survey.merdunord.sudmerdunord.desc=Contribution fran�aise d''un mois � la campagne internationale IBTS (International Bottom Trawl Survey) au premier trimestre, tous les ans depuis 1980, au chalut de fond � grande ouverture verticale. En moyenne, le navire fran�ais fait 58 chalutages par an. Le sud de la mer du Nord est couvert par 4 navires (fran�ais, belge, danois et allemand) qui r�alisent en tout environ 200 traits par an. Chaque trait dure une demi-heure et couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 678\u00A0000\u00A0km\u00B2 de la zone.
-message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
-message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
+message.survey.mediterranee=Fa�ade M�diterran�e
+message.survey.merdunord.sudmerdunord.desc=Contribution fran�aise d''un mois � la campagne internationale IBTS (International Bottom Trawl Survey) au premier trimestre, tous les ans depuis 1980, au chalut de fond � grande ouverture verticale. En moyenne, le navire fran�ais fait 58 chalutages par an. Le sud de la mer du Nord est couvert par 4 navires (fran�ais, belge, danois et allemand) qui r�alisent en tout environ 200 traits par an. Chaque trait dure une demi-heure et couvre une surface d''environ 0,067 km\u00B2. Cette campagne est repr�sentative des 678\u00A0000\u00A0km\u00B2 de la zone.
+message.survey.merdunord.sudmerdunord.ibts6=Manuel des protocoles IBTS - R�vision VI (1999)
+message.survey.merdunord.sudmerdunord.ibts7=Manuel des protocoles IBTS - R�vision VII (2004)
message.survey.merdunord.sudmerdunord.plus=Pour en savoir plus sur les campagnes IBTS
message.survey.merdunord.sudmerdunord=Sud mer du Nord
-message.survey.merdunord=Fa�ade Mer du Nord
-message.survey.paragraph1=Les campagnes de p�che scientifique standardis�es ont pour objectif d''observer les ressources halieutiques, en suivant toujours les m�mes m�thodes d''�chantillonnage. Elles sont toujours r�alis�es dans la m�me zone, � la m�me saison, avec des engins de p�che standardis�s, afin que les donn�es soient comparables d''ann�e en ann�e. Elles servent � d�crire les esp�ces, qu''elles soient commerciales ou non, d''une zone et � observer les changements s''il y en a. Les poissons, les mollusques et les crustac�s sont d�nombr�s, mesur�s et pes�s. Certains d''entre eux font l''objet de pr�l�vements biologiques. Chaque campagne fournit ainsi une repr�sentation quantitative de l''ensemble des esp�ces de la zone � une p�riode donn�e. Selon les s�ries, d''autres informations sont relev�es (temp�rature, salinit�, macrofaune, observation des mammif�res marins, oiseaux, macro d�chets etc., mais ne sont pas pr�sent�es dans ce site)
-message.survey.paragraph2=Depuis une vingtaine d''ann�es, l''Ifremer organise des campagnes de p�che scientifique en mer du Nord, en Manche, en Atlantique et en M�diterran�e concernant les ressources d�mersales et benthiques. L''objectif prioritaire est de produire des indices d''abondance des principales esp�ces commerciales. Elles recueillent �galement des donn�es sur les esp�ces captur�es non commerciales. Elles contribuent ainsi aux connaissances n�cessaires au d�veloppement de l''approche �cosyst�mique des p�ches, notamment dans le cadre de la politique commune des p�ches et plus largement de la strat�gie marine de l''Union europ�enne.
-message.survey.paragraph3=Les campagnes sont r�alis�es selon des plans d''�chantillonnage standardis�s. L''engin de p�che et son gr�ement, la position des stations, le tri des captures, les pr�l�vements biologiques suivent des protocoles fix�s.
-message.survey.paragraph4=Pour les campagnes coordonn�es entre navires de recherche des pays riverains en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne et M�diterran�e, les protocoles sont communs � l''ensemble des pays partenaires. Les traits de chalut des diff�rents navires de recherche sont comparables.
-message.survey.paragraph5=Chaque zone �tudi�e est d�coup�e en strates en fonction de la profondeur, de la latitude ou d''autres crit�res. L''�chantillonnage pr�voit un nombre de traits de chalut ou de mouillages de casiers par strate.
-message.survey.paragraph6=Dans une campagne de chalutage scientifique, les positions des traits de chalut sont choisies selon un plan d''�chantillonnage statistique. L''objectif n''est pas d''obtenir les meilleures captures possibles comme le recherchent les p�cheurs, mais de r�colter des donn�es comparables d''une ann�e sur l''autre afin de relever des �volutions.
+message.survey.merdunord=Fa�ade Mer du Nord
+message.survey.paragraph1=Les campagnes de p�che scientifique standardis�es ont pour objectif d''observer les ressources halieutiques, en suivant toujours les m�mes m�thodes d''�chantillonnage. Elles sont toujours r�alis�es dans la m�me zone, � la m�me saison, avec des engins de p�che standardis�s, afin que les donn�es soient comparables d''ann�e en ann�e. Elles servent � d�crire les esp�ces, qu''elles soient commerciales ou non, d''une zone et � observer les changements s''il y en a. Les poissons, les mollusques et les crustac�s sont d�nombr�s, mesur�s et pes�s. Certains d''entre eux font l''objet de pr�l�vements biologiques. Chaque campagne fournit ainsi une repr�sentation quantitative de l''ensemble des esp�ces de la zone � une p�riode donn�e. Selon les s�ries, d''autres informations sont relev�es (temp�rature, salinit�, macrofaune, observation des mammif�res marins, oiseaux, macro d�chets etc., mais ne sont pas pr�sent�es dans ce site)
+message.survey.paragraph2=Depuis une vingtaine d''ann�es, l''Ifremer organise des campagnes de p�che scientifique en mer du Nord, en Manche, en Atlantique et en M�diterran�e concernant les ressources d�mersales et benthiques. L''objectif prioritaire est de produire des indices d''abondance des principales esp�ces commerciales. Elles recueillent �galement des donn�es sur les esp�ces captur�es non commerciales. Elles contribuent ainsi aux connaissances n�cessaires au d�veloppement de l''approche �cosyst�mique des p�ches, notamment dans le cadre de la politique commune des p�ches et plus largement de la strat�gie marine de l''Union europ�enne.
+message.survey.paragraph3=Les campagnes sont r�alis�es selon des plans d''�chantillonnage standardis�s. L''engin de p�che et son gr�ement, la position des stations, le tri des captures, les pr�l�vements biologiques suivent des protocoles fix�s.
+message.survey.paragraph4=Pour les campagnes coordonn�es entre navires de recherche des pays riverains en mer du Nord, Manche orientale, mer Celtique, golfe de Gascogne et M�diterran�e, les protocoles sont communs � l''ensemble des pays partenaires. Les traits de chalut des diff�rents navires de recherche sont comparables.
+message.survey.paragraph5=Chaque zone �tudi�e est d�coup�e en strates en fonction de la profondeur, de la latitude ou d''autres crit�res. L''�chantillonnage pr�voit un nombre de traits de chalut ou de mouillages de casiers par strate.
+message.survey.paragraph6=Dans une campagne de chalutage scientifique, les positions des traits de chalut sont choisies selon un plan d''�chantillonnage statistique. L''objectif n''est pas d''obtenir les meilleures captures possibles comme le recherchent les p�cheurs, mais de r�colter des donn�es comparables d''une ann�e sur l''autre afin de relever des �volutions.
Modified: trunk/coser-web/src/main/resources/log4j.properties
===================================================================
--- trunk/coser-web/src/main/resources/log4j.properties 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/resources/log4j.properties 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,7 +1,6 @@
###
# #%L
-# $Id$
-# $HeadURL$
+# Coser :: Web
# %%
# Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
# %%
Modified: trunk/coser-web/src/main/resources/struts.xml
===================================================================
--- trunk/coser-web/src/main/resources/struts.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/resources/struts.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -2,9 +2,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2013 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/admin/index.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/admin/index.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/admin/index.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -38,4 +35,4 @@
<li><s:a action="list-projects" namespace='/admin'><s:text name="message.admin.listprojects.title" /></s:a></li>
</ul>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/admin/list-projects.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/admin/list-projects.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/admin/list-projects.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2011 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -84,4 +81,4 @@
<s:submit value='%{getText("message.admin.listprojects.deleteselected")}'/>
</form>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -42,4 +39,4 @@
</s:form>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/admin/perform-login-input.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/admin/perform-login-input.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/admin/perform-login-input.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -42,4 +39,4 @@
</s:form>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/com/facade.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/com/facade.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/com/facade.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -63,4 +60,4 @@
</p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -88,4 +85,4 @@
</s:a>.</p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/com/indicator.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/com/indicator.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/com/indicator.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -65,4 +62,4 @@
<img src="<s:url value='/images/zones/' /><s:property value='zonePicture' />" />
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/com/zone.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/com/zone.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/com/zone.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -75,4 +72,4 @@
</div>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/documents.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/documents.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/documents.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -77,4 +74,4 @@
<p><s:text name="message.documents.indicatorparagraph1" /></p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/index.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/index.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/index.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -89,4 +86,4 @@
<s:param value="contextUrl"/>
</s:text></p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/map/facade.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/map/facade.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/map/facade.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -68,4 +65,4 @@
</s:text>
</p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/map/map.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/map/map.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/map/map.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -72,4 +69,4 @@
<p><s:text name="message.map.paragraph2" /></p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/map/species.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/map/species.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/map/species.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -81,4 +78,4 @@
</s:form>
</s:else>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/map/zone.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/map/zone.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/map/zone.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -59,4 +56,4 @@
</s:form>
</s:else>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/pop/facade.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/pop/facade.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/pop/facade.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -62,4 +59,4 @@
</a>
</p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -86,4 +83,4 @@
<s:text name="message.com.downloadascsv"/>
</s:a>.</p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/pop/indicator.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/pop/indicator.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/pop/indicator.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -75,4 +72,4 @@
<img src="<s:url value='/images/zones/' /><s:property value='zonePicture' />" />
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/pop/species.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/pop/species.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/pop/species.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -66,4 +63,4 @@
<img src="<s:url value='/images/zones/' /><s:property value='zonePicture' />" />
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/pop/zone.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/pop/zone.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/pop/zone.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -79,4 +76,4 @@
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/quality.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/quality.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/quality.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -44,4 +41,4 @@
</s:text>
</p>
</body>
-</html>
\ No newline at end of file
+</html>
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-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-input.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -175,4 +172,4 @@
</s:if>
</form>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-success.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-success.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-success.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -66,4 +63,4 @@
<s:submit value="%{getText('message.source.download')}"></s:submit>
</s:form>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-wait.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-wait.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-wait.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
%%
@@ -38,4 +35,4 @@
<p><s:text name="message.search.extract.waitparagraph2" /></p>
<p><s:text name="message.search.extract.waitparagraph3" /></p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/source/facade.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/source/facade.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/source/facade.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -61,4 +58,4 @@
<p><s:text name="message.source.paragraph5" /></p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-data.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-data.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-data.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -81,4 +78,4 @@
<s:submit value="%{getText('message.source.download')}"></s:submit>
</s:form>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-quality.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-quality.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-quality.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -81,4 +78,4 @@
<s:submit value="%{getText('message.source.download')}"></s:submit>
</s:form>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/source/source.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/source/source.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/source/source.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -61,4 +58,4 @@
<s:text name="message.source.download"></s:text>
</s:a>.</p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/source/zone.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/source/zone.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/source/zone.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -75,4 +72,4 @@
</div>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/survey.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/survey.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/survey.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -255,4 +252,4 @@
</ul>
</p>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/upload-result-success.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/upload-result-success.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/upload-result-success.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -35,4 +32,4 @@
<s:submit />
</s:form>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/upload-result.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/upload-result.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/upload-result.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -38,4 +35,4 @@
<s:submit />
</s:form>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2013 Ifremer, Codelutin, Chatellier Eric
%%
@@ -129,4 +126,4 @@
</ul>
</div>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/decorators/sublayout.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/decorators/sublayout.jsp 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/decorators/sublayout.jsp 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2013 Ifremer, Codelutin, Chatellier Eric
%%
@@ -131,4 +128,4 @@
</ul>
</div>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/decorators.xml
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/decorators.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/decorators.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
%%
@@ -37,4 +34,4 @@
<pattern>/map/*</pattern>
<pattern>/source/*</pattern>
</decorator>
-</decorators>
\ No newline at end of file
+</decorators>
Modified: trunk/coser-web/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/web.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/WEB-INF/web.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -2,9 +2,6 @@
<!--
#%L
Coser :: Web
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2013 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/coser-web/src/main/webapp/js/coser.js
===================================================================
--- trunk/coser-web/src/main/webapp/js/coser.js 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/js/coser.js 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: Web
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
Modified: trunk/coser-web/src/main/webapp/styles/coser.css
===================================================================
--- trunk/coser-web/src/main/webapp/styles/coser.css 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/coser-web/src/main/webapp/styles/coser.css 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
/*
* #%L
* Coser :: Web
- *
- * $Id$
- * $HeadURL$
* %%
* Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
* %%
@@ -677,4 +674,4 @@
.listprojects .listprojects-result {
padding-left:20px;
-}
\ No newline at end of file
+}
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/pom.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -5,7 +5,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>5.0</version>
+ <version>5.0.1-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer</groupId>
Modified: trunk/src/site/en/rst/devel/textupdate.rst
===================================================================
--- trunk/src/site/en/rst/devel/textupdate.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/en/rst/devel/textupdate.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/en/rst/download.rst
===================================================================
--- trunk/src/site/en/rst/download.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/en/rst/download.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/en/rst/index.rst
===================================================================
--- trunk/src/site/en/rst/index.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/en/rst/index.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/en/rst/user/configuration.rst
===================================================================
--- trunk/src/site/en/rst/user/configuration.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/en/rst/user/configuration.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/en/rst/user/controls.rst
===================================================================
--- trunk/src/site/en/rst/user/controls.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/en/rst/user/controls.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
@@ -85,4 +82,4 @@
* the field ``survey`` is mandatory (requiredstring)
* the field ``surface`` must be a valid double number (the value NA is valid).
-
\ No newline at end of file
+
Modified: trunk/src/site/en/rst/user/dataformat.rst
===================================================================
--- trunk/src/site/en/rst/user/dataformat.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/en/rst/user/dataformat.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/en/rst/user/faq.rst
===================================================================
--- trunk/src/site/en/rst/user/faq.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/en/rst/user/faq.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/en/rst/user/guide_control.rst
===================================================================
--- trunk/src/site/en/rst/user/guide_control.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/en/rst/user/guide_control.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/en/rst/user/guide_listcontrols.rst
===================================================================
--- trunk/src/site/en/rst/user/guide_listcontrols.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/en/rst/user/guide_listcontrols.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/en/rst/user/guide_project.rst
===================================================================
--- trunk/src/site/en/rst/user/guide_project.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/en/rst/user/guide_project.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
@@ -70,4 +67,4 @@
It is then possible to go to the control_ or selection_ step.
.. _control: guide_control.html
-.. _selection: guide_selection.html
\ No newline at end of file
+.. _selection: guide_selection.html
Modified: trunk/src/site/en/rst/user/guide_results.rst
===================================================================
--- trunk/src/site/en/rst/user/guide_results.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/en/rst/user/guide_results.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/en/rst/user/guide_selection.rst
===================================================================
--- trunk/src/site/en/rst/user/guide_selection.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/en/rst/user/guide_selection.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/rst/devel/directory.rst
===================================================================
--- trunk/src/site/rst/devel/directory.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/devel/directory.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
.. * %%
@@ -78,4 +75,4 @@
| lists.properties | Contient les information de la sélection (4listes)|
+-------------------------+---------------------------------------------------+
| runrufi1/ | Dossier contenant les resultat d'un run RSufi |
-+-------------------------+---------------------------------------------------+
\ No newline at end of file
++-------------------------+---------------------------------------------------+
Modified: trunk/src/site/rst/devel/struts.rst
===================================================================
--- trunk/src/site/rst/devel/struts.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/devel/struts.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
@@ -27,4 +24,4 @@
========
Links :
- * http://old.nabble.com/Updating-the-Struts-2-Guice-plugin-td30364219.html
\ No newline at end of file
+ * http://old.nabble.com/Updating-the-Struts-2-Guice-plugin-td30364219.html
Modified: trunk/src/site/rst/devel/textupdate.rst
===================================================================
--- trunk/src/site/rst/devel/textupdate.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/devel/textupdate.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/rst/download.rst
===================================================================
--- trunk/src/site/rst/download.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/download.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/rst/index.rst
===================================================================
--- trunk/src/site/rst/index.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/index.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/rst/user/configuration.rst
===================================================================
--- trunk/src/site/rst/user/configuration.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/user/configuration.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/rst/user/controls.rst
===================================================================
--- trunk/src/site/rst/user/controls.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/user/controls.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/rst/user/dataformat.rst
===================================================================
--- trunk/src/site/rst/user/dataformat.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/user/dataformat.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/rst/user/faq.rst
===================================================================
--- trunk/src/site/rst/user/faq.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/user/faq.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/rst/user/guide_control.rst
===================================================================
--- trunk/src/site/rst/user/guide_control.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/user/guide_control.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/rst/user/guide_listcontrols.rst
===================================================================
--- trunk/src/site/rst/user/guide_listcontrols.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/user/guide_listcontrols.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/rst/user/guide_project.rst
===================================================================
--- trunk/src/site/rst/user/guide_project.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/user/guide_project.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/rst/user/guide_results.rst
===================================================================
--- trunk/src/site/rst/user/guide_results.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/user/guide_results.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/rst/user/guide_selection.rst
===================================================================
--- trunk/src/site/rst/user/guide_selection.rst 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/rst/user/guide_selection.rst 2014-03-07 23:12:11 UTC (rev 1134)
@@ -1,9 +1,6 @@
.. -
.. * #%L
.. * Coser
-.. *
-.. * $Id$
-.. * $HeadURL$
.. * %%
.. * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
.. * %%
Modified: trunk/src/site/site_en.xml
===================================================================
--- trunk/src/site/site_en.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/site_en.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -2,9 +2,6 @@
<!--
#%L
Coser
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
Modified: trunk/src/site/site_fr.xml
===================================================================
--- trunk/src/site/site_fr.xml 2014-03-07 20:41:45 UTC (rev 1133)
+++ trunk/src/site/site_fr.xml 2014-03-07 23:12:11 UTC (rev 1134)
@@ -2,9 +2,6 @@
<!--
#%L
Coser
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
%%
1
0
07 Mar '14
Author: tchemit
Date: 2014-03-07 21:41:45 +0100 (Fri, 07 Mar 2014)
New Revision: 1133
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1133
Log:
refs-30 #4651 (+ add missing svn properties)
Added:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserTechnicalException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/DuplicatedResultException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultFoundException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultRepositoryFoundException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultRepositoryInitializationException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/
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/echobase/
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/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/
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/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.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/CoserRequestFacadeAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestSpeciesAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java
trunk/coser-business/src/test/java/fr/ifremer/coser/bean/
trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/bean/ZoneMapTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/result/
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/
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/
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java
trunk/coser-business/src/test/resources/web/echobaseprojects/
trunk/coser-business/src/test/resources/web/echobaseprojects/project1/
trunk/coser-business/src/test/resources/web/echobaseprojects/project1/communityIndicators.csv
trunk/coser-business/src/test/resources/web/echobaseprojects/project1/maps/
trunk/coser-business/src/test/resources/web/echobaseprojects/project1/populationIndicators.csv
trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties
trunk/coser-business/src/test/resources/web/echobaseprojects/project1/species.csv
trunk/coser-business/src/test/resources/web/echobaseprojects/project2/
trunk/coser-business/src/test/resources/web/echobaseprojects/project2/communityIndicators.csv
trunk/coser-business/src/test/resources/web/echobaseprojects/project2/maps/
trunk/coser-business/src/test/resources/web/echobaseprojects/project2/populationIndicators.csv
trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties
trunk/coser-business/src/test/resources/web/echobaseprojects/project2/species.csv
trunk/coser-business/src/test/resources/web/legacyprojects/
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/codeTypeEspeces.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/control.properties
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testcatch_co.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testhaul_co.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testlength_co.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/teststrata_co.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testcatch.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testhaul.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testlength.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/teststrata.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/project.properties
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/reftaxSpecies.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/EstComInd_test.txt
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/EstPopInd_test.txt
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/EstComInd_test.txt
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/EstPopInd_test.txt
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/result.properties
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testcatch_se.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testhaul_se.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testlength_se.csv
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testselection1.selection
trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/teststrata_se.csv
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
Modified:
trunk/
trunk/LICENSE.txt
trunk/README.txt
trunk/changelog.txt
trunk/coser-business/LICENSE.txt
trunk/coser-business/README.txt
trunk/coser-business/changelog.txt
trunk/coser-business/pom.xml
trunk/coser-business/src/license/THIRD-PARTY.properties
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserClassLoader.java
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/AbstractDataContainer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/AbstractEntity.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Control.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Selection.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/CategoryLineCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/Command.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/DeleteLineCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/MergeSpeciesCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/ModifyFieldCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/command/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/ControlError.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/ControlErrorGroup.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/DiffCatchLengthControlError.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesControlError.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesLengthControlError.java
trunk/coser-business/src/main/java/fr/ifremer/coser/control/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/data/AbstractDataEntity.java
trunk/coser-business/src/main/java/fr/ifremer/coser/data/Catch.java
trunk/coser-business/src/main/java/fr/ifremer/coser/data/Haul.java
trunk/coser-business/src/main/java/fr/ifremer/coser/data/Length.java
trunk/coser-business/src/main/java/fr/ifremer/coser/data/Strata.java
trunk/coser-business/src/main/java/fr/ifremer/coser/data/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommandService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
trunk/coser-business/src/main/java/fr/ifremer/coser/services/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorage.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/MemoryDataStorage.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/Coordinate.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/DataType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/InputStreamKnownSizeBody.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressMonitor.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressReader.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java
trunk/coser-business/src/main/java/fr/ifremer/coser/util/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/AbstractFieldValidator.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserCheckDoubleValidator.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserDoubleValidator.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserExpressionValidator.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/RegexFieldValidator.java
trunk/coser-business/src/main/java/fr/ifremer/coser/validators/package-info.java
trunk/coser-business/src/main/resources/ftl/decharge_en.ftl
trunk/coser-business/src/main/resources/ftl/decharge_fr.ftl
trunk/coser-business/src/main/resources/ftl/map.ftl
trunk/coser-business/src/main/resources/ftl/metainfo_en.ftl
trunk/coser-business/src/main/resources/ftl/metainfo_fr.ftl
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/main/resources/validators.xml
trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Catch-error-validation.xml
trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-error-validation.xml
trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-fatal-validation.xml
trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-warning-validation.xml
trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Length-error-validation.xml
trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Strata-error-validation.xml
trunk/coser-business/src/test/java/fr/ifremer/coser/CoserUtilsTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/CommandServiceTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/CommonServiceTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/ControlServiceTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/PublicationServiceTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/storage/MemoryDataStorageTest.java
trunk/coser-business/src/test/resources/csv/badformat/capturesbadseparator.csv
trunk/coser-business/src/test/resources/csv/badformat/stratesheadername.csv
trunk/coser-business/src/test/resources/csv/badformat/traitsheaderorder.csv
trunk/coser-business/src/test/resources/csv/correct/testcatch.csv
trunk/coser-business/src/test/resources/csv/correct/testhaul.csv
trunk/coser-business/src/test/resources/csv/correct/testlength.csv
trunk/coser-business/src/test/resources/csv/correct/testreftax.csv
trunk/coser-business/src/test/resources/csv/correct/teststrata.csv
trunk/coser-business/src/test/resources/csv/correct/testtypeespeces.csv
trunk/coser-business/src/test/resources/log4j.properties
trunk/coser-business/src/test/resources/projects/project2/codeTypeEspeces.csv
trunk/coser-business/src/test/resources/projects/project2/control/control.properties
trunk/coser-business/src/test/resources/projects/project2/control/testcatch_co.csv
trunk/coser-business/src/test/resources/projects/project2/control/testhaul_co.csv
trunk/coser-business/src/test/resources/projects/project2/control/testlength_co.csv
trunk/coser-business/src/test/resources/projects/project2/control/testlength_del.csv
trunk/coser-business/src/test/resources/projects/project2/control/teststrata_co.csv
trunk/coser-business/src/test/resources/projects/project2/original/testcatch.csv
trunk/coser-business/src/test/resources/projects/project2/original/testhaul.csv
trunk/coser-business/src/test/resources/projects/project2/original/testlength.csv
trunk/coser-business/src/test/resources/projects/project2/original/teststrata.csv
trunk/coser-business/src/test/resources/projects/project2/project.properties
trunk/coser-business/src/test/resources/projects/project2/reftaxSpecies.csv
trunk/coser-business/src/test/resources/projects/project2/selections/testselection2/testcatch_se.csv
trunk/coser-business/src/test/resources/projects/project2/selections/testselection2/testhaul_se.csv
trunk/coser-business/src/test/resources/projects/project2/selections/testselection2/testlength_se.csv
trunk/coser-business/src/test/resources/projects/project2/selections/testselection2/testselection2.selection
trunk/coser-business/src/test/resources/projects/project2/selections/testselection2/teststrata_se.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/codeTypeEspeces.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/control.properties
trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/testcatch_co.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/testhaul_co.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/testlength_co.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/teststrata_co.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/original/testcatch.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/original/testhaul.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/original/testlength.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/original/teststrata.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/project.properties
trunk/coser-business/src/test/resources/projects/projectctrvalidated/reftaxSpecies.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/EstComInd_test.txt
trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/EstPopInd_test.txt
trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties
trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/testcatch_se.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/testhaul_se.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/testlength_se.csv
trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/testselection1.selection
trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/teststrata_se.csv
trunk/coser-business/src/test/resources/web/upload1.zip
trunk/coser-business/src/test/resources/web/upload2.zip
trunk/coser-business/src/test/resources/webindicators.csv
trunk/coser-business/src/test/resources/webzones.csv
trunk/coser-ui/LICENSE.txt
trunk/coser-ui/README.txt
trunk/coser-ui/changelog.txt
trunk/coser-ui/pom.xml
trunk/coser-ui/src/license/THIRD-PARTY.properties
trunk/coser-ui/src/main/assembly/bin.xml
trunk/coser-ui/src/main/assembly/coser
trunk/coser-ui/src/main/assembly/coser.bat
trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserException.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserExceptionHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/ContainerRedoMenu.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/ContainerUndoMenu.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrame.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/HomeView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/SelectionsListMenu.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/CommonHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/LengthStructureMatrixFilter.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesTableCellRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlCategoryListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlCategoryListRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlDataTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlDuplicatedLineTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlErrorTreeRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlFindReplaceDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlGraphFrame.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/GlobalControlErrorModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/SpecyComboModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/Freize.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/FreizeHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/FreizeModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/CoserMap.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/HaulLocationHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ConfigurationHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ConfigurationView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/NoCopiedLayerUI.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/OptionHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectMapsListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectNamesListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SamplingEffortRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionFilesView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesFusionDialog.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesTypesRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/FileListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/MaturitySpeciesListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/OccurrenceDensitySpeciesListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SizeAllYearSpeciesListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SpeciesListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SpeciesTypesListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/StrataListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/YearListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/CommandListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/CommandListRenderer.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionByProjectTreeModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayHandler.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayView.jaxx
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListSelectionModel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserProgressBar.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/ErrorHelper.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionLayout.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPaneSubPanel.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/ComponentTitledBorder.java
trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/LookAndFeelViewMenuItem.java
trunk/coser-ui/src/main/jnlp/coser-jnlp.vm
trunk/coser-ui/src/main/resources/coser.properties
trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/Project-error-validation.xml
trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/RSufiResult-error-validation.xml
trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/Selection-error-validation.xml
trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
trunk/coser-ui/src/main/resources/icons/accept.png
trunk/coser-ui/src/main/resources/icons/agt_action_fail.png
trunk/coser-ui/src/main/resources/icons/arrow_jion_up.png
trunk/coser-ui/src/main/resources/icons/arrow_left.png
trunk/coser-ui/src/main/resources/icons/arrow_right.png
trunk/coser-ui/src/main/resources/icons/arrow_rotate_clockwise.png
trunk/coser-ui/src/main/resources/icons/button_ok.png
trunk/coser-ui/src/main/resources/icons/cancel.png
trunk/coser-ui/src/main/resources/icons/chart_bar.png
trunk/coser-ui/src/main/resources/icons/chart_curve.png
trunk/coser-ui/src/main/resources/icons/coser.ico
trunk/coser-ui/src/main/resources/icons/disk.png
trunk/coser-ui/src/main/resources/icons/logo.png
trunk/coser-ui/src/main/resources/icons/logo300.png
trunk/coser-ui/src/main/resources/icons/map.png
trunk/coser-ui/src/main/resources/icons/report.png
trunk/coser-ui/src/main/resources/icons/spellcheck.png
trunk/coser-ui/src/main/resources/icons/stock_lock.png
trunk/coser-ui/src/main/resources/icons/stock_select_clear.png
trunk/coser-ui/src/main/resources/icons/stock_select_table.png
trunk/coser-ui/src/main/resources/icons/table.png
trunk/coser-ui/src/main/resources/icons/warning.png
trunk/coser-ui/src/main/resources/log4j.properties
trunk/coser-ui/src/main/resources/maps/vmap_area_thin.shp
trunk/coser-ui/src/main/resources/maps/vmap_area_thin.ssx
trunk/coser-web/LICENSE.txt
trunk/coser-web/README.txt
trunk/coser-web/changelog.txt
trunk/coser-web/pom.xml
trunk/coser-web/src/license/THIRD-PARTY.properties
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebException.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/FacadeAction.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/CommonFacade.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/FacadeAction.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/FacadeAction.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/FacadeAction.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/SourceQualityAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java
trunk/coser-web/src/main/resources/coserweb.properties
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_en.properties
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties
trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties
trunk/coser-web/src/main/resources/i18n/coser-web_en_GB.properties
trunk/coser-web/src/main/resources/i18n/coser-web_fr_FR.properties
trunk/coser-web/src/main/resources/log4j.properties
trunk/coser-web/src/main/resources/struts.xml
trunk/coser-web/src/main/webapp/WEB-INF/content/admin/index.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/admin/list-projects.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/admin/perform-login-input.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/com/facade.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/com/indicator.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/com/zone.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/documents.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/index.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/map/facade.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/map/map.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/map/species.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/map/zone.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/pop/facade.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/pop/indicator.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/pop/species.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/pop/zone.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/quality.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-input.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-success.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-wait.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/source/facade.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-data.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-quality.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/source/source.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/source/zone.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/survey.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/upload-result-success.jsp
trunk/coser-web/src/main/webapp/WEB-INF/content/upload-result.jsp
trunk/coser-web/src/main/webapp/WEB-INF/decorators.xml
trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp
trunk/coser-web/src/main/webapp/WEB-INF/decorators/sublayout.jsp
trunk/coser-web/src/main/webapp/WEB-INF/web.xml
trunk/coser-web/src/main/webapp/favicon.png
trunk/coser-web/src/main/webapp/images/bas_page.png
trunk/coser-web/src/main/webapp/images/bas_page2.png
trunk/coser-web/src/main/webapp/images/carte_accueil.png
trunk/coser-web/src/main/webapp/images/contenu_haut.png
trunk/coser-web/src/main/webapp/images/degrade.png
trunk/coser-web/src/main/webapp/images/es.png
trunk/coser-web/src/main/webapp/images/facadesmap.png
trunk/coser-web/src/main/webapp/images/fond.jpg
trunk/coser-web/src/main/webapp/images/fond_02.jpg
trunk/coser-web/src/main/webapp/images/fond_contenu.png
trunk/coser-web/src/main/webapp/images/footer.png
trunk/coser-web/src/main/webapp/images/footer_02.jpg
trunk/coser-web/src/main/webapp/images/fr.png
trunk/coser-web/src/main/webapp/images/gb.png
trunk/coser-web/src/main/webapp/images/haut_page.png
trunk/coser-web/src/main/webapp/images/ico_accueil.png
trunk/coser-web/src/main/webapp/images/ico_carte.png
trunk/coser-web/src/main/webapp/images/logo.png
trunk/coser-web/src/main/webapp/images/logoIfremer.png
trunk/coser-web/src/main/webapp/images/logoSIH.png
trunk/coser-web/src/main/webapp/images/puce_liste.png
trunk/coser-web/src/main/webapp/images/puce_liste_18.png
trunk/coser-web/src/main/webapp/images/stock_select_clear.png
trunk/coser-web/src/main/webapp/images/stock_select_table.png
trunk/coser-web/src/main/webapp/images/top_contenu.png
trunk/coser-web/src/main/webapp/images/warper_page.png
trunk/coser-web/src/main/webapp/images/worldsmall.png
trunk/coser-web/src/main/webapp/images/zones/C_Ciem-4b-4c-E7d.png
trunk/coser-web/src/main/webapp/images/zones/C_Ciem-4b-4c.png
trunk/coser-web/src/main/webapp/images/zones/C_Ciem-4c-E7d.png
trunk/coser-web/src/main/webapp/images/zones/C_Ciem-4c.png
trunk/coser-web/src/main/webapp/images/zones/C_Ciem-4c4-E7d.png
trunk/coser-web/src/main/webapp/images/zones/C_Ciem-4c4.png
trunk/coser-web/src/main/webapp/images/zones/C_Ciem-7d.png
trunk/coser-web/src/main/webapp/images/zones/C_Ciem-E7d.png
trunk/coser-web/src/main/webapp/images/zones/C_Crustaflam.png
trunk/coser-web/src/main/webapp/images/zones/C_E-Corse.png
trunk/coser-web/src/main/webapp/images/zones/C_Facades.png
trunk/coser-web/src/main/webapp/images/zones/C_GdG-Ciem-7.png
trunk/coser-web/src/main/webapp/images/zones/C_GdG-Ech.png
trunk/coser-web/src/main/webapp/images/zones/C_GdG-MC.png
trunk/coser-web/src/main/webapp/images/zones/C_GdL.png
trunk/coser-web/src/main/webapp/images/zones/C_MC-Ciem-7.png
trunk/coser-web/src/main/webapp/images/zones/C_MC-Ech.png
trunk/coser-web/src/main/webapp/images/zones/C_Noursein.png
trunk/coser-web/src/main/webapp/images/zones/C_Noursom.png
trunk/coser-web/src/main/webapp/images/zones/C_Nurvil.png
trunk/coser-web/src/main/webapp/js/coser.js
trunk/coser-web/src/main/webapp/js/jquery-1.8.2.min.js
trunk/coser-web/src/main/webapp/js/jquery.expander.min.js
trunk/coser-web/src/main/webapp/pdf/Web_EstComInd_PresentationIndic_EN.pdf
trunk/coser-web/src/main/webapp/pdf/Web_EstComInd_PresentationIndic_FR.pdf
trunk/coser-web/src/main/webapp/pdf/Web_EstPopInd_PresentationIndic_EN.pdf
trunk/coser-web/src/main/webapp/pdf/Web_EstPopInd_PresentationIndic_FR.pdf
trunk/coser-web/src/main/webapp/styles/coser.css
trunk/pom.xml
trunk/src/site/en/rst/devel/textupdate.rst
trunk/src/site/en/rst/download.rst
trunk/src/site/en/rst/index.rst
trunk/src/site/en/rst/user/configuration.rst
trunk/src/site/en/rst/user/controls.rst
trunk/src/site/en/rst/user/dataformat.rst
trunk/src/site/en/rst/user/faq.rst
trunk/src/site/en/rst/user/guide_control.rst
trunk/src/site/en/rst/user/guide_listcontrols.rst
trunk/src/site/en/rst/user/guide_project.rst
trunk/src/site/en/rst/user/guide_results.rst
trunk/src/site/en/rst/user/guide_selection.rst
trunk/src/site/resources/icons/logo100.png
trunk/src/site/resources/images/en/01-noproject.png
trunk/src/site/resources/images/en/02-createproject.png
trunk/src/site/resources/images/en/03-openproject.png
trunk/src/site/resources/images/en/04-projectsummary.png
trunk/src/site/resources/images/en/10-controlmain.png
trunk/src/site/resources/images/en/11-controlmenu1.png
trunk/src/site/resources/images/en/12-controlmenu2.png
trunk/src/site/resources/images/en/13-controlgraphdiff.png
trunk/src/site/resources/images/en/14-controlgraphlength.png
trunk/src/site/resources/images/en/20-selectiondetail.png
trunk/src/site/resources/images/en/21-selectionyears.png
trunk/src/site/resources/images/en/22-selectionstrata.png
trunk/src/site/resources/images/en/23-selectionspecies.png
trunk/src/site/resources/images/en/24-selectionlists.png
trunk/src/site/resources/images/en/25-selectionresults.png
trunk/src/site/resources/images/en/26-selectionaddresult.png
trunk/src/site/resources/images/en/27-selectionmenu0.png
trunk/src/site/resources/images/en/28-selectionmenu1.png
trunk/src/site/resources/images/en/90-configurationpath.png
trunk/src/site/resources/images/en/91-configurationvalues.png
trunk/src/site/resources/images/fr/01-noproject.png
trunk/src/site/resources/images/fr/02-createproject.png
trunk/src/site/resources/images/fr/03-openproject.png
trunk/src/site/resources/images/fr/04-projectsummary.png
trunk/src/site/resources/images/fr/10-controlmain.png
trunk/src/site/resources/images/fr/11-controlmenu1.png
trunk/src/site/resources/images/fr/12-controlmenu2.png
trunk/src/site/resources/images/fr/13-controlgraphdiff.png
trunk/src/site/resources/images/fr/14-controlgraphlength.png
trunk/src/site/resources/images/fr/20-selectiondetail.png
trunk/src/site/resources/images/fr/21-selectionyears.png
trunk/src/site/resources/images/fr/22-selectionstrata.png
trunk/src/site/resources/images/fr/23-selectionspecies.png
trunk/src/site/resources/images/fr/24-selectionlists.png
trunk/src/site/resources/images/fr/25-selectionresults.png
trunk/src/site/resources/images/fr/26-selectionaddresult.png
trunk/src/site/resources/images/fr/27-selectionmenu0.png
trunk/src/site/resources/images/fr/28-selectionmenu1.png
trunk/src/site/resources/images/fr/90-configurationpath.png
trunk/src/site/resources/images/fr/91-configurationvalues.png
trunk/src/site/rst/devel/directory.rst
trunk/src/site/rst/devel/struts.rst
trunk/src/site/rst/devel/textupdate.rst
trunk/src/site/rst/download.rst
trunk/src/site/rst/index.rst
trunk/src/site/rst/user/configuration.rst
trunk/src/site/rst/user/controls.rst
trunk/src/site/rst/user/dataformat.rst
trunk/src/site/rst/user/faq.rst
trunk/src/site/rst/user/guide_control.rst
trunk/src/site/rst/user/guide_listcontrols.rst
trunk/src/site/rst/user/guide_project.rst
trunk/src/site/rst/user/guide_results.rst
trunk/src/site/rst/user/guide_selection.rst
trunk/src/site/site_en.xml
trunk/src/site/site_fr.xml
Property changes on: trunk
___________________________________________________________________
Modified: svn:ignore
- .settings
.project
target
*.iml
*.ipr
*.iws
+ .settings
.project
target
*.iml
*.ipr
*.iws
*.log
Property changes on: trunk/LICENSE.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/README.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/changelog.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/LICENSE.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/README.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/changelog.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/pom.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/license/THIRD-PARTY.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -47,11 +47,12 @@
public CoserBusinessConfig() {
// init configuration with default options
- for (CoserBusinessOption o : CoserBusinessOption.values()) {
- if (o.defaultValue != null) {
- setDefaultOption(o.key, o.defaultValue);
- }
- }
+ loadDefaultOptions(CoserBusinessOption.values());
+// for (CoserBusinessOption o : CoserBusinessOption.values()) {
+// if (o.defaultValue != null) {
+// setDefaultOption(o.key, o.defaultValue);
+// }
+// }
}
/**
@@ -214,6 +215,11 @@
return result;
}
+ public File getWebEchobaseProjectsDirectory() {
+ File result = getOptionAsFile(CoserBusinessOption.WEB_ECHOBASE_PROJECTS_DIRECTORY.key);
+ return result;
+ }
+
public File getWebIndicatorsFile() {
File result = getOptionAsFile(CoserBusinessOption.WEB_INDICATORS.key);
return result;
@@ -265,6 +271,7 @@
WEB_PROPERTIES_FILE("coser.web.properties.file", t("coser.config.web.properties.file.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "web.properties"),
WEB_INDICATORS_PROJECTS_DIRECTORY("coser.web.indicators.projects.directory", t("coser.config.web.indicators.projects.directory.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webindicatorsprojects"),
WEB_MAPS_PROJECTS_DIRECTORY("coser.web.maps.projects.directory", t("coser.config.web.maps.projects.directory.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webmapsprojects"),
+ WEB_ECHOBASE_PROJECTS_DIRECTORY("coser.web.echobase.projects.directory", t("coser.config.web.echobase.projects.directory.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webechobaseprojects"),
WEB_INDICATORS("coser.web.indicators.file", t("coser.config.web.indicators.file.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webindicators.csv"),
WEB_ZONES("coser.web.zones.file", t("coser.config.web.zones.file.description"), "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webzones.csv"),
WEB_PUBLICATION_EMAIL("coser.web.newresult.emails", t("coser.config.web.newresult.emails.description"), null);
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessException.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserClassLoader.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserConstants.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserTechnicalException.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserTechnicalException.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserTechnicalException.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,50 @@
+package fr.ifremer.coser;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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%
+ */
+
+/**
+ * Technical exception.
+ *
+ * Created on 3/6/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserTechnicalException extends RuntimeException {
+ private static final long serialVersionUID = 1L;
+
+ public CoserTechnicalException(String message) {
+ super(message);
+ }
+
+ public CoserTechnicalException(Throwable cause) {
+ super(cause);
+ }
+
+ public CoserTechnicalException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserTechnicalException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserUtils.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/AbstractDataContainer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/AbstractEntity.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Control.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,284 @@
+package fr.ifremer.coser.bean;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.Charsets;
+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.lang3.StringUtils;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Serializable;
+import java.io.Writer;
+import java.util.Date;
+import java.util.Properties;
+
+/**
+ * Represent the storage of the EchoBase project published to CoserWeb application.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class EchoBaseProject implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String METADATA_FILE = "project.properties";
+
+ /**
+ * Base directory of the project.
+ */
+ protected final File basedir;
+
+ protected String author;
+
+ protected String facadeName;
+
+ protected String zoneName;
+
+ protected String surveyName;
+
+ protected String comment;
+
+ protected Date creationDate;
+
+ public EchoBaseProject(File basedir) {
+ this.basedir = basedir;
+ }
+
+ public File getBasedir() {
+ return basedir;
+ }
+
+ public String getName() {
+ return getBasedir().getName();
+ }
+
+ public String getAuthor() {
+ return author;
+ }
+
+ public void setAuthor(String author) {
+ this.author = author;
+ }
+
+ public String getFacadeName() {
+ return facadeName;
+ }
+
+ public void setFacadeName(String facadeName) {
+ this.facadeName = facadeName;
+ }
+
+ public String getZoneName() {
+ return zoneName;
+ }
+
+ public void setZoneName(String zoneName) {
+ this.zoneName = zoneName;
+ }
+
+ public String getSurveyName() {
+ return surveyName;
+ }
+
+ public void setSurveyName(String surveyName) {
+ this.surveyName = surveyName;
+ }
+
+ public String getComment() {
+ return comment;
+ }
+
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+
+ public Date getCreationDate() {
+ return creationDate;
+ }
+
+ public void setCreationDate(Date creationDate) {
+ this.creationDate = creationDate;
+ }
+
+ public File getSpeciesDefinitionFile() {
+ return new File(basedir, "species.csv");
+ }
+
+ public File getPopulationIndicatorsFile() {
+ return new File(basedir, "populationIndicators.csv");
+ }
+
+ public File getCommunityIndicatorsFile() {
+ return new File(basedir, "communityIndicators.csv");
+ }
+
+ public File getMapsDirectory() {
+ return new File(basedir, "maps");
+ }
+
+ /**
+ * Load a project from his basedir.
+ *
+ * @throws IOException if could not read the meta data file
+ */
+ public void load() throws IOException {
+ File metadataFile = getMetaDataFile();
+ Reader reader = Files.newReader(metadataFile, Charsets.UTF_8);
+ try {
+ Properties p = new Properties();
+ p.load(reader);
+ reader.close();
+ fromProperties(p);
+ } finally {
+ IOUtils.closeQuietly(reader);
+ }
+ }
+
+ /**
+ * Save the project.
+ *
+ * @throws IOException if could not write the meta-data file
+ */
+ public void save() throws IOException {
+
+ File metadataFile = getMetaDataFile();
+ Writer writer = Files.newWriter(metadataFile, Charsets.UTF_8);
+ try {
+ Properties p = toProperties();
+ p.store(writer, "Saved by " + EchoBaseProject.class.getName());
+ writer.close();
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+ }
+
+ protected File getMetaDataFile() {
+ return new File(basedir, METADATA_FILE);
+ }
+
+ protected Properties toProperties() {
+ Properties props = new Properties();
+ if (author != null) {
+ props.setProperty("project.author", author);
+ }
+ if (facadeName != null) {
+ props.setProperty("project.facadeName", facadeName);
+ }
+ if (zoneName != null) {
+ props.setProperty("project.zoneName", zoneName);
+ }
+ if (surveyName!= null) {
+ props.setProperty("project.surveyName", surveyName);
+ }
+ if (comment != null) {
+ props.setProperty("project.comment", comment);
+ }
+ if (creationDate != null) {
+ props.setProperty("project.creationDate", String.valueOf(creationDate.getTime()));
+ }
+ return props;
+ }
+
+ protected void fromProperties(Properties props) {
+ if (props.containsKey("project.author")) {
+ setAuthor(props.getProperty("project.author"));
+ }
+ if (props.containsKey("project.facadeName")) {
+ setFacadeName(props.getProperty("project.facadeName"));
+ }
+ if (props.containsKey("project.zoneName")) {
+ setZoneName(props.getProperty("project.zoneName"));
+ }
+ if (props.containsKey("project.surveyName")) {
+ setSurveyName(props.getProperty("project.surveyName"));
+ }
+ if (props.containsKey("project.comment")) {
+ setComment(props.getProperty("project.comment"));
+ }
+ if (props.containsKey("project.creationDate")) {
+ Date date = new Date(Long.parseLong(props.getProperty("project.creationDate")));
+ setCreationDate(date);
+ }
+ }
+
+ public static FilenameFilter newMapSpeciesFilenameFilter(String surveyName) {
+ OrFileFilter result = new OrFileFilter();
+ result.addFileFilter(new PrefixFileFilter(surveyName + "_"));
+ result.addFileFilter(new SuffixFileFilter(".png"));
+ return result;
+ }
+
+ public static Function<File, String> newMapFileToSpeciesCode(String surveyName) {
+ return new MapFileToSpeciesCodeFunction(surveyName);
+ }
+
+ public static Function<String, String> newSpeciesCodeToMapFileName(String surveyName) {
+ return new SpeciesCodeToMapFileNameFunction(surveyName);
+ }
+
+ protected static class MapFileToSpeciesCodeFunction implements Function<File, String> {
+
+ private final String zoneName;
+
+ public MapFileToSpeciesCodeFunction(String zoneName) {
+ this.zoneName = zoneName;
+ }
+
+ @Override
+ public String apply(File input) {
+ String fileName = input.getName();
+ String species = fileName.substring(zoneName.length() + 1);
+ species = StringUtils.substringBefore(species, ".");
+ return species;
+ }
+ }
+
+ protected static class SpeciesCodeToMapFileNameFunction implements Function<String, String> {
+
+ private final String zoneName;
+
+ public SpeciesCodeToMapFileNameFunction(String zoneName) {
+ this.zoneName = zoneName;
+ }
+
+ @Override
+ public String apply(String input) {
+
+ String fileName = zoneName + "_" + input + ".png";
+ return fileName;
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,130 @@
+package fr.ifremer.coser.bean;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Contains the localized indicator definitions.
+ * <p/>
+ * Created on 3/6/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class IndicatorMap {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(IndicatorMap.class);
+
+ /**
+ * Indicator map (id, locale > translation, id, "unit" > unit) (etat du service).
+ */
+ protected final MultiKeyMap<String, String> map;
+
+ public IndicatorMap(File indicatorsFile) {
+ Preconditions.checkNotNull(indicatorsFile);
+
+ 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]);
+ }
+ }
+
+ public String getIndicatorValue(String indicator, Locale locale) {
+ Preconditions.checkNotNull(indicator);
+ Preconditions.checkNotNull(locale);
+ String translations = getIndicatorValue(indicator, locale.getLanguage());
+ if (translations == null) {
+ translations = "##" + indicator + "##" + locale.getLanguage();
+ }
+ return translations;
+ }
+
+ public String getIndicatorUnit(String indicator) {
+ Preconditions.checkNotNull(indicator);
+ return getIndicatorValue(indicator, "unit");
+ }
+
+ /**
+ * 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(Collection<String> indicatorList, Locale locale) {
+
+ Map<String, String> result = Maps.newTreeMap();
+
+ if (indicatorList != null) {
+
+ for (String indicator : indicatorList) {
+ String indicatorLabel = getIndicatorValue(indicator, locale);
+ result.put(indicator, indicatorLabel);
+ }
+ }
+
+ return result;
+ }
+
+ protected MultiKeyMap<String, String> getMap() {
+ return map;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Project.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResultPath.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/Selection.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesFieldType.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,213 @@
+package fr.ifremer.coser.bean;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Lists;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import fr.ifremer.coser.storage.MemoryDataStorage;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Contains all usefull methods on zone definitions.
+ * <p/>
+ * Created on 3/6/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ZoneMap {
+
+ protected final DataStorage storage;
+
+ public ZoneMap(File zonesFile) {
+ // l'operation n'est pas obligatoire pour tous les clients
+ // lourd, le fichier peut donc ne pas exister
+ if (zonesFile == null || zonesFile.isFile()) {
+ storage = DataStorages.load(zonesFile);
+ } else {
+ storage = new MemoryDataStorage();
+ }
+ }
+
+ /**
+ * Retourne les nom d'une zone (avec la facade, l'année et la serie) en
+ * fonction de l'id de la zone.
+ *
+ * @param zoneId zone id
+ * @return zone name (or {@code null} if not found)
+ */
+ public String getZoneFullName(String zoneId) {
+ String resultName = null;
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+ int zoneIndex = storage.indexOf(zoneId);
+ if (zoneIndex != -1) {
+ String[] tuple = storage.get(zoneIndex);
+ resultName = tuple[2];
+ resultName += " - " + tuple[3];
+ resultName += " - " + tuple[4];
+ resultName += " - " + tuple[5];
+ }
+ return resultName;
+ }
+
+ /**
+ * Retourne les nom d'une zone (avec l'année et la serie) en
+ * fonction de l'id de la zone.
+ *
+ * @param zoneId zone id
+ * @return zone name (or {@code null} if not found)
+ */
+ public String getZoneFullNameWithNoFacade(String zoneId) {
+ String resultName = null;
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+ int zoneIndex = storage.indexOf(zoneId);
+ if (zoneIndex != -1) {
+ String[] tuple = storage.get(zoneIndex);
+ resultName = tuple[3];
+ resultName += " - " + tuple[4];
+ resultName += " - " + tuple[5];
+ }
+ return resultName;
+ }
+
+ /**
+ * Recupere la liste des meta info pour chaque id de zone sous forme de Map.
+ *
+ * @param locale locale
+ * @return zone meta info map
+ */
+ public Map<String, String> getZoneMetaInfo(Locale locale) {
+ Map<String, String> result = new HashMap<String, String>();
+
+ Iterator<String[]> itZone = storage.iterator(true);
+ while (itZone.hasNext()) {
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+ String[] tuple = itZone.next();
+ if (locale != null && "fr".equals(locale.getLanguage())) {
+ result.put(tuple[0], tuple[6]);
+ } else if (locale != null && "es".equals(locale.getLanguage())) {
+ result.put(tuple[0], tuple[8]);
+ } else {
+ result.put(tuple[0], tuple[7]);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Recupere la liste des cartes pour chaque id de zone sous forme de Map.
+ *
+ * @return zone images map
+ */
+ public Map<String, String> getZonePictures() {
+ Map<String, String> result = new HashMap<String, String>();
+
+ Iterator<String[]> itZone = storage.iterator(true);
+ while (itZone.hasNext()) {
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+ String[] tuple = itZone.next();
+ result.put(tuple[0], tuple[9]);
+ }
+
+ return result;
+ }
+
+ /**
+ * Retourne les zones disponible par facade.
+ *
+ * @return couple facadeid/list<zoneid>
+ */
+ public Map<String, List<String>> getZoneByFacade() {
+ Map<String, List<String>> zonesByFacade = new HashMap<String, List<String>>();
+
+ // get subzone for main zone
+ Iterator<String[]> itZone = storage.iterator(true);
+ while (itZone.hasNext()) {
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+ String[] tuple = itZone.next();
+ String facadeid = tuple[1];
+ String zoneid = tuple[0];
+ List<String> zones = zonesByFacade.get(facadeid);
+ if (zones == null) {
+ zones = new ArrayList<String>();
+ zonesByFacade.put(facadeid, zones);
+ }
+ zones.add(zoneid);
+ }
+
+ return zonesByFacade;
+ }
+
+ /**
+ * Get facades list (as facadeid/facadename).
+ *
+ * @return facades map
+ */
+ public Map<String, String> getFacades() {
+ Map<String, String> facades = new LinkedHashMap<String, String>();
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+ Iterator<String[]> itZone = storage.iterator(true);
+ while (itZone.hasNext()) {
+ String[] tuple = itZone.next();
+ // on a pas d'id pour les facades
+ facades.put(tuple[1], tuple[2]);
+ }
+ return facades;
+ }
+
+ /**
+ * Get all zones for a given facade.
+ * <p/>
+ * If no facade is given, then return all zones.
+ *
+ * @return zones for the given facade (or all zones if no facade is given)
+ */
+ public List<String> getZonesForFacade(String facade) {
+ List<String> facades = Lists.newArrayList();
+ // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+ Iterator<String[]> itZone = storage.iterator(true);
+ while (itZone.hasNext()) {
+ String[] tuple = itZone.next();
+ if (facade == null || tuple[1].equals(facade)) {
+ facades.add(tuple[0]);
+ }
+ }
+ return facades;
+ }
+
+ public DataStorage getStorage() {
+ return storage;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/ZoneMap.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/package-info.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/command/CategoryLineCommand.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/command/Command.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/command/DeleteLineCommand.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/command/MergeSpeciesCommand.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/command/ModifyFieldCommand.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/command/package-info.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/control/ControlError.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/control/ControlErrorGroup.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/control/DiffCatchLengthControlError.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesControlError.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/control/SpeciesLengthControlError.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/control/package-info.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/data/AbstractDataEntity.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/data/Catch.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/data/Haul.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/data/Length.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/data/Strata.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/data/package-info.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,45 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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 java.io.Serializable;
+import java.util.Locale;
+
+/**
+ * Request to obtain results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequest extends Serializable{
+
+ Locale getLocale();
+
+ void setLocale(Locale locale);
+
+ boolean isFilled();
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResult.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,45 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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 java.io.Serializable;
+
+/**
+ * Result of a request.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserResult extends Serializable {
+
+ /**
+ * @return the name of the repository which produces the result.
+ */
+ String getSource();
+
+ Object getResult();
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResult.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,204 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.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 fr.ifremer.coser.result.request.IndicatorRequest;
+import org.apache.commons.collections.MapUtils;
+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 request some results on the web server side.
+ * <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>
+ * @see ResultRepositoryProvider
+ * @see ResultRepository
+ * @see CoserResult
+ * @since 1.5
+ */
+public class CoserResultEngine {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(CoserResultEngine.class);
+
+ /**
+ * List of result repository providers.
+ */
+ protected final Set<ResultRepositoryProvider<?>> repositoryProviders;
+
+ /**
+ * Result repositories loaded lazy from their provider.
+ *
+ * @see #getRepositories()
+ */
+ 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, config.getWebEchobaseProjectsDirectory()));
+ return result;
+ }
+
+ public CoserResultEngine(Set<ResultRepositoryProvider<?>> repositoryProviders) {
+ Preconditions.checkNotNull(repositoryProviders);
+ this.repositoryProviders = repositoryProviders;
+ }
+
+ public void resetRepositories() {
+ this.repositories = null;
+ }
+
+ public Map<String, String> getAvailableZones(CoserRequest request) {
+ Map<String, String> result = Maps.newHashMap();
+ for (ResultRepository repository : getRepositories()) {
+ Map<String, String> resultForRepository = repository.getAvailableZones(request);
+ if (MapUtils.isNotEmpty(resultForRepository)) {
+ result.putAll(resultForRepository);
+ }
+ }
+ return result;
+ }
+
+ public Map<String, String> getAvailableSpecies(CoserRequest request) {
+ Map<String, String> result = Maps.newHashMap();
+ for (ResultRepository repository : getRepositories()) {
+ Map<String, String> resultForRepository = repository.getAvailableSpecies(request);
+ if (MapUtils.isNotEmpty(resultForRepository)) {
+ result.putAll(resultForRepository);
+ }
+ }
+ return result;
+ }
+
+ public Map<String, String> getAvailableIndicators(IndicatorRequest request) {
+ Map<String, String> result = Maps.newHashMap();
+ for (ResultRepository repository : getRepositories()) {
+ Map<String, String> resultForRepository = repository.getAvailableIndicators(request);
+ if (MapUtils.isNotEmpty(resultForRepository)) {
+ result.putAll(resultForRepository);
+ }
+ }
+ return result;
+ }
+
+ public CoserResult getResult(CoserRequest request) throws DuplicatedResultException {
+
+ Preconditions.checkArgument(request.isFilled());
+
+ ResultRepository repository = getMatchingRepository(request);
+
+ if (repository == null) {
+ throw new NoResultRepositoryFoundException("No result repository matching request", request);
+ }
+ CoserResult result = repository.getResult(request);
+ if (result == null) {
+ throw new NoResultFoundException(repository.getId(), request);
+ }
+ return result;
+ }
+
+ protected Set<ResultRepository> getRepositories() {
+ if (repositories == null) {
+ Set<String> ids = Sets.newHashSet();
+ repositories = Sets.newHashSet();
+ for (ResultRepositoryProvider repositoryProvider : repositoryProviders) {
+ Set<ResultRepository> resultRepositories = repositoryProvider.loadRepositories();
+
+ // check all repository use a unique id
+ for (ResultRepository resultRepository : resultRepositories) {
+ String id = resultRepository.getId();
+ if (log.isDebugEnabled()) {
+ log.debug("Try to register resultrepository: " + id);
+ }
+ if (!ids.add(id)) {
+
+ // there is already a repository with this id
+ throw new ResultRepositoryInitializationException(repositoryProvider, "Duplicate result repository with id: " + id, null);
+ }
+ }
+ repositories.addAll(resultRepositories);
+ }
+ if (log.isInfoEnabled()) {
+ log.info("Found " + repositories.size() + " result repository(ies).");
+ }
+ }
+ return repositories;
+ }
+
+ protected ResultRepository getMatchingRepository(CoserRequest request) throws DuplicatedResultException {
+
+ List<ResultRepository> repositoryList = Lists.newArrayList();
+
+ for (ResultRepository resultRepository : getRepositories()) {
+
+ if (resultRepository.acceptResult(request)) {
+ repositoryList.add(resultRepository);
+ }
+ }
+
+ ResultRepository 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;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/DuplicatedResultException.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/DuplicatedResultException.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/DuplicatedResultException.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,52 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.repository.ResultRepository;
+
+/**
+ * When multiple result repository can offer a result.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class DuplicatedResultException extends CoserTechnicalException {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final ResultRepository[] availableRepositories;
+
+ public DuplicatedResultException(ResultRepository... availableRepositories) {
+ super("There is " + availableRepositories.length + " repositories that can offer the result...");
+ this.availableRepositories = availableRepositories;
+ }
+
+ public ResultRepository[] getAvailableRepositories() {
+ return availableRepositories;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/DuplicatedResultException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,76 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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);
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultFoundException.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultFoundException.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultFoundException.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,55 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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%
+ */
+
+/**
+ * When no result was found for a matching repository.
+ * <p/>
+ * Created on 3/6/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class NoResultFoundException extends RuntimeException {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final String repositoryId;
+
+ protected final CoserRequest request;
+
+ public NoResultFoundException(String repositoryId, CoserRequest request) {
+ this.repositoryId = repositoryId;
+ this.request = request;
+ }
+
+ public String getRepositoryId() {
+ return repositoryId;
+ }
+
+ public CoserRequest getRequest() {
+ return request;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultFoundException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultRepositoryFoundException.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultRepositoryFoundException.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultRepositoryFoundException.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,46 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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;
+
+/**
+ * Created on 3/6/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class NoResultRepositoryFoundException extends CoserTechnicalException {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final CoserRequest request;
+
+ public NoResultRepositoryFoundException(String message, CoserRequest request) {
+ super(message);
+ this.request = request;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/NoResultRepositoryFoundException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,73 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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 java.util.Iterator;
+import java.util.Locale;
+
+/**
+ * Created on 3/7/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class Reports {
+
+ public static String getYearChartTitle(Locale locale) {
+ String yearAxis = "Year";
+ if ("fr".equals(locale.getLanguage())) {
+ yearAxis = "Ann\u00E9e";
+ } else if ("es".equals(locale.getLanguage())) {
+ yearAxis = "A\u00F1o";
+ }
+ return yearAxis;
+ }
+
+ /**
+ * Retourne le nom d'affichage d'une especes pour les rapports.
+ *
+ * @param reftax species data storage
+ * @param species species code
+ * @return species display name
+ * @since 1.5
+ */
+ public static String getReportDisplayName(Iterator<String[]> reftax, String species) {
+ String displayName = null;
+
+ while (reftax.hasNext()) {
+ String[] tuple = reftax.next();
+
+ // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
+ String speciesCode = tuple[3];
+ if (speciesCode.equals(species)) {
+ // nom + auteur (sans ajout de parenthese : important)
+ displayName = tuple[4] + " " + tuple[5];
+ break;
+ }
+ }
+
+ return displayName;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultRepositoryInitializationException.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultRepositoryInitializationException.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultRepositoryInitializationException.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,47 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.repository.ResultRepositoryProvider;
+
+/**
+ * When an eror occurs while init a result repository.
+ * <p/>
+ * Created on 3/5/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ResultRepositoryInitializationException extends CoserTechnicalException {
+ private static final long serialVersionUID = 1L;
+
+ protected final ResultRepositoryProvider source;
+
+ public ResultRepositoryInitializationException(ResultRepositoryProvider source, String message, Throwable cause) {
+ super(message, cause);
+ this.source = source;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultRepositoryInitializationException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,30 @@
+/**
+ * Result unified query API.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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%
+ */
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,88 @@
+package fr.ifremer.coser.result.repository;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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;
+import fr.ifremer.coser.result.request.IndicatorRequest;
+
+import java.util.Map;
+
+/**
+ * General contract of a repository of results in CoserWeb.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface ResultRepository {
+
+ /**
+ * @return the unique id of the repository
+ */
+ String getId();
+
+ /**
+ * Get all available zones for the given request.
+ *
+ * @param request request
+ * @return all available zones for the given request
+ */
+ Map<String, String> getAvailableZones(CoserRequest request);
+
+ /**
+ * Get all available species (or speciesList) for the given request.
+ *
+ * @param request request
+ * @return all available species for the given request.
+ */
+ Map<String, String> getAvailableSpecies(CoserRequest request);
+
+ /**
+ * Get all available indicators for the given request.
+ *
+ * @param request request
+ * @return all available indicators for the given request.
+ */
+ Map<String, String> getAvailableIndicators(IndicatorRequest request);
+
+ /**
+ * @param request request to test
+ * @return {@code true} if this repository has some result for the given
+ * request, {@code false} otherwise
+ */
+ boolean acceptResult(CoserRequest request);
+
+ /**
+ * Get result for the given request.
+ * <p/>
+ * We assume here that the repository has a result for the given request.
+ *
+ * @param request request to obtain result
+ * @return the result for the given request
+ */
+ CoserResult getResult(CoserRequest request);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,45 @@
+package fr.ifremer.coser.result.repository;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.ResultRepositoryInitializationException;
+
+import java.util.Set;
+
+/**
+ * Provides some {@link ResultRepository}.
+ * <p/>
+ * Created on 3/5/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface ResultRepositoryProvider<R extends ResultRepository> {
+
+ /**
+ * @return the set of provided result repositories.
+ */
+ Set<R> loadRepositories() throws ResultRepositoryInitializationException;
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,1050 @@
+package fr.ifremer.coser.result.repository.echobase;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.Function;
+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.CoserBusinessConfig;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.bean.EchoBaseProject;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserResult;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.Reports;
+import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.request.CommunityIndicatorRequest;
+import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.result.request.MapRequest;
+import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
+import fr.ifremer.coser.result.request.RawDataRequest;
+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.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 java.awt.Color;
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+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/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class EchoBaseResultRepository implements ResultRepository {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EchoBaseResultRepository.class);
+
+ /**
+ * Id of result source.
+ */
+ public static final String ID = "echobase";
+
+ /**
+ * Project definition.
+ */
+ protected final EchoBaseProject project;
+
+ /**
+ * Maps directory.
+ */
+ protected final File mapsDirectory;
+
+ /**
+ * Application config.
+ */
+ protected final CoserBusinessConfig config;
+
+ /**
+ * Transform a map result species file to the species code.
+ */
+ protected final Function<File, String> mapFileToSpeciesCode;
+
+ /**
+ * Transform a species code to his map result species filename.
+ */
+ protected final Function<String, String> speciesCodeToMapFile;
+
+ /**
+ * Filter map result species file.
+ */
+ protected final FilenameFilter mapSpeciesFilenameFilter;
+
+ /**
+ * Cache of species definition.
+ */
+ protected Map<String, String> speciesMap;
+
+ /**
+ * Cache of indicator definition.
+ */
+ protected IndicatorMap indicatorsMap;
+
+ /**
+ * Cache of zone definition.
+ */
+ protected ZoneMap zonesMap;
+
+ /**
+ * Cache of species definition.
+ */
+ protected DataStorage speciesDefinition;
+
+ public EchoBaseResultRepository(CoserBusinessConfig config, EchoBaseProject project) {
+ Preconditions.checkNotNull(config);
+ Preconditions.checkNotNull(project);
+ this.config = config;
+ this.project = project;
+ this.mapsDirectory = project.getMapsDirectory();
+ if (log.isInfoEnabled()) {
+ log.info("New result repository: " + getId());
+ }
+ String surveyName = project.getSurveyName();
+ this.mapFileToSpeciesCode = EchoBaseProject.newMapFileToSpeciesCode(surveyName);
+ this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName);
+ this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName);
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Public API ------------------------------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ @Override
+ public String getId() {
+ return ID + "::" + project.getBasedir();
+ }
+
+ @Override
+ public Map<String, String> getAvailableZones(CoserRequest request) {
+
+ List<String> allowedZones = null;
+
+ if (request instanceof MapRequest) {
+ MapRequest r = (MapRequest) request;
+
+ boolean match = matchFacade(r);
+ if (match) {
+ allowedZones = getZonesMap().getZonesForFacade(r.getFacade());
+ }
+ } else if (request instanceof PopulationIndicatorRequest) {
+ PopulationIndicatorRequest r = (PopulationIndicatorRequest) request;
+
+ boolean match = matchFacade(r);
+ if (match) {
+ allowedZones = getZonesMap().getZonesForFacade(r.getFacade());
+ }
+ } else if (request instanceof CommunityIndicatorRequest) {
+ CommunityIndicatorRequest r = (CommunityIndicatorRequest) request;
+
+ boolean match = matchFacade(r);
+ if (match) {
+ allowedZones = getZonesMap().getZonesForFacade(r.getFacade());
+ }
+ }
+
+ Map<String, String> result = Maps.newHashMap();
+
+ if (allowedZones != null) {
+
+ String zoneId = project.getZoneName();
+ if (allowedZones.contains(zoneId)) {
+ String zoneFullName = getZonesMap().getZoneFullNameWithNoFacade(zoneId);
+ result.put(zoneId, zoneFullName);
+ }
+ }
+
+ return result;
+ }
+
+ @Override
+ public Map<String, String> getAvailableSpecies(CoserRequest request) {
+
+ Set<String> speciesList = null;
+
+ if (request instanceof MapRequest) {
+ MapRequest r = (MapRequest) request;
+
+ boolean match = matchFacade(r) && matchZone(r);
+ if (match) {
+ // get all map species for given facade + zone
+ speciesList = getMapSpecies();
+ }
+ } else if (request instanceof PopulationIndicatorRequest) {
+ PopulationIndicatorRequest r = (PopulationIndicatorRequest) request;
+
+ boolean match = matchFacade(r) && matchZone(r);
+
+ if (match) {
+ // get all population indicator species for given facade + zone
+ speciesList = getPopulationIndicatorSpecies();
+ }
+ } else if (request instanceof CommunityIndicatorRequest) {
+ CommunityIndicatorRequest r = (CommunityIndicatorRequest) request;
+
+ Preconditions.checkNotNull(r.getIndicator());
+
+ boolean match = matchFacade(r) &&
+ matchZone(r) &&
+ matchIndicator(r);
+
+ if (match) {
+ // get all speciesList for given facade + zone + indicator
+ speciesList = getCommunityIndicatorSpecies(r.getIndicator());
+ }
+ }
+
+ Map<String, String> result = getSpeciesSubMap(speciesList);
+ return result;
+ }
+
+ @Override
+ public Map<String, String> getAvailableIndicators(IndicatorRequest request) {
+
+ Set<String> indicatorList = null;
+
+ if (request instanceof PopulationIndicatorRequest) {
+ PopulationIndicatorRequest r = (PopulationIndicatorRequest) request;
+
+ Preconditions.checkNotNull(r.getSpecies());
+
+ boolean match = matchFacade(request) && matchZone(request) && matchSpecies(r);
+
+ if (match) {
+
+ // get all indicators for given facade + zone + species
+ indicatorList = getPopulationIndicators(r.getSpecies());
+ }
+
+ } else if (request instanceof CommunityIndicatorRequest) {
+
+ boolean match = matchFacade(request) && matchZone(request);
+ if (match) {
+
+ // get all indicators for given facade + zone
+ indicatorList = getCommunityIndicators();
+ }
+ }
+
+ Map<String, String> result = getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ return result;
+ }
+
+ @Override
+ public boolean acceptResult(CoserRequest request) {
+
+ Preconditions.checkArgument(request.isFilled());
+
+ boolean result = false;
+
+ if (request instanceof MapRequest) {
+
+ // must match facade + zone + species
+ MapRequest r = (MapRequest) request;
+
+ result = matchFacade(r) &&
+ matchZone(r) &&
+ matchSpecies(r);
+ } else if (request instanceof RawDataRequest) {
+
+ // must match facade + zone
+ RawDataRequest r = (RawDataRequest) request;
+ result = matchFacade(r) && matchZone(r);
+
+ } else if (request instanceof CommunityIndicatorRequest) {
+
+ // must match facade + zone + (indicator + speciesList)
+ CommunityIndicatorRequest r = (CommunityIndicatorRequest) request;
+
+ result = matchFacade(r) &&
+ matchZone(r) &&
+ matchIndicatorAndSpeciesList(r);
+ } else if (request instanceof PopulationIndicatorRequest) {
+
+ // must match facade + zone + (species + indicator)
+ PopulationIndicatorRequest r = (PopulationIndicatorRequest) request;
+
+ result = matchFacade(r) &&
+ matchZone(r) &&
+ matchSpeciesAndIndicator(r);
+ }
+ return result;
+ }
+
+ @Override
+ public CoserResult getResult(CoserRequest request) {
+
+ Preconditions.checkArgument(request.isFilled());
+ Preconditions.checkArgument(acceptResult(request));
+
+ CoserResult result = null;
+
+ if (request instanceof MapRequest) {
+ MapRequest r = (MapRequest) request;
+
+ String species = r.getSpecies();
+
+ File mapFile = getMapSpeciesFile(species);
+ result = new FileResult(getId(), mapFile);
+
+ } else if (request instanceof RawDataRequest) {
+
+ // No such result for echobase at the moment
+ if (log.isDebugEnabled()) {
+ log.debug("No result for RawDataRequest");
+ }
+
+ } else if (request instanceof CommunityIndicatorRequest) {
+ CommunityIndicatorRequest r = (CommunityIndicatorRequest) request;
+
+ File file = null;
+ switch (r.getResultType()) {
+ case DATA:
+ file = getCommunityIndicatorDataFile(r.getIndicator(),
+ r.getSpecies());
+ break;
+
+ case GRAPH:
+ file = getCommunityIndicatorGraphFile(r.getLocale(),
+ r.getZone(),
+ r.getIndicator(),
+ r.getSpecies());
+ break;
+ }
+ if (file != null) {
+ result = new FileResult(getId(), file);
+ }
+
+ } else if (request instanceof PopulationIndicatorRequest) {
+ PopulationIndicatorRequest r = (PopulationIndicatorRequest) request;
+
+ File file = null;
+ switch (r.getResultType()) {
+ case DATA:
+ file = getPopulationIndicatorDataFile(r.getSpecies(),
+ r.getIndicator());
+ break;
+
+ case GRAPH:
+ file = getPopulationIndicatorGraphFile(r.getLocale(),
+ r.getZone(),
+ r.getSpecies(),
+ r.getIndicator());
+ break;
+ }
+ if (file != null) {
+ result = new FileResult(getId(), file);
+ }
+ }
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- MapRequest matchers --------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchFacade(MapRequest request) {
+ return project.getFacadeName().equals(request.getFacade());
+ }
+
+ protected boolean matchZone(MapRequest request) {
+ return project.getZoneName().equals(request.getZone());
+ }
+
+ protected boolean matchSpecies(MapRequest request) {
+ String species = request.getSpecies();
+ File file = getMapSpeciesFile(species);
+ return file != null && file.exists();
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- RawDataRequest matchers ----------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchFacade(RawDataRequest request) {
+ return project.getFacadeName().equals(request.getFacade());
+ }
+
+ protected boolean matchZone(RawDataRequest request) {
+ return project.getZoneName().equals(request.getZone());
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- IndicatorRequest matchers --------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchFacade(IndicatorRequest request) {
+ return project.getFacadeName().equals(request.getFacade());
+ }
+
+ protected boolean matchZone(IndicatorRequest request) {
+ return project.getZoneName().equals(request.getZone());
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- PopulationIndicatorRequest matchers ----------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchSpecies(PopulationIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String species = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchPopulationSpecies(tuple, species)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchSpeciesAndIndicator(PopulationIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String species = request.getSpecies();
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchPopulationSpecies(String[] tuple, String species) {
+ String speciesCode = tuple[3];
+ boolean result = species.equals(speciesCode);
+ return result;
+ }
+
+ protected boolean matchPopulationSpeciesAndIndicator(String[] tuple, String species, String indicator) {
+ String speciesCode = tuple[3];
+ String indicatorCode = tuple[1];
+ boolean result = species.equals(speciesCode) && indicator.equals(indicatorCode);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- CommunityIndicatorRequest matchers ------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchIndicator(CommunityIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchCommunityIndicator(tuple, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchIndicatorAndSpeciesList(CommunityIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String indicator = request.getIndicator();
+ String speciesList = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchCommunityIndicator(String[] tuple, String indicator) {
+ String indicatorCode = tuple[1];
+ boolean result = indicator.equals(indicatorCode);
+ return result;
+ }
+
+ protected boolean matchCommunityIndicatorAndSpeciesList(String[] tuple, String indicator, String speciesList) {
+ String indicatorCode = tuple[1];
+ String speciesListCode = tuple[2];
+ boolean result = indicator.equals(indicatorCode) && speciesList.equals(speciesListCode);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get Map result -------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected File getMapSpeciesFile(String species) {
+ String fileName = speciesCodeToMapFile.apply(species);
+ File file = fileName == null ? null : new File(mapsDirectory, fileName);
+ return file;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get Raw Data result --------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ // None for the moment
+
+ // --------------------------------------------------------------------- //
+ // --- Get Community indicator result ---------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected File getCommunityIndicatorDataFile(String indicator, String speciesList) {
+
+ DataStorage dataStorage = new MemoryDataStorage();
+
+ Iterator<String[]> iterator = loadCommunityIndicatorStorage(false);
+
+ // add header
+ dataStorage.add(iterator.next());
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
+ dataStorage.add(tuple);
+ }
+ }
+ File result = DataStorages.save("coser-chart-community-indicator",
+ ".csv",
+ dataStorage);
+ return result;
+ }
+
+ protected File getCommunityIndicatorGraphFile(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 = loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ String[] tuple = iterator.next();
+ String indicatorList = tuple[2];
+
+ if (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 = getZonesMap().getZoneFullName(zone);
+ String indicatorName = getIndicatorsMap().getIndicatorValue(indicator, locale);
+ String unit = 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 = loadSpeciesFileStorage(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 = 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(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;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get Population indicator result --------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected File getPopulationIndicatorDataFile(String species, String indicator) {
+
+ DataStorage dataStorage = new MemoryDataStorage();
+
+ Iterator<String[]> iterator = loadPopulationIndicatorStorage(false);
+
+ // add header
+ dataStorage.add(iterator.next());
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
+ dataStorage.add(tuple);
+ }
+ }
+ File result = DataStorages.save("coser-chart-population-indicator",
+ ".csv",
+ dataStorage);
+ return result;
+ }
+
+ protected File getPopulationIndicatorGraphFile(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 = loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+
+ if (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 = getZonesMap().getZoneFullName(zone);
+ String indicatorName = getIndicatorsMap().getIndicatorValue(indicator, locale);
+ String unit = getIndicatorsMap().getIndicatorUnit(indicator);
+
+ // get graph title
+ String title = zoneDisplayName;
+ title += " - " + indicatorName;
+ title += " - " + Reports.getReportDisplayName(loadSpeciesFileStorage(true), 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 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;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get species lists ----------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Set<String> getMapSpecies() {
+ File[] files = project.getMapsDirectory().listFiles(mapSpeciesFilenameFilter);
+ Set<String> result = Sets.newHashSet();
+ if (files != null) {
+ List<String> transform = Lists.transform(Lists.newArrayList(files), mapFileToSpeciesCode);
+ result.addAll(transform);
+ }
+ return result;
+ }
+
+ protected Set<String> getPopulationIndicatorSpecies() {
+ Set<String> result = Sets.newHashSet();
+ Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ String specyCode = tuple[3];
+ result.add(specyCode);
+ }
+ return result;
+ }
+
+ protected Set<String> getCommunityIndicatorSpecies(String indicator) {
+ Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
+ Set<String> result = Sets.newHashSet();
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchCommunityIndicator(tuple, indicator)) {
+ String specyCode = tuple[2];
+ result.add(specyCode);
+ }
+ }
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get indicator lists --------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected 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;
+ }
+
+ protected 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 species definition maps ------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Map<String, String> getSpeciesMap() {
+ if (speciesMap == null) {
+ speciesMap = Maps.newTreeMap();
+
+ // load species file
+ Iterator<String[]> iterator = loadSpeciesFileStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ String speciesCode = tuple[3];
+ String speciesLabel = tuple[4] + " " + tuple[5];
+ speciesMap.put(speciesCode, speciesLabel);
+ }
+ }
+ return speciesMap;
+ }
+
+ protected Map<String, String> getSpeciesSubMap(Collection<String> speciesList) {
+
+ Map<String, String> result = Maps.newTreeMap();
+
+ if (speciesList != null) {
+
+ Map<String, String> map = getSpeciesMap();
+ for (String species : speciesList) {
+ String speciesLabel = map.get(species);
+ result.put(species, speciesLabel);
+ }
+ }
+
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get indicator definition maps ----------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected IndicatorMap getIndicatorsMap() {
+ if (indicatorsMap == null) {
+ indicatorsMap = new IndicatorMap(config.getWebIndicatorsFile());
+ }
+ return indicatorsMap;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get zone definition maps ---------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ public ZoneMap getZonesMap() {
+ if (zonesMap == null) {
+ zonesMap = new ZoneMap(config.getWebZonesFile());
+ }
+ return zonesMap;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- storage util methods -------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Iterator<String[]> loadPopulationIndicatorStorage(boolean skipFirstLine) {
+ 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;
+ }
+
+ protected Iterator<String[]> loadCommunityIndicatorStorage(boolean skipFirstLine) {
+ 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;
+ }
+
+
+ protected Iterator<String[]> loadSpeciesFileStorage(boolean skipFirstLine) {
+ // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
+ Iterator<String[]> iterator = getSpeciesDefinition().iterator(skipFirstLine);
+ return iterator;
+ }
+
+ protected DataStorage getSpeciesDefinition() throws CoserTechnicalException {
+ if (speciesDefinition == null) {
+ File file = project.getSpeciesDefinitionFile();
+ speciesDefinition = DataStorages.load(file);
+ }
+
+ return speciesDefinition;
+ }
+
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,109 @@
+package fr.ifremer.coser.result.repository.echobase;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.Sets;
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.bean.EchoBaseProject;
+import fr.ifremer.coser.result.ResultRepositoryInitializationException;
+import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
+import org.apache.commons.io.filefilter.AbstractFileFilter;
+import org.apache.commons.io.filefilter.AndFileFilter;
+import org.apache.commons.io.filefilter.FileFilterUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.util.Set;
+
+/**
+ * Created on 3/5/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class EchoBaseResultRepositoryProvider implements ResultRepositoryProvider<EchoBaseResultRepository> {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EchoBaseResultRepositoryProvider.class);
+
+ /**
+ * Directory where are stored all echobase projects.
+ */
+ protected final File basedir;
+
+ protected final CoserBusinessConfig config;
+
+ public EchoBaseResultRepositoryProvider(CoserBusinessConfig config, File basedir) {
+ this.config = config;
+ Preconditions.checkNotNull(config);
+ Preconditions.checkNotNull(basedir);
+ this.basedir = basedir;
+ }
+
+ @Override
+ public Set<EchoBaseResultRepository> loadRepositories() {
+
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Scan for projects from basedir: %s", basedir));
+ }
+ Set<EchoBaseResultRepository> result = Sets.newHashSet();
+
+ AndFileFilter projectFilter = new AndFileFilter();
+ projectFilter.addFileFilter(FileFilterUtils.directoryFileFilter());
+ projectFilter.addFileFilter(new AbstractFileFilter() {
+
+ @Override
+ public boolean accept(File pathname) {
+ return new File(pathname, EchoBaseProject.METADATA_FILE).exists();
+ }
+ });
+
+ File[] projects = basedir.listFiles((FileFilter) projectFilter);
+ if (projects != null) {
+ for (File projectDirectory : projects) {
+
+ EchoBaseProject project = new EchoBaseProject(projectDirectory);
+
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Detected result: %s", project.getName()));
+ }
+ try {
+ project.load();
+ } catch (IOException e) {
+ throw new ResultRepositoryInitializationException(this, "Could not load project file", e);
+ }
+ result.add(new EchoBaseResultRepository(config, project));
+ }
+ }
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Found %s result repository(ies) from basedir: %s", result.size(), basedir));
+ }
+ return result;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,30 @@
+/**
+ * Implementation for EchoBase results.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result.repository.echobase;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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%
+ */
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,1140 @@
+package fr.ifremer.coser.result.repository.legacy;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.Function;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserConstants;
+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.ZoneMap;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserResult;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.Reports;
+import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.request.CommunityIndicatorRequest;
+import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.result.request.MapRequest;
+import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
+import fr.ifremer.coser.result.request.RawDataRequest;
+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 java.awt.Color;
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class LegacyResultRepository implements ResultRepository {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(LegacyResultRepository.class);
+
+ /**
+ * Id of result source.
+ */
+ public static final String ID = "rsufi";
+
+ /**
+ * Project basedir.
+ */
+ protected final File basedir;
+
+ /**
+ * Results directory.
+ */
+ protected final File resultDirectory;
+
+ /**
+ * Maps directory.
+ */
+ protected final File mapsDirectory;
+
+
+ /**
+ * Project definition.
+ */
+ protected final RSufiResultPath path;
+
+ /**
+ * Transform a map result species file to the species code.
+ */
+ protected final Function<File, String> mapFileToSpeciesCode;
+
+ /**
+ * Transform a species code to his map result species filename.
+ */
+ protected final Function<String, String> speciesCodeToMapFile;
+
+ /**
+ * Filter map result species file.
+ */
+ protected final FilenameFilter mapSpeciesFilenameFilter;
+
+ /**
+ * Application config.
+ */
+ protected final CoserBusinessConfig config;
+
+ /**
+ * Survey name (used to get maps).
+ */
+ protected final String surveyName;
+
+ /**
+ * Cache of species definition.
+ */
+ protected Map<String, String> speciesMap;
+
+ /**
+ * Cache of indicator definition.
+ */
+ protected IndicatorMap indicatorsMap;
+
+ /**
+ * Cache of zone definition.
+ */
+ protected ZoneMap zonesMap;
+
+ protected final boolean mapsResult;
+
+ protected final boolean indicatorsResult;
+
+ protected final boolean dataResult;
+
+ public LegacyResultRepository(CoserBusinessConfig config,
+ File basedir,
+ RSufiResultPath path,
+ String surveyName) {
+ Preconditions.checkNotNull(config);
+ Preconditions.checkNotNull(basedir);
+ Preconditions.checkNotNull(path);
+ Preconditions.checkNotNull(surveyName);
+ this.config = config;
+ this.basedir = basedir;
+ this.surveyName = surveyName;
+ this.resultDirectory = FileUtils.getFile(
+ basedir,
+ CoserConstants.STORAGE_SELECTION_DIRECTORY,
+ path.getSelection().getName(),
+ CoserConstants.STORAGE_RESULTS_DIRECTORY,
+ path.getRsufiResult().getName());
+ this.mapsDirectory = new File(resultDirectory, CoserConstants.STORAGE_MAPS_DIRECTORY);
+ this.path = path;
+ this.mapsResult = path.getRsufiResult().isMapsResult();
+ this.indicatorsResult = path.getRsufiResult().isIndicatorsResult();
+ this.dataResult = path.getRsufiResult().isDataAllowed();
+
+ if (log.isInfoEnabled()) {
+ log.info("New result repository: " + getId());
+ }
+
+ this.mapFileToSpeciesCode = EchoBaseProject.newMapFileToSpeciesCode(surveyName);
+ this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName);
+ this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName);
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Public API ------------------------------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ @Override
+ public String getId() {
+ return String.format("%s::%s::%s",
+ ID,
+ resultDirectory,
+ path.getRsufiResult().isMapsResult() ? "Map" : "Indicator"
+ );
+ }
+
+ @Override
+ public Map<String, String> getAvailableZones(CoserRequest request) {
+
+ List<String> allowedZones = null;
+
+ if (request instanceof MapRequest) {
+ MapRequest r = (MapRequest) request;
+
+
+ boolean match = mapsResult && matchFacade(r);
+ if (match) {
+ allowedZones = getZonesMap().getZonesForFacade(r.getFacade());
+ }
+ } else if (request instanceof RawDataRequest) {
+ RawDataRequest r = (RawDataRequest) request;
+
+ boolean match = dataResult && matchFacade(r);
+ if (match) {
+ allowedZones = getZonesMap().getZonesForFacade(r.getFacade());
+ }
+ } else if (request instanceof PopulationIndicatorRequest) {
+ PopulationIndicatorRequest r = (PopulationIndicatorRequest) request;
+
+ boolean match = indicatorsResult && matchFacade(r);
+ if (match) {
+ allowedZones = getZonesMap().getZonesForFacade(r.getFacade());
+ }
+ } else if (request instanceof CommunityIndicatorRequest) {
+ CommunityIndicatorRequest r = (CommunityIndicatorRequest) request;
+
+ boolean match = indicatorsResult && matchFacade(r);
+ if (match) {
+ allowedZones = getZonesMap().getZonesForFacade(r.getFacade());
+ }
+ }
+
+ Map<String, String> result = Maps.newHashMap();
+
+ if (allowedZones != null) {
+
+ String zoneId = path.getRsufiResult().getZone();
+ if (allowedZones.contains(zoneId)) {
+ String zoneFullName = getZonesMap().getZoneFullNameWithNoFacade(zoneId);
+ result.put(zoneId, zoneFullName);
+ }
+ }
+
+ return result;
+ }
+
+ @Override
+ public Map<String, String> getAvailableSpecies(CoserRequest request) {
+
+ Map<String, String> result = null;
+
+ if (request instanceof MapRequest) {
+ MapRequest r = (MapRequest) request;
+
+ boolean match = mapsResult &&
+ matchFacade(r) &&
+ matchZone(r);
+ if (match) {
+ // get all map species for given facade + zone
+ result = getPopulationIndicatorSpecies();
+ }
+ } else if (request instanceof PopulationIndicatorRequest) {
+ PopulationIndicatorRequest r = (PopulationIndicatorRequest) request;
+
+ boolean match = indicatorsResult &&
+ matchFacade(r) &&
+ matchZone(r);
+
+ if (match) {
+ // get all population indicator species for given facade + zone
+ result = getPopulationIndicatorSpecies();
+ }
+ } else if (request instanceof CommunityIndicatorRequest) {
+ CommunityIndicatorRequest r = (CommunityIndicatorRequest) request;
+
+ Preconditions.checkNotNull(r.getIndicator());
+
+ boolean match = indicatorsResult &&
+ matchFacade(r) &&
+ matchZone(r) &&
+ matchIndicator(r);
+
+ if (match) {
+ // get all speciesList for given facade + zone + indicator
+ result = getCommunityIndicatorSpecies(r.getLocale(), r.getIndicator());
+ }
+ }
+
+ return result;
+ }
+
+ @Override
+ public Map<String, String> getAvailableIndicators(IndicatorRequest request) {
+ Set<String> indicatorList = null;
+
+ if (request instanceof PopulationIndicatorRequest) {
+ PopulationIndicatorRequest r = (PopulationIndicatorRequest) request;
+
+ Preconditions.checkNotNull(r.getSpecies());
+
+ boolean match = indicatorsResult &&
+ matchFacade(request) &&
+ matchZone(request) &&
+ matchSpecies(r);
+
+ if (match) {
+
+ // get all indicators for given facade + zone + species
+ indicatorList = getPopulationIndicators(r.getSpecies());
+ }
+
+ } else if (request instanceof CommunityIndicatorRequest) {
+
+ boolean match = indicatorsResult &&
+ matchFacade(request) &&
+ matchZone(request);
+ if (match) {
+
+ // get all indicators for given facade + zone
+ indicatorList = getCommunityIndicators();
+ }
+ }
+
+ Map<String, String> result = getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ return result;
+ }
+
+ @Override
+ public boolean acceptResult(CoserRequest request) {
+
+ Preconditions.checkArgument(request.isFilled());
+
+ boolean result = false;
+
+ if (request instanceof MapRequest) {
+
+ // must match facade + zone + species
+ MapRequest r = (MapRequest) request;
+
+ result = mapsResult &&
+ matchFacade(r) &&
+ matchZone(r) &&
+ matchSpecies(r);
+ } else if (request instanceof RawDataRequest) {
+
+ // must match facade + zone
+ RawDataRequest r = (RawDataRequest) request;
+ result = dataResult && matchFacade(r) && matchZone(r);
+
+ } else if (request instanceof CommunityIndicatorRequest) {
+
+ // must match facade + zone + (indicator + speciesList)
+ CommunityIndicatorRequest r = (CommunityIndicatorRequest) request;
+
+ result = indicatorsResult &&
+ matchFacade(r) &&
+ matchZone(r) &&
+ matchIndicatorAndSpeciesList(r);
+ } else if (request instanceof PopulationIndicatorRequest) {
+
+ // must match facade + zone + (species + indicator)
+ PopulationIndicatorRequest r = (PopulationIndicatorRequest) request;
+
+ result = indicatorsResult &&
+ matchFacade(r) &&
+ matchZone(r) &&
+ matchSpeciesAndIndicator(r);
+ }
+ return result;
+ }
+
+ @Override
+ public CoserResult getResult(CoserRequest request) {
+ Preconditions.checkArgument(request.isFilled());
+ Preconditions.checkArgument(acceptResult(request));
+
+ CoserResult result = null;
+
+ if (request instanceof MapRequest) {
+ MapRequest r = (MapRequest) request;
+
+ String species = r.getSpecies();
+
+ File mapFile = getMapSpeciesFile(species);
+ result = new FileResult(getId(), mapFile);
+
+ } else if (request instanceof RawDataRequest) {
+
+ // No such result for echobase at the moment
+ if (log.isDebugEnabled()) {
+ log.debug("No result for RawDataRequest");
+ }
+
+ } else if (request instanceof CommunityIndicatorRequest) {
+ CommunityIndicatorRequest r = (CommunityIndicatorRequest) request;
+
+ File file = null;
+ switch (r.getResultType()) {
+ case DATA:
+ file = getCommunityIndicatorDataFile(r.getIndicator(),
+ r.getSpecies());
+ break;
+
+ case GRAPH:
+ file = getCommunityIndicatorGraphFile(r.getLocale(),
+ r.getZone(),
+ r.getIndicator(),
+ r.getSpecies());
+ break;
+ }
+ if (file != null) {
+ result = new FileResult(getId(), file);
+ }
+
+ } else if (request instanceof PopulationIndicatorRequest) {
+ PopulationIndicatorRequest r = (PopulationIndicatorRequest) request;
+
+ File file = null;
+ switch (r.getResultType()) {
+ case DATA:
+ file = getPopulationIndicatorDataFile(r.getSpecies(),
+ r.getIndicator());
+ break;
+
+ case GRAPH:
+ file = getPopulationIndicatorGraphFile(r.getLocale(),
+ r.getZone(),
+ r.getSpecies(),
+ r.getIndicator());
+ break;
+ }
+ if (file != null) {
+ result = new FileResult(getId(), file);
+ }
+ }
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- MapRequest matchers --------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchFacade(MapRequest request) {
+ return true;
+ }
+
+ protected boolean matchZone(MapRequest request) {
+ return path.getRsufiResult().getZone().equals(request.getZone());
+ }
+
+ protected boolean matchSpecies(MapRequest request) {
+ String species = request.getSpecies();
+ File file = getMapSpeciesFile(species);
+ return file != null;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- RawDataRequest matchers ----------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchFacade(RawDataRequest request) {
+ return true;
+ }
+
+ protected boolean matchZone(RawDataRequest request) {
+ return path.getRsufiResult().getZone().equals(request.getZone());
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- IndicatorRequest matchers --------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchFacade(IndicatorRequest request) {
+ return true;
+ }
+
+ protected boolean matchZone(IndicatorRequest request) {
+ return path.getRsufiResult().getZone().equals(request.getZone());
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- PopulationIndicatorRequest matchers ----------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchSpecies(PopulationIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String species = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchPopulationSpecies(tuple, species)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchSpeciesAndIndicator(PopulationIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String species = request.getSpecies();
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchPopulationSpecies(String[] tuple, String species) {
+ String speciesCode = tuple[3];
+ boolean result = species.equals(speciesCode);
+ return result;
+ }
+
+ protected boolean matchPopulationSpeciesAndIndicator(String[] tuple, String species, String indicator) {
+ String indicatorCode = tuple[1];
+ boolean result = matchPopulationSpecies(tuple, species) && indicator.equals(indicatorCode);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- CommunityIndicatorRequest matchers ------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchIndicator(CommunityIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchCommunityIndicator(tuple, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchIndicatorAndSpeciesList(CommunityIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String indicator = request.getIndicator();
+ String speciesList = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchCommunityIndicator(String[] tuple, String indicator) {
+ String indicatorCode = tuple[1];
+ boolean result = indicator.equals(indicatorCode);
+ return result;
+ }
+
+ protected boolean matchCommunityIndicatorAndSpeciesList(String[] tuple, String indicator, String speciesList) {
+ String indicatorCode = tuple[1];
+ String speciesListCode = tuple[2];
+ boolean result = indicator.equals(indicatorCode) && speciesList.equals(speciesListCode);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get Map result -------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected File getMapSpeciesFile(String species) {
+ String fileName = speciesCodeToMapFile.apply(species);
+ File file = fileName == null ? null : new File(mapsDirectory, fileName);
+ return file;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get Raw Data result --------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ // None for the moment
+
+ // --------------------------------------------------------------------- //
+ // --- Get Community indicator result ---------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected File getCommunityIndicatorDataFile(String indicator, String speciesList) {
+
+ DataStorage dataStorage = new MemoryDataStorage();
+
+ Iterator<String[]> iterator = loadCommunityIndicatorStorage(false);
+
+ // add header
+ dataStorage.add(iterator.next());
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
+ dataStorage.add(tuple);
+ }
+ }
+ File result = DataStorages.save("coser-chart-community-indicator",
+ ".csv",
+ dataStorage);
+ return result;
+ }
+
+ protected File getCommunityIndicatorGraphFile(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 = loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ String[] tuple = iterator.next();
+ String indicatorList = tuple[2];
+
+ if (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 = getZonesMap().getZoneFullName(zone);
+ String indicatorName = getIndicatorsMap().getIndicatorValue(indicator, locale);
+ String unit = 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 = loadSpeciesFileStorage(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 = 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(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;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get Population indicator result --------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected File getPopulationIndicatorDataFile(String species, String indicator) {
+
+ DataStorage dataStorage = new MemoryDataStorage();
+
+ Iterator<String[]> iterator = loadPopulationIndicatorStorage(false);
+
+ // add header
+ dataStorage.add(iterator.next());
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
+ dataStorage.add(tuple);
+ }
+ }
+ File result = DataStorages.save("coser-chart-population-indicator",
+ ".csv",
+ dataStorage);
+ return result;
+ }
+
+ protected File getPopulationIndicatorGraphFile(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 = loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+
+ if (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 = getZonesMap().getZoneFullName(zone);
+ String indicatorName = getIndicatorsMap().getIndicatorValue(indicator, locale);
+ String unit = getIndicatorsMap().getIndicatorUnit(indicator);
+
+ // get graph title
+ String title = zoneDisplayName;
+ title += " - " + indicatorName;
+ title += " - " + Reports.getReportDisplayName(loadSpeciesFileStorage(true), 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 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;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get species lists ----------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Map<String, String> getPopulationIndicatorSpecies() {
+ Map<String, String> result = Maps.newHashMap();
+
+ Map<String, String> speciesNames = getSpeciesMap();
+ Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ String speciesCode = tuple[3];
+
+ String speciesName = speciesNames.get(speciesCode);
+
+ if (StringUtils.isNotEmpty(speciesName)) {
+ result.put(speciesCode, speciesName);
+ }
+ result.put(speciesCode, speciesName);
+ }
+ return result;
+ }
+
+ protected 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];
+
+ // recherche de la traduction de l'id de liste
+ // les liste sont a1, T1, T2 ...
+ String listLetter = String.valueOf(list.charAt(0));
+ String translation = "## " + list + " not found ##";
+ Iterator<String[]> typeIterator = loadSpeciesListFileStorage(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")) {
+ if (locale != null && "fr".equals(locale.getLanguage())) {
+ translation = "Tous Liste " + list.charAt(1);
+ } else if (locale != null && "en".equals(locale.getLanguage())) {
+ translation = "Todo Lista " + list.charAt(1);
+ } else {
+ translation = "All List " + list.charAt(1);
+ }
+ } else {
+ // ajout de la traduction du nom de liste plus le numéro
+ if (locale != null && "fr".equals(locale.getLanguage())) {
+ translation = tupleType[0] + " Liste " + list.charAt(1);
+ } else if (locale != null && "en".equals(locale.getLanguage())) {
+ translation = tupleType[0] + " Lista " + list.charAt(1);
+ } else {
+ translation = tupleType[0] + " List " + list.charAt(1);
+ }
+ }
+ break;
+ }
+ }
+ result.put(list, translation);
+ }
+ }
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get indicator lists --------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected 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;
+ }
+
+ protected Set<String> getPopulationIndicators(String species) {
+ Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+ Set<String> result = Sets.newHashSet();
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (species == null || matchPopulationSpecies(tuple, species)) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ }
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get species definition maps ------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Map<String, String> getSpeciesMap() {
+ if (speciesMap == null) {
+ speciesMap = Maps.newTreeMap();
+
+ // load species file
+ Iterator<String[]> iterator = loadSpeciesFileStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ String speciesCode = tuple[3];
+ String speciesLabel = tuple[4] + " " + tuple[5];
+ speciesMap.put(speciesCode, speciesLabel);
+ }
+ }
+ return speciesMap;
+ }
+
+ protected Map<String, String> getSpeciesSubMap(Collection<String> speciesList) {
+
+ Map<String, String> result = Maps.newTreeMap();
+
+ if (speciesList != null) {
+
+ Map<String, String> map = getSpeciesMap();
+ for (String species : speciesList) {
+ String speciesLabel = map.get(species);
+ result.put(species, speciesLabel);
+ }
+ }
+
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get indicator definition maps ----------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected IndicatorMap getIndicatorsMap() {
+ if (indicatorsMap == null) {
+ indicatorsMap = new IndicatorMap(config.getWebIndicatorsFile());
+ }
+ return indicatorsMap;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get zone definition maps ---------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ public ZoneMap getZonesMap() {
+ if (zonesMap == null) {
+ zonesMap = new ZoneMap(config.getWebZonesFile());
+ }
+ return zonesMap;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- storage util methods -------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Iterator<String[]> loadPopulationIndicatorStorage(boolean skipFirstLine) {
+ 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;
+ }
+
+ protected Iterator<String[]> loadCommunityIndicatorStorage(boolean skipFirstLine) {
+ 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;
+ }
+
+ protected Iterator<String[]> loadSpeciesFileStorage(boolean skipFirstLine) {
+ // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
+ Iterator<String[]> iterator = path.getProject().getRefTaxSpecies().iterator(skipFirstLine);
+ return iterator;
+ }
+
+ protected Iterator<String[]> loadSpeciesListFileStorage(boolean skipFirstLine) {
+ // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
+ Iterator<String[]> iterator = path.getProject().getTypeEspeces().iterator(skipFirstLine);
+ return iterator;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,155 @@
+package fr.ifremer.coser.result.repository.legacy;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.Sets;
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserBusinessException;
+import fr.ifremer.coser.CoserConstants;
+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.ResultRepositoryProvider;
+import fr.ifremer.coser.services.ProjectService;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+import java.util.Set;
+
+/**
+ * Created on 3/5/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class LegacyResultRepositoryProvider implements ResultRepositoryProvider<LegacyResultRepository> {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(LegacyResultRepositoryProvider.class);
+
+ /**
+ * Directory where are stored all legacy results.
+ */
+ protected final File basedir;
+
+ protected final ProjectService projectService;
+
+ protected final CoserBusinessConfig config;
+
+ public LegacyResultRepositoryProvider(CoserBusinessConfig config, File basedir) {
+ this.config = config;
+ Preconditions.checkNotNull(config);
+ Preconditions.checkNotNull(basedir);
+ this.projectService = new ProjectService(config);
+ this.basedir = basedir;
+ }
+
+ @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();
+ } catch (CoserBusinessException e) {
+ throw new ResultRepositoryInitializationException(this, "Could not find projects", e);
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Found %s result repository(ies) from basedir: %s", result.size(), basedir));
+ }
+ return result;
+ }
+
+ /**
+ * 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
+ *
+ * @return results paths
+ * @throws CoserBusinessException
+ */
+ public Set<LegacyResultRepository> findAllProjectWithResult() throws CoserBusinessException {
+ Set<LegacyResultRepository> result = Sets.newHashSet();
+ // loop on projets
+ File[] projects = basedir.listFiles();
+ if (projects != null) {
+ for (File existingProject : projects) {
+ if (existingProject.isDirectory()) {
+ String projectName = existingProject.getName();
+ // need to open project
+ Project p = projectService.openProject(projectName, basedir);
+
+ // loop on selections
+ File selectionsDirectory = new File(existingProject, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selections = selectionsDirectory.listFiles();
+ if (selections != null) {
+ for (File existingSelection : selections) {
+ if (existingSelection.isDirectory()) {
+ String selectionName = existingSelection.getName();
+ Selection s = new Selection(selectionName);
+
+ // loop on result
+ File rsufisDirectory = new File(existingSelection, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] rSufiResults = rsufisDirectory.listFiles();
+ if (rSufiResults != null) {
+ for (File rSufiResult : rSufiResults) {
+ if (rSufiResult.isDirectory()) {
+ RSufiResult r = projectService.getRSufiResult(rSufiResult);
+ boolean candidate = r.isPubliableResult();
+ if (candidate) {
+ RSufiResultPath path = new RSufiResultPath(p, s, r);
+ if (log.isDebugEnabled()) {
+ log.debug("Detected result: " + result);
+ }
+ String surveyName = projectService.getProjectSurveyName(rSufiResult, r);
+
+ LegacyResultRepository repository = new LegacyResultRepository(config, existingProject, path, surveyName);
+
+
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Detected result: %s - %s", path.getProject().getName(), path.getRsufiResult().getName()));
+ }
+ result.add(repository);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return result;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,30 @@
+/**
+ * Implementation for legacy results.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result.repository.legacy;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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%
+ */
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,30 @@
+/**
+ * Result repository API.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result.repository;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,58 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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 CommunityIndicatorRequest extends IndicatorRequest {
+
+ 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;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,134 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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 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 {
+
+ protected final Locale locale;
+
+ protected String facade;
+
+ protected String zone;
+
+ protected String species;
+
+ protected String indicator;
+
+ protected IndicatorRequest.ResultType resultType;
+
+ public CoserRequestBuilder(Locale locale) {
+ this.locale = locale;
+ }
+
+ public CoserRequestBuilder addFacade(String facade) {
+ this.facade = facade;
+ return this;
+ }
+
+ public CoserRequestBuilder addZone(String zone) {
+ this.zone = zone;
+ return this;
+ }
+
+ public CoserRequestBuilder addSpecies(String species) {
+ this.species = species;
+ return this;
+ }
+
+ public CoserRequestBuilder addIndicator(String indicator) {
+ this.indicator = indicator;
+ return this;
+ }
+
+ public CoserRequestBuilder addResultType(IndicatorRequest.ResultType resultType) {
+ this.resultType = resultType;
+ return this;
+ }
+
+ public MapRequest toMapRequest() {
+ MapRequest request = new MapRequest();
+ flush(request);
+ return request;
+ }
+
+ public RawDataRequest toRawDataRequest() {
+ RawDataRequest request = new RawDataRequest();
+ flush(request);
+ return request;
+ }
+
+ public PopulationIndicatorRequest toPopulationIndicatorRequest() {
+ PopulationIndicatorRequest request = new PopulationIndicatorRequest();
+ flush(request);
+ return request;
+ }
+
+ public CommunityIndicatorRequest toCommunityIndicatorRequest() {
+ CommunityIndicatorRequest request = new CommunityIndicatorRequest();
+ flush(request);
+ return request;
+ }
+
+ protected <R extends CoserRequest> 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 IndicatorRequest) {
+ if (indicator != null) {
+ ((IndicatorRequest) request).setIndicator(indicator);
+ }
+ if (resultType != null) {
+ ((IndicatorRequest) request).setResultType(resultType);
+ }
+ }
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestFacadeAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestFacadeAware.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestFacadeAware.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,42 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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;
+
+/**
+ * Place this on any request which involve a {@code facade}.
+ * <p/>
+ * Created on 3/7/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequestFacadeAware extends CoserRequest {
+
+ String getFacade();
+
+ void setFacade(String facade);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestFacadeAware.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestSpeciesAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestSpeciesAware.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestSpeciesAware.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,42 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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;
+
+/**
+ * Place this on any request which involve a {@code species}.
+ * <p/>
+ * Created on 3/7/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequestSpeciesAware extends CoserRequest {
+
+ String getSpecies();
+
+ void setSpecies(String species);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestSpeciesAware.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,42 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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;
+
+/**
+ * Place this on any request which involve a {@code zone}.
+ * <p/>
+ * Created on 3/7/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since XXX
+ */
+public interface CoserRequestZoneAware extends CoserRequest {
+
+ String getZone();
+
+ void setZone(String zone);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,117 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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 java.util.Locale;
+
+/**
+ * Request to obtain indicator results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public abstract class IndicatorRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware, CoserRequestSpeciesAware {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Type of result.
+ */
+ public enum ResultType {
+ DATA,
+ GRAPH
+ }
+
+ protected Locale locale;
+
+ protected String facade;
+
+ protected String zone;
+
+ protected String indicator;
+
+ protected ResultType resultType;
+
+ @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 || resultType == null || indicator == null);
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+
+ @Override
+ public String getZone() {
+ return zone;
+ }
+
+ @Override
+ public void setZone(String zone) {
+ Preconditions.checkNotNull(zone);
+ this.zone = zone;
+ }
+
+ public ResultType getResultType() {
+ return resultType;
+ }
+
+ public void setResultType(ResultType resultType) {
+ Preconditions.checkNotNull(resultType);
+ this.resultType = resultType;
+ }
+
+ public String getIndicator() {
+ return indicator;
+ }
+
+ public void setIndicator(String indicator) {
+ this.indicator = indicator;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,107 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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 java.util.Locale;
+
+/**
+ * Request to obtain map results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class MapRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware, CoserRequestSpeciesAware {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Used to have map with no species, we prefer to keep a not null value
+ * to still make request consistent.
+ */
+ public static final String NULL_SPECIES = "Repartition-stations";
+
+ protected Locale locale;
+
+ protected String facade;
+
+ protected String zone;
+
+ protected String species;
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null || 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;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+
+ @Override
+ public String getZone() {
+ return zone;
+ }
+
+ @Override
+ public void setZone(String zone) {
+ Preconditions.checkNotNull(zone);
+ this.zone = zone;
+ }
+
+ @Override
+ public String getSpecies() {
+ return species;
+ }
+
+ @Override
+ public void setSpecies(String species) {
+ Preconditions.checkNotNull(species);
+ this.species = species;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,58 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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 PopulationIndicatorRequest extends IndicatorRequest {
+
+ 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;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,87 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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 java.util.Locale;
+
+/**
+ * Request to obtain raw data results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class RawDataRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware {
+
+ 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);
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+
+ @Override
+ public String getZone() {
+ return zone;
+ }
+
+ @Override
+ public void setZone(String zone) {
+ Preconditions.checkNotNull(zone);
+ this.zone = zone;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,30 @@
+/**
+ * Differents implementations of {@link fr.ifremer.coser.result.CoserRequest}.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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%
+ */
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommandService.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ControlService.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/services/PublicationService.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -1502,7 +1502,8 @@
return indicators;
}
-
+
+ // Pour extraction
/**
* Retourne les indicateurs calculés avec leurs traductions scientifique
* pour les zones souhaitées. Retournes les indicateurs de populations
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,3030 @@
+/*
+ * #%L
+ *
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2013 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.coser.services;
+
+import static org.nuiton.i18n.I18n.t;
+import static org.nuiton.i18n.I18n.l;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.regex.Matcher;
+
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+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.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.apache.commons.mail.EmailException;
+import org.apache.commons.mail.MultiPartEmail;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.mime.HttpMultipartMode;
+import org.apache.http.entity.mime.MultipartEntity;
+import org.apache.http.entity.mime.content.StringBody;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.StringUtil;
+import org.nuiton.util.ZipUtil;
+import org.w3c.dom.Document;
+import org.xhtmlrenderer.pdf.ITextRenderer;
+
+import com.itextpdf.text.DocumentException;
+
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserBusinessException;
+import fr.ifremer.coser.CoserConstants;
+import fr.ifremer.coser.CoserConstants.Category;
+import fr.ifremer.coser.CoserUtils;
+import fr.ifremer.coser.bean.Project;
+import fr.ifremer.coser.bean.RSufiResult;
+import fr.ifremer.coser.bean.RSufiResultPath;
+import fr.ifremer.coser.bean.Selection;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.util.DataType;
+import fr.ifremer.coser.util.InputStreamKnownSizeBody;
+import fr.ifremer.coser.util.ProgressMonitor;
+import fr.ifremer.coser.util.ProgressStream;
+import freemarker.cache.ClassTemplateLoader;
+import freemarker.ext.beans.BeansWrapper;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+
+/**
+ * Service specifique à l'interface web de visualisation et à la partie UI
+ * qui sert a envoyer les resultats vers l'interface web.
+ *
+ * Ce service, contrairement aux autres a un état, les indicateurs et zones
+ * chargées persistent après chargement, car elle ne peuvent pas changer
+ * tant que l'application est en cours d'utilisation.
+ *
+ * Il faut garder à l'esprit que les projets n'ont pas forcement
+ * de données publiées, donc le chargement du projet est possible, mais
+ * pas les données de controle et les données de selection (donc plutot
+ * travailler sur les fichiers estcomind/estpopind que sur les 4 tables).
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class WebService2 {
+
+ private static final Log log = LogFactory.getLog(WebService.class);
+
+ protected CoserBusinessConfig config;
+
+ protected CommonService commonService;
+
+ protected ProjectService projectService;
+
+ protected PublicationService publicationService;
+
+ /** Indicator map (id, locale > translation, id, "unit" > unit) (etat du service). */
+// protected MultiKeyMap indicatorsMap;
+ protected IndicatorMap indicatorsMap;
+
+ /** Zones map (etat du service). */
+// protected DataStorage zonesMap;
+ protected ZoneMap zonesMap;
+
+ /** Freemarker */
+ protected Configuration freemarkerConfiguration;
+
+ public WebService2(CoserBusinessConfig config) {
+ this.config = config;
+
+ commonService = new CommonService(config);
+ projectService = new ProjectService(config);
+ publicationService = new PublicationService(config);
+
+ 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(WebService.class, "/ftl");
+ freemarkerConfiguration.setTemplateLoader(templateLoader);
+
+ // pour les maps dans les template (entre autre)
+ freemarkerConfiguration.setObjectWrapper(new BeansWrapper());
+ }
+
+ protected IndicatorMap getIndicatorsMap() {
+ if (indicatorsMap == null) {
+ indicatorsMap = new IndicatorMap(config.getWebIndicatorsFile());
+ }
+ return indicatorsMap;
+ }
+// /**
+// * Charge les indicateurs disponible depuis le fichier des indicateurs.
+// * (indid, indname)
+// *
+// * @return indicators map
+// * @throws CoserBusinessException
+// */
+// protected MultiKeyMap getIndicatorsMap() throws CoserBusinessException {
+//
+// if (indicatorsMap == null) {
+// indicatorsMap = new MultiKeyMap();
+// File indicatorsFile = config.getWebIndicatorsFile();
+// DataStorage indicatorsStorage = commonService.loadCSVFile(indicatorsFile);
+// Iterator<String[]> iteratorInd = indicatorsStorage.iterator(true);
+// while (iteratorInd.hasNext()) {
+// // "id";"label_fr";"label_en";"label_es";"unit"
+// String[] indicator = iteratorInd.next();
+// indicatorsMap.put(indicator[0], "fr", indicator[1]);
+// indicatorsMap.put(indicator[0], "en", indicator[2]);
+// indicatorsMap.put(indicator[0], "es", indicator[3]);
+// indicatorsMap.put(indicator[0], "unit", indicator[4]);
+// }
+// }
+//
+// return indicatorsMap;
+// }
+
+// /**
+// * Get indicator translation by checking correct locale.
+// *
+// * @param indicator indicator code
+// * @param localeCode locale
+// * @return indicator translation
+// */
+// protected String getIndicatorValue(String indicator, String localeCode) throws CoserBusinessException {
+// String localLocaleCode = localeCode;
+// if (!"fr".equals(localLocaleCode) && !"es".equals(localLocaleCode)
+// && !"unit".equals(localLocaleCode)) {
+// localLocaleCode = "en"; // en by default
+// }
+// return (String)getIndicatorsMap().get(indicator, localLocaleCode);
+// }
+
+// /**
+// * Charge les zones disponibles depuis le fichier des zones.
+// * (zoneid, zonename)
+// *
+// * @return zones map
+// * @throws CoserBusinessException
+// */
+// public DataStorage getZonesMap() throws CoserBusinessException {
+//
+// if (zonesMap == null) {
+// File zoneFile = config.getWebZonesFile();
+//
+// // l'operation n'est pas obligatoire pour tous les clients
+// // lourd, le fichier peut donc ne pas exister
+// if (zoneFile.isFile()) {
+// zonesMap = commonService.loadCSVFile(zoneFile);
+// }
+// else {
+// // fait volontairement un return new, n'affecte pas l'etat du
+// // service
+// return new MemoryDataStorage();
+// }
+// }
+//
+// return zonesMap;
+// }
+
+ /**
+ * Charge les zones disponibles depuis le fichier des zones.
+ * (zoneid, zonename)
+ *
+ * @return zones map
+ */
+ public ZoneMap getZonesMap() {
+
+ if (zonesMap == null) {
+ File zoneFile = config.getWebZonesFile();
+
+ // l'operation n'est pas obligatoire pour tous les clients
+ // lourd, le fichier peut donc ne pas exister
+ if (zoneFile.isFile()) {
+ zonesMap = new ZoneMap(zoneFile);
+ }
+ else {
+ // fait volontairement un return new, n'affecte pas l'etat du
+ // service
+ return new ZoneMap(null);
+ }
+ }
+
+ return zonesMap;
+ }
+
+ /**
+ * Retourne les nom d'une zone (avec la facade, l'année et la serie) en
+ * fonction de l'id de la zone.
+ *
+ * @param zoneId zone id
+ * @return zone name (or {@code null} if not found)
+ */
+ public String getZoneFullName(String zoneId) {
+ return getZonesMap().getZoneFullName(zoneId);
+ }
+
+ /**
+ * Retourne les zones disponible par facade.
+ *
+ * @return couple facadeid/list<zoneid>
+ */
+ public Map<String, List<String>> getZoneByFacade() {
+ return getZonesMap().getZoneByFacade();
+ }
+
+ /**
+ * Recupere la liste des cartes pour chaque id de zone sous forme de Map.
+ *
+ * @return zone images map
+ */
+ public Map<String, String> getZonePictures() {
+ return getZonesMap().getZonePictures();
+ }
+
+ /**
+ * Recupere la liste des meta info pour chaque id de zone sous forme de Map.
+ *
+ * @param locale locale
+ * @return zone meta info map
+ */
+ public Map<String, String> getZoneMetaInfo(Locale locale) {
+ return getZonesMap().getZoneMetaInfo(locale);
+ }
+
+ /**
+ * Get facades list (as facadeid/facadename).
+ *
+ * @return facades map
+ */
+ public Map<String, String> getFacades() {
+ return getZonesMap().getFacades();
+ }
+
+ /**
+ * Pour une zone principale, recupere la liste des couples sous-zone /
+ * campagne qui sont disponible dans cette zone principale.
+ *
+ * @param facade facade (le nom de la facade principale) (can be {@code null} : don't filter on facade)
+ * @param onlyWithSource retourn zone liste with available source data
+ * @param forMap look in map directory
+ * @return couple subzoneid/sub
+ * @throws CoserBusinessException
+ */
+ public Map<String, String> getZoneForFacade(String facade, boolean onlyWithSource, boolean forMap) throws CoserBusinessException {
+ Map<String, String> zonesForFacade = new HashMap<String, String>();
+
+ // get subzone for main zone
+ Collection<String> subZones = getZonesMap().getZonesForFacade(facade);
+// Collection<String> subZones = new ArrayList<String>();
+// Iterator<String[]> itZone = getZonesMap().storage.iterator(true);
+// while (itZone.hasNext()) {
+// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+// String[] tuple = itZone.next();
+// if (facade == null || tuple[1].equals(facade)) {
+// subZones.add(tuple[0]);
+// }
+// }
+
+ File projectsDirectory = null;
+ if (forMap) {
+ projectsDirectory = config.getWebMapsProjectsDirectory();
+ }
+ else {
+ projectsDirectory = config.getWebIndicatorsProjectsDirectory();
+ }
+
+ // get survey names in subZones collection
+ File[] projectFiles = projectsDirectory.listFiles();
+
+ // project iteration
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+
+ // selection iteration
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+
+ // result iteration
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ if (!onlyWithSource || rsufiResult.isDataAllowed()) {
+ String resultZoneId = rsufiResult.getZone();
+ if (subZones.contains(resultZoneId)) {
+ String zoneid = resultZoneId;
+ // get zone name
+// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"map"
+// int zoneIndex = getZonesMap().indexOf(zoneid);
+// String[] zoneData = getZonesMap().get(zoneIndex);
+// String zoneName = zoneData[3] + " - " + zoneData[4] + " - " + zoneData[5];
+ String zoneName = getZonesMap().getZoneFullNameWithNoFacade(zoneid);
+
+ zonesForFacade.put(zoneid, zoneName);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return zonesForFacade;
+ }
+
+// /**
+// * Get facades list (as facadeid/facadename).
+// *
+// * @return facades map
+// * @throws CoserBusinessException
+// */
+// public Map<String, String> getFacades() throws CoserBusinessException {
+// Map<String, String> facades = new LinkedHashMap<String, String>();
+// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+// DataStorage zonesMap = getZonesMap();
+// Iterator<String[]> itZone = zonesMap.iterator(true);
+// while (itZone.hasNext()) {
+// String[] tuple = itZone.next();
+// // on a pas d'id pour les facades
+// facades.put(tuple[1], tuple[2]);
+// }
+// return facades;
+// }
+// /**
+// * Retourne les zones disponible par facade.
+// *
+// * @return couple facadeid/list<zoneid>
+// * @throws CoserBusinessException
+// */
+// public Map<String, List<String>> getZoneByFacade() throws CoserBusinessException {
+// Map<String, List<String>> zonesByFacade = new HashMap<String, List<String>>();
+//
+// // get subzone for main zone
+// Iterator<String[]> itZone = getZonesMap().iterator(true);
+// while (itZone.hasNext()) {
+// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+// String[] tuple = itZone.next();
+// String facadeid = tuple[1];
+// String zoneid = tuple[0];
+// List<String> zones = zonesByFacade.get(facadeid);
+// if (zones == null) {
+// zones = new ArrayList<String>();
+// zonesByFacade.put(facadeid, zones);
+// }
+// zones.add(zoneid);
+// }
+//
+// return zonesByFacade;
+// }
+//
+// /**
+// * Recupere la liste des cartes pour chaque id de zone sous forme de Map.
+// *
+// * @return zone images map
+// * @throws CoserBusinessException
+// */
+// public Map<String, String> getZonePictures() throws CoserBusinessException {
+// Map<String, String> result = new HashMap<String, String>();
+//
+// Iterator<String[]> itZone = getZonesMap().iterator(true);
+// while (itZone.hasNext()) {
+// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+// String[] tuple = itZone.next();
+// result.put(tuple[0], tuple[9]);
+// }
+//
+// return result;
+// }
+//
+// /**
+// * Recupere la liste des meta info pour chaque id de zone sous forme de Map.
+// *
+// * @param locale locale
+// * @return zone meta info map
+// * @throws CoserBusinessException
+// */
+// public Map<String, String> getZoneMetaInfo(Locale locale) throws CoserBusinessException {
+// Map<String, String> result = new HashMap<String, String>();
+//
+// Iterator<String[]> itZone = getZonesMap().iterator(true);
+// while (itZone.hasNext()) {
+// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+// String[] tuple = itZone.next();
+// if (locale != null && "fr".equals(locale.getLanguage())) {
+// result.put(tuple[0], tuple[6]);
+// } else if (locale != null && "es".equals(locale.getLanguage())) {
+// result.put(tuple[0], tuple[8]);
+// } else {
+// result.put(tuple[0], tuple[7]);
+// }
+// }
+//
+// return result;
+// }
+
+// /**
+// * Retourne les nom d'une zone (avec la facade, l'année et la serie) en
+// * fonction de l'id de la zone.
+// *
+// * @param zoneId zone id
+// * @return zone name (or {@code null} if not found)
+// * @throws CoserBusinessException
+// */
+// public String getZoneFullName(String zoneId) throws CoserBusinessException {
+// DataStorage localZoneMap = getZonesMap();
+// String resultName = null;
+// // "id";"facadeid";"facade";"zone";"periode";"serie";"comment";"comment_en";"comment_es";"map"
+// int zoneIndex = localZoneMap.indexOf(zoneId);
+// if (zoneIndex != -1) {
+// resultName = localZoneMap.get(zoneIndex)[2];
+// resultName += " - " + localZoneMap.get(zoneIndex)[3];
+// resultName += " - " + localZoneMap.get(zoneIndex)[4];
+// resultName += " - " + localZoneMap.get(zoneIndex)[5];
+// }
+// return resultName;
+// }
+
+ /**
+ * Retourne tous les projets qui ont des résultats.
+ *
+ * De la forme d'une liste de de path (à la tree path) :
+ * ProjetName/SelectionName/ResultName
+ *
+ * @param beginDate begin date (can be null)
+ * @param endDate end date (can be null)
+ * @param onlyPubliableResult select only publiable results
+ *
+ * @return results paths
+ * @throws CoserBusinessException
+ */
+ public List<RSufiResultPath> findAllProjectWithResult(Date beginDate, Date endDate, boolean onlyPubliableResult) throws CoserBusinessException {
+ List<RSufiResultPath> results = findAllProjectWithResult(config.getProjectsDirectory(),
+ beginDate,
+ endDate,
+ onlyPubliableResult);
+ return results;
+ }
+
+ /**
+ * Retourne tous les projets qui ont des résultats.
+ *
+ * De la forme d'une liste de de path (à la tree path) :
+ * ProjetName/SelectionName/ResultName
+ *
+ * @param projectsDirectory where to search for projects
+ * @param beginDate begin date (can be null)
+ * @param endDate end date (can be null)
+ * @param onlyPubliableResult select only publiable results
+ *
+ * @return results paths
+ * @throws CoserBusinessException
+ */
+ public List<RSufiResultPath> findAllProjectWithResult(File projectsDirectory, Date beginDate, Date endDate, boolean onlyPubliableResult) throws CoserBusinessException {
+ List<RSufiResultPath> results = new ArrayList<RSufiResultPath>();
+
+ // loop on projets
+ File[] projects = projectsDirectory.listFiles();
+ if (projects != null) {
+ for (File existingProject : projects) {
+ if (existingProject.isDirectory()) {
+ String projectName = existingProject.getName();
+ Project p = new Project(projectName);
+
+ // loop on selections
+ File selectionsDirectory = new File(existingProject, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selections = selectionsDirectory.listFiles();
+ if (selections != null) {
+ for (File existingSelection : selections) {
+ if (existingSelection.isDirectory()) {
+ String selectionName = existingSelection.getName();
+ Selection s = new Selection(selectionName);
+
+ // loop on result
+ File rsufisDirectory = new File(existingSelection, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] rSufiResults = rsufisDirectory.listFiles();
+ if (rSufiResults != null) {
+ for (File rSufiResult : rSufiResults) {
+ if (rSufiResult.isDirectory()) {
+ RSufiResult r = projectService.getRSufiResult(rSufiResult);
+
+ boolean candidate = isCandidateResult(r, beginDate, endDate, onlyPubliableResult);
+ if (candidate) {
+ RSufiResultPath result = new RSufiResultPath(p, s, r);
+ results.add(result);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return results;
+ }
+
+ /**
+ * Test if result is valid with filtering.
+ *
+ * @param rsufiResult rsufi result to test
+ * @param beginDate begin date (can be null)
+ * @param endDate end date (can be null)
+ * @param onlyPubliableResult select only publiable results
+ * @return if result is valid candidate
+ */
+ protected boolean isCandidateResult(RSufiResult rsufiResult, Date beginDate,
+ Date endDate, boolean onlyPubliableResult) {
+
+ boolean result = true;
+
+ if (beginDate != null) {
+ result &= rsufiResult.getCreationDate().compareTo(beginDate) >= 0;
+ }
+
+ if (endDate != null) {
+ result &= rsufiResult.getCreationDate().compareTo(endDate) <= 0;
+ }
+
+ if (onlyPubliableResult) {
+ result &= rsufiResult.isPubliableResult();
+ }
+
+ return result;
+ }
+
+ /**
+ * Extract directory to custom directory.
+ *
+ * @param selectedResults selected result paths
+ * @param extractDirectory extract directory (can be null)
+ * @param publishDataResults result paths flaged with results export
+ * @return extracted file (no automatically deleted)
+ * @throws CoserBusinessException
+ */
+ public File performResultExtract(Collection<RSufiResultPath> selectedResults, Collection<RSufiResultPath> publishDataResults, File extractDirectory) throws CoserBusinessException {
+ File prepareZip = null;
+ try {
+
+ // create zip file name not random name
+ if (extractDirectory == null) {
+ prepareZip = File.createTempFile("Coserextract-", ".zip");
+ }
+ else {
+ // cas extraction vers un répertoire specifique
+ DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
+ String zipName = "Coserextract" + dateFormat.format(new Date()) + ".zip";
+ prepareZip = new File(extractDirectory, zipName);
+ }
+
+ // copy selectively all data to target directory
+ MultipleFileFilter mFileFilters = new MultipleFileFilter();
+ for (RSufiResultPath path : selectedResults) {
+ // load projet, needed to known source data file name
+ Project project = path.getProject();
+ project = projectService.openProject(project.getName());
+
+ OneResultFileFilter oneRFF = new OneResultFileFilter(config.getProjectsDirectory(),
+ project, path.getSelection(), path.getRsufiResult(), publishDataResults.contains(path));
+ mFileFilters.add(oneRFF);
+ }
+
+ // create zip temp file
+ File projectsDirectory = config.getProjectsDirectory();
+
+ //ZipUtil.compress(prepareZip, projectsDirectory, mFileFilters);
+ // compress les projets à la racines de l'archive
+ // sans le dossier "projects"
+ Collection<File> files = FileUtil.getFilteredElements(projectsDirectory, mFileFilters, true);
+ ZipUtil.compressFiles(prepareZip, projectsDirectory, files, false);
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't prepare upload data", ex);
+ }
+
+ return prepareZip;
+ }
+
+ /**
+ * Upload user selected result to coser web front-end using common http
+ * client.
+ *
+ * TODO remove les 4 listes s'il y a mieux.
+ *
+ * @param selectedResults selected result (collection of project/selection/rsufiresult)
+ * @param indicatorsResults results selected as indicator results
+ * @param mapResults results selected as map result
+ * @param publishDataResults results selected as results published with data
+ * @param login remote admin login
+ * @param password remote admin password
+ * @param progress progress monitor
+ * @return upload error status or {@code null} if no error
+ * @throws CoserBusinessException
+ */
+ public String performResultUpload(Collection<RSufiResultPath> selectedResults,
+ Collection<RSufiResultPath> indicatorsResults, Collection<RSufiResultPath> mapResults,
+ Collection<RSufiResultPath> publishDataResults, String login,
+ String password, ProgressMonitor progress) throws CoserBusinessException {
+
+ String uploadStatus = null;
+
+ // first copy prepare directory with only necessary data
+ // ie project with only selected selections
+ // and selection with only selected results
+
+ progress.setCurrent(0);
+ progress.setText(t("coser.business.uploadresult.modifyResultOptions"));
+ modifyRSufiResults(selectedResults, indicatorsResults, mapResults, publishDataResults);
+
+ progress.setText(t("coser.business.uploadresult.checkcollision"));
+ checkDataCollision(selectedResults);
+
+ progress.setText(t("coser.business.uploadresult.preparezip"));
+
+ // default extract to temp directory with data sources
+ File prepareZip = performResultExtract(selectedResults, publishDataResults, null);
+
+ progress.setText(t("coser.business.uploadresult.sendzip"));
+ progress.setTotal((int)prepareZip.length());
+
+ // then upload zip file to website
+ try {
+ HttpClient httpclient = new DefaultHttpClient();
+ MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
+
+ // login/password param (password encoded)
+ StringBody loginBody = new StringBody(login, Charset.forName("UTF-8"));
+ reqEntity.addPart("login", loginBody);
+ String sha1password = StringUtil.encodeSHA1(password);
+ StringBody passwordBody = new StringBody(sha1password, Charset.forName("UTF-8"));
+ reqEntity.addPart("sha1Password", passwordBody);
+
+ // file param
+ ProgressStream stream = new ProgressStream(new FileInputStream(prepareZip), progress);
+ InputStreamKnownSizeBody fileBody = new InputStreamKnownSizeBody(stream, prepareZip.length(),
+ "application/zip", prepareZip.getName());
+ reqEntity.addPart("resultFile", fileBody);
+
+ HttpPost httppost = new HttpPost(config.getWebUploadURL());
+ httppost.setEntity(reqEntity);
+
+ if (log.isInfoEnabled()) {
+ log.info("Uploading " + prepareZip + " to " + httppost.getURI());
+ }
+
+ HttpResponse response = httpclient.execute(httppost);
+
+ if (response.getStatusLine().getStatusCode() != 200) {
+ uploadStatus = response.getStatusLine().getReasonPhrase();
+ }
+ } catch (ClientProtocolException ex) {
+ throw new CoserBusinessException("Can't upload file", ex);
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't upload file", ex);
+ }
+
+ prepareZip.delete();
+
+ return uploadStatus;
+ }
+
+ /**
+ * Modifie les types et options de certains résultats rsufi (map result,
+ * data sources result).
+ *
+ * @param selectedResults selected result (collection of project/selection/rsufiresult)
+ * @param indicatorsResults results selected as indicator results
+ * @param mapResults map results
+ * @param publishDataResults publish data results
+ * @throws CoserBusinessException
+ */
+ protected void modifyRSufiResults(Collection<RSufiResultPath> selectedResults,
+ Collection<RSufiResultPath> indicatorsResults, Collection<RSufiResultPath> mapResults,
+ Collection<RSufiResultPath> publishDataResults) throws CoserBusinessException {
+
+ // TODO echatellier 20110117 revoir ce code
+
+ // attention, il faut sauver tout les resultats, sinon, les
+ // decochage de type map / publish result ne seront pas pris en compte
+
+ // reset type map and data source for all
+ for (RSufiResultPath selectedResult : selectedResults) {
+ RSufiResult rsufiResult = selectedResult.getRsufiResult();
+ rsufiResult.setIndicatorsResult(false);
+ rsufiResult.setMapsResult(false);
+ rsufiResult.setDataAllowed(false);
+ }
+
+ // set map type
+ for (RSufiResultPath indicatorsResult : indicatorsResults) {
+ RSufiResult rsufiResult = indicatorsResult.getRsufiResult();
+ rsufiResult.setIndicatorsResult(true);
+ }
+
+ // set map type
+ for (RSufiResultPath mapResult : mapResults) {
+ RSufiResult rsufiResult = mapResult.getRsufiResult();
+ rsufiResult.setMapsResult(true);
+ }
+
+ // set data type
+ for (RSufiResultPath publishDataResult : publishDataResults) {
+ RSufiResult rsufiResult = publishDataResult.getRsufiResult();
+ rsufiResult.setDataAllowed(true);
+ }
+
+ // save all selected results
+ for (RSufiResultPath selectedResult : selectedResults) {
+ Project project = selectedResult.getProject();
+ Selection selection = selectedResult.getSelection();
+ RSufiResult rsufiResult = selectedResult.getRsufiResult();
+
+ File projectDirectory = new File(config.getProjectsDirectory(), project.getName());
+ File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File selectionDirectory = new File(selectionsDirectory, selection.getName());
+ File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File resultDirectory = new File(resultsDirectory, rsufiResult.getName());
+
+ projectService.saveRSufiResult(resultDirectory, rsufiResult);
+ }
+ }
+
+ /**
+ * Met à jour les fichiers de propriétés des resultats (maps, dataSource)
+ * and check for duplicated couple (zoneid/resulttype (map) upload).
+ *
+ * @param selectedResults result id to check
+ * @throws CoserBusinessException
+ */
+ protected void checkDataCollision(Collection<RSufiResultPath> selectedResults) throws CoserBusinessException {
+
+ Collection<String> resultZoneTypeIds = new ArrayList<String>();
+
+ for (RSufiResultPath selectedResult : selectedResults) {
+ Project project = selectedResult.getProject();
+ Selection selection = selectedResult.getSelection();
+ RSufiResult rsufiResult = selectedResult.getRsufiResult();
+
+ // on creer une clé composé pour l'id du resultat
+ String resultZoneTypeId = rsufiResult.getZone() + String.valueOf(rsufiResult.isMapsResult());
+ if (resultZoneTypeIds.contains(resultZoneTypeId)) {
+ throw new CoserBusinessException(t("coser.business.resultupload.duplicatedresult",
+ project.getName(), selection.getName(), rsufiResult.getName(), rsufiResult.getZone()));
+ } else {
+ resultZoneTypeIds.add(resultZoneTypeId);
+ }
+ }
+ }
+
+ /**
+ * Aggrege plusieurs file filters.
+ */
+ protected static class MultipleFileFilter implements FileFilter {
+ protected Collection<FileFilter> fileFilters = new ArrayList<FileFilter>();
+
+ public void add(FileFilter f) {
+ fileFilters.add(f);
+ }
+
+ /*
+ * @see java.io.FileFilter#accept(java.io.File)
+ */
+ @Override
+ public boolean accept(File pathname) {
+
+ boolean result = false;
+ Iterator<FileFilter> it = fileFilters.iterator();
+ while (it.hasNext() && !result) {
+ result = it.next().accept(pathname);
+ }
+ return result;
+ }
+ }
+
+ /**
+ * Filter pour un resultat donné.
+ *
+ * Attention, implémentation que ne doit fonctionner que avec ZipUtil
+ * car meme si on refuse en répertoire, il redemande quand même
+ * les fils (et il faut qu'il les demande)
+ */
+ protected class OneResultFileFilter implements FileFilter {
+ protected File projectsDirectory;
+
+ /** Doit etre un project chargé avec nom de fichier originaux. */
+ protected Project project;
+ protected Selection selection;
+ protected RSufiResult rsufi;
+ protected boolean exportWithData;
+
+ public OneResultFileFilter(File projectsDirectory, Project project, Selection selection, RSufiResult rsufi, boolean exportWithData) {
+ this.projectsDirectory = projectsDirectory;
+ this.project = project;
+ this.selection = selection;
+ this.rsufi = rsufi;
+ this.exportWithData = exportWithData;
+ }
+
+ /*
+ * @see java.io.FileFilter#accept(java.io.File)
+ */
+ @Override
+ public boolean accept(File pathname) {
+
+ boolean result = false;
+
+ try {
+ String currentPathName = pathname.getCanonicalPath() + File.separator;
+
+ File projectDirectory = new File(projectsDirectory, project.getName());
+ File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File selectionDirectory = new File(selectionsDirectory, selection.getName());
+ File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File resultDirectory = new File(resultsDirectory, rsufi.getName());
+
+ String projectPath = projectDirectory.getCanonicalPath() + File.separator;
+ String selectionsPath = selectionsDirectory.getCanonicalPath() + File.separator;
+ String selectionPath = selectionDirectory.getCanonicalPath() + File.separator;
+ String resultsPath = resultsDirectory.getCanonicalPath() + File.separator;
+ String resultPath = resultDirectory.getCanonicalPath() + File.separator;
+
+ // on prend
+ // - tout ce qu'il y a dans le projet
+ // - sauf le répertoire "selections"
+ // - ou la selection entierement
+ // - sauf le répertoire result
+ // - ou le resultat entierrement
+ result = (currentPathName.startsWith(projectPath)
+ && !currentPathName.startsWith(selectionsPath))
+ || (currentPathName.startsWith(selectionPath)
+ && !currentPathName.startsWith(resultsPath))
+ || currentPathName.startsWith(resultPath);
+
+ // cas ou les données sources ne doivent pas être exporter
+ // condition sur les noms de fichiers ?
+ if (!exportWithData) {
+ String fileName = pathname.getName();
+
+ // on exclu tout les fichiers qui commencent
+ // par les memes noms de fichiers que ceux du projet
+ // (les noms de fichiers sont personnalisables)
+ for (Category category : Category.values()) {
+ if (category.isDataCategory()) {
+ String sourceFileName = commonService.getDataStorageFileName(project, category, null);
+ Matcher matcher = CoserUtils.FILENAME_SUFFIX_PATTERN.matcher(sourceFileName);
+ if (matcher.matches()) {
+ result &= !(fileName.startsWith(matcher.group(1)) && fileName.endsWith(matcher.group(2)));
+ } else {
+ result &= !fileName.startsWith(sourceFileName);
+ }
+ }
+ }
+ }
+ } catch (IOException ex) {
+ throw new RuntimeException("Can't get system canonical path");
+ }
+
+ return result;
+ }
+ }
+
+ /**
+ * Traite le fichier uploade par l'application client et l'enregistre
+ * dans le stockage coté web.
+ *
+ * Le nouveau fichier uploadé est mergé avec l'ancien, c'est à dire:
+ * <ul>
+ * <li>dezipage dans un fichier temporaire
+ * <li>recuperation des noms de zones des nouveau fichiers (par type, carte/indicateur)
+ * <li>suppression dans l'ancien répertoire des resultats deja presents dans le nouveau (pour les conflits zone)
+ * <li>suppression des selections vides
+ * <li>suppression des projets vides
+ * <li>copie (avec ecrasement) des nouveaux fichiers dans l'ancien répertoire
+ * mais seulement pour ceux des zones concernés (partie difficile)
+ * </ul>
+ *
+ * TODO chatellier 20110125 l'algorithme n'est pour l'instant pas performant
+ * et contient pas mal de code dupliqué, mais pour la v1.0 ca ira.
+ *
+ * @param login user login
+ * @param archiveFile uploaded file
+ * @throws CoserBusinessException
+ */
+ public void registerNewUploadedResults(String login, File archiveFile) throws CoserBusinessException {
+
+ try {
+
+ // dezipage dans un fichier temporaire
+ File tempDirectory = FileUtil.createTempDirectory("coser-upload-", "-tmp");
+ ZipUtil.uncompress(archiveFile, tempDirectory);
+
+ File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
+ File mapsDirectory = config.getWebMapsProjectsDirectory();
+
+ // recuperer les resultats actuels pour le mail de mise à jour
+ Map<String, String> indicatorResults = getZonesIds(projectsDirectory, true, null, null);
+ Map<String, String> mapsResults = getZonesIds(mapsDirectory, null, true, null);
+ Map<String, String> dataResults = getZonesIds(projectsDirectory, null, null, true);
+
+ // suppression des resultats qui ont été envoyé mais
+ // ne sont ni maps result, ni indicator result
+ Map<String, String> noIndicatorsResultZoneIds = getZonesIds(tempDirectory, false, null, null);
+ cleanCurrentProjectDirectory(projectsDirectory, noIndicatorsResultZoneIds.keySet());
+ Map<String, String> noMapsResultZoneIds = getZonesIds(tempDirectory, null, false, null);
+ cleanCurrentProjectDirectory(mapsDirectory, noMapsResultZoneIds.keySet());
+ Map<String, String> noDataResultZoneIds = getZonesIds(tempDirectory, null, null, false);
+
+ // recuperation des noms zone des nouveau fichiers
+ Map<String, String> indicatorsResultZoneIds = getZonesIds(tempDirectory, true, null, null);
+ // suppression dans l'ancien répertoire des resultat deja present
+ // dans le nouveau (pour les conflits)
+ cleanCurrentProjectDirectory(projectsDirectory, indicatorsResultZoneIds.keySet());
+ // creation du filter qui copiera juste ce qu'il faut
+ FileFilter indicatorsFileFilter = getCopyFileFilter(tempDirectory, false);
+ // copie (avec ecrasement) des nouveaux fichiers dans l'ancien répertoire
+ customCopyDirectory(tempDirectory, projectsDirectory, indicatorsFileFilter);
+
+ // recuperation des noms zone des nouveau fichiers
+ Map<String, String> mapsResultZoneIds = getZonesIds(tempDirectory, null, true, null);
+ // suppression dans l'ancien répertoire des resultat deja present
+ // dans le nouveau (pour les conflits)
+ cleanCurrentProjectDirectory(mapsDirectory, mapsResultZoneIds.keySet());
+ // creation du filter qui copiera juste ce qu'il faut
+ FileFilter mapsFileFilter = getCopyFileFilter(tempDirectory, true);
+ // copie (avec ecrasement) des nouveaux fichiers dans l'ancien répertoire
+ customCopyDirectory(tempDirectory, mapsDirectory, mapsFileFilter);
+
+ // recuperation des nom de resultat data
+ Map<String, String> dataResultZoneIds = getZonesIds(tempDirectory, null, null, true);
+
+ FileUtils.deleteDirectory(tempDirectory);
+
+ if (log.isInfoEnabled()) {
+ log.info("Unzipping file " + archiveFile + " to " + projectsDirectory);
+ }
+
+ // generate email content
+ StringBuilder content = new StringBuilder();
+
+ int count = 0;
+ content.append(t("coser.business.notificationmail.mapsresults") + "\n");
+ for (Map.Entry<String, String> noMapsResultZoneId : noMapsResultZoneIds.entrySet()) {
+ if (mapsResults.containsValue(noMapsResultZoneId.getValue())) {
+ content.append(" - " + t("coser.business.notificationmail.deleted",
+ getZoneFullName(noMapsResultZoneId.getKey()),
+ noMapsResultZoneId.getValue()) + "\n");
+ count++;
+ }
+ }
+ for (Map.Entry<String, String> mapsResultZoneId : mapsResultZoneIds.entrySet()) {
+ if (!mapsResults.containsValue(mapsResultZoneId.getValue())) {
+ content.append(" - " + t("coser.business.notificationmail.added",
+ getZoneFullName(mapsResultZoneId.getKey()),
+ mapsResultZoneId.getValue()) + "\n");
+ count++;
+ }
+ }
+ content.append("\n");
+
+ content.append(t("coser.business.notificationmail.indicatorsresults") + "\n");
+ for (Map.Entry<String, String> noIndicatorsResultZoneId : noIndicatorsResultZoneIds.entrySet()) {
+ if (indicatorResults.containsValue(noIndicatorsResultZoneId.getValue())) {
+ content.append(" - " + t("coser.business.notificationmail.deleted",
+ getZoneFullName(noIndicatorsResultZoneId.getKey()),
+ noIndicatorsResultZoneId.getValue()) + "\n");
+ count++;
+ }
+
+ }
+ for (Map.Entry<String, String> indicatorsResultZoneId : indicatorsResultZoneIds.entrySet()) {
+ if (!indicatorResults.containsValue(indicatorsResultZoneId.getValue())) {
+ content.append(" - " + t("coser.business.notificationmail.added",
+ getZoneFullName(indicatorsResultZoneId.getKey()),
+ indicatorsResultZoneId.getValue()) + "\n");
+ count++;
+ }
+ }
+ content.append("\n");
+
+ content.append(t("coser.business.notificationmail.dataresults") + "\n");
+ for (Map.Entry<String, String> noDataResultZoneId : noDataResultZoneIds.entrySet()) {
+ if (dataResults.containsValue(noDataResultZoneId.getValue())) {
+ content.append(" - " + t("coser.business.notificationmail.deleted",
+ getZoneFullName(noDataResultZoneId.getKey()),
+ noDataResultZoneId.getValue()) + "\n");
+ count++;
+ }
+
+ }
+ for (Map.Entry<String, String> dataResultZoneId : dataResultZoneIds.entrySet()) {
+ if (!dataResults.containsValue(dataResultZoneId.getValue())) {
+ content.append(" - " + t("coser.business.notificationmail.added",
+ getZoneFullName(dataResultZoneId.getKey()),
+ dataResultZoneId.getValue()) + "\n");
+ count++;
+ }
+ }
+ content.append("\n");
+
+ // send notification mails
+ sendNewResultNotifications(login, count, content.toString());
+
+ // update data date
+ updateDataProperties();
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't uncompress file", ex);
+ }
+ }
+
+ /**
+ * N'utilise pas la methode de commons-fileutils, car lorsqu'un répertoire
+ * est refusé, il ne descend pas dans les sous répertoire alors que dans
+ * notre cas il le faut.
+ *
+ * @param srcDir source directory to copy
+ * @param destDir destination directory
+ * @param indicatorsFileFilter file filter for file to copy
+ * @throws IOException
+ */
+ protected void customCopyDirectory(File srcDir,
+ File destDir, FileFilter indicatorsFileFilter) throws IOException {
+ List<File> files = FileUtil.getFilteredElements(srcDir, null, true);
+ for (File file : files) {
+ if (indicatorsFileFilter.accept(file)) {
+ String path = file.getPath().substring(srcDir.getPath().length());
+
+ File destFile = new File(destDir, path);
+ if (file.isDirectory()) {
+ destFile.mkdirs();
+ }
+ else {
+ FileUtils.copyFile(file, destFile);
+ }
+ }
+ }
+ }
+
+ /**
+ * Met à jour certaines proprietes apres la mise à jour des données.
+ *
+ * @throws CoserBusinessException
+ */
+ protected void updateDataProperties() throws CoserBusinessException {
+
+ File webProperties = config.getWebPropertiesFile();
+
+ Properties props = new Properties();
+ InputStream iStream = null;
+ OutputStream oStream = null;
+ try {
+ if (webProperties.isFile()) {
+ iStream = new FileInputStream(webProperties);
+ props.load(iStream);
+ }
+
+ props.setProperty("updateDate", String.valueOf(new Date().getTime()));
+ oStream = new FileOutputStream(webProperties);
+ props.store(oStream, "Update data");
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't save properties file", ex);
+ }
+ finally {
+ IOUtils.closeQuietly(iStream);
+ IOUtils.closeQuietly(oStream);
+ }
+ }
+
+ /**
+ * Retourne la date de dernière mise à jour des données du site web.
+ *
+ * Retourne une date bidon, si pas de dernière mise à jour.
+ *
+ * @return last data update date
+ * @throws CoserBusinessException
+ */
+ public Date getLastDataUpdateDate() throws CoserBusinessException {
+ Date dataUpdateDate = null;
+ File webProperties = config.getWebPropertiesFile();
+ if (webProperties.isFile()) {
+ // get update date
+ Properties props = new Properties();
+ InputStream stream = null;
+ try {
+ stream = new FileInputStream(webProperties);
+ props.load(stream);
+
+ if (props.containsKey("updateDate")) {
+ String date = props.getProperty("updateDate");
+ long time = Long.parseLong(date);
+ dataUpdateDate = new Date(time);
+ }
+
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't read properties file", ex);
+ }
+ finally {
+ IOUtils.closeQuietly(stream);
+ }
+ }
+
+ if (dataUpdateDate == null) {
+ dataUpdateDate = new Date(0);
+ }
+
+ return dataUpdateDate;
+ }
+
+ /**
+ * Recupere dans un repertoire donné, les zoneid des resultat avec
+ * pour chaque id, le nom du projet associé.
+ *
+ * Les boolean sont des grands {@code Boolean} car si la valeur
+ * est {@code null}, on ne tient pas compte du critere lors de la recherche.
+ *
+ * @param scanDirectory le repertoire a scanner
+ * @param indicatorResults if true get indicator results
+ * @param mapResults if true get map results
+ * @param dataResults if true get data allowed result
+ * @return une map de resultid/nom visuel des projets
+ * @throws CoserBusinessException
+ */
+ protected Map<String, String> getZonesIds(File scanDirectory, Boolean indicatorResults,
+ Boolean mapResults, Boolean dataResults) throws CoserBusinessException {
+
+ Map<String, String> resultIds = new HashMap<String, String>();
+ File[] projectFiles = scanDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // return result depending on result type
+ if ( ( indicatorResults == null || rsufiResult.isIndicatorsResult() == indicatorResults )
+ &&
+ ( mapResults == null || rsufiResult.isMapsResult() == mapResults )
+ &&
+ ( dataResults == null || rsufiResult.isDataAllowed() == dataResults)) {
+ String resultResultId = rsufiResult.getZone();
+ if (StringUtils.isNotBlank(resultResultId)) {
+ String resultPath = projectFile.getName() + "/" +
+ selectionFile.getName() + "/" +
+ resultFile.getName();
+ resultIds.put(resultResultId, resultPath);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return resultIds;
+ }
+
+ /**
+ * Retourne un file filter qui ne copiera que les dossiers resultat
+ * correspondant au type demandé. Pour un resultat, le filtre devra
+ * egalement copier les dossiers projet et selection correspondants.
+ *
+ * @param scanDirectory directory containing result to copy
+ * @param mapResults result type to get
+ * @return aggragated file filter
+ * @throws CoserBusinessException
+ */
+ protected FileFilter getCopyFileFilter(File scanDirectory, boolean mapResults) throws CoserBusinessException {
+
+ MultipleFileFilter aggregateFileFilter = new MultipleFileFilter();
+
+ File[] projectFiles = scanDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // return result depending on result type
+ if ( (mapResults && rsufiResult.isMapsResult()) ||
+ (!mapResults && rsufiResult.isIndicatorsResult())) {
+
+ Project p = new Project(projectFile.getName());
+ Selection s = new Selection(selectionFile.getName());
+
+ OneResultFileFilter resultFileFilter = new OneResultFileFilter(scanDirectory, p, s, rsufiResult, true);
+ aggregateFileFilter.add(resultFileFilter);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return aggregateFileFilter;
+ }
+
+ /**
+ * Fait le menage dans le dossier courant des projets en supprimant
+ * tout les resulat qui ont un result id present dans la liste
+ * {@code newResultIds}.
+ *
+ * Supprime egalement les selections qui n'ont plus de résultats et
+ * les projets qui n'ont plus de selection.
+ *
+ * @param projectsDirectory projectsDirectory
+ * @param newResultIds new ids
+ * @throws CoserBusinessException
+ */
+ protected void cleanCurrentProjectDirectory(File projectsDirectory, Collection<String> newResultIds) throws CoserBusinessException {
+
+ try {
+ File[] projectFiles = projectsDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ int projectSelectionCount = 0;
+
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ int selectionResultCount = 0;
+
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+ String resultResultId = rsufiResult.getZone();
+ if (newResultIds.contains(resultResultId)) {
+ // un nouveau resulat utilsera ce resultid
+ FileUtils.deleteDirectory(resultFile);
+ } else {
+ // un resultat valid trouvé, selection non a supprimer
+ selectionResultCount++;
+ }
+ }
+ }
+ }
+
+ // si aucun resultat valide, suppression de la seletion
+ if (selectionResultCount == 0) {
+ FileUtils.deleteDirectory(selectionFile);
+ } else {
+ projectSelectionCount++;
+ }
+ }
+ }
+ }
+
+ // si aucune selection avec resultat, suppression du projet
+ if (projectSelectionCount == 0) {
+ FileUtils.deleteDirectory(projectFile);
+ }
+ }
+ }
+ }
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't delete directory", ex);
+ }
+ }
+
+ /**
+ * Envoi un mail de notification apres la publication des resultat à la
+ * liste des adresses email renseignées dans la configuration.
+ *
+ * @param login user login
+ * @param count updated data count
+ * @param detail body mail detail
+ */
+ protected void sendNewResultNotifications(String login, int count, String detail) {
+ List<String> emails = config.getNewResultNotificationList();
+
+ for (String email : emails) {
+ try {
+ MultiPartEmail emailPart = new MultiPartEmail();
+ emailPart.setHostName(config.getSmtpHost());
+ emailPart.addTo(email);
+ emailPart.setFrom("noreply-coser(a)ifremer.fr", "Coser");
+ emailPart.setSubject(t("coser.business.notificationmail.subject", count));
+ emailPart.setContent(t("coser.business.notificationmail.body", login, detail), "text/plain; charset=ISO-8859-9");
+
+ // send mail
+ emailPart.send();
+ } catch (EmailException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't send mail", ex);
+ }
+ }
+ }
+ }
+
+ /**
+ * Recuperer la liste des populations pour une zone donnée.
+ *
+ * @param zone zone id
+ * @return map species nom info>nom officiel
+ * @param forMap for map directory
+ * @throws CoserBusinessException
+ */
+ public Map<String, String> getSpecies(String zone, boolean forMap) throws CoserBusinessException {
+ return getSpecies(Collections.singleton(zone), forMap);
+ }
+
+ /**
+ * Recuperer la liste des populations pour un ensemble de zones donnée.
+ *
+ * @param zones zones ids
+ * @return map species nom info>nom officiel
+ * @param forMap for map directory
+ * @throws CoserBusinessException
+ */
+ public Map<String, String> getSpecies(Collection<String> zones, boolean forMap) throws CoserBusinessException {
+
+ Map<String, String> result = new TreeMap<String, String>();
+
+ File projectsDirectory = null;
+ if (forMap) {
+ projectsDirectory = config.getWebMapsProjectsDirectory();
+ }
+ else {
+ projectsDirectory = config.getWebIndicatorsProjectsDirectory();
+ }
+
+ File[] projectFiles = projectsDirectory.listFiles();
+
+ // parcours des resultats disponibles
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+
+ // selection iteration
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+
+ // result iteration
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // extraction des especes pour le résultat demandé
+ if (rsufiResult.getZone() != null && zones.contains(rsufiResult.getZone())) {
+
+ // load project (without data to get reftax data)
+ Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
+
+ Map<String, String> resultSpecies = getRsufiResultSpecies(project, resultFile, rsufiResult);
+ result.putAll(resultSpecies);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Recupere la liste de toutes les especes nom sci et nom off à partir
+ * d'un resultat.
+ *
+ * @param project project
+ * @param resultDirectory rsufi result directory
+ * @param rsufiResult rsufi result
+ * @return map with each species code/species name
+ * @throws CoserBusinessException
+ */
+ protected Map<String, String> getRsufiResultSpecies(Project project, File resultDirectory, RSufiResult rsufiResult) throws CoserBusinessException {
+ Map<String, String> result = new HashMap<String, String>();
+
+ // load reftax in memory
+ Map<String, String> speciesNames = new HashMap<String, String>();
+ Iterator<String[]> reftax = project.getRefTaxSpecies().iterator(true);
+ while (reftax.hasNext()) {
+ String[] tuple = reftax.next();
+
+ // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
+ String speciesCode = tuple[3];
+ // nom + auteur (sans ajout de parenthese : important)
+ String speciesName = tuple[4] + " " + tuple[5];
+
+ speciesNames.put(speciesCode, speciesName);
+ }
+
+ // un peu lourd mais reconstruit le path jusqu'au fichier estcomind
+ File estPopIndFile = new File(resultDirectory, rsufiResult.getEstPopIndName());
+
+ // Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
+ DataStorage dataStorage = commonService.loadCSVFile(estPopIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+
+ Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
+ while (estPopIndIterator.hasNext()) {
+ String[] tuple = estPopIndIterator.next();
+
+ String specyCode = tuple[3];
+ String specyName = speciesNames.get(specyCode);
+
+ if (StringUtils.isNotEmpty(specyName)) {
+ result.put(specyCode, specyName);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Retourne les indicateurs calculés avec leurs traductions scientifique
+ * pour la zone et l'especes souhaitées.
+ *
+ * @param zone zone id
+ * @param species especes (if {@code null} look for com indicators)
+ * @param locale locale
+ * @return la liste des indicateurs
+ * @throws CoserBusinessException
+ */
+ public Map<String, String> getIndicators(String zone, String species, Locale locale) throws CoserBusinessException {
+ Map<String, String> indicators = new TreeMap<String, String>();
+
+ // parcours des resultats disponibles
+ File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
+ File[] projectFiles = projectsDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+
+ // selection iteration
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+
+ // result iteration
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // extraction des especes pour le résultat demandé
+ if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
+
+ Map<String, String> resultIndicators = null;
+
+ if (species == null) {
+ resultIndicators = getRsufiResultComIndicators(resultFile, rsufiResult, locale);
+ }
+ else {
+ resultIndicators = getRsufiResultPopIndicators(resultFile, rsufiResult, species, locale);
+ }
+ indicators.putAll(resultIndicators);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return indicators;
+ }
+
+ /**
+ * Retourne les indicateurs calculés avec leurs traductions scientifique
+ * pour les zones souhaitées. Retournes les indicateurs de populations
+ * de de communauté à la fois.
+ *
+ * @param zones zones id
+ * @param dataType data type
+ * @param locale locale
+ * @return la liste des indicateurs
+ * @throws CoserBusinessException
+ * @since 1.4
+ */
+ public Map<String, String> getIndicators(Collection<String> zones, DataType dataType, Locale locale) throws CoserBusinessException {
+ Map<String, String> indicators = new TreeMap<String, String>();
+
+ // parcours des resultats disponibles
+ File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
+ File[] projectFiles = projectsDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+
+ // selection iteration
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+
+ // result iteration
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // extraction des especes pour le résultat demandé
+ if (zones.contains(rsufiResult.getZone())) {
+
+ Map<String, String> resultIndicators = null;
+ if (dataType == DataType.COMMUNITY) {
+ resultIndicators = getRsufiResultComIndicators(resultFile, rsufiResult, locale);
+ indicators.putAll(resultIndicators);
+ }
+ if (dataType == DataType.POPULATION) {
+ resultIndicators = getRsufiResultPopIndicators(resultFile, rsufiResult, null, locale);
+ indicators.putAll(resultIndicators);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return indicators;
+ }
+
+ /**
+ * Recupere la liste de toutes les especes nom sci et nom off à partir
+ * d'un resultat.
+ *
+ * @param resultDirectory rsufi result directory
+ * @param rsufiResult result
+ * @param species to get indicator (can be {@code null} to not filter on species)
+ * @param locale locale
+ * @return indicator for species
+ * @throws CoserBusinessException
+ */
+ protected Map<String, String> getRsufiResultPopIndicators(File resultDirectory, RSufiResult rsufiResult, String species, Locale locale) throws CoserBusinessException {
+
+ Map<String, String> result = new HashMap<String, String>();
+
+ IndicatorMap indicatorsMap = getIndicatorsMap();
+
+ // le fichier estcomind
+ File estPopIndFile = new File(resultDirectory, rsufiResult.getEstPopIndName());
+
+ // Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
+ DataStorage dataStorage = commonService.loadCSVFile(estPopIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+
+ Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
+ while (estPopIndIterator.hasNext()) {
+ String[] tuple = estPopIndIterator.next();
+
+ String specyCode = tuple[3];
+ if (species == null || specyCode.equals(species)) {
+
+ String indicatorCode = tuple[1];
+ String translations = indicatorsMap.getIndicatorValue(indicatorCode, locale);
+// String translations = getIndicatorValue(indicatorCode, locale.getLanguage());
+// if (translations == null) {
+// translations = "##" + indicatorCode + "##" + locale.getLanguage();
+// }
+ result.put(indicatorCode, translations);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Recupere la liste de toutes les especes nom sci et nom off à partir
+ * d'un resultat.
+ *
+ * @param resultDirectory rsufi result directory
+ * @param rsufiResult result
+ * @param locale locale
+ * @return indicator for species
+ * @throws CoserBusinessException
+ */
+ protected Map<String, String> getRsufiResultComIndicators(File resultDirectory, RSufiResult rsufiResult, Locale locale) throws CoserBusinessException {
+
+ Map<String, String> result = new HashMap<String, String>();
+
+ IndicatorMap indicatorsMap = getIndicatorsMap();
+
+ // le fichier estcomind
+ File estComIndFile = new File(resultDirectory, rsufiResult.getEstComIndName());
+
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ DataStorage dataStorage = commonService.loadCSVFile(estComIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+
+ Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
+ while (estPopIndIterator.hasNext()) {
+ String[] tuple = estPopIndIterator.next();
+
+ String indicatorCode = tuple[1];
+ String translations = indicatorsMap.getIndicatorValue(indicatorCode, locale);
+// String translations = getIndicatorValue(indicatorCode, locale.getLanguage());
+// if (translations == null) {
+// translations = "##" + indicatorCode + "##" + locale.getLanguage();
+// }
+ result.put(indicatorCode, translations);
+ }
+
+ return result;
+ }
+
+ /**
+ * Retourne les listes sur lequel l'indicateur fournit a ete calculé.
+ *
+ * @param zone zone id
+ * @param indicator indicator
+ * @param locale locale
+ * @return la liste des indicateurs
+ * @throws CoserBusinessException
+ */
+ public Map<String, String> getIndicatorLists(String zone, String indicator, Locale locale) throws CoserBusinessException {
+ // linked hash map (doit respecter l'ordre d'insertion)
+ Map<String, String> indicators = new LinkedHashMap<String, String>();
+
+ // parcours des resultats disponibles
+ File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
+ File[] projectFiles = projectsDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+
+ // selection iteration
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+
+ // result iteration
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // extraction des especes pour le résultat demandé
+ if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
+
+ // le fichier contenant le code type espece (utile
+ // pour les traductions des list d'indicateur)
+ File codeTypeEspecesFile = new File(projectFile, CoserConstants.Category.TYPE_ESPECES.getStorageFileName());
+
+ Map<String, String> resultIndicators = getRsufiResultComIndicatorLists(resultFile,
+ rsufiResult, codeTypeEspecesFile, indicator, locale);
+ indicators.putAll(resultIndicators);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return indicators;
+ }
+
+ /**
+ * Recupere les nom des listes sur lesquelle ont été calculé les
+ * indicateurs avec leurs traductions.
+ *
+ * @param resultDirectory rsufi result directory
+ * @param rsufiResult result
+ * @param indicator indicator
+ * @param locale locale
+ * @return indicator for species
+ * @throws CoserBusinessException
+ */
+ protected Map<String, String> getRsufiResultComIndicatorLists(File resultDirectory,
+ RSufiResult rsufiResult, File codeTypeEspecesFile, String indicator, Locale locale) throws CoserBusinessException {
+
+ // linked hash map (doit respecter l'ordre d'insertion)
+ Map<String, String> result = new LinkedHashMap<String, String>();
+
+ // le fichier estcomind
+ File estComIndFile = new File(resultDirectory, rsufiResult.getEstComIndName());
+
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ DataStorage dataStorage = commonService.loadCSVFile(estComIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+ DataStorage dataStorageType = commonService.loadCSVFile(codeTypeEspecesFile, CoserConstants.CSV_SEPARATOR_CHAR);
+
+ Iterator<String[]> estPopIndIterator = dataStorage.iterator(true);
+ while (estPopIndIterator.hasNext()) {
+ String[] tuple = estPopIndIterator.next();
+
+ String indicatorCode = tuple[1];
+ if (indicatorCode.equals(indicator)) {
+ String list = tuple[2];
+
+ // recherche de la traduction de l'id de liste
+ // les liste sont a1, T1, T2 ...
+ String listLetter = String.valueOf(list.charAt(0));
+ String translation = "## " + list + " not found ##";
+ Iterator<String[]> typeIterator = dataStorageType.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")) {
+ if (locale != null && "fr".equals(locale.getLanguage())) {
+ translation = "Tous Liste " + list.charAt(1);
+ } else if (locale != null && "en".equals(locale.getLanguage())) {
+ translation = "Todo Lista " + list.charAt(1);
+ } else {
+ translation = "All List " + list.charAt(1);
+ }
+ }
+ else {
+ // ajout de la traduction du nom de liste plus le numéro
+ if (locale != null && "fr".equals(locale.getLanguage())) {
+ translation = tupleType[0] + " Liste " + list.charAt(1);
+ } else if (locale != null && "en".equals(locale.getLanguage())) {
+ translation = tupleType[0] + " Lista " + list.charAt(1);
+ } else {
+ translation = tupleType[0] + " List " + list.charAt(1);
+ }
+ }
+ break;
+ }
+ }
+ result.put(list, translation);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Retourne les indicateurs calculés avec leurs traductions scientifique
+ * pour la zone et l'especes souhaitées.
+ *
+ * @param zone zone id
+ * @param species especes (if {@code null} look for com indicators
+ * @param indicator indicator
+ * @param list indicator's list (if {@code null} look for pop indicators or no list selected
+ * @param locale locale
+ * @return la liste des indicateurs
+ * @throws CoserBusinessException
+ */
+ public File getChart(String zone, String species, String indicator, String list, Locale locale) throws CoserBusinessException {
+ File result = null;
+
+ IndicatorMap indicatorsMap = getIndicatorsMap();
+
+ // parcours des resultats disponibles
+ File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
+ File[] projectFiles = projectsDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+
+ // selection iteration
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+
+ // result iteration
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // extraction des especes pour le résultat demandé
+ if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
+
+ // load project (without data to get reftax data)
+ Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
+// String indicatorName = getIndicatorValue(indicator, locale.getLanguage());
+// String unit = getIndicatorValue(indicator, "unit");
+ String indicatorName = indicatorsMap.getIndicatorValue(indicator, locale);
+ String unit = indicatorsMap.getIndicatorUnit(indicator);
+
+// String zoneDisplayName = getZoneFullName(zone);
+ String zoneDisplayName = getZonesMap().getZoneFullName(zone);
+
+ if (species == null) {
+ // le fichier contenant le code type espece (utile
+ // pour les traductions des list d'indicateur)
+ File codeTypeEspecesFile = new File(projectFile, CoserConstants.Category.TYPE_ESPECES.getStorageFileName());
+
+ // title = surveyName - indicateur
+ result = publicationService.getRsufiResultComChart(project, resultFile,
+ rsufiResult, codeTypeEspecesFile, indicator, list,
+ zoneDisplayName, indicatorName, unit, locale);
+ }
+ else {
+ // title = surveyName - indicateur - species
+ result = publicationService.getRsufiResultPopChart(project, resultFile,
+ rsufiResult, species, indicator, zoneDisplayName, indicatorName,
+ unit, locale);
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Retourne les indicateurs calculés avec leurs traductions scientifique
+ * pour la zone et l'especes souhaitées.
+ *
+ * @param zone zone id
+ * @param species especes (if {@code null} look for com indicators
+ * @param indicator indicator
+ * @param list indicator's list (if {@code null} look for pop indicators or no list selected
+ * @param locale locale
+ * @return la liste des indicateurs
+ * @throws CoserBusinessException
+ */
+ public File getChartData(String zone, String species, String indicator, String list, Locale locale) throws CoserBusinessException {
+ File result = null;
+
+ // parcours des resultats disponibles
+ File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
+ File[] projectFiles = projectsDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+
+ // selection iteration
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+
+ // result iteration
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // extraction des especes pour le résultat demandé
+ if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
+ result = getChartDataFile(projectsDirectory, projectFile, selectionFile, resultFile, rsufiResult, species, indicator, list, locale);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Generate chart data (as csv for population and as zip for community).
+ *
+ * @param projectsDirectory projects storage directory
+ * @param projectDirectory current project directory
+ * @param selectionDirectory selection directory
+ * @param resultDirectory rsufi result directory
+ * @param rSufiResult rsufi result
+ * @param species species (can be null for community)
+ * @param indicator indicator
+ * @param list indicator's list (if {@code null} look for pop indicators or no list selected
+ * @param locale locale
+ * @return generated file (auto delete when jvm shutdown)
+ * @throws CoserBusinessException
+ */
+ protected File getChartDataFile(File projectsDirectory, File projectDirectory, File selectionDirectory,
+ File resultDirectory, RSufiResult rSufiResult, String species, String indicator, String list,
+ Locale locale) throws CoserBusinessException {
+
+ File result = null;
+
+ try {
+ // cas community (zip avec fichier meta)
+ if (species == null) {
+ File tempDir = FileUtil.createTempDirectory("coser-chartdata-", "-tmp");
+
+ String surveyName = projectService.getProjectSurveyName(resultDirectory, rSufiResult);
+ File baseDir = new File(tempDir, surveyName);
+ baseDir.mkdirs();
+
+ File csvFile = publicationService.getRsufiResultComChartData(resultDirectory, rSufiResult, indicator, list);
+ File csvFileCopied = new File(baseDir, indicator + ".csv");
+ FileUtils.copyFile(csvFile, csvFileCopied);
+ csvFile.delete();
+
+ // ajout du fichier d'information sur les espèces incluses dans
+ // les calculs des indicateurs de communautés
+ // load project (without data to get reftax data)
+ Project project = projectService.openProject(projectDirectory.getName(), projectsDirectory);
+ Selection selection = project.getSelections().get(selectionDirectory.getName());
+ File metaFile = generateMetaFilePDF(project, selection, resultDirectory, rSufiResult, indicator, locale);
+ File metaFileCopied = new File(baseDir, "Information.pdf");
+ FileUtils.copyFile(metaFile, metaFileCopied);
+
+ // make zip
+ result = File.createTempFile("coser-chartdata-", ".zip");
+ result.deleteOnExit();
+ ZipUtil.compress(result, baseDir);
+
+ // clean directory
+ FileUtils.deleteDirectory(tempDir);
+ }
+ else {
+ // cas pop, fichier csv brut
+ result = publicationService.getRsufiResultPopChartData(resultDirectory, rSufiResult, species, indicator);
+ }
+
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't generate chart data file", ex);
+ }
+
+ return result;
+ }
+
+ /**
+ * Recupere le fichier image de la carte demandées en fonction de la zone
+ * et de l'espece.
+ *
+ * Retourne également la repartition globale sur la zone si le nom de
+ * l'espece est {@code null}.
+ *
+ * @param zone zone (zoneid)
+ * @param species species or (null to get <survey>_Repartition-stations.png map file)
+ * @return map file
+ * @throws CoserBusinessException
+ */
+ public File getMapFile(String zone, String species) throws CoserBusinessException {
+
+ File result = null;
+
+ // parcours des resultats disponibles
+ File projectsDirectory = config.getWebMapsProjectsDirectory();
+ File[] projectFiles = projectsDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+
+ // selection iteration
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+
+ // result iteration
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // extraction des especes pour le résultat demandé
+ if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone) && rsufiResult.isMapsResult()) {
+ // get survey name (other condition)
+ String surveyName = projectService.getProjectSurveyName(resultFile, rsufiResult);
+
+ String mapName = null;
+ if (species != null) {
+ mapName = surveyName + "_" + species.toUpperCase() + ".png";
+ }
+ else {
+ mapName = surveyName + "_Repartition-stations.png";
+ }
+
+ File mapsDirectory = new File(resultFile, CoserConstants.STORAGE_MAPS_DIRECTORY);
+ result = new File(mapsDirectory, mapName);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Genere un fichier zip des sources d'un projet.
+ *
+ * Contient:
+ * <ul>
+ * <li>les 4 fichiers apres sélection
+ * <li>un fichier de décharge (pdf)
+ * </ul>
+ *
+ * @param zone zone (zoneid-surveyname)
+ * @param locale locale
+ * @return zip source file (auto delete when jvm shutdown)
+ * @throws CoserBusinessException
+ */
+ public File getSourceZip(String zone, Locale locale) throws CoserBusinessException {
+
+ File result = null;
+
+ // parcours des resultats disponibles
+ File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
+ File[] projectFiles = projectsDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+
+ // selection iteration
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+
+ // result iteration
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // extraction des especes pour le résultat demandé
+ if (rsufiResult.getZone() != null && rsufiResult.getZone().equals(zone)) {
+
+ // load project (with data to get original file names)
+ Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
+
+ // load selection data (to do data export rsufi)
+ Selection selection = project.getSelections().get(selectionFile.getName());
+
+ // be sure that data are available for this project
+ // or it will fail
+ projectService.loadSelectionData(projectsDirectory, project, selection);
+
+ result = generateSourceZip(project, selection, resultFile, rsufiResult, locale);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Generate zip for selection.
+ *
+ * Be sure that data are available for this project.
+ *
+ * @param project project
+ * @param selection selection with loaded data
+ * @param resultDirectory rsufi result directory
+ * @param rSufiResult rsufi result
+ * @param locale generated pdf locale
+ * @return generated zip file (auto delete when jvm shutdown)
+ * @throws CoserBusinessException
+ */
+ protected File generateSourceZip(Project project, Selection selection, File resultDirectory,
+ RSufiResult rSufiResult, Locale locale) throws CoserBusinessException {
+
+ if (!rSufiResult.isDataAllowed()) {
+ throw new CoserBusinessException("Can't download source for non allowed result");
+ }
+
+ File resultZip = null;
+
+ try {
+ File tempDir = FileUtil.createTempDirectory("coser-source-", "-tmp");
+
+ // il ne faut pas les fichiers de selection, mais leurs
+ // export rsufi (sans les lignes, et les quotes)
+ File archiveDir = projectService.extractRSUfiData(project, selection, tempDir, true);
+
+ // add decharge file
+ String filename = null;
+ 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";
+ }
+ File dechargePDF = new File(archiveDir, filename);
+ generateDechargePDF(dechargePDF, resultDirectory, rSufiResult, locale);
+
+ // ajout du reftax dans le zip
+ File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
+ File projectDirectory = new File(projectsDirectory, project.getName());
+ File reftaxFile = new File(projectDirectory, CoserConstants.Category.REFTAX_SPECIES.getStorageFileName());
+ FileUtils.copyFileToDirectory(reftaxFile, archiveDir);
+
+ // make zip
+ resultZip = File.createTempFile("coser-source-", ".zip");
+ resultZip.deleteOnExit();
+ ZipUtil.compress(resultZip, archiveDir);
+
+ // clean directory
+ FileUtils.deleteDirectory(tempDir);
+ } catch (IOException ex) {
+ throw new CoserBusinessException("Can't create zip file", ex);
+ }
+
+ return resultZip;
+ }
+
+ /**
+ * Genere le PDF dynamique de decharge à partir du template freemarker.
+ *
+ * @param disclamerPdf pdf file to generate
+ * @param resultDirectory rsufi result directory
+ * @param rSufiResult rsufi result
+ * @param locale generated pdf locale
+ * @return le fichier généré
+ * @throws CoserBusinessException
+ */
+ protected File generateDechargePDF(File disclamerPdf, File resultDirectory, RSufiResult rSufiResult, Locale locale) throws CoserBusinessException {
+
+ File result = null;
+
+ 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 CoserBusinessException("Can't generate decharge file", ex);
+ } catch (TemplateException ex) {
+ throw new CoserBusinessException("Can't generate decharge file", ex);
+ } catch (DocumentException ex) {
+ throw new CoserBusinessException("Can't generate decharge file", ex);
+ } finally {
+ IOUtils.closeQuietly(os);
+ }
+
+ return result;
+ }
+
+ /**
+ * Genere le fichier PDF d'information sur les espèces incluses dans les
+ * calculs des indicateurs de communautés, à jointe à chaque téléchargement.
+ *
+ * @param project project
+ * @param selection selection
+ * @param resultDirectory result directory
+ * @param rsufiResult rsufi result
+ * @param indicator indicator
+ * @param locale locale
+ * @return generated pdf file
+ * @throws CoserBusinessException
+ */
+ protected File generateMetaFilePDF(Project project, Selection selection, File resultDirectory,
+ RSufiResult rsufiResult, String indicator, Locale locale) throws CoserBusinessException {
+
+ 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>>();
+
+ IndicatorMap indicatorsMap = getIndicatorsMap();
+
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ DataStorage dataStorage = commonService.loadCSVFile(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 = indicatorsMap.getIndicatorValue(indicatorCode, locale.getLanguage());
+// String indicatorName = 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 CoserBusinessException("Can't generate meta info file", ex);
+ } catch (TemplateException ex) {
+ throw new CoserBusinessException("Can't generate meta info file", ex);
+ } catch (DocumentException ex) {
+ throw new CoserBusinessException("Can't generate meta info file", ex);
+ } finally {
+ IOUtils.closeQuietly(os);
+ }
+
+ return result;
+ }
+
+ /**
+ * Recupere dans le repertoire des projets d'indicateur les resultats
+ * disponible par zone (il ne peut y en avoir qu'un par zone).
+ *
+ * @return une map avec par zone, son resultat associé (ProjectName/SelectionName)
+ * @throws CoserBusinessException
+ */
+ public Map<String, String> getIndicatorsResultsPerZone() throws CoserBusinessException {
+ return getResultsPerZone(config.getWebIndicatorsProjectsDirectory());
+ }
+
+ /**
+ * Recupere dans le repertoire des projets d'indicateur les resultats
+ * disponible par zone (il ne peut y en avoir qu'un par zone).
+ *
+ * @return une map avec par zone, son resultat associé (ProjectName/SelectionName)
+ * @throws CoserBusinessException
+ */
+ public Map<String, String> getMapsResultsPerZone() throws CoserBusinessException {
+ return getResultsPerZone(config.getWebMapsProjectsDirectory());
+ }
+
+ /**
+ * Recupere dans le repertoire des projets d'indicateur les resultats
+ * disponible par zone (il ne peut y en avoir qu'un par zone).
+ *
+ * @param scanDirectory le repertoire a scanner
+ * @return une map avec par zone, son resultat associé (ProjectName/SelectionName/RSUfiName)
+ * @throws CoserBusinessException
+ */
+ protected Map<String, String> getResultsPerZone(File scanDirectory) throws CoserBusinessException {
+
+ Map<String, String> resultIds = new HashMap<String, String>();
+ File[] projectFiles = scanDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+ String resultResultId = rsufiResult.getZone();
+ String name = projectFile.getName() + "/" + selectionFile.getName()
+ + "/" + resultFile.getName();
+ resultIds.put(resultResultId, name);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return resultIds;
+ }
+
+ /**
+ * Supprime des résultats par leur identifiant de zone de ratachement (car
+ * un seul resultat par zone).
+ *
+ * Utilisé par l'interface d'admin.
+ * @param deleteZoneId
+ * @throws CoserBusinessException
+ */
+ public void deleteIndicatorsResult(List<String> deleteZoneId) throws CoserBusinessException {
+ cleanCurrentProjectDirectory(config.getWebIndicatorsProjectsDirectory(), deleteZoneId);
+ }
+
+ /**
+ * Supprime des résultats par leur identifiant de zone de ratachement (car
+ * un seul resultat par zone).
+ *
+ * Utilisé par l'interface d'admin.
+ * @param deleteZoneId
+ * @throws CoserBusinessException
+ */
+ public void deleteMapsResult(List<String> deleteZoneId) throws CoserBusinessException {
+ cleanCurrentProjectDirectory(config.getWebMapsProjectsDirectory(), deleteZoneId);
+ }
+
+// /**
+// * Extrait de toutes les données les informations demandées restreintes
+// * sur certaines zone, certaines espèces et certains indicateurs.
+// *
+// * Ajout en plus dans le zip les cartes, les sources... suivant les
+// * types selectionnés.
+// *
+// * @param zones zones
+// * @param types types
+// * @param species species
+// * @param comIndicators indicators
+// * @param popIndicators indicators
+// * @return le zip
+// * @since 1.4
+// */
+// public File extractData(List<String> zones, List<DataType> types, List<String> species,
+// List<String> comIndicators, List<String> popIndicators, Locale locale) throws CoserBusinessException {
+//
+// File resultZip = null;
+// File tempDir = null;
+// try {
+// tempDir = FileUtil.createTempDirectory("coser-extract-", "-tmp");
+//
+// File subDir = new File(tempDir, "Indicateurs_Ifremer");
+// subDir.mkdirs();
+//
+// // les sources se retrouve dans le zip a cote du pdf
+// if (types.contains(DataType.SOURCE)) {
+// if (log.isDebugEnabled()) {
+// log.debug("Extracting sources");
+// }
+// File srcDir = new File(subDir, "sources");
+// extractSource(zones, srcDir);
+// }
+//
+// // les cartes doivent se retrouver dans le pdf
+// MultiKeyMap pdfMaps = null;
+// if (types.contains(DataType.MAP)) {
+// if (log.isDebugEnabled()) {
+// log.debug("Extracting maps");
+// }
+// pdfMaps = extractDataMap(zones, species);
+// }
+//
+// // les graphiques sont également dans le pdf
+// MultiKeyMap pdfCharts = null;
+// if (CollectionUtils.isNotEmpty(comIndicators) || CollectionUtils.isNotEmpty(popIndicators)) {
+// if (log.isDebugEnabled()) {
+// log.debug("Extracting charts");
+// }
+// pdfCharts = extractCharts(zones, species, comIndicators, popIndicators, locale);
+// }
+//
+// // generate pdf if necessary
+// if (MapUtils.isNotEmpty(pdfMaps) || MapUtils.isNotEmpty(pdfCharts)) {
+// generateExtractPDF(subDir, zones, pdfMaps, pdfCharts, locale);
+// }
+//
+// // fichier de décharge en pdf
+// String filename = null;
+// 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";
+// }
+// File dechargePDF = new File(subDir, filename);
+// generateDechargePDF(dechargePDF, null, null, locale);
+//
+// // make zip
+// resultZip = File.createTempFile("coser-extract-", ".zip");
+// resultZip.deleteOnExit();
+// ZipUtil.compress(resultZip, subDir);
+//
+// // clean directory
+// FileUtils.deleteDirectory(tempDir);
+// } catch (IOException ex) {
+// throw new CoserBusinessException("Can't create zip file", ex);
+// } finally {
+// // clean directory
+// FileUtils.deleteQuietly(tempDir);
+// }
+// return resultZip;
+// }
+
+ /**
+ * Extrait les cartes.
+ *
+ * @param zones zones (zoneid)
+ * @param species species
+ * @return map file (zone/speciesname/mapfile)
+ * @throws CoserBusinessException
+ * @throws IOException
+ * @since 1.4
+ */
+ protected MultiKeyMap extractDataMap(Collection<String> zones, Collection<String> species) throws CoserBusinessException, IOException {
+
+ MultiKeyMap mapForZoneAndSpecies = new MultiKeyMap();
+
+ // parcours des resultats disponibles
+ File projectsDirectory = config.getWebMapsProjectsDirectory();
+ File[] projectFiles = projectsDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+
+ // selection iteration
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+
+ // result iteration
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // extraction des especes pour le résultat demandé
+ if (rsufiResult.isMapsResult() && zones.contains(rsufiResult.getZone())) {
+
+ // load project (to get user display species name)
+ Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
+
+ // get survey name (other condition)
+ String surveyName = projectService.getProjectSurveyName(resultFile, rsufiResult);
+
+ File mapsDirectory = new File(resultFile, CoserConstants.STORAGE_MAPS_DIRECTORY);
+ for (String aSpecies : species) {
+ String mapName = surveyName + "_" + aSpecies.toUpperCase() + ".png";
+ File mapFile = new File(mapsDirectory, mapName);
+ if (mapFile.isFile()) {
+ String speciesName = project.getDisplaySpeciesText(aSpecies);
+ mapForZoneAndSpecies.put(rsufiResult.getZone(), speciesName, mapFile);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return mapForZoneAndSpecies;
+ }
+
+ /**
+ * Genere un fichier zip des sources d'un projet.
+ *
+ * Contient:
+ * <ul>
+ * <li>les 4 fichiers apres sélection
+ * </ul>
+ *
+ * @param zones zone (zoneid-surveyname)
+ * @return zip source file (auto delete when jvm shutdown)
+ * @throws CoserBusinessException
+ * @since 1.4
+ */
+ protected File extractSource(Collection<String> zones, File directory) throws CoserBusinessException {
+
+ File result = null;
+
+ // parcours des resultats disponibles
+ File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
+ File[] projectFiles = projectsDirectory.listFiles();
+ if (projectFiles != null) {
+ for (File projectFile : projectFiles) {
+ if (projectFile.isDirectory()) {
+ File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+ File[] selectionFiles = selectionsDirectory.listFiles();
+
+ // selection iteration
+ if (selectionFiles != null) {
+ for (File selectionFile : selectionFiles) {
+ if (selectionFile.isDirectory()) {
+ File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+ File[] resultFiles = resultsDirectory.listFiles();
+
+ // result iteration
+ if (resultFiles != null) {
+ for (File resultFile : resultFiles) {
+ if (resultFile.isDirectory()) {
+ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+
+ // extraction des especes pour le résultat demandé
+ if (rsufiResult.isDataAllowed() && zones.contains(rsufiResult.getZone())) {
+
+ // load project (with data to get original file names)
+ Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
+
+ // load selection data (to do data export rsufi)
+ Selection selection = project.getSelections().get(selectionFile.getName());
+
+ // be sure that data are available for this project
+ // or it will fail
+ projectService.loadSelectionData(projectsDirectory, project, selection);
+
+ // il ne faut pas les fichiers de selection, mais leurs
+ // export rsufi (sans les lignes, et les quotes)
+ File zoneDirectory = new File(directory, rsufiResult.getZone());
+ zoneDirectory.mkdirs();
+ projectService.extractRSUfiData(project, selection, zoneDirectory, true);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+// /**
+// * Retourne les indicateurs calculés avec leurs traductions scientifique
+// * pour la zone et l'especes souhaitées.
+// *
+// * @param zones zones
+// * @param species especes (if {@code null} look for com indicators
+// * @param comIndicators comIndicators
+// * @param popIndicators popIndicators
+// * @param locale locale
+// * @return la liste des indicateurs (zone, speciesname, [graphfile, graphdata])
+// * @throws CoserBusinessException
+// */
+// protected MultiKeyMap extractCharts(Collection<String> zones, Collection<String> species,
+// Collection<String> comIndicators, Collection<String> popIndicators, Locale locale) throws CoserBusinessException {
+//
+// MultiKeyMap chartFileAndDatas = new MultiKeyMap();
+//
+// // parcours des resultats disponibles
+// File projectsDirectory = config.getWebIndicatorsProjectsDirectory();
+// File[] projectFiles = projectsDirectory.listFiles();
+// if (projectFiles != null) {
+// for (File projectFile : projectFiles) {
+// if (projectFile.isDirectory()) {
+// File selectionsDirectory = new File(projectFile, CoserConstants.STORAGE_SELECTION_DIRECTORY);
+// File[] selectionFiles = selectionsDirectory.listFiles();
+//
+// // selection iteration
+// if (selectionFiles != null) {
+// for (File selectionFile : selectionFiles) {
+// if (selectionFile.isDirectory()) {
+// File resultsDirectory = new File(selectionFile, CoserConstants.STORAGE_RESULTS_DIRECTORY);
+// File[] resultFiles = resultsDirectory.listFiles();
+//
+// // result iteration
+// if (resultFiles != null) {
+// for (File resultFile : resultFiles) {
+// if (resultFile.isDirectory()) {
+// RSufiResult rsufiResult = projectService.getRSufiResult(resultFile);
+//
+// // extraction des especes pour le résultat demandé
+// if (zones.contains(rsufiResult.getZone())) {
+//
+// if (log.isDebugEnabled()) {
+// log.debug("Extracting charts for result " + resultFile);
+// }
+//
+// // load project (without data to get reftax data)
+// Project project = projectService.openProject(projectFile.getName(), projectsDirectory);
+// String zone = rsufiResult.getZone();
+//// String zoneDisplayName = getZoneFullName(zone);
+// String zoneDisplayName = getZonesMap().getZoneFullName(zone);
+//
+// // le fichier contenant le code type espece (utile
+// // pour les traductions des list d'indicateur)
+// File codeTypeEspecesFile = new File(projectFile, CoserConstants.Category.TYPE_ESPECES.getStorageFileName());
+//
+// if (CollectionUtils.isNotEmpty(comIndicators)) {
+// Map<String, Object[]> chartFileAndDataCom = publicationService.getRsufiResultComCharts(project,
+// resultFile, rsufiResult, codeTypeEspecesFile, comIndicators,
+// zoneDisplayName, getIndicatorsMap(), locale, 650, 430);
+// // put in multimap as zone,speciesname, data
+// for (Entry<String, Object[]> entry : chartFileAndDataCom.entrySet()) {
+// chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
+// }
+// }
+//
+// if (CollectionUtils.isNotEmpty(popIndicators)) {
+// Map<String, Object[]> chartFileAndDataPop = publicationService.getRsufiResultPopCharts(project,
+// resultFile, rsufiResult, species, popIndicators,
+// zoneDisplayName, getIndicatorsMap(), locale, 650, 430);
+// // put in multimap as zone,speciesname, data
+// for (Entry<String, Object[]> entry : chartFileAndDataPop.entrySet()) {
+// chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
+// }
+// }
+// }
+// }
+// }
+// }
+// }
+// }
+// }
+// }
+// }
+// }
+//
+// return chartFileAndDatas;
+// }
+
+ /**
+ * 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})
+ * @throws CoserBusinessException
+ */
+ protected void generateExtractPDF(File directory, List<String> zones,
+ MultiKeyMap pdfMaps, MultiKeyMap pdfCharts, Locale locale) throws CoserBusinessException {
+
+ 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>" + l(locale, "coser.business.extract.extracttitle")+ "</title>");
+ htmlContent.append("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />");
+ htmlContent.append("</head><body>");
+
+ if (pdfMaps != null) {
+ for (Entry<MultiKey, File> mapEntry : (Set<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 = getZoneFullName(zoneId);
+ String zoneName = getZonesMap().getZoneFullName(zoneId);
+ htmlContent.append("<div style='page-break-after: always'>");
+ htmlContent.append("<p>" + zoneName + " - " + speciesName + "</p>");
+ htmlContent.append("<img src='file://" + file.getAbsolutePath() + "' />");
+ htmlContent.append("</div>");
+ }
+ }
+ }
+
+ if (pdfCharts != null) {
+ for (Entry<MultiKey, Object[]> chartFileAndData : (Set<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://" + chartFile.getAbsolutePath() + "' />");
+ htmlContent.append("<br />");
+ htmlContent.append(l(locale, "coser.business.extract.extractdata") + " :");
+ 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 = getZoneFullName(zone);
+ String zoneDisplay = getZonesMap().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 CoserBusinessException("Can't generate log pdf", ex);
+ } catch (DocumentException ex) {
+ throw new CoserBusinessException("Can't generate log pdf", ex);
+ } finally {
+ IOUtils.closeQuietly(os);
+
+ // delete file collection
+ for (File file : toDelete) {
+ file.delete();
+ }
+ }
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService2.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/services/package-info.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorage.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,163 @@
+package fr.ifremer.coser.storage;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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 au.com.bytecode.opencsv.CSVReader;
+import fr.ifremer.coser.CoserConstants;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.services.CommonService;
+import org.apache.commons.io.IOUtils;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * Useful methods around {@link DataStorage}.
+ * <p/>
+ * TODO Should move here all others methods storage-centric from {@link CommonService}.
+ * <p/>
+ * Created on 3/7/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class DataStorages {
+
+ /**
+ * Load a csv file using the default csv char separator
+ * ({@link CoserConstants#CSV_SEPARATOR_CHAR}).
+ *
+ * @param file file to load
+ * @return data storage with file content
+ */
+ public static DataStorage load(File file) {
+ return load(file, CoserConstants.CSV_SEPARATOR_CHAR);
+ }
+
+ /**
+ * Load a csv file using the given csv char separator.
+ *
+ * @param file file to load
+ * @param separator separator to use to load file
+ * @return data storage with file content
+ */
+ public static DataStorage load(File file, char separator) {
+
+ DataStorage content = new MemoryDataStorage();
+
+ CSVReader csvReader = null;
+ try {
+
+ InputStream stream = new FileInputStream(file);
+ Reader reader = new BufferedReader(new InputStreamReader(stream, CoserConstants.CSV_FILE_ENCODING));
+ csvReader = new CSVReader(reader, separator);
+
+ // check header
+ String[] line = csvReader.readNext();
+ if (line == null || line.length <= 1) {
+ throw new CoserTechnicalException(t("Can't read file '%s'. Check CSV file separator",
+ file.getAbsolutePath()));
+ } else {
+ content.add(line);
+ }
+
+ while ((line = csvReader.readNext()) != null) {
+ if (line.length > 1) {
+ content.add(line);
+ }
+ }
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't read file", ex);
+ } finally {
+ IOUtils.closeQuietly(csvReader);
+ }
+
+ return content;
+ }
+
+ /**
+ * Save a datastorage to a file and return its.
+ * <p/>
+ * The file is temporary file (will be deleted at the end life of the jvm),
+ * his name is generated then using the {@link File#createTempFile(String, String)} using the given {@code prefix}
+ * and {@code suffix}.
+ *
+ * @param prefix prefix of generated file name
+ * @param suffix suffix of generated file name
+ * @param dataStorage the storage to save
+ * @return the file where the storage was saved
+ */
+ public static File save(String prefix, String suffix, DataStorage dataStorage) throws CoserTechnicalException {
+
+ File file;
+ try {
+ file = File.createTempFile(prefix, suffix);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not create temp file", e);
+ }
+ file.deleteOnExit();
+ Writer writer = null;
+ try {
+ writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), CoserConstants.CSV_FILE_ENCODING));
+
+ for (String[] contentDatas : dataStorage) {
+ // start at 1 to not output "line" column
+ for (int i = 1; i < contentDatas.length; i++) {
+
+ if (i != 1) {
+ writer.write(CoserConstants.CSV_SEPARATOR_CHAR);
+ }
+
+ String contentData = contentDatas[i];
+
+ if (contentData.indexOf(CoserConstants.CSV_SEPARATOR_CHAR) > -1) {
+ writer.write("\"" + contentData + "\"");
+ } else {
+ writer.write(contentData);
+ }
+ }
+ writer.write("\n");
+ }
+ writer.close();
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save data", ex);
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+ return file;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/MemoryDataStorage.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/package-info.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/util/Coordinate.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/util/DataType.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/util/InputStreamKnownSizeBody.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressMonitor.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressReader.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/util/package-info.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/AbstractFieldValidator.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserCheckDoubleValidator.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserDoubleValidator.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/CoserExpressionValidator.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/RegexFieldValidator.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/validators/package-info.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/resources/ftl/decharge_en.ftl
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/resources/ftl/decharge_fr.ftl
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/resources/ftl/map.ftl
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/resources/ftl/metainfo_en.ftl
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/resources/ftl/metainfo_fr.ftl
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties
===================================================================
--- trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2014-03-07 20:41:45 UTC (rev 1133)
@@ -158,6 +158,7 @@
coser.config.selection.occurrenceFilter.description=Default occurrence filter value
coser.config.smtp.host.description=SMTP host address
coser.config.validator.directory.description=Controls files directory location
+coser.config.web.echobase.projects.directory.description=Web echobase projects storage directory
coser.config.web.frontend.description=Coser server url
coser.config.web.indicators.file.description=Indicators match file
coser.config.web.indicators.projects.directory.description=Web indicators projects storage directory
Property changes on: trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2014-03-07 20:41:45 UTC (rev 1133)
@@ -158,6 +158,7 @@
coser.config.selection.occurrenceFilter.description=Filtre par défaut sur la moyenne des occurrences
coser.config.smtp.host.description=Adresse du serveur SMTP pour envoyer les mails
coser.config.validator.directory.description=Emplacement des fichiers de contrôles
+coser.config.web.echobase.projects.directory.description=Dossier de stockage des projets echobase pour le Web
coser.config.web.frontend.description=Adresse du serveur web coser
coser.config.web.indicators.file.description=Fichier de correspondance des indicateurs
coser.config.web.indicators.projects.directory.description=Dossier de stockage des projets indicateurs pour le Web
Property changes on: trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Catch-error-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-error-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-fatal-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Haul-warning-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Length-error-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/resources/validators/fr/ifremer/coser/data/Strata-error-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/main/resources/validators.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/CoserUtilsTest.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java (rev 0)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,56 @@
+package fr.ifremer.coser.bean;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.services.CoserTestAbstract;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Created on 3/6/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class IndicatorMapTest extends CoserTestAbstract {
+
+ @Override
+ public void initProjectDatabase() {
+ // no project to init
+ }
+
+
+ /**
+ * Test de lecture du fichier des indicateurs des resources de test.
+ */
+ @Test
+ public void getIndicators() {
+ IndicatorMap indicatorMap = new IndicatorMap(config.getWebIndicatorsFile());
+ MultiKeyMap<String, String> map = indicatorMap.getMap();
+ Assert.assertNotNull(map);
+ Assert.assertEquals(200, map.size());
+ }
+}
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/java/fr/ifremer/coser/bean/ZoneMapTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/bean/ZoneMapTest.java (rev 0)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/bean/ZoneMapTest.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,55 @@
+package fr.ifremer.coser.bean;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.services.CoserTestAbstract;
+import fr.ifremer.coser.storage.DataStorage;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Created on 3/6/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ZoneMapTest extends CoserTestAbstract {
+
+ @Override
+ public void initProjectDatabase() {
+ // no project to init
+ }
+
+ /**
+ * Test de lecture du fichier de zones de resources de test.
+ */
+ @Test
+ public void getZones() {
+ ZoneMap zoneMap = new ZoneMap(config.getWebZonesFile());
+ DataStorage zones = zoneMap.getStorage();
+ Assert.assertNotNull(zones);
+ Assert.assertEquals(25, zones.size());
+ }
+}
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/bean/ZoneMapTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,59 @@
+package fr.ifremer.coser.result.repository.echobase;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.services.CoserTestAbstract;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Set;
+
+/**
+ * Created on 3/5/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class EchoBaseResultRepositoryProviderTest extends CoserTestAbstract {
+
+ @Override
+ public void initProjectDatabase() throws IOException {
+ copyDirectoryContent("src.test.resources.web.echobaseprojects", config.getWebEchobaseProjectsDirectory());
+ }
+
+ @Test
+ public void loadRepositories() throws Exception {
+
+ File basedir = config.getWebEchobaseProjectsDirectory();
+
+ EchoBaseResultRepositoryProvider provider = new EchoBaseResultRepositoryProvider(config, basedir);
+
+ Set<EchoBaseResultRepository> resultRepositories = provider.loadRepositories();
+ Assert.assertNotNull(resultRepositories);
+ Assert.assertEquals(2, resultRepositories.size());
+ }
+}
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,154 @@
+package fr.ifremer.coser.result.repository.echobase;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.request.CommunityIndicatorRequest;
+import fr.ifremer.coser.result.request.MapRequest;
+import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider;
+import fr.ifremer.coser.services.CoserTestAbstract;
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/6/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class EchoBaseResultRepositoryTest extends CoserTestAbstract {
+
+ protected EchoBaseResultRepository repository1;
+
+ protected EchoBaseResultRepository repository2;
+
+ @Override
+ public void initProjectDatabase() throws IOException {
+ File projectsDirectory = config.getWebEchobaseProjectsDirectory();
+ copyDirectoryContent("src.test.resources.web.echobaseprojects", projectsDirectory);
+
+ EchoBaseResultRepositoryProvider repositoryProvider = new EchoBaseResultRepositoryProvider(config, projectsDirectory);
+
+ Set<EchoBaseResultRepository> repositories = repositoryProvider.loadRepositories();
+
+ for (EchoBaseResultRepository repository : repositories) {
+ String projectName = repository.project.getName();
+ if ("project1".equals(projectName)) {
+ repository1 = repository;
+ } else if ("project2".equals(projectName)) {
+ repository2 = repository;
+ }
+ }
+ Assume.assumeTrue("Could not find repository named *project1*", repository1 != null);
+ Assume.assumeTrue("Could not find repository named *project2*", repository2 != null);
+ }
+
+ @Test
+ public void getAvailableZones() throws Exception {
+
+ // Map request
+
+ MapRequest mapRequest = new MapRequest();
+ mapRequest.setLocale(Locale.FRANCE);
+ mapRequest.setFacade("atlantique");
+
+ Map<String, String> availableZones;
+
+ availableZones = repository1.getAvailableZones(mapRequest);
+ Assert.assertNotNull(availableZones);
+ Assert.assertEquals(1, availableZones.size());
+ Assert.assertTrue(availableZones.containsKey("gdgciem8"));
+ Assert.assertTrue(availableZones.containsValue("2000 > - Pelgas - La limite nord de la zone VIII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM"));
+
+ // pas de zones pour la facade
+ mapRequest.setFacade("mediteranee");
+ availableZones = repository1.getAvailableZones(mapRequest);
+ Assert.assertNotNull(availableZones);
+ Assert.assertTrue(availableZones.isEmpty());
+
+ // facade inconnue
+ mapRequest.setFacade("mediteranee2");
+ availableZones = repository1.getAvailableZones(mapRequest);
+ Assert.assertNotNull(availableZones);
+ Assert.assertTrue(availableZones.isEmpty());
+
+ // Population request
+
+ PopulationIndicatorRequest popRequest = new PopulationIndicatorRequest();
+ popRequest.setLocale(Locale.FRANCE);
+ popRequest.setFacade("atlantique");
+
+ availableZones = repository1.getAvailableZones(popRequest);
+ Assert.assertNotNull(availableZones);
+ Assert.assertEquals(1, availableZones.size());
+ Assert.assertTrue(availableZones.containsKey("gdgciem8"));
+ Assert.assertTrue(availableZones.containsValue("2000 > - Pelgas - La limite nord de la zone VIII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM"));
+
+ // pas de zones pour la facade
+ popRequest.setFacade("mediteranee");
+ availableZones = repository1.getAvailableZones(popRequest);
+ Assert.assertNotNull(availableZones);
+ Assert.assertTrue(availableZones.isEmpty());
+
+ // facade inconnue
+ popRequest.setFacade("mediteranee2");
+ availableZones = repository1.getAvailableZones(popRequest);
+ Assert.assertNotNull(availableZones);
+ Assert.assertTrue(availableZones.isEmpty());
+
+ // Community request
+
+ CommunityIndicatorRequest comRequest = new CommunityIndicatorRequest();
+ comRequest.setLocale(Locale.FRANCE);
+ comRequest.setFacade("atlantique");
+
+ availableZones = repository1.getAvailableZones(comRequest);
+ Assert.assertNotNull(availableZones);
+ Assert.assertEquals(1, availableZones.size());
+ Assert.assertTrue(availableZones.containsKey("gdgciem8"));
+ Assert.assertTrue(availableZones.containsValue("2000 > - Pelgas - La limite nord de la zone VIII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM"));
+
+ // pas de zones pour la facade
+ comRequest.setFacade("mediteranee");
+ availableZones = repository1.getAvailableZones(comRequest);
+ Assert.assertNotNull(availableZones);
+ Assert.assertTrue(availableZones.isEmpty());
+
+ // facade inconnue
+ comRequest.setFacade("mediteranee2");
+ availableZones = repository1.getAvailableZones(comRequest);
+ Assert.assertNotNull(availableZones);
+ Assert.assertTrue(availableZones.isEmpty());
+ }
+
+}
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,60 @@
+package fr.ifremer.coser.result.repository.legacy;
+
+/*
+ * #%L
+ * Coser :: Business
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.services.CoserTestAbstract;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Set;
+
+/**
+ * Created on 3/5/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class LegacyResultRepositoryProviderTest extends CoserTestAbstract {
+
+ @Override
+ public void initProjectDatabase() throws IOException {
+
+ copyDirectoryContent("src.test.resources.web.legacyprojects", config.getWebIndicatorsProjectsDirectory());
+ }
+
+ @Test
+ public void loadRepositories() throws Exception {
+
+ File basedir = config.getWebIndicatorsProjectsDirectory();
+
+ LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(config, basedir);
+
+ Set<LegacyResultRepository> resultRepositories = provider.loadRepositories();
+ Assert.assertNotNull(resultRepositories);
+ Assert.assertEquals(2, resultRepositories.size());
+ }
+}
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/services/CommandServiceTest.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/services/CommonServiceTest.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/services/ControlServiceTest.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -46,6 +46,7 @@
import fr.ifremer.coser.CoserClassLoader;
import fr.ifremer.coser.CoserConstants.Category;
import fr.ifremer.coser.bean.Project;
+import org.nuiton.util.FileUtil;
/**
* Common coser test code.
@@ -77,9 +78,7 @@
public static void initConfig() throws IOException {
String tmpDir = System.getProperty("java.io.tmpdir");
testDirectory = new File(tmpDir, "coser");
- if (!testDirectory.isDirectory()) {
- testDirectory.mkdirs();
- }
+ FileUtil.createDirectoryIfNecessary(testDirectory);
config = new CoserBusinessConfig();
config.setDatabaseDirectory(testDirectory.getAbsolutePath());
@@ -103,19 +102,7 @@
@Before
public void initProjectDatabase() throws IOException {
FileUtils.cleanDirectory(config.getDatabaseDirectory());
- FileUtils.copyDirectory(new File("src" + File.separator +
- "test" + File.separator + "resources", "projects"),
- config.getProjectsDirectory(), new FileFilter() {
- @Override
- public boolean accept(File pathname) {
- boolean result = true;
- if (pathname.getAbsolutePath().indexOf(
- File.separator + ".svn") != -1) {
- result = false;
- }
- return result;
- }
- });
+ copyDirectoryContent("src.test.resources.projects", config.getProjectsDirectory());
}
/**
@@ -198,4 +185,20 @@
}
return localFile;
}
+
+ protected void copyDirectoryContent(String path, File target) throws IOException {
+ File basedir = new File(new File("").getAbsolutePath());
+ File source = FileUtil.getFileFromFQN(basedir, path);
+ FileFilter fileterWithNoSvn = new FileFilter() {
+ @Override
+ public boolean accept(File pathname) {
+ boolean result = true;
+ if (pathname.getAbsolutePath().contains(File.separator + ".svn")) {
+ result = false;
+ }
+ return result;
+ }
+ };
+ FileUtils.copyDirectory(source, target, fileterWithNoSvn);
+ }
}
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/services/PublicationServiceTest.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -94,7 +94,7 @@
@Test
public void testGetIndicators() throws CoserBusinessException {
MultiKeyMap indicators = webService.getIndicatorsMap();
- Assert.assertEquals(124, indicators.size());
+ Assert.assertEquals(200, indicators.size());
}
/**
@@ -105,7 +105,7 @@
@Test
public void testGetZones() throws CoserBusinessException {
DataStorage zones = webService.getZonesMap();
- Assert.assertEquals(24, zones.size());
+ Assert.assertEquals(25, zones.size());
}
/**
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/services/WebServiceTest.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/java/fr/ifremer/coser/storage/MemoryDataStorageTest.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/test/resources/csv/badformat/capturesbadseparator.csv
===================================================================
--- trunk/coser-business/src/test/resources/csv/badformat/capturesbadseparator.csv 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/test/resources/csv/badformat/capturesbadseparator.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -1,6 +1,6 @@
-Campagne,Annee,Trait,Espece,Nombre,Poids
-IBTS,1983,SWE1ARG6,CALMMAC,4.00,0.100000001490116
-IBTS,1983,SWE1ARG6,CLUPHAR,1771.00,118.400001525879
-IBTS,1983,SWE1ARG6,CYCPLUM,4.00,24
-IBTS,1983,SWE1ARG6,ENCHCIM,4.00,1.20000004768372
-IBTS,1983,SWE1ARG6,GADUMOR,102.00,32
+Campagne,Annee,Trait,Espece,Nombre,Poids
+IBTS,1983,SWE1ARG6,CALMMAC,4.00,0.100000001490116
+IBTS,1983,SWE1ARG6,CLUPHAR,1771.00,118.400001525879
+IBTS,1983,SWE1ARG6,CYCPLUM,4.00,24
+IBTS,1983,SWE1ARG6,ENCHCIM,4.00,1.20000004768372
+IBTS,1983,SWE1ARG6,GADUMOR,102.00,32
Property changes on: trunk/coser-business/src/test/resources/csv/badformat/capturesbadseparator.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/test/resources/csv/badformat/stratesheadername.csv
===================================================================
--- trunk/coser-business/src/test/resources/csv/badformat/stratesheadername.csv 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/test/resources/csv/badformat/stratesheadername.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -1,8 +1,8 @@
-Campagne;Stratus;Surface
-IBTS;31F1;2907.326
-IBTS;31F2;3126.436
-IBTS;32F1;3343.147
-IBTS;32F2;3827.383
-IBTS;32F3;3337.560
-IBTS;33F1;1315.192
-IBTS;33F2;3784.871
+Campagne;Stratus;Surface
+IBTS;31F1;2907.326
+IBTS;31F2;3126.436
+IBTS;32F1;3343.147
+IBTS;32F2;3827.383
+IBTS;32F3;3337.560
+IBTS;33F1;1315.192
+IBTS;33F2;3784.871
Property changes on: trunk/coser-business/src/test/resources/csv/badformat/stratesheadername.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/test/resources/csv/badformat/traitsheaderorder.csv
===================================================================
--- trunk/coser-business/src/test/resources/csv/badformat/traitsheaderorder.csv 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/test/resources/csv/badformat/traitsheaderorder.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -1,4 +1,4 @@
-Campagne;Annee;Trait;Mois;SurfaceBalayee;Strate;Lat;Long;ProfMoy
-IBTS;1983;DEN1DAN21;2;43F7;0.0500040;57.11670;7.250000;45
-IBTS;1983;DEN1DAN210;2;45F3;0.0633420;58.10000;3.216700;73
-IBTS;1983;DEN1DAN214;2;47F0;0.0566640;59.21670;0.8000000;130
+Campagne;Annee;Trait;Mois;SurfaceBalayee;Strate;Lat;Long;ProfMoy
+IBTS;1983;DEN1DAN21;2;43F7;0.0500040;57.11670;7.250000;45
+IBTS;1983;DEN1DAN210;2;45F3;0.0633420;58.10000;3.216700;73
+IBTS;1983;DEN1DAN214;2;47F0;0.0566640;59.21670;0.8000000;130
Property changes on: trunk/coser-business/src/test/resources/csv/badformat/traitsheaderorder.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/csv/correct/testcatch.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/csv/correct/testhaul.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/csv/correct/testlength.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/csv/correct/testreftax.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/csv/correct/teststrata.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/csv/correct/testtypeespeces.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/test/resources/log4j.properties
===================================================================
--- trunk/coser-business/src/test/resources/log4j.properties 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/test/resources/log4j.properties 2014-03-07 20:41:45 UTC (rev 1133)
@@ -32,4 +32,4 @@
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c:%L - %m%n
# Categories
-#log4j.category.fr.ifremer.coser=DEBUG
+log4j.category.fr.ifremer.coser=INFO
Property changes on: trunk/coser-business/src/test/resources/log4j.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/codeTypeEspeces.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/control/control.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/control/testcatch_co.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/control/testhaul_co.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/control/testlength_co.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/control/testlength_del.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/control/teststrata_co.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/original/testcatch.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/original/testhaul.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/original/testlength.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/original/teststrata.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/project.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/reftaxSpecies.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/selections/testselection2/testcatch_se.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/selections/testselection2/testhaul_se.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/selections/testselection2/testlength_se.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/selections/testselection2/testselection2.selection
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/project2/selections/testselection2/teststrata_se.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/codeTypeEspeces.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/control.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/testcatch_co.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/testhaul_co.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/testlength_co.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/control/teststrata_co.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/original/testcatch.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/original/testhaul.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/original/testlength.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/original/teststrata.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/project.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/reftaxSpecies.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/EstComInd_test.txt
===================================================================
--- trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/EstComInd_test.txt 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/EstComInd_test.txt 2014-03-07 20:41:45 UTC (rev 1133)
@@ -1,8 +1,8 @@
-Campagne Indicateur Liste Strate Annee Estimation EcartType CV
-COSER_TEST Delta m1 Total 2005 0.00158515572607873 0.000984730247180753 0.621219878261882
-COSER_TEST Delta m1 Total 2009 0.0476283033138584 0.0151443086213752 0.317968677607053
-COSER_TEST Delta c1 Total 2005 0.00646357387617557 0.00215034288588182 0.332686363160152
-COSER_TEST Delta c1 Total 2009 0.0695548460030265 0.0185708842538978 0.266996267277908
-COSER_TEST Delta p1 Total 1983 0.737241187520257 0.00659773901507874 0.00894922737194123
-COSER_TEST Delta p1 Total 1986 0.730696719394954 0.0192883714063304 0.0263972327976263
-
+Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+COSER_TEST Delta m1 Total 2005 0.00158515572607873 0.000984730247180753 0.621219878261882
+COSER_TEST Delta m1 Total 2009 0.0476283033138584 0.0151443086213752 0.317968677607053
+COSER_TEST Delta c1 Total 2005 0.00646357387617557 0.00215034288588182 0.332686363160152
+COSER_TEST Delta c1 Total 2009 0.0695548460030265 0.0185708842538978 0.266996267277908
+COSER_TEST Delta p1 Total 1983 0.737241187520257 0.00659773901507874 0.00894922737194123
+COSER_TEST Delta p1 Total 1986 0.730696719394954 0.0192883714063304 0.0263972327976263
+
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/EstComInd_test.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/EstPopInd_test.txt
===================================================================
--- trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/EstPopInd_test.txt 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/EstPopInd_test.txt 2014-03-07 20:41:45 UTC (rev 1133)
@@ -1,7 +1,7 @@
-Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
-COSER_TEST lnN L2 COSER_SPECIES1 Total 2001 16.5576325818007 0.1654168567871 0.00999036885073279
-COSER_TEST lnN L3 COSER_SPECIES2 Total 1999 18.4833935818621 0.0287121599216956 0.00155340304768877
-COSER_TEST Wbar L2 COSER_SPECIES1 Total 1983 0.0220057182719674 0.000818725789680143 0.0372051382082402
-COSER_TEST Abundance L2 COSER_SPECIES2 Total 1983 6334938.17950327 235692.250509076 0.0372051382082401
-COSER_TEST Biomass L2 COSER_SPECIES1 Total 2007 4634200.30159478 2761107.91858038 0.595811086894581
-
+Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
+COSER_TEST lnN L2 COSER_SPECIES1 Total 2001 16.5576325818007 0.1654168567871 0.00999036885073279
+COSER_TEST lnN L3 COSER_SPECIES2 Total 1999 18.4833935818621 0.0287121599216956 0.00155340304768877
+COSER_TEST Wbar L2 COSER_SPECIES1 Total 1983 0.0220057182719674 0.000818725789680143 0.0372051382082402
+COSER_TEST Abundance L2 COSER_SPECIES2 Total 1983 6334938.17950327 235692.250509076 0.0372051382082401
+COSER_TEST Biomass L2 COSER_SPECIES1 Total 2007 4634200.30159478 2761107.91858038 0.595811086894581
+
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/EstPopInd_test.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/testcatch_se.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/testhaul_se.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/testlength_se.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/testselection1.selection
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/teststrata_se.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/web/echobaseprojects/project1/communityIndicators.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/web/echobaseprojects/project1/populationIndicators.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties (rev 0)
+++ trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,29 @@
+###
+# #%L
+# Coser :: Business
+# $Id$
+# $HeadURL$
+# %%
+# Copyright (C) 2010 - 2014 Ifremer, Codelutin
+# %%
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Lesser Public License for more details.
+#
+# You should have received a copy of the GNU General Lesser Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/lgpl-3.0.html>.
+# #L%
+###
+project.author=tc
+project.facadeName=atlantique
+project.zoneName=gdgciem8
+project.surveyName=PELGAS
+project.comment=PELGAS-ATL
+project.creationDate=1394126084855
Property changes on: trunk/coser-business/src/test/resources/web/echobaseprojects/project1/project.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/web/echobaseprojects/project1/species.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/web/echobaseprojects/project2/communityIndicators.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/web/echobaseprojects/project2/populationIndicators.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties (rev 0)
+++ trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,29 @@
+###
+# #%L
+# Coser :: Business
+# $Id$
+# $HeadURL$
+# %%
+# Copyright (C) 2010 - 2014 Ifremer, Codelutin
+# %%
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Lesser Public License for more details.
+#
+# You should have received a copy of the GNU General Lesser Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/lgpl-3.0.html>.
+# #L%
+###
+project.author=tc
+project.facadeName=atlantique
+project.zoneName=gdgciem8-2
+project.surveyName=PELGAS
+project.comment=PELGASSE-ATL
+project.creationDate=1394126084855
Property changes on: trunk/coser-business/src/test/resources/web/echobaseprojects/project2/project.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/web/echobaseprojects/project2/species.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/codeTypeEspeces.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/codeTypeEspeces.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/codeTypeEspeces.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,4 @@
+"Types";"Commentaire";"NumSys min";"NumSys max";"Code"
+"Type1";;"00001";"00002";"a"
+"Type2";;"00003";"00005";"m"
+"Type3";;"00006";"00010";"p"
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/codeTypeEspeces.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/control.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/control.properties (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/control.properties 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,26 @@
+###
+# #%L
+# Coser :: Business
+#
+# $Id$
+# $HeadURL$
+# %%
+# Copyright (C) 2010 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%
+###
+#Fri Nov 26 11:37:55 CET 2010
+control.validated=true
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/control.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testcatch_co.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testcatch_co.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testcatch_co.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,25 @@
+"coser.business.line";"Survey";"Year";"Haul";"Species";"Number";"Weight"
+"1";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES1";"234.33";"4.55"
+"2";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES2";"4.33";"1.12"
+"3";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES3";"859.04";"22.16"
+"4";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES4";"251.86";"59.34"
+"5";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES1";"407.54";"81.37"
+"6";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES2";"472.91";"59.38"
+"7";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES3";"38.36";"41.60"
+"8";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES4";"146.76";"76.15"
+"9";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES1";"737.53";"32.27"
+"10";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES2";"715.54";"91.42"
+"11";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES3";"256.31";"55.32"
+"12";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES4";"308.81";"85.96"
+"13";"COSER_TEST";"2011";"TRAIT10";"COSER_SPECIES1";"326.53";"0.55"
+"14";"COSER_TEST";"2011";"TRAIT10";"COSER_SPECIES2";"965.46";"75.30"
+"15";"COSER_TEST";"2011";"TRAIT10";"COSER_SPECIES3";"187.44";"45.04"
+"16";"COSER_TEST";"2011";"TRAIT10";"COSER_SPECIES4";"714.22";"25.60"
+"17";"COSER_TEST";"2011";"TRAIT20";"COSER_SPECIES1";"475.71";"51.42"
+"18";"COSER_TEST";"2011";"TRAIT20";"COSER_SPECIES2";"661.88";"82.41"
+"19";"COSER_TEST";"2011";"TRAIT20";"COSER_SPECIES3";"378.28";"27.32"
+"20";"COSER_TEST";"2011";"TRAIT20";"COSER_SPECIES4";"139.31";"11.74"
+"21";"COSER_TEST";"2011";"TRAIT30";"COSER_SPECIES1";"810.68";"67.38"
+"22";"COSER_TEST";"2011";"TRAIT30";"COSER_SPECIES2";"783.03";"40.36"
+"23";"COSER_TEST";"2011";"TRAIT30";"COSER_SPECIES3";"244.24";"87.85"
+"24";"COSER_TEST";"2011";"TRAIT30";"COSER_SPECIES4";"52.71";"22.93"
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testcatch_co.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testhaul_co.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testhaul_co.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testhaul_co.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,7 @@
+"coser.business.line";"Survey";"Year";"Haul";"Month";"Stratum";"SweptSurface";"Lat";"Long";"Depth"
+"1";"COSER_TEST";"2010";"TRAIT1";"10";"STR1";"0.06";"43.75";"-1.50";"45.50"
+"2";"COSER_TEST";"2010";"TRAIT2";"10";"STR2";"0.06";"43.81";"-1.45";"31.00"
+"3";"COSER_TEST";"2010";"TRAIT3";"10";"STR3";"0.06";"43.89";"-1.73";"115.00"
+"4";"COSER_TEST";"2011";"TRAIT10";"10";"STR4";"0.06";"43.96";"-2.03";"143.00"
+"5";"COSER_TEST";"2011";"TRAIT20";"10";"STR5";"0.06";"43.91";"-2.09";"185.00"
+"6";"COSER_TEST";"2011";"TRAIT30";"10";"STR6";"0.06";"43.88";"-2.12";"295.00"
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testhaul_co.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testlength_co.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testlength_co.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testlength_co.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,30 @@
+"coser.business.line";"Survey";"Year";"Haul";"Species";"Sex";"Maturity";"Length";"Number";"Weight";"Age"
+"1";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES1";"i";"NA";"29.19";"1.00";"0.45";"NA"
+"2";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES2";"i";"NA";"19.60";"2.00";"0.34";"NA"
+"3";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES2";"i";"NA";"19.60";"3.00";"0.78";"NA"
+"4";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES3";"i";"NA";"32.93";"5.00";"0.87";"NA"
+"5";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES3";"f";"NA";"26.27";"3.00";"0.03";"NA"
+"6";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES3";"m";"NA";"35.25";"4.00";"";"NA"
+"7";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES4";"i";"NA";"37.82";"4.00";"0.61";"NA"
+"8";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES1";"i";"NA";"20.07";"2.00";"0.12";"NA"
+"9";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES1";"i";"NA";"27.18";"2.00";"0.92";"NA"
+"10";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES2";"i";"NA";"21.14";"1.00";"0.34";"NA"
+"11";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES3";"i";"NA";"1.82";"4.00";"0.1";"NA"
+"12";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES4";"i";"NA";"36.55";"4.00";"0.39";"NA"
+"13";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES1";"i";"NA";"20.39";"3.00";"0.28";"NA"
+"14";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES2";"i";"NA";"19.88";"3.00";"0.31";"NA"
+"15";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES3";"i";"NA";"18.16";"1.00";"0.34";"NA"
+"16";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES4";"i";"NA";"10.22";"2.00";"0.31";"NA"
+"17";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES4";"f";"NA";"33.03";"5.00";"0.26";"NA"
+"18";"COSER_TEST";"2011";"TRAIT1";"COSER_SPECIES1";"i";"NA";"1.00";"4.00";"0.81";"NA"
+"19";"COSER_TEST";"2011";"TRAIT1";"COSER_SPECIES2";"i";"NA";"27.61";"3.00";"NA"
+"20";"COSER_TEST";"2011";"TRAIT1";"COSER_SPECIES3";"i";"NA";"20.44";"3.00";"0.43";"NA"
+"21";"COSER_TEST";"2011";"TRAIT1";"COSER_SPECIES4";"i";"NA";"6.86";"1.00";"0.23";"NA"
+"22";"COSER_TEST";"2011";"TRAIT2";"COSER_SPECIES1";"i";"NA";"15.04";"4.00";"0.95";"NA"
+"23";"COSER_TEST";"2011";"TRAIT2";"COSER_SPECIES2";"i";"NA";"35.03";"1.00";"0.26";"NA"
+"24";"COSER_TEST";"2011";"TRAIT2";"COSER_SPECIES3";"i";"NA";"19.41";"1.00";"0.51";"NA"
+"25";"COSER_TEST";"2011";"TRAIT2";"COSER_SPECIES4";"i";"NA";"24.58";"2.00";"NA"
+"26";"COSER_TEST";"2011";"TRAIT3";"COSER_SPECIES1";"i";"NA";"2.46";"3.00";"0.32";"NA"
+"27";"COSER_TEST";"2011";"TRAIT3";"COSER_SPECIES2";"i";"NA";"18.93";"5.00";"0.22";"NA"
+"28";"COSER_TEST";"2011";"TRAIT3";"COSER_SPECIES3";"i";"NA";"23.77";"5.00";"0.12";"NA"
+"29";"COSER_TEST";"2011";"TRAIT3";"COSER_SPECIES4";"i";"NA";"0.94";"3.00";"0.77";"NA"
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/testlength_co.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/teststrata_co.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/teststrata_co.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/teststrata_co.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,11 @@
+"coser.business.line";"Survey";"Stratum";"Surface"
+"1";"COSER_TEST";"STR1";"15909.15"
+"2";"COSER_TEST";"STR2";"11184.27"
+"3";"COSER_TEST";"STR3";"5200.96"
+"4";"COSER_TEST";"STR4";"15573.19"
+"5";"COSER_TEST";"STR5";"8625.07"
+"6";"COSER_TEST";"STR6";"10.20"
+"7";"COSER_TEST";"STR7";"19683.28"
+"8";"COSER_TEST";"STR8";"6053.53"
+"9";"COSER_TEST";"STR9";"993.49"
+"10";"COSER_TEST";"STR10";"5975.14"
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/control/teststrata_co.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testcatch.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testcatch.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testcatch.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,25 @@
+"Survey";"Year";"Haul";"Species";"Number";"Weight"
+COSER_TEST;2010;TRAIT1;COSER_SPECIES1;234.33;4.55
+COSER_TEST;2010;TRAIT1;COSER_SPECIES2;4.33;1.12
+COSER_TEST;2010;TRAIT1;COSER_SPECIES3;859.04;22.16
+COSER_TEST;2010;TRAIT1;COSER_SPECIES4;251.86;59.34
+COSER_TEST;2010;TRAIT2;COSER_SPECIES1;407.54;81.37
+COSER_TEST;2010;TRAIT2;COSER_SPECIES2;472.91;59.38
+COSER_TEST;2010;TRAIT2;COSER_SPECIES3;38.36;41.60
+COSER_TEST;2010;TRAIT2;COSER_SPECIES4;146.76;76.15
+COSER_TEST;2010;TRAIT3;COSER_SPECIES1;737.53;32.27
+COSER_TEST;2010;TRAIT3;COSER_SPECIES2;715.54;91.42
+COSER_TEST;2010;TRAIT3;COSER_SPECIES3;256.31;55.32
+COSER_TEST;2010;TRAIT3;COSER_SPECIES4;308.81;85.96
+COSER_TEST;2011;TRAIT10;COSER_SPECIES1;326.53;0.55
+COSER_TEST;2011;TRAIT10;COSER_SPECIES2;965.46;75.30
+COSER_TEST;2011;TRAIT10;COSER_SPECIES3;187.44;45.04
+COSER_TEST;2011;TRAIT10;COSER_SPECIES4;714.22;25.60
+COSER_TEST;2011;TRAIT20;COSER_SPECIES1;475.71;51.42
+COSER_TEST;2011;TRAIT20;COSER_SPECIES2;661.88;82.41
+COSER_TEST;2011;TRAIT20;COSER_SPECIES3;378.28;27.32
+COSER_TEST;2011;TRAIT20;COSER_SPECIES4;139.31;11.74
+COSER_TEST;2011;TRAIT30;COSER_SPECIES1;810.68;67.38
+COSER_TEST;2011;TRAIT30;COSER_SPECIES2;783.03;40.36
+COSER_TEST;2011;TRAIT30;COSER_SPECIES3;244.24;87.85
+COSER_TEST;2011;TRAIT30;COSER_SPECIES4;52.71;22.93
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testcatch.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testhaul.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testhaul.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testhaul.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,7 @@
+Survey;Year;Haul;Month;Stratum;SweptSurface;Lat;Long;Depth
+COSER_TEST;2010;TRAIT1;10;STR1;0.06;43.75;-1.50;45.50
+COSER_TEST;2010;TRAIT2;10;STR2;0.06;43.81;-1.45;31.00
+COSER_TEST;2010;TRAIT3;10;STR3;0.06;43.89;-1.73;115.00
+COSER_TEST;2011;TRAIT10;10;STR4;0.06;43.96;-2.03;143.00
+COSER_TEST;2011;TRAIT20;10;STR5;0.06;43.91;-2.09;185.00
+COSER_TEST;2011;TRAIT30;10;STR6;0.06;43.88;-2.12;295.00
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testhaul.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testlength.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testlength.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testlength.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,30 @@
+Survey;Year;Haul;Species;Sex;Maturity;Length;Number;Weight;Age
+COSER_TEST;2010;TRAIT1;COSER_SPECIES1;i;NA;29.19;1.00;0.45;NA
+COSER_TEST;2010;TRAIT1;COSER_SPECIES2;i;NA;19.60;2.00;0.34;NA
+COSER_TEST;2010;TRAIT1;COSER_SPECIES2;i;NA;19.60;3.00;0.78;NA
+COSER_TEST;2010;TRAIT1;COSER_SPECIES3;i;NA;32.93;5.00;0.87;NA
+COSER_TEST;2010;TRAIT1;COSER_SPECIES3;f;NA;26.27;3.00;0.03;NA
+COSER_TEST;2010;TRAIT1;COSER_SPECIES3;m;NA;35.25;4.00;;NA
+COSER_TEST;2010;TRAIT1;COSER_SPECIES4;i;NA;37.82;4.00;0.61;NA
+COSER_TEST;2010;TRAIT2;COSER_SPECIES1;i;NA;20.07;2.00;0.12;NA
+COSER_TEST;2010;TRAIT2;COSER_SPECIES1;i;NA;27.18;2.00;0.92;NA
+COSER_TEST;2010;TRAIT2;COSER_SPECIES2;i;NA;21.14;1.00;0.34;NA
+COSER_TEST;2010;TRAIT2;COSER_SPECIES3;i;NA;1.82;4.00;0.1;NA
+COSER_TEST;2010;TRAIT2;COSER_SPECIES4;i;NA;36.55;4.00;0.39;NA
+COSER_TEST;2010;TRAIT3;COSER_SPECIES1;i;NA;20.39;3.00;0.28;NA
+COSER_TEST;2010;TRAIT3;COSER_SPECIES2;i;NA;19.88;3.00;0.31;NA
+COSER_TEST;2010;TRAIT3;COSER_SPECIES3;i;NA;18.16;1.00;0.34;NA
+COSER_TEST;2010;TRAIT3;COSER_SPECIES4;i;NA;10.22;2.00;0.31;NA
+COSER_TEST;2010;TRAIT3;COSER_SPECIES4;f;NA;33.03;5.00;0.26;NA
+COSER_TEST;2011;TRAIT1;COSER_SPECIES1;i;NA;1.00;4.00;0.81;NA
+COSER_TEST;2011;TRAIT1;COSER_SPECIES2;i;NA;27.61;3.00;NA
+COSER_TEST;2011;TRAIT1;COSER_SPECIES3;i;NA;20.44;3.00;0.43;NA
+COSER_TEST;2011;TRAIT1;COSER_SPECIES4;i;NA;6.86;1.00;0.23;NA
+COSER_TEST;2011;TRAIT2;COSER_SPECIES1;i;NA;15.04;4.00;0.95;NA
+COSER_TEST;2011;TRAIT2;COSER_SPECIES2;i;NA;35.03;1.00;0.26;NA
+COSER_TEST;2011;TRAIT2;COSER_SPECIES3;i;NA;19.41;1.00;0.51;NA
+COSER_TEST;2011;TRAIT2;COSER_SPECIES4;i;NA;24.58;2.00;NA
+COSER_TEST;2011;TRAIT3;COSER_SPECIES1;i;NA;2.46;3.00;0.32;NA
+COSER_TEST;2011;TRAIT3;COSER_SPECIES2;i;NA;18.93;5.00;0.22;NA
+COSER_TEST;2011;TRAIT3;COSER_SPECIES3;i;NA;23.77;5.00;0.12;NA
+COSER_TEST;2011;TRAIT3;COSER_SPECIES4;i;NA;0.94;3.00;0.77;NA
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/testlength.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/teststrata.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/teststrata.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/teststrata.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,11 @@
+Survey;Stratum;Surface
+COSER_TEST;STR1;15909.15
+COSER_TEST;STR2;11184.27
+COSER_TEST;STR3;5200.96
+COSER_TEST;STR4;15573.19
+COSER_TEST;STR5;8625.07
+COSER_TEST;STR6;10.20
+COSER_TEST;STR7;19683.28
+COSER_TEST;STR8;6053.53
+COSER_TEST;STR9;993.49
+COSER_TEST;STR10;5975.14
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/original/teststrata.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/project.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/project.properties (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/project.properties 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,29 @@
+###
+# #%L
+# Coser :: Business
+#
+# $Id$
+# $HeadURL$
+# %%
+# Copyright (C) 2010 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%
+###
+#Fri Nov 26 11:37:55 CET 2010
+project.catchFileName=testcatch.csv
+project.strataFileName=teststrata.csv
+project.haulFileName=testhaul.csv
+project.lengthFileName=testlength.csv
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/project.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/reftaxSpecies.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/reftaxSpecies.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/reftaxSpecies.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,6 @@
+"C_Perm";"NumSys";"NivSys";"C_VALIDE";"L_VALIDE";"AA_VALIDE";"C_TxPère";"Taxa"
+"1";"000001";"1";"COSER_SPECIES1";"L'espece de test coser 1";"";"";"";
+"2";"000002";"2";"COSER_SPECIES2";"L'espece de test coser 2";"";"";"";
+"3";"000003";"3";"COSER_SPECIES3";"L'espece de test coser 3";"";"";"";
+"4";"000004";"4";"COSER_SPECIES4";"L'espece de test coser 4";"";"";"";
+"5";"000005";"5";"COSER_SPECIES_MERGE";"L'espece de test coser pour fusion";"";"";"";
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/reftaxSpecies.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/EstComInd_test.txt
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/EstComInd_test.txt (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/EstComInd_test.txt 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,8 @@
+Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+COSER_TEST Delta m1 Total 2005 0.00158515572607873 0.000984730247180753 0.621219878261882
+COSER_TEST Delta m1 Total 2009 0.0476283033138584 0.0151443086213752 0.317968677607053
+COSER_TEST Delta c1 Total 2005 0.00646357387617557 0.00215034288588182 0.332686363160152
+COSER_TEST Delta c1 Total 2009 0.0695548460030265 0.0185708842538978 0.266996267277908
+COSER_TEST Delta p1 Total 1983 0.737241187520257 0.00659773901507874 0.00894922737194123
+COSER_TEST Delta p1 Total 1986 0.730696719394954 0.0192883714063304 0.0263972327976263
+
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/EstComInd_test.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/EstPopInd_test.txt
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/EstPopInd_test.txt (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/EstPopInd_test.txt 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,7 @@
+Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
+COSER_TEST lnN L2 COSER_SPECIES1 Total 2001 16.5576325818007 0.1654168567871 0.00999036885073279
+COSER_TEST lnN L3 COSER_SPECIES2 Total 1999 18.4833935818621 0.0287121599216956 0.00155340304768877
+COSER_TEST Wbar L2 COSER_SPECIES1 Total 1983 0.0220057182719674 0.000818725789680143 0.0372051382082402
+COSER_TEST Abundance L2 COSER_SPECIES2 Total 1983 6334938.17950327 235692.250509076 0.0372051382082401
+COSER_TEST Biomass L2 COSER_SPECIES1 Total 2007 4634200.30159478 2761107.91858038 0.595811086894581
+
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/EstPopInd_test.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,29 @@
+###
+# #%L
+# Coser :: Business
+#
+# $Id$
+# $HeadURL$
+# %%
+# Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+# %%
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Lesser Public License for more details.
+#
+# You should have received a copy of the GNU General Lesser Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/lgpl-3.0.html>.
+# #L%
+###
+result.rsufiversion=1.2.3
+result.zone=myzone
+result.estPopIndName=EstPopInd_test.txt
+result.estComIndName=EstComInd_test.txt
+result.publiableResult=true
\ No newline at end of file
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/EstComInd_test.txt
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/EstComInd_test.txt (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/EstComInd_test.txt 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,8 @@
+Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+COSER_TEST Delta m1 Total 2005 0.00158515572607873 0.000984730247180753 0.621219878261882
+COSER_TEST Delta m1 Total 2009 0.0476283033138584 0.0151443086213752 0.317968677607053
+COSER_TEST Delta c1 Total 2005 0.00646357387617557 0.00215034288588182 0.332686363160152
+COSER_TEST Delta c1 Total 2009 0.0695548460030265 0.0185708842538978 0.266996267277908
+COSER_TEST Delta p1 Total 1983 0.737241187520257 0.00659773901507874 0.00894922737194123
+COSER_TEST Delta p1 Total 1986 0.730696719394954 0.0192883714063304 0.0263972327976263
+
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/EstComInd_test.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/EstPopInd_test.txt
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/EstPopInd_test.txt (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/EstPopInd_test.txt 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,7 @@
+Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
+COSER_TEST lnN L2 COSER_SPECIES1 Total 2001 16.5576325818007 0.1654168567871 0.00999036885073279
+COSER_TEST lnN L3 COSER_SPECIES2 Total 1999 18.4833935818621 0.0287121599216956 0.00155340304768877
+COSER_TEST Wbar L2 COSER_SPECIES1 Total 1983 0.0220057182719674 0.000818725789680143 0.0372051382082402
+COSER_TEST Abundance L2 COSER_SPECIES2 Total 1983 6334938.17950327 235692.250509076 0.0372051382082401
+COSER_TEST Biomass L2 COSER_SPECIES1 Total 2007 4634200.30159478 2761107.91858038 0.595811086894581
+
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/EstPopInd_test.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/result.properties
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/result.properties (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/result.properties 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,29 @@
+###
+# #%L
+# Coser :: Business
+#
+# $Id$
+# $HeadURL$
+# %%
+# Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+# %%
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Lesser Public License for more details.
+#
+# You should have received a copy of the GNU General Lesser Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/lgpl-3.0.html>.
+# #L%
+###
+result.rsufiversion=1.2.3
+result.zone=myzone
+result.estPopIndName=EstPopInd_test.txt
+result.estComIndName=EstComInd_test.txt
+result.publiableResult=true
\ No newline at end of file
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/results/testresult2/result.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testcatch_se.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testcatch_se.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testcatch_se.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,25 @@
+"coser.business.line";"Survey";"Year";"Haul";"Species";"Number";"Weight"
+"1";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES1";"234.33";"4.55"
+"2";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES2";"4.33";"1.12"
+"3";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES3";"859.04";"22.16"
+"4";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES4";"251.86";"59.34"
+"5";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES1";"407.54";"81.37"
+"6";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES2";"472.91";"59.38"
+"7";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES3";"38.36";"41.60"
+"8";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES4";"146.76";"76.15"
+"9";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES1";"737.53";"32.27"
+"10";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES2";"715.54";"91.42"
+"11";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES3";"256.31";"55.32"
+"12";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES4";"308.81";"85.96"
+"13";"COSER_TEST";"2011";"TRAIT10";"COSER_SPECIES1";"326.53";"0.55"
+"14";"COSER_TEST";"2011";"TRAIT10";"COSER_SPECIES2";"965.46";"75.30"
+"15";"COSER_TEST";"2011";"TRAIT10";"COSER_SPECIES3";"187.44";"45.04"
+"16";"COSER_TEST";"2011";"TRAIT10";"COSER_SPECIES4";"714.22";"25.60"
+"17";"COSER_TEST";"2011";"TRAIT20";"COSER_SPECIES1";"475.71";"51.42"
+"18";"COSER_TEST";"2011";"TRAIT20";"COSER_SPECIES2";"661.88";"82.41"
+"19";"COSER_TEST";"2011";"TRAIT20";"COSER_SPECIES3";"378.28";"27.32"
+"20";"COSER_TEST";"2011";"TRAIT20";"COSER_SPECIES4";"139.31";"11.74"
+"21";"COSER_TEST";"2011";"TRAIT30";"COSER_SPECIES1";"810.68";"67.38"
+"22";"COSER_TEST";"2011";"TRAIT30";"COSER_SPECIES2";"783.03";"40.36"
+"23";"COSER_TEST";"2011";"TRAIT30";"COSER_SPECIES3";"244.24";"87.85"
+"24";"COSER_TEST";"2011";"TRAIT30";"COSER_SPECIES4";"52.71";"22.93"
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testcatch_se.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testhaul_se.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testhaul_se.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testhaul_se.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,7 @@
+"coser.business.line";"Survey";"Year";"Haul";"Month";"Stratum";"SweptSurface";"Lat";"Long";"Depth"
+"1";"COSER_TEST";"2010";"TRAIT1";"10";"STR1";"0.06";"43.75";"-1.50";"45.50"
+"2";"COSER_TEST";"2010";"TRAIT2";"10";"STR2";"0.06";"43.81";"-1.45";"31.00"
+"3";"COSER_TEST";"2010";"TRAIT3";"10";"STR3";"0.06";"43.89";"-1.73";"115.00"
+"4";"COSER_TEST";"2011";"TRAIT10";"10";"STR4";"0.06";"43.96";"-2.03";"143.00"
+"5";"COSER_TEST";"2011";"TRAIT20";"10";"STR5";"0.06";"43.91";"-2.09";"185.00"
+"6";"COSER_TEST";"2011";"TRAIT30";"10";"STR6";"0.06";"43.88";"-2.12";"295.00"
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testhaul_se.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testlength_se.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testlength_se.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testlength_se.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,30 @@
+"coser.business.line";"Survey";"Year";"Haul";"Species";"Sex";"Maturity";"Length";"Number";"Weight";"Age"
+"1";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES1";"i";"NA";"29.19";"1.00";"0.45";"NA"
+"2";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES2";"i";"NA";"19.60";"2.00";"0.34";"NA"
+"3";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES2";"i";"NA";"19.60";"3.00";"0.78";"NA"
+"4";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES3";"i";"NA";"32.93";"5.00";"0.87";"NA"
+"5";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES3";"f";"NA";"26.27";"3.00";"0.03";"NA"
+"6";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES3";"m";"NA";"35.25";"4.00";"";"NA"
+"7";"COSER_TEST";"2010";"TRAIT1";"COSER_SPECIES4";"i";"NA";"37.82";"4.00";"0.61";"NA"
+"8";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES1";"i";"NA";"20.07";"2.00";"0.12";"NA"
+"9";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES1";"i";"NA";"27.18";"2.00";"0.92";"NA"
+"10";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES2";"i";"NA";"21.14";"1.00";"0.34";"NA"
+"11";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES3";"i";"NA";"1.82";"4.00";"0.1";"NA"
+"12";"COSER_TEST";"2010";"TRAIT2";"COSER_SPECIES4";"i";"NA";"36.55";"4.00";"0.39";"NA"
+"13";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES1";"i";"NA";"20.39";"3.00";"0.28";"NA"
+"14";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES2";"i";"NA";"19.88";"3.00";"0.31";"NA"
+"15";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES3";"i";"NA";"18.16";"1.00";"0.34";"NA"
+"16";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES4";"i";"NA";"10.22";"2.00";"0.31";"NA"
+"17";"COSER_TEST";"2010";"TRAIT3";"COSER_SPECIES4";"f";"NA";"33.03";"5.00";"0.26";"NA"
+"18";"COSER_TEST";"2011";"TRAIT1";"COSER_SPECIES1";"i";"NA";"1.00";"4.00";"0.81";"NA"
+"19";"COSER_TEST";"2011";"TRAIT1";"COSER_SPECIES2";"i";"NA";"27.61";"3.00";"NA"
+"20";"COSER_TEST";"2011";"TRAIT1";"COSER_SPECIES3";"i";"NA";"20.44";"3.00";"0.43";"NA"
+"21";"COSER_TEST";"2011";"TRAIT1";"COSER_SPECIES4";"i";"NA";"6.86";"1.00";"0.23";"NA"
+"22";"COSER_TEST";"2011";"TRAIT2";"COSER_SPECIES1";"i";"NA";"15.04";"4.00";"0.95";"NA"
+"23";"COSER_TEST";"2011";"TRAIT2";"COSER_SPECIES2";"i";"NA";"35.03";"1.00";"0.26";"NA"
+"24";"COSER_TEST";"2011";"TRAIT2";"COSER_SPECIES3";"i";"NA";"19.41";"1.00";"0.51";"NA"
+"25";"COSER_TEST";"2011";"TRAIT2";"COSER_SPECIES4";"i";"NA";"24.58";"2.00";"NA"
+"26";"COSER_TEST";"2011";"TRAIT3";"COSER_SPECIES1";"i";"NA";"2.46";"3.00";"0.32";"NA"
+"27";"COSER_TEST";"2011";"TRAIT3";"COSER_SPECIES2";"i";"NA";"18.93";"5.00";"0.22";"NA"
+"28";"COSER_TEST";"2011";"TRAIT3";"COSER_SPECIES3";"i";"NA";"23.77";"5.00";"0.12";"NA"
+"29";"COSER_TEST";"2011";"TRAIT3";"COSER_SPECIES4";"i";"NA";"0.94";"3.00";"0.77";"NA"
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testlength_se.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testselection1.selection
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testselection1.selection (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testselection1.selection 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,7 @@
+#Fri Nov 26 11:37:55 CET 2010
+selection.validated=false
+selection.densityFilter=3.5
+selection.occurrenceFilter=3.75
+selection.commands.0=(57dc29ae-9991-4f0c-9233-9ab0a5a4ccf4);(MergeSpeciesCommand);();((newSpecyName\=COSER_SPECIES_MERGE);(speciesNames\=(COSER_SPECIES1);(COSER_SPECIES2)))
+selection.selectedSpeciesOccDensComment=Test selectedSpeciesOccDensComment
+selection.comment=Selection test
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/testselection1.selection
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/teststrata_se.csv
===================================================================
--- trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/teststrata_se.csv (rev 0)
+++ trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/teststrata_se.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,11 @@
+"coser.business.line";"Survey";"Stratum";"Surface"
+"1";"COSER_TEST";"STR1";"15909.15"
+"2";"COSER_TEST";"STR2";"11184.27"
+"3";"COSER_TEST";"STR3";"5200.96"
+"4";"COSER_TEST";"STR4";"15573.19"
+"5";"COSER_TEST";"STR5";"8625.07"
+"6";"COSER_TEST";"STR6";"10.20"
+"7";"COSER_TEST";"STR7";"19683.28"
+"8";"COSER_TEST";"STR8";"6053.53"
+"9";"COSER_TEST";"STR9";"993.49"
+"10";"COSER_TEST";"STR10";"5975.14"
Property changes on: trunk/coser-business/src/test/resources/web/legacyprojects/projectctrvalidated/selections/testselection1/teststrata_se.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-business/src/test/resources/web/upload1.zip
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-business/src/test/resources/web/upload2.zip
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/coser-business/src/test/resources/webindicators.csv
===================================================================
--- trunk/coser-business/src/test/resources/webindicators.csv 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/test/resources/webindicators.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -30,4 +30,22 @@
"Shannonmod";"Indice de Shannon normalisé / première année";"Shannon index normalized wrt the first year";;""
"Wbcomm";"Poids moyen d'un individu)";"Average weight of an individual";;"kg"
"Wtot";"Biomasse totale dans la zone (valeur relative)";"Total biomass in the area (relative value)";;""
-
+"xcg";"Longitude du centre de gravité de la population";"Longitude of the center of gravity";"";""
+"ycg";"Latitude du centre de gravité de la population";"Latitude of the center of gravity";"";""
+"I";"Inertie (ou dispersion moyenne) de la population autour du centre de gravité";"The population inertia (i.e. mean dispersion) around the gravity center";"";""
+"Imax";"La valeur d'inertie le long du premier axe principal d'inertie";"The value of the inertia according to the first principal axis of inertia";"";""
+"Imin";"La valeur d'inertie le long du second axe principal d'inertie";"The value of the inertia according to the first principal axis of inertia";"";""
+"Iso";"La valeur de l'isotropie (régularité de distribution dans l'espace) de la population.";"The population isotropy value";"";""
+"xaxe1.1";"La longitude de la première extrémité du premier axe principal d'inertie";"The longitude of the first end-point of the first principal axis of inertia";"";""
+"xaxe1.2";"La longitude de la seconde extrémité du premier axe principal d'inertie";"The longitude of the second end-point of the first principal axis of inertia";"";""
+"yaxe1.1";"La latitude de la première extrémité du premier axe principal d'inertie";"The latitude of the first end-point of the first principal axis of inertia";"";""
+"yaxe1.2";"La latitude de la seconde extrémité du premier axe principal d'inertie";"The latitude of the second end-point of the first principal axis of inertia";"";""
+"xaxe2.1";"La longitude de la première extrémité du second axe principal d'inertie";"The longitude of the first end-point of the second principal axis of inertia";"";""
+"xaxe2.2";"La longitude de la seconde extrémité du second axe principal d'inertie";"The longitude of the second end-point of the second principal axis of inertia";"";""
+"yaxe2.1";"La latitude de la première extrémité du second axe principal d'inertie";"The latitude of the first end-point of the second principal axis of inertia";"";""
+"yaxe2.2";"La latitude de la seconde extrémité du second axe principal d'inertie";"The latitude of the second end-point of the second principal axis of inertia";"";""
+"Npatch";"Le nombre d'agrégats spatiaux dans la population";"The number of spatial patches in the population";"";""
+"PA";"Aire positive de la population : aire de présence de la population, même à faible densité";"The positive area measures the area of presence occupied by a population, even if the density is low.";"";""
+"SA";"L'aire de distribution de la population. Elle mesure la distribution géographique de la population en prenant en compte les variations de densité.";"The spreading area of the population. It measures how a population occupy the geographical space by taking into account the variation of densities";"";""
+"EA";"L'aire équivalente de la population, qui mesure la surface qui serait occupée par la population si tous ses échantillons avaient la même valeur, égale à la densité moyenne par individu";"The equivalent area of the population. It measures the area that would be occupied by the population, if all the samples had the same density equal to the mean density per individual.";"";""
+"microS";"L'indice de microstructure de la population. Il mesure l'importance relative des structures spatiales de la population à une échelle inférieure à la résolution d'échantillonnage (incluant le bruit aléatoire). ";"The microstructure index measures the relative importance of structural components that have a smaller scale than the sampling lag (including random noise).";"";""
\ No newline at end of file
Property changes on: trunk/coser-business/src/test/resources/webindicators.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/test/resources/webzones.csv
===================================================================
--- trunk/coser-business/src/test/resources/webzones.csv 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-business/src/test/resources/webzones.csv 2014-03-07 20:41:45 UTC (rev 1133)
@@ -22,3 +22,4 @@
"gdl";"mediteranee";"Méditerranée";"Golfe du Lion";"1994 >";"Medits";;;;"C_GdL.png"
"ecorse";"mediteranee";"Méditerranée";"Est-Corse";"1994 >";"Medits";"1997 exclue (couverture incomplète)";"1997 excluded (only partial coverage)";;"C_E-Corse.png"
"solper";"atlantique";"Atlantique";"Pertuis";"2005 >";"Solper";"Limitation aux Pertuis Charentais";"Limited to Pertuis Charentais";;
+"gdgciem8";"atlantique";"Golfe de Gascogne (zone VIII du CIEM)";"2000 >";"Pelgas";"La limite nord de la zone VIII du CIEM (48 °N) constitue aussi une limite de régions de la DCSMM";"The northern limit of ICES division VIII (48 °N) corresponds to a regional limit of the MSFD.";;;
Property changes on: trunk/coser-business/src/test/resources/webzones.csv
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/LICENSE.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/README.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/changelog.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/pom.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/license/THIRD-PARTY.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/assembly/bin.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/assembly/coser
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/assembly/coser.bat
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserException.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserExceptionHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/ContainerRedoMenu.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/ContainerUndoMenu.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrame.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/HomeView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/SelectionsListMenu.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/CommonHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/LengthStructureMatrixFilter.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesListRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/SpeciesTableCellRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlCategoryListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlCategoryListRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlDataTableModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlDuplicatedLineTableModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlErrorTreeRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlFindReplaceDialog.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlGraphFrame.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlTableModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/GlobalControlErrorModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/SpecyComboModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/Freize.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/FreizeHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/freize/FreizeModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/CoserMap.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/maps/HaulLocationHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ConfigurationHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ConfigurationView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/NoCopiedLayerUI.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/OptionHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorDialog.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/option/ValidatorsTreeRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectMapsListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectNamesListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/SpeciesFieldTypeListRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultTableRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultZoneRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectUploadResultView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SamplingEffortRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionFilesView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionListsView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionRsufiView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesFusionDialog.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesTypesRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/FileListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/MaturitySpeciesListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/OccurrenceDensitySpeciesListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SizeAllYearSpeciesListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SpeciesListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/SpeciesTypesListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/StrataListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/model/YearListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/CommandListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/CommandListRenderer.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionByProjectTreeModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/replay/SelectionReplayView.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListSelectionModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserProgressBar.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/ErrorHelper.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionLayout.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.java
===================================================================
--- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -1,269 +1,269 @@
-/* %%Ignore-License
- * Copyright (C) 2007 Craig Knudsen
- *
- * AccordionPane 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 2.1 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 Lesser General Public
- * License for more details.
- *
- * A copy of the GNU Lesser General Public License can be found at www.gnu.org.
- * To receive a hard copy, you can write to:
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307 USA.
- */
-
-package fr.ifremer.coser.ui.widgets;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Graphics;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.Icon;
-import javax.swing.JPanel;
-import javax.swing.Timer;
-
-/**
- * The AccordionPane class implements a vertical accordion container, similar to
- * those seen in many AJAX/DHTML frameworks. Multiple child panels are added,
- * but only one of those will be visible at a time. The user can switch between
- * visible panels by clicking on the title area of one of the inactive panels.
- *
- * @author Craig Knudsen, craig(a)k5n.us
- */
-// TODO: add/remove ChangeListener support
-// TODO: add support for setting icons
-// TODO: tooltip text for titles
-// TODO: enable/disable panels
-public class AccordionPane extends JPanel {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = -4266521429712806753L;
-
- protected List<AccordionPaneSubPanel> children;
- protected int selected = -1;
- protected int previouslySelected = -1; // used in animation transition
- // background color for pane title
- protected Color paneBackgroundColor;
- // background color for current pane title
- protected Color activePaneBackgroundColor;
- protected Timer timer;
- protected int transitionStep = 0;
- protected int remainder = -1;
-
- /**
- * Create a new AccordionPane object. After creating the AccordionPane, you
- * will need to call addPanel to add UI components to it.
- */
- public AccordionPane() {
- this.children = new ArrayList<AccordionPaneSubPanel>();
- this.selected = -1;
- this.setLayout(new AccordionLayout(this));
- this.paneBackgroundColor = super.getBackground();
- this.activePaneBackgroundColor = new Color(255, 255, 200);
- }
-
- /**
- * Set the background color for the active and inactive pane title areas.
- *
- * @param normalColor
- * The color to use for the non-active panels
- * @param activeColor
- * The color to use for the currently selected panel
- */
- public void setTitleBackgroundColors(Color normalColor, Color activeColor) {
- this.paneBackgroundColor = normalColor;
- this.activePaneBackgroundColor = activeColor;
- repaint();
- }
-
- public void add(AccordionPaneSubPanel subPanel) {
- subPanel.setAccordionPane(this);
- subPanel.setIndex(this.children.size());
- this.children.add(subPanel);
- super.add(subPanel);
- }
-
- public void paint(Graphics g) {
- // Do some initializing on the first paint call
- if (this.selected < 0 && this.children.size() > 0) {
- this.setSelected(0, false);
- }
- if (this.transitionStep >= this.remainder && this.remainder > 0
- && timer != null) {
- this.timer.stop();
- this.timer = null;
- System.out.println("Killed timer.");
- }
- super.paint(g);
- }
-
- /**
- * Set the currently active/selected pane.
- *
- * @param num
- * The pane number to select (0 is first)
- */
- public void setSelected(int num) {
- setSelected(num, false);
- }
-
- /**
- * Set the currently active/selected pane.
- *
- * @param num
- * The pane number to select (0 is first)
- * @param showAnimation
- * Show the animation transition from the previously selected pane to
- * the newly selected pane.
- */
- public void setSelected(int num, boolean showAnimation) {
- if (num == selected)
- return;
- if (!showAnimation) {
- this.previouslySelected = -1;
- }
- else {
- this.previouslySelected = selected;
- }
- this.selected = num;
- for (int i = 0; i < children.size(); i++) {
- AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) children
- .get(i);
- // subPanel.child.setVisible ( i == num
- // || ( i == this.previouslySelected && showAnimation ) );
- subPanel.titlePanel
- .setBackground(i == num ? this.activePaneBackgroundColor
- : this.paneBackgroundColor);
- }
- if (this.previouslySelected >= 0 && showAnimation) {
- ActionListener a = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- // Add another step in the animation transition
- if (remainder - transitionStep < 10) {
- transitionStep++;
- } else if (remainder - transitionStep < 25) {
- transitionStep += 3;
- } else {
- transitionStep += 10;
- }
- // System.out.println ( "transitionStep=" + transitionStep );
- if (transitionStep >= remainder) {
- // We're done with the animation
- transitionStep = -1;
- timer.stop();
- } else {
- timer.setInitialDelay(1);
- timer.restart();
- }
- doLayout();
- validate();
- repaint();
- }
- };
-
- if (timer != null) {
- timer.stop();
- timer = null;
- }
-
- // Animate the transition from one panel to another panel.
- this.transitionStep = 0;
- timer = new Timer(1, a);
- timer.start();
- }
- doLayout(); // ec-20101202 : par moment ca fonctionne mal
- validate();
- repaint();
- }
-
- /**
- * Get the index of the currently selected pane.
- *
- * @return the index of the currently selected pane
- */
- public int getSelectedIndex() {
- return this.selected;
- }
-
- /**
- * Get the number of panes in the AccordionPane.
- *
- * @return the number of panes
- */
- public int getPaneCount() {
- return this.children.size();
- }
-
- /**
- * Set the text title at the specified location
- *
- * @param index
- * the index number of the pane
- * @param newTitle
- * the new title for the specified pane.
- */
- public void setTitleAt(int index, String newTitle) {
- AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
- .get(index);
- subPanel.titleLabel.setText(newTitle);
- }
-
- /**
- * Get the text title at the specified location
- *
- * @param index
- * the index number of the pane
- * @return the text title of the specified pane
- */
- public String getTitleAt(int index) {
- AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
- .get(index);
- return subPanel.titleLabel.getText();
- }
-
- /**
- * Set the icon for the specified location.
- *
- * @param index
- * @param icon
- */
- public void setIconAt(int index, Icon icon) {
- AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
- .get(index);
- subPanel.titleLabel.setIcon(icon);
- }
-
- /**
- * Returns the component at index.
- *
- * @param index
- * the index of the item being queried
- * @return component
- */
- public Component getComponentAt(int index) {
- AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
- .get(index);
- return subPanel.child;
- }
-
- /**
- * Returns the currently selected component for this AccordionPane.
- *
- * @return the currently selected component
- */
- public Component getSelectedComponent() {
- AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
- .get(this.selected);
- return subPanel.child;
- }
-
+/* %%Ignore-License
+ * Copyright (C) 2007 Craig Knudsen
+ *
+ * AccordionPane 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 2.1 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 Lesser General Public
+ * License for more details.
+ *
+ * A copy of the GNU Lesser General Public License can be found at www.gnu.org.
+ * To receive a hard copy, you can write to:
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307 USA.
+ */
+
+package fr.ifremer.coser.ui.widgets;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.JPanel;
+import javax.swing.Timer;
+
+/**
+ * The AccordionPane class implements a vertical accordion container, similar to
+ * those seen in many AJAX/DHTML frameworks. Multiple child panels are added,
+ * but only one of those will be visible at a time. The user can switch between
+ * visible panels by clicking on the title area of one of the inactive panels.
+ *
+ * @author Craig Knudsen, craig(a)k5n.us
+ */
+// TODO: add/remove ChangeListener support
+// TODO: add support for setting icons
+// TODO: tooltip text for titles
+// TODO: enable/disable panels
+public class AccordionPane extends JPanel {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -4266521429712806753L;
+
+ protected List<AccordionPaneSubPanel> children;
+ protected int selected = -1;
+ protected int previouslySelected = -1; // used in animation transition
+ // background color for pane title
+ protected Color paneBackgroundColor;
+ // background color for current pane title
+ protected Color activePaneBackgroundColor;
+ protected Timer timer;
+ protected int transitionStep = 0;
+ protected int remainder = -1;
+
+ /**
+ * Create a new AccordionPane object. After creating the AccordionPane, you
+ * will need to call addPanel to add UI components to it.
+ */
+ public AccordionPane() {
+ this.children = new ArrayList<AccordionPaneSubPanel>();
+ this.selected = -1;
+ this.setLayout(new AccordionLayout(this));
+ this.paneBackgroundColor = super.getBackground();
+ this.activePaneBackgroundColor = new Color(255, 255, 200);
+ }
+
+ /**
+ * Set the background color for the active and inactive pane title areas.
+ *
+ * @param normalColor
+ * The color to use for the non-active panels
+ * @param activeColor
+ * The color to use for the currently selected panel
+ */
+ public void setTitleBackgroundColors(Color normalColor, Color activeColor) {
+ this.paneBackgroundColor = normalColor;
+ this.activePaneBackgroundColor = activeColor;
+ repaint();
+ }
+
+ public void add(AccordionPaneSubPanel subPanel) {
+ subPanel.setAccordionPane(this);
+ subPanel.setIndex(this.children.size());
+ this.children.add(subPanel);
+ super.add(subPanel);
+ }
+
+ public void paint(Graphics g) {
+ // Do some initializing on the first paint call
+ if (this.selected < 0 && this.children.size() > 0) {
+ this.setSelected(0, false);
+ }
+ if (this.transitionStep >= this.remainder && this.remainder > 0
+ && timer != null) {
+ this.timer.stop();
+ this.timer = null;
+ System.out.println("Killed timer.");
+ }
+ super.paint(g);
+ }
+
+ /**
+ * Set the currently active/selected pane.
+ *
+ * @param num
+ * The pane number to select (0 is first)
+ */
+ public void setSelected(int num) {
+ setSelected(num, false);
+ }
+
+ /**
+ * Set the currently active/selected pane.
+ *
+ * @param num
+ * The pane number to select (0 is first)
+ * @param showAnimation
+ * Show the animation transition from the previously selected pane to
+ * the newly selected pane.
+ */
+ public void setSelected(int num, boolean showAnimation) {
+ if (num == selected)
+ return;
+ if (!showAnimation) {
+ this.previouslySelected = -1;
+ }
+ else {
+ this.previouslySelected = selected;
+ }
+ this.selected = num;
+ for (int i = 0; i < children.size(); i++) {
+ AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) children
+ .get(i);
+ // subPanel.child.setVisible ( i == num
+ // || ( i == this.previouslySelected && showAnimation ) );
+ subPanel.titlePanel
+ .setBackground(i == num ? this.activePaneBackgroundColor
+ : this.paneBackgroundColor);
+ }
+ if (this.previouslySelected >= 0 && showAnimation) {
+ ActionListener a = new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ // Add another step in the animation transition
+ if (remainder - transitionStep < 10) {
+ transitionStep++;
+ } else if (remainder - transitionStep < 25) {
+ transitionStep += 3;
+ } else {
+ transitionStep += 10;
+ }
+ // System.out.println ( "transitionStep=" + transitionStep );
+ if (transitionStep >= remainder) {
+ // We're done with the animation
+ transitionStep = -1;
+ timer.stop();
+ } else {
+ timer.setInitialDelay(1);
+ timer.restart();
+ }
+ doLayout();
+ validate();
+ repaint();
+ }
+ };
+
+ if (timer != null) {
+ timer.stop();
+ timer = null;
+ }
+
+ // Animate the transition from one panel to another panel.
+ this.transitionStep = 0;
+ timer = new Timer(1, a);
+ timer.start();
+ }
+ doLayout(); // ec-20101202 : par moment ca fonctionne mal
+ validate();
+ repaint();
+ }
+
+ /**
+ * Get the index of the currently selected pane.
+ *
+ * @return the index of the currently selected pane
+ */
+ public int getSelectedIndex() {
+ return this.selected;
+ }
+
+ /**
+ * Get the number of panes in the AccordionPane.
+ *
+ * @return the number of panes
+ */
+ public int getPaneCount() {
+ return this.children.size();
+ }
+
+ /**
+ * Set the text title at the specified location
+ *
+ * @param index
+ * the index number of the pane
+ * @param newTitle
+ * the new title for the specified pane.
+ */
+ public void setTitleAt(int index, String newTitle) {
+ AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
+ .get(index);
+ subPanel.titleLabel.setText(newTitle);
+ }
+
+ /**
+ * Get the text title at the specified location
+ *
+ * @param index
+ * the index number of the pane
+ * @return the text title of the specified pane
+ */
+ public String getTitleAt(int index) {
+ AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
+ .get(index);
+ return subPanel.titleLabel.getText();
+ }
+
+ /**
+ * Set the icon for the specified location.
+ *
+ * @param index
+ * @param icon
+ */
+ public void setIconAt(int index, Icon icon) {
+ AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
+ .get(index);
+ subPanel.titleLabel.setIcon(icon);
+ }
+
+ /**
+ * Returns the component at index.
+ *
+ * @param index
+ * the index of the item being queried
+ * @return component
+ */
+ public Component getComponentAt(int index) {
+ AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
+ .get(index);
+ return subPanel.child;
+ }
+
+ /**
+ * Returns the currently selected component for this AccordionPane.
+ *
+ * @return the currently selected component
+ */
+ public Component getSelectedComponent() {
+ AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children
+ .get(this.selected);
+ return subPanel.child;
+ }
+
}
\ No newline at end of file
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPaneSubPanel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/ComponentTitledBorder.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/LookAndFeelViewMenuItem.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/jnlp/coser-jnlp.vm
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/resources/coser.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/Project-error-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/RSufiResult-error-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/resources/fr/ifremer/coser/bean/Selection-error-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/resources/icons/accept.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/agt_action_fail.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/arrow_jion_up.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/arrow_left.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/arrow_right.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/arrow_rotate_clockwise.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/button_ok.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/cancel.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/chart_bar.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/chart_curve.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/coser.ico
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/disk.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/logo.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/logo300.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/map.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/report.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/spellcheck.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/stock_lock.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/stock_select_clear.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/stock_select_table.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/table.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/icons/warning.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/log4j.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-ui/src/main/resources/maps/vmap_area_thin.shp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-ui/src/main/resources/maps/vmap_area_thin.ssx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/LICENSE.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/README.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/changelog.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/pom.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/license/THIRD-PARTY.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,69 @@
+package fr.ifremer.coser.web;
+
+/*
+ * #%L
+ * Coser :: Web
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import java.util.Date;
+
+/**
+ * To listen start and end of the application.
+ * <p/>
+ * On start we will init the service helper ({@link ServiceHelper#init()}).
+ * <p/>
+ * On stop, just release close the service helper ({@link ServiceHelper#close()}).
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserApplicationListener implements ServletContextListener {
+
+ /** Logger. */
+ protected static final Log log =
+ LogFactory.getLog(CoserApplicationListener.class);
+
+ @Override
+ public void contextInitialized(ServletContextEvent sce) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Application starting at " + new Date() + "...");
+ }
+
+ ServiceHelper.init();
+
+ }
+
+ @Override
+ public void contextDestroyed(ServletContextEvent sce) {
+ if (log.isInfoEnabled()) {
+ log.info("Application is ending at " + new Date() + "...");
+ }
+
+ ServiceHelper.close();
+
+ }
+}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -25,6 +25,7 @@
import static org.nuiton.i18n.I18n.t;
import fr.ifremer.coser.CoserBusinessConfig;
+import org.nuiton.config.ConfigOptionDef;
/**
* Coser web configuration.
@@ -39,11 +40,12 @@
public CoserWebConfig() {
// init configuration with default options
- for (CoserWebOption o : CoserWebOption.values()) {
- if (o.defaultValue != null) {
- setDefaultOption(o.key, o.defaultValue);
- }
- }
+ loadDefaultOptions(CoserWebOption.values());
+// for (CoserWebOption o : CoserWebOption.values()) {
+// if (o.defaultValue != null) {
+// setDefaultOption(o.key, o.defaultValue);
+// }
+// }
}
public String getApplicationVersion() {
@@ -91,7 +93,7 @@
return result;
}
- public enum CoserWebOption {
+ public enum CoserWebOption implements ConfigOptionDef {
/** Context name for multiple deployment. */
CONTEXT_NAME(APP_NAME, null, "coser"),
@@ -117,7 +119,32 @@
public String getDefaultValue() {
return defaultValue;
}
-
+
+ @Override
+ public boolean isTransient() {
+ return false;
+ }
+
+ @Override
+ public boolean isFinal() {
+ return false;
+ }
+
+ @Override
+ public void setDefaultValue(String defaultValue) {
+
+ }
+
+ @Override
+ public void setTransient(boolean isTransient) {
+
+ }
+
+ @Override
+ public void setFinal(boolean isFinal) {
+
+ }
+
public String getDescription() {
return description;
}
@@ -125,5 +152,12 @@
public String getKey() {
return key;
}
+
+ @Override
+ public Class<?> getType() {
+ return null;
+ }
+
+
}
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebException.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebException.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebException.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,6 +22,8 @@
package fr.ifremer.coser.web;
+import fr.ifremer.coser.CoserTechnicalException;
+
/**
* Coser web runtime exception.
*
@@ -31,7 +33,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class CoserWebException extends RuntimeException {
+public class CoserWebException extends CoserTechnicalException {
/** serialVersionUID. */
private static final long serialVersionUID = -1002725698959514244L;
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebException.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -38,6 +38,7 @@
* Last update : $Date$
* By : $Author$
*/
+@Deprecated
public class ServiceFactory {
protected static CoserWebConfig coserConfig;
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -0,0 +1,324 @@
+package fr.ifremer.coser.web;
+
+/*
+ * #%L
+ * Coser :: Web
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.CoserBusinessException;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserResult;
+import fr.ifremer.coser.result.CoserResultEngine;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.CoserRequestSpeciesAware;
+import fr.ifremer.coser.result.request.CoserRequestZoneAware;
+import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.services.WebService;
+import fr.ifremer.coser.util.DataType;
+import fr.ifremer.coser.web.actions.common.CoserAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.config.ArgumentsParserException;
+import org.nuiton.i18n.I18n;
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Wrap any call to business layer.
+ * <p/>
+ * This was the easiest way to see also what's is really used from the business layer
+ * and refactor Cobol-style (or Turbo-Pascal maybe?) previous code...
+ * <p/>
+ * Created on 3/6/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ServiceHelper {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(ServiceHelper.class);
+
+ private static WebService webService;
+
+ private static CoserResultEngine resultService;
+
+ private static CoserWebConfig config;
+
+
+ // --------------------------------------------------------------------- //
+ // --- Application context methods ------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ public static void init() {
+
+ // on a pas trop de locale là :(
+ I18n.init(null, null);
+
+ config = new CoserWebConfig();
+ try {
+ config.parse();
+ } catch (ArgumentsParserException ex) {
+ throw new CoserWebException("Can't read configuration", ex);
+ }
+
+ webService = new WebService(config);
+
+ Set<ResultRepositoryProvider<?>> providers =
+ CoserResultEngine.createDefaultRepositoryProviders(config);
+ resultService = new CoserResultEngine(providers);
+ }
+
+ public static void close() {
+ webService = null;
+ resultService = null;
+ config = null;
+ }
+
+ private final CoserAction action;
+
+ public ServiceHelper(CoserAction action) {
+ Preconditions.checkNotNull(config);
+ Preconditions.checkNotNull(webService);
+ Preconditions.checkNotNull(resultService);
+ Preconditions.checkNotNull(action);
+ this.action = action;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Facade methods -------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ public Map<String, String> getFacades() {
+ try {
+ return webService.getFacades();
+ } catch (CoserBusinessException e) {
+ throw new CoserWebException("Could not obtain facades", e);
+ }
+ }
+
+ public String getFacadeDisplayName(String facade) {
+ Map<String, String> facades = getFacades();
+ return facades.get(facade);
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Zone methods ---------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ public Map<String, List<String>> getZoneByFacade() {
+ try {
+ return webService.getZoneByFacade();
+ } catch (CoserBusinessException e) {
+ throw new CoserWebException("Could not obtain zone by facade", e);
+ }
+ }
+
+ public Map<String, String> getZonePictures() {
+ try {
+ return webService.getZonePictures();
+ } catch (CoserBusinessException e) {
+ throw new CoserWebException("Could not obtain zone pictures", e);
+ }
+ }
+
+ public Map<String, String> getZoneMetaInfo(Locale locale) {
+ try {
+ return webService.getZoneMetaInfo(locale);
+ } catch (CoserBusinessException e) {
+ throw new CoserWebException("Could not obtain zone meta infos", e);
+ }
+ }
+
+ public Map<String, String> getAvailableZones(CoserRequest request) {
+ return resultService.getAvailableZones(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) {
+ try {
+ return webService.getZoneFullName(zoneId);
+ } catch (CoserBusinessException e) {
+ throw new CoserWebException("Could not obtain zone full name", e);
+ }
+ }
+
+ public String getZoneDisplayName(CoserRequestZoneAware request) {
+ Map<String, String> availableZones = getAvailableZones(request);
+ String displayName = availableZones.get(request.getZone());
+ return displayName;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Species methods ------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ 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());
+ return displayName;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Indicator methods ----------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ public Map<String, String> getAvailableIndicators(IndicatorRequest 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(IndicatorRequest request) {
+ Map<String, String> availableIndicators = getAvailableIndicators(request);
+ String displayName = availableIndicators.get(request.getIndicator());
+ return displayName;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- 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.getResult(request);
+
+ if (!(result instanceof FileResult)) {
+ throw new CoserWebException(
+ "Result should a FileResult, but was: " + result);
+ }
+ FileResult fileResult = (FileResult) result;
+ return fileResult;
+ }
+
+ 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);
+ } catch (CoserBusinessException ex) {
+ throw new CoserWebException("Can't register new result file", ex);
+ }
+ }
+
+ public FileResult extractData(List<String> selectZones,
+ List<DataType> selectTypes,
+ List<String> selectSpecies,
+ List<String> selectComIndicators,
+ List<String> selectPopIndicators,
+ Locale locale) {
+ try {
+ File file = webService.extractData(selectZones,
+ selectTypes,
+ selectSpecies,
+ selectComIndicators,
+ selectPopIndicators,
+ locale);
+ FileResult fileResult = new FileResult(LegacyResultRepository.ID, file);
+ return fileResult;
+ } catch (CoserBusinessException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't extract data", e);
+ }
+ throw new CoserWebException("Can't extract data", e);
+ }
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Misc methods ---------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ public Date getLastDataUpdateDate() {
+ try {
+ return webService.getLastDataUpdateDate();
+ } catch (CoserBusinessException e) {
+ throw new CoserWebException("Can't get last update date", e);
+ }
+ }
+
+ public CoserWebConfig getConfig() {
+ return config;
+ }
+
+}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -26,12 +26,12 @@
/**
* Documents action.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class DocumentsAction extends CoserAction {
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -22,26 +22,20 @@
package fr.ifremer.coser.web.actions;
-import java.util.Date;
+import fr.ifremer.coser.web.actions.common.CoserAction;
+import org.apache.struts2.ServletActionContext;
import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
-import org.apache.struts2.ServletActionContext;
-
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
-
/**
* Action index, recupere la date de derniere mise à jour.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class IndexAction extends CoserAction {
@@ -56,32 +50,40 @@
/**
* Return l'url de l'application context inclut.
- *
+ *
* @return l'url du context
*/
public String getContextUrl() {
HttpServletRequest request = ServletActionContext.getRequest();
-
+
String url = request.getScheme() + "://" + request.getServerName();
if (request.getServerPort() != 80) {
url += ":" + request.getServerPort();
}
url += request.getContextPath();
-
+
return url;
}
@Override
public String execute() {
- WebService webService = ServiceFactory.getWebService();
+ dataUpdateDate = getService().getLastDataUpdateDate();
- try {
- dataUpdateDate = webService.getLastDataUpdateDate();
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get last update date", ex);
- }
-
return SUCCESS;
}
+
+ // @Override
+// public String execute() {
+//
+// WebService webService = ServiceFactory.getWebService();
+//
+// try {
+// dataUpdateDate = webService.getLastDataUpdateDate();
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get last update date", ex);
+// }
+//
+// return SUCCESS;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -22,19 +22,18 @@
package fr.ifremer.coser.web.actions;
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
-import fr.ifremer.coser.web.actions.common.CoserAction;
-
/**
* Action index, recupere la liste des resultats.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class LocaleAction extends CoserAction {
@@ -42,7 +41,7 @@
private static final long serialVersionUID = 1663244944108703571L;
@Override
- @Action(results={@Result(location="index", type="redirect")})
+ @Action(results = {@Result(location = "index", type = "redirect")})
public String execute() {
return SUCCESS;
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -26,12 +26,12 @@
/**
* Quality action.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class QualityAction extends CoserAction {
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -26,12 +26,12 @@
/**
* Survey description action.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class SurveyAction extends CoserAction {
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -22,32 +22,27 @@
package fr.ifremer.coser.web.actions;
-import java.io.File;
-
-import javax.servlet.http.HttpServletResponse;
-
+import fr.ifremer.coser.web.CoserWebConfig;
+import fr.ifremer.coser.web.ServiceFactory;
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;
import org.nuiton.util.StringUtil;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebConfig;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
/**
* Upload results action.
- *
+ * <p/>
* Cette action est appelée par l'interface swing cliente.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class UploadResultAction extends CoserAction {
@@ -94,31 +89,23 @@
}
// check
- CoserWebConfig config = ServiceFactory.getCoserConfig();
+ CoserWebConfig config = getService().getConfig();
if (config.getAdminPassword() == null || config.getAdminLogin() == null) {
if (log.isWarnEnabled()) {
log.warn("No admin password set, cannot enable result upload");
}
- }
- else {
+ } else {
if (config.getAdminLogin().equals(login) && equalsSHA1Password(config, sha1Password)) {
if (resultFile != null) {
- WebService webService = ServiceFactory.getWebService();
- try {
- webService.registerNewUploadedResults(login, resultFile);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't register new result file", ex);
- }
+ getService().registerNewUploadedResults(login, resultFile);
return SUCCESS;
- }
- else {
+ } else {
if (log.isWarnEnabled()) {
log.warn("File is null");
}
}
- }
- else {
+ } else {
if (log.isWarnEnabled()) {
log.warn("Wrong login/password : login = " + login);
}
@@ -126,31 +113,31 @@
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
}
}
-
+
return INPUT;
}
/**
* Check if sha1 password equals to config password.
- *
+ * <p/>
* Config password can be plain or sha1 encoded.
- *
- * @param config config
+ *
+ * @param config config
* @param sha1Password sha1 to check
* @return equality
*/
protected boolean equalsSHA1Password(CoserWebConfig config, String sha1Password) {
-
+
// first test sha1 equality
String configSha1Password = config.getAdminPassword();
boolean result = configSha1Password.equals(sha1Password);
-
+
// second test to encode sha1 of plain password
if (!result) {
configSha1Password = StringUtil.encodeSHA1(configSha1Password);
result = configSha1Password.equals(sha1Password);
}
-
+
return result;
}
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -22,8 +22,7 @@
package fr.ifremer.coser.web.actions.admin;
-import java.util.List;
-
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -32,27 +31,23 @@
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import java.util.List;
/**
* Project list action.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
@ParentPackage("admin")
@InterceptorRefs({
- @InterceptorRef("loginInterceptor"),
- @InterceptorRef("defaultStack")
-})
-@Result(name="success", type="redirect", location="list-projects")
+ @InterceptorRef("loginInterceptor"),
+ @InterceptorRef("defaultStack")
+ })
+@Result(name = "success", type = "redirect", location = "list-projects")
public class DeleteProjectsAction extends CoserAction {
/** serialVersionUID. */
@@ -65,7 +60,7 @@
* resultat conrespondant dans le stockage indicateur.
*/
protected List<String> indicatorsZonesId;
-
+
/**
* Contient les identifiants des zones dont on souhaites supprimer le
* resultat conrespondant dans le stockage cartes.
@@ -75,32 +70,52 @@
public void setIndicatorsZonesId(List<String> indicatorsZonesId) {
this.indicatorsZonesId = indicatorsZonesId;
}
-
+
public void setMapsZonesId(List<String> mapsZonesId) {
this.mapsZonesId = mapsZonesId;
}
public String execute() {
- WebService webService = ServiceFactory.getWebService();
- try {
- if (log.isDebugEnabled()) {
- log.debug("Delete indicators zone : " + indicatorsZonesId);
- }
- if (CollectionUtils.isNotEmpty(indicatorsZonesId)) {
- webService.deleteIndicatorsResult(indicatorsZonesId);
- }
+ if (log.isDebugEnabled()) {
+ log.debug("Delete indicators zone : " + indicatorsZonesId);
+ }
+ if (CollectionUtils.isNotEmpty(indicatorsZonesId)) {
+ getService().deleteIndicatorsResult(indicatorsZonesId);
+ }
- if (log.isDebugEnabled()) {
- log.debug("Delete maps zone : " + mapsZonesId);
- }
- if (CollectionUtils.isNotEmpty(mapsZonesId)) {
- webService.deleteMapsResult(mapsZonesId);
- }
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get data from web service", ex);
+ if (log.isDebugEnabled()) {
+ log.debug("Delete maps zone : " + mapsZonesId);
}
+ if (CollectionUtils.isNotEmpty(mapsZonesId)) {
+ getService().deleteMapsResult(mapsZonesId);
+ }
return SUCCESS;
}
+
+// public String execute() {
+// WebService webService = ServiceFactory.getWebService();
+//
+// try {
+// if (log.isDebugEnabled()) {
+// log.debug("Delete indicators zone : " + indicatorsZonesId);
+// }
+// if (CollectionUtils.isNotEmpty(indicatorsZonesId)) {
+// webService.deleteIndicatorsResult(indicatorsZonesId);
+// }
+//
+// if (log.isDebugEnabled()) {
+// log.debug("Delete maps zone : " + mapsZonesId);
+// }
+// if (CollectionUtils.isNotEmpty(mapsZonesId)) {
+// webService.deleteMapsResult(mapsZonesId);
+// }
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get data from web service", ex);
+// }
+//
+// return SUCCESS;
+// }
+
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -22,26 +22,25 @@
package fr.ifremer.coser.web.actions.admin;
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.ParentPackage;
-import fr.ifremer.coser.web.actions.common.CoserAction;
-
/**
* Admin index action.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
@ParentPackage("admin")
@InterceptorRefs({
- @InterceptorRef("loginInterceptor"),
- @InterceptorRef("defaultStack")
-})
+ @InterceptorRef("loginInterceptor"),
+ @InterceptorRef("defaultStack")
+ })
public class IndexAction extends CoserAction {
/** serialVersionUID. */
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -22,33 +22,28 @@
package fr.ifremer.coser.web.actions.admin;
-import java.util.List;
-import java.util.Map;
-
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.ParentPackage;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import java.util.List;
+import java.util.Map;
/**
* Project list action.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
@ParentPackage("admin")
@InterceptorRefs({
- @InterceptorRef("loginInterceptor"),
- @InterceptorRef("defaultStack")
-})
+ @InterceptorRef("loginInterceptor"),
+ @InterceptorRef("defaultStack")
+ })
public class ListProjectsAction extends CoserAction {
/** serialVersionUID. */
@@ -77,28 +72,42 @@
}
public String getZoneDisplayName(String zoneId) {
- WebService webService = ServiceFactory.getWebService();
- String zoneDisplayName = null;
- try {
- zoneDisplayName = webService.getZoneFullName(zoneId);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone name", ex);
- }
- return zoneDisplayName;
+ return getService().getZoneFullName(zoneId);
}
public String execute() {
- WebService webService = ServiceFactory.getWebService();
- try {
- facades = webService.getFacades();
- zonesByFacades = webService.getZoneByFacade();
- indicatorsResults = webService.getIndicatorsResultsPerZone();
- mapsResults = webService.getMapsResultsPerZone();
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get data from web service", ex);
- }
+ facades = getService().getFacades();
+ zonesByFacades = getService().getZoneByFacade();
+ indicatorsResults = getService().getIndicatorsResultsPerZone();
+ mapsResults = getService().getMapsResultsPerZone();
return SUCCESS;
}
+
+// public String getZoneDisplayName(String zoneId) {
+// WebService webService = ServiceFactory.getWebService();
+// String zoneDisplayName = null;
+// try {
+// zoneDisplayName = webService.getZoneFullName(zoneId);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone name", ex);
+// }
+// return zoneDisplayName;
+// }
+//
+// public String execute() {
+// WebService webService = ServiceFactory.getWebService();
+//
+// try {
+// facades = webService.getFacades();
+// zonesByFacades = webService.getZoneByFacade();
+// indicatorsResults = webService.getIndicatorsResultsPerZone();
+// mapsResults = webService.getMapsResultsPerZone();
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get data from web service", ex);
+// }
+//
+// return SUCCESS;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -26,14 +26,14 @@
/**
* Login action.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
-public class LoginAction extends CoserAction {
+public class LoginAction extends CoserAction {
/** serialVersionUID. */
private static final long serialVersionUID = -1576602720835497842L;
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -22,23 +22,22 @@
package fr.ifremer.coser.web.actions.admin;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-import org.apache.struts2.StrutsStatics;
-
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
+import org.apache.struts2.StrutsStatics;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
/**
* Authentication interceptor.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class LoginInterceptor implements Interceptor {
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -22,27 +22,26 @@
package fr.ifremer.coser.web.actions.admin;
-import java.util.Map;
-
+import fr.ifremer.coser.web.CoserWebConfig;
+import fr.ifremer.coser.web.ServiceFactory;
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.SessionAware;
import org.nuiton.util.StringUtil;
-import fr.ifremer.coser.web.CoserWebConfig;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import java.util.Map;
/**
* Perform login action.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
-@Result(name="success", type="redirect", location="index")
-public class PerformLoginAction extends CoserAction implements SessionAware {
+@Result(name = "success", type = "redirect", location = "index")
+public class PerformLoginAction extends CoserAction implements SessionAware {
/** serialVersionUID. */
private static final long serialVersionUID = -1576602720835497842L;
@@ -70,8 +69,8 @@
}
@Override
- public String execute() throws Exception {
- CoserWebConfig config = ServiceFactory.getCoserConfig();
+ public String execute() throws Exception {
+ CoserWebConfig config = getService().getConfig();
if (config.getAdminLogin().equals(login) && equalsSHA1Password(config, password)) {
session.put("login", login);
return SUCCESS;
@@ -83,27 +82,27 @@
/**
* Check if sha1 password equals to config password.
- *
+ * <p/>
* Config password can be plain or sha1 encoded.
- *
- * @param config config
+ *
+ * @param config config
* @param password password to check
* @return equality
*/
protected boolean equalsSHA1Password(CoserWebConfig config, String password) {
-
+
// first test sha1 equality
String configSha1Password = config.getAdminPassword();
String sha1Password = StringUtil.encodeSHA1(password);
boolean result = configSha1Password.equals(sha1Password);
-
+
// second test to encode sha1 of plain password
if (!result) {
configSha1Password = StringUtil.encodeSHA1(configSha1Password);
result = configSha1Password.equals(sha1Password);
}
-
+
return result;
}
-
+
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/FacadeAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/FacadeAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/FacadeAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -26,12 +26,12 @@
/**
* Action index, affiche la liste des facades majeures.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class FacadeAction extends CommonFacade {
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/FacadeAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,25 +22,21 @@
package fr.ifremer.coser.web.actions.com;
-import java.util.Locale;
+import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.web.actions.common.CoserAction;
+
import java.util.Map;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
-
/**
* Affiche le graphique demandé.
- *
+ * <p/>
* Parametre : zone, species, indicator.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class GraphAction extends CoserAction {
@@ -59,6 +55,8 @@
/** La liste actuellement selectionnée (cas null géré). */
protected String list;
+ protected IndicatorRequest request;
+
public String getFacade() {
return facade;
}
@@ -96,52 +94,77 @@
}
public String getFacadeDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getFacades().get(facade);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get facade display name", ex);
- }
- return displayName;
+ return getService().getFacadeDisplayName(facade);
}
-
+
public String getZoneDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getZoneForFacade(facade, false, false).get(zone);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone display name", ex);
- }
- return displayName;
+ return getService().getZoneDisplayName(request);
}
-
+
public String getIndicatorDisplayName() {
-
- Locale locale = getLocale();
-
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getIndicators(zone, null, locale).get(indicator);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get species display name", ex);
- }
- return displayName;
+ return getService().getIndicatorDisplayName(request);
}
@Override
public String execute() {
- Locale locale = getLocale();
-
- WebService webService = ServiceFactory.getWebService();
- try {
- lists = webService.getIndicatorLists(zone, indicator, locale);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get indicator's list names", ex);
- }
+ request = requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ addSpecies(list).
+ toCommunityIndicatorRequest();
+ lists = getService().getAvailableSpecies(request);
return SUCCESS;
}
+
+// public String getFacadeDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getFacades().get(facade);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get facade display name", ex);
+// }
+// return displayName;
+// }
+//
+// public String getZoneDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getZoneForFacade(facade, false, false).get(zone);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone display name", ex);
+// }
+// return displayName;
+// }
+//
+// public String getIndicatorDisplayName() {
+//
+// Locale locale = getLocale();
+//
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getIndicators(zone, null, locale).get(indicator);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get species display name", ex);
+// }
+// return displayName;
+// }
+//
+// @Override
+// public String execute() {
+//
+// Locale locale = getLocale();
+//
+// WebService webService = ServiceFactory.getWebService();
+// try {
+// lists = webService.getIndicatorLists(zone, indicator, locale);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get indicator's list names", ex);
+// }
+// return SUCCESS;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,37 +22,32 @@
package fr.ifremer.coser.web.actions.com;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.util.Locale;
-
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import java.io.InputStream;
/**
* Affiche le graphique demandé.
- *
+ * <p/>
* Parametre : zone, indicator.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class GraphDataAction extends CoserAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
+ protected String facade;
+
protected String zone;
protected String indicator;
@@ -60,6 +55,12 @@
/** La liste actuellement selectionnée (cas null géré). */
protected String list;
+ protected FileResult result;
+
+ public void setFacade(String facade) {
+ this.facade = facade;
+ }
+
public String getZone() {
return zone;
}
@@ -84,26 +85,44 @@
this.list = list;
}
- @Action(results= {@Result(type="stream", params={"contentType", "image/png", "inputName", "inputStream"})})
+ public String getSource() {
+ 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() {
+ IndicatorRequest request = requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ addResultType(IndicatorRequest.ResultType.DATA).
+ addSpecies(list).
+ toCommunityIndicatorRequest();
+ result = getService().getFileResult(request);
return SUCCESS;
}
public InputStream getInputStream() {
- WebService webService = ServiceFactory.getWebService();
-
- Locale locale = getLocale();
-
- InputStream input = null;
- try {
- File mapImage = webService.getChart(zone, null, indicator, list, locale);
- input = new FileInputStream(mapImage);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get map file", ex);
- } catch (FileNotFoundException ex) {
- throw new CoserWebException("Can't get map file", ex);
- }
-
+ InputStream input = result.getInputStream();
return input;
}
+
+// public InputStream getInputStream() {
+// WebService webService = ServiceFactory.getWebService();
+//
+// Locale locale = getLocale();
+//
+// InputStream input = null;
+// try {
+// File mapImage = webService.getChart(zone, null, indicator, list, locale);
+// input = new FileInputStream(mapImage);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get map file", ex);
+// } catch (FileNotFoundException ex) {
+// throw new CoserWebException("Can't get map file", ex);
+// }
+//
+// return input;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,38 +22,31 @@
package fr.ifremer.coser.web.actions.com;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.Locale;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import java.io.InputStream;
/**
* Télécharge les données qui ont servi a généré le graph au format CSV.
- *
+ * <p/>
* Parametre : zone, indicator.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class GraphDownloadAction extends CoserAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
- private static final Log log = LogFactory.getLog(GraphDownloadAction.class);
+ protected String facade;
protected String zone;
@@ -62,6 +55,12 @@
/** La liste actuellement selectionnée (cas null géré). */
protected String list;
+ protected FileResult result;
+
+ public void setFacade(String facade) {
+ this.facade = facade;
+ }
+
public String getZone() {
return zone;
}
@@ -86,8 +85,21 @@
this.list = list;
}
- @Action(results= {@Result(type="stream", params={"contentType", "application/zip", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
+ public String getSource() {
+ 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() {
+ IndicatorRequest request = requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ addResultType(IndicatorRequest.ResultType.GRAPH).
+ addSpecies(list).
+ toCommunityIndicatorRequest();
+ result = getService().getFileResult(request);
return SUCCESS;
}
@@ -96,21 +108,26 @@
}
public InputStream getInputStream() {
- WebService webService = ServiceFactory.getWebService();
-
- Locale locale = getLocale();
-
- InputStream input = null;
- try {
- File mapImage = webService.getChartData(zone, null, indicator, list, locale);
- input = new FileInputStream(mapImage);
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't get file data", ex);
- }
- throw new CoserWebException("Can't get map file", ex);
- }
-
+ InputStream input = result.getInputStream();
return input;
}
+
+// public InputStream getInputStream() {
+// WebService webService = ServiceFactory.getWebService();
+//
+// Locale locale = getLocale();
+//
+// InputStream input = null;
+// try {
+// File mapImage = webService.getChartData(zone, null, indicator, list, locale);
+// input = new FileInputStream(mapImage);
+// } catch (Exception ex) {
+// if (log.isErrorEnabled()) {
+// log.error("Can't get file data", ex);
+// }
+// throw new CoserWebException("Can't get map file", ex);
+// }
+//
+// return input;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,20 +22,28 @@
package fr.ifremer.coser.web.actions.com;
+import fr.ifremer.coser.result.request.CommunityIndicatorRequest;
import fr.ifremer.coser.web.actions.common.CommonIndicator;
/**
* Action index, recupere la liste des indicateurs.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class IndicatorAction extends CommonIndicator {
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
+ @Override
+ protected CommunityIndicatorRequest createRequest() {
+ return requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ toCommunityIndicatorRequest();
+ }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,20 +22,27 @@
package fr.ifremer.coser.web.actions.com;
+import fr.ifremer.coser.result.CoserRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
* Affiche la liste des sous zones (zone).
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class ZoneAction extends CommonZone {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
+ @Override
+ protected CoserRequest createRequest() {
+ return requestBuilder().
+ addFacade(facade).
+ toCommunityIndicatorRequest();
+ }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -24,19 +24,14 @@
import java.util.Map;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-
/**
* Facade list action.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public abstract class CommonFacade extends CoserAction {
@@ -52,15 +47,22 @@
@Override
public String execute() {
- WebService webService = ServiceFactory.getWebService();
- try {
- // renvoi la liste des facadeid et leur label associé
- facades = webService.getFacades();
-
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get facades", ex);
- }
-
+ facades = getService().getFacades();
return SUCCESS;
}
+
+// @Override
+// public String execute() {
+//
+// WebService webService = ServiceFactory.getWebService();
+// try {
+// // renvoi la liste des facadeid et leur label associé
+// facades = webService.getFacades();
+//
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get facades", ex);
+// }
+//
+// return SUCCESS;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,26 +22,21 @@
package fr.ifremer.coser.web.actions.common;
-import java.util.Locale;
-import java.util.Map;
-
+import fr.ifremer.coser.result.request.IndicatorRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
+import java.util.Map;
/**
* Recupere la liste des indicateurs à partir d'une zone et d'une espece (peut
* être null dans le cas des communautés).
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public abstract class CommonIndicator extends CoserAction {
@@ -55,11 +50,15 @@
protected String zone;
protected String species;
-
+
protected String zonePicture;
protected Map<String, String> indicators;
+ protected IndicatorRequest request;
+
+ protected abstract IndicatorRequest createRequest();
+
public String getFacade() {
return facade;
}
@@ -87,42 +86,21 @@
public Map<String, String> getIndicators() {
return indicators;
}
-
+
public String getZonePicture() {
return zonePicture;
}
public String getFacadeDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getFacades().get(facade);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get facade display name", ex);
- }
- return displayName;
+ return getService().getFacadeDisplayName(facade);
}
-
+
public String getZoneDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getZoneForFacade(facade, false, false).get(zone);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone display name", ex);
- }
- return displayName;
+ return getService().getZoneDisplayName(request);
}
-
+
public String getSpeciesDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getSpecies(zone, false).get(species);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get species display name", ex);
- }
- return displayName;
+ return getService().getSpeciesDisplayName(request);
}
@Override
@@ -132,18 +110,65 @@
log.info(String.format("Looking for indicator for zone %s and species %s", zone, species));
}
- WebService webService = ServiceFactory.getWebService();
+ request = createRequest();
- Locale locale = getLocale();
+ indicators = getService().getAvailableIndicators(request);
+ zonePicture = getService().getZonePictures().get(zone);
- try {
- indicators = webService.getIndicators(zone, species, locale);
-
- zonePicture = webService.getZonePictures().get(zone);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get indicators", ex);
- }
-
return SUCCESS;
}
+
+// public String getFacadeDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getFacades().get(facade);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get facade display name", ex);
+// }
+// return displayName;
+// }
+//
+// public String getZoneDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getZoneForFacade(facade, false, false).get(zone);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone display name", ex);
+// }
+// return displayName;
+// }
+//
+// public String getSpeciesDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getSpecies(zone, false).get(species);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get species display name", ex);
+// }
+// return displayName;
+// }
+// @Override
+// public String execute() {
+//
+// if (log.isInfoEnabled()) {
+// log.info(String.format("Looking for indicator for zone %s and species %s", zone, species));
+// }
+//
+// WebService webService = ServiceFactory.getWebService();
+//
+// Locale locale = getLocale();
+//
+// try {
+// indicators = webService.getIndicators(zone, species, locale);
+//
+// zonePicture = webService.getZonePictures().get(zone);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get indicators", ex);
+// }
+//
+// return SUCCESS;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,23 +22,19 @@
package fr.ifremer.coser.web.actions.common;
-import java.util.Locale;
+import fr.ifremer.coser.result.CoserRequest;
+
import java.util.Map;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-
/**
* Affiche la liste des sous zones (zone) et leurs liste des cartes
* et commentaires associés.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public abstract class CommonZone extends CoserAction {
@@ -53,6 +49,8 @@
protected Map<String, String> zonesMetaInfo;
+ protected abstract CoserRequest createRequest();
+
public String getFacade() {
return facade;
}
@@ -74,32 +72,47 @@
}
public String getFacadeDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getFacades().get(facade);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get species display name", ex);
- }
- return displayName;
+ return getService().getFacadeDisplayName(facade);
}
@Override
public String execute() {
- WebService webService = ServiceFactory.getWebService();
+ CoserRequest request = createRequest();
+ zones = getService().getAvailableZones(request);
+ zonesPictures = getService().getZonePictures();
+ zonesMetaInfo = getService().getZoneMetaInfo(getLocale());
- Locale locale = getLocale();
-
- try {
- // renvoi la liste des id subzone-survey et leurs label associé
- zones = webService.getZoneForFacade(facade, false, false);
- zonesPictures = webService.getZonePictures();
- zonesMetaInfo = webService.getZoneMetaInfo(locale);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone map", ex);
- }
-
return SUCCESS;
}
+
+// public String getFacadeDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getFacades().get(facade);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get species display name", ex);
+// }
+// return displayName;
+// }
+//
+// @Override
+// public String execute() {
+//
+// WebService webService = ServiceFactory.getWebService();
+//
+// Locale locale = getLocale();
+//
+// try {
+// // renvoi la liste des id subzone-survey et leurs label associé
+// zones = webService.getZoneForFacade(facade, false, false);
+// zonesPictures = webService.getZonePictures();
+// zonesMetaInfo = webService.getZoneMetaInfo(locale);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone map", ex);
+// }
+//
+// return SUCCESS;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -1,9 +1,9 @@
/*
* #%L
- * $Id: CommonFacade.java 519 2011-01-17 17:03:28Z chatellier $
- * $HeadURL: svn+ssh://chatellier@labs.libre-entreprise.org/svnroot/coser/trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java $
+ * $Id$
+ * $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -23,20 +23,20 @@
package fr.ifremer.coser.web.actions.common;
import com.opensymphony.xwork2.ActionSupport;
-
+import fr.ifremer.coser.result.request.CoserRequestBuilder;
import fr.ifremer.coser.web.CoserWebConfig;
-import fr.ifremer.coser.web.ServiceFactory;
+import fr.ifremer.coser.web.ServiceHelper;
/**
* Toutes les actions doivent étendre celle ci. Contient le code commun
* récurent, et notamment les actions utilisé par le layout et devant
* être presentes sur toutes les pages.
- *
+ *
* @author chatellier
- * @version $Revision: 519 $
- *
- * Last update : $Date: 2011-01-17 18:03:28 +0100 (lun. 17 janv. 2011) $
- * By : $Author: chatellier $
+ * @version $Revision$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public abstract class CoserAction extends ActionSupport {
@@ -44,35 +44,61 @@
private static final long serialVersionUID = 311574866032741326L;
/**
+ * To access business layer.
+ *
+ * @since 1.5
+ */
+ protected transient ServiceHelper service;
+
+ /**
* Recupere l'email dans la configuration.
- *
+ *
* @return admin email
*/
public String getAdminEmail() {
- CoserWebConfig config = ServiceFactory.getCoserConfig();
+ CoserWebConfig config = getService().getConfig();
String email = config.getAdminEmail();
return email;
}
-
+
/**
* Recupere l'email dans la configuration.
- *
+ *
* @return admin email
*/
public String getApplicationVersion() {
- CoserWebConfig config = ServiceFactory.getCoserConfig();
+ CoserWebConfig config = getService().getConfig();
String email = config.getApplicationVersion();
return email;
}
/**
* Get analytics id from configuration.
- *
+ *
* @return analytics id
*/
public String getAnalyticsId() {
- CoserWebConfig config = ServiceFactory.getCoserConfig();
+ CoserWebConfig config = getService().getConfig();
String id = config.getAnalyticsId();
return id;
}
+
+ /**
+ * @return a new request builder.
+ * @since 1.5
+ */
+ protected CoserRequestBuilder requestBuilder() {
+ return new CoserRequestBuilder(getLocale());
+ }
+
+ /**
+ * @return service helper for this action
+ * @since 1.5
+ */
+ protected ServiceHelper getService() {
+ if (service == null) {
+ service = new ServiceHelper(this);
+ }
+ return service;
+ }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/FacadeAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/FacadeAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/FacadeAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -26,12 +26,12 @@
/**
* Action index, affiche la liste des facades majeures.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class FacadeAction extends CommonFacade {
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/FacadeAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,20 +22,17 @@
package fr.ifremer.coser.web.actions.map;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
+import fr.ifremer.coser.result.request.MapRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
/**
* Action index, recupere la liste des resultats.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class MapAction extends CoserAction {
@@ -48,6 +45,8 @@
protected String species;
+ protected MapRequest request;
+
public void setFacade(String facade) {
this.facade = facade;
}
@@ -73,35 +72,58 @@
}
public String getFacadeDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getFacades().get(facade);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get species display name", ex);
- }
- return displayName;
+ return getService().getFacadeDisplayName(facade);
}
public String getZoneDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getZoneForFacade(facade, false, true).get(zone);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone display name", ex);
- }
- return displayName;
+ return getService().getZoneDisplayName(request);
}
public String getSpeciesDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getSpecies(zone, true).get(species);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get species display name", ex);
- }
- return displayName;
+ return getService().getSpeciesDisplayName(request);
}
+
+ @Override
+ public String execute() throws Exception {
+
+ request = requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ toMapRequest();
+ return SUCCESS;
+ }
+
+ // public String getFacadeDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getFacades().get(facade);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get species display name", ex);
+// }
+// return displayName;
+// }
+//
+// public String getZoneDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getZoneForFacade(facade, false, true).get(zone);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone display name", ex);
+// }
+// return displayName;
+// }
+//
+// public String getSpeciesDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getSpecies(zone, true).get(species);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get species display name", ex);
+// }
+// return displayName;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,38 +22,45 @@
package fr.ifremer.coser.web.actions.map;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.request.MapRequest;
+import fr.ifremer.coser.web.actions.common.CoserAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import java.io.InputStream;
/**
* Appelé par le navigateur pour récuperer le contenu de l'image.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class MapDataAction extends CoserAction {
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(MapDataAction.class);
+
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
+ protected String facade;
+
protected String zone;
protected String species;
+ protected FileResult result;
+
+ public void setFacade(String facade) {
+ this.facade = facade;
+ }
+
public String getZone() {
return zone;
}
@@ -65,30 +72,48 @@
public String getSpecies() {
return species;
}
-
+
public void setSpecies(String species) {
this.species = species;
}
-
- @Action(results= {@Result(type="stream", params={"contentType", "image/png", "inputName", "inputStream"})})
+
+ public String getSource() {
+ 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() {
+ // work with null species (get Repartition-stations map)
+ MapRequest request = requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species == null ? MapRequest.NULL_SPECIES : species).
+ toMapRequest();
+
+ if (log.isInfoEnabled()) {
+ log.info("Looking for map of species: " + request.getSpecies());
+ }
+ result = getService().getFileResult(request);
return SUCCESS;
}
-
+
public InputStream getInputStream() {
- WebService webService = ServiceFactory.getWebService();
-
- InputStream input = null;
- try {
- // work with null species (get Repartition-stations map)
- File mapImage = webService.getMapFile(zone, species);
- input = new FileInputStream(mapImage);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get map file", ex);
- } catch (FileNotFoundException ex) {
- throw new CoserWebException("Can't get map file", ex);
- }
-
+ InputStream input = result.getInputStream();
return input;
}
+
+// InputStream input = null;
+// try {
+// // work with null species (get Repartition-stations map)
+// File mapImage = webService.getMapFile(zone, species);
+// input = new FileInputStream(mapImage);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get map file", ex);
+// } catch (FileNotFoundException ex) {
+// throw new CoserWebException("Can't get map file", ex);
+// }
+//
+// return input;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,25 +22,21 @@
package fr.ifremer.coser.web.actions.map;
-import java.util.Map;
-
+import fr.ifremer.coser.result.request.MapRequest;
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import java.util.Map;
/**
* Recupere la liste des especes correspondant a une campagne.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class SpeciesAction extends CoserAction {
@@ -55,14 +51,16 @@
protected Map<String, String> species;
- public void setFacade(String facade) {
- this.facade = facade;
- }
+ protected MapRequest request;
public String getFacade() {
return facade;
}
+ public void setFacade(String facade) {
+ this.facade = facade;
+ }
+
public String getZone() {
return zone;
}
@@ -76,46 +74,76 @@
}
public String getFacadeDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getFacades().get(facade);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get species display name", ex);
- }
- return displayName;
+ return getService().getFacadeDisplayName(facade);
}
public String getZoneDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getZoneForFacade(facade, false, true).get(zone);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone display name", ex);
- }
- return displayName;
+ return getService().getZoneDisplayName(request);
}
@Override
public String execute() {
+ request = requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ toMapRequest();
+
if (log.isInfoEnabled()) {
log.info("Looking for species for zone " + zone);
}
- WebService webService = ServiceFactory.getWebService();
+ species = getService().getAvailableSpecies(request);
- try {
- species = webService.getSpecies(zone, true);
-
- if (log.isDebugEnabled()) {
- log.debug("Species are : " + species);
- }
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone species", ex);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Species are : " + species);
}
return SUCCESS;
}
+
+// public String getFacadeDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getFacades().get(facade);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get species display name", ex);
+// }
+// return displayName;
+// }
+//
+// public String getZoneDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getZoneForFacade(facade, false, true).get(zone);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone display name", ex);
+// }
+// return displayName;
+// }
+//
+// @Override
+// public String execute() {
+//
+// if (log.isInfoEnabled()) {
+// log.info("Looking for species for zone " + zone);
+// }
+//
+// WebService webService = ServiceFactory.getWebService();
+//
+// try {
+// species = webService.getSpecies(zone, true);
+//
+// if (log.isDebugEnabled()) {
+// log.debug("Species are : " + species);
+// }
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone species", ex);
+// }
+//
+// return SUCCESS;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,22 +22,17 @@
package fr.ifremer.coser.web.actions.map;
-import java.util.Locale;
-
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
+import fr.ifremer.coser.result.request.MapRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
* Affiche la liste des sous zones (zone).
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class ZoneAction extends CommonZone {
@@ -45,21 +40,26 @@
private static final long serialVersionUID = 3385467755357775199L;
@Override
- public String execute() {
+ protected MapRequest createRequest() {
+ return requestBuilder().addFacade(facade).toMapRequest();
+ }
- WebService webService = ServiceFactory.getWebService();
-
- Locale locale = getLocale();
-
- try {
- // renvoi la liste des id subzone-survey et leurs label associé
- zones = webService.getZoneForFacade(facade, false, true);
- zonesPictures = webService.getZonePictures();
- zonesMetaInfo = webService.getZoneMetaInfo(locale);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone map", ex);
- }
-
- return SUCCESS;
- }
+// @Override
+// public String execute() {
+//
+// WebService webService = ServiceFactory.getWebService();
+//
+// Locale locale = getLocale();
+//
+// try {
+// // renvoi la liste des id subzone-survey et leurs label associé
+// zones = webService.getZoneForFacade(facade, false, true);
+// zonesPictures = webService.getZonePictures();
+// zonesMetaInfo = webService.getZoneMetaInfo(locale);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone map", ex);
+// }
+//
+// return SUCCESS;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/FacadeAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/FacadeAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/FacadeAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -26,12 +26,12 @@
/**
* Action index, affiche la liste des facades majeures.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class FacadeAction extends CommonFacade {
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/FacadeAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,24 +22,19 @@
package fr.ifremer.coser.web.actions.pop;
-import java.util.Locale;
-
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
+import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
/**
* Affiche le graphique demandé.
- *
+ * <p/>
* Parametre : zone, species, indicator.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class GraphAction extends CoserAction {
@@ -49,11 +44,13 @@
protected String facade;
protected String zone;
-
+
protected String species;
-
+
protected String indicator;
+ protected PopulationIndicatorRequest request;
+
public String getFacade() {
return facade;
}
@@ -87,54 +84,77 @@
}
public String getFacadeDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getFacades().get(facade);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get facade display name", ex);
- }
- return displayName;
+ return getService().getFacadeDisplayName(facade);
}
public String getZoneDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getZoneForFacade(facade, false, false).get(zone);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone display name", ex);
- }
- return displayName;
+ return getService().getZoneDisplayName(request);
}
-
+
public String getSpeciesDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getSpecies(zone, false).get(species);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get species display name", ex);
- }
- return displayName;
+ return getService().getSpeciesDisplayName(request);
}
-
+
public String getIndicatorDisplayName() {
-
- Locale locale = getLocale();
-
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getIndicators(zone, species, locale).get(indicator);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get species display name", ex);
- }
- return displayName;
+ return getService().getIndicatorDisplayName(request);
}
@Override
public String execute() {
+
+ request = requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ addIndicator(indicator).
+ toPopulationIndicatorRequest();
return SUCCESS;
}
+
+// public String getFacadeDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getFacades().get(facade);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get facade display name", ex);
+// }
+// return displayName;
+// }
+//
+// public String getZoneDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getZoneForFacade(facade, false, false).get(zone);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone display name", ex);
+// }
+// return displayName;
+// }
+//
+// public String getSpeciesDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getSpecies(zone, false).get(species);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get species display name", ex);
+// }
+// return displayName;
+// }
+//
+// public String getIndicatorDisplayName() {
+//
+// Locale locale = getLocale();
+//
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getIndicators(zone, species, locale).get(indicator);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get species display name", ex);
+// }
+// return displayName;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,45 +22,47 @@
package fr.ifremer.coser.web.actions.pop;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.util.Locale;
-
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import java.io.InputStream;
/**
* Affiche le graphique demandé.
- *
+ * <p/>
* Parametre : zone, species, indicator.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class GraphDataAction extends CoserAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
+ protected String facade;
+
protected String zone;
-
+
protected String species;
-
+
protected String indicator;
protected String chartUrl;
+ protected FileResult result;
+
+ public void setFacade(String facade) {
+ this.facade = facade;
+ }
+
public String getZone() {
return zone;
}
@@ -84,27 +86,45 @@
public void setIndicator(String indicator) {
this.indicator = indicator;
}
-
- @Action(results= {@Result(type="stream", params={"contentType", "image/png", "inputName", "inputStream"})})
+
+ public String getSource() {
+ 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() {
+ PopulationIndicatorRequest request = requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ addIndicator(indicator).
+ addResultType(IndicatorRequest.ResultType.DATA).
+ toPopulationIndicatorRequest();
+ result = getService().getFileResult(request);
return SUCCESS;
}
-
+
public InputStream getInputStream() {
- WebService webService = ServiceFactory.getWebService();
-
- Locale locale = getLocale();
-
- InputStream input = null;
- try {
- File mapImage = webService.getChart(zone, species, indicator, null, locale);
- input = new FileInputStream(mapImage);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get map file", ex);
- } catch (FileNotFoundException ex) {
- throw new CoserWebException("Can't get map file", ex);
- }
-
+ InputStream input = result.getInputStream();
return input;
}
+
+// public InputStream getInputStream() {
+// WebService webService = ServiceFactory.getWebService();
+//
+// Locale locale = getLocale();
+//
+// InputStream input = null;
+// try {
+// File mapImage = webService.getChart(zone, species, indicator, null, locale);
+// input = new FileInputStream(mapImage);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get map file", ex);
+// } catch (FileNotFoundException ex) {
+// throw new CoserWebException("Can't get map file", ex);
+// }
+//
+// return input;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,38 +22,32 @@
package fr.ifremer.coser.web.actions.pop;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.Locale;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import java.io.InputStream;
/**
* Télécharge les données qui ont servi a généré le graph au format CSV.
- *
+ * <p/>
* Parametre : zone, species, indicator.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class GraphDownloadAction extends CoserAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
- private static final Log log = LogFactory.getLog(GraphDownloadAction.class);
+ protected String facade;
protected String zone;
@@ -61,6 +55,12 @@
protected String indicator;
+ protected FileResult result;
+
+ public void setFacade(String facade) {
+ this.facade = facade;
+ }
+
public String getZone() {
return zone;
}
@@ -85,8 +85,21 @@
this.species = species;
}
- @Action(results= {@Result(type="stream", params={"contentType", "text/csv", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
+ public String getSource() {
+ 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() {
+ PopulationIndicatorRequest request = requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ addIndicator(indicator).
+ addResultType( IndicatorRequest.ResultType.GRAPH).
+ toPopulationIndicatorRequest();
+ result = getService().getFileResult(request);
return SUCCESS;
}
@@ -95,21 +108,26 @@
}
public InputStream getInputStream() {
- WebService webService = ServiceFactory.getWebService();
-
- Locale locale = getLocale();
-
- InputStream input = null;
- try {
- File mapImage = webService.getChartData(zone, species, indicator, null, locale);
- input = new FileInputStream(mapImage);
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't get file data", ex);
- }
- throw new CoserWebException("Can't get map file", ex);
- }
-
+ InputStream input = result.getInputStream();
return input;
}
+
+// public InputStream getInputStream() {
+// WebService webService = ServiceFactory.getWebService();
+//
+// Locale locale = getLocale();
+//
+// InputStream input = null;
+// try {
+// File mapImage = webService.getChartData(zone, species, indicator, null, locale);
+// input = new FileInputStream(mapImage);
+// } catch (Exception ex) {
+// if (log.isErrorEnabled()) {
+// log.error("Can't get file data", ex);
+// }
+// throw new CoserWebException("Can't get map file", ex);
+// }
+//
+// return input;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,20 +22,29 @@
package fr.ifremer.coser.web.actions.pop;
+import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
import fr.ifremer.coser.web.actions.common.CommonIndicator;
/**
* Action index, recupere la liste des resultats.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class IndicatorAction extends CommonIndicator {
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
+ @Override
+ protected PopulationIndicatorRequest createRequest() {
+ return requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ toPopulationIndicatorRequest();
+ }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,25 +22,21 @@
package fr.ifremer.coser.web.actions.pop;
-import java.util.Map;
-
+import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import java.util.Map;
/**
* Action index, recupere la liste des resultats.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class SpeciesAction extends CoserAction {
@@ -57,6 +53,8 @@
protected String zonePicture;
+ protected PopulationIndicatorRequest request;
+
public String getFacade() {
return facade;
}
@@ -82,25 +80,11 @@
}
public String getFacadeDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getFacades().get(facade);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get facade display name", ex);
- }
- return displayName;
+ return getService().getFacadeDisplayName(facade);
}
public String getZoneDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getZoneForFacade(facade, false, false).get(zone);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone display name", ex);
- }
- return displayName;
+ return getService().getZoneDisplayName(request);
}
@Override
@@ -110,20 +94,64 @@
log.info("Looking for species for zone " + zone);
}
- WebService webService = ServiceFactory.getWebService();
+ request = requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ toPopulationIndicatorRequest();
- try {
- species = webService.getSpecies(zone, false);
+ species = getService().getAvailableSpecies(request);
+ if (log.isDebugEnabled()) {
+ log.debug("Species are : " + species);
+ }
- zonePicture = webService.getZonePictures().get(zone);
+ zonePicture = getService().getZonePictures().get(zone);
- if (log.isDebugEnabled()) {
- log.debug("Species are : " + species);
- }
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone species", ex);
- }
-
return SUCCESS;
}
+
+// public String getFacadeDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getFacades().get(facade);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get facade display name", ex);
+// }
+// return displayName;
+// }
+//
+// public String getZoneDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getZoneForFacade(facade, false, false).get(zone);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone display name", ex);
+// }
+// return displayName;
+// }
+//
+// @Override
+// public String execute() {
+//
+// if (log.isInfoEnabled()) {
+// log.info("Looking for species for zone " + zone);
+// }
+//
+// WebService webService = ServiceFactory.getWebService();
+//
+// try {
+// species = webService.getSpecies(zone, false);
+//
+// zonePicture = webService.getZonePictures().get(zone);
+//
+// if (log.isDebugEnabled()) {
+// log.debug("Species are : " + species);
+// }
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone species", ex);
+// }
+//
+// return SUCCESS;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,19 +22,27 @@
package fr.ifremer.coser.web.actions.pop;
+import fr.ifremer.coser.result.CoserRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
* Affiche la liste des sous zones (zone).
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class ZoneAction extends CommonZone {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
+
+ @Override
+ protected CoserRequest createRequest() {
+ return requestBuilder().
+ addFacade(facade).
+ toPopulationIndicatorRequest();
+ }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric, Chemit Tony
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -22,51 +22,42 @@
package fr.ifremer.coser.web.actions.search;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.util.DataType;
+import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.ServletRequestAware;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.util.DataType;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
-import fr.ifremer.coser.web.actions.common.CoserAction;
+import javax.servlet.http.HttpServletRequest;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
/**
* Affiche le formulaire de recherche pour extraction d'un zip contenant
* les sources des projets choisit, et un pdf avec les graphiques et les données
* des graphiques.
- *
+ *
* @author echatellier
* @since 1.4
*/
@InterceptorRefs({
- @InterceptorRef("defaultStack"),
- @InterceptorRef(value="execAndWait",
- params={"excludeMethods","execute,quality"})
-})
+ @InterceptorRef("defaultStack"),
+ @InterceptorRef(value = "execAndWait",
+ params = {"excludeMethods", "execute,quality"})
+ })
public class ExtractAction extends CoserAction implements ServletRequestAware {
/** serialVersionUID. */
private static final long serialVersionUID = 8497086194191374797L;
- private static final Log log = LogFactory.getLog(ExtractAction.class);
+ public static final String DOWNLOAD = "download";
protected Map<String, String> zones;
@@ -90,50 +81,10 @@
protected boolean accepted;
- protected HttpServletRequest request;
+ protected transient HttpServletRequest request;
- /**
- * Pour le hack du execute and wait.
- * On met des choses dans la session pour pouvoir les récupérer.
- */
- @Override
- public void setServletRequest(HttpServletRequest request) {
- this.request = request;
- }
+ protected FileResult resultFile;
- @Override
- public String execute() {
-
- String result;
-
- if (StringUtils.isNotBlank(submitAction)) {
- result = SUCCESS;
- } else {
- result = INPUT;
- Locale locale = getLocale();
- WebService webService = ServiceFactory.getWebService();
-
- try {
- // renvoi la liste des id subzone-survey et leurs label associé
- zones = webService.getZoneForFacade(null, false, false);
- if (CollectionUtils.isNotEmpty(selectZones)) {
- species = webService.getSpecies(selectZones, false);
-
- if (selectTypes != null && selectTypes.contains(DataType.COMMUNITY)) {
- comIndicators = webService.getIndicators(selectZones, DataType.COMMUNITY, locale);
- }
- if (selectTypes != null && selectTypes.contains(DataType.POPULATION)) {
- popIndicators = webService.getIndicators(selectZones, DataType.POPULATION, locale);
- }
- }
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone map", ex);
- }
- }
-
- return result;
- }
-
public Map<String, String> getZones() {
return zones;
}
@@ -198,22 +149,58 @@
this.accepted = accepted;
}
- @Action(value="extract-quality",
- results= {
- @Result(location="/WEB-INF/content/search/extract-success.jsp"),
- @Result(name="download", type="redirect", params={
- "location", "${location}"})})
+ /**
+ * Pour le hack du execute and wait.
+ * On met des choses dans la session pour pouvoir les récupérer.
+ */
+ @Override
+ public void setServletRequest(HttpServletRequest request) {
+ this.request = request;
+ }
+
+ @Override
+ public String execute() {
+
+ String result;
+
+ if (StringUtils.isNotBlank(submitAction)) {
+ result = SUCCESS;
+ } else {
+ result = INPUT;
+
+ // renvoi la liste des id subzone-survey et leurs label associé
+ zones = getService().getZoneForFacade();
+ if (CollectionUtils.isNotEmpty(selectZones)) {
+ species = getService().getSpecies(selectZones);
+
+ if (selectTypes != null && selectTypes.contains(DataType.COMMUNITY)) {
+ comIndicators = getService().getIndicators(selectZones, DataType.COMMUNITY);
+ }
+ if (selectTypes != null && selectTypes.contains(DataType.POPULATION)) {
+ popIndicators = getService().getIndicators(selectZones, DataType.POPULATION);
+ }
+ }
+ }
+
+ return result;
+ }
+
+ @Action(value = "extract-quality",
+ results = {
+ @Result(location = "/WEB-INF/content/search/extract-success.jsp"),
+ @Result(name = DOWNLOAD, type = "redirect", params = {
+ "location", "${location}"})})
public String quality() {
String result;
if (!accepted) {
addFieldError("accepted", getText("message.quality.notaccepted"));
- result = "success";
+ result = SUCCESS;
} else {
-
+
// 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", getLocale());
- result = "download";
+ result = DOWNLOAD;
}
return result;
}
@@ -221,7 +208,7 @@
/**
* C'est super dur des faire une redirection sur une url.
* Construction d'une url complete.
- *
+ *
* @return l'url de redirection
*/
public String getLocation() {
@@ -254,42 +241,95 @@
return url;
}
- protected File zipFile;
+ @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() {
- @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}\""})})
- public String download() {
- try {
- Locale locale = (Locale)request.getSession().getAttribute("locale");
- WebService webService = ServiceFactory.getWebService();
-
- zipFile = webService.extractData(selectZones, selectTypes, selectSpecies,
- selectComIndicators, selectPopIndicators, locale);
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't extract data", ex);
- }
- throw new CoserWebException("Can't extract data", ex);
- }
- return "success";
+ Locale locale = (Locale) request.getSession().getAttribute("locale");
+
+ resultFile = getService().extractData(selectZones,
+ selectTypes,
+ selectSpecies,
+ selectComIndicators,
+ selectPopIndicators,
+ locale);
+
+ return SUCCESS;
}
public InputStream getInputStream() {
- InputStream is = null;
- try {
- is = new FileInputStream(zipFile);
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't extract data", ex);
- }
- throw new CoserWebException("Can't extract data", ex);
- }
+ InputStream is = resultFile.getInputStream();
return is;
}
public String getFilename() {
return "Indicateurs_Ifremer.zip";
}
+
+// protected File zipFile;
+//
+// @Override
+// public String execute() {
+//
+// String result;
+//
+// if (StringUtils.isNotBlank(submitAction)) {
+// result = SUCCESS;
+// } else {
+// result = INPUT;
+// Locale locale = getLocale();
+// WebService webService = ServiceFactory.getWebService();
+//
+// try {
+// // renvoi la liste des id subzone-survey et leurs label associé
+// zones = webService.getZoneForFacade(null, false, false);
+// if (CollectionUtils.isNotEmpty(selectZones)) {
+// species = webService.getSpecies(selectZones, false);
+//
+// if (selectTypes != null && selectTypes.contains(DataType.COMMUNITY)) {
+// comIndicators = webService.getIndicators(selectZones, DataType.COMMUNITY, locale);
+// }
+// if (selectTypes != null && selectTypes.contains(DataType.POPULATION)) {
+// popIndicators = webService.getIndicators(selectZones, DataType.POPULATION, locale);
+// }
+// }
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone map", ex);
+// }
+// }
+//
+// return result;
+// }
+//
+// public String download() {
+// try {
+// Locale locale = (Locale)request.getSession().getAttribute("locale");
+// WebService webService = ServiceFactory.getWebService();
+//
+// zipFile = webService.extractData(selectZones, selectTypes, selectSpecies,
+// selectComIndicators, selectPopIndicators, locale);
+// } catch (Exception ex) {
+// if (log.isErrorEnabled()) {
+// log.error("Can't extract data", ex);
+// }
+// throw new CoserWebException("Can't extract data", ex);
+// }
+// return "success";
+// }
+//
+// public InputStream getInputStream() {
+// InputStream is = null;
+// try {
+// is = new FileInputStream(zipFile);
+// } catch (Exception ex) {
+// if (log.isErrorEnabled()) {
+// log.error("Can't extract data", ex);
+// }
+// throw new CoserWebException("Can't extract data", ex);
+// }
+// return is;
+//}
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/FacadeAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/FacadeAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/FacadeAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -26,12 +26,12 @@
/**
* Action index, affiche la liste des facades majeures.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class FacadeAction extends CommonFacade {
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/FacadeAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -22,20 +22,19 @@
package fr.ifremer.coser.web.actions.source;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
+import fr.ifremer.coser.result.request.RawDataRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
+import java.util.Map;
+
/**
* Affiche les liens de téléchargement du zip pour le projet choisit.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class SourceAction extends CoserAction {
@@ -48,6 +47,8 @@
protected String zonePicture;
+ protected RawDataRequest request;
+
public String getFacade() {
return facade;
}
@@ -69,38 +70,60 @@
}
public String getFacadeDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getFacades().get(facade);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get facade display name", ex);
- }
- return displayName;
+ return getService().getFacadeDisplayName(facade);
}
public String getZoneDisplayName() {
- WebService webService = ServiceFactory.getWebService();
- String displayName = null;
- try {
- displayName = webService.getZoneForFacade(facade, false, false).get(zone);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone display name", ex);
- }
- return displayName;
+ return getService().getZoneDisplayName(request);
}
@Override
public String execute() {
- WebService webService = ServiceFactory.getWebService();
-
- try {
- zonePicture = webService.getZonePictures().get(zone);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone picture", ex);
- }
-
+ request = requestBuilder().
+ addFacade(facade).
+ addZone(zone).
+ toRawDataRequest();
+ Map<String, String> zonePictures = getService().getZonePictures();
+ zonePicture = zonePictures.get(zone);
return SUCCESS;
}
+
+// public String getFacadeDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+//// displayName = webService.getFacades().get(facade);
+// displayName = webService.getZonesMap().getFacades().get(facade);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get facade display name", ex);
+// }
+// return displayName;
+// }
+//
+// public String getZoneDisplayName() {
+// WebService webService = ServiceFactory.getWebService();
+// String displayName = null;
+// try {
+// displayName = webService.getZoneForFacade(facade, false, false).get(zone);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone display name", ex);
+// }
+// return displayName;
+// }
+//
+// @Override
+// public String execute() {
+//
+// WebService webService = ServiceFactory.getWebService();
+//
+// try {
+//// zonePicture = webService.getZonePictures().get(zone);
+// zonePicture = webService.getZonesMap().getZonePictures().get(zone);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone picture", ex);
+// }
+//
+// return SUCCESS;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -22,38 +22,30 @@
package fr.ifremer.coser.web.actions.source;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.Locale;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import fr.ifremer.coser.result.FileResult;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
+import java.io.InputStream;
/**
* Force le téléchargement du zip.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class SourceDataAction extends SourceAction {
/** serialVersionUID. */
private static final long serialVersionUID = 3385467755357775199L;
- private static final Log log = LogFactory.getLog(SourceDataAction.class);
-
protected boolean accepted;
+ protected FileResult result;
+
public void setAccepted(boolean accepted) {
this.accepted = accepted;
}
@@ -67,8 +59,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", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
+ @Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "contentDisposition", "attachment; filename=\"${filename}\""})})
public String execute() {
+ super.execute();
+
+ result = getService().getFileResult(request);
return SUCCESS;
}
@@ -77,22 +73,26 @@
}
public InputStream getInputStream() {
- WebService webService = ServiceFactory.getWebService();
+ return result.getInputStream();
+ }
- Locale locale = getLocale();
-
- InputStream input = null;
- try {
-
- File sourceZip = webService.getSourceZip(zone, locale);
- input = new FileInputStream(sourceZip);
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't get file data", ex);
- }
- throw new CoserWebException("Can't get source zip file", ex);
- }
-
- return input;
- }
+// public InputStream getInputStream() {
+// WebService webService = ServiceFactory.getWebService();
+//
+// Locale locale = getLocale();
+//
+// InputStream input = null;
+// try {
+//
+// File sourceZip = webService.getSourceZip(zone, locale);
+// input = new FileInputStream(sourceZip);
+// } catch (Exception ex) {
+// if (log.isErrorEnabled()) {
+// log.error("Can't get file data", ex);
+// }
+// throw new CoserWebException("Can't get source zip file", ex);
+// }
+//
+// return input;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceQualityAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceQualityAction.java 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceQualityAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -24,12 +24,12 @@
/**
* Affiche l'avertissement qualité avant le téléchargement du zip.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class SourceQualityAction extends SourceAction {
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceQualityAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
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-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java 2014-03-07 20:41:45 UTC (rev 1133)
@@ -22,22 +22,17 @@
package fr.ifremer.coser.web.actions.source;
-import java.util.Locale;
-
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.web.CoserWebException;
-import fr.ifremer.coser.web.ServiceFactory;
+import fr.ifremer.coser.result.request.RawDataRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
* Affiche la liste des sous zones (zone).
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class ZoneAction extends CommonZone {
@@ -45,21 +40,28 @@
private static final long serialVersionUID = 3385467755357775199L;
@Override
- public String execute() {
+ protected RawDataRequest createRequest() {
+ return requestBuilder().
+ addFacade(facade).
+ toRawDataRequest();
+ }
- WebService webService = ServiceFactory.getWebService();
-
- Locale locale = getLocale();
-
- try {
- // renvoi la liste des id subzone-survey et leurs label associé
- zones = webService.getZoneForFacade(facade, true, false);
- zonesPictures = webService.getZonePictures();
- zonesMetaInfo = webService.getZoneMetaInfo(locale);
- } catch (CoserBusinessException ex) {
- throw new CoserWebException("Can't get zone map", ex);
- }
-
- return SUCCESS;
- }
+// @Override
+// public String execute() {
+//
+// WebService webService = ServiceFactory.getWebService();
+//
+// Locale locale = getLocale();
+//
+// try {
+// // renvoi la liste des id subzone-survey et leurs label associé
+// zones = webService.getZoneForFacade(facade, true, false);
+// zonesPictures = webService.getZonePictures();
+// zonesMetaInfo = webService.getZoneMetaInfo(locale);
+// } catch (CoserBusinessException ex) {
+// throw new CoserWebException("Can't get zone map", ex);
+// }
+//
+// return SUCCESS;
+// }
}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/resources/coserweb.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_en.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_es.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/resources/fr/ifremer/coser/web/package_fr.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/resources/i18n/coser-web_en_GB.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/resources/i18n/coser-web_fr_FR.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/resources/log4j.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/resources/struts.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/admin/index.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/admin/list-projects.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/admin/perform-login-input.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/com/facade.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp 2014-03-07 20:41:45 UTC (rev 1133)
@@ -73,12 +73,14 @@
</p>
<img src="<s:url action='graph-data'>
+ <s:param name="facade" value="%{facade}" />
<s:param name="zone" value="%{zone}" />
<s:param name="indicator" value="%{indicator}" />
<s:param name="list" value="%{list}" />
</s:url>" />
<p><s:a action="graph-download">
+ <s:param name="facade" value="%{facade}" />
<s:param name="zone" value="%{zone}" />
<s:param name="indicator" value="%{indicator}" />
<s:param name="list" value="%{list}" />
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/com/graph.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/com/indicator.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/com/zone.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/documents.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/index.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/map/facade.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/map/map.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/map/map.jsp 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/map/map.jsp 2014-03-07 20:41:45 UTC (rev 1133)
@@ -62,9 +62,10 @@
<h2><s:text name="message.map.title" /></h2>
<img src="<s:url action='map-data'>
+ <s:param name="facade" value="%{facade}" />
<s:param name="zone" value="%{zone}" />
<s:param name="species" value="%{species}" />
- </s:url>" style="float:right;margin-left:10px;" />
+ </s:url>" style="float:right;margin-left:10px;" width="230" height="230"/>
<h3><s:property value='facadeDisplayName' /> - <s:property value='zoneDisplayName' /> - <s:property value='speciesDisplayName' /></h3>
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/map/map.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/map/species.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/map/species.jsp 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/map/species.jsp 2014-03-07 20:41:45 UTC (rev 1133)
@@ -64,6 +64,7 @@
<h2><s:text name="message.map.title" /></h2>
<img src="<s:url action='map-data'>
+ <s:param name="facade" value="%{facade}" />
<s:param name="zone" value="%{zone}" />
</s:url>" style="float:right;margin-left:10px;" />
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/map/species.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/map/zone.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/pop/facade.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp 2014-03-07 20:41:45 UTC (rev 1133)
@@ -72,12 +72,14 @@
<h2><s:text name="message.pop.title" /></h2>
<img src="<s:url action='graph-data'>
+ <s:param name="facade" value="%{facade}" />
<s:param name="zone" value="%{zone}" />
<s:param name="species" value="%{species}" />
<s:param name="indicator" value="%{indicator}" />
</s:url>" />
<p><s:a action="graph-download">
+ <s:param name="facade" value="%{facade}" />
<s:param name="zone" value="%{zone}" />
<s:param name="species" value="%{species}" />
<s:param name="indicator" value="%{indicator}" />
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/pop/graph.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/pop/indicator.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/pop/species.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/pop/zone.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/quality.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-input.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-success.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/search/extract-wait.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/source/facade.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-data.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/source/source-quality.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/source/source.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/source/zone.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/survey.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/upload-result-success.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/content/upload-result.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/decorators/layout.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/decorators/sublayout.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/decorators.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/web.xml 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/webapp/WEB-INF/web.xml 2014-03-07 20:41:45 UTC (rev 1133)
@@ -68,4 +68,9 @@
<listener>
<listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
</listener>
+
+ <listener>
+ <description>Application listener</description>
+ <listener-class>fr.ifremer.coser.web.CoserApplicationListener</listener-class>
+ </listener>
</web-app>
Property changes on: trunk/coser-web/src/main/webapp/WEB-INF/web.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/favicon.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/bas_page.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/bas_page2.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/carte_accueil.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/contenu_haut.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/degrade.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/es.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/facadesmap.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/fond.jpg
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/fond_02.jpg
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/fond_contenu.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/footer.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/footer_02.jpg
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/fr.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/gb.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/haut_page.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/ico_accueil.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/ico_carte.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/logo.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/logoIfremer.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/logoSIH.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/puce_liste.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/puce_liste_18.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/stock_select_clear.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/stock_select_table.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/top_contenu.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/warper_page.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/worldsmall.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Ciem-4b-4c-E7d.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Ciem-4b-4c.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Ciem-4c-E7d.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Ciem-4c.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Ciem-4c4-E7d.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Ciem-4c4.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Ciem-7d.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Ciem-E7d.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Crustaflam.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_E-Corse.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Facades.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_GdG-Ciem-7.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_GdG-Ech.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_GdG-MC.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_GdL.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_MC-Ciem-7.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_MC-Ech.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Noursein.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Noursom.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/images/zones/C_Nurvil.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/js/coser.js
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/webapp/js/jquery-1.8.2.min.js
===================================================================
--- trunk/coser-web/src/main/webapp/js/jquery-1.8.2.min.js 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/coser-web/src/main/webapp/js/jquery-1.8.2.min.js 2014-03-07 20:41:45 UTC (rev 1133)
@@ -1,2 +1,2 @@
-/*! %%Ignore-License jQuery v1.8.2 jquery.com | jquery.org/license */
-(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d<e;d++)p.event.add(b,c,h[c][d])}g.data&&(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?(b.parentNode&&(b.outerHTML=a.outerHTML),p.support.html5Clone&&a.innerHTML&&!p.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):c==="input"&&bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bG(a){bv.test(a.type)&&(a.defaultChecked=a.checked)}function bY(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bW.length;while(e--){b=bW[e]+c;if(b in a)return b}return d}function bZ(a,b){return a=b||a,p.css(a,"display")==="none"||!p.contains(a.ownerDocument,a)}function b$(a,b){var c,d,e=[],f=0,g=a.length;for(;f<g;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,"olddisplay"),b?(!e[f]&&c.style.display==="none"&&(c.style.display=""),c.style.display===""&&bZ(c)&&(e[f]=p._data(c,"olddisplay",cc(c.nodeName)))):(d=bH(c,"display"),!e[f]&&d!=="none"&&p._data(c,"olddisplay",d))}for(f=0;f<g;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display==="none"||c.style.display==="")c.style.display=b?e[f]||"":"none"}return a}function b_(a,b,c){var d=bP.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function ca(a,b,c,d){var e=c===(d?"border":"content")?4:b==="width"?1:0,f=0;for(;e<4;e+=2)c==="margin"&&(f+=p.css(a,c+bV[e],!0)),d?(c==="content"&&(f-=parseFloat(bH(a,"padding"+bV[e]))||0),c!=="margin"&&(f-=parseFloat(bH(a,"border"+bV[e]+"Width"))||0)):(f+=parseFloat(bH(a,"padding"+bV[e]))||0,c!=="padding"&&(f+=parseFloat(bH(a,"border"+bV[e]+"Width"))||0));return f}function cb(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing&&p.css(a,"boxSizing")==="border-box";if(d<=0||d==null){d=bH(a,b);if(d<0||d==null)d=a.style[b];if(bQ.test(d))return d;e=f&&(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+ca(a,b,c||(f?"border":"content"),e)+"px"}function cc(a){if(bS[a])return bS[a];var b=p("<"+a+">").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write("<!doctype html><html><body>"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h<i;h++)d=g[h],f=/^\+/.test(d),f&&(d=d.substr(1)||"*"),e=a[d]=a[d]||[],e[f?"unshift":"push"](c)}}function cA(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cv;for(;j<k&&(l||!h);j++)h=i[j](c,d,e),typeof h=="string"&&(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cA(a,c,d,e,h,g)));return(l||!h)&&!g["*"]&&(h=cA(a,c,d,e,"*",g)),h}function cB(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((f[d]?a:e||(e={}))[d]=c[d]);e&&p.extend(!0,a,e)}function cC(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d&&(c[k[f]]=d[f]);while(j[0]==="*")j.shift(),e===b&&(e=a.mimeType||c.getResponseHeader("content-type"));if(e)for(f in i)if(i[f]&&i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+" "+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]&&j.unshift(g),d[g]}function cD(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter&&(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!=="*"){if(h!=="*"&&h!==e){c=i[h+" "+e]||i["* "+e];if(!c)for(d in i){f=d.split(" ");if(f[1]===e){c=i[h+" "+f[0]]||i["* "+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c&&a["throws"])b=c(b);else try{b=c(b)}catch(k){return{state:"parsererror",error:c?k:"No conversion from "+h+" to "+e}}}h=e}return{state:"success",data:b}}function cL(){try{return new a.XMLHttpRequest}catch(b){}}function cM(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cU(){return setTimeout(function(){cN=b},0),cN=p.now()}function cV(a,b){p.each(b,function(b,c){var d=(cT[b]||[]).concat(cT["*"]),e=0,f=d.length;for(;e<f;e++)if(d[e].call(a,b,c))return})}function cW(a,b,c){var d,e=0,f=0,g=cS.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cN||cU(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e<f;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d<1&&f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cN||cU(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c<d;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cX(k,j.opts.specialEasing);for(;e<g;e++){d=cS[e].call(j,a,k,j.opts);if(d)return d}return cV(j,k),p.isFunction(j.opts.start)&&j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cX(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cY(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType&&bZ(a);c.queue||(j=p._queueHooks(a,"fx"),j.unqueued==null&&(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,"fx").length||j.empty.fire()})})),a.nodeType===1&&("height"in b||"width"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,"display")==="inline"&&p.css(a,"float")==="none"&&(!p.support.inlineBlockNeedsLayout||cc(a.nodeName)==="inline"?m.display="inline-block":m.zoom=1)),c.overflow&&(m.overflow="hidden",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cP.exec(f)){delete b[d];if(f===(q?"hide":"show"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,"fxshow")||p._data(a,"fxshow",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,"fxshow",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d<g;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q&&(i.end=i.start,i.start=e==="width"||e==="height"?1:0))}}function cZ(a,b,c,d,e){return new cZ.prototype.init(a,b,c,d,e)}function c$(a,b){var c,d={height:a},e=0;b=b?1:0;for(;e<4;e+=2-b)c=bV[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function da(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,r=/\S/,s=/\s+/,t=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,u=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i<j;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k&&e&&(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d&&p.isArray(d)?d:[]):g=d&&p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b&&(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p&&(a.$=i),b&&a.jQuery===p&&(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0&&--p.readyWait>0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f<g;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f<g;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o&&!o.call(" ")?function(a){return a==null?"":o.call(a)}:function(a){return a==null?"":(a+"").replace(t,"")},makeArray:function(a,b){var c,d=b||[];return a!=null&&(c=p.type(a),a.length==null||c==="string"||c==="function"||c==="regexp"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if(typeof d=="number")for(;f<d;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f<g;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b&&typeof i=="number"&&(i>0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h<i;h++)e=c(a[h],h,d),e!=null&&(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null&&(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c=="string"&&(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d&&typeof d=="object"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b&&p.isFunction(e),j&&(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k<l;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState==="complete")setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener("DOMContentLoaded",D,!1),a.addEventListener("load",p.ready,!1);else{e.attachEvent("onreadystatechange",D),a.attachEvent("onload",p.ready);var c=!1;try{c=a.frameElement==null&&e.documentElement}catch(f){}c&&c.doScroll&&function g(){if(!p.isReady){try{c.doScroll("left")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){E["[object "+b+"]"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a=="string"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once&&[],k=function(b){c=a.memory&&b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i&&h<g;h++)if(i[h].apply(b[0],b[1])===!1&&a.stopOnFalse){c=!1;break}e=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){var e=p.type(c);e==="function"&&(!a.unique||!l.has(c))?i.push(c):c&&c.length&&e!=="string"&&d(c)})})(arguments),e?g=i.length:c&&(f=b,k(c))}return this},remove:function(){return i&&p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))>-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b<d;b++)c[b]&&p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement("div");n.setAttribute("className","t"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="<div></div>",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e<f;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute("classid")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1&&!p._data(i,"parsedAttrs")){f=i.attributes;for(h=f.length;j<h;j++)g=f[j].name,g.indexOf("data-")||(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,"parsedAttrs",!0)}}return k}return typeof a=="object"?this.each(function(){p.data(this,a)}):(d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!",p.access(this,function(c){if(c===b)return k=this.triggerHandler("getData"+e,[d[0]]),k===b&&i&&(k=p.data(i,a),k=J(i,a,k)),k===b&&d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler("setData"+e,d),p.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length<d?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a==="fx"&&b[0]!=="inprogress"&&p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!="string"&&(c=a,a=b),a=a||"fx";while(h--)d=p._data(g[h],a+"queueHooks"),d&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\t\r\n]/g,P=/\r/g,Q=/^(?:button|input)$/i,R=/^(?:button|input|object|select|textarea)$/i,S=/^a(?:rea|)$/i,T=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,U=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{f=" "+e.className+" ";for(g=0,h=b.length;g<h;g++)f.indexOf(" "+b[g]+" ")<0&&(f+=b[g]+" ");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(s);for(h=0,i=this.length;h<i;h++){e=this[h];if(e.nodeType===1&&e.className){d=(" "+e.className+" ").replace(O," ");for(f=0,g=c.length;f<g;f++)while(d.indexOf(" "+c[f]+" ")>=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(O," ").indexOf(b)>=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c<d;c++){e=h[c];if(e.selected&&(p.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!p.nodeName(e.parentNode,"optgroup"))){b=p(e).val();if(i)return b;g.push(b)}}return i&&!g.length&&h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find("option").each(function(){this.selected=p.inArray(p(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g<d.length;g++)e=d[g],e&&(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,""),a.removeAttribute(U?e:c),f&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)&&a.parentNode)p.error("type property can't be changed");else if(!p.support.radioValue&&b==="radio"&&p.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}},value:{get:function(a,b){return L&&p.nodeName(a,"button")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L&&p.nodeName(a,"button"))return L.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g&&(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&(e=f.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):R.test(a.nodeName)||S.test(a.nodeName)&&a.href?0:b}}}}),M={get:function(a,c){var d,e=p.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d&&(N[c]?d.value!=="":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+""}},p.each(["width","height"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c==="")return a.setAttribute(b,"auto"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===""&&(b="false"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each(["href","src","width","height"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=b+""}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype="encoding"),p.support.checkOn||p.each(["radio","checkbox"],function(){p.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),p.each(["radio","checkbox"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)>=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j<c.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||"").split(".").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,needsContext:f&&p.expr.match.needsContext.test(f),namespace:m.join(".")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent&&a.attachEvent("on"+l,h)}r.add&&(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)&&p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||"")).split(" ");for(f=0;f<b.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(l=0;l<o.length;l++)q=o[l],(e||i===q.origType)&&(!c||c.guid===q.guid)&&(!j||j.test(q.namespace))&&(!d||d===q.selector||d==="**"&&q.selector)&&(o.splice(l--,1),q.selector&&o.delegateCount--,n.remove&&n.remove.call(a,q));o.length===0&&k!==o.length&&((!n.teardown||n.teardown.call(a,j,r.handle)===!1)&&p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)&&(delete r.handle,p.removeData(a,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3&&f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf("!")>=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j<q.length&&!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,"events")||{})[c.type]&&p._data(k,"handle"),o&&o.apply(k,d),o=m&&k[m],o&&p.acceptData(k)&&o.apply&&o.apply(k,d)===!1&&c.preventDefault();return c.type=s,!g&&!c.isDefaultPrevented()&&(!n._default||n._default.apply(f.ownerDocument,d)===!1)&&(s!=="click"||!p.nodeName(f,"a"))&&p.acceptData(f)&&m&&f[s]&&(s!=="focus"&&s!=="blur"||c.target.offsetWidth!==0)&&!p.isWindow(f)&&(l=f[m],l&&(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l&&(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,l,m,n,o=(p._data(this,"events")||{})[c.type]||[],q=o.delegateCount,r=k.call(arguments),s=!c.exclusive&&!c.namespace,t=p.event.special[c.type]||{},u=[];r[0]=c,c.delegateTarget=this;if(t.preDispatch&&t.preDispatch.call(this,c)===!1)return;if(q&&(!c.button||c.type!=="click"))for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!=="click"){h={},j=[];for(d=0;d<q;d++)l=o[d],m=l.selector,h[m]===b&&(h[m]=l.needsContext?p(m,this).index(f)>=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d<u.length&&!c.isPropagationStopped();d++){i=u[d],c.currentTarget=i.elem;for(e=0;e<i.matches.length&&!c.isImmediatePropagationStopped();e++){l=i.matches[e];if(s||!c.namespace&&!l.namespace||c.namespace_re&&c.namespace_re.test(l.namespace))c.data=l.data,c.handleObj=l,g=((p.event.special[l.origType]||{}).handle||l.handler).apply(i.elem,r),g!==b&&(c.result=g,g===!1&&(c.preventDefault(),c.stopPropagation()))}}return t.postDispatch&&t.postDispatch.call(this,c),c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null&&c.clientX!=null&&(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?c.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){p.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]=="undefined"&&(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?bb:ba):this.type=a,b&&p.extend(this,b),this.timeStamp=a&&a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d&&!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,"form"))return!1;p.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=p.nodeName(c,"input")||p.nodeName(c,"button")?c.form:b;d&&!p._data(d,"_submit_attached")&&(p.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),p._data(d,"_submit_attached",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&p.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,"form"))return!1;p.event.remove(this,"._submit")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")p.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),p.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),p.event.simulate("change",this,a,!0)});return!1}p.event.add(this,"beforeactivate._change",function(a){var b=a.target;V.test(b.nodeName)&&!p._data(b,"_change_attached")&&(p.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&p.event.simulate("change",this.parentNode,a,!0)}),p._data(b,"_change_attached",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){return p.event.remove(this,"._change"),!V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0&&e.addEventListener(a,d,!0)},teardown:function(){--c===0&&e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=ba;else if(!e)return this;return f===1&&(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a=="object"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c=="function")d=c,c=b;return d===!1&&(d=ba),this.each(function(){p.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||"**",b),this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length===1?this.off(a,"**"):this.off(b,a||"**",c)},trigger:function(a,b){return this.each(function(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,"lastToggle"+a.guid)||0)%d;return p._data(this,"lastToggle"+a.guid,e+1),c.preventDefault(),b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),p.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){p.fn[b]=function(a,c){return c==null&&(c=a,a=null),arguments.length>0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h<i;h++)if(f=a[h])if(!c||c(f,d,e))g.push(f),j&&b.push(h);return g}function bl(a,b,c,d,e,f){return d&&!d[o]&&(d=bl(d)),e&&!e[o]&&(e=bl(e,f)),z(function(f,g,h,i){if(f&&e)return;var j,k,l,m=[],n=[],o=g.length,p=f||bo(b||"*",h.nodeType?[h]:h,[],f),q=a&&(f||!b)?bk(p,m,a,h,i):p,r=c?e||(f?a:o||d)?[]:g:q;c&&c(q,r,h,i);if(d){l=bk(r,n),d(l,[],h,i),j=l.length;while(j--)if(k=l[j])r[n[j]]=!(q[n[j]]=k)}if(f){j=a&&r.length;while(j--)if(k=r[j])f[m[j]]=!(g[m[j]]=k)}else r=bk(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):w.apply(g,r)})}function bm(a){var b,c,d,f=a.length,g=e.relative[a[0].type],h=g||e.relative[" "],i=g?1:0,j=bi(function(a){return a===b},h,!0),k=bi(function(a){return y.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i<f;i++)if(c=e.relative[a[i].type])m=[bi(bj(m),c)];else{c=e.filter[a[i].type].apply(null,a[i].matches);if(c[o]){d=++i;for(;d<f;d++)if(e.relative[a[d].type])break;return bl(i>1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i<d&&bm(a.slice(i,d)),d<f&&bm(a=a.slice(d)),d<f&&a.join(""))}m.push(c)}return bj(m)}function bn(a,b){var d=b.length>0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e<f;e++)bc(a,b[e],c,d);return c}function bp(a,b,c,d,f){var g,h,j,k,l,m=bh(a),n=m.length;if(!d&&m.length===1){h=m[0]=m[0].slice(0);if(h.length>2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;b<c;b++)if(this[b]===a)return b;return-1},z=function(a,b){return a[o]=b==null||b,a},A=function(){var a={},b=[];return z(function(c,d){return b.push(c)>e.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="<a name='"+o+"'></a><div name='"+o+"'></div>",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d<b;d+=2)a.push(d);return a}),odd:bf(function(a,b,c){for(var d=1;d<b;d+=2)a.push(d);return a}),lt:bf(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},j=s.compareDocumentPosition?function(a,b){return a===b?(k=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)&4)?-1:1}:function(a,b){if(a===b)return k=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,h=b.parentNode,i=g;if(g===h)return bg(a,b);if(!g)return-1;if(!h)return 1;while(i)e.unshift(i),i=i.parentNode;i=h;while(i)f.unshift(i),i=i.parentNode;c=e.length,d=f.length;for(var j=0;j<c&&j<d;j++)if(e[j]!==f[j])return bg(e[j],f[j]);return j===c?bg(a,f[j],-1):bg(e[j],b,1)},[0,0].sort(j),m=!k,bc.uniqueSort=function(a){var b,c=1;k=m,a.sort(j);if(k)for(;b=a[c];c++)b===a[c-1]&&a.splice(c--,1);return a},bc.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},i=bc.compile=function(a,b){var c,d=[],e=[],f=D[o][a];if(!f){b||(b=bh(a)),c=b.length;while(c--)f=bm(b[c]),f[o]?d.push(f):e.push(f);f=D(a,bn(e,d))}return f},r.querySelectorAll&&function(){var a,b=bp,c=/'|\\/g,d=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,e=[":focus"],f=[":active",":focus"],h=s.matchesSelector||s.mozMatchesSelector||s.webkitMatchesSelector||s.oMatchesSelector||s.msMatchesSelector;X(function(a){a.innerHTML="<select><option selected=''></option></select>",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="<p test=''></p>",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="<input type='hidden'/>",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b<c;b++)if(p.contains(h[b],this))return!0});g=this.pushStack("","find",a);for(b=0,c=this.length;b<c;b++){d=g.length,p.find(a,this[b],g);if(b>0)for(e=d;e<g.length;e++)for(f=0;f<d;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b<d;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),"not",a)},filter:function(a){return this.pushStack(bj(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?bf.test(a)?p(a,this.context).index(this[0])>=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d<e;d++){c=this[d];while(c&&c.ownerDocument&&c!==b&&c.nodeType!==11){if(g?g.index(c)>-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/<tbody/i,br=/<|&#?\w+;/,bs=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,bu=new RegExp("<(?:"+bl+")[\\s/>]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,bz={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X<div>","</div>"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),"replaceWith",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!="string"&&(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone&&l>1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i<l;i++)d.call(c&&p.nodeName(this[i],"table")?bC(this[i],"tbody"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length&&p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):p.error("no ajax"):p.globalEval((b.text||b.textContent||b.innerHTML||"").replace(by,"")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,a.length===1&&typeof i=="string"&&i.length<512&&c===e&&i.charAt(0)==="<"&&!bt.test(i)&&(p.support.checkClone||!bw.test(i))&&(p.support.html5Clone||!bu.test(i))&&(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g&&(p.fragments[i]=h&&f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1&&this[0].parentNode;if((i==null||i&&i.nodeType===11&&i.childNodes.length===1)&&h===1)return g[b](this[0]),this;for(;e<h;e++)d=(e>0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1></$2>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]==="<table>"&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("<div>").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d<e;d++)c=a[d],cT[c]=cT[c]||[],cT[c].unshift(b)},prefilter:function(a,b){b?cS.unshift(a):cS.push(a)}}),p.Tween=cZ,cZ.prototype={constructor:cZ,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?"":"px")},cur:function(){var a=cZ.propHooks[this.prop];return a&&a.get?a.get(this):cZ.propHooks._default.get(this)},run:function(a){var b,c=cZ.propHooks[this.prop];return this.options.duration?this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):cZ.propHooks._default.set(this),this}},cZ.prototype.init.prototype=cZ.prototype,cZ.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style&&a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,""),!b||b==="auto"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style&&(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cZ.propHooks.scrollTop=cZ.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},p.each(["toggle","show","hide"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d=="boolean"||!a&&p.isFunction(d)&&p.isFunction(e)?c.apply(this,arguments):this.animate(c$(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bZ).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cW(this,p.extend({},a),f);e&&b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,c=a!=null&&a+"queueHooks",f=p.timers,g=p._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cR.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem===this&&(a==null||f[c].queue===a)&&(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&p.dequeue(this,a)})}}),p.each({slideDown:c$("show"),slideUp:c$("hide"),slideToggle:c$("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a&&typeof a=="object"?p.extend({},a):{complete:c||!c&&b||p.isFunction(a)&&a,duration:a,easing:c&&b||b&&!p.isFunction(b)&&b};d.duration=p.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)&&d.old.call(this),d.queue&&p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cZ.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()&&p.timers.push(a)&&!cO&&(cO=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cO),cO=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr&&p.expr.filters&&(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c_=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j={top:0,left:0},k=this[0],l=k&&k.ownerDocument;if(!l)return;return(d=l.body)===k?p.offset.bodyOffset(k):(c=l.documentElement,p.contains(c,k)?(typeof k.getBoundingClientRect!="undefined"&&(j=k.getBoundingClientRect()),e=da(l),f=c.clientTop||d.clientTop||0,g=c.clientLeft||d.clientLeft||0,h=e.pageYOffset||c.scrollTop,i=e.pageXOffset||c.scrollLeft,{top:j.top+h-f,left:j.left+i-g}):j)},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(p.css(a,"marginTop"))||0,c+=parseFloat(p.css(a,"marginLeft"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,"position");d==="static"&&(a.style.position="relative");var e=p(a),f=e.offset(),g=p.css(a,"top"),h=p.css(a,"left"),i=(d==="absolute"||d==="fixed")&&p.inArray("auto",[g,h])>-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window);
+/*! %%Ignore-License jQuery v1.8.2 jquery.com | jquery.org/license */
+(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d<e;d++)p.event.add(b,c,h[c][d])}g.data&&(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?(b.parentNode&&(b.outerHTML=a.outerHTML),p.support.html5Clone&&a.innerHTML&&!p.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):c==="input"&&bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bG(a){bv.test(a.type)&&(a.defaultChecked=a.checked)}function bY(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bW.length;while(e--){b=bW[e]+c;if(b in a)return b}return d}function bZ(a,b){return a=b||a,p.css(a,"display")==="none"||!p.contains(a.ownerDocument,a)}function b$(a,b){var c,d,e=[],f=0,g=a.length;for(;f<g;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,"olddisplay"),b?(!e[f]&&c.style.display==="none"&&(c.style.display=""),c.style.display===""&&bZ(c)&&(e[f]=p._data(c,"olddisplay",cc(c.nodeName)))):(d=bH(c,"display"),!e[f]&&d!=="none"&&p._data(c,"olddisplay",d))}for(f=0;f<g;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display==="none"||c.style.display==="")c.style.display=b?e[f]||"":"none"}return a}function b_(a,b,c){var d=bP.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function ca(a,b,c,d){var e=c===(d?"border":"content")?4:b==="width"?1:0,f=0;for(;e<4;e+=2)c==="margin"&&(f+=p.css(a,c+bV[e],!0)),d?(c==="content"&&(f-=parseFloat(bH(a,"padding"+bV[e]))||0),c!=="margin"&&(f-=parseFloat(bH(a,"border"+bV[e]+"Width"))||0)):(f+=parseFloat(bH(a,"padding"+bV[e]))||0,c!=="padding"&&(f+=parseFloat(bH(a,"border"+bV[e]+"Width"))||0));return f}function cb(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing&&p.css(a,"boxSizing")==="border-box";if(d<=0||d==null){d=bH(a,b);if(d<0||d==null)d=a.style[b];if(bQ.test(d))return d;e=f&&(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+ca(a,b,c||(f?"border":"content"),e)+"px"}function cc(a){if(bS[a])return bS[a];var b=p("<"+a+">").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write("<!doctype html><html><body>"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h<i;h++)d=g[h],f=/^\+/.test(d),f&&(d=d.substr(1)||"*"),e=a[d]=a[d]||[],e[f?"unshift":"push"](c)}}function cA(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cv;for(;j<k&&(l||!h);j++)h=i[j](c,d,e),typeof h=="string"&&(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cA(a,c,d,e,h,g)));return(l||!h)&&!g["*"]&&(h=cA(a,c,d,e,"*",g)),h}function cB(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((f[d]?a:e||(e={}))[d]=c[d]);e&&p.extend(!0,a,e)}function cC(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d&&(c[k[f]]=d[f]);while(j[0]==="*")j.shift(),e===b&&(e=a.mimeType||c.getResponseHeader("content-type"));if(e)for(f in i)if(i[f]&&i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+" "+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]&&j.unshift(g),d[g]}function cD(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter&&(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!=="*"){if(h!=="*"&&h!==e){c=i[h+" "+e]||i["* "+e];if(!c)for(d in i){f=d.split(" ");if(f[1]===e){c=i[h+" "+f[0]]||i["* "+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c&&a["throws"])b=c(b);else try{b=c(b)}catch(k){return{state:"parsererror",error:c?k:"No conversion from "+h+" to "+e}}}h=e}return{state:"success",data:b}}function cL(){try{return new a.XMLHttpRequest}catch(b){}}function cM(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cU(){return setTimeout(function(){cN=b},0),cN=p.now()}function cV(a,b){p.each(b,function(b,c){var d=(cT[b]||[]).concat(cT["*"]),e=0,f=d.length;for(;e<f;e++)if(d[e].call(a,b,c))return})}function cW(a,b,c){var d,e=0,f=0,g=cS.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cN||cU(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e<f;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d<1&&f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cN||cU(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c<d;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cX(k,j.opts.specialEasing);for(;e<g;e++){d=cS[e].call(j,a,k,j.opts);if(d)return d}return cV(j,k),p.isFunction(j.opts.start)&&j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cX(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cY(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType&&bZ(a);c.queue||(j=p._queueHooks(a,"fx"),j.unqueued==null&&(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,"fx").length||j.empty.fire()})})),a.nodeType===1&&("height"in b||"width"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,"display")==="inline"&&p.css(a,"float")==="none"&&(!p.support.inlineBlockNeedsLayout||cc(a.nodeName)==="inline"?m.display="inline-block":m.zoom=1)),c.overflow&&(m.overflow="hidden",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cP.exec(f)){delete b[d];if(f===(q?"hide":"show"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,"fxshow")||p._data(a,"fxshow",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,"fxshow",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d<g;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q&&(i.end=i.start,i.start=e==="width"||e==="height"?1:0))}}function cZ(a,b,c,d,e){return new cZ.prototype.init(a,b,c,d,e)}function c$(a,b){var c,d={height:a},e=0;b=b?1:0;for(;e<4;e+=2-b)c=bV[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function da(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,r=/\S/,s=/\s+/,t=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,u=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i<j;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k&&e&&(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d&&p.isArray(d)?d:[]):g=d&&p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b&&(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p&&(a.$=i),b&&a.jQuery===p&&(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0&&--p.readyWait>0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f<g;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f<g;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o&&!o.call(" ")?function(a){return a==null?"":o.call(a)}:function(a){return a==null?"":(a+"").replace(t,"")},makeArray:function(a,b){var c,d=b||[];return a!=null&&(c=p.type(a),a.length==null||c==="string"||c==="function"||c==="regexp"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if(typeof d=="number")for(;f<d;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f<g;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b&&typeof i=="number"&&(i>0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h<i;h++)e=c(a[h],h,d),e!=null&&(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null&&(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c=="string"&&(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d&&typeof d=="object"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b&&p.isFunction(e),j&&(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k<l;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState==="complete")setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener("DOMContentLoaded",D,!1),a.addEventListener("load",p.ready,!1);else{e.attachEvent("onreadystatechange",D),a.attachEvent("onload",p.ready);var c=!1;try{c=a.frameElement==null&&e.documentElement}catch(f){}c&&c.doScroll&&function g(){if(!p.isReady){try{c.doScroll("left")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){E["[object "+b+"]"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a=="string"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once&&[],k=function(b){c=a.memory&&b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i&&h<g;h++)if(i[h].apply(b[0],b[1])===!1&&a.stopOnFalse){c=!1;break}e=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){var e=p.type(c);e==="function"&&(!a.unique||!l.has(c))?i.push(c):c&&c.length&&e!=="string"&&d(c)})})(arguments),e?g=i.length:c&&(f=b,k(c))}return this},remove:function(){return i&&p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))>-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b<d;b++)c[b]&&p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement("div");n.setAttribute("className","t"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="<div></div>",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e<f;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute("classid")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1&&!p._data(i,"parsedAttrs")){f=i.attributes;for(h=f.length;j<h;j++)g=f[j].name,g.indexOf("data-")||(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,"parsedAttrs",!0)}}return k}return typeof a=="object"?this.each(function(){p.data(this,a)}):(d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!",p.access(this,function(c){if(c===b)return k=this.triggerHandler("getData"+e,[d[0]]),k===b&&i&&(k=p.data(i,a),k=J(i,a,k)),k===b&&d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler("setData"+e,d),p.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length<d?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a==="fx"&&b[0]!=="inprogress"&&p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!="string"&&(c=a,a=b),a=a||"fx";while(h--)d=p._data(g[h],a+"queueHooks"),d&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\t\r\n]/g,P=/\r/g,Q=/^(?:button|input)$/i,R=/^(?:button|input|object|select|textarea)$/i,S=/^a(?:rea|)$/i,T=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,U=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{f=" "+e.className+" ";for(g=0,h=b.length;g<h;g++)f.indexOf(" "+b[g]+" ")<0&&(f+=b[g]+" ");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(s);for(h=0,i=this.length;h<i;h++){e=this[h];if(e.nodeType===1&&e.className){d=(" "+e.className+" ").replace(O," ");for(f=0,g=c.length;f<g;f++)while(d.indexOf(" "+c[f]+" ")>=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(O," ").indexOf(b)>=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c<d;c++){e=h[c];if(e.selected&&(p.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!p.nodeName(e.parentNode,"optgroup"))){b=p(e).val();if(i)return b;g.push(b)}}return i&&!g.length&&h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find("option").each(function(){this.selected=p.inArray(p(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g<d.length;g++)e=d[g],e&&(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,""),a.removeAttribute(U?e:c),f&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)&&a.parentNode)p.error("type property can't be changed");else if(!p.support.radioValue&&b==="radio"&&p.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}},value:{get:function(a,b){return L&&p.nodeName(a,"button")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L&&p.nodeName(a,"button"))return L.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g&&(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&(e=f.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):R.test(a.nodeName)||S.test(a.nodeName)&&a.href?0:b}}}}),M={get:function(a,c){var d,e=p.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d&&(N[c]?d.value!=="":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+""}},p.each(["width","height"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c==="")return a.setAttribute(b,"auto"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===""&&(b="false"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each(["href","src","width","height"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=b+""}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype="encoding"),p.support.checkOn||p.each(["radio","checkbox"],function(){p.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),p.each(["radio","checkbox"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)>=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j<c.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||"").split(".").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,needsContext:f&&p.expr.match.needsContext.test(f),namespace:m.join(".")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent&&a.attachEvent("on"+l,h)}r.add&&(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)&&p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||"")).split(" ");for(f=0;f<b.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(l=0;l<o.length;l++)q=o[l],(e||i===q.origType)&&(!c||c.guid===q.guid)&&(!j||j.test(q.namespace))&&(!d||d===q.selector||d==="**"&&q.selector)&&(o.splice(l--,1),q.selector&&o.delegateCount--,n.remove&&n.remove.call(a,q));o.length===0&&k!==o.length&&((!n.teardown||n.teardown.call(a,j,r.handle)===!1)&&p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)&&(delete r.handle,p.removeData(a,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3&&f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf("!")>=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j<q.length&&!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,"events")||{})[c.type]&&p._data(k,"handle"),o&&o.apply(k,d),o=m&&k[m],o&&p.acceptData(k)&&o.apply&&o.apply(k,d)===!1&&c.preventDefault();return c.type=s,!g&&!c.isDefaultPrevented()&&(!n._default||n._default.apply(f.ownerDocument,d)===!1)&&(s!=="click"||!p.nodeName(f,"a"))&&p.acceptData(f)&&m&&f[s]&&(s!=="focus"&&s!=="blur"||c.target.offsetWidth!==0)&&!p.isWindow(f)&&(l=f[m],l&&(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l&&(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,l,m,n,o=(p._data(this,"events")||{})[c.type]||[],q=o.delegateCount,r=k.call(arguments),s=!c.exclusive&&!c.namespace,t=p.event.special[c.type]||{},u=[];r[0]=c,c.delegateTarget=this;if(t.preDispatch&&t.preDispatch.call(this,c)===!1)return;if(q&&(!c.button||c.type!=="click"))for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!=="click"){h={},j=[];for(d=0;d<q;d++)l=o[d],m=l.selector,h[m]===b&&(h[m]=l.needsContext?p(m,this).index(f)>=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d<u.length&&!c.isPropagationStopped();d++){i=u[d],c.currentTarget=i.elem;for(e=0;e<i.matches.length&&!c.isImmediatePropagationStopped();e++){l=i.matches[e];if(s||!c.namespace&&!l.namespace||c.namespace_re&&c.namespace_re.test(l.namespace))c.data=l.data,c.handleObj=l,g=((p.event.special[l.origType]||{}).handle||l.handler).apply(i.elem,r),g!==b&&(c.result=g,g===!1&&(c.preventDefault(),c.stopPropagation()))}}return t.postDispatch&&t.postDispatch.call(this,c),c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null&&c.clientX!=null&&(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?c.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){p.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]=="undefined"&&(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?bb:ba):this.type=a,b&&p.extend(this,b),this.timeStamp=a&&a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d&&!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,"form"))return!1;p.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=p.nodeName(c,"input")||p.nodeName(c,"button")?c.form:b;d&&!p._data(d,"_submit_attached")&&(p.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),p._data(d,"_submit_attached",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&p.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,"form"))return!1;p.event.remove(this,"._submit")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")p.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),p.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),p.event.simulate("change",this,a,!0)});return!1}p.event.add(this,"beforeactivate._change",function(a){var b=a.target;V.test(b.nodeName)&&!p._data(b,"_change_attached")&&(p.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&p.event.simulate("change",this.parentNode,a,!0)}),p._data(b,"_change_attached",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){return p.event.remove(this,"._change"),!V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0&&e.addEventListener(a,d,!0)},teardown:function(){--c===0&&e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=ba;else if(!e)return this;return f===1&&(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a=="object"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c=="function")d=c,c=b;return d===!1&&(d=ba),this.each(function(){p.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||"**",b),this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length===1?this.off(a,"**"):this.off(b,a||"**",c)},trigger:function(a,b){return this.each(function(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,"lastToggle"+a.guid)||0)%d;return p._data(this,"lastToggle"+a.guid,e+1),c.preventDefault(),b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),p.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){p.fn[b]=function(a,c){return c==null&&(c=a,a=null),arguments.length>0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h<i;h++)if(f=a[h])if(!c||c(f,d,e))g.push(f),j&&b.push(h);return g}function bl(a,b,c,d,e,f){return d&&!d[o]&&(d=bl(d)),e&&!e[o]&&(e=bl(e,f)),z(function(f,g,h,i){if(f&&e)return;var j,k,l,m=[],n=[],o=g.length,p=f||bo(b||"*",h.nodeType?[h]:h,[],f),q=a&&(f||!b)?bk(p,m,a,h,i):p,r=c?e||(f?a:o||d)?[]:g:q;c&&c(q,r,h,i);if(d){l=bk(r,n),d(l,[],h,i),j=l.length;while(j--)if(k=l[j])r[n[j]]=!(q[n[j]]=k)}if(f){j=a&&r.length;while(j--)if(k=r[j])f[m[j]]=!(g[m[j]]=k)}else r=bk(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):w.apply(g,r)})}function bm(a){var b,c,d,f=a.length,g=e.relative[a[0].type],h=g||e.relative[" "],i=g?1:0,j=bi(function(a){return a===b},h,!0),k=bi(function(a){return y.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i<f;i++)if(c=e.relative[a[i].type])m=[bi(bj(m),c)];else{c=e.filter[a[i].type].apply(null,a[i].matches);if(c[o]){d=++i;for(;d<f;d++)if(e.relative[a[d].type])break;return bl(i>1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i<d&&bm(a.slice(i,d)),d<f&&bm(a=a.slice(d)),d<f&&a.join(""))}m.push(c)}return bj(m)}function bn(a,b){var d=b.length>0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e<f;e++)bc(a,b[e],c,d);return c}function bp(a,b,c,d,f){var g,h,j,k,l,m=bh(a),n=m.length;if(!d&&m.length===1){h=m[0]=m[0].slice(0);if(h.length>2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;b<c;b++)if(this[b]===a)return b;return-1},z=function(a,b){return a[o]=b==null||b,a},A=function(){var a={},b=[];return z(function(c,d){return b.push(c)>e.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="<a name='"+o+"'></a><div name='"+o+"'></div>",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d<b;d+=2)a.push(d);return a}),odd:bf(function(a,b,c){for(var d=1;d<b;d+=2)a.push(d);return a}),lt:bf(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},j=s.compareDocumentPosition?function(a,b){return a===b?(k=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)&4)?-1:1}:function(a,b){if(a===b)return k=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,h=b.parentNode,i=g;if(g===h)return bg(a,b);if(!g)return-1;if(!h)return 1;while(i)e.unshift(i),i=i.parentNode;i=h;while(i)f.unshift(i),i=i.parentNode;c=e.length,d=f.length;for(var j=0;j<c&&j<d;j++)if(e[j]!==f[j])return bg(e[j],f[j]);return j===c?bg(a,f[j],-1):bg(e[j],b,1)},[0,0].sort(j),m=!k,bc.uniqueSort=function(a){var b,c=1;k=m,a.sort(j);if(k)for(;b=a[c];c++)b===a[c-1]&&a.splice(c--,1);return a},bc.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},i=bc.compile=function(a,b){var c,d=[],e=[],f=D[o][a];if(!f){b||(b=bh(a)),c=b.length;while(c--)f=bm(b[c]),f[o]?d.push(f):e.push(f);f=D(a,bn(e,d))}return f},r.querySelectorAll&&function(){var a,b=bp,c=/'|\\/g,d=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,e=[":focus"],f=[":active",":focus"],h=s.matchesSelector||s.mozMatchesSelector||s.webkitMatchesSelector||s.oMatchesSelector||s.msMatchesSelector;X(function(a){a.innerHTML="<select><option selected=''></option></select>",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="<p test=''></p>",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="<input type='hidden'/>",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b<c;b++)if(p.contains(h[b],this))return!0});g=this.pushStack("","find",a);for(b=0,c=this.length;b<c;b++){d=g.length,p.find(a,this[b],g);if(b>0)for(e=d;e<g.length;e++)for(f=0;f<d;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b<d;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),"not",a)},filter:function(a){return this.pushStack(bj(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?bf.test(a)?p(a,this.context).index(this[0])>=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d<e;d++){c=this[d];while(c&&c.ownerDocument&&c!==b&&c.nodeType!==11){if(g?g.index(c)>-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/<tbody/i,br=/<|&#?\w+;/,bs=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,bu=new RegExp("<(?:"+bl+")[\\s/>]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,bz={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X<div>","</div>"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),"replaceWith",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!="string"&&(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone&&l>1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i<l;i++)d.call(c&&p.nodeName(this[i],"table")?bC(this[i],"tbody"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length&&p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):p.error("no ajax"):p.globalEval((b.text||b.textContent||b.innerHTML||"").replace(by,"")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,a.length===1&&typeof i=="string"&&i.length<512&&c===e&&i.charAt(0)==="<"&&!bt.test(i)&&(p.support.checkClone||!bw.test(i))&&(p.support.html5Clone||!bu.test(i))&&(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g&&(p.fragments[i]=h&&f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1&&this[0].parentNode;if((i==null||i&&i.nodeType===11&&i.childNodes.length===1)&&h===1)return g[b](this[0]),this;for(;e<h;e++)d=(e>0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1></$2>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]==="<table>"&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("<div>").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d<e;d++)c=a[d],cT[c]=cT[c]||[],cT[c].unshift(b)},prefilter:function(a,b){b?cS.unshift(a):cS.push(a)}}),p.Tween=cZ,cZ.prototype={constructor:cZ,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?"":"px")},cur:function(){var a=cZ.propHooks[this.prop];return a&&a.get?a.get(this):cZ.propHooks._default.get(this)},run:function(a){var b,c=cZ.propHooks[this.prop];return this.options.duration?this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):cZ.propHooks._default.set(this),this}},cZ.prototype.init.prototype=cZ.prototype,cZ.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style&&a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,""),!b||b==="auto"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style&&(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cZ.propHooks.scrollTop=cZ.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},p.each(["toggle","show","hide"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d=="boolean"||!a&&p.isFunction(d)&&p.isFunction(e)?c.apply(this,arguments):this.animate(c$(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bZ).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cW(this,p.extend({},a),f);e&&b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,c=a!=null&&a+"queueHooks",f=p.timers,g=p._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cR.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem===this&&(a==null||f[c].queue===a)&&(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&p.dequeue(this,a)})}}),p.each({slideDown:c$("show"),slideUp:c$("hide"),slideToggle:c$("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a&&typeof a=="object"?p.extend({},a):{complete:c||!c&&b||p.isFunction(a)&&a,duration:a,easing:c&&b||b&&!p.isFunction(b)&&b};d.duration=p.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)&&d.old.call(this),d.queue&&p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cZ.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()&&p.timers.push(a)&&!cO&&(cO=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cO),cO=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr&&p.expr.filters&&(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c_=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j={top:0,left:0},k=this[0],l=k&&k.ownerDocument;if(!l)return;return(d=l.body)===k?p.offset.bodyOffset(k):(c=l.documentElement,p.contains(c,k)?(typeof k.getBoundingClientRect!="undefined"&&(j=k.getBoundingClientRect()),e=da(l),f=c.clientTop||d.clientTop||0,g=c.clientLeft||d.clientLeft||0,h=e.pageYOffset||c.scrollTop,i=e.pageXOffset||c.scrollLeft,{top:j.top+h-f,left:j.left+i-g}):j)},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(p.css(a,"marginTop"))||0,c+=parseFloat(p.css(a,"marginLeft"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,"position");d==="static"&&(a.style.position="relative");var e=p(a),f=e.offset(),g=p.css(a,"top"),h=p.css(a,"left"),i=(d==="absolute"||d==="fixed")&&p.inArray("auto",[g,h])>-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window);
Property changes on: trunk/coser-web/src/main/webapp/js/jquery-1.8.2.min.js
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/js/jquery.expander.min.js
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/coser-web/src/main/webapp/pdf/Web_EstComInd_PresentationIndic_EN.pdf
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/pdf/Web_EstComInd_PresentationIndic_FR.pdf
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/pdf/Web_EstPopInd_PresentationIndic_EN.pdf
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/pdf/Web_EstPopInd_PresentationIndic_FR.pdf
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/coser-web/src/main/webapp/styles/coser.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-03-03 11:55:47 UTC (rev 1132)
+++ trunk/pom.xml 2014-03-07 20:41:45 UTC (rev 1133)
@@ -81,7 +81,7 @@
<jaxxVersion>2.8.2-SNAPSHOT</jaxxVersion>
<nuitonI18nVersion>3.0</nuitonI18nVersion>
<nuitonMatrixVersion>2.4-SNAPSHOT</nuitonMatrixVersion>
- <struts.version>2.3.16</struts.version>
+ <struts.version>2.3.16.1</struts.version>
</properties>
<repositories>
Property changes on: trunk/pom.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/en/rst/devel/textupdate.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/en/rst/download.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/en/rst/index.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/en/rst/user/configuration.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/en/rst/user/controls.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/en/rst/user/dataformat.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/en/rst/user/faq.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/en/rst/user/guide_control.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/en/rst/user/guide_listcontrols.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/en/rst/user/guide_project.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/en/rst/user/guide_results.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/en/rst/user/guide_selection.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/resources/icons/logo100.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/01-noproject.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/02-createproject.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/03-openproject.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/04-projectsummary.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/10-controlmain.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/11-controlmenu1.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/12-controlmenu2.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/13-controlgraphdiff.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/14-controlgraphlength.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/20-selectiondetail.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/21-selectionyears.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/22-selectionstrata.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/23-selectionspecies.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/24-selectionlists.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/25-selectionresults.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/26-selectionaddresult.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/27-selectionmenu0.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/28-selectionmenu1.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/90-configurationpath.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/en/91-configurationvalues.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/01-noproject.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/02-createproject.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/03-openproject.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/04-projectsummary.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/10-controlmain.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/11-controlmenu1.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/12-controlmenu2.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/13-controlgraphdiff.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/14-controlgraphlength.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/20-selectiondetail.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/21-selectionyears.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/22-selectionstrata.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/23-selectionspecies.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/24-selectionlists.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/25-selectionresults.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/26-selectionaddresult.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/27-selectionmenu0.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/28-selectionmenu1.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/90-configurationpath.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/resources/images/fr/91-configurationvalues.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/src/site/rst/devel/directory.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/devel/struts.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/devel/textupdate.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/download.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/index.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/user/configuration.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/user/controls.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/user/dataformat.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/user/faq.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/user/guide_control.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/user/guide_listcontrols.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/user/guide_project.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/user/guide_results.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/rst/user/guide_selection.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/site_en.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/src/site/site_fr.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r1132 - in trunk: coser-business/src/license coser-ui coser-ui/src/license coser-ui/src/main/resources/i18n coser-web/src/license
by tchemit@users.forge.codelutin.com 03 Mar '14
by tchemit@users.forge.codelutin.com 03 Mar '14
03 Mar '14
Author: tchemit
Date: 2014-03-03 12:55:47 +0100 (Mon, 03 Mar 2014)
New Revision: 1132
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1132
Log:
fix ui i18n + update third-parties
Modified:
trunk/coser-business/src/license/THIRD-PARTY.properties
trunk/coser-ui/pom.xml
trunk/coser-ui/src/license/THIRD-PARTY.properties
trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
trunk/coser-web/src/license/THIRD-PARTY.properties
Modified: trunk/coser-business/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/coser-business/src/license/THIRD-PARTY.properties 2014-03-03 09:56:07 UTC (rev 1131)
+++ trunk/coser-business/src/license/THIRD-PARTY.properties 2014-03-03 11:55:47 UTC (rev 1132)
@@ -1,27 +1,26 @@
# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
-# - Apache Software License, Version 2.0
# - BSD License
# - BSD-style license
-# - Bouncy Castle License
+# - CDDL
# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
# - Common Public License Version 1.0
# - GNU Affero General Public License v3
# - GNU Lesser General Public Licence
# - GNU Lesser General Public License (LGPL), version 2.1
+# - GPLv2+CE
# - Indiana University Extreme! Lab Software License, vesion 1.1.1
# - Lesser General Public License (LGPL) v 3.0
# - Lesser General Public License (LPGL)
# - Lesser General Public License (LPGL) v 2.1
# - MIT License
-# - Mozilla Public License
+# - MPL 1.1
# - New BSD License
# - The Apache Software License, Version 2.0
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
-#Mon Feb 24 15:56:47 CET 2014
+#Mon Mar 03 10:43:46 CET 2014
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
-javassist--javassist--3.8.0.GA=GNU Lesser General Public License
Modified: trunk/coser-ui/pom.xml
===================================================================
--- trunk/coser-ui/pom.xml 2014-03-03 09:56:07 UTC (rev 1131)
+++ trunk/coser-ui/pom.xml 2014-03-03 11:55:47 UTC (rev 1132)
@@ -292,98 +292,114 @@
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.nuiton</groupId>
- <artifactId>helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>get-keystore</id>
- <goals>
- <goal>share-server-secret</goal>
- </goals>
- <phase>package</phase>
- <configuration>
- <serverId>codelutin-keystore</serverId>
- <privateKeyOut>keystorepath</privateKeyOut>
- <passwordOut>keystorepass</passwordOut>
- <usernameOut>keyalias</usernameOut>
- <passphraseOut>keypass</passphraseOut>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>webstart-maven-plugin</artifactId>
- <configuration>
- <libPath>lib</libPath>
- <makeArchive>false</makeArchive>
- <verbose>false</verbose>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>jnlp-profile</id>
+ <activation>
+ <property>
+ <name>performRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+ <!-- <properties>
+ <jnlp.codebase>file://${project.build.directory}/jnlp</jnlp.codebase>
+ </properties> -->
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>get-keystore</id>
+ <goals>
+ <goal>share-server-secret</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <serverId>codelutin-keystore</serverId>
+ <privateKeyOut>keystorepath</privateKeyOut>
+ <passwordOut>keystorepass</passwordOut>
+ <usernameOut>keyalias</usernameOut>
+ <passphraseOut>keypass</passphraseOut>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>webstart-maven-plugin</artifactId>
+ <configuration>
+ <libPath>lib</libPath>
+ <makeArchive>false</makeArchive>
+ <verbose>false</verbose>
- <jnlp>
- <inputTemplateResourcePath>${project.basedir}</inputTemplateResourcePath>
- <inputTemplate>src/main/jnlp/coser-jnlp.vm</inputTemplate>
- <mainClass>${maven.jar.main.class}</mainClass>
- <allPermissions>true</allPermissions>
- <offlineAllowed>true</offlineAllowed>
- <j2seVersion>1.6+</j2seVersion>
- </jnlp>
+ <jnlp>
+ <inputTemplateResourcePath>${project.basedir}</inputTemplateResourcePath>
+ <inputTemplate>src/main/jnlp/coser-jnlp.vm</inputTemplate>
+ <mainClass>${maven.jar.main.class}</mainClass>
+ <allPermissions>true</allPermissions>
+ <offlineAllowed>true</offlineAllowed>
+ <j2seVersion>1.6+</j2seVersion>
+ </jnlp>
- <!-- Add some extensions for the already signed libs -->
- <jnlpExtensions>
- <jnlpExtension>
- <name>jxlayer</name>
- <title>Swing labs JXLayer</title>
- <vendor>Swing Labs</vendor>
- <includes>
- <include>org.swinglabs:jxlayer</include>
- </includes>
- </jnlpExtension>
- <jnlpExtension>
- <name>bouncycastle</name>
- <title>BouncyCastle</title>
- <vendor>BouncyCastle</vendor>
- <includes>
- <include>bouncycastle:bcmail-jdk14</include>
- <include>bouncycastle:bcprov-jdk14</include>
- </includes>
- </jnlpExtension>
- </jnlpExtensions>
+ <!-- Add some extensions for the already signed libs -->
+ <jnlpExtensions>
+ <jnlpExtension>
+ <name>jxlayer</name>
+ <title>Swing labs JXLayer</title>
+ <vendor>Swing Labs</vendor>
+ <includes>
+ <include>org.swinglabs:jxlayer</include>
+ </includes>
+ </jnlpExtension>
+ <!--jnlpExtension>
+ <name>bouncycastle</name>
+ <title>BouncyCastle</title>
+ <vendor>BouncyCastle</vendor>
+ <includes>
+ <include>bouncycastle:bcmail-jdk14</include>
+ <include>bouncycastle:bcprov-jdk14</include>
+ </includes>
+ </jnlpExtension-->
+ </jnlpExtensions>
- <sign>
- <keystore>${keystorepath}</keystore>
- <storepass>${keystorepass}</storepass>
- <alias>${keyalias}</alias>
- <keypass>${keypass}</keypass>
- <verify>true</verify>
- <keystoreConfig>
- <delete>false</delete>
- <gen>false</gen>
- </keystoreConfig>
- </sign>
+ <sign>
+ <keystore>${keystorepath}</keystore>
+ <storepass>${keystorepass}</storepass>
+ <alias>${keyalias}</alias>
+ <keypass>${keypass}</keypass>
+ <verify>true</verify>
+ <keystoreConfig>
+ <delete>false</delete>
+ <gen>false</gen>
+ </keystoreConfig>
+ </sign>
- </configuration>
- <executions>
- <execution>
- <id>generate-jnlp</id>
- <phase>package</phase>
- <goals>
- <goal>jnlp-inline</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>webstart-maven-plugin</artifactId>
- <version>${webstartPluginVersion}</version>
- </plugin>
- </plugins>
- </reporting>
- </profile>
+ </configuration>
+ <executions>
+ <execution>
+ <id>generate-jnlp</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jnlp-inline</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>webstart-maven-plugin</artifactId>
+ <version>${webstartPluginVersion}</version>
+ </plugin>
+ </plugins>
+ </reporting>
+ </profile>
</profiles>
</project>
Modified: trunk/coser-ui/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/coser-ui/src/license/THIRD-PARTY.properties 2014-03-03 09:56:07 UTC (rev 1131)
+++ trunk/coser-ui/src/license/THIRD-PARTY.properties 2014-03-03 11:55:47 UTC (rev 1132)
@@ -1,10 +1,9 @@
# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
-# - Apache Software License, Version 2.0
# - BSD License
# - BSD-style license
-# - Bouncy Castle License
+# - CDDL
# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
# - Common Public License Version 1.0
# - GNU Affero General Public License v3
@@ -12,14 +11,14 @@
# - GNU General Public License - Version 2 with the class path exception
# - GNU Lesser General Public Licence
# - GNU Lesser General Public License (LGPL), version 2.1
+# - GPLv2+CE
# - Indiana University Extreme! Lab Software License, vesion 1.1.1
# - Lesser General Public License (LGPL)
# - Lesser General Public License (LGPL) v 3.0
# - Lesser General Public License (LPGL)
# - Lesser General Public License (LPGL) v 2.1
-# - License Agreement for JavaMail(TM) API
# - MIT License
-# - Mozilla Public License
+# - MPL 1.1
# - New BSD License
# - OpenMap Software License Agreement
# - The Apache Software License, Version 2.0
@@ -27,10 +26,7 @@
# Please fill the missing licenses for dependencies :
#
#
-#Mon Feb 24 15:58:04 CET 2014
+#Mon Mar 03 10:44:55 CET 2014
commons-jxpath--commons-jxpath--1.3=The Apache Software License, Version 2.0
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
-javassist--javassist--3.8.0.GA=GNU Lesser General Public License
-javax.mail--mail--1.4.1=License Agreement for JavaMail(TM) API
-org.apache.commons--commons-email--1.2=The Apache Software License, Version 2.0
org.nuiton.thirdparty--sdoc--0.5.0-beta-patchcl=GNU GENERAL PUBLIC LICENSE version 2 or higher
Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties
===================================================================
--- trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2014-03-03 09:56:07 UTC (rev 1131)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2014-03-03 11:55:47 UTC (rev 1132)
@@ -15,9 +15,9 @@
coser.ui.common.unselectAll.short=None
coser.ui.common.valid=Valid
coser.ui.common.yes=Yes
-coser.ui.configuration.category.controlselection=
-coser.ui.configuration.category.misc=
-coser.ui.configuration.category.path=
+coser.ui.configuration.category.controlselection=Control and selection
+coser.ui.configuration.category.misc=Misc
+coser.ui.configuration.category.path=Paths
coser.ui.configuration.title=Configuration
coser.ui.control.categorylabel=Displayed data \:
coser.ui.control.checkData=Check data
@@ -123,16 +123,16 @@
coser.ui.project.createProjectMissingReftax=File 'Reftax' is not valid \!\n(check configuration \: coser.reference.species)
coser.ui.project.customReferenceSpeciesFile=New taxonomy reference file \:
coser.ui.project.displaySpeciesType=Display field \:
-coser.ui.project.editProject=
+coser.ui.project.editProject=Edit project
coser.ui.project.haulFile=Haul file \:
coser.ui.project.lValideSpeciesTypeDesc=Species latin name
coser.ui.project.lengthFile=Length file \:
coser.ui.project.maps=Maps \:
coser.ui.project.missingFile=Missing file
-coser.ui.project.newProject=
+coser.ui.project.newProject=New project
coser.ui.project.openError=Open error
coser.ui.project.openProject=Open
-coser.ui.project.openProjectTitle=
+coser.ui.project.openProjectTitle=Open existing project
coser.ui.project.outputSpeciesType=Output field \:
coser.ui.project.project=Project \:
coser.ui.project.projectauthor=Author \:
@@ -150,13 +150,13 @@
coser.ui.project.summary.resultCount=Result count \:
coser.ui.project.summary.selectionCount=Selection count \:
coser.ui.project.summary.strataFileName=Strata file name \:
-coser.ui.project.summary.title=
+coser.ui.project.summary.title=Project summary
coser.ui.project.summary.validated=Control validated \:
-coser.ui.project.useCustomReferenceSpeciesFile=
+coser.ui.project.useCustomReferenceSpeciesFile=Use custom taxonomy reference file
coser.ui.project.usedReferenceSpeciesFile=Current reference file (Reffax) \:
coser.ui.result.addNewResult=Save result
coser.ui.result.addOtherDataFile=Add file
-coser.ui.result.availableDataTitle=
+coser.ui.result.availableDataTitle=Available results \:
coser.ui.result.cancel=Cancel
coser.ui.result.confirmDeleteResult=Do you want to delete result %s ?
coser.ui.result.creationDate=Result date \:
@@ -166,7 +166,7 @@
coser.ui.result.estPopIndFile=ESTPOPind file \:
coser.ui.result.extractDataButton=Export in Rsufi format
coser.ui.result.extractDataLabel=Export directory \:
-coser.ui.result.extractDataTitle=
+coser.ui.result.extractDataTitle=Export RSufi input data
coser.ui.result.mapsDirectory=Maps directory \:
coser.ui.result.newResult=New Result
coser.ui.result.otherDataFile=Other files \:
@@ -190,7 +190,7 @@
coser.ui.result.validEditResult=Modify result
coser.ui.result.validNewResult=Add this result
coser.ui.result.zone=Zone \:
-coser.ui.selection.allSpecies=
+coser.ui.selection.allSpecies=L1 \: All species (%d/%d)
coser.ui.selection.comment=Comment \:
coser.ui.selection.detail.confirmcontrolreload=Are you sure you want to reload controled data ?\nAll modifications done on current selection will be lost.
coser.ui.selection.detail.controldatareloaded=Controled data reloaded.
@@ -206,19 +206,19 @@
coser.ui.selection.details.description=Description \:
coser.ui.selection.details.displayDiffCatchLengthGraph=Comparison catch/length graphs
coser.ui.selection.details.displayDiffCatchLengthGraphTip=Comparison catch/length graphs
-coser.ui.selection.details.filteredSpecies=
+coser.ui.selection.details.filteredSpecies=Filtered species (%d/%d) \:
coser.ui.selection.details.mergeSpeciesTip=Merge/Rename
coser.ui.selection.details.name=Selection name \:
coser.ui.selection.details.removeFromSelectedListTip=Remove selected species from selected species list
coser.ui.selection.details.saveSelection=Save selection
coser.ui.selection.details.selectAllSpeciesTip=Select all
-coser.ui.selection.details.selectedSpecies=
+coser.ui.selection.details.selectedSpecies=L1 \: Selected species (%d/%d) \:
coser.ui.selection.details.showMapTip=Display strata map
coser.ui.selection.details.showSpeciesTip=
coser.ui.selection.details.speciesDataDescription=Haul count by strata and year \:
coser.ui.selection.details.speciescontextmenu=For more options, use species lists contextual menu
-coser.ui.selection.details.strata=
-coser.ui.selection.details.type=
+coser.ui.selection.details.strata=Strata (%d/%d) \:
+coser.ui.selection.details.type=Filter by type (%d/%d) \:
coser.ui.selection.details.unSelectAllSpeciesTip=Unselect all
coser.ui.selection.details.validFilter=Valid filter
coser.ui.selection.details.validSelection=Valid selection
@@ -236,18 +236,18 @@
coser.ui.selection.fusion.name=New name \:
coser.ui.selection.fusion.rename.title=Rename
coser.ui.selection.fusion.title=Merge
-coser.ui.selection.maturitySpecies=
+coser.ui.selection.maturitySpecies=L4 \: Species with maturity (%d/%d)
coser.ui.selection.nonJustifiedMaturity=Maturity species list is not all selected.\nYou must justify this selection with a comment.
coser.ui.selection.nonJustifiedOccurenceDensity=Filtered list selection doesn't match filter selection.\nYou must justify this selection with a comment.
coser.ui.selection.nonJustifiedSizeAllYear=Size all year species list is not all selected.\nYou must justify this selection with a comment.
coser.ui.selection.nonJustifiedTitle=Unjustified selection
-coser.ui.selection.occurrenceDensitySpecies=
+coser.ui.selection.occurrenceDensitySpecies=L2 \: Filtered species (%d/%d)
coser.ui.selection.occurrencedensityrenderer=<html>%s<span style\='font-size\:85%%;color\:gray;'>(Occ\=%.2f, Dens\=%.2f)</span></html>
coser.ui.selection.option.addSelectionFile=Add
coser.ui.selection.option.editFiles=Selection files
coser.ui.selection.option.editFilesTitle=Edit files
coser.ui.selection.option.filesDetails=This files will be saved into current selection and copied into RSufi export.
-coser.ui.selection.option.optionTitle=
+coser.ui.selection.option.optionTitle=Options
coser.ui.selection.option.removeSelectionFile=Remove
coser.ui.selection.option.validSelectionFiles=Save
coser.ui.selection.reloadcontroldata=Reload controled data
@@ -261,7 +261,7 @@
coser.ui.selection.replay.missingstrata=Some strata are missing in current selection \: %s
coser.ui.selection.replay.missingyears=Some years are missing in current selection \: %s
coser.ui.selection.replay.nextstep=Next step
-coser.ui.selection.replay.noerrordetected=
+coser.ui.selection.replay.noerrordetected=No errors detected.
coser.ui.selection.replay.replayTitle=Replay selection
coser.ui.selection.replay.selectioninfos=Selection information \:
coser.ui.selection.rsufidataextracted=RSufi data extracted.
@@ -274,7 +274,7 @@
coser.ui.selection.selectionTitle=Selection step
coser.ui.selection.selectionValidated=Selection validated and saved.
coser.ui.selection.selectionreport=Selection report
-coser.ui.selection.sizeAllYearSpecies=
+coser.ui.selection.sizeAllYearSpecies=L3 \: Species with size all year (%d/%d)
coser.ui.selection.speciesMenuFusion=Merge/Rename
coser.ui.selection.speciesMerged=Species merged.
coser.ui.selection.speciesRenamed=Species renamed.
@@ -288,7 +288,7 @@
coser.ui.uploadresult.exportUploadTitle=Export/Upload
coser.ui.uploadresult.exportupload=Extract/Upload
coser.ui.uploadresult.extract=Extract
-coser.ui.uploadresult.extractChoice=
+coser.ui.uploadresult.extractChoice=Extract to directory
coser.ui.uploadresult.extractTo=Extract directory \:
coser.ui.uploadresult.filter.beginDate=Begin date \:
coser.ui.uploadresult.filter.endDate=End date \:
@@ -304,7 +304,7 @@
coser.ui.uploadresult.selectedResults=Selected results \:
coser.ui.uploadresult.title=Results publication
coser.ui.uploadresult.upload=Send results
-coser.ui.uploadresult.uploadChoice=
+coser.ui.uploadresult.uploadChoice=Upload to server
coser.ui.uploadresult.uploadLogin=Admin login \:
coser.ui.uploadresult.uploadPassword=Admin password \:
coser.ui.uploadresult.zone=Zone
Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties
===================================================================
--- trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2014-03-03 09:56:07 UTC (rev 1131)
+++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2014-03-03 11:55:47 UTC (rev 1132)
@@ -15,9 +15,9 @@
coser.ui.common.unselectAll.short=Aucun
coser.ui.common.valid=Valider
coser.ui.common.yes=Oui
-coser.ui.configuration.category.controlselection=
-coser.ui.configuration.category.misc=
-coser.ui.configuration.category.path=
+coser.ui.configuration.category.controlselection=Contrôle et sélection
+coser.ui.configuration.category.misc=Divers
+coser.ui.configuration.category.path=Chemins
coser.ui.configuration.title=Configuration
coser.ui.control.categorylabel=Données affichées \:
coser.ui.control.checkData=Vérifier les données
@@ -123,16 +123,16 @@
coser.ui.project.createProjectMissingReftax=Le fichier 'Reftax' n'est pas valide \!\n(vérifiez la configuration \: coser.reference.species)
coser.ui.project.customReferenceSpeciesFile=Nouveau fichier de référence taxonomique \:
coser.ui.project.displaySpeciesType=Champ pour affichage \:
-coser.ui.project.editProject=
+coser.ui.project.editProject=Modifier le projet
coser.ui.project.haulFile=Fichier des traits \:
coser.ui.project.lValideSpeciesTypeDesc=Nom latin des espèces
coser.ui.project.lengthFile=Fichier des tailles \:
coser.ui.project.maps=Cartes \:
coser.ui.project.missingFile=Fichier manquant
-coser.ui.project.newProject=
+coser.ui.project.newProject=Nouveau projet
coser.ui.project.openError=Erreur d'ouverture
coser.ui.project.openProject=Ouvrir
-coser.ui.project.openProjectTitle=
+coser.ui.project.openProjectTitle=Ouvrir un projet existant
coser.ui.project.outputSpeciesType=Champ de sortie \:
coser.ui.project.project=Projet \:
coser.ui.project.projectauthor=Auteur \:
@@ -150,13 +150,13 @@
coser.ui.project.summary.resultCount=Nombre de résultats \:
coser.ui.project.summary.selectionCount=Nombre de sélections \:
coser.ui.project.summary.strataFileName=Nom du fichier strates \:
-coser.ui.project.summary.title=
+coser.ui.project.summary.title=Résumé du projet
coser.ui.project.summary.validated=Contrôle validé \:
-coser.ui.project.useCustomReferenceSpeciesFile=
+coser.ui.project.useCustomReferenceSpeciesFile=Utiliser un autre fichier de référence taxonomique
coser.ui.project.usedReferenceSpeciesFile=Fichier de référence utilisé (Reftax) \:
coser.ui.result.addNewResult=Ajouter un résultat
coser.ui.result.addOtherDataFile=Ajouter un fichier
-coser.ui.result.availableDataTitle=
+coser.ui.result.availableDataTitle=Résultats disponibles
coser.ui.result.cancel=Annuler
coser.ui.result.confirmDeleteResult=Êtes vous sûr de vouloir supprimer le résultat %s ?
coser.ui.result.creationDate=Date du résultats \:
@@ -166,7 +166,7 @@
coser.ui.result.estPopIndFile=Fichier ESTPOPind \:
coser.ui.result.extractDataButton=Export au format RSufi
coser.ui.result.extractDataLabel=Dossier d'export \:
-coser.ui.result.extractDataTitle=
+coser.ui.result.extractDataTitle=Export des données en entrée de RSufi
coser.ui.result.mapsDirectory=Répertoire des cartes \:
coser.ui.result.newResult=Nouveau résultat
coser.ui.result.otherDataFile=Autre fichiers \:
@@ -190,7 +190,7 @@
coser.ui.result.validEditResult=Modifier le résultat
coser.ui.result.validNewResult=Ajouter le résultat
coser.ui.result.zone=Zone \:
-coser.ui.selection.allSpecies=
+coser.ui.selection.allSpecies=L1 \: Toutes les espèces (%d/%d)
coser.ui.selection.comment=Commentaire \:
coser.ui.selection.detail.confirmcontrolreload=Êtes vous sûr de vouloir recharger les données contrôlées ?\nToutes les modifications de la sélection en cours seront perdues.
coser.ui.selection.detail.controldatareloaded=Données contrôlées rechargées.
@@ -206,19 +206,19 @@
coser.ui.selection.details.description=Description \:
coser.ui.selection.details.displayDiffCatchLengthGraph=Graphiques des différences captures/tailles
coser.ui.selection.details.displayDiffCatchLengthGraphTip=Graphiques des différences captures/tailles
-coser.ui.selection.details.filteredSpecies=
+coser.ui.selection.details.filteredSpecies=Espèces filtrées (%d/%d) \:
coser.ui.selection.details.mergeSpeciesTip=Fusion/Renommage
coser.ui.selection.details.name=Nom de la sélection \:
coser.ui.selection.details.removeFromSelectedListTip=Retire les espèces sélectionnées de la liste des espèces sélectionnées
coser.ui.selection.details.saveSelection=Sauvegarder la sélection
coser.ui.selection.details.selectAllSpeciesTip=Sélectionner tout
-coser.ui.selection.details.selectedSpecies=
+coser.ui.selection.details.selectedSpecies=L1 \: Espèces sélectionnées (%d/%d) \:
coser.ui.selection.details.showMapTip=Afficher la carte des strates
coser.ui.selection.details.showSpeciesTip=Afficher la table de l'effort d'échantillonage
coser.ui.selection.details.speciesDataDescription=Nombre de traits par strate par année \:
coser.ui.selection.details.speciescontextmenu=Pour plus d'options, utilisez le menu contextuel sur les listes d'espèces
-coser.ui.selection.details.strata=
-coser.ui.selection.details.type=
+coser.ui.selection.details.strata=Strates (%d/%d) \:
+coser.ui.selection.details.type=Filtrer par type (%d/%d) \:
coser.ui.selection.details.unSelectAllSpeciesTip=Désélectionner tout
coser.ui.selection.details.validFilter=Valider les filtres
coser.ui.selection.details.validSelection=Valider la sélection
@@ -236,18 +236,18 @@
coser.ui.selection.fusion.name=Nouveau nom \:
coser.ui.selection.fusion.rename.title=Renommage
coser.ui.selection.fusion.title=Fusion
-coser.ui.selection.maturitySpecies=
+coser.ui.selection.maturitySpecies=L4 \: Espèces avec maturité (%d/%d)
coser.ui.selection.nonJustifiedMaturity=La liste espèces avec maturité n'est pas entièrement sélectionnée.\nVous devez justifier cette sélection par un commentaire.
coser.ui.selection.nonJustifiedOccurenceDensity=La sélection de la liste filtrée ne correspond pas à la sélection opérée par le filtre.\nVous devez justifier cette sélection par un commentaire.
coser.ui.selection.nonJustifiedSizeAllYear=La liste espèces avec des tailles pour toutes les années n'est pas entièrement sélectionnée.\nVous devez justifier cette sélection par un commentaire.
coser.ui.selection.nonJustifiedTitle=Sélection non justifiée
-coser.ui.selection.occurrenceDensitySpecies=
+coser.ui.selection.occurrenceDensitySpecies=L2 \: Espèces filtrées (%d/%d)
coser.ui.selection.occurrencedensityrenderer=<html>%s<span style\='font-size\:85%%;color\:gray;'>(Occ\=%.2f, Dens\=%.2f)</span></html>
coser.ui.selection.option.addSelectionFile=Ajouter
coser.ui.selection.option.editFiles=Fichiers de la sélection
coser.ui.selection.option.editFilesTitle=Modifier les fichiers
coser.ui.selection.option.filesDetails=Les fichiers suivants seront sauvegardés dans la sélection courante et copier dans l'export RSufi.
-coser.ui.selection.option.optionTitle=
+coser.ui.selection.option.optionTitle=Options
coser.ui.selection.option.removeSelectionFile=Supprimer
coser.ui.selection.option.validSelectionFiles=Sauver
coser.ui.selection.reloadcontroldata=Recharger les données contrôlées
@@ -261,7 +261,7 @@
coser.ui.selection.replay.missingstrata=Certaines strates de la séléction à rejouer sont manquantes \: %s
coser.ui.selection.replay.missingyears=Certaines années de la séléction à rejouer sont manquantes \: %s
coser.ui.selection.replay.nextstep=Étape suivante
-coser.ui.selection.replay.noerrordetected=
+coser.ui.selection.replay.noerrordetected=Aucune erreur détéctée.
coser.ui.selection.replay.replayTitle=Rejouer une sélection
coser.ui.selection.replay.selectioninfos=Information sur la sélection \:
coser.ui.selection.rsufidataextracted=Données RSufi extraites.
@@ -274,7 +274,7 @@
coser.ui.selection.selectionTitle=Étape de sélection
coser.ui.selection.selectionValidated=Sélection validée et sauvée.
coser.ui.selection.selectionreport=Rapport de la sélection
-coser.ui.selection.sizeAllYearSpecies=
+coser.ui.selection.sizeAllYearSpecies=L3 \: Espèces avec taille pour toutes les années (%d/%d)
coser.ui.selection.speciesMenuFusion=Fusion/Renommage
coser.ui.selection.speciesMerged=Espèces fusionnées.
coser.ui.selection.speciesRenamed=Espèce renommée.
@@ -288,7 +288,7 @@
coser.ui.uploadresult.exportUploadTitle=Exporter/Uploader
coser.ui.uploadresult.exportupload=Exporter/Uploader
coser.ui.uploadresult.extract=Extraire
-coser.ui.uploadresult.extractChoice=
+coser.ui.uploadresult.extractChoice=Extraire vers un dossier
coser.ui.uploadresult.extractTo=Dossier d'extraction \:
coser.ui.uploadresult.filter.beginDate=Date de début \:
coser.ui.uploadresult.filter.endDate=Date de fin \:
@@ -304,7 +304,7 @@
coser.ui.uploadresult.selectedResults=Résultats sélectionnés \:
coser.ui.uploadresult.title=Publication des résultats
coser.ui.uploadresult.upload=Envoyer les résultats
-coser.ui.uploadresult.uploadChoice=
+coser.ui.uploadresult.uploadChoice=Envoyer sur le serveur
coser.ui.uploadresult.uploadLogin=Login admin \:
coser.ui.uploadresult.uploadPassword=Mot de passe admin \:
coser.ui.uploadresult.zone=Zone
Modified: trunk/coser-web/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/coser-web/src/license/THIRD-PARTY.properties 2014-03-03 09:56:07 UTC (rev 1131)
+++ trunk/coser-web/src/license/THIRD-PARTY.properties 2014-03-03 11:55:47 UTC (rev 1132)
@@ -3,24 +3,24 @@
# Already used licenses in project :
# - BSD License
# - BSD-style license
-# - Bouncy Castle License
+# - CDDL
# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
# - GNU Affero General Public License v3
# - GNU Lesser General Public Licence
# - GNU Lesser General Public License (LGPL), version 2.1
+# - GPLv2+CE
# - Indiana University Extreme! Lab Software License, vesion 1.1.1
# - Lesser General Public License (LGPL) v 3.0
# - Lesser General Public License (LPGL)
# - Lesser General Public License (LPGL) v 2.1
# - MIT License
-# - Mozilla Public License
+# - MPL 1.1
# - The Apache Software License, Version 1.1
# - The Apache Software License, Version 2.0
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
-#Mon Feb 24 16:05:06 CET 2014
+#Mon Mar 03 11:36:13 CET 2014
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
-javassist--javassist--3.8.0.GA=GNU Lesser General Public License
javax.servlet--servlet-api--2.5=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
1
0
Author: tchemit
Date: 2014-03-03 10:56:07 +0100 (Mon, 03 Mar 2014)
New Revision: 1131
Url: http://codelutin.com/projects/coser/repository/revisions/1131
Log:
remove business module site
Removed:
trunk/coser-business/src/site/
1
0
Author: tchemit
Date: 2014-03-03 10:44:51 +0100 (Mon, 03 Mar 2014)
New Revision: 1130
Url: http://codelutin.com/projects/coser/repository/revisions/1130
Log:
refs #4546: Updates dependencies
Modified:
trunk/pom.xml
trunk/src/site/site_fr.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-03-03 09:27:09 UTC (rev 1129)
+++ trunk/pom.xml 2014-03-03 09:44:51 UTC (rev 1130)
@@ -81,7 +81,7 @@
<jaxxVersion>2.8.2-SNAPSHOT</jaxxVersion>
<nuitonI18nVersion>3.0</nuitonI18nVersion>
<nuitonMatrixVersion>2.4-SNAPSHOT</nuitonMatrixVersion>
- <struts.version>2.3.8</struts.version>
+ <struts.version>2.3.16</struts.version>
</properties>
<repositories>
@@ -176,7 +176,7 @@
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
- <version>1.0.14</version>
+ <version>1.0.17</version>
<exclusions>
<exclusion>
<artifactId>xml-apis</artifactId>
@@ -188,7 +188,7 @@
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jcommon</artifactId>
- <version>1.0.17</version>
+ <version>1.0.21</version>
</dependency>
<dependency>
@@ -237,7 +237,7 @@
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
- <version>3.8.0.GA</version>
+ <version>3.12.1.GA</version>
<scope>runtime</scope>
</dependency>
@@ -251,19 +251,19 @@
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
- <version>5.3.4</version>
+ <version>5.5.0</version>
</dependency>
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf-itext5</artifactId>
- <version>9.0.1</version>
+ <version>9.0.4</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
- <version>2.3.19</version>
+ <version>2.3.20</version>
</dependency>
</dependencies>
Modified: trunk/src/site/site_fr.xml
===================================================================
--- trunk/src/site/site_fr.xml 2014-03-03 09:27:09 UTC (rev 1129)
+++ trunk/src/site/site_fr.xml 2014-03-03 09:44:51 UTC (rev 1130)
@@ -91,7 +91,7 @@
</item>
</menu>
- <menu ref="modules"/>
+ <!--<menu ref="modules"/>-->
<menu ref="reports"/>
1
0