Tutti-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
November 2013
- 5 participants
- 100 discussions
21 Nov '13
Author: tchemit
Date: 2013-11-21 16:41:34 +0100 (Thu, 21 Nov 2013)
New Revision: 1370
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1370
Log:
fixes #3803: [CAPTURE] ?\195?\169l?\195?\169vations : marche pas en .csv et .pdf depuis l'onglet r?\195?\169sum?\195?\169 (improve export design, use unique code for all export, ...)
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportBatchEntry.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ExportSampleCategory.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/CatchesPdfExportService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/ExportCatchContext.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/PdfExportBatchEntry.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportService.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceTest.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/pdf/
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/pdf/CatchesPdfExportServiceTest.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportServiceTest.java
Removed:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportSampleCategory.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/GearCaracteristicExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/GearCaracteristicExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SpeciesExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SpeciesExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchRowModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchesSumatraExportService.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/ExportCatchesReportServiceTest.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportService2Test.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/sumatra/CatchesSumatraExportServiceTest.java
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseForSumatraAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ExportFishingOperationForSumatraAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ExportFishingOperationReportAction.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -24,6 +24,7 @@
* #L%
*/
+import com.google.common.base.Predicate;
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
@@ -269,12 +270,10 @@
Caracteristic getCaracteristic(Integer pmfmId);
+ Predicate<SpeciesAbleBatch> getVracBatchPredicate();
+
boolean isVracBatch(SpeciesAbleBatch speciesBatch);
-// boolean isVracSpeciesBatch(SpeciesBatch speciesBatch);
-
-// boolean isVracBenthosBatch(BenthosBatch benthosBatch);
-
boolean isTemporary(TuttiReferentialEntity entity);
List<Gear> getAllScientificGear();
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -139,12 +139,8 @@
@Autowired
protected DatabaseSchemaDao databaseSchemaDao;
- protected Predicate<SpeciesAbleBatch> speciesAbleBatchVracPredicate;
+ protected Predicate<SpeciesAbleBatch> batchVracPredicate;
-// protected Predicate<SpeciesBatch> speciesBatchVracPredicate;
-//
-// protected Predicate<BenthosBatch> benthosBatchVracPredicate;
-
@Override
public String getImplementationName() {
return "Persistence Adagio implementation";
@@ -229,9 +225,7 @@
TuttiEnumerationFile enumerationFile = getEnumerationFile();
- speciesAbleBatchVracPredicate = TuttiEntities.newSpeciesAbleBatchCategoryPredicate(enumerationFile.PMFM_ID_SORTED_UNSORTED, enumerationFile.QUALITATIVE_VRAC_ID);
-// speciesBatchVracPredicate = TuttiEntities.newSpeciesBatchCategoryPredicate(enumerationFile.PMFM_ID_SORTED_UNSORTED, enumerationFile.QUALITATIVE_VRAC_ID);
-// benthosBatchVracPredicate = TuttiEntities.newBenthosBatchCategoryPredicate(enumerationFile.PMFM_ID_SORTED_UNSORTED, enumerationFile.QUALITATIVE_VRAC_ID);
+ batchVracPredicate = TuttiEntities.newSpeciesAbleBatchCategoryPredicate(enumerationFile.PMFM_ID_SORTED_UNSORTED, enumerationFile.QUALITATIVE_VRAC_ID);
}
@Override
@@ -421,18 +415,13 @@
@Override
public boolean isVracBatch(SpeciesAbleBatch speciesBatch) {
- return speciesAbleBatchVracPredicate.apply(speciesBatch);
+ return batchVracPredicate.apply(speciesBatch);
}
-// @Override
-// public boolean isVracSpeciesBatch(SpeciesBatch speciesBatch) {
-// return speciesBatchVracPredicate.apply(speciesBatch);
-// }
-//
-// @Override
-// public boolean isVracBenthosBatch(BenthosBatch benthosBatch) {
-// return benthosBatchVracPredicate.apply(benthosBatch);
-// }
+ @Override
+ public Predicate<SpeciesAbleBatch> getVracBatchPredicate() {
+ return batchVracPredicate;
+ }
@Override
public boolean isTemporary(TuttiReferentialEntity entity) {
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -24,6 +24,7 @@
* #L%
*/
+import com.google.common.base.Predicate;
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
@@ -97,16 +98,6 @@
throw notImplemented();
}
-// @Override
-// public boolean isVracSpeciesBatch(SpeciesBatch speciesBatch) {
-// throw notImplemented();
-// }
-//
-// @Override
-// public boolean isVracBenthosBatch(BenthosBatch benthosBatch) {
-// throw notImplemented();
-// }
-
@Override
public void clearAllCaches() {
throw notImplemented();
@@ -263,6 +254,11 @@
}
@Override
+ public Predicate<SpeciesAbleBatch> getVracBatchPredicate() {
+ throw notImplemented();
+ }
+
+ @Override
public boolean isTemporary(TuttiReferentialEntity entity) {
throw notImplemented();
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -26,6 +26,7 @@
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import fr.ifremer.tutti.TuttiBusinessException;
@@ -837,6 +838,11 @@
}
@Override
+ public Predicate<SpeciesAbleBatch> getVracBatchPredicate() {
+ return driver.getVracBatchPredicate();
+ }
+
+ @Override
public boolean isTemporary(TuttiReferentialEntity entity) {
return driver.isTemporary(entity);
}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,493 +0,0 @@
-package fr.ifremer.tutti.service.catches;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import fr.ifremer.tutti.TuttiBusinessException;
-import fr.ifremer.tutti.TuttiTechnicalException;
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
-import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
-import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
-import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.service.AbstractTuttiService;
-import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.service.TuttiServiceContext;
-import freemarker.cache.ClassTemplateLoader;
-import freemarker.ext.beans.BeansWrapper;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.xhtmlrenderer.pdf.ITextRenderer;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * @author kmorin <kmorin(a)codelutin.com>
- * @since 2.0
- */
-public class ExportCatchesReportService extends AbstractTuttiService {
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(ExportCatchesReportService.class);
-
- protected Configuration freemarkerConfiguration;
-
- protected PersistenceService persistenceService;
-
- protected WeightComputingService weightComputingService;
-
- public ExportCatchesReportService() {
- super();
-
- 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(ExportCatchesReportService.class, "/ftl");
- freemarkerConfiguration.setTemplateLoader(templateLoader);
-
- // pour les maps dans les template (entre autre)
- freemarkerConfiguration.setObjectWrapper(new BeansWrapper());
- }
-
- @Override
- public void setServiceContext(TuttiServiceContext context) {
- super.setServiceContext(context);
- persistenceService = getService(PersistenceService.class);
- weightComputingService = getService(WeightComputingService.class);
- }
-
- /**
- * Generate the PDF report for the fiven cruise.
- *
- * @param targetFile pdf file to generate
- * @param locale generated pdf locale
- * @throws TuttiBusinessException
- */
- public void generateCruisePDFFile(File targetFile,
- String cruiseId,
- Locale locale) throws TuttiBusinessException {
-
-
- List<String> allFishingOperation =
- persistenceService.getAllFishingOperationIds(cruiseId);
-
- List<Map<String, Object>> operations = Lists.newArrayList();
- for (String operationId : allFishingOperation) {
-
- prepareOperation(operationId, operations);
-
- }
-
- generatePdf(targetFile, locale, operations);
- }
-
- /**
- * Generate the PDF report for the given fishing operation.
- *
- * @param targetFile pdf file to generate
- * @param fishingOperationId id of the fishing operation to export
- * @param locale generated pdf locale
- * @throws TuttiBusinessException
- * @since 2.7
- */
- public void generateFishingOperationPDFFile(File targetFile,
- String fishingOperationId,
- Locale locale) throws TuttiBusinessException {
-
- List<Map<String, Object>> operations = Lists.newArrayList();
-
- prepareOperation(fishingOperationId, operations);
-
- generatePdf(targetFile, locale, operations);
- }
-
- protected void prepareOperation(String fishingOperationId,
- List<Map<String, Object>> operations) {
-
- // get operation and catch data
- boolean withCatchBatch =
- persistenceService.isFishingOperationWithCatchBatch(
- fishingOperationId);
-
- if (!withCatchBatch) {
- if (log.isWarnEnabled()) {
- log.warn("Skip fishing operation " + fishingOperationId +
- " since no catchBatch associated.");
- }
- return;
- }
-
- FishingOperation fishingOperation =
- persistenceService.getFishingOperation(fishingOperationId);
-
- CatchBatch catchBatch =
- persistenceService.getCatchBatchFromFishingOperation(fishingOperationId);
-
- BatchContainer<SpeciesBatch> rootSpeciesBatch =
- weightComputingService.getComputedSpeciesBatches(fishingOperationId);
-
- BatchContainer<BenthosBatch> rootBenthosBatch =
- weightComputingService.getComputedBenthosBatches(fishingOperationId);
-
- BatchContainer<MarineLitterBatch> marineLitterBatches =
- weightComputingService.getComputedMarineLitterBatches(
- fishingOperationId,
- catchBatch.getMarineLitterTotalWeight());
- weightComputingService.computeCatchBatchWeights(catchBatch,
- rootSpeciesBatch,
- rootBenthosBatch,
- marineLitterBatches);
-
- // create operation data model
- Map<String, Object> op = createOperation(fishingOperation);
-
- float totalWeight = TuttiEntities.getValueOrComputedValue(
- catchBatch.getCatchTotalWeight(),
- catchBatch.getCatchTotalComputedWeight());
-
- op.put("totalWeight", totalWeight);
-
- op.put("totalSortedWeight", catchBatch.getSpeciesTotalSampleSortedComputedWeight() + catchBatch.getBenthosTotalSampleSortedComputedWeight());
-
- // create catches data model
-
- // Species
-
- Map<Species, SpeciesBatchEntry> catches = Maps.newHashMap();
-
- float globalRatio = (totalWeight - catchBatch.getCatchTotalUnsortedComputedWeight()) / catchBatch.getCatchTotalSortedComputedWeight();
-
- float speciesTotalSortedWeight = TuttiEntities.getValueOrComputedValue(
- catchBatch.getSpeciesTotalSortedWeight(),
- catchBatch.getSpeciesTotalSortedComputedWeight());
-
- // ratio total species weight / total sorted sampled species weight
- float speciesRatio = globalRatio * speciesTotalSortedWeight;
- if (catchBatch.getSpeciesTotalSampleSortedComputedWeight() > 0) {
- speciesRatio /= catchBatch.getSpeciesTotalSampleSortedComputedWeight();
- }
-
- // create catches rows
- if (rootSpeciesBatch != null) {
-
- List<SpeciesBatch> speciesBatches = rootSpeciesBatch.getChildren();
- for (SpeciesBatch batch : speciesBatches) {
-
- createSpeciesCatch(batch, catches, speciesRatio);
- }
- }
-
- List<SpeciesBatchEntry> catchList = Lists.newArrayList(catches.values());
-
- // Benthos
-
- float benthosTotalSortedWeight = TuttiEntities.getValueOrComputedValue(
- catchBatch.getBenthosTotalSortedWeight(),
- catchBatch.getBenthosTotalSortedComputedWeight());
-
- // ratio total benthos weight / total sorted sampled benthos weight
- float benthosRatio = globalRatio * benthosTotalSortedWeight;
- if (catchBatch.getBenthosTotalSampleSortedComputedWeight() > 0) {
- benthosRatio /= catchBatch.getBenthosTotalSampleSortedComputedWeight();
- }
-
- // add the benthos row
- if (rootBenthosBatch != null) {
-
- if (CollectionUtils.isNotEmpty(rootBenthosBatch.getChildren())) {
- SpeciesBatchEntry benthosCatch =
- createBenthosCatch(rootBenthosBatch, benthosRatio);
- catchList.add(benthosCatch);
- }
- }
-
- // Inert and living not itemized
- SpeciesBatchEntry inertLivingNotItemizedCatch =
- createInertAndLivingNotItemizedCatch(catchBatch,
- speciesRatio,
- benthosRatio);
- if (inertLivingNotItemizedCatch.getSortedWeight() > 0f) {
- catchList.add(inertLivingNotItemizedCatch);
- }
-
- if (log.isDebugEnabled()) {
-
- // recompute total for check
- float computedTotalWeight = 0f;
- float computedPercentage = 0f;
- for (SpeciesBatchEntry entry : catchList) {
- entry.computePercentage(totalWeight);
- computedTotalWeight += entry.getTotalWeight();
- computedPercentage += entry.getPercentage();
- }
- log.debug("TotalWeight: " + totalWeight);
- log.debug("ComputedTotalWeight: " + computedTotalWeight);
- log.debug("ComputedPercentage: " + computedPercentage);
- }
- op.put("catches", catchList);
- operations.add(op);
- }
-
- protected void generatePdf(File targetFile, Locale locale, List<Map<String, Object>> operations) {
-
- Map<String, Object> data = Maps.newHashMap();
- data.put("operations", operations);
- // generate the report
- OutputStream os = null;
- try {
-
- // render freemarker template
- Template mapTemplate = freemarkerConfiguration.getTemplate("catchesReport.ftl", locale);
-
- Writer out = new StringWriter();
- mapTemplate.process(data, out);
- out.flush();
-
- // render template output as pdf
- os = new FileOutputStream(targetFile);
-
- ITextRenderer renderer = new ITextRenderer();
- renderer.setDocumentFromString(out.toString());
- renderer.layout();
- renderer.createPDF(os);
-
- os.close();
-
- } catch (Exception ex) {
- throw new TuttiTechnicalException(_("tutti.service.operations.exportCatchesReport.error"), ex);
- } finally {
- IOUtils.closeQuietly(os);
- }
- }
-
- protected Map<String, Object> createOperation(FishingOperation fishingOperation) {
- Map<String, Object> op = Maps.newHashMap();
- op.put("number", fishingOperation.getFishingOperationNumber());
- op.put("station", fishingOperation.getStationNumber());
- op.put("rigNumber", fishingOperation.getMultirigAggregation());
- op.put("startDate", fishingOperation.getGearShootingStartDate());
- op.put("endDate", fishingOperation.getGearShootingEndDate());
-
- return op;
- }
-
- protected void createSpeciesCatch(SpeciesBatch batch,
- Map<Species, SpeciesBatchEntry> catches,
- float ratio) {
-
- Species species = batch.getSpecies();
-
- SpeciesBatchEntry ktch = catches.get(species);
- if (ktch == null) {
- Species speciesWithVerncularCode =
- persistenceService.getSpeciesByReferenceTaxonIdWithVernacularCode(species.getReferenceTaxonId());
-
- ktch = new SpeciesBatchEntry(
- species.getRefTaxCode(),
- species.getName(),
- speciesWithVerncularCode.getVernacularCode()
- );
- catches.put(species, ktch);
- }
-
- float sortedWeight = TuttiEntities.getValueOrComputedValue(
- batch.getSampleCategoryWeight(),
- batch.getSampleCategoryComputedWeight());
-
- ktch.addSortedWeight(sortedWeight);
-
- float speciesTotalWeight = sortedWeight;
- if (persistenceService.isVracBatch(batch)) {
- speciesTotalWeight *= ratio;
- }
- ktch.addTotalWeight(speciesTotalWeight);
- }
-
- protected SpeciesBatchEntry createBenthosCatch(BatchContainer<BenthosBatch> rootBenthosBatch,
- float ratio) {
- SpeciesBatchEntry ktch = new SpeciesBatchEntry(
- _("tutti.service.operations.exportCatchesReport.specialRows.benthos.code"),
- "",
- _("tutti.service.operations.exportCatchesReport.specialRows.benthos.name")
- );
-
- float sortedWeight = 0f;
- float benthosTotalWeight = 0f;
- List<BenthosBatch> benthosBatches = rootBenthosBatch.getChildren();
- for (BenthosBatch batch : benthosBatches) {
- float batchWeight = TuttiEntities.getValueOrComputedValue(
- batch.getSampleCategoryWeight(),
- batch.getSampleCategoryComputedWeight());
- sortedWeight += batchWeight;
- if (persistenceService.isVracBatch(batch)) {
- batchWeight *= ratio;
- }
- benthosTotalWeight += batchWeight;
- }
- ktch.addSortedWeight(sortedWeight);
- ktch.addTotalWeight(benthosTotalWeight);
-
- return ktch;
- }
-
- protected SpeciesBatchEntry createInertAndLivingNotItemizedCatch(CatchBatch catchBatch,
- float speciesRatio,
- float benthosRatio) {
- SpeciesBatchEntry ktch = new SpeciesBatchEntry(
- _("tutti.service.operations.exportCatchesReport.specialRows.inertAndLivinngNotItemized.code"),
- "",
- _("tutti.service.operations.exportCatchesReport.specialRows.inertAndLivinngNotItemized.name"));
-
- float sortedWeight = 0f;
- float totalWeight = 0f;
-
- Float speciesInterWeight = TuttiEntities.getValueOrComputedValue(
- catchBatch.getSpeciesTotalInertWeight(),
- catchBatch.getSpeciesTotalInertComputedWeight());
-
- if (speciesInterWeight != null) {
- sortedWeight += speciesInterWeight;
- totalWeight += speciesInterWeight * speciesRatio;
- }
-
- Float speciesLivingNotItemizedWeigth = TuttiEntities.getValueOrComputedValue(
- catchBatch.getSpeciesTotalLivingNotItemizedWeight(),
- catchBatch.getSpeciesTotalLivingNotItemizedComputedWeight());
-
- if (speciesLivingNotItemizedWeigth != null) {
- sortedWeight += speciesLivingNotItemizedWeigth;
- totalWeight += speciesLivingNotItemizedWeigth * speciesRatio;
- }
-
- Float benthosInterWeight = TuttiEntities.getValueOrComputedValue(
- catchBatch.getBenthosTotalInertWeight(),
- catchBatch.getBenthosTotalInertComputedWeight());
-
- if (benthosInterWeight != null) {
- sortedWeight += benthosInterWeight;
- totalWeight += benthosInterWeight * benthosRatio;
- }
-
- Float benthosLivingNotItemizedWeight = TuttiEntities.getValueOrComputedValue(
- catchBatch.getBenthosTotalLivingNotItemizedWeight(),
- catchBatch.getBenthosTotalLivingNotItemizedComputedWeight());
-
- if (benthosLivingNotItemizedWeight != null) {
- sortedWeight += benthosLivingNotItemizedWeight;
- totalWeight += benthosLivingNotItemizedWeight * benthosRatio;
- }
-
- ktch.addSortedWeight(sortedWeight);
- ktch.addTotalWeight(totalWeight);
-
- return ktch;
- }
-
- /**
- * To store a species or batch entry within his speices informations,
- * his sorted weight, total weight and percentage amoong the total catch
- * weight.
- *
- * @since 2.10
- */
- public static class SpeciesBatchEntry {
-
- protected final String code;
-
- protected final String scientificName;
-
- protected final String commonName;
-
- float sortedWeight;
-
- float totalWeight;
-
- float percentage;
-
- SpeciesBatchEntry(String code, String scientificName, String commonName) {
- this.code = code;
- this.scientificName = scientificName;
- this.commonName = commonName;
- }
-
- public void addSortedWeight(float weight) {
- sortedWeight += weight;
- }
-
- public void addTotalWeight(float weight) {
- totalWeight += weight;
- }
-
- public void computePercentage(float totalWeight) {
- this.percentage = 100 * this.totalWeight / totalWeight;
- }
-
- public String getCode() {
- return code;
- }
-
- public String getScientificName() {
- return scientificName;
- }
-
- public String getCommonName() {
- return commonName;
- }
-
- public float getSortedWeight() {
- return sortedWeight;
- }
-
- public float getTotalWeight() {
- return totalWeight;
- }
-
- public float getPercentage() {
- return percentage;
- }
- }
-}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -301,8 +301,10 @@
marineLitterTotalComputedWeight += rowWeight;
}
}
- catchBatch.setMarineLitterTotalComputedWeight(
- TuttiEntities.roundKiloGram(marineLitterTotalComputedWeight));
+ if (marineLitterTotalComputedWeight != null) {
+ catchBatch.setMarineLitterTotalComputedWeight(
+ TuttiEntities.roundKiloGram(marineLitterTotalComputedWeight));
+ }
Float marineLitterTotalWeight = catchBatch.getMarineLitterTotalWeight();
if (marineLitterTotalWeight == null) {
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportModel.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,170 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
-import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.MapUtils;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.2
- */
-public class AccidentalCatchExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<AccidentalCatchExportRow> {
-
- protected final Caracteristic caracteristicDeadOrAliveSize;
-
- protected final Caracteristic caracteristicGender;
-
- protected final Caracteristic caracteristicWeight;
-
- protected final Caracteristic caracteristicPmfmId;
-
- public AccidentalCatchExportModel(
- char separator,
- Caracteristic caracteristicDeadOrAliveSize,
- Caracteristic caracteristicGender,
- Caracteristic caracteristicWeight,
- Caracteristic caracteristicPmfmId) {
- super(separator);
-
- this.caracteristicDeadOrAliveSize = caracteristicDeadOrAliveSize;
- this.caracteristicGender = caracteristicGender;
- this.caracteristicWeight = caracteristicWeight;
- this.caracteristicPmfmId = caracteristicPmfmId;
-
- newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
- newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
- newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
- newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME);
- newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER);
- newColumnForExport("Numero_Trait", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
- newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
- newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER);
-
- newColumnForExport("BatchId", AccidentalCatchExportRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
- newColumnForExport("ReferenceTaxonId", AccidentalBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
- newColumnForExport("ReferenceTaxonName", AccidentalBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME);
- newColumnForExport("Commentaire", AccidentalBatch.PROPERTY_COMMENT);
- newColumnForExport("CaracteristicId", AccidentalCatchExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
- newColumnForExport("CaracteristicValue", AccidentalCatchExportRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
- }
-
- public void prepareRows(PersistenceService persistenceService,
- List<AccidentalCatchExportRow> rows,
- Cruise cruise,
- FishingOperation operation) {
-
- List<AccidentalBatch> observations =
- persistenceService.getAllAccidentalBatch(operation.getId());
-
- if (CollectionUtils.isNotEmpty(observations)) {
- for (AccidentalBatch child : observations) {
-
- addCaracteristicRow(rows,
- cruise,
- operation,
- child,
- caracteristicDeadOrAliveSize,
- child.getDeadOrAlive());
-
- addCaracteristicRow(rows,
- cruise,
- operation,
- child,
- caracteristicGender,
- child.getGender());
-
- addCaracteristicRow(rows,
- cruise,
- operation,
- child,
- caracteristicWeight,
- child.getWeight());
-
- if (child.getLengthStepCaracteristic() != null) {
- addCaracteristicRow(rows,
- cruise,
- operation,
- child,
- caracteristicPmfmId,
- child.getLengthStepCaracteristic().getIdAsInt());
-
- addCaracteristicRow(rows,
- cruise,
- operation,
- child,
- child.getLengthStepCaracteristic(),
- child.getSize());
- }
-
- CaracteristicMap caracteristics = child.getCaracteristics();
- if (MapUtils.isNotEmpty(caracteristics)) {
- for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) {
- addCaracteristicRow(rows,
- cruise,
- operation,
- child,
- entry.getKey(),
- entry.getValue());
- }
- }
- }
- }
- }
-
- private void addCaracteristicRow(List<AccidentalCatchExportRow> rows,
- Cruise cruise,
- FishingOperation operation,
- AccidentalBatch child,
- Caracteristic caracteristic,
- Serializable caracteristicValue) {
- if (caracteristicValue != null) {
-
- AccidentalCatchExportRow row = new AccidentalCatchExportRow();
- row.setCruise(cruise);
- row.setFishingOperation(operation);
- row.setBatch(child);
- row.setCaracteristic(caracteristic);
- row.setCaracteristicValue(caracteristicValue);
- rows.add(row);
- }
- }
-}
\ No newline at end of file
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportRow.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,139 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.persistence.entities.referential.Vessel;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * A row in a accidental catch export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.2
- */
-public class AccidentalCatchExportRow implements Serializable {
-
- public static final String PROPERTY_BATCH = "batch";
-
- private static final long serialVersionUID = 1L;
-
- public static final String PROPERTY_BATCH_ID = "batchId";
-
- public static final String PROPERTY_CARACTERISTIC = "caracteristic";
-
- public static final String PROPERTY_CARACTERISTIC_VALUE = "caracteristicValue";
-
- protected Cruise cruise;
-
- protected FishingOperation fishingOperation;
-
- protected AccidentalBatch batch;
-
- protected Caracteristic caracteristic;
-
- protected Serializable caracteristicValue;
-
- public void setCruise(Cruise cruise) {
- this.cruise = cruise;
- }
-
- public void setFishingOperation(FishingOperation fishingOperation) {
- this.fishingOperation = fishingOperation;
- }
-
- public void setBatch(AccidentalBatch batch) {
- this.batch = batch;
- }
-
- public void setCaracteristic(Caracteristic caracteristic) {
- this.caracteristic = caracteristic;
- }
-
- public void setCaracteristicValue(Serializable caracteristicValue) {
- this.caracteristicValue = caracteristicValue;
- }
-
- public Integer getBatchId() {
- return batch.getIdAsInt();
- }
-
- public Caracteristic getCaracteristic() {
- return caracteristic;
- }
-
- public Serializable getCaracteristicValue() {
- return caracteristicValue;
- }
-
- public String getComment() {
- return batch.getComment();
- }
-
- public Species getSpecies() {
- return batch.getSpecies();
- }
-
- public Date getBeginDate() {
- return cruise.getBeginDate();
- }
-
- public Program getProgram() {
- return cruise.getProgram();
- }
-
- public String getSurveyPart() {
- return cruise.getSurveyPart();
- }
-
- public String getStationNumber() {
- return fishingOperation.getStationNumber();
- }
-
- public Integer getFishingOperationNumber() {
- return fishingOperation.getFishingOperationNumber();
- }
-
- public Gear getGear() {
- return fishingOperation.getGear();
- }
-
- public Vessel getVessel() {
- return fishingOperation.getVessel();
- }
-
- public String getMultirigAggregation() {
- return fishingOperation.getMultirigAggregation();
- }
-
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,457 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
-import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
-import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
-import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry;
-import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
-import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.service.DecoratorService;
-import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-import org.apache.commons.collections.CollectionUtils;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * Model of a catch export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.3
- */
-public class CatchExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<CatchExportRow> {
-
- public static final String WEIGHT_OR_VOL_TYPE = "Poids";
-
- protected SampleCategoryModel sampleCategoryModel;
-
- public CatchExportModel(char separator,
- SampleCategoryModel sampleCategoryModel,
- DecoratorService decoratorService) {
- super(separator);
- this.sampleCategoryModel = sampleCategoryModel;
-
- newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
- newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
- newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
- newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME);
- newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER);
- newColumnForExport("Numero_Trait", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
- newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
- newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER);
- newColumnForExport("Taxon", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.INTEGER);
- newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME);
- newColumnForExport("Commentaire", SpeciesBatch.PROPERTY_COMMENT);
-
- for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) {
- addSampleCategory(entry.getCanonicalLabel(), entry.getOrder());
- }
-
- // mensuration
-
- newNullableColumnForExport("Code_Longueur", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_ID);
- newNullableColumnForExportByDecorator("Libelle_Longueur", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class));
- newNullableColumnForExport("Taille", CatchExportRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("NumOrdre_Taille_H2", CatchExportRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER);
- newNullableColumnForExport("Poids_Classe_Taille", CatchExportRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Unite_Taille", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_UNIT);
- newNullableColumnForExport("Precision_Mesure", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_PRECISION, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Nbr", CatchExportRow.BATCH_NUMBER, TuttiCsvUtil.INTEGER);
-
- newColumnForExport("Poids_Reference", CatchExportRow.REFERENCE_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT);
- newColumnForExport("Coef_Elev_Espece_Capture", CatchExportRow.RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT);
- }
-
- public void prepareRows(PersistenceService persistenceService,
- List<CatchExportRow> rows,
- Cruise cruise,
- FishingOperation operation,
- BatchContainer<SpeciesBatch> rootSpeciesBatch,
- BatchContainer<BenthosBatch> rootBenthosBatch,
- Float speciesCatchRaisingFactor,
- Float benthosCatchRaisingFactor) {
-
- Caracteristic weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic();
- String batchWeightUnit = weightMeasuredCaracteristic.getUnit();
-
- for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) {
- CatchExportRow row = new CatchExportRow();
- row.setCruise(cruise);
- row.setFishingOperation(operation);
- row.setSpecies(speciesBatch.getSpecies());
- row.setBatchWeightUnit(batchWeightUnit);
-
- if (persistenceService.isVracBatch(speciesBatch)) {
-
- // compute species total weight in catch
-
- Float sortedBatchWeight = TuttiEntities.getValueOrComputedValue(
- speciesBatch.getSampleCategoryWeight(),
- speciesBatch.getSampleCategoryComputedWeight());
-
- float totalBatchWeight = sortedBatchWeight == null ? 0 : speciesCatchRaisingFactor *
- sortedBatchWeight;
-
- prepareSortedRows(persistenceService,
- row,
- rows,
- speciesBatch,
- totalBatchWeight);
- } else {
- prepareUnsortedRows(row, rows, speciesBatch);
- }
-
- }
- for (BenthosBatch benthosBatch : rootBenthosBatch.getChildren()) {
- CatchExportRow row = new CatchExportRow();
- row.setCruise(cruise);
- row.setFishingOperation(operation);
- row.setSpecies(benthosBatch.getSpecies());
- row.setBatchWeightUnit(batchWeightUnit);
-
- if (persistenceService.isVracBatch(benthosBatch)) {
-
- // compute species total weight in catch
-
- Float sortedBatchWeight = TuttiEntities.getValueOrComputedValue(
- benthosBatch.getSampleCategoryWeight(),
- benthosBatch.getSampleCategoryComputedWeight());
-
- float totalBatchWeight = sortedBatchWeight == null ? 0 : benthosCatchRaisingFactor *
- sortedBatchWeight;
-
- prepareSortedRows(persistenceService,
- row,
- rows,
- benthosBatch,
- totalBatchWeight);
- } else {
- prepareUnsortedRows(row, rows, benthosBatch);
- }
- }
- }
-
- protected void prepareSortedRows(PersistenceService persistenceService,
- CatchExportRow currentRow,
- List<CatchExportRow> rows,
- SpeciesBatch speciesBatch,
- final float totalBatchWeight) {
-
- currentRow.addComment(speciesBatch.getComment());
-
- prepareBatch(currentRow,
- speciesBatch.getSampleCategoryId(),
- speciesBatch.getSampleCategoryValue(),
- speciesBatch.getSampleCategoryWeight(),
- speciesBatch.getSampleCategoryComputedWeight(),
- speciesBatch.getWeight(),
- speciesBatch.getNumber(),
- speciesBatch.getRankOrder());
-
- if (speciesBatch.isChildBatchsEmpty()) {
-
- // on a leaf, get frequencies
-
- List<SpeciesBatchFrequency> speciesBatchFrequency =
- persistenceService.getAllSpeciesBatchFrequency(speciesBatch.getId());
-
- if (CollectionUtils.isEmpty(speciesBatchFrequency)) {
-
- // no frequency
-
- CatchExportRow row = currentRow.copy();
-
- // Get reference weight
-
- Float referenceWeight = TuttiEntities.getValueOrComputedValue(
- speciesBatch.getWeight(),
- speciesBatch.getComputedWeight());
-
- if (referenceWeight == null) {
-
- referenceWeight = TuttiEntities.getValueOrComputedValue(
- speciesBatch.getSampleCategoryWeight(),
- speciesBatch.getSampleCategoryComputedWeight());
- }
- setRaisingFactor(row, totalBatchWeight, referenceWeight);
- rows.add(row);
- } else {
-
- // there is some frequencies
-
- boolean withNoWeightOnFrequencies =
- speciesBatchFrequency.get(0).getWeight() == null;
-
- Float referenceWeight = null;
-
- if (withNoWeightOnFrequencies) {
-
- // no weight on frequencies use upper reference weight
-
- referenceWeight = TuttiEntities.getValueOrComputedValue(
- speciesBatch.getWeight(),
- speciesBatch.getComputedWeight());
-
- if (referenceWeight == null) {
- referenceWeight = TuttiEntities.getValueOrComputedValue(
- speciesBatch.getSampleCategoryWeight(),
- speciesBatch.getSampleCategoryComputedWeight());
- }
- }
-
- for (SpeciesBatchFrequency batchFrequency : speciesBatchFrequency) {
- CatchExportRow row = currentRow.copy();
- row.setSpeciesFrequency(batchFrequency);
- rows.add(row);
-
- if (!withNoWeightOnFrequencies) {
-
- // use concrete frequency weight
- referenceWeight = batchFrequency.getWeight();
- }
-
- setRaisingFactor(row, totalBatchWeight, referenceWeight);
- }
- }
-
- } else {
-
- for (SpeciesBatch childBatch : speciesBatch.getChildBatchs()) {
- prepareSortedRows(persistenceService,
- currentRow,
- rows,
- childBatch,
- totalBatchWeight
- );
- }
- }
-
- // remove last comment (otherwise next brother will have this one too...)
- currentRow.popLastComment();
- }
-
- protected void prepareUnsortedRows(CatchExportRow currentRow,
- List<CatchExportRow> rows,
- SpeciesBatch speciesBatch) {
-
-
- prepareBatch(currentRow,
- speciesBatch.getSampleCategoryId(),
- speciesBatch.getSampleCategoryValue(),
- speciesBatch.getSampleCategoryWeight(),
- speciesBatch.getSampleCategoryComputedWeight(),
- speciesBatch.getWeight(),
- speciesBatch.getNumber(),
- speciesBatch.getRankOrder());
-
- CatchExportRow row = currentRow.copy();
- row.addComment(speciesBatch.getComment());
- float referenceWeight = TuttiEntities.getValueOrComputedValue(
- speciesBatch.getSampleCategoryWeight(),
- speciesBatch.getSampleCategoryComputedWeight());
-
- setRaisingFactor(row, referenceWeight, referenceWeight);
- rows.add(row);
- }
-
- protected void prepareSortedRows(PersistenceService persistenceService,
- CatchExportRow currentRow,
- List<CatchExportRow> rows,
- BenthosBatch benthosBatch,
- final float totalBatchWeight) {
-
- currentRow.addComment(benthosBatch.getComment());
-
- prepareBatch(currentRow,
- benthosBatch.getSampleCategoryId(),
- benthosBatch.getSampleCategoryValue(),
- benthosBatch.getSampleCategoryWeight(),
- benthosBatch.getSampleCategoryComputedWeight(),
- benthosBatch.getWeight(),
- benthosBatch.getNumber(),
- benthosBatch.getRankOrder());
-
- if (benthosBatch.isChildBatchsEmpty()) {
-
- // on a leaf, get frequencies
-
- List<BenthosBatchFrequency> benthosBatchFrequency =
- persistenceService.getAllBenthosBatchFrequency(benthosBatch.getId());
-
- if (CollectionUtils.isEmpty(benthosBatchFrequency)) {
-
- // no frequency
-
- CatchExportRow row = currentRow.copy();
-
- // Get reference weight
-
- Float referenceWeight = TuttiEntities.getValueOrComputedValue(
- benthosBatch.getWeight(),
- benthosBatch.getComputedWeight());
-
- if (referenceWeight == null) {
- referenceWeight = TuttiEntities.getValueOrComputedValue(
- benthosBatch.getSampleCategoryWeight(),
- benthosBatch.getSampleCategoryComputedWeight());
- }
-
- setRaisingFactor(row, totalBatchWeight, referenceWeight);
- rows.add(row);
- } else {
-
- // there is some frequencies
-
- Float referenceWeight = null;
-
- boolean withNoWeightOnFrequencies =
- benthosBatchFrequency.get(0).getWeight() == null;
-
- if (withNoWeightOnFrequencies) {
-
- // no weight on frequencies use upper reference weight
-
- referenceWeight = TuttiEntities.getValueOrComputedValue(
- benthosBatch.getWeight(),
- benthosBatch.getComputedWeight());
-
- if (referenceWeight == null) {
- referenceWeight = TuttiEntities.getValueOrComputedValue(
- benthosBatch.getSampleCategoryWeight(),
- benthosBatch.getSampleCategoryComputedWeight());
- }
- }
-
- for (BenthosBatchFrequency batchFrequency : benthosBatchFrequency) {
- CatchExportRow row = currentRow.copy();
- row.setBenthosFrequency(batchFrequency);
- rows.add(row);
-
- if (!withNoWeightOnFrequencies) {
-
- // use concrete frequency weight
- referenceWeight = batchFrequency.getWeight();
- }
-
- setRaisingFactor(row, totalBatchWeight, referenceWeight);
- }
- }
-
- } else {
-
- for (BenthosBatch childBatch : benthosBatch.getChildBatchs()) {
- prepareSortedRows(persistenceService,
- currentRow,
- rows,
- childBatch,
- totalBatchWeight);
- }
- }
-
- // remove last comment (otherwise next brother will have this one too...)
- currentRow.popLastComment();
- }
-
- protected void prepareUnsortedRows(CatchExportRow currentRow,
- List<CatchExportRow> rows,
- BenthosBatch benthosBatch) {
-
- prepareBatch(currentRow,
- benthosBatch.getSampleCategoryId(),
- benthosBatch.getSampleCategoryValue(),
- benthosBatch.getSampleCategoryWeight(),
- benthosBatch.getSampleCategoryComputedWeight(),
- benthosBatch.getWeight(),
- benthosBatch.getNumber(),
- benthosBatch.getRankOrder());
-
- CatchExportRow row = currentRow.copy();
- row.addComment(benthosBatch.getComment());
-
- Float referenceWeight = TuttiEntities.getValueOrComputedValue(
- benthosBatch.getSampleCategoryWeight(),
- benthosBatch.getSampleCategoryComputedWeight());
-
- setRaisingFactor(row, referenceWeight, referenceWeight);
-
- rows.add(row);
- }
-
- protected void setRaisingFactor(CatchExportRow row,
- float totalBatchWeight,
- Float referenceWeight) {
- row.setReferenceWeight(referenceWeight);
- row.setRaisingFactor(referenceWeight == null ? 1.0f : (totalBatchWeight / referenceWeight));
- }
-
- protected void prepareBatch(CatchExportRow currentRow,
- Integer sampleCategoryId,
- Serializable sampleCategoryValue,
- Float sampleCategoryWeight,
- Float sampleCategoryComputedWeight,
- Float batchWeight,
- Integer batchNumber,
- Integer batchRankOrder) {
- currentRow.setBatchNumber(batchNumber);
-
- ExportSampleCategory<Serializable> sampleCategory =
- new ExportSampleCategory<Serializable>();
- SampleCategoryModelEntry categoryById =
- sampleCategoryModel.getCategoryById(sampleCategoryId);
- sampleCategory.setCategoryDef(categoryById);
- sampleCategory.setCategoryValue(sampleCategoryValue);
- sampleCategory.setCategoryWeight(sampleCategoryWeight);
- sampleCategory.setSampleWeight(batchWeight);
-
- sampleCategory.setComputedWeight(sampleCategoryComputedWeight);
- sampleCategory.setWeightOrVolType(WEIGHT_OR_VOL_TYPE);
- sampleCategory.setRankOrder(batchRankOrder);
-
- currentRow.addSampleCategory(sampleCategory);
- }
-
- protected void addSampleCategory(String headerPrefix, int categoryOrder) {
-
- String categoryName = CatchExportRow.SAMPLE_CATEGORY;
- newIndexNullableColumnForExport(headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
- newIndexNullableColumnForExport("Num_Ordre_" + headerPrefix + "_H2", categoryName, categoryOrder, ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER);
- newIndexNullableColumnForExport("Tot_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT, TuttiCsvUtil.FLOAT);
- newIndexNullableColumnForExport("Ech_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT, TuttiCsvUtil.FLOAT);
- newIndexNullableColumnForExport("Type_Volume_Poids_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE);
- newNullableColumnForExport("Unite_Volume_Poids_" + headerPrefix, CatchExportRow.BATCH_WEIGHT_UNIT);
- }
-
-}
\ No newline at end of file
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,254 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Joiner;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.persistence.entities.referential.Vessel;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-/**
- * A row in a catch export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.3
- */
-public class CatchExportRow implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(CatchExportRow.class);
-
- public static final String FREQUENCY_LENGTH_STEP = "frequency.lengthStep";
-
- public static final String FREQUENCY_NUMBER = "frequency.number";
-
- public static final String FREQUENCY_WEIGHT = "frequency.weight";
-
- public static final String FREQUENCY_LENGTH_STEP_CARACTERISTIC = "frequency.lengthStepCaracteristic";
-
- public static final String FREQUENCY_RANK_ORDER = "frequency.rankOrder";
-
- public static final String SAMPLE_CATEGORY = "sampleCategory";
-
- public static final String REFERENCE_WEIGHT = "referenceWeight";
-
- public static final String RAISING_FACTOR = "raisingFactor";
-
- public static final String BATCH_NUMBER = "batchNumber";
-
- public static final String BATCH_WEIGHT_UNIT = "batchWeightUnit";
-
- protected Cruise cruise;
-
- protected FishingOperation fishingOperation;
-
- protected final List<ExportSampleCategory> sampleCategory = Lists.newLinkedList();
-
- protected SpeciesBatchFrequency speciesFrequency;
-
- protected BenthosBatchFrequency benthosFrequency;
-
- protected Species species;
-
- protected Float referenceWeight;
-
- protected float raisingFactor;
-
- protected Integer batchNumber;
-
- protected String batchWeightUnit;
-
- protected final List<String> comment = Lists.newArrayList();
-
- public void setCruise(Cruise cruise) {
- this.cruise = cruise;
- }
-
- public void setFishingOperation(FishingOperation fishingOperation) {
- this.fishingOperation = fishingOperation;
- }
-
- public void setReferenceWeight(Float referenceWeight) {
- this.referenceWeight = referenceWeight;
- }
-
- public void setRaisingFactor(float raisingFactor) {
- this.raisingFactor = raisingFactor;
- }
-
- public void setBatchNumber(Integer batchNumber) {
- this.batchNumber = batchNumber;
- }
-
- public void addSampleCategory(ExportSampleCategory sampleCategory) {
- int order = sampleCategory.getCategoryDef().getOrder();
- while (this.sampleCategory.size() <= order) {
- this.sampleCategory.add(null);
- }
- this.sampleCategory.set(order, sampleCategory);
- }
-
- public void setSpeciesFrequency(SpeciesBatchFrequency speciesFrequency) {
- Preconditions.checkNotNull(speciesFrequency);
- this.speciesFrequency = speciesFrequency;
- this.batchNumber = speciesFrequency.getNumber();
- }
-
- public void setBenthosFrequency(BenthosBatchFrequency benthosFrequency) {
- Preconditions.checkNotNull(benthosFrequency);
- this.benthosFrequency = benthosFrequency;
- this.batchNumber = benthosFrequency.getNumber();
- }
-
- public Date getBeginDate() {
- return cruise.getBeginDate();
- }
-
- public Program getProgram() {
- return cruise.getProgram();
- }
-
- public String getSurveyPart() {
- return cruise.getSurveyPart();
- }
-
- public Vessel getVessel() {
- return cruise.getVessel();
- }
-
- public String getStationNumber() {
- return fishingOperation.getStationNumber();
- }
-
- public Integer getFishingOperationNumber() {
- return fishingOperation.getFishingOperationNumber();
- }
-
- public Gear getGear() {
- return fishingOperation.getGear();
- }
-
- public String getMultirigAggregation() {
- return fishingOperation.getMultirigAggregation();
- }
-
- public Object getFrequency() {
- return speciesFrequency == null ? benthosFrequency : speciesFrequency;
- }
-
- public List<ExportSampleCategory> getSampleCategory() {
- return sampleCategory;
- }
-
- public Species getSpecies() {
- return species;
- }
-
- public void setSpecies(Species species) {
- this.species = species;
- }
-
- public Float getReferenceWeight() {
- return referenceWeight;
- }
-
- public float getRaisingFactor() {
- return raisingFactor;
- }
-
- public Integer getBatchNumber() {
- return batchNumber;
- }
-
- public String getBatchWeightUnit() {
- return batchWeightUnit;
- }
-
- public void setBatchWeightUnit(String batchWeightUnit) {
- this.batchWeightUnit = batchWeightUnit;
- }
-
- public CatchExportRow copy() {
- CatchExportRow result = new CatchExportRow();
- result.setCruise(cruise);
- result.setFishingOperation(fishingOperation);
-// result.setSpeciesCategory(speciesCategory);
- result.sampleCategory.addAll(sampleCategory);
- if (benthosFrequency != null) {
- result.setBenthosFrequency(benthosFrequency);
- }
- if (speciesFrequency != null) {
- result.setSpeciesFrequency(speciesFrequency);
- }
- result.setSpecies(species);
- result.setRaisingFactor(raisingFactor);
- result.setReferenceWeight(referenceWeight);
- result.setBatchNumber(batchNumber);
- result.setBatchWeightUnit(batchWeightUnit);
- result.comment.addAll(comment);
-
- return result;
- }
-
- public void addComment(String comment) {
- String safeComment = StringUtils.isEmpty(comment) ? "" : comment;
- if (log.isDebugEnabled()) {
- log.debug("Add comment: " + safeComment);
- }
- this.comment.add(safeComment);
- }
-
- public void popLastComment() {
- if (!comment.isEmpty()) {
- this.comment.remove(this.comment.size() - 1);
- }
- }
-
- public String getComment() {
- String result;
- if (comment.isEmpty()) {
- result = "";
- } else {
- result = Joiner.on('|').join(comment);
- }
- return result;
- }
-}
\ No newline at end of file
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportBatchEntry.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportBatchEntry.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportBatchEntry.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,53 @@
+package fr.ifremer.tutti.service.export;
+
+import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch;
+
+/**
+ * To store a species or batch entry within his speices informations,
+ * his sorted weight, total weight and percentage amoong the total catch
+ * weight.
+ *
+ * @since 2.10
+ */
+public class ExportBatchEntry {
+
+ protected final SpeciesAbleBatch batch;
+
+ protected float sortedWeight;
+
+ protected float totalWeight;
+
+ protected int totalNumber;
+
+ public ExportBatchEntry(SpeciesAbleBatch batch) {
+ this.batch = batch;
+ }
+
+ public SpeciesAbleBatch getBatch() {
+ return batch;
+ }
+
+ public void addSortedWeight(float weight) {
+ sortedWeight += weight;
+ }
+
+ public void addTotalWeight(float weight) {
+ totalWeight += weight;
+ }
+
+ public void addNumber(int number) {
+ totalNumber += number;
+ }
+
+ public float getSortedWeight() {
+ return sortedWeight;
+ }
+
+ public float getTotalWeight() {
+ return totalWeight;
+ }
+
+ public int getTotalNumber() {
+ return totalNumber;
+ }
+}
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportBatchEntry.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportSampleCategory.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportSampleCategory.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportSampleCategory.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,95 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-
-import java.io.Serializable;
-
-/**
- * Export sample category (extends {@link SampleCategory} to some computed
- * stuff.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.0
- */
-public class ExportSampleCategory<S extends Serializable> extends SampleCategory<S> {
-
- private static final long serialVersionUID = 1L;
-
- public static final String PROPERTY_CATEGORY_CARACTERISTIC = "categoryCaracteristic";
-
- public static final String PROPERTY_CATEGORY_VALUE = "categoryValue";
-
- public static final String PROPERTY_CATEGORY_WEIGHT = "categoryWeight";
-
- public static final String PROPERTY_NUMBER = "number";
-
- public static final String PROPERTY_COMPUTED_WEIGHT = "computedWeight";
-
- public static final String PROPERTY_COMPUTED_NUMBER = "computedNumber";
-
- public static final String PROPERTY_WEIGHT_OR_VOL_TYPE = "weightOrVolType";
-
- public static final String PROPERTY_RANK_ORDER = "rankOrder";
-
- public static final String PROPERTY_SAMPLE_WEIGHT = "sampleWeight";
-
- private Integer rankOrder;
-
- private String weightOrVolType;
-
- private Float sampleWeight;
-
- public String getWeightOrVolType() {
- return weightOrVolType;
- }
-
- public void setWeightOrVolType(String weightOrVolType) {
- this.weightOrVolType = weightOrVolType;
- }
-
- public Integer getRankOrder() {
- return rankOrder;
- }
-
- public void setRankOrder(Integer rankOrder) {
- this.rankOrder = rankOrder;
- }
-
- public Float getSampleWeight() {
- return sampleWeight;
- }
-
- public void setSampleWeight(Float sampleWeight) {
- this.sampleWeight = sampleWeight;
- }
-
- public Caracteristic getCategoryCaracteristic() {
- return categoryDef.getCaracteristic();
- }
-
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/GearCaracteristicExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/GearCaracteristicExportModel.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/GearCaracteristicExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,76 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.service.DecoratorService;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
-/**
- * To export gear caracteristics.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.3.2
- */
-public class GearCaracteristicExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<GearCaracteristicExportRow> {
-
- public GearCaracteristicExportModel(char separator, DecoratorService decoratorService) {
- super(separator);
-
- newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
- newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
- newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
- newColumnForExport("Engin", GearCaracteristicExportRow.PROPERTY_GEAR, Gear.PROPERTY_NAME);
- newColumnForExport("Code_PMFM", GearCaracteristicExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
- newColumnForExportByDecorator("Libelle_PMFM", GearCaracteristicExportRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class));
- newColumnForExport("Valeur", GearCaracteristicExportRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
- }
-
- public void prepareRows(List<GearCaracteristicExportRow> rows, Cruise cruise,
- Gear gear) {
- CaracteristicMap caracteristics = gear.getCaracteristics();
- if (caracteristics != null) {
- for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) {
- Caracteristic caracteristic = entry.getKey();
- Serializable value = entry.getValue();
- GearCaracteristicExportRow row = new GearCaracteristicExportRow();
- row.setCruise(cruise);
- row.setGear(gear);
- row.setCaracteristic(caracteristic);
- row.setValue(value);
- rows.add(row);
- }
- }
- }
-
-}
\ No newline at end of file
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/GearCaracteristicExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/GearCaracteristicExportRow.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/GearCaracteristicExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,98 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * A row in a gear caracteristics export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.3.2
- */
-public class GearCaracteristicExportRow implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- public static final String PROPERTY_GEAR = "gear";
-
- public static final String PROPERTY_CARACTERISTIC = "caracteristic";
-
- public static final String PROPERTY_VALUE = "value";
-
- protected Cruise cruise;
-
- protected Gear gear;
-
- protected Caracteristic caracteristic;
-
- private Serializable value;
-
- public void setCruise(Cruise cruise) {
- this.cruise = cruise;
- }
-
- public void setGear(Gear gear) {
- this.gear = gear;
- }
-
- public void setCaracteristic(Caracteristic caracteristic) {
- this.caracteristic = caracteristic;
- }
-
- public void setValue(Serializable value) {
- this.value = value;
- }
-
- public Date getBeginDate() {
- return cruise.getBeginDate();
- }
-
- public Program getProgram() {
- return cruise.getProgram();
- }
-
- public String getSurveyPart() {
- return cruise.getSurveyPart();
- }
-
- public Gear getGear() {
- return gear;
- }
-
- public Caracteristic getCaracteristic() {
- return caracteristic;
- }
-
- public Serializable getValue() {
- return value;
- }
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,170 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.MapUtils;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Model of a individual observation export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.0.1
- */
-public class IndividualObservationExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<IndividualObservationExportRow> {
-
-// protected final Caracteristic caracteristicSample;
-//
-// protected final Caracteristic caracteristicOtolithe;
-
- protected final Caracteristic caracteristicWeight;
-
- protected final Caracteristic caracteristicPmfmId;
-
- public IndividualObservationExportModel(
- char separator,
-// Caracteristic caracteristicSample,
-// Caracteristic caracteristicOtolithe,
- Caracteristic caracteristicWeight,
- Caracteristic caracteristicPmfmId) {
- super(separator);
-
-// this.caracteristicSample = caracteristicSample;
-// this.caracteristicOtolithe = caracteristicOtolithe;
- this.caracteristicWeight = caracteristicWeight;
- this.caracteristicPmfmId = caracteristicPmfmId;
-
- newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
- newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
- newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
- newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME);
- newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER);
- newColumnForExport("Numero_Trait", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
- newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
- newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER);
-
- newColumnForExport("BatchId", IndividualObservationExportRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
- newColumnForExport("ReferenceTaxonId", IndividualObservationBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
- newColumnForExport("ReferenceTaxonName", IndividualObservationBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME);
- newColumnForExport("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT);
- newColumnForExport("CaracteristicId", IndividualObservationExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
- newColumnForExport("CaracteristicValue", IndividualObservationExportRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
- }
-
- public void prepareRows(PersistenceService persistenceService,
- List<IndividualObservationExportRow> rows,
- Cruise cruise,
- FishingOperation operation) {
-
- List<IndividualObservationBatch> observations =
- persistenceService.getAllIndividualObservationBatch(operation.getId());
-
- if (CollectionUtils.isNotEmpty(observations)) {
- for (IndividualObservationBatch child : observations) {
-
-// addCaracteristicRow(rows,
-// cruise,
-// operation,
-// child,
-// caracteristicSample,
-// child.getSamplingCode());
-//
-// addCaracteristicRow(rows,
-// cruise,
-// operation,
-// child,
-// caracteristicOtolithe,
-// child.getCalcifiedPieceSamplingCode());
-
- addCaracteristicRow(rows,
- cruise,
- operation,
- child,
- caracteristicWeight,
- child.getWeight());
-
- if (child.getLengthStepCaracteristic() != null) {
- addCaracteristicRow(rows,
- cruise,
- operation,
- child,
- caracteristicPmfmId,
- child.getLengthStepCaracteristic().getIdAsInt());
-
- addCaracteristicRow(rows,
- cruise,
- operation,
- child,
- child.getLengthStepCaracteristic(),
- child.getSize());
- }
-
- CaracteristicMap caracteristics = child.getCaracteristics();
- if (MapUtils.isNotEmpty(caracteristics)) {
- for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) {
- addCaracteristicRow(rows,
- cruise,
- operation,
- child,
- entry.getKey(),
- entry.getValue());
- }
- }
- }
- }
- }
-
- private void addCaracteristicRow(List<IndividualObservationExportRow> rows,
- Cruise cruise,
- FishingOperation operation,
- IndividualObservationBatch child,
- Caracteristic caracteristic,
- Serializable caracteristicValue) {
- if (caracteristicValue != null) {
-
- IndividualObservationExportRow row = new IndividualObservationExportRow();
- row.setCruise(cruise);
- row.setFishingOperation(operation);
- row.setBatch(child);
- row.setCaracteristic(caracteristic);
- row.setCaracteristicValue(caracteristicValue);
- rows.add(row);
- }
- }
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,138 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.persistence.entities.referential.Vessel;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * A row in a individual observation export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.0.1
- */
-public class IndividualObservationExportRow implements Serializable {
-
- public static final String PROPERTY_BATCH = "batch";
-
- private static final long serialVersionUID = 1L;
-
- public static final String PROPERTY_BATCH_ID = "batchId";
-
- public static final String PROPERTY_CARACTERISTIC = "caracteristic";
-
- public static final String PROPERTY_CARACTERISTIC_VALUE = "caracteristicValue";
-
- protected Cruise cruise;
-
- protected FishingOperation fishingOperation;
-
- protected IndividualObservationBatch batch;
-
- protected Caracteristic caracteristic;
-
- protected Serializable caracteristicValue;
-
- public void setCruise(Cruise cruise) {
- this.cruise = cruise;
- }
-
- public void setFishingOperation(FishingOperation fishingOperation) {
- this.fishingOperation = fishingOperation;
- }
-
- public void setBatch(IndividualObservationBatch batch) {
- this.batch = batch;
- }
-
- public void setCaracteristic(Caracteristic caracteristic) {
- this.caracteristic = caracteristic;
- }
-
- public void setCaracteristicValue(Serializable caracteristicValue) {
- this.caracteristicValue = caracteristicValue;
- }
-
- public Integer getBatchId() {
- return batch.getIdAsInt();
- }
-
- public Caracteristic getCaracteristic() {
- return caracteristic;
- }
-
- public Serializable getCaracteristicValue() {
- return caracteristicValue;
- }
-
- public String getComment() {
- return batch.getComment();
- }
-
- public Date getBeginDate() {
- return cruise.getBeginDate();
- }
-
- public Program getProgram() {
- return cruise.getProgram();
- }
-
- public String getSurveyPart() {
- return cruise.getSurveyPart();
- }
-
- public String getStationNumber() {
- return fishingOperation.getStationNumber();
- }
-
- public Integer getFishingOperationNumber() {
- return fishingOperation.getFishingOperationNumber();
- }
-
- public Gear getGear() {
- return fishingOperation.getGear();
- }
-
- public Vessel getVessel() {
- return fishingOperation.getVessel();
- }
-
- public String getMultirigAggregation() {
- return fishingOperation.getMultirigAggregation();
- }
-
- public Species getSpecies() {
- return batch.getSpecies();
- }
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportModel.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,86 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.Vessel;
-import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-import org.apache.commons.collections.CollectionUtils;
-
-import java.util.List;
-
-/**
- * Model of a marine litter export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.0.1
- */
-public class MarineLitterExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<MarineLitterExportRow> {
-
- public MarineLitterExportModel(char separator) {
- super(separator);
-
- newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
- newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
- newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
- newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME);
- newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER);
- newColumnForExport("Numero_Trait", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
- newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
- newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER);
-
- newColumnForExport("MarineLitterCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
- newColumnForExport("MarineLitterSizeCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
- newColumnForExport("Number", MarineLitterBatch.PROPERTY_NUMBER, TuttiCsvUtil.INTEGER);
- newColumnForExport("Weight", MarineLitterBatch.PROPERTY_WEIGHT, TuttiCsvUtil.FLOAT);
- newColumnForExport("Commentaire", MarineLitterBatch.PROPERTY_COMMENT);
- }
-
- public void prepareRows(PersistenceService persistenceService,
- List<MarineLitterExportRow> rows,
- Cruise cruise,
- FishingOperation operation) {
-
- BatchContainer<MarineLitterBatch> rootMarineLitterBatch =
- persistenceService.getRootMarineLitterBatch(operation.getId());
-
- List<MarineLitterBatch> children = rootMarineLitterBatch.getChildren();
- if (CollectionUtils.isNotEmpty(children)) {
- for (MarineLitterBatch child : children) {
- MarineLitterExportRow row = new MarineLitterExportRow();
- row.setCruise(cruise);
- row.setFishingOperation(operation);
- row.setBatch(child);
- rows.add(row);
- }
- }
- }
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportRow.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,121 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.Vessel;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * A row in a marine litter export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.0.1
- */
-public class MarineLitterExportRow implements Serializable {
-
- public static final String PROPERTY_TOTAL_WEIGHT = "totalWeight";
-
- public static final String PROPERTY_BATCH = "batch";
-
- private static final long serialVersionUID = 1L;
-
- protected Cruise cruise;
-
- protected FishingOperation fishingOperation;
-
- protected MarineLitterBatch batch;
-
- public void setCruise(Cruise cruise) {
- this.cruise = cruise;
- }
-
- public void setFishingOperation(FishingOperation fishingOperation) {
- this.fishingOperation = fishingOperation;
- }
-
- public void setBatch(MarineLitterBatch batch) {
- this.batch = batch;
- }
-
- public CaracteristicQualitativeValue getMarineLitterCategory() {
- return batch.getMarineLitterCategory();
- }
-
- public CaracteristicQualitativeValue getMarineLitterSizeCategory() {
- return batch.getMarineLitterSizeCategory();
- }
-
- public Integer getNumber() {
- return batch.getNumber();
- }
-
- public Float getWeight() {
- return batch.getWeight();
- }
-
- public String getComment() {
- return batch.getComment();
- }
-
- public Date getBeginDate() {
- return cruise.getBeginDate();
- }
-
- public Program getProgram() {
- return cruise.getProgram();
- }
-
- public String getSurveyPart() {
- return cruise.getSurveyPart();
- }
-
- public String getStationNumber() {
- return fishingOperation.getStationNumber();
- }
-
- public Integer getFishingOperationNumber() {
- return fishingOperation.getFishingOperationNumber();
- }
-
- public Gear getGear() {
- return fishingOperation.getGear();
- }
-
- public Vessel getVessel() {
- return fishingOperation.getVessel();
- }
-
- public String getMultirigAggregation() {
- return fishingOperation.getMultirigAggregation();
- }
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,166 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
-import fr.ifremer.tutti.persistence.entities.referential.Vessel;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-import org.nuiton.decorator.Decorator;
-
-import java.util.List;
-
-/**
- * Model of a operation export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.3
- */
-public class OperationExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<OperationExportRow> {
-
-
- protected final Caracteristic verticalOpeningCaracteristic;
-
- protected final Caracteristic horizontalOpeningWingCaracteristic;
-
- protected final Caracteristic horizontalOpeningDoorCaracteristic;
-
- public OperationExportModel(char separator,
- Caracteristic verticalOpeningCaracteristic,
- Caracteristic horizontalOpeningWingCaracteristic,
- Caracteristic horizontalOpeningDoorCaracteristic,
- Decorator<Vessel> vesselDecorator) {
- super(separator);
- this.verticalOpeningCaracteristic = verticalOpeningCaracteristic;
- this.horizontalOpeningWingCaracteristic = horizontalOpeningWingCaracteristic;
- this.horizontalOpeningDoorCaracteristic = horizontalOpeningDoorCaracteristic;
- newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
- newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
- newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
- newColumnForExport("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER);
- newColumnForExport("Numero_Trait", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
- newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
-
- newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME);
- newColumnForExport("Navire", FishingOperation.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER);
- newColumnForExport("DateDeb_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
- newColumnForExport("LatDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, TuttiCsvUtil.FLOAT);
- newColumnForExport("LongDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, TuttiCsvUtil.FLOAT);
- newColumnForExport("DateFin_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
- newColumnForExport("LatFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, TuttiCsvUtil.FLOAT);
- newColumnForExport("LongFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, TuttiCsvUtil.FLOAT);
- newColumnForExport("Duree", OperationExportRow.PROPERTY_DURATION);
- newColumnForExport("Strate", FishingOperation.PROPERTY_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
- newColumnForExport("Sous-Strate", FishingOperation.PROPERTY_SUB_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
- newColumnForExport("Localite", FishingOperation.PROPERTY_LOCATION, TuttiLocation.PROPERTY_NAME, "NA");
- newColumnForExport("Validite_OP", FishingOperation.PROPERTY_FISHING_OPERATION_VALID, TuttiCsvUtil.BOOLEAN);
- newColumnForExport("Rectiligne", FishingOperation.PROPERTY_FISHING_OPERATION_RECTILIGNE, TuttiCsvUtil.BOOLEAN);
- newColumnForExport("Distance", FishingOperation.PROPERTY_TRAWL_DISTANCE, TuttiCsvUtil.FLOAT);
- newColumnForExport("Ouv_Verticale", OperationExportRow.PROPERTY_VERTICAL_OPENING_GEAR_USE_FEATURE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
- newColumnForExport("Ouv_Horizontale_Ailes", OperationExportRow.PROPERTY_HORIZONTAL_OPENING_WING_GEAR_USE_FEATURE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
- newColumnForExport("Ouv_Horizontale_Panneaux", OperationExportRow.PROPERTY_HORIZONTAL_OPENING_DOOR_GEAR_USE_FEATURE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
- newColumnForExport("Saisisseur", FishingOperation.PROPERTY_RECORDER_PERSON, TuttiCsvUtil.LIST_PERSON_FORMATTER);
- newColumnForExport("NavireAssocie", FishingOperation.PROPERTY_SECONDARY_VESSEL, TuttiCsvUtil.newListVesselFormatter(vesselDecorator));
- newColumnForExport("Commentaire", FishingOperation.PROPERTY_COMMENT);
-
- newNullableColumnForExport("Poids_Total", OperationExportRow.PROPERTY_CATCH_TOTAL_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Calcule", OperationExportRow.PROPERTY_CATCH_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Vrac", OperationExportRow.PROPERTY_CATCH_TOTAL_SORTED_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Vrac_Calcule", OperationExportRow.PROPERTY_CATCH_TOTAL_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_HorsVrac", OperationExportRow.PROPERTY_CATCH_TOTAL_UNSORTED_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_HorsVrac_Calcule", OperationExportRow.PROPERTY_CATCH_TOTAL_UNSORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Non_Trie", OperationExportRow.PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Non_Trie_Calcule", OperationExportRow.PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Tremis", OperationExportRow.PROPERTY_CATCH_TOTAL_SORTED_TREMIS_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Tremis_Calcule", OperationExportRow.PROPERTY_CATCH_TOTAL_SORTED_TREMIS_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Carroussel", OperationExportRow.PROPERTY_CATCH_TOTAL_SORTED_CAROUSSEL_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Carroussel_Calcule", OperationExportRow.PROPERTY_CATCH_TOTAL_SORTED_CAROUSSEL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Espece", OperationExportRow.PROPERTY_SPECIES_TOTAL_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Espece_Calcule", OperationExportRow.PROPERTY_SPECIES_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Espece_Vrac", OperationExportRow.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Espece_Vrac_Calcule", OperationExportRow.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Espece_Vrac_Trie", OperationExportRow.PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Espece_Vrac_Trie_Calcule", OperationExportRow.PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Espece_HorsVrac", OperationExportRow.PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Espece_HorsVrac_Calcule", OperationExportRow.PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Espece_Inerte_Trie", OperationExportRow.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Espece_Inerte_Trie_Calcule", OperationExportRow.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Espece_Vivant_non_detaille_trie", OperationExportRow.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Espece_Vivant_non_detaille_trie_Calcule", OperationExportRow.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Benthos", OperationExportRow.PROPERTY_BENTHOS_TOTAL_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Benthos_Calcule", OperationExportRow.PROPERTY_BENTHOS_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Benthos_Vrac", OperationExportRow.PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Benthos_Vrac_Calcule", OperationExportRow.PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Benthos_Vrac_Trie", OperationExportRow.PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Benthos_Vrac_Trie_Calcule", OperationExportRow.PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Benthos_HorsVrac", OperationExportRow.PROPERTY_BENTHOS_TOTAL_UNSORTED_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Benthos_HorsVrac_Calcule", OperationExportRow.PROPERTY_BENTHOS_TOTAL_UNSORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Benthos_Inerte_Trie", OperationExportRow.PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Benthos_Inerte_Trie_Calcule", OperationExportRow.PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Benthos_Vivant_non_detaille_trie", OperationExportRow.PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Benthos_Vivant_non_detaille_trie_Calcule", OperationExportRow.PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
-
- newNullableColumnForExport("Poids_Total_Macro_Dechet", OperationExportRow.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT, TuttiCsvUtil.FLOAT);
- newNullableColumnForExport("Poids_Total_Macro_Dechet_Calcule", OperationExportRow.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
- }
-
- public void prepareRows(List<OperationExportRow> rows,
- Cruise cruise,
- FishingOperation operation,
- CatchBatch catchBatch) {
-
- OperationExportRow row = new OperationExportRow(
- verticalOpeningCaracteristic,
- horizontalOpeningWingCaracteristic,
- horizontalOpeningDoorCaracteristic);
- row.setCruise(cruise);
- row.setFishingOperation(operation);
- row.setCatchBatch(catchBatch);
- rows.add(row);
-
- }
-}
\ No newline at end of file
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,499 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.Person;
-import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
-import fr.ifremer.tutti.persistence.entities.referential.Vessel;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-/**
- * A row in a operation export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.3
- */
-public class OperationExportRow implements Serializable {
-
- public static final String PROPERTY_DURATION = "duration";
-
- public static final String PROPERTY_VERTICAL_OPENING_GEAR_USE_FEATURE = "verticalOpeningGearUseFeature";
-
- public static final String PROPERTY_HORIZONTAL_OPENING_WING_GEAR_USE_FEATURE = "horizontalOpeningWingGearUseFeature";
-
- public static final String PROPERTY_HORIZONTAL_OPENING_DOOR_GEAR_USE_FEATURE = "horizontalOpeningDoorGearUseFeature";
-
- public static final String PROPERTY_CATCH_TOTAL_WEIGHT = "catchTotalWeight";
-
- public static final String PROPERTY_CATCH_TOTAL_WEIGHT_COMPUTED = "catchTotalWeightComputed";
-
- public static final String PROPERTY_CATCH_TOTAL_SORTED_TREMIS_WEIGHT = "catchTotalSortedTremisWeight";
-
- public static final String PROPERTY_CATCH_TOTAL_SORTED_TREMIS_WEIGHT_COMPUTED = "catchTotalSortedTremisWeightComputed";
-
- public static final String PROPERTY_CATCH_TOTAL_SORTED_CAROUSSEL_WEIGHT = "catchTotalSortedCarousselWeight";
-
- public static final String PROPERTY_CATCH_TOTAL_SORTED_CAROUSSEL_WEIGHT_COMPUTED = "catchTotalSortedCarousselWeightComputed";
-
- public static final String PROPERTY_CATCH_TOTAL_SORTED_WEIGHT = "catchTotalSortedWeight";
-
- public static final String PROPERTY_CATCH_TOTAL_SORTED_WEIGHT_COMPUTED = "catchTotalSortedWeightComputed";
-
- public static final String PROPERTY_CATCH_TOTAL_UNSORTED_WEIGHT = "catchTotalUnsortedWeight";
-
- public static final String PROPERTY_CATCH_TOTAL_UNSORTED_WEIGHT_COMPUTED = "catchTotalUnsortedWeightComputed";
-
- public static final String PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT = "catchTotalRejectedWeight";
-
- public static final String PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT_COMPUTED = "catchTotalRejectedWeightComputed";
-
-
- public static final String PROPERTY_SPECIES_TOTAL_WEIGHT = "speciesTotalWeight";
-
- public static final String PROPERTY_SPECIES_TOTAL_WEIGHT_COMPUTED = "speciesTotalWeightComputed";
-
- public static final String PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT = "speciesTotalSortedWeight";
-
- public static final String PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT_COMPUTED = "speciesTotalSortedWeightComputed";
-
- public static final String PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT = "speciesTotalUnsortedWeight";
-
- public static final String PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT_COMPUTED = "speciesTotalUnsortedWeightComputed";
-
- public static final String PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT = "speciesTotalSampleSortedWeight";
-
- public static final String PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT_COMPUTED = "speciesTotalSampleSortedWeightComputed";
-
- public static final String PROPERTY_SPECIES_TOTAL_INERT_WEIGHT = "speciesTotalInertWeight";
-
- public static final String PROPERTY_SPECIES_TOTAL_INERT_WEIGHT_COMPUTED = "speciesTotalInertWeightComputed";
-
- public static final String PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT = "speciesTotalLivingNotItemizedWeight";
-
- public static final String PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT_COMPUTED = "speciesTotalLivingNotItemizedWeightComputed";
-
- public static final String PROPERTY_BENTHOS_TOTAL_WEIGHT = "benthosTotalWeight";
-
- public static final String PROPERTY_BENTHOS_TOTAL_WEIGHT_COMPUTED = "benthosTotalWeightComputed";
-
- public static final String PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT = "benthosTotalSortedWeight";
-
- public static final String PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT_COMPUTED = "benthosTotalSortedWeightComputed";
-
- public static final String PROPERTY_BENTHOS_TOTAL_UNSORTED_WEIGHT = "benthosTotalUnsortedWeight";
-
- public static final String PROPERTY_BENTHOS_TOTAL_UNSORTED_WEIGHT_COMPUTED = "benthosTotalUnsortedWeightComputed";
-
- public static final String PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_WEIGHT = "benthosTotalSampleSortedWeight";
-
- public static final String PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_WEIGHT_COMPUTED = "benthosTotalSampleSortedWeightComputed";
-
- public static final String PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT = "benthosTotalInertWeight";
-
- public static final String PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT_COMPUTED = "benthosTotalInertWeightComputed";
-
- public static final String PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT = "benthosTotalLivingNotItemizedWeight";
-
- public static final String PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT_COMPUTED = "benthosTotalLivingNotItemizedWeightComputed";
-
- public static final String PROPERTY_MARINE_LITTER_TOTAL_WEIGHT = "marineLitterTotalWeight";
-
- public static final String PROPERTY_MARINE_LITTER_TOTAL_WEIGHT_COMPUTED = "marineLitterTotalWeightComputed";
-
- private static final long serialVersionUID = 1L;
-
- protected Cruise cruise;
-
- protected FishingOperation fishingOperation;
-
- protected CatchBatch catchBatch;
-
- private Caracteristic verticalOpeningCaracteristic;
-
- private Caracteristic horizontalOpeningWingCaracteristic;
-
- private Caracteristic horizontalOpeningDoorCaracteristic;
-
- public OperationExportRow(Caracteristic verticalOpeningCaracteristic,
- Caracteristic horizontalOpeningWingCaracteristic,
- Caracteristic horizontalOpeningDoorCaracteristic) {
-
- this.verticalOpeningCaracteristic = verticalOpeningCaracteristic;
- this.horizontalOpeningWingCaracteristic = horizontalOpeningWingCaracteristic;
- this.horizontalOpeningDoorCaracteristic = horizontalOpeningDoorCaracteristic;
- }
-
- public void setCruise(Cruise cruise) {
- this.cruise = cruise;
- }
-
- public void setFishingOperation(FishingOperation fishingOperation) {
- this.fishingOperation = fishingOperation;
- }
-
- public void setCatchBatch(CatchBatch catchBatch) {
- this.catchBatch = catchBatch;
- }
-
- public Date getBeginDate() {
- return cruise.getBeginDate();
- }
-
- public Program getProgram() {
- return cruise.getProgram();
- }
-
- public String getSurveyPart() {
- return cruise.getSurveyPart();
- }
-
- public String getStationNumber() {
- return fishingOperation.getStationNumber();
- }
-
- public Integer getFishingOperationNumber() {
- return fishingOperation.getFishingOperationNumber();
- }
-
- public String getMultirigAggregation() {
- return fishingOperation.getMultirigAggregation();
- }
-
- public Gear getGear() {
- return fishingOperation.getGear();
- }
-
- public Vessel getVessel() {
- return fishingOperation.getVessel();
- }
-
- public Date getGearShootingStartDate() {
- return fishingOperation.getGearShootingStartDate();
- }
-
- public Float getGearShootingStartLatitude() {
- return fishingOperation.getGearShootingStartLatitude();
- }
-
- public Float getGearShootingStartLongitude() {
- return fishingOperation.getGearShootingStartLongitude();
- }
-
- public Date getGearShootingEndDate() {
- return fishingOperation.getGearShootingEndDate();
- }
-
- public Float getGearShootingEndLatitude() {
- return fishingOperation.getGearShootingEndLatitude();
- }
-
- public Float getGearShootingEndLongitude() {
- return fishingOperation.getGearShootingEndLongitude();
- }
-
- public TuttiLocation getStrata() {
- return fishingOperation.getStrata();
- }
-
- public TuttiLocation getSubStrata() {
- return fishingOperation.getSubStrata();
- }
-
- public TuttiLocation getLocation() {
- return fishingOperation.getLocation();
- }
-
- public Boolean getFishingOperationValid() {
- return fishingOperation.getFishingOperationValid();
- }
-
- public boolean isFishingOperationRectiligne() {
- return fishingOperation.isFishingOperationRectiligne();
- }
-
- public Float getTrawlDistance() {
- return fishingOperation.getTrawlDistance();
- }
-
- public String getComment() {
- return fishingOperation.getComment();
- }
-
- public List<Person> getRecorderPerson() {
- return fishingOperation.getRecorderPerson();
- }
-
- public List<Vessel> getSecondaryVessel() {
- return fishingOperation.getSecondaryVessel();
- }
-
- public String getDuration() {
- return TuttiEntities.getDuration(
- getGearShootingStartDate(),
- getGearShootingEndDate(),
- "mm");
- }
-
- public Serializable getVerticalOpeningGearUseFeature() {
- Serializable result = getGearUseFeature(verticalOpeningCaracteristic);
- return result;
- }
-
- public Serializable getHorizontalOpeningWingGearUseFeature() {
- Serializable result = getGearUseFeature(horizontalOpeningWingCaracteristic);
- return result;
- }
-
- public Serializable getHorizontalOpeningDoorGearUseFeature() {
- Serializable result = getGearUseFeature(horizontalOpeningDoorCaracteristic);
- return result;
- }
-
- public Float getCatchTotalWeight() {
- return TuttiEntities.getValueOrComputedValue(
- catchBatch.getCatchTotalWeight(),
- catchBatch.getCatchTotalComputedWeight());
- }
-
- public Boolean getCatchTotalWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- catchBatch.getCatchTotalWeight(),
- catchBatch.getCatchTotalComputedWeight());
- }
-
- public Float getCatchTotalSortedTremisWeight() {
- return TuttiEntities.getValueOrComputedValue(
- catchBatch.getCatchTotalSortedTremisWeight(), null);
- }
-
- public Boolean getCatchTotalSortedTremisWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- catchBatch.getCatchTotalSortedTremisWeight(), null);
- }
-
- public Float getCatchTotalSortedCarousselWeight() {
- return TuttiEntities.getValueOrComputedValue(
- catchBatch.getCatchTotalSortedCarousselWeight(), null);
- }
-
- public Boolean getCatchTotalSortedCarousselWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- catchBatch.getCatchTotalSortedCarousselWeight(), null);
- }
-
- public Float getCatchTotalSortedWeight() {
- return TuttiEntities.getValueOrComputedValue(
- null, catchBatch.getCatchTotalSortedComputedWeight());
- }
-
- public Boolean getCatchTotalSortedWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- null, catchBatch.getCatchTotalSortedComputedWeight());
- }
-
- public Float getCatchTotalUnsortedWeight() {
- return TuttiEntities.getValueOrComputedValue(
- null, catchBatch.getCatchTotalUnsortedComputedWeight());
- }
-
- public Boolean getCatchTotalUnsortedWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- null, catchBatch.getCatchTotalUnsortedComputedWeight());
- }
-
- public Float getCatchTotalRejectedWeight() {
- return TuttiEntities.getValueOrComputedValue(
- catchBatch.getCatchTotalRejectedWeight(),
- catchBatch.getCatchTotalRejectedComputedWeight());
- }
-
- public Boolean getCatchTotalRejectedWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- catchBatch.getCatchTotalRejectedWeight(),
- catchBatch.getCatchTotalRejectedComputedWeight());
- }
-
- public Float getSpeciesTotalWeight() {
- return TuttiEntities.getValueOrComputedValue(
- null, catchBatch.getSpeciesTotalComputedWeight());
- }
-
- public Boolean getSpeciesTotalWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- null, catchBatch.getSpeciesTotalComputedWeight());
- }
-
- public Float getSpeciesTotalSortedWeight() {
- return TuttiEntities.getValueOrComputedValue(
- catchBatch.getSpeciesTotalSortedWeight(),
- catchBatch.getSpeciesTotalSortedComputedWeight());
- }
-
- public Boolean getSpeciesTotalSortedWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- catchBatch.getSpeciesTotalSortedWeight(),
- catchBatch.getSpeciesTotalSortedComputedWeight());
- }
-
- public Float getSpeciesTotalUnsortedWeight() {
- return TuttiEntities.getValueOrComputedValue(
- null, catchBatch.getSpeciesTotalUnsortedComputedWeight());
- }
-
- public Boolean getSpeciesTotalUnsortedWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- null, catchBatch.getSpeciesTotalUnsortedComputedWeight());
- }
-
- public Float getSpeciesTotalSampleSortedWeight() {
- return TuttiEntities.getValueOrComputedValue(
- catchBatch.getSpeciesTotalSampleSortedComputedWeight(),
- catchBatch.getSpeciesTotalSampleSortedComputedWeight());
- }
-
- public Boolean getSpeciesTotalSampleSortedWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- null, catchBatch.getSpeciesTotalSampleSortedComputedWeight());
- }
-
- public Float getSpeciesTotalInertWeight() {
- return TuttiEntities.getValueOrComputedValue(
- catchBatch.getSpeciesTotalInertWeight(),
- catchBatch.getSpeciesTotalInertComputedWeight());
- }
-
- public Boolean getSpeciesTotalInertWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- catchBatch.getSpeciesTotalInertWeight(),
- catchBatch.getSpeciesTotalInertComputedWeight());
- }
-
- public Float getSpeciesTotalLivingNotItemizedWeight() {
- return TuttiEntities.getValueOrComputedValue(
- catchBatch.getSpeciesTotalLivingNotItemizedWeight(),
- catchBatch.getSpeciesTotalLivingNotItemizedComputedWeight());
- }
-
- public Boolean getSpeciesTotalLivingNotItemizedWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- catchBatch.getSpeciesTotalLivingNotItemizedWeight(),
- catchBatch.getSpeciesTotalLivingNotItemizedComputedWeight());
- }
-
- public Float getBenthosTotalWeight() {
- return TuttiEntities.getValueOrComputedValue(
- null, catchBatch.getBenthosTotalComputedWeight());
- }
-
- public Boolean getBenthosTotalWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- null, catchBatch.getBenthosTotalComputedWeight());
- }
-
- public Float getBenthosTotalSortedWeight() {
- return TuttiEntities.getValueOrComputedValue(
- catchBatch.getBenthosTotalSortedWeight(),
- catchBatch.getBenthosTotalSortedComputedWeight());
- }
-
- public Boolean getBenthosTotalSortedWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- catchBatch.getBenthosTotalSortedWeight(),
- catchBatch.getBenthosTotalSortedComputedWeight());
- }
-
- public Float getBenthosTotalUnsortedWeight() {
- return TuttiEntities.getValueOrComputedValue(
- null, catchBatch.getBenthosTotalUnsortedComputedWeight());
- }
-
- public Boolean getBenthosTotalUnsortedWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- null, catchBatch.getBenthosTotalUnsortedComputedWeight());
- }
-
- public Float getBenthosTotalSampleSortedWeight() {
- return TuttiEntities.getValueOrComputedValue(
- null, catchBatch.getBenthosTotalSampleSortedComputedWeight());
- }
-
- public Boolean getBenthosTotalSampleSortedWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- null, catchBatch.getBenthosTotalSampleSortedComputedWeight());
- }
-
- public Float getBenthosTotalInertWeight() {
- return TuttiEntities.getValueOrComputedValue(
- catchBatch.getBenthosTotalInertWeight(),
- catchBatch.getBenthosTotalInertComputedWeight());
- }
-
- public Boolean getBenthosTotalInertWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- catchBatch.getBenthosTotalInertWeight(),
- catchBatch.getBenthosTotalInertComputedWeight());
- }
-
- public Float getBenthosTotalLivingNotItemizedWeight() {
- return TuttiEntities.getValueOrComputedValue(
- catchBatch.getBenthosTotalLivingNotItemizedWeight(),
- catchBatch.getBenthosTotalLivingNotItemizedComputedWeight());
- }
-
- public Boolean getBenthosTotalLivingNotItemizedWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- catchBatch.getBenthosTotalLivingNotItemizedWeight(),
- catchBatch.getBenthosTotalLivingNotItemizedComputedWeight());
- }
-
- public Float getMarineLitterTotalWeight() {
- return TuttiEntities.getValueOrComputedValue(
- catchBatch.getMarineLitterTotalWeight(),
- catchBatch.getMarineLitterTotalComputedWeight());
- }
-
- public Boolean getMarineLitterTotalWeightComputed() {
- return TuttiEntities.getValueOrComputedValueComputed(
- catchBatch.getMarineLitterTotalWeight(),
- catchBatch.getMarineLitterTotalComputedWeight());
- }
-
- protected Serializable getGearUseFeature(Caracteristic caracteristic) {
- CaracteristicMap gearUseFeatures = fishingOperation.getGearUseFeatures();
- Serializable serializable = gearUseFeatures == null ? null : gearUseFeatures.get(caracteristic);
- return serializable;
- }
-}
\ No newline at end of file
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,94 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.service.DecoratorService;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Model of a parameter export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.3
- */
-public class ParameterExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<ParameterExportRow> {
-
- public ParameterExportModel(char separator, DecoratorService decoratorService) {
- super(separator);
-
- newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
- newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
- newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
- newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER);
- newColumnForExport("Numero_Trait", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
- newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
-
- newColumnForExport("Code_PMFM", ParameterExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
- newColumnForExportByDecorator("Libelle_PMFm", ParameterExportRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class));
- newColumnForExport("Valeur", ParameterExportRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
- }
-
- public void prepareRows(List<ParameterExportRow> rows,
- Cruise cruise,
- FishingOperation operation) {
-
- CaracteristicMap gearUseFeatures = operation.getGearUseFeatures();
- if (gearUseFeatures != null) {
- for (Map.Entry<Caracteristic, Serializable> entry : gearUseFeatures.entrySet()) {
- Caracteristic caracteristic = entry.getKey();
-
- ParameterExportRow row = new ParameterExportRow();
- row.setCruise(cruise);
- row.setFishingOperation(operation);
- row.setCaracteristic(caracteristic);
- row.setValue(entry.getValue());
- rows.add(row);
- }
- }
- CaracteristicMap vesselUseFeatures = operation.getVesselUseFeatures();
- if (vesselUseFeatures != null) {
- for (Map.Entry<Caracteristic, Serializable> entry : vesselUseFeatures.entrySet()) {
- Caracteristic caracteristic = entry.getKey();
-
- ParameterExportRow row = new ParameterExportRow();
- row.setCruise(cruise);
- row.setFishingOperation(operation);
- row.setCaracteristic(caracteristic);
- row.setValue(entry.getValue());
- rows.add(row);
- }
- }
- }
-
-}
\ No newline at end of file
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,105 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * A row in a parameter export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.3
- */
-public class ParameterExportRow implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- public static final String PROPERTY_CARACTERISTIC = "caracteristic";
-
- public static final String PROPERTY_VALUE = "value";
-
-
- protected Cruise cruise;
-
- protected FishingOperation fishingOperation;
-
- protected Caracteristic caracteristic;
-
- private Serializable value;
-
- public void setCruise(Cruise cruise) {
- this.cruise = cruise;
- }
-
- public void setFishingOperation(FishingOperation fishingOperation) {
- this.fishingOperation = fishingOperation;
- }
-
- public void setCaracteristic(Caracteristic caracteristic) {
- this.caracteristic = caracteristic;
- }
-
- public void setValue(Serializable value) {
- this.value = value;
- }
-
- public Date getBeginDate() {
- return cruise.getBeginDate();
- }
-
- public Program getProgram() {
- return cruise.getProgram();
- }
-
- public String getSurveyPart() {
- return cruise.getSurveyPart();
- }
-
- public String getStationNumber() {
- return fishingOperation.getStationNumber();
- }
-
- public Integer getFishingOperationNumber() {
- return fishingOperation.getFishingOperationNumber();
- }
-
- public String getMultirigAggregation() {
- return fishingOperation.getMultirigAggregation();
- }
-
- public Caracteristic getCaracteristic() {
- return caracteristic;
- }
-
- public Serializable getValue() {
- return value;
- }
-}
\ No newline at end of file
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SpeciesExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SpeciesExportModel.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SpeciesExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,77 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
-import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
-import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-
-import java.util.List;
-
-/**
- * To export a species used in data to export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.3
- */
-public class SpeciesExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<SpeciesExportRow> {
-
- public SpeciesExportModel(char separator) {
- super(separator);
- newColumnForExport("Id", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
- newColumnForExport("Code_Rubin", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_REF_TAX_CODE);
- newColumnForExport("Nom Scientifique", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_NAME);
- newColumnForExport("Code campagne", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_SURVEY_CODE);
- }
-
- public void prepareBatchRows(TuttiExportService.ExportContext exportContext,
- BatchContainer<SpeciesBatch> rootSpeciesBatch,
- BatchContainer<BenthosBatch> rootBenthosBatch) {
-
- for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) {
-
- exportContext.addSpecies(speciesBatch.getSpecies());
- }
- for (BenthosBatch benthosBatch : rootBenthosBatch.getChildren()) {
- exportContext.addSpecies(benthosBatch.getSpecies());
- }
- }
-
- public void prepareIndividualRows(TuttiExportService.ExportContext exportContext,
- List<IndividualObservationExportRow> rows) {
- for (IndividualObservationExportRow row : rows) {
- exportContext.addSpecies(row.getSpecies());
- }
- }
-
- public void prepareAccidentalRows(TuttiExportService.ExportContext exportContext,
- List<AccidentalCatchExportRow> rows) {
- for (AccidentalCatchExportRow row : rows) {
- exportContext.addSpecies(row.getSpecies());
- }
- }
-}
\ No newline at end of file
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SpeciesExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SpeciesExportRow.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SpeciesExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,52 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-
-import java.io.Serializable;
-
-/**
- * A species in a export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.3
- */
-public class SpeciesExportRow implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- public static final String SPECIES = "species";
-
- protected Species species;
-
- public Species getSpecies() {
- return species;
- }
-
- public void setSpecies(Species species) {
- this.species = species;
- }
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,72 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-
-import java.util.List;
-
-/**
- * Model of a survey export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.3
- */
-public class SurveyExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<SurveyExportRow> {
-
- public SurveyExportModel(char separator) {
- super(separator);
-
- newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
- newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
- newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
- newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER);
- newColumnForExport("Pays", SurveyExportRow.PROPERTY_COUNTRY);
- newColumnForExport("Zone_Etude", Program.PROPERTY_ZONE, TuttiLocation.PROPERTY_NAME);
- newColumnForExport("Campagne", Cruise.PROPERTY_NAME);
- newColumnForExport("Id_Sismer", SurveyExportRow.PROPERTY_ID_SISMER);
-// newColumnForExport("Nombre_de_poche", Cruise.PROPERTY_MULTIRIG_NUMBER, TuttiCsvUtil.PRIMITIVE_INTEGER);
- newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
- newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiLocation.PROPERTY_NAME);
- newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
- newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION, TuttiLocation.PROPERTY_NAME);
-// newColumnForExport("Engin", Cruise.PROPERTY_GEAR, TuttiCsvUtil.LIST_GEAR_FORMATTER);
- newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION, TuttiCsvUtil.LIST_PERSON_FORMATTER);
- newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, TuttiCsvUtil.LIST_PERSON_FORMATTER);
- newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT);
- }
-
- public void prepareRows(List<SurveyExportRow> rows,
- Cruise cruise,
- TuttiLocation country) {
- SurveyExportRow row = new SurveyExportRow();
- row.setCruise(cruise);
- row.setCountry(country);
- rows.add(row);
- }
-}
\ No newline at end of file
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,128 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.GearWithOriginalRankOrder;
-import fr.ifremer.tutti.persistence.entities.referential.Person;
-import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
-import fr.ifremer.tutti.persistence.entities.referential.Vessel;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-/**
- * A row in a survey export.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.3
- */
-public class SurveyExportRow implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- public static final String PROPERTY_COUNTRY = "country";
-
- public static final String PROPERTY_ID_SISMER = "idSismer";
-
- protected Cruise cruise;
-
- protected TuttiLocation country;
-
- public void setCruise(Cruise cruise) {
- this.cruise = cruise;
- }
-
- public void setCountry(TuttiLocation country) {
- this.country = country;
- }
-
- public Date getBeginDate() {
- return cruise.getBeginDate();
- }
-
- public Program getProgram() {
- return cruise.getProgram();
- }
-
- public String getSurveyPart() {
- return cruise.getSurveyPart();
- }
-
- public TuttiLocation getZone() {
- return cruise.getProgram().getZone();
- }
-
- public Vessel getVessel() {
- return cruise.getVessel();
- }
-
- public String getCountry() {
- return country.getLabel();
- }
-
- public String getName() {
- return cruise.getName();
- }
-
- public List<GearWithOriginalRankOrder> getGear() {
- return cruise.getGear();
- }
-
- public TuttiLocation getDepartureLocation() {
- return cruise.getDepartureLocation();
- }
-
- public Date getEndDate() {
- return cruise.getEndDate();
- }
-
- public TuttiLocation getReturnLocation() {
- return cruise.getReturnLocation();
- }
-
- public String getComment() {
- return cruise.getComment();
- }
-
- public List<Person> getHeadOfMission() {
- return cruise.getHeadOfMission();
- }
-
- public List<Person> getHeadOfSortRoom() {
- return cruise.getHeadOfSortRoom();
- }
-
- public Integer getMultirigNumber() {
- return cruise.getMultirigNumber();
- }
-
- // see http://forge.codelutin.com/issues/2877
- public String getIdSismer() {
- return "";
- }
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,953 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.io.Files;
-import fr.ifremer.tutti.TuttiBusinessException;
-import fr.ifremer.tutti.TuttiIOUtil;
-import fr.ifremer.tutti.TuttiTechnicalException;
-import fr.ifremer.tutti.persistence.ProgressionModel;
-import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
-import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
-import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
-import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.Gears;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
-import fr.ifremer.tutti.persistence.entities.referential.Vessel;
-import fr.ifremer.tutti.service.AbstractTuttiService;
-import fr.ifremer.tutti.service.DecoratorService;
-import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-import fr.ifremer.tutti.service.TuttiServiceContext;
-import fr.ifremer.tutti.service.catches.WeightComputingService;
-import org.apache.commons.collections.MapUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.decorator.Decorator;
-
-import java.io.BufferedWriter;
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * To export data in the generic format.
- * <p/>
- * See http://forge.codelutin.com/issues/1875.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.3
- */
-public class TuttiExportService extends AbstractTuttiService {
-
- private static final Log log =
- LogFactory.getLog(TuttiExportService.class);
-
- protected PersistenceService persistenceService;
-
- protected DecoratorService decoratorService;
-
- protected WeightComputingService weightComputingService;
-
- protected char csvSeparator;
-
- protected Caracteristic verticalOpeningCaracteristic;
-
- protected Caracteristic horizontalOpeningWingCaracteristic;
-
- protected Caracteristic horizontalOpeningDoorCaracteristic;
-
- protected TuttiLocation country;
-
- protected SampleCategoryModel sampleCategoryModel;
-
- protected Caracteristic deadOrAliveCaracteristic;
-
- protected Caracteristic genderCaracteristic;
-
- protected Caracteristic weightMeasuredCaracteristic;
-
- protected Caracteristic pmfmIdCaracteristic;
-
- @Override
- public void setServiceContext(TuttiServiceContext context) {
- super.setServiceContext(context);
- persistenceService = getService(PersistenceService.class);
- decoratorService = getService(DecoratorService.class);
- weightComputingService = getService(WeightComputingService.class);
-
- sampleCategoryModel = context.getSampleCategoryModel();
-
- csvSeparator = context.getConfig().getCsvSeparator();
- verticalOpeningCaracteristic = persistenceService.getVerticalOpeningCaracteristic();
- horizontalOpeningWingCaracteristic = persistenceService.getHorizontalOpeningWingCaracteristic();
- horizontalOpeningDoorCaracteristic = persistenceService.getHorizontalOpeningDoorCaracteristic();
- weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic();
- pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic();
- deadOrAliveCaracteristic = persistenceService.getDeadOrAliveCaracteristic();
- genderCaracteristic = persistenceService.getSexCaracteristic();
-
- List<TuttiLocation> allCountry = persistenceService.getAllCountry();
- String countryId = context.getConfig().getExportCountryId();
- country = TuttiEntities.splitById(allCountry).get(countryId);
- }
-
- public void exportProgram(String programId,
- File exportFile,
- ProgressionModel progressionModel) {
- Preconditions.checkNotNull(programId);
- Preconditions.checkNotNull(exportFile);
-
- Program program = persistenceService.getProgram(programId);
- Preconditions.checkNotNull(program);
-
- if (log.isDebugEnabled()) {
- log.debug("Will export program: " + programId);
- }
- List<Cruise> allCruise = persistenceService.getAllCruise(programId);
-
- File basedir = new File(context.getConfig().newTempFile(
- "exportProgram"), "exportProgram-" + programId);
-
- TuttiIOUtil.forceMkdir(basedir, _("tutti.service.mkDir.error", basedir));
-
- ExportContext exportContext = createExportContext(basedir);
-
- try {
- for (Cruise cruise : allCruise) {
- // load full cruise
- cruise = persistenceService.getCruise(cruise.getId());
- exportCruise(cruise, exportContext, progressionModel);
- }
- TuttiIOUtil.close(exportContext, _("tutti.service.export.closeContext.error"));
-
- progressionModel.setMessage(
- _("tutti.service.exportCruise.buildZip", exportFile));
-
- TuttiIOUtil.zip(basedir, exportFile, _("tutti.service.export.zip.error", exportFile));
- progressionModel.increments(1);
- } finally {
- IOUtils.closeQuietly(exportContext);
- }
- }
-
- public void exportCruise(String cruiseId,
- File exportFile,
- ProgressionModel progressionModel) {
-
- Preconditions.checkNotNull(cruiseId);
- Preconditions.checkNotNull(exportFile);
-
- Cruise cruise = persistenceService.getCruise(cruiseId);
- Preconditions.checkNotNull(cruise);
-
- if (log.isDebugEnabled()) {
- log.debug("Will export cruise: " + cruiseId);
- }
-
- // check cruise fishing operations
- TuttiBusinessException checkError = null;
- try {
- checkCruise(progressionModel, cruise);
- } catch (TuttiBusinessException e) {
- // error while checking cruise
- if (log.isDebugEnabled()) {
- log.debug("Got a check cruise error", e);
- }
- checkError = e;
- }
-
- File basedir = new File(context.getConfig().newTempFile(
- "exportCruise"), "exportCruise-" + cruiseId);
-
- TuttiIOUtil.forceMkdir(basedir, _("tutti.service.mkDir.error", basedir));
-
- ExportContext exportContext = createExportContext(basedir);
-
- try {
- exportCruise(cruise, exportContext, progressionModel);
- TuttiIOUtil.close(exportContext, _("tutti.service.export.closeContext.error"));
-
- progressionModel.setMessage(
- _("tutti.service.exportCruise.buildZip", exportFile));
-
- TuttiIOUtil.zip(basedir, exportFile, _("tutti.service.export.zip.error", exportFile));
- progressionModel.increments(1);
- } finally {
- IOUtils.closeQuietly(exportContext);
- }
-
- if (checkError != null) {
- // rethrow error
- throw checkError;
- }
- }
-
- protected ExportContext createExportContext(File basedir) {
-
-
- List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies();
- Map<String, Species> speciesById = TuttiEntities.splitById(allReferentSpecies);
-
- return new ExportContext(
- basedir,
- csvSeparator,
- decoratorService,
- verticalOpeningCaracteristic,
- horizontalOpeningWingCaracteristic,
- horizontalOpeningDoorCaracteristic,
- weightMeasuredCaracteristic,
- deadOrAliveCaracteristic,
- genderCaracteristic,
- pmfmIdCaracteristic,
- sampleCategoryModel,
- speciesById);
- }
-
- protected void checkCruise(ProgressionModel progressionModel, Cruise cruise) {
- Preconditions.checkNotNull(cruise);
-
-
- progressionModel.setMessage(
- _("tutti.service.exportCruise.checkCruise", cruise.getName()));
-
- // check cruise fishing operations
- Map<String, String> errors =
- weightComputingService.checkCruise(cruise.getId());
-
- progressionModel.increments(1);
-
- if (MapUtils.isNotEmpty(errors)) {
-
- // there is some fishing operations with some errors
-
- Decorator<Cruise> cruiseDecorator =
- decoratorService.getDecoratorByType(Cruise.class);
-
- Decorator<FishingOperation> fishingOperationDecorator =
- decoratorService.getDecoratorByType(FishingOperation.class);
- StringBuilder sb = new StringBuilder();
- for (Map.Entry<String, String> entry : errors.entrySet()) {
- String fishingOperationId = entry.getKey();
- FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId);
- String fishingOperationStr = fishingOperationDecorator.toString(fishingOperation);
- sb.append(_("tutti.service.export.invalid.fishingOperation", fishingOperationStr, entry.getValue()));
- }
- String cruiseStr = cruiseDecorator.toString(cruise);
- throw new TuttiBusinessException(
- _("tutti.service.export.invalid.cruise", cruiseStr, sb.toString()));
- }
- }
-
- protected void exportCruise(Cruise cruise,
- ExportContext exportContext,
- ProgressionModel progressionModel) {
-
- List<FishingOperation> operations =
- persistenceService.getAllFishingOperation(cruise.getId());
-
- // load fully operations
- List<FishingOperation> loadedOperations =
- Lists.newArrayListWithCapacity(operations.size());
- for (FishingOperation operation : operations) {
- FishingOperation loadedOeration =
- persistenceService.getFishingOperation(operation.getId());
- loadedOperations.add(loadedOeration);
- }
-
- String cruiseName = cruise.getName();
- progressionModel.setMessage(
- _("tutti.service.exportCruise.exportSurvey", cruiseName));
- exportSurvey(exportContext, cruise);
- progressionModel.increments(1);
-
- progressionModel.setMessage(
- _("tutti.service.exportCruise.exportGearCaracteristics", cruiseName));
- exportGearCaracteristics(exportContext, cruise);
- progressionModel.increments(1);
-
- progressionModel.setMessage(
- _("tutti.service.exportCruise.exportOperations", cruiseName));
- exportOperations(exportContext, cruise, loadedOperations);
- progressionModel.increments(1);
-
- progressionModel.setMessage(
- _("tutti.service.exportCruise.exportParameters", cruiseName));
- exportParameters(exportContext, cruise, loadedOperations);
- progressionModel.increments(1);
-
- progressionModel.setMessage(
- _("tutti.service.exportCruise.exportMarineLitters", cruiseName));
- exportMarineLitters(exportContext, cruise, loadedOperations);
- progressionModel.increments(1);
-
- progressionModel.setMessage(
- _("tutti.service.exportCruise.exportIndividualObservations", cruiseName));
- exportIndividualObservations(exportContext, cruise, loadedOperations);
- progressionModel.increments(1);
-
- progressionModel.setMessage(
- _("tutti.service.exportCruise.exportAccidentalCatches", cruiseName));
- exportAccidentalCatch(exportContext, cruise, loadedOperations);
- progressionModel.increments(1);
-
- progressionModel.setMessage(
- _("tutti.service.exportCruise.exportCatches", cruiseName));
- exportCatches(exportContext, cruise, loadedOperations);
- progressionModel.increments(1);
-
- progressionModel.setMessage(
- _("tutti.service.exportCruise.exportSpecies", cruiseName));
-
- exportSpecies(exportContext, exportContext.getSpeciesToExport());
- progressionModel.increments(1);
- }
-
- protected void exportSurvey(ExportContext exportContext,
- Cruise cruise) {
- try {
-
- List<SurveyExportRow> rows = Lists.newArrayList();
- exportContext.surveyModel.prepareRows(rows, cruise, country);
- exportContext.surveyExport.write(rows, exportContext.surveyWriter);
- } catch (Exception e) {
- throw new TuttiTechnicalException(_("tutti.service.export.survey.error"), e);
- }
- }
-
- protected void exportGearCaracteristics(ExportContext exportContext,
- Cruise cruise) {
- try {
-
- List<GearCaracteristicExportRow> rows = Lists.newArrayList();
-
- for (Gear gear : cruise.getGear()) {
-
- CaracteristicMap caracteristics =
- persistenceService.getGearCaracteristics(
- cruise.getId(),
- gear.getId(),
- gear.getRankOrder());
-
- Gear gearWithCaracteristics = Gears.newGear(gear);
- gearWithCaracteristics.setCaracteristics(caracteristics);
- exportContext.gearCaracteristicsModel.prepareRows(rows, cruise, gearWithCaracteristics);
- }
-
- exportContext.gearCaracteristicsExport.write(rows, exportContext.gearCaracteristicsWriter);
- } catch (Exception e) {
- throw new TuttiTechnicalException(_("tutti.service.export.survey.error"), e);
- }
- }
-
- protected void exportOperations(ExportContext exportContext,
- Cruise cruise,
- List<FishingOperation> operations) {
-
- try {
-
- List<OperationExportRow> rows = Lists.newArrayList();
-
- for (FishingOperation operation : operations) {
-
- OperationContext operationContext = getOperationContext(operation);
- CatchBatch catchBatch = operationContext.getCatchBatch();
- exportContext.operationModel.prepareRows(rows,
- cruise,
- operation,
- catchBatch);
- }
-
- exportContext.operationExport.write(rows, exportContext.operationWriter);
- } catch (Exception e) {
- throw new TuttiTechnicalException(_("tutti.service.export.operations.error"), e);
- }
- }
-
- protected void exportParameters(ExportContext exportContext,
- Cruise cruise,
- List<FishingOperation> operations) {
-
- try {
-
- for (FishingOperation operation : operations) {
- List<ParameterExportRow> rows = Lists.newArrayList();
- exportContext.parameterModel.prepareRows(rows, cruise, operation);
- exportContext.parameterExport.write(rows, exportContext.parameterWriter);
- }
-
- } catch (Exception e) {
- throw new TuttiTechnicalException(_("tutti.service.export.parameters.error"), e);
- }
- }
-
- protected void exportMarineLitters(ExportContext exportContext,
- Cruise cruise,
- List<FishingOperation> operations) {
-
- try {
-
- for (FishingOperation operation : operations) {
- OperationContext operationContext = getOperationContext(operation);
-
- boolean withCatchBatch = operationContext.isWithCatchBatch();
- if (!withCatchBatch) {
- continue;
- }
- List<MarineLitterExportRow> rows = Lists.newArrayList();
- exportContext.marineLitterModel.prepareRows(persistenceService, rows, cruise, operation);
- exportContext.marineLitterExport.write(rows, exportContext.marineLitterWriter);
- }
-
- } catch (Exception e) {
- throw new TuttiTechnicalException(_("tutti.service.export.parameters.error"), e);
- }
- }
-
- protected void exportIndividualObservations(ExportContext exportContext,
- Cruise cruise,
- List<FishingOperation> operations) {
-
- try {
-
- for (FishingOperation operation : operations) {
- OperationContext operationContext = getOperationContext(operation);
-
- boolean withCatchBatch = operationContext.isWithCatchBatch();
- if (!withCatchBatch) {
- continue;
- }
- List<IndividualObservationExportRow> rows = Lists.newArrayList();
- exportContext.individualObservationModel.prepareRows(persistenceService, rows, cruise, operation);
- exportContext.speciesModel.prepareIndividualRows(
- exportContext,
- rows);
- exportContext.individualObservationExport.write(rows, exportContext.individualObservationWriter);
- }
-
- } catch (Exception e) {
- throw new TuttiTechnicalException(_("tutti.service.export.parameters.error"), e);
- }
- }
-
- protected void exportAccidentalCatch(ExportContext exportContext,
- Cruise cruise,
- List<FishingOperation> operations) {
- try {
-
- for (FishingOperation operation : operations) {
- List<AccidentalCatchExportRow> rows = Lists.newArrayList();
- exportContext.accidentalCatchModel.prepareRows(persistenceService, rows, cruise, operation);
- exportContext.speciesModel.prepareAccidentalRows(
- exportContext,
- rows);
- exportContext.accidentalCatchExport.write(rows, exportContext.accidentalCatchWriter);
- }
-
- } catch (Exception e) {
- throw new TuttiTechnicalException(_("tutti.service.export.parameters.error"), e);
- }
- }
-
- protected void exportCatches(ExportContext exportContext,
- Cruise cruise,
- List<FishingOperation> operations) {
- try {
-
- for (FishingOperation operation : operations) {
-
- OperationContext operationContext = getOperationContext(operation);
-
- boolean withCatchBatch = operationContext.isWithCatchBatch();
- if (!withCatchBatch) {
- continue;
- }
-
- CatchBatch catchBatch = operationContext.getCatchBatch();
-
- BatchContainer<SpeciesBatch> rootSpeciesBatch =
- operationContext.getRootSpeciesBatch();
-
- BatchContainer<BenthosBatch> rootBenthosBatch =
- operationContext.getRootBenthosBatch();
-
- exportContext.speciesModel.prepareBatchRows(
- exportContext,
- rootSpeciesBatch,
- rootBenthosBatch);
-
- Float totalWeight = TuttiEntities.getValueOrComputedValue(
- catchBatch.getCatchTotalWeight(),
- catchBatch.getCatchTotalComputedWeight());
-
- Float totalUnsortedWeight =
- catchBatch.getCatchTotalUnsortedComputedWeight();
-
-
- Float totalSortedSpeciesWeight = TuttiEntities.getValueOrComputedValue(
- catchBatch.getSpeciesTotalSortedWeight(),
- catchBatch.getSpeciesTotalSortedComputedWeight());
-
- Float totalSampleSortedSpeciesWeight =
- catchBatch.getSpeciesTotalSampleSortedComputedWeight();
-
- Float totalSortedBenthosWeight = TuttiEntities.getValueOrComputedValue(
- catchBatch.getBenthosTotalSortedWeight(),
- catchBatch.getBenthosTotalSortedComputedWeight());
-
- Float totalSampleSortedBenthosWeight =
- catchBatch.getBenthosTotalSampleSortedComputedWeight();
-
- Float totalSortedWeight = catchBatch.getCatchTotalSortedComputedWeight();
-
- //FIXME tchemit 2013-07-12 J'utilise en fait la formule (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée)
- // (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée - poids du HV dans la capture totale)
-
- Float catchRaisingFactor = totalWeight == null || totalUnsortedWeight == null || totalSortedWeight == null ? 1 : (totalWeight - totalUnsortedWeight) / totalSortedWeight;
-
- Float speciesCatchRaisingFactor = totalSampleSortedSpeciesWeight == null || totalSortedSpeciesWeight == null || totalSampleSortedSpeciesWeight == null ? 1 : (totalSampleSortedSpeciesWeight == 0 ? 0 : (totalSortedSpeciesWeight / totalSampleSortedSpeciesWeight) * catchRaisingFactor);
- Float benthosCatchRaisingFactor = totalSampleSortedBenthosWeight == null || totalSortedBenthosWeight == null || totalSampleSortedBenthosWeight == null ? 1 : (totalSampleSortedBenthosWeight == 0 ? 0 : (totalSortedBenthosWeight / totalSampleSortedBenthosWeight) * catchRaisingFactor);
-
- if (log.isDebugEnabled()) {
- String message = "\ncatchTotalWeight : " + totalWeight +
- "\ncatchTotalUnsortedWeight : " + totalUnsortedWeight +
- "\ntotalSampleSortedSpeciesWeight : " + totalSampleSortedSpeciesWeight +
- "\ntotalSampleSortedBenthosWeight : " + totalSampleSortedBenthosWeight +
- "\ntotalSortedWeight : " + totalSortedWeight +
- "\ncatchRaisingFactor : " + catchRaisingFactor +
- "\nspeciesCatchRaisingFactor : " + speciesCatchRaisingFactor +
- "\nbenthosCatchRaisingFactor : " + benthosCatchRaisingFactor;
-
- log.debug(message);
- }
-
- List<CatchExportRow> rows = Lists.newArrayList();
- exportContext.catchModel.prepareRows(persistenceService,
- rows,
- cruise,
- operation,
- rootSpeciesBatch,
- rootBenthosBatch,
- speciesCatchRaisingFactor,
- benthosCatchRaisingFactor);
-
- exportContext.catchExport.write(rows, exportContext.catchWriter);
- }
-
- } catch (Exception e) {
- throw new TuttiTechnicalException(
- _("tutti.service.export.catches.error"), e);
- }
- }
-
- protected void exportSpecies(ExportContext exportContext,
- List<SpeciesExportRow> rows) {
-
- try {
-
- exportContext.speciesExport.write(rows, exportContext.speciesWriter);
-
- } catch (Exception e) {
- throw new TuttiTechnicalException(
- _("tutti.service.export.catches.error"), e);
- }
- }
-
- protected static class ExportContext implements Closeable {
-
- File surveyFile;
-
- File gearCaracteristicsFile;
-
- File operationFile;
-
- File parameterFile;
-
- File marineLitterFile;
-
- File individualObservationFile;
-
- File catchFile;
-
- File accidentalCatchFile;
-
- File speciesFile;
-
- BufferedWriter surveyWriter;
-
- BufferedWriter gearCaracteristicsWriter;
-
- BufferedWriter operationWriter;
-
- BufferedWriter parameterWriter;
-
- BufferedWriter marineLitterWriter;
-
- BufferedWriter catchWriter;
-
- BufferedWriter accidentalCatchWriter;
-
- BufferedWriter individualObservationWriter;
-
- BufferedWriter speciesWriter;
-
- SurveyExportModel surveyModel;
-
- GearCaracteristicExportModel gearCaracteristicsModel;
-
- OperationExportModel operationModel;
-
- MarineLitterExportModel marineLitterModel;
-
- ParameterExportModel parameterModel;
-
- CatchExportModel catchModel;
-
- AccidentalCatchExportModel accidentalCatchModel;
-
- IndividualObservationExportModel individualObservationModel;
-
- SpeciesExportModel speciesModel;
-
- final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap();
-
- TuttiCsvUtil.TuttiRepeatableExport<SurveyExportRow> surveyExport;
-
- TuttiCsvUtil.TuttiRepeatableExport<GearCaracteristicExportRow> gearCaracteristicsExport;
-
- TuttiCsvUtil.TuttiRepeatableExport<OperationExportRow> operationExport;
-
- TuttiCsvUtil.TuttiRepeatableExport<MarineLitterExportRow> marineLitterExport;
-
- TuttiCsvUtil.TuttiRepeatableExport<ParameterExportRow> parameterExport;
-
- TuttiCsvUtil.TuttiRepeatableExport<CatchExportRow> catchExport;
-
- TuttiCsvUtil.TuttiRepeatableExport<AccidentalCatchExportRow> accidentalCatchExport;
-
- TuttiCsvUtil.TuttiRepeatableExport<IndividualObservationExportRow> individualObservationExport;
-
- TuttiCsvUtil.TuttiRepeatableExport<SpeciesExportRow> speciesExport;
-
- Map<String, Species> speciesById;
-
- String checkError;
-
- ExportContext(File basedir,
- char csvSeparator,
- DecoratorService decoratorService,
- Caracteristic verticalOpeningCaracteristic,
- Caracteristic horizontalOpeningWingCaracteristic,
- Caracteristic horizontalOpeningDoorCaracteristic,
- Caracteristic weightMeasuredCaracteristic,
- Caracteristic deadOrAliveCaracteristic,
- Caracteristic genderCaracteristic,
- Caracteristic pmfmIdCaracteristic,
- SampleCategoryModel sampleCategoryModel,
- Map<String, Species> speciesById) {
-
- this.speciesById = speciesById;
- try {
-
- surveyFile = new File(basedir, "survey.csv");
- surveyWriter = Files.newWriter(surveyFile, Charsets.UTF_8);
-
- gearCaracteristicsFile = new File(basedir, "gearCaracteristics.csv");
- gearCaracteristicsWriter = Files.newWriter(gearCaracteristicsFile, Charsets.UTF_8);
-
- operationFile = new File(basedir, "operation.csv");
- operationWriter = Files.newWriter(operationFile, Charsets.UTF_8);
-
- marineLitterFile = new File(basedir, "marineLitter.csv");
- marineLitterWriter = Files.newWriter(marineLitterFile, Charsets.UTF_8);
-
- parameterFile = new File(basedir, "parameter.csv");
- parameterWriter = Files.newWriter(parameterFile, Charsets.UTF_8);
-
- catchFile = new File(basedir, "catch.csv");
- catchWriter = Files.newWriter(catchFile, Charsets.UTF_8);
-
- accidentalCatchFile = new File(basedir, "accidentalCatch.csv");
- accidentalCatchWriter = Files.newWriter(accidentalCatchFile, Charsets.UTF_8);
-
- individualObservationFile = new File(basedir, "individualObservation.csv");
- individualObservationWriter = Files.newWriter(individualObservationFile, Charsets.UTF_8);
-
- speciesFile = new File(basedir, "species.csv");
- speciesWriter = Files.newWriter(speciesFile, Charsets.UTF_8);
-
- } catch (FileNotFoundException e) {
-
- // should never happen
- throw new TuttiTechnicalException(_("tutti.service.export.context.error"), e);
- }
-
- surveyModel = new SurveyExportModel(csvSeparator);
-
- gearCaracteristicsModel = new GearCaracteristicExportModel(
- csvSeparator, decoratorService);
-
- operationModel =
- new OperationExportModel(
- csvSeparator,
- verticalOpeningCaracteristic,
- horizontalOpeningWingCaracteristic,
- horizontalOpeningDoorCaracteristic,
- decoratorService.getDecoratorByType(Vessel.class));
-
- parameterModel = new ParameterExportModel(
- csvSeparator, decoratorService);
-
- marineLitterModel = new MarineLitterExportModel(csvSeparator);
- catchModel = new CatchExportModel(csvSeparator,
- sampleCategoryModel,
- decoratorService);
- accidentalCatchModel = new AccidentalCatchExportModel(
- csvSeparator,
- deadOrAliveCaracteristic,
- genderCaracteristic,
- weightMeasuredCaracteristic,
- pmfmIdCaracteristic);
- individualObservationModel = new IndividualObservationExportModel(
- csvSeparator,
- weightMeasuredCaracteristic,
- pmfmIdCaracteristic);
-
- speciesModel = new SpeciesExportModel(
- csvSeparator);
-
- surveyExport = TuttiCsvUtil.newRepeatableExport(surveyModel);
-
- gearCaracteristicsExport = TuttiCsvUtil.newRepeatableExport(
- gearCaracteristicsModel);
-
- operationExport = TuttiCsvUtil.newRepeatableExport(
- operationModel);
-
- parameterExport = TuttiCsvUtil.newRepeatableExport(
- parameterModel);
-
- marineLitterExport = TuttiCsvUtil.newRepeatableExport(
- marineLitterModel);
-
- catchExport = TuttiCsvUtil.newRepeatableExport(catchModel);
- accidentalCatchExport = TuttiCsvUtil.newRepeatableExport(accidentalCatchModel);
- individualObservationExport = TuttiCsvUtil.newRepeatableExport(individualObservationModel);
- speciesExport = TuttiCsvUtil.newRepeatableExport(speciesModel);
- }
-
- @Override
- public void close() throws IOException {
- IOUtils.closeQuietly(surveyWriter);
- IOUtils.closeQuietly(gearCaracteristicsWriter);
- IOUtils.closeQuietly(operationWriter);
- IOUtils.closeQuietly(parameterWriter);
- IOUtils.closeQuietly(catchWriter);
- IOUtils.closeQuietly(accidentalCatchWriter);
- IOUtils.closeQuietly(marineLitterWriter);
- IOUtils.closeQuietly(individualObservationWriter);
- IOUtils.closeQuietly(speciesWriter);
- }
-
- public String getCheckError() {
- return checkError;
- }
-
- public void setCheckError(String checkError) {
- this.checkError = checkError;
- }
-
- public void addSpecies(Species species) {
- String speciesId = species.getId();
- if (!speciesToExport.containsKey(speciesId)) {
-
- // not treated species, add a new row
- Species fullSpecies = speciesById.get(speciesId);
- SpeciesExportRow row = new SpeciesExportRow();
- row.setSpecies(fullSpecies);
- speciesToExport.put(speciesId, row);
- }
- }
-
- public List<SpeciesExportRow> getSpeciesToExport() {
- List<SpeciesExportRow> result =
- Lists.newArrayList(speciesToExport.values());
-
- Collections.sort(result, new Comparator<SpeciesExportRow>() {
- @Override
- public int compare(SpeciesExportRow o1, SpeciesExportRow o2) {
- return o1.getSpecies().getReferenceTaxonId().compareTo(o2.getSpecies().getReferenceTaxonId());
- }
- });
- return result;
- }
- }
-
- protected static class OperationContext {
-
- protected final FishingOperation operation;
-
- private final CatchBatch catchBatch;
-
- private BatchContainer<MarineLitterBatch> rootMarineLitterBatch;
-
- private BatchContainer<SpeciesBatch> rootSpeciesBatch;
-
- private BatchContainer<BenthosBatch> rootBenthosBatch;
-
-
- protected boolean withCatchBatch;
-
- public OperationContext(FishingOperation operation,
- PersistenceService persistenceService,
- WeightComputingService weightComputingService) {
- this.operation = operation;
-
- String operationId = operation.getId();
-
- withCatchBatch =
- persistenceService.isFishingOperationWithCatchBatch(
- operationId);
-
- if (withCatchBatch) {
-
-
- // load batches
-
- catchBatch =
- persistenceService.getCatchBatchFromFishingOperation(
- operationId);
-
- boolean withError = false;
-
- try {
- rootSpeciesBatch = weightComputingService.getComputedSpeciesBatches(operationId);
- } catch (Exception e) {
- withError = true;
- rootSpeciesBatch =
- persistenceService.getRootSpeciesBatch(operationId, null);
- }
-
- try {
- rootBenthosBatch =
- weightComputingService.getComputedBenthosBatches(operationId);
- } catch (Exception e) {
- withError = true;
- rootBenthosBatch =
- persistenceService.getRootBenthosBatch(operationId, null);
- }
-
- try {
- rootMarineLitterBatch =
- weightComputingService.getComputedMarineLitterBatches(operationId, catchBatch.getMarineLitterTotalWeight());
- } catch (Exception e) {
- withError = true;
- rootMarineLitterBatch =
- persistenceService.getRootMarineLitterBatch(operationId);
- }
-
- // apply compute weights
-
- if (!withError) {
- weightComputingService.computeCatchBatchWeights(
- catchBatch,
- rootSpeciesBatch,
- rootBenthosBatch,
- rootMarineLitterBatch);
- }
- } else {
- if (log.isWarnEnabled()) {
- log.warn("Skip fishing operation " + operationId +
- " since no catchBatch associated.");
- }
- catchBatch = null;
- rootSpeciesBatch = null;
- rootBenthosBatch = null;
- rootMarineLitterBatch = null;
- }
-
- }
-
- public CatchBatch getCatchBatch() {
- return catchBatch;
- }
-
- public BatchContainer<MarineLitterBatch> getRootMarineLitterBatch() {
- return rootMarineLitterBatch;
- }
-
- public BatchContainer<SpeciesBatch> getRootSpeciesBatch() {
- return rootSpeciesBatch;
- }
-
- public BatchContainer<BenthosBatch> getRootBenthosBatch() {
- return rootBenthosBatch;
- }
-
- public boolean isWithCatchBatch() {
- return withCatchBatch;
- }
- }
-
- protected Map<String, OperationContext> operationContexts = Maps.newTreeMap();
-
- protected OperationContext getOperationContext(FishingOperation operation) {
- String operationId = operation.getId();
-
- OperationContext result = operationContexts.get(operationId);
- if (result == null) {
-
- // create it
- result = new OperationContext(operation,
- persistenceService,
- weightComputingService);
- operationContexts.put(operationId, result);
- }
- return result;
-
- }
-}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportModel.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,170 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.2
+ */
+public class AccidentalCatchExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<AccidentalCatchExportRow> {
+
+ protected final Caracteristic caracteristicDeadOrAliveSize;
+
+ protected final Caracteristic caracteristicGender;
+
+ protected final Caracteristic caracteristicWeight;
+
+ protected final Caracteristic caracteristicPmfmId;
+
+ public AccidentalCatchExportModel(
+ char separator,
+ Caracteristic caracteristicDeadOrAliveSize,
+ Caracteristic caracteristicGender,
+ Caracteristic caracteristicWeight,
+ Caracteristic caracteristicPmfmId) {
+ super(separator);
+
+ this.caracteristicDeadOrAliveSize = caracteristicDeadOrAliveSize;
+ this.caracteristicGender = caracteristicGender;
+ this.caracteristicWeight = caracteristicWeight;
+ this.caracteristicPmfmId = caracteristicPmfmId;
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME);
+ newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("Numero_Trait", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
+ newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER);
+
+ newColumnForExport("BatchId", AccidentalCatchExportRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
+ newColumnForExport("ReferenceTaxonId", AccidentalBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
+ newColumnForExport("ReferenceTaxonName", AccidentalBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME);
+ newColumnForExport("Commentaire", AccidentalBatch.PROPERTY_COMMENT);
+ newColumnForExport("CaracteristicId", AccidentalCatchExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
+ newColumnForExport("CaracteristicValue", AccidentalCatchExportRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ }
+
+ public void prepareRows(PersistenceService persistenceService,
+ List<AccidentalCatchExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation) {
+
+ List<AccidentalBatch> observations =
+ persistenceService.getAllAccidentalBatch(operation.getId());
+
+ if (CollectionUtils.isNotEmpty(observations)) {
+ for (AccidentalBatch child : observations) {
+
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ caracteristicDeadOrAliveSize,
+ child.getDeadOrAlive());
+
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ caracteristicGender,
+ child.getGender());
+
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ caracteristicWeight,
+ child.getWeight());
+
+ if (child.getLengthStepCaracteristic() != null) {
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ caracteristicPmfmId,
+ child.getLengthStepCaracteristic().getIdAsInt());
+
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ child.getLengthStepCaracteristic(),
+ child.getSize());
+ }
+
+ CaracteristicMap caracteristics = child.getCaracteristics();
+ if (MapUtils.isNotEmpty(caracteristics)) {
+ for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) {
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ entry.getKey(),
+ entry.getValue());
+ }
+ }
+ }
+ }
+ }
+
+ private void addCaracteristicRow(List<AccidentalCatchExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation,
+ AccidentalBatch child,
+ Caracteristic caracteristic,
+ Serializable caracteristicValue) {
+ if (caracteristicValue != null) {
+
+ AccidentalCatchExportRow row = new AccidentalCatchExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setBatch(child);
+ row.setCaracteristic(caracteristic);
+ row.setCaracteristicValue(caracteristicValue);
+ rows.add(row);
+ }
+ }
+}
\ No newline at end of file
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportRow.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportRow.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,139 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A row in a accidental catch export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.2
+ */
+public class AccidentalCatchExportRow implements Serializable {
+
+ public static final String PROPERTY_BATCH = "batch";
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_BATCH_ID = "batchId";
+
+ public static final String PROPERTY_CARACTERISTIC = "caracteristic";
+
+ public static final String PROPERTY_CARACTERISTIC_VALUE = "caracteristicValue";
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ protected AccidentalBatch batch;
+
+ protected Caracteristic caracteristic;
+
+ protected Serializable caracteristicValue;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public void setBatch(AccidentalBatch batch) {
+ this.batch = batch;
+ }
+
+ public void setCaracteristic(Caracteristic caracteristic) {
+ this.caracteristic = caracteristic;
+ }
+
+ public void setCaracteristicValue(Serializable caracteristicValue) {
+ this.caracteristicValue = caracteristicValue;
+ }
+
+ public Integer getBatchId() {
+ return batch.getIdAsInt();
+ }
+
+ public Caracteristic getCaracteristic() {
+ return caracteristic;
+ }
+
+ public Serializable getCaracteristicValue() {
+ return caracteristicValue;
+ }
+
+ public String getComment() {
+ return batch.getComment();
+ }
+
+ public Species getSpecies() {
+ return batch.getSpecies();
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getStationNumber() {
+ return fishingOperation.getStationNumber();
+ }
+
+ public Integer getFishingOperationNumber() {
+ return fishingOperation.getFishingOperationNumber();
+ }
+
+ public Gear getGear() {
+ return fishingOperation.getGear();
+ }
+
+ public Vessel getVessel() {
+ return fishingOperation.getVessel();
+ }
+
+ public String getMultirigAggregation() {
+ return fishingOperation.getMultirigAggregation();
+ }
+
+}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportModel.java (from rev 1366, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,457 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
+import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.apache.commons.collections.CollectionUtils;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Model of a catch export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class CatchExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<CatchExportRow> {
+
+ public static final String WEIGHT_OR_VOL_TYPE = "Poids";
+
+ protected SampleCategoryModel sampleCategoryModel;
+
+ public CatchExportModel(char separator,
+ SampleCategoryModel sampleCategoryModel,
+ DecoratorService decoratorService) {
+ super(separator);
+ this.sampleCategoryModel = sampleCategoryModel;
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME);
+ newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("Numero_Trait", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
+ newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER);
+ newColumnForExport("Taxon", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.INTEGER);
+ newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME);
+ newColumnForExport("Commentaire", SpeciesBatch.PROPERTY_COMMENT);
+
+ for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) {
+ addSampleCategory(entry.getCanonicalLabel(), entry.getOrder());
+ }
+
+ // mensuration
+
+ newNullableColumnForExport("Code_Longueur", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_ID);
+ newNullableColumnForExportByDecorator("Libelle_Longueur", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class));
+ newNullableColumnForExport("Taille", CatchExportRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("NumOrdre_Taille_H2", CatchExportRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER);
+ newNullableColumnForExport("Poids_Classe_Taille", CatchExportRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Unite_Taille", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_UNIT);
+ newNullableColumnForExport("Precision_Mesure", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_PRECISION, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Nbr", CatchExportRow.BATCH_NUMBER, TuttiCsvUtil.INTEGER);
+
+ newColumnForExport("Poids_Reference", CatchExportRow.REFERENCE_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT);
+ newColumnForExport("Coef_Elev_Espece_Capture", CatchExportRow.RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT);
+ }
+
+ public void prepareRows(PersistenceService persistenceService,
+ List<CatchExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation,
+ BatchContainer<SpeciesBatch> rootSpeciesBatch,
+ BatchContainer<BenthosBatch> rootBenthosBatch,
+ Float speciesCatchRaisingFactor,
+ Float benthosCatchRaisingFactor) {
+
+ Caracteristic weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic();
+ String batchWeightUnit = weightMeasuredCaracteristic.getUnit();
+
+ for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) {
+ CatchExportRow row = new CatchExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setSpecies(speciesBatch.getSpecies());
+ row.setBatchWeightUnit(batchWeightUnit);
+
+ if (persistenceService.isVracBatch(speciesBatch)) {
+
+ // compute species total weight in catch
+
+ Float sortedBatchWeight = TuttiEntities.getValueOrComputedValue(
+ speciesBatch.getSampleCategoryWeight(),
+ speciesBatch.getSampleCategoryComputedWeight());
+
+ float totalBatchWeight = sortedBatchWeight == null ? 0 : speciesCatchRaisingFactor *
+ sortedBatchWeight;
+
+ prepareSortedRows(persistenceService,
+ row,
+ rows,
+ speciesBatch,
+ totalBatchWeight);
+ } else {
+ prepareUnsortedRows(row, rows, speciesBatch);
+ }
+
+ }
+ for (BenthosBatch benthosBatch : rootBenthosBatch.getChildren()) {
+ CatchExportRow row = new CatchExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setSpecies(benthosBatch.getSpecies());
+ row.setBatchWeightUnit(batchWeightUnit);
+
+ if (persistenceService.isVracBatch(benthosBatch)) {
+
+ // compute species total weight in catch
+
+ Float sortedBatchWeight = TuttiEntities.getValueOrComputedValue(
+ benthosBatch.getSampleCategoryWeight(),
+ benthosBatch.getSampleCategoryComputedWeight());
+
+ float totalBatchWeight = sortedBatchWeight == null ? 0 : benthosCatchRaisingFactor *
+ sortedBatchWeight;
+
+ prepareSortedRows(persistenceService,
+ row,
+ rows,
+ benthosBatch,
+ totalBatchWeight);
+ } else {
+ prepareUnsortedRows(row, rows, benthosBatch);
+ }
+ }
+ }
+
+ protected void prepareSortedRows(PersistenceService persistenceService,
+ CatchExportRow currentRow,
+ List<CatchExportRow> rows,
+ SpeciesBatch speciesBatch,
+ final float totalBatchWeight) {
+
+ currentRow.addComment(speciesBatch.getComment());
+
+ prepareBatch(currentRow,
+ speciesBatch.getSampleCategoryId(),
+ speciesBatch.getSampleCategoryValue(),
+ speciesBatch.getSampleCategoryWeight(),
+ speciesBatch.getSampleCategoryComputedWeight(),
+ speciesBatch.getWeight(),
+ speciesBatch.getNumber(),
+ speciesBatch.getRankOrder());
+
+ if (speciesBatch.isChildBatchsEmpty()) {
+
+ // on a leaf, get frequencies
+
+ List<SpeciesBatchFrequency> speciesBatchFrequency =
+ persistenceService.getAllSpeciesBatchFrequency(speciesBatch.getId());
+
+ if (CollectionUtils.isEmpty(speciesBatchFrequency)) {
+
+ // no frequency
+
+ CatchExportRow row = currentRow.copy();
+
+ // Get reference weight
+
+ Float referenceWeight = TuttiEntities.getValueOrComputedValue(
+ speciesBatch.getWeight(),
+ speciesBatch.getComputedWeight());
+
+ if (referenceWeight == null) {
+
+ referenceWeight = TuttiEntities.getValueOrComputedValue(
+ speciesBatch.getSampleCategoryWeight(),
+ speciesBatch.getSampleCategoryComputedWeight());
+ }
+ setRaisingFactor(row, totalBatchWeight, referenceWeight);
+ rows.add(row);
+ } else {
+
+ // there is some frequencies
+
+ boolean withNoWeightOnFrequencies =
+ speciesBatchFrequency.get(0).getWeight() == null;
+
+ Float referenceWeight = null;
+
+ if (withNoWeightOnFrequencies) {
+
+ // no weight on frequencies use upper reference weight
+
+ referenceWeight = TuttiEntities.getValueOrComputedValue(
+ speciesBatch.getWeight(),
+ speciesBatch.getComputedWeight());
+
+ if (referenceWeight == null) {
+ referenceWeight = TuttiEntities.getValueOrComputedValue(
+ speciesBatch.getSampleCategoryWeight(),
+ speciesBatch.getSampleCategoryComputedWeight());
+ }
+ }
+
+ for (SpeciesBatchFrequency batchFrequency : speciesBatchFrequency) {
+ CatchExportRow row = currentRow.copy();
+ row.setSpeciesFrequency(batchFrequency);
+ rows.add(row);
+
+ if (!withNoWeightOnFrequencies) {
+
+ // use concrete frequency weight
+ referenceWeight = batchFrequency.getWeight();
+ }
+
+ setRaisingFactor(row, totalBatchWeight, referenceWeight);
+ }
+ }
+
+ } else {
+
+ for (SpeciesBatch childBatch : speciesBatch.getChildBatchs()) {
+ prepareSortedRows(persistenceService,
+ currentRow,
+ rows,
+ childBatch,
+ totalBatchWeight
+ );
+ }
+ }
+
+ // remove last comment (otherwise next brother will have this one too...)
+ currentRow.popLastComment();
+ }
+
+ protected void prepareUnsortedRows(CatchExportRow currentRow,
+ List<CatchExportRow> rows,
+ SpeciesBatch speciesBatch) {
+
+
+ prepareBatch(currentRow,
+ speciesBatch.getSampleCategoryId(),
+ speciesBatch.getSampleCategoryValue(),
+ speciesBatch.getSampleCategoryWeight(),
+ speciesBatch.getSampleCategoryComputedWeight(),
+ speciesBatch.getWeight(),
+ speciesBatch.getNumber(),
+ speciesBatch.getRankOrder());
+
+ CatchExportRow row = currentRow.copy();
+ row.addComment(speciesBatch.getComment());
+ float referenceWeight = TuttiEntities.getValueOrComputedValue(
+ speciesBatch.getSampleCategoryWeight(),
+ speciesBatch.getSampleCategoryComputedWeight());
+
+ setRaisingFactor(row, referenceWeight, referenceWeight);
+ rows.add(row);
+ }
+
+ protected void prepareSortedRows(PersistenceService persistenceService,
+ CatchExportRow currentRow,
+ List<CatchExportRow> rows,
+ BenthosBatch benthosBatch,
+ final float totalBatchWeight) {
+
+ currentRow.addComment(benthosBatch.getComment());
+
+ prepareBatch(currentRow,
+ benthosBatch.getSampleCategoryId(),
+ benthosBatch.getSampleCategoryValue(),
+ benthosBatch.getSampleCategoryWeight(),
+ benthosBatch.getSampleCategoryComputedWeight(),
+ benthosBatch.getWeight(),
+ benthosBatch.getNumber(),
+ benthosBatch.getRankOrder());
+
+ if (benthosBatch.isChildBatchsEmpty()) {
+
+ // on a leaf, get frequencies
+
+ List<BenthosBatchFrequency> benthosBatchFrequency =
+ persistenceService.getAllBenthosBatchFrequency(benthosBatch.getId());
+
+ if (CollectionUtils.isEmpty(benthosBatchFrequency)) {
+
+ // no frequency
+
+ CatchExportRow row = currentRow.copy();
+
+ // Get reference weight
+
+ Float referenceWeight = TuttiEntities.getValueOrComputedValue(
+ benthosBatch.getWeight(),
+ benthosBatch.getComputedWeight());
+
+ if (referenceWeight == null) {
+ referenceWeight = TuttiEntities.getValueOrComputedValue(
+ benthosBatch.getSampleCategoryWeight(),
+ benthosBatch.getSampleCategoryComputedWeight());
+ }
+
+ setRaisingFactor(row, totalBatchWeight, referenceWeight);
+ rows.add(row);
+ } else {
+
+ // there is some frequencies
+
+ Float referenceWeight = null;
+
+ boolean withNoWeightOnFrequencies =
+ benthosBatchFrequency.get(0).getWeight() == null;
+
+ if (withNoWeightOnFrequencies) {
+
+ // no weight on frequencies use upper reference weight
+
+ referenceWeight = TuttiEntities.getValueOrComputedValue(
+ benthosBatch.getWeight(),
+ benthosBatch.getComputedWeight());
+
+ if (referenceWeight == null) {
+ referenceWeight = TuttiEntities.getValueOrComputedValue(
+ benthosBatch.getSampleCategoryWeight(),
+ benthosBatch.getSampleCategoryComputedWeight());
+ }
+ }
+
+ for (BenthosBatchFrequency batchFrequency : benthosBatchFrequency) {
+ CatchExportRow row = currentRow.copy();
+ row.setBenthosFrequency(batchFrequency);
+ rows.add(row);
+
+ if (!withNoWeightOnFrequencies) {
+
+ // use concrete frequency weight
+ referenceWeight = batchFrequency.getWeight();
+ }
+
+ setRaisingFactor(row, totalBatchWeight, referenceWeight);
+ }
+ }
+
+ } else {
+
+ for (BenthosBatch childBatch : benthosBatch.getChildBatchs()) {
+ prepareSortedRows(persistenceService,
+ currentRow,
+ rows,
+ childBatch,
+ totalBatchWeight);
+ }
+ }
+
+ // remove last comment (otherwise next brother will have this one too...)
+ currentRow.popLastComment();
+ }
+
+ protected void prepareUnsortedRows(CatchExportRow currentRow,
+ List<CatchExportRow> rows,
+ BenthosBatch benthosBatch) {
+
+ prepareBatch(currentRow,
+ benthosBatch.getSampleCategoryId(),
+ benthosBatch.getSampleCategoryValue(),
+ benthosBatch.getSampleCategoryWeight(),
+ benthosBatch.getSampleCategoryComputedWeight(),
+ benthosBatch.getWeight(),
+ benthosBatch.getNumber(),
+ benthosBatch.getRankOrder());
+
+ CatchExportRow row = currentRow.copy();
+ row.addComment(benthosBatch.getComment());
+
+ Float referenceWeight = TuttiEntities.getValueOrComputedValue(
+ benthosBatch.getSampleCategoryWeight(),
+ benthosBatch.getSampleCategoryComputedWeight());
+
+ setRaisingFactor(row, referenceWeight, referenceWeight);
+
+ rows.add(row);
+ }
+
+ protected void setRaisingFactor(CatchExportRow row,
+ float totalBatchWeight,
+ Float referenceWeight) {
+ row.setReferenceWeight(referenceWeight);
+ row.setRaisingFactor(referenceWeight == null ? 1.0f : (totalBatchWeight / referenceWeight));
+ }
+
+ protected void prepareBatch(CatchExportRow currentRow,
+ Integer sampleCategoryId,
+ Serializable sampleCategoryValue,
+ Float sampleCategoryWeight,
+ Float sampleCategoryComputedWeight,
+ Float batchWeight,
+ Integer batchNumber,
+ Integer batchRankOrder) {
+ currentRow.setBatchNumber(batchNumber);
+
+ ExportSampleCategory<Serializable> sampleCategory =
+ new ExportSampleCategory<Serializable>();
+ SampleCategoryModelEntry categoryById =
+ sampleCategoryModel.getCategoryById(sampleCategoryId);
+ sampleCategory.setCategoryDef(categoryById);
+ sampleCategory.setCategoryValue(sampleCategoryValue);
+ sampleCategory.setCategoryWeight(sampleCategoryWeight);
+ sampleCategory.setSampleWeight(batchWeight);
+
+ sampleCategory.setComputedWeight(sampleCategoryComputedWeight);
+ sampleCategory.setWeightOrVolType(WEIGHT_OR_VOL_TYPE);
+ sampleCategory.setRankOrder(batchRankOrder);
+
+ currentRow.addSampleCategory(sampleCategory);
+ }
+
+ protected void addSampleCategory(String headerPrefix, int categoryOrder) {
+
+ String categoryName = CatchExportRow.SAMPLE_CATEGORY;
+ newIndexNullableColumnForExport(headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ newIndexNullableColumnForExport("Num_Ordre_" + headerPrefix + "_H2", categoryName, categoryOrder, ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER);
+ newIndexNullableColumnForExport("Tot_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT, TuttiCsvUtil.FLOAT);
+ newIndexNullableColumnForExport("Ech_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT, TuttiCsvUtil.FLOAT);
+ newIndexNullableColumnForExport("Type_Volume_Poids_" + headerPrefix, categoryName, categoryOrder, ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE);
+ newNullableColumnForExport("Unite_Volume_Poids_" + headerPrefix, CatchExportRow.BATCH_WEIGHT_UNIT);
+ }
+
+}
\ No newline at end of file
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportRow.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,254 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Joiner;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * A row in a catch export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class CatchExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(CatchExportRow.class);
+
+ public static final String FREQUENCY_LENGTH_STEP = "frequency.lengthStep";
+
+ public static final String FREQUENCY_NUMBER = "frequency.number";
+
+ public static final String FREQUENCY_WEIGHT = "frequency.weight";
+
+ public static final String FREQUENCY_LENGTH_STEP_CARACTERISTIC = "frequency.lengthStepCaracteristic";
+
+ public static final String FREQUENCY_RANK_ORDER = "frequency.rankOrder";
+
+ public static final String SAMPLE_CATEGORY = "sampleCategory";
+
+ public static final String REFERENCE_WEIGHT = "referenceWeight";
+
+ public static final String RAISING_FACTOR = "raisingFactor";
+
+ public static final String BATCH_NUMBER = "batchNumber";
+
+ public static final String BATCH_WEIGHT_UNIT = "batchWeightUnit";
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ protected final List<ExportSampleCategory> sampleCategory = Lists.newLinkedList();
+
+ protected SpeciesBatchFrequency speciesFrequency;
+
+ protected BenthosBatchFrequency benthosFrequency;
+
+ protected Species species;
+
+ protected Float referenceWeight;
+
+ protected float raisingFactor;
+
+ protected Integer batchNumber;
+
+ protected String batchWeightUnit;
+
+ protected final List<String> comment = Lists.newArrayList();
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public void setReferenceWeight(Float referenceWeight) {
+ this.referenceWeight = referenceWeight;
+ }
+
+ public void setRaisingFactor(float raisingFactor) {
+ this.raisingFactor = raisingFactor;
+ }
+
+ public void setBatchNumber(Integer batchNumber) {
+ this.batchNumber = batchNumber;
+ }
+
+ public void addSampleCategory(ExportSampleCategory sampleCategory) {
+ int order = sampleCategory.getCategoryDef().getOrder();
+ while (this.sampleCategory.size() <= order) {
+ this.sampleCategory.add(null);
+ }
+ this.sampleCategory.set(order, sampleCategory);
+ }
+
+ public void setSpeciesFrequency(SpeciesBatchFrequency speciesFrequency) {
+ Preconditions.checkNotNull(speciesFrequency);
+ this.speciesFrequency = speciesFrequency;
+ this.batchNumber = speciesFrequency.getNumber();
+ }
+
+ public void setBenthosFrequency(BenthosBatchFrequency benthosFrequency) {
+ Preconditions.checkNotNull(benthosFrequency);
+ this.benthosFrequency = benthosFrequency;
+ this.batchNumber = benthosFrequency.getNumber();
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public Vessel getVessel() {
+ return cruise.getVessel();
+ }
+
+ public String getStationNumber() {
+ return fishingOperation.getStationNumber();
+ }
+
+ public Integer getFishingOperationNumber() {
+ return fishingOperation.getFishingOperationNumber();
+ }
+
+ public Gear getGear() {
+ return fishingOperation.getGear();
+ }
+
+ public String getMultirigAggregation() {
+ return fishingOperation.getMultirigAggregation();
+ }
+
+ public Object getFrequency() {
+ return speciesFrequency == null ? benthosFrequency : speciesFrequency;
+ }
+
+ public List<ExportSampleCategory> getSampleCategory() {
+ return sampleCategory;
+ }
+
+ public Species getSpecies() {
+ return species;
+ }
+
+ public void setSpecies(Species species) {
+ this.species = species;
+ }
+
+ public Float getReferenceWeight() {
+ return referenceWeight;
+ }
+
+ public float getRaisingFactor() {
+ return raisingFactor;
+ }
+
+ public Integer getBatchNumber() {
+ return batchNumber;
+ }
+
+ public String getBatchWeightUnit() {
+ return batchWeightUnit;
+ }
+
+ public void setBatchWeightUnit(String batchWeightUnit) {
+ this.batchWeightUnit = batchWeightUnit;
+ }
+
+ public CatchExportRow copy() {
+ CatchExportRow result = new CatchExportRow();
+ result.setCruise(cruise);
+ result.setFishingOperation(fishingOperation);
+// result.setSpeciesCategory(speciesCategory);
+ result.sampleCategory.addAll(sampleCategory);
+ if (benthosFrequency != null) {
+ result.setBenthosFrequency(benthosFrequency);
+ }
+ if (speciesFrequency != null) {
+ result.setSpeciesFrequency(speciesFrequency);
+ }
+ result.setSpecies(species);
+ result.setRaisingFactor(raisingFactor);
+ result.setReferenceWeight(referenceWeight);
+ result.setBatchNumber(batchNumber);
+ result.setBatchWeightUnit(batchWeightUnit);
+ result.comment.addAll(comment);
+
+ return result;
+ }
+
+ public void addComment(String comment) {
+ String safeComment = StringUtils.isEmpty(comment) ? "" : comment;
+ if (log.isDebugEnabled()) {
+ log.debug("Add comment: " + safeComment);
+ }
+ this.comment.add(safeComment);
+ }
+
+ public void popLastComment() {
+ if (!comment.isEmpty()) {
+ this.comment.remove(this.comment.size() - 1);
+ }
+ }
+
+ public String getComment() {
+ String result;
+ if (comment.isEmpty()) {
+ result = "";
+ } else {
+ result = Joiner.on('|').join(comment);
+ }
+ return result;
+ }
+}
\ No newline at end of file
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ExportSampleCategory.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportSampleCategory.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ExportSampleCategory.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ExportSampleCategory.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,95 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+
+import java.io.Serializable;
+
+/**
+ * Export sample category (extends {@link SampleCategory} to some computed
+ * stuff.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.0
+ */
+public class ExportSampleCategory<S extends Serializable> extends SampleCategory<S> {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_CATEGORY_CARACTERISTIC = "categoryCaracteristic";
+
+ public static final String PROPERTY_CATEGORY_VALUE = "categoryValue";
+
+ public static final String PROPERTY_CATEGORY_WEIGHT = "categoryWeight";
+
+ public static final String PROPERTY_NUMBER = "number";
+
+ public static final String PROPERTY_COMPUTED_WEIGHT = "computedWeight";
+
+ public static final String PROPERTY_COMPUTED_NUMBER = "computedNumber";
+
+ public static final String PROPERTY_WEIGHT_OR_VOL_TYPE = "weightOrVolType";
+
+ public static final String PROPERTY_RANK_ORDER = "rankOrder";
+
+ public static final String PROPERTY_SAMPLE_WEIGHT = "sampleWeight";
+
+ private Integer rankOrder;
+
+ private String weightOrVolType;
+
+ private Float sampleWeight;
+
+ public String getWeightOrVolType() {
+ return weightOrVolType;
+ }
+
+ public void setWeightOrVolType(String weightOrVolType) {
+ this.weightOrVolType = weightOrVolType;
+ }
+
+ public Integer getRankOrder() {
+ return rankOrder;
+ }
+
+ public void setRankOrder(Integer rankOrder) {
+ this.rankOrder = rankOrder;
+ }
+
+ public Float getSampleWeight() {
+ return sampleWeight;
+ }
+
+ public void setSampleWeight(Float sampleWeight) {
+ this.sampleWeight = sampleWeight;
+ }
+
+ public Caracteristic getCategoryCaracteristic() {
+ return categoryDef.getCaracteristic();
+ }
+
+}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportModel.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/GearCaracteristicExportModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,76 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * To export gear caracteristics.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.3.2
+ */
+public class GearCaracteristicExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<GearCaracteristicExportRow> {
+
+ public GearCaracteristicExportModel(char separator, DecoratorService decoratorService) {
+ super(separator);
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Engin", GearCaracteristicExportRow.PROPERTY_GEAR, Gear.PROPERTY_NAME);
+ newColumnForExport("Code_PMFM", GearCaracteristicExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
+ newColumnForExportByDecorator("Libelle_PMFM", GearCaracteristicExportRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class));
+ newColumnForExport("Valeur", GearCaracteristicExportRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ }
+
+ public void prepareRows(List<GearCaracteristicExportRow> rows, Cruise cruise,
+ Gear gear) {
+ CaracteristicMap caracteristics = gear.getCaracteristics();
+ if (caracteristics != null) {
+ for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) {
+ Caracteristic caracteristic = entry.getKey();
+ Serializable value = entry.getValue();
+ GearCaracteristicExportRow row = new GearCaracteristicExportRow();
+ row.setCruise(cruise);
+ row.setGear(gear);
+ row.setCaracteristic(caracteristic);
+ row.setValue(value);
+ rows.add(row);
+ }
+ }
+ }
+
+}
\ No newline at end of file
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportRow.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/GearCaracteristicExportRow.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,98 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A row in a gear caracteristics export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.3.2
+ */
+public class GearCaracteristicExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_GEAR = "gear";
+
+ public static final String PROPERTY_CARACTERISTIC = "caracteristic";
+
+ public static final String PROPERTY_VALUE = "value";
+
+ protected Cruise cruise;
+
+ protected Gear gear;
+
+ protected Caracteristic caracteristic;
+
+ private Serializable value;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setGear(Gear gear) {
+ this.gear = gear;
+ }
+
+ public void setCaracteristic(Caracteristic caracteristic) {
+ this.caracteristic = caracteristic;
+ }
+
+ public void setValue(Serializable value) {
+ this.value = value;
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public Gear getGear() {
+ return gear;
+ }
+
+ public Caracteristic getCaracteristic() {
+ return caracteristic;
+ }
+
+ public Serializable getValue() {
+ return value;
+ }
+}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportModel.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,170 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Model of a individual observation export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.0.1
+ */
+public class IndividualObservationExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<IndividualObservationExportRow> {
+
+// protected final Caracteristic caracteristicSample;
+//
+// protected final Caracteristic caracteristicOtolithe;
+
+ protected final Caracteristic caracteristicWeight;
+
+ protected final Caracteristic caracteristicPmfmId;
+
+ public IndividualObservationExportModel(
+ char separator,
+// Caracteristic caracteristicSample,
+// Caracteristic caracteristicOtolithe,
+ Caracteristic caracteristicWeight,
+ Caracteristic caracteristicPmfmId) {
+ super(separator);
+
+// this.caracteristicSample = caracteristicSample;
+// this.caracteristicOtolithe = caracteristicOtolithe;
+ this.caracteristicWeight = caracteristicWeight;
+ this.caracteristicPmfmId = caracteristicPmfmId;
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME);
+ newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("Numero_Trait", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
+ newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER);
+
+ newColumnForExport("BatchId", IndividualObservationExportRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
+ newColumnForExport("ReferenceTaxonId", IndividualObservationBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
+ newColumnForExport("ReferenceTaxonName", IndividualObservationBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME);
+ newColumnForExport("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT);
+ newColumnForExport("CaracteristicId", IndividualObservationExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
+ newColumnForExport("CaracteristicValue", IndividualObservationExportRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ }
+
+ public void prepareRows(PersistenceService persistenceService,
+ List<IndividualObservationExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation) {
+
+ List<IndividualObservationBatch> observations =
+ persistenceService.getAllIndividualObservationBatch(operation.getId());
+
+ if (CollectionUtils.isNotEmpty(observations)) {
+ for (IndividualObservationBatch child : observations) {
+
+// addCaracteristicRow(rows,
+// cruise,
+// operation,
+// child,
+// caracteristicSample,
+// child.getSamplingCode());
+//
+// addCaracteristicRow(rows,
+// cruise,
+// operation,
+// child,
+// caracteristicOtolithe,
+// child.getCalcifiedPieceSamplingCode());
+
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ caracteristicWeight,
+ child.getWeight());
+
+ if (child.getLengthStepCaracteristic() != null) {
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ caracteristicPmfmId,
+ child.getLengthStepCaracteristic().getIdAsInt());
+
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ child.getLengthStepCaracteristic(),
+ child.getSize());
+ }
+
+ CaracteristicMap caracteristics = child.getCaracteristics();
+ if (MapUtils.isNotEmpty(caracteristics)) {
+ for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) {
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ entry.getKey(),
+ entry.getValue());
+ }
+ }
+ }
+ }
+ }
+
+ private void addCaracteristicRow(List<IndividualObservationExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation,
+ IndividualObservationBatch child,
+ Caracteristic caracteristic,
+ Serializable caracteristicValue) {
+ if (caracteristicValue != null) {
+
+ IndividualObservationExportRow row = new IndividualObservationExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setBatch(child);
+ row.setCaracteristic(caracteristic);
+ row.setCaracteristicValue(caracteristicValue);
+ rows.add(row);
+ }
+ }
+}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportRow.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,138 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A row in a individual observation export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.0.1
+ */
+public class IndividualObservationExportRow implements Serializable {
+
+ public static final String PROPERTY_BATCH = "batch";
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_BATCH_ID = "batchId";
+
+ public static final String PROPERTY_CARACTERISTIC = "caracteristic";
+
+ public static final String PROPERTY_CARACTERISTIC_VALUE = "caracteristicValue";
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ protected IndividualObservationBatch batch;
+
+ protected Caracteristic caracteristic;
+
+ protected Serializable caracteristicValue;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public void setBatch(IndividualObservationBatch batch) {
+ this.batch = batch;
+ }
+
+ public void setCaracteristic(Caracteristic caracteristic) {
+ this.caracteristic = caracteristic;
+ }
+
+ public void setCaracteristicValue(Serializable caracteristicValue) {
+ this.caracteristicValue = caracteristicValue;
+ }
+
+ public Integer getBatchId() {
+ return batch.getIdAsInt();
+ }
+
+ public Caracteristic getCaracteristic() {
+ return caracteristic;
+ }
+
+ public Serializable getCaracteristicValue() {
+ return caracteristicValue;
+ }
+
+ public String getComment() {
+ return batch.getComment();
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getStationNumber() {
+ return fishingOperation.getStationNumber();
+ }
+
+ public Integer getFishingOperationNumber() {
+ return fishingOperation.getFishingOperationNumber();
+ }
+
+ public Gear getGear() {
+ return fishingOperation.getGear();
+ }
+
+ public Vessel getVessel() {
+ return fishingOperation.getVessel();
+ }
+
+ public String getMultirigAggregation() {
+ return fishingOperation.getMultirigAggregation();
+ }
+
+ public Species getSpecies() {
+ return batch.getSpecies();
+ }
+}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportModel.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,85 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.apache.commons.collections.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * Model of a marine litter export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.0.1
+ */
+public class MarineLitterExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<MarineLitterExportRow> {
+
+ public MarineLitterExportModel(char separator) {
+ super(separator);
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME);
+ newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("Numero_Trait", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
+ newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER);
+
+ newColumnForExport("MarineLitterCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ newColumnForExport("MarineLitterSizeCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ newColumnForExport("Number", MarineLitterBatch.PROPERTY_NUMBER, TuttiCsvUtil.INTEGER);
+ newColumnForExport("Weight", MarineLitterBatch.PROPERTY_WEIGHT, TuttiCsvUtil.FLOAT);
+ newColumnForExport("Commentaire", MarineLitterBatch.PROPERTY_COMMENT);
+ }
+
+ public void prepareRows(PersistenceService persistenceService,
+ List<MarineLitterExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation) {
+
+ BatchContainer<MarineLitterBatch> rootMarineLitterBatch =
+ persistenceService.getRootMarineLitterBatch(operation.getId());
+
+ List<MarineLitterBatch> children = rootMarineLitterBatch.getChildren();
+ if (CollectionUtils.isNotEmpty(children)) {
+ for (MarineLitterBatch child : children) {
+ MarineLitterExportRow row = new MarineLitterExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setBatch(child);
+ rows.add(row);
+ }
+ }
+ }
+}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportRow.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportRow.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,121 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A row in a marine litter export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.0.1
+ */
+public class MarineLitterExportRow implements Serializable {
+
+ public static final String PROPERTY_TOTAL_WEIGHT = "totalWeight";
+
+ public static final String PROPERTY_BATCH = "batch";
+
+ private static final long serialVersionUID = 1L;
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ protected MarineLitterBatch batch;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public void setBatch(MarineLitterBatch batch) {
+ this.batch = batch;
+ }
+
+ public CaracteristicQualitativeValue getMarineLitterCategory() {
+ return batch.getMarineLitterCategory();
+ }
+
+ public CaracteristicQualitativeValue getMarineLitterSizeCategory() {
+ return batch.getMarineLitterSizeCategory();
+ }
+
+ public Integer getNumber() {
+ return batch.getNumber();
+ }
+
+ public Float getWeight() {
+ return batch.getWeight();
+ }
+
+ public String getComment() {
+ return batch.getComment();
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getStationNumber() {
+ return fishingOperation.getStationNumber();
+ }
+
+ public Integer getFishingOperationNumber() {
+ return fishingOperation.getFishingOperationNumber();
+ }
+
+ public Gear getGear() {
+ return fishingOperation.getGear();
+ }
+
+ public Vessel getVessel() {
+ return fishingOperation.getVessel();
+ }
+
+ public String getMultirigAggregation() {
+ return fishingOperation.getMultirigAggregation();
+ }
+}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportModel.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,166 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.nuiton.decorator.Decorator;
+
+import java.util.List;
+
+/**
+ * Model of a operation export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class OperationExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<OperationExportRow> {
+
+
+ protected final Caracteristic verticalOpeningCaracteristic;
+
+ protected final Caracteristic horizontalOpeningWingCaracteristic;
+
+ protected final Caracteristic horizontalOpeningDoorCaracteristic;
+
+ public OperationExportModel(char separator,
+ Caracteristic verticalOpeningCaracteristic,
+ Caracteristic horizontalOpeningWingCaracteristic,
+ Caracteristic horizontalOpeningDoorCaracteristic,
+ Decorator<Vessel> vesselDecorator) {
+ super(separator);
+ this.verticalOpeningCaracteristic = verticalOpeningCaracteristic;
+ this.horizontalOpeningWingCaracteristic = horizontalOpeningWingCaracteristic;
+ this.horizontalOpeningDoorCaracteristic = horizontalOpeningDoorCaracteristic;
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("Numero_Trait", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
+ newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
+
+ newNullableColumnForExport("Engin", FishingOperation.PROPERTY_GEAR + "." + Gear.PROPERTY_NAME);
+ newColumnForExport("Navire", FishingOperation.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER);
+ newColumnForExport("DateDeb_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
+ newColumnForExport("LatDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, TuttiCsvUtil.FLOAT);
+ newColumnForExport("LongDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, TuttiCsvUtil.FLOAT);
+ newColumnForExport("DateFin_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
+ newColumnForExport("LatFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, TuttiCsvUtil.FLOAT);
+ newColumnForExport("LongFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, TuttiCsvUtil.FLOAT);
+ newColumnForExport("Duree", OperationExportRow.PROPERTY_DURATION);
+ newColumnForExport("Strate", FishingOperation.PROPERTY_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
+ newColumnForExport("Sous-Strate", FishingOperation.PROPERTY_SUB_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
+ newColumnForExport("Localite", FishingOperation.PROPERTY_LOCATION, TuttiLocation.PROPERTY_NAME, "NA");
+ newColumnForExport("Validite_OP", FishingOperation.PROPERTY_FISHING_OPERATION_VALID, TuttiCsvUtil.BOOLEAN);
+ newColumnForExport("Rectiligne", FishingOperation.PROPERTY_FISHING_OPERATION_RECTILIGNE, TuttiCsvUtil.BOOLEAN);
+ newColumnForExport("Distance", FishingOperation.PROPERTY_TRAWL_DISTANCE, TuttiCsvUtil.FLOAT);
+ newColumnForExport("Ouv_Verticale", OperationExportRow.PROPERTY_VERTICAL_OPENING_GEAR_USE_FEATURE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ newColumnForExport("Ouv_Horizontale_Ailes", OperationExportRow.PROPERTY_HORIZONTAL_OPENING_WING_GEAR_USE_FEATURE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ newColumnForExport("Ouv_Horizontale_Panneaux", OperationExportRow.PROPERTY_HORIZONTAL_OPENING_DOOR_GEAR_USE_FEATURE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ newColumnForExport("Saisisseur", FishingOperation.PROPERTY_RECORDER_PERSON, TuttiCsvUtil.LIST_PERSON_FORMATTER);
+ newColumnForExport("NavireAssocie", FishingOperation.PROPERTY_SECONDARY_VESSEL, TuttiCsvUtil.newListVesselFormatter(vesselDecorator));
+ newColumnForExport("Commentaire", FishingOperation.PROPERTY_COMMENT);
+
+ newNullableColumnForExport("Poids_Total", OperationExportRow.PROPERTY_CATCH_TOTAL_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Calcule", OperationExportRow.PROPERTY_CATCH_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Vrac", OperationExportRow.PROPERTY_CATCH_TOTAL_SORTED_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Vrac_Calcule", OperationExportRow.PROPERTY_CATCH_TOTAL_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_HorsVrac", OperationExportRow.PROPERTY_CATCH_TOTAL_UNSORTED_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_HorsVrac_Calcule", OperationExportRow.PROPERTY_CATCH_TOTAL_UNSORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Non_Trie", OperationExportRow.PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Non_Trie_Calcule", OperationExportRow.PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Tremis", OperationExportRow.PROPERTY_CATCH_TOTAL_SORTED_TREMIS_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Tremis_Calcule", OperationExportRow.PROPERTY_CATCH_TOTAL_SORTED_TREMIS_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Carroussel", OperationExportRow.PROPERTY_CATCH_TOTAL_SORTED_CAROUSSEL_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Carroussel_Calcule", OperationExportRow.PROPERTY_CATCH_TOTAL_SORTED_CAROUSSEL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Espece", OperationExportRow.PROPERTY_SPECIES_TOTAL_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Espece_Calcule", OperationExportRow.PROPERTY_SPECIES_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Espece_Vrac", OperationExportRow.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Espece_Vrac_Calcule", OperationExportRow.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Espece_Vrac_Trie", OperationExportRow.PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Espece_Vrac_Trie_Calcule", OperationExportRow.PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Espece_HorsVrac", OperationExportRow.PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Espece_HorsVrac_Calcule", OperationExportRow.PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Espece_Inerte_Trie", OperationExportRow.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Espece_Inerte_Trie_Calcule", OperationExportRow.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Espece_Vivant_non_detaille_trie", OperationExportRow.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Espece_Vivant_non_detaille_trie_Calcule", OperationExportRow.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Benthos", OperationExportRow.PROPERTY_BENTHOS_TOTAL_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Benthos_Calcule", OperationExportRow.PROPERTY_BENTHOS_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Benthos_Vrac", OperationExportRow.PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Benthos_Vrac_Calcule", OperationExportRow.PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Benthos_Vrac_Trie", OperationExportRow.PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Benthos_Vrac_Trie_Calcule", OperationExportRow.PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Benthos_HorsVrac", OperationExportRow.PROPERTY_BENTHOS_TOTAL_UNSORTED_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Benthos_HorsVrac_Calcule", OperationExportRow.PROPERTY_BENTHOS_TOTAL_UNSORTED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Benthos_Inerte_Trie", OperationExportRow.PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Benthos_Inerte_Trie_Calcule", OperationExportRow.PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Benthos_Vivant_non_detaille_trie", OperationExportRow.PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Benthos_Vivant_non_detaille_trie_Calcule", OperationExportRow.PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+
+ newNullableColumnForExport("Poids_Total_Macro_Dechet", OperationExportRow.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT, TuttiCsvUtil.FLOAT);
+ newNullableColumnForExport("Poids_Total_Macro_Dechet_Calcule", OperationExportRow.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT_COMPUTED, TuttiCsvUtil.BOOLEAN);
+ }
+
+ public void prepareRows(List<OperationExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation,
+ CatchBatch catchBatch) {
+
+ OperationExportRow row = new OperationExportRow(
+ verticalOpeningCaracteristic,
+ horizontalOpeningWingCaracteristic,
+ horizontalOpeningDoorCaracteristic);
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setCatchBatch(catchBatch);
+ rows.add(row);
+
+ }
+}
\ No newline at end of file
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportRow.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,499 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.Person;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * A row in a operation export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class OperationExportRow implements Serializable {
+
+ public static final String PROPERTY_DURATION = "duration";
+
+ public static final String PROPERTY_VERTICAL_OPENING_GEAR_USE_FEATURE = "verticalOpeningGearUseFeature";
+
+ public static final String PROPERTY_HORIZONTAL_OPENING_WING_GEAR_USE_FEATURE = "horizontalOpeningWingGearUseFeature";
+
+ public static final String PROPERTY_HORIZONTAL_OPENING_DOOR_GEAR_USE_FEATURE = "horizontalOpeningDoorGearUseFeature";
+
+ public static final String PROPERTY_CATCH_TOTAL_WEIGHT = "catchTotalWeight";
+
+ public static final String PROPERTY_CATCH_TOTAL_WEIGHT_COMPUTED = "catchTotalWeightComputed";
+
+ public static final String PROPERTY_CATCH_TOTAL_SORTED_TREMIS_WEIGHT = "catchTotalSortedTremisWeight";
+
+ public static final String PROPERTY_CATCH_TOTAL_SORTED_TREMIS_WEIGHT_COMPUTED = "catchTotalSortedTremisWeightComputed";
+
+ public static final String PROPERTY_CATCH_TOTAL_SORTED_CAROUSSEL_WEIGHT = "catchTotalSortedCarousselWeight";
+
+ public static final String PROPERTY_CATCH_TOTAL_SORTED_CAROUSSEL_WEIGHT_COMPUTED = "catchTotalSortedCarousselWeightComputed";
+
+ public static final String PROPERTY_CATCH_TOTAL_SORTED_WEIGHT = "catchTotalSortedWeight";
+
+ public static final String PROPERTY_CATCH_TOTAL_SORTED_WEIGHT_COMPUTED = "catchTotalSortedWeightComputed";
+
+ public static final String PROPERTY_CATCH_TOTAL_UNSORTED_WEIGHT = "catchTotalUnsortedWeight";
+
+ public static final String PROPERTY_CATCH_TOTAL_UNSORTED_WEIGHT_COMPUTED = "catchTotalUnsortedWeightComputed";
+
+ public static final String PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT = "catchTotalRejectedWeight";
+
+ public static final String PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT_COMPUTED = "catchTotalRejectedWeightComputed";
+
+
+ public static final String PROPERTY_SPECIES_TOTAL_WEIGHT = "speciesTotalWeight";
+
+ public static final String PROPERTY_SPECIES_TOTAL_WEIGHT_COMPUTED = "speciesTotalWeightComputed";
+
+ public static final String PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT = "speciesTotalSortedWeight";
+
+ public static final String PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT_COMPUTED = "speciesTotalSortedWeightComputed";
+
+ public static final String PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT = "speciesTotalUnsortedWeight";
+
+ public static final String PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT_COMPUTED = "speciesTotalUnsortedWeightComputed";
+
+ public static final String PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT = "speciesTotalSampleSortedWeight";
+
+ public static final String PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT_COMPUTED = "speciesTotalSampleSortedWeightComputed";
+
+ public static final String PROPERTY_SPECIES_TOTAL_INERT_WEIGHT = "speciesTotalInertWeight";
+
+ public static final String PROPERTY_SPECIES_TOTAL_INERT_WEIGHT_COMPUTED = "speciesTotalInertWeightComputed";
+
+ public static final String PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT = "speciesTotalLivingNotItemizedWeight";
+
+ public static final String PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT_COMPUTED = "speciesTotalLivingNotItemizedWeightComputed";
+
+ public static final String PROPERTY_BENTHOS_TOTAL_WEIGHT = "benthosTotalWeight";
+
+ public static final String PROPERTY_BENTHOS_TOTAL_WEIGHT_COMPUTED = "benthosTotalWeightComputed";
+
+ public static final String PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT = "benthosTotalSortedWeight";
+
+ public static final String PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT_COMPUTED = "benthosTotalSortedWeightComputed";
+
+ public static final String PROPERTY_BENTHOS_TOTAL_UNSORTED_WEIGHT = "benthosTotalUnsortedWeight";
+
+ public static final String PROPERTY_BENTHOS_TOTAL_UNSORTED_WEIGHT_COMPUTED = "benthosTotalUnsortedWeightComputed";
+
+ public static final String PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_WEIGHT = "benthosTotalSampleSortedWeight";
+
+ public static final String PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_WEIGHT_COMPUTED = "benthosTotalSampleSortedWeightComputed";
+
+ public static final String PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT = "benthosTotalInertWeight";
+
+ public static final String PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT_COMPUTED = "benthosTotalInertWeightComputed";
+
+ public static final String PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT = "benthosTotalLivingNotItemizedWeight";
+
+ public static final String PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT_COMPUTED = "benthosTotalLivingNotItemizedWeightComputed";
+
+ public static final String PROPERTY_MARINE_LITTER_TOTAL_WEIGHT = "marineLitterTotalWeight";
+
+ public static final String PROPERTY_MARINE_LITTER_TOTAL_WEIGHT_COMPUTED = "marineLitterTotalWeightComputed";
+
+ private static final long serialVersionUID = 1L;
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ protected CatchBatch catchBatch;
+
+ private Caracteristic verticalOpeningCaracteristic;
+
+ private Caracteristic horizontalOpeningWingCaracteristic;
+
+ private Caracteristic horizontalOpeningDoorCaracteristic;
+
+ public OperationExportRow(Caracteristic verticalOpeningCaracteristic,
+ Caracteristic horizontalOpeningWingCaracteristic,
+ Caracteristic horizontalOpeningDoorCaracteristic) {
+
+ this.verticalOpeningCaracteristic = verticalOpeningCaracteristic;
+ this.horizontalOpeningWingCaracteristic = horizontalOpeningWingCaracteristic;
+ this.horizontalOpeningDoorCaracteristic = horizontalOpeningDoorCaracteristic;
+ }
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public void setCatchBatch(CatchBatch catchBatch) {
+ this.catchBatch = catchBatch;
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getStationNumber() {
+ return fishingOperation.getStationNumber();
+ }
+
+ public Integer getFishingOperationNumber() {
+ return fishingOperation.getFishingOperationNumber();
+ }
+
+ public String getMultirigAggregation() {
+ return fishingOperation.getMultirigAggregation();
+ }
+
+ public Gear getGear() {
+ return fishingOperation.getGear();
+ }
+
+ public Vessel getVessel() {
+ return fishingOperation.getVessel();
+ }
+
+ public Date getGearShootingStartDate() {
+ return fishingOperation.getGearShootingStartDate();
+ }
+
+ public Float getGearShootingStartLatitude() {
+ return fishingOperation.getGearShootingStartLatitude();
+ }
+
+ public Float getGearShootingStartLongitude() {
+ return fishingOperation.getGearShootingStartLongitude();
+ }
+
+ public Date getGearShootingEndDate() {
+ return fishingOperation.getGearShootingEndDate();
+ }
+
+ public Float getGearShootingEndLatitude() {
+ return fishingOperation.getGearShootingEndLatitude();
+ }
+
+ public Float getGearShootingEndLongitude() {
+ return fishingOperation.getGearShootingEndLongitude();
+ }
+
+ public TuttiLocation getStrata() {
+ return fishingOperation.getStrata();
+ }
+
+ public TuttiLocation getSubStrata() {
+ return fishingOperation.getSubStrata();
+ }
+
+ public TuttiLocation getLocation() {
+ return fishingOperation.getLocation();
+ }
+
+ public Boolean getFishingOperationValid() {
+ return fishingOperation.getFishingOperationValid();
+ }
+
+ public boolean isFishingOperationRectiligne() {
+ return fishingOperation.isFishingOperationRectiligne();
+ }
+
+ public Float getTrawlDistance() {
+ return fishingOperation.getTrawlDistance();
+ }
+
+ public String getComment() {
+ return fishingOperation.getComment();
+ }
+
+ public List<Person> getRecorderPerson() {
+ return fishingOperation.getRecorderPerson();
+ }
+
+ public List<Vessel> getSecondaryVessel() {
+ return fishingOperation.getSecondaryVessel();
+ }
+
+ public String getDuration() {
+ return TuttiEntities.getDuration(
+ getGearShootingStartDate(),
+ getGearShootingEndDate(),
+ "mm");
+ }
+
+ public Serializable getVerticalOpeningGearUseFeature() {
+ Serializable result = getGearUseFeature(verticalOpeningCaracteristic);
+ return result;
+ }
+
+ public Serializable getHorizontalOpeningWingGearUseFeature() {
+ Serializable result = getGearUseFeature(horizontalOpeningWingCaracteristic);
+ return result;
+ }
+
+ public Serializable getHorizontalOpeningDoorGearUseFeature() {
+ Serializable result = getGearUseFeature(horizontalOpeningDoorCaracteristic);
+ return result;
+ }
+
+ public Float getCatchTotalWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ catchBatch.getCatchTotalWeight(),
+ catchBatch.getCatchTotalComputedWeight());
+ }
+
+ public Boolean getCatchTotalWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ catchBatch.getCatchTotalWeight(),
+ catchBatch.getCatchTotalComputedWeight());
+ }
+
+ public Float getCatchTotalSortedTremisWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ catchBatch.getCatchTotalSortedTremisWeight(), null);
+ }
+
+ public Boolean getCatchTotalSortedTremisWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ catchBatch.getCatchTotalSortedTremisWeight(), null);
+ }
+
+ public Float getCatchTotalSortedCarousselWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ catchBatch.getCatchTotalSortedCarousselWeight(), null);
+ }
+
+ public Boolean getCatchTotalSortedCarousselWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ catchBatch.getCatchTotalSortedCarousselWeight(), null);
+ }
+
+ public Float getCatchTotalSortedWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ null, catchBatch.getCatchTotalSortedComputedWeight());
+ }
+
+ public Boolean getCatchTotalSortedWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ null, catchBatch.getCatchTotalSortedComputedWeight());
+ }
+
+ public Float getCatchTotalUnsortedWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ null, catchBatch.getCatchTotalUnsortedComputedWeight());
+ }
+
+ public Boolean getCatchTotalUnsortedWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ null, catchBatch.getCatchTotalUnsortedComputedWeight());
+ }
+
+ public Float getCatchTotalRejectedWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ catchBatch.getCatchTotalRejectedWeight(),
+ catchBatch.getCatchTotalRejectedComputedWeight());
+ }
+
+ public Boolean getCatchTotalRejectedWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ catchBatch.getCatchTotalRejectedWeight(),
+ catchBatch.getCatchTotalRejectedComputedWeight());
+ }
+
+ public Float getSpeciesTotalWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ null, catchBatch.getSpeciesTotalComputedWeight());
+ }
+
+ public Boolean getSpeciesTotalWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ null, catchBatch.getSpeciesTotalComputedWeight());
+ }
+
+ public Float getSpeciesTotalSortedWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ catchBatch.getSpeciesTotalSortedWeight(),
+ catchBatch.getSpeciesTotalSortedComputedWeight());
+ }
+
+ public Boolean getSpeciesTotalSortedWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ catchBatch.getSpeciesTotalSortedWeight(),
+ catchBatch.getSpeciesTotalSortedComputedWeight());
+ }
+
+ public Float getSpeciesTotalUnsortedWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ null, catchBatch.getSpeciesTotalUnsortedComputedWeight());
+ }
+
+ public Boolean getSpeciesTotalUnsortedWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ null, catchBatch.getSpeciesTotalUnsortedComputedWeight());
+ }
+
+ public Float getSpeciesTotalSampleSortedWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ catchBatch.getSpeciesTotalSampleSortedComputedWeight(),
+ catchBatch.getSpeciesTotalSampleSortedComputedWeight());
+ }
+
+ public Boolean getSpeciesTotalSampleSortedWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ null, catchBatch.getSpeciesTotalSampleSortedComputedWeight());
+ }
+
+ public Float getSpeciesTotalInertWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ catchBatch.getSpeciesTotalInertWeight(),
+ catchBatch.getSpeciesTotalInertComputedWeight());
+ }
+
+ public Boolean getSpeciesTotalInertWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ catchBatch.getSpeciesTotalInertWeight(),
+ catchBatch.getSpeciesTotalInertComputedWeight());
+ }
+
+ public Float getSpeciesTotalLivingNotItemizedWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ catchBatch.getSpeciesTotalLivingNotItemizedWeight(),
+ catchBatch.getSpeciesTotalLivingNotItemizedComputedWeight());
+ }
+
+ public Boolean getSpeciesTotalLivingNotItemizedWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ catchBatch.getSpeciesTotalLivingNotItemizedWeight(),
+ catchBatch.getSpeciesTotalLivingNotItemizedComputedWeight());
+ }
+
+ public Float getBenthosTotalWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ null, catchBatch.getBenthosTotalComputedWeight());
+ }
+
+ public Boolean getBenthosTotalWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ null, catchBatch.getBenthosTotalComputedWeight());
+ }
+
+ public Float getBenthosTotalSortedWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ catchBatch.getBenthosTotalSortedWeight(),
+ catchBatch.getBenthosTotalSortedComputedWeight());
+ }
+
+ public Boolean getBenthosTotalSortedWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ catchBatch.getBenthosTotalSortedWeight(),
+ catchBatch.getBenthosTotalSortedComputedWeight());
+ }
+
+ public Float getBenthosTotalUnsortedWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ null, catchBatch.getBenthosTotalUnsortedComputedWeight());
+ }
+
+ public Boolean getBenthosTotalUnsortedWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ null, catchBatch.getBenthosTotalUnsortedComputedWeight());
+ }
+
+ public Float getBenthosTotalSampleSortedWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ null, catchBatch.getBenthosTotalSampleSortedComputedWeight());
+ }
+
+ public Boolean getBenthosTotalSampleSortedWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ null, catchBatch.getBenthosTotalSampleSortedComputedWeight());
+ }
+
+ public Float getBenthosTotalInertWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ catchBatch.getBenthosTotalInertWeight(),
+ catchBatch.getBenthosTotalInertComputedWeight());
+ }
+
+ public Boolean getBenthosTotalInertWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ catchBatch.getBenthosTotalInertWeight(),
+ catchBatch.getBenthosTotalInertComputedWeight());
+ }
+
+ public Float getBenthosTotalLivingNotItemizedWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ catchBatch.getBenthosTotalLivingNotItemizedWeight(),
+ catchBatch.getBenthosTotalLivingNotItemizedComputedWeight());
+ }
+
+ public Boolean getBenthosTotalLivingNotItemizedWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ catchBatch.getBenthosTotalLivingNotItemizedWeight(),
+ catchBatch.getBenthosTotalLivingNotItemizedComputedWeight());
+ }
+
+ public Float getMarineLitterTotalWeight() {
+ return TuttiEntities.getValueOrComputedValue(
+ catchBatch.getMarineLitterTotalWeight(),
+ catchBatch.getMarineLitterTotalComputedWeight());
+ }
+
+ public Boolean getMarineLitterTotalWeightComputed() {
+ return TuttiEntities.getValueOrComputedValueComputed(
+ catchBatch.getMarineLitterTotalWeight(),
+ catchBatch.getMarineLitterTotalComputedWeight());
+ }
+
+ protected Serializable getGearUseFeature(Caracteristic caracteristic) {
+ CaracteristicMap gearUseFeatures = fishingOperation.getGearUseFeatures();
+ Serializable serializable = gearUseFeatures == null ? null : gearUseFeatures.get(caracteristic);
+ return serializable;
+ }
+}
\ No newline at end of file
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportModel.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,94 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Model of a parameter export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class ParameterExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<ParameterExportRow> {
+
+ public ParameterExportModel(char separator, DecoratorService decoratorService) {
+ super(separator);
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Code_station", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("Numero_Trait", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
+ newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
+
+ newColumnForExport("Code_PMFM", ParameterExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
+ newColumnForExportByDecorator("Libelle_PMFm", ParameterExportRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class));
+ newColumnForExport("Valeur", ParameterExportRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ }
+
+ public void prepareRows(List<ParameterExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation) {
+
+ CaracteristicMap gearUseFeatures = operation.getGearUseFeatures();
+ if (gearUseFeatures != null) {
+ for (Map.Entry<Caracteristic, Serializable> entry : gearUseFeatures.entrySet()) {
+ Caracteristic caracteristic = entry.getKey();
+
+ ParameterExportRow row = new ParameterExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setCaracteristic(caracteristic);
+ row.setValue(entry.getValue());
+ rows.add(row);
+ }
+ }
+ CaracteristicMap vesselUseFeatures = operation.getVesselUseFeatures();
+ if (vesselUseFeatures != null) {
+ for (Map.Entry<Caracteristic, Serializable> entry : vesselUseFeatures.entrySet()) {
+ Caracteristic caracteristic = entry.getKey();
+
+ ParameterExportRow row = new ParameterExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setCaracteristic(caracteristic);
+ row.setValue(entry.getValue());
+ rows.add(row);
+ }
+ }
+ }
+
+}
\ No newline at end of file
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportRow.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,105 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A row in a parameter export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class ParameterExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_CARACTERISTIC = "caracteristic";
+
+ public static final String PROPERTY_VALUE = "value";
+
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ protected Caracteristic caracteristic;
+
+ private Serializable value;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public void setCaracteristic(Caracteristic caracteristic) {
+ this.caracteristic = caracteristic;
+ }
+
+ public void setValue(Serializable value) {
+ this.value = value;
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getStationNumber() {
+ return fishingOperation.getStationNumber();
+ }
+
+ public Integer getFishingOperationNumber() {
+ return fishingOperation.getFishingOperationNumber();
+ }
+
+ public String getMultirigAggregation() {
+ return fishingOperation.getMultirigAggregation();
+ }
+
+ public Caracteristic getCaracteristic() {
+ return caracteristic;
+ }
+
+ public Serializable getValue() {
+ return value;
+ }
+}
\ No newline at end of file
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportModel.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SpeciesExportModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,77 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+
+import java.util.List;
+
+/**
+ * To export a species used in data to export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.3
+ */
+public class SpeciesExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<SpeciesExportRow> {
+
+ public SpeciesExportModel(char separator) {
+ super(separator);
+ newColumnForExport("Id", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
+ newColumnForExport("Code_Rubin", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_REF_TAX_CODE);
+ newColumnForExport("Nom Scientifique", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_NAME);
+ newColumnForExport("Code campagne", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_SURVEY_CODE);
+ }
+
+ public void prepareBatchRows(TuttiExportService.ExportContext exportContext,
+ BatchContainer<SpeciesBatch> rootSpeciesBatch,
+ BatchContainer<BenthosBatch> rootBenthosBatch) {
+
+ for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) {
+
+ exportContext.addSpecies(speciesBatch.getSpecies());
+ }
+ for (BenthosBatch benthosBatch : rootBenthosBatch.getChildren()) {
+ exportContext.addSpecies(benthosBatch.getSpecies());
+ }
+ }
+
+ public void prepareIndividualRows(TuttiExportService.ExportContext exportContext,
+ List<IndividualObservationExportRow> rows) {
+ for (IndividualObservationExportRow row : rows) {
+ exportContext.addSpecies(row.getSpecies());
+ }
+ }
+
+ public void prepareAccidentalRows(TuttiExportService.ExportContext exportContext,
+ List<AccidentalCatchExportRow> rows) {
+ for (AccidentalCatchExportRow row : rows) {
+ exportContext.addSpecies(row.getSpecies());
+ }
+ }
+}
\ No newline at end of file
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportRow.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SpeciesExportRow.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,52 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+
+import java.io.Serializable;
+
+/**
+ * A species in a export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.3
+ */
+public class SpeciesExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String SPECIES = "species";
+
+ protected Species species;
+
+ public Species getSpecies() {
+ return species;
+ }
+
+ public void setSpecies(Species species) {
+ this.species = species;
+ }
+}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportModel.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,72 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+
+import java.util.List;
+
+/**
+ * Model of a survey export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class SurveyExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<SurveyExportRow> {
+
+ public SurveyExportModel(char separator) {
+ super(separator);
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_VALUE_FORMATTER);
+ newColumnForExport("Pays", SurveyExportRow.PROPERTY_COUNTRY);
+ newColumnForExport("Zone_Etude", Program.PROPERTY_ZONE, TuttiLocation.PROPERTY_NAME);
+ newColumnForExport("Campagne", Cruise.PROPERTY_NAME);
+ newColumnForExport("Id_Sismer", SurveyExportRow.PROPERTY_ID_SISMER);
+// newColumnForExport("Nombre_de_poche", Cruise.PROPERTY_MULTIRIG_NUMBER, TuttiCsvUtil.PRIMITIVE_INTEGER);
+ newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
+ newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiLocation.PROPERTY_NAME);
+ newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
+ newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION, TuttiLocation.PROPERTY_NAME);
+// newColumnForExport("Engin", Cruise.PROPERTY_GEAR, TuttiCsvUtil.LIST_GEAR_FORMATTER);
+ newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION, TuttiCsvUtil.LIST_PERSON_FORMATTER);
+ newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, TuttiCsvUtil.LIST_PERSON_FORMATTER);
+ newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT);
+ }
+
+ public void prepareRows(List<SurveyExportRow> rows,
+ Cruise cruise,
+ TuttiLocation country) {
+ SurveyExportRow row = new SurveyExportRow();
+ row.setCruise(cruise);
+ row.setCountry(country);
+ rows.add(row);
+ }
+}
\ No newline at end of file
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportRow.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,128 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.GearWithOriginalRankOrder;
+import fr.ifremer.tutti.persistence.entities.referential.Person;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * A row in a survey export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class SurveyExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_COUNTRY = "country";
+
+ public static final String PROPERTY_ID_SISMER = "idSismer";
+
+ protected Cruise cruise;
+
+ protected TuttiLocation country;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setCountry(TuttiLocation country) {
+ this.country = country;
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public TuttiLocation getZone() {
+ return cruise.getProgram().getZone();
+ }
+
+ public Vessel getVessel() {
+ return cruise.getVessel();
+ }
+
+ public String getCountry() {
+ return country.getLabel();
+ }
+
+ public String getName() {
+ return cruise.getName();
+ }
+
+ public List<GearWithOriginalRankOrder> getGear() {
+ return cruise.getGear();
+ }
+
+ public TuttiLocation getDepartureLocation() {
+ return cruise.getDepartureLocation();
+ }
+
+ public Date getEndDate() {
+ return cruise.getEndDate();
+ }
+
+ public TuttiLocation getReturnLocation() {
+ return cruise.getReturnLocation();
+ }
+
+ public String getComment() {
+ return cruise.getComment();
+ }
+
+ public List<Person> getHeadOfMission() {
+ return cruise.getHeadOfMission();
+ }
+
+ public List<Person> getHeadOfSortRoom() {
+ return cruise.getHeadOfSortRoom();
+ }
+
+ public Integer getMultirigNumber() {
+ return cruise.getMultirigNumber();
+ }
+
+ // see http://forge.codelutin.com/issues/2877
+ public String getIdSismer() {
+ return "";
+ }
+}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,953 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.io.Files;
+import fr.ifremer.tutti.TuttiBusinessException;
+import fr.ifremer.tutti.TuttiIOUtil;
+import fr.ifremer.tutti.TuttiTechnicalException;
+import fr.ifremer.tutti.persistence.ProgressionModel;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.Gears;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import fr.ifremer.tutti.service.AbstractTuttiService;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.catches.WeightComputingService;
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.decorator.Decorator;
+
+import java.io.BufferedWriter;
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * To export data in the generic format.
+ * <p/>
+ * See http://forge.codelutin.com/issues/1875.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class TuttiExportService extends AbstractTuttiService {
+
+ private static final Log log =
+ LogFactory.getLog(TuttiExportService.class);
+
+ protected PersistenceService persistenceService;
+
+ protected DecoratorService decoratorService;
+
+ protected WeightComputingService weightComputingService;
+
+ protected char csvSeparator;
+
+ protected Caracteristic verticalOpeningCaracteristic;
+
+ protected Caracteristic horizontalOpeningWingCaracteristic;
+
+ protected Caracteristic horizontalOpeningDoorCaracteristic;
+
+ protected TuttiLocation country;
+
+ protected SampleCategoryModel sampleCategoryModel;
+
+ protected Caracteristic deadOrAliveCaracteristic;
+
+ protected Caracteristic genderCaracteristic;
+
+ protected Caracteristic weightMeasuredCaracteristic;
+
+ protected Caracteristic pmfmIdCaracteristic;
+
+ @Override
+ public void setServiceContext(TuttiServiceContext context) {
+ super.setServiceContext(context);
+ persistenceService = getService(PersistenceService.class);
+ decoratorService = getService(DecoratorService.class);
+ weightComputingService = getService(WeightComputingService.class);
+
+ sampleCategoryModel = context.getSampleCategoryModel();
+
+ csvSeparator = context.getConfig().getCsvSeparator();
+ verticalOpeningCaracteristic = persistenceService.getVerticalOpeningCaracteristic();
+ horizontalOpeningWingCaracteristic = persistenceService.getHorizontalOpeningWingCaracteristic();
+ horizontalOpeningDoorCaracteristic = persistenceService.getHorizontalOpeningDoorCaracteristic();
+ weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic();
+ pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic();
+ deadOrAliveCaracteristic = persistenceService.getDeadOrAliveCaracteristic();
+ genderCaracteristic = persistenceService.getSexCaracteristic();
+
+ List<TuttiLocation> allCountry = persistenceService.getAllCountry();
+ String countryId = context.getConfig().getExportCountryId();
+ country = TuttiEntities.splitById(allCountry).get(countryId);
+ }
+
+ public void exportProgram(String programId,
+ File exportFile,
+ ProgressionModel progressionModel) {
+ Preconditions.checkNotNull(programId);
+ Preconditions.checkNotNull(exportFile);
+
+ Program program = persistenceService.getProgram(programId);
+ Preconditions.checkNotNull(program);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Will export program: " + programId);
+ }
+ List<Cruise> allCruise = persistenceService.getAllCruise(programId);
+
+ File basedir = new File(context.getConfig().newTempFile(
+ "exportProgram"), "exportProgram-" + programId);
+
+ TuttiIOUtil.forceMkdir(basedir, _("tutti.service.mkDir.error", basedir));
+
+ ExportContext exportContext = createExportContext(basedir);
+
+ try {
+ for (Cruise cruise : allCruise) {
+ // load full cruise
+ cruise = persistenceService.getCruise(cruise.getId());
+ exportCruise(cruise, exportContext, progressionModel);
+ }
+ TuttiIOUtil.close(exportContext, _("tutti.service.export.closeContext.error"));
+
+ progressionModel.setMessage(
+ _("tutti.service.exportCruise.buildZip", exportFile));
+
+ TuttiIOUtil.zip(basedir, exportFile, _("tutti.service.export.zip.error", exportFile));
+ progressionModel.increments(1);
+ } finally {
+ IOUtils.closeQuietly(exportContext);
+ }
+ }
+
+ public void exportCruise(String cruiseId,
+ File exportFile,
+ ProgressionModel progressionModel) {
+
+ Preconditions.checkNotNull(cruiseId);
+ Preconditions.checkNotNull(exportFile);
+
+ Cruise cruise = persistenceService.getCruise(cruiseId);
+ Preconditions.checkNotNull(cruise);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Will export cruise: " + cruiseId);
+ }
+
+ // check cruise fishing operations
+ TuttiBusinessException checkError = null;
+ try {
+ checkCruise(progressionModel, cruise);
+ } catch (TuttiBusinessException e) {
+ // error while checking cruise
+ if (log.isDebugEnabled()) {
+ log.debug("Got a check cruise error", e);
+ }
+ checkError = e;
+ }
+
+ File basedir = new File(context.getConfig().newTempFile(
+ "exportCruise"), "exportCruise-" + cruiseId);
+
+ TuttiIOUtil.forceMkdir(basedir, _("tutti.service.mkDir.error", basedir));
+
+ ExportContext exportContext = createExportContext(basedir);
+
+ try {
+ exportCruise(cruise, exportContext, progressionModel);
+ TuttiIOUtil.close(exportContext, _("tutti.service.export.closeContext.error"));
+
+ progressionModel.setMessage(
+ _("tutti.service.exportCruise.buildZip", exportFile));
+
+ TuttiIOUtil.zip(basedir, exportFile, _("tutti.service.export.zip.error", exportFile));
+ progressionModel.increments(1);
+ } finally {
+ IOUtils.closeQuietly(exportContext);
+ }
+
+ if (checkError != null) {
+ // rethrow error
+ throw checkError;
+ }
+ }
+
+ protected ExportContext createExportContext(File basedir) {
+
+
+ List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies();
+ Map<String, Species> speciesById = TuttiEntities.splitById(allReferentSpecies);
+
+ return new ExportContext(
+ basedir,
+ csvSeparator,
+ decoratorService,
+ verticalOpeningCaracteristic,
+ horizontalOpeningWingCaracteristic,
+ horizontalOpeningDoorCaracteristic,
+ weightMeasuredCaracteristic,
+ deadOrAliveCaracteristic,
+ genderCaracteristic,
+ pmfmIdCaracteristic,
+ sampleCategoryModel,
+ speciesById);
+ }
+
+ protected void checkCruise(ProgressionModel progressionModel, Cruise cruise) {
+ Preconditions.checkNotNull(cruise);
+
+
+ progressionModel.setMessage(
+ _("tutti.service.exportCruise.checkCruise", cruise.getName()));
+
+ // check cruise fishing operations
+ Map<String, String> errors =
+ weightComputingService.checkCruise(cruise.getId());
+
+ progressionModel.increments(1);
+
+ if (MapUtils.isNotEmpty(errors)) {
+
+ // there is some fishing operations with some errors
+
+ Decorator<Cruise> cruiseDecorator =
+ decoratorService.getDecoratorByType(Cruise.class);
+
+ Decorator<FishingOperation> fishingOperationDecorator =
+ decoratorService.getDecoratorByType(FishingOperation.class);
+ StringBuilder sb = new StringBuilder();
+ for (Map.Entry<String, String> entry : errors.entrySet()) {
+ String fishingOperationId = entry.getKey();
+ FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId);
+ String fishingOperationStr = fishingOperationDecorator.toString(fishingOperation);
+ sb.append(_("tutti.service.export.invalid.fishingOperation", fishingOperationStr, entry.getValue()));
+ }
+ String cruiseStr = cruiseDecorator.toString(cruise);
+ throw new TuttiBusinessException(
+ _("tutti.service.export.invalid.cruise", cruiseStr, sb.toString()));
+ }
+ }
+
+ protected void exportCruise(Cruise cruise,
+ ExportContext exportContext,
+ ProgressionModel progressionModel) {
+
+ List<FishingOperation> operations =
+ persistenceService.getAllFishingOperation(cruise.getId());
+
+ // load fully operations
+ List<FishingOperation> loadedOperations =
+ Lists.newArrayListWithCapacity(operations.size());
+ for (FishingOperation operation : operations) {
+ FishingOperation loadedOeration =
+ persistenceService.getFishingOperation(operation.getId());
+ loadedOperations.add(loadedOeration);
+ }
+
+ String cruiseName = cruise.getName();
+ progressionModel.setMessage(
+ _("tutti.service.exportCruise.exportSurvey", cruiseName));
+ exportSurvey(exportContext, cruise);
+ progressionModel.increments(1);
+
+ progressionModel.setMessage(
+ _("tutti.service.exportCruise.exportGearCaracteristics", cruiseName));
+ exportGearCaracteristics(exportContext, cruise);
+ progressionModel.increments(1);
+
+ progressionModel.setMessage(
+ _("tutti.service.exportCruise.exportOperations", cruiseName));
+ exportOperations(exportContext, cruise, loadedOperations);
+ progressionModel.increments(1);
+
+ progressionModel.setMessage(
+ _("tutti.service.exportCruise.exportParameters", cruiseName));
+ exportParameters(exportContext, cruise, loadedOperations);
+ progressionModel.increments(1);
+
+ progressionModel.setMessage(
+ _("tutti.service.exportCruise.exportMarineLitters", cruiseName));
+ exportMarineLitters(exportContext, cruise, loadedOperations);
+ progressionModel.increments(1);
+
+ progressionModel.setMessage(
+ _("tutti.service.exportCruise.exportIndividualObservations", cruiseName));
+ exportIndividualObservations(exportContext, cruise, loadedOperations);
+ progressionModel.increments(1);
+
+ progressionModel.setMessage(
+ _("tutti.service.exportCruise.exportAccidentalCatches", cruiseName));
+ exportAccidentalCatch(exportContext, cruise, loadedOperations);
+ progressionModel.increments(1);
+
+ progressionModel.setMessage(
+ _("tutti.service.exportCruise.exportCatches", cruiseName));
+ exportCatches(exportContext, cruise, loadedOperations);
+ progressionModel.increments(1);
+
+ progressionModel.setMessage(
+ _("tutti.service.exportCruise.exportSpecies", cruiseName));
+
+ exportSpecies(exportContext, exportContext.getSpeciesToExport());
+ progressionModel.increments(1);
+ }
+
+ protected void exportSurvey(ExportContext exportContext,
+ Cruise cruise) {
+ try {
+
+ List<SurveyExportRow> rows = Lists.newArrayList();
+ exportContext.surveyModel.prepareRows(rows, cruise, country);
+ exportContext.surveyExport.write(rows, exportContext.surveyWriter);
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.export.survey.error"), e);
+ }
+ }
+
+ protected void exportGearCaracteristics(ExportContext exportContext,
+ Cruise cruise) {
+ try {
+
+ List<GearCaracteristicExportRow> rows = Lists.newArrayList();
+
+ for (Gear gear : cruise.getGear()) {
+
+ CaracteristicMap caracteristics =
+ persistenceService.getGearCaracteristics(
+ cruise.getId(),
+ gear.getId(),
+ gear.getRankOrder());
+
+ Gear gearWithCaracteristics = Gears.newGear(gear);
+ gearWithCaracteristics.setCaracteristics(caracteristics);
+ exportContext.gearCaracteristicsModel.prepareRows(rows, cruise, gearWithCaracteristics);
+ }
+
+ exportContext.gearCaracteristicsExport.write(rows, exportContext.gearCaracteristicsWriter);
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.export.survey.error"), e);
+ }
+ }
+
+ protected void exportOperations(ExportContext exportContext,
+ Cruise cruise,
+ List<FishingOperation> operations) {
+
+ try {
+
+ List<OperationExportRow> rows = Lists.newArrayList();
+
+ for (FishingOperation operation : operations) {
+
+ OperationContext operationContext = getOperationContext(operation);
+ CatchBatch catchBatch = operationContext.getCatchBatch();
+ exportContext.operationModel.prepareRows(rows,
+ cruise,
+ operation,
+ catchBatch);
+ }
+
+ exportContext.operationExport.write(rows, exportContext.operationWriter);
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.export.operations.error"), e);
+ }
+ }
+
+ protected void exportParameters(ExportContext exportContext,
+ Cruise cruise,
+ List<FishingOperation> operations) {
+
+ try {
+
+ for (FishingOperation operation : operations) {
+ List<ParameterExportRow> rows = Lists.newArrayList();
+ exportContext.parameterModel.prepareRows(rows, cruise, operation);
+ exportContext.parameterExport.write(rows, exportContext.parameterWriter);
+ }
+
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.export.parameters.error"), e);
+ }
+ }
+
+ protected void exportMarineLitters(ExportContext exportContext,
+ Cruise cruise,
+ List<FishingOperation> operations) {
+
+ try {
+
+ for (FishingOperation operation : operations) {
+ OperationContext operationContext = getOperationContext(operation);
+
+ boolean withCatchBatch = operationContext.isWithCatchBatch();
+ if (!withCatchBatch) {
+ continue;
+ }
+ List<MarineLitterExportRow> rows = Lists.newArrayList();
+ exportContext.marineLitterModel.prepareRows(persistenceService, rows, cruise, operation);
+ exportContext.marineLitterExport.write(rows, exportContext.marineLitterWriter);
+ }
+
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.export.parameters.error"), e);
+ }
+ }
+
+ protected void exportIndividualObservations(ExportContext exportContext,
+ Cruise cruise,
+ List<FishingOperation> operations) {
+
+ try {
+
+ for (FishingOperation operation : operations) {
+ OperationContext operationContext = getOperationContext(operation);
+
+ boolean withCatchBatch = operationContext.isWithCatchBatch();
+ if (!withCatchBatch) {
+ continue;
+ }
+ List<IndividualObservationExportRow> rows = Lists.newArrayList();
+ exportContext.individualObservationModel.prepareRows(persistenceService, rows, cruise, operation);
+ exportContext.speciesModel.prepareIndividualRows(
+ exportContext,
+ rows);
+ exportContext.individualObservationExport.write(rows, exportContext.individualObservationWriter);
+ }
+
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.export.parameters.error"), e);
+ }
+ }
+
+ protected void exportAccidentalCatch(ExportContext exportContext,
+ Cruise cruise,
+ List<FishingOperation> operations) {
+ try {
+
+ for (FishingOperation operation : operations) {
+ List<AccidentalCatchExportRow> rows = Lists.newArrayList();
+ exportContext.accidentalCatchModel.prepareRows(persistenceService, rows, cruise, operation);
+ exportContext.speciesModel.prepareAccidentalRows(
+ exportContext,
+ rows);
+ exportContext.accidentalCatchExport.write(rows, exportContext.accidentalCatchWriter);
+ }
+
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.export.parameters.error"), e);
+ }
+ }
+
+ protected void exportCatches(ExportContext exportContext,
+ Cruise cruise,
+ List<FishingOperation> operations) {
+ try {
+
+ for (FishingOperation operation : operations) {
+
+ OperationContext operationContext = getOperationContext(operation);
+
+ boolean withCatchBatch = operationContext.isWithCatchBatch();
+ if (!withCatchBatch) {
+ continue;
+ }
+
+ CatchBatch catchBatch = operationContext.getCatchBatch();
+
+ BatchContainer<SpeciesBatch> rootSpeciesBatch =
+ operationContext.getRootSpeciesBatch();
+
+ BatchContainer<BenthosBatch> rootBenthosBatch =
+ operationContext.getRootBenthosBatch();
+
+ exportContext.speciesModel.prepareBatchRows(
+ exportContext,
+ rootSpeciesBatch,
+ rootBenthosBatch);
+
+ Float totalWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getCatchTotalWeight(),
+ catchBatch.getCatchTotalComputedWeight());
+
+ Float totalUnsortedWeight =
+ catchBatch.getCatchTotalUnsortedComputedWeight();
+
+
+ Float totalSortedSpeciesWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getSpeciesTotalSortedWeight(),
+ catchBatch.getSpeciesTotalSortedComputedWeight());
+
+ Float totalSampleSortedSpeciesWeight =
+ catchBatch.getSpeciesTotalSampleSortedComputedWeight();
+
+ Float totalSortedBenthosWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getBenthosTotalSortedWeight(),
+ catchBatch.getBenthosTotalSortedComputedWeight());
+
+ Float totalSampleSortedBenthosWeight =
+ catchBatch.getBenthosTotalSampleSortedComputedWeight();
+
+ Float totalSortedWeight = catchBatch.getCatchTotalSortedComputedWeight();
+
+ //FIXME tchemit 2013-07-12 J'utilise en fait la formule (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée)
+ // (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée - poids du HV dans la capture totale)
+
+ Float catchRaisingFactor = totalWeight == null || totalUnsortedWeight == null || totalSortedWeight == null ? 1 : (totalWeight - totalUnsortedWeight) / totalSortedWeight;
+
+ Float speciesCatchRaisingFactor = totalSampleSortedSpeciesWeight == null || totalSortedSpeciesWeight == null || totalSampleSortedSpeciesWeight == null ? 1 : (totalSampleSortedSpeciesWeight == 0 ? 0 : (totalSortedSpeciesWeight / totalSampleSortedSpeciesWeight) * catchRaisingFactor);
+ Float benthosCatchRaisingFactor = totalSampleSortedBenthosWeight == null || totalSortedBenthosWeight == null || totalSampleSortedBenthosWeight == null ? 1 : (totalSampleSortedBenthosWeight == 0 ? 0 : (totalSortedBenthosWeight / totalSampleSortedBenthosWeight) * catchRaisingFactor);
+
+ if (log.isDebugEnabled()) {
+ String message = "\ncatchTotalWeight : " + totalWeight +
+ "\ncatchTotalUnsortedWeight : " + totalUnsortedWeight +
+ "\ntotalSampleSortedSpeciesWeight : " + totalSampleSortedSpeciesWeight +
+ "\ntotalSampleSortedBenthosWeight : " + totalSampleSortedBenthosWeight +
+ "\ntotalSortedWeight : " + totalSortedWeight +
+ "\ncatchRaisingFactor : " + catchRaisingFactor +
+ "\nspeciesCatchRaisingFactor : " + speciesCatchRaisingFactor +
+ "\nbenthosCatchRaisingFactor : " + benthosCatchRaisingFactor;
+
+ log.debug(message);
+ }
+
+ List<CatchExportRow> rows = Lists.newArrayList();
+ exportContext.catchModel.prepareRows(persistenceService,
+ rows,
+ cruise,
+ operation,
+ rootSpeciesBatch,
+ rootBenthosBatch,
+ speciesCatchRaisingFactor,
+ benthosCatchRaisingFactor);
+
+ exportContext.catchExport.write(rows, exportContext.catchWriter);
+ }
+
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ _("tutti.service.export.catches.error"), e);
+ }
+ }
+
+ protected void exportSpecies(ExportContext exportContext,
+ List<SpeciesExportRow> rows) {
+
+ try {
+
+ exportContext.speciesExport.write(rows, exportContext.speciesWriter);
+
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ _("tutti.service.export.catches.error"), e);
+ }
+ }
+
+ protected static class ExportContext implements Closeable {
+
+ File surveyFile;
+
+ File gearCaracteristicsFile;
+
+ File operationFile;
+
+ File parameterFile;
+
+ File marineLitterFile;
+
+ File individualObservationFile;
+
+ File catchFile;
+
+ File accidentalCatchFile;
+
+ File speciesFile;
+
+ BufferedWriter surveyWriter;
+
+ BufferedWriter gearCaracteristicsWriter;
+
+ BufferedWriter operationWriter;
+
+ BufferedWriter parameterWriter;
+
+ BufferedWriter marineLitterWriter;
+
+ BufferedWriter catchWriter;
+
+ BufferedWriter accidentalCatchWriter;
+
+ BufferedWriter individualObservationWriter;
+
+ BufferedWriter speciesWriter;
+
+ SurveyExportModel surveyModel;
+
+ GearCaracteristicExportModel gearCaracteristicsModel;
+
+ OperationExportModel operationModel;
+
+ MarineLitterExportModel marineLitterModel;
+
+ ParameterExportModel parameterModel;
+
+ CatchExportModel catchModel;
+
+ AccidentalCatchExportModel accidentalCatchModel;
+
+ IndividualObservationExportModel individualObservationModel;
+
+ SpeciesExportModel speciesModel;
+
+ final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap();
+
+ TuttiCsvUtil.TuttiRepeatableExport<SurveyExportRow> surveyExport;
+
+ TuttiCsvUtil.TuttiRepeatableExport<GearCaracteristicExportRow> gearCaracteristicsExport;
+
+ TuttiCsvUtil.TuttiRepeatableExport<OperationExportRow> operationExport;
+
+ TuttiCsvUtil.TuttiRepeatableExport<MarineLitterExportRow> marineLitterExport;
+
+ TuttiCsvUtil.TuttiRepeatableExport<ParameterExportRow> parameterExport;
+
+ TuttiCsvUtil.TuttiRepeatableExport<CatchExportRow> catchExport;
+
+ TuttiCsvUtil.TuttiRepeatableExport<AccidentalCatchExportRow> accidentalCatchExport;
+
+ TuttiCsvUtil.TuttiRepeatableExport<IndividualObservationExportRow> individualObservationExport;
+
+ TuttiCsvUtil.TuttiRepeatableExport<SpeciesExportRow> speciesExport;
+
+ Map<String, Species> speciesById;
+
+ String checkError;
+
+ ExportContext(File basedir,
+ char csvSeparator,
+ DecoratorService decoratorService,
+ Caracteristic verticalOpeningCaracteristic,
+ Caracteristic horizontalOpeningWingCaracteristic,
+ Caracteristic horizontalOpeningDoorCaracteristic,
+ Caracteristic weightMeasuredCaracteristic,
+ Caracteristic deadOrAliveCaracteristic,
+ Caracteristic genderCaracteristic,
+ Caracteristic pmfmIdCaracteristic,
+ SampleCategoryModel sampleCategoryModel,
+ Map<String, Species> speciesById) {
+
+ this.speciesById = speciesById;
+ try {
+
+ surveyFile = new File(basedir, "survey.csv");
+ surveyWriter = Files.newWriter(surveyFile, Charsets.UTF_8);
+
+ gearCaracteristicsFile = new File(basedir, "gearCaracteristics.csv");
+ gearCaracteristicsWriter = Files.newWriter(gearCaracteristicsFile, Charsets.UTF_8);
+
+ operationFile = new File(basedir, "operation.csv");
+ operationWriter = Files.newWriter(operationFile, Charsets.UTF_8);
+
+ marineLitterFile = new File(basedir, "marineLitter.csv");
+ marineLitterWriter = Files.newWriter(marineLitterFile, Charsets.UTF_8);
+
+ parameterFile = new File(basedir, "parameter.csv");
+ parameterWriter = Files.newWriter(parameterFile, Charsets.UTF_8);
+
+ catchFile = new File(basedir, "catch.csv");
+ catchWriter = Files.newWriter(catchFile, Charsets.UTF_8);
+
+ accidentalCatchFile = new File(basedir, "accidentalCatch.csv");
+ accidentalCatchWriter = Files.newWriter(accidentalCatchFile, Charsets.UTF_8);
+
+ individualObservationFile = new File(basedir, "individualObservation.csv");
+ individualObservationWriter = Files.newWriter(individualObservationFile, Charsets.UTF_8);
+
+ speciesFile = new File(basedir, "species.csv");
+ speciesWriter = Files.newWriter(speciesFile, Charsets.UTF_8);
+
+ } catch (FileNotFoundException e) {
+
+ // should never happen
+ throw new TuttiTechnicalException(_("tutti.service.export.context.error"), e);
+ }
+
+ surveyModel = new SurveyExportModel(csvSeparator);
+
+ gearCaracteristicsModel = new GearCaracteristicExportModel(
+ csvSeparator, decoratorService);
+
+ operationModel =
+ new OperationExportModel(
+ csvSeparator,
+ verticalOpeningCaracteristic,
+ horizontalOpeningWingCaracteristic,
+ horizontalOpeningDoorCaracteristic,
+ decoratorService.getDecoratorByType(Vessel.class));
+
+ parameterModel = new ParameterExportModel(
+ csvSeparator, decoratorService);
+
+ marineLitterModel = new MarineLitterExportModel(csvSeparator);
+ catchModel = new CatchExportModel(csvSeparator,
+ sampleCategoryModel,
+ decoratorService);
+ accidentalCatchModel = new AccidentalCatchExportModel(
+ csvSeparator,
+ deadOrAliveCaracteristic,
+ genderCaracteristic,
+ weightMeasuredCaracteristic,
+ pmfmIdCaracteristic);
+ individualObservationModel = new IndividualObservationExportModel(
+ csvSeparator,
+ weightMeasuredCaracteristic,
+ pmfmIdCaracteristic);
+
+ speciesModel = new SpeciesExportModel(
+ csvSeparator);
+
+ surveyExport = TuttiCsvUtil.newRepeatableExport(surveyModel);
+
+ gearCaracteristicsExport = TuttiCsvUtil.newRepeatableExport(
+ gearCaracteristicsModel);
+
+ operationExport = TuttiCsvUtil.newRepeatableExport(
+ operationModel);
+
+ parameterExport = TuttiCsvUtil.newRepeatableExport(
+ parameterModel);
+
+ marineLitterExport = TuttiCsvUtil.newRepeatableExport(
+ marineLitterModel);
+
+ catchExport = TuttiCsvUtil.newRepeatableExport(catchModel);
+ accidentalCatchExport = TuttiCsvUtil.newRepeatableExport(accidentalCatchModel);
+ individualObservationExport = TuttiCsvUtil.newRepeatableExport(individualObservationModel);
+ speciesExport = TuttiCsvUtil.newRepeatableExport(speciesModel);
+ }
+
+ @Override
+ public void close() throws IOException {
+ IOUtils.closeQuietly(surveyWriter);
+ IOUtils.closeQuietly(gearCaracteristicsWriter);
+ IOUtils.closeQuietly(operationWriter);
+ IOUtils.closeQuietly(parameterWriter);
+ IOUtils.closeQuietly(catchWriter);
+ IOUtils.closeQuietly(accidentalCatchWriter);
+ IOUtils.closeQuietly(marineLitterWriter);
+ IOUtils.closeQuietly(individualObservationWriter);
+ IOUtils.closeQuietly(speciesWriter);
+ }
+
+ public String getCheckError() {
+ return checkError;
+ }
+
+ public void setCheckError(String checkError) {
+ this.checkError = checkError;
+ }
+
+ public void addSpecies(Species species) {
+ String speciesId = species.getId();
+ if (!speciesToExport.containsKey(speciesId)) {
+
+ // not treated species, add a new row
+ Species fullSpecies = speciesById.get(speciesId);
+ SpeciesExportRow row = new SpeciesExportRow();
+ row.setSpecies(fullSpecies);
+ speciesToExport.put(speciesId, row);
+ }
+ }
+
+ public List<SpeciesExportRow> getSpeciesToExport() {
+ List<SpeciesExportRow> result =
+ Lists.newArrayList(speciesToExport.values());
+
+ Collections.sort(result, new Comparator<SpeciesExportRow>() {
+ @Override
+ public int compare(SpeciesExportRow o1, SpeciesExportRow o2) {
+ return o1.getSpecies().getReferenceTaxonId().compareTo(o2.getSpecies().getReferenceTaxonId());
+ }
+ });
+ return result;
+ }
+ }
+
+ protected static class OperationContext {
+
+ protected final FishingOperation operation;
+
+ private final CatchBatch catchBatch;
+
+ private BatchContainer<MarineLitterBatch> rootMarineLitterBatch;
+
+ private BatchContainer<SpeciesBatch> rootSpeciesBatch;
+
+ private BatchContainer<BenthosBatch> rootBenthosBatch;
+
+
+ protected boolean withCatchBatch;
+
+ public OperationContext(FishingOperation operation,
+ PersistenceService persistenceService,
+ WeightComputingService weightComputingService) {
+ this.operation = operation;
+
+ String operationId = operation.getId();
+
+ withCatchBatch =
+ persistenceService.isFishingOperationWithCatchBatch(
+ operationId);
+
+ if (withCatchBatch) {
+
+
+ // load batches
+
+ catchBatch =
+ persistenceService.getCatchBatchFromFishingOperation(
+ operationId);
+
+ boolean withError = false;
+
+ try {
+ rootSpeciesBatch = weightComputingService.getComputedSpeciesBatches(operationId);
+ } catch (Exception e) {
+ withError = true;
+ rootSpeciesBatch =
+ persistenceService.getRootSpeciesBatch(operationId, null);
+ }
+
+ try {
+ rootBenthosBatch =
+ weightComputingService.getComputedBenthosBatches(operationId);
+ } catch (Exception e) {
+ withError = true;
+ rootBenthosBatch =
+ persistenceService.getRootBenthosBatch(operationId, null);
+ }
+
+ try {
+ rootMarineLitterBatch =
+ weightComputingService.getComputedMarineLitterBatches(operationId, catchBatch.getMarineLitterTotalWeight());
+ } catch (Exception e) {
+ withError = true;
+ rootMarineLitterBatch =
+ persistenceService.getRootMarineLitterBatch(operationId);
+ }
+
+ // apply compute weights
+
+ if (!withError) {
+ weightComputingService.computeCatchBatchWeights(
+ catchBatch,
+ rootSpeciesBatch,
+ rootBenthosBatch,
+ rootMarineLitterBatch);
+ }
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("Skip fishing operation " + operationId +
+ " since no catchBatch associated.");
+ }
+ catchBatch = null;
+ rootSpeciesBatch = null;
+ rootBenthosBatch = null;
+ rootMarineLitterBatch = null;
+ }
+
+ }
+
+ public CatchBatch getCatchBatch() {
+ return catchBatch;
+ }
+
+ public BatchContainer<MarineLitterBatch> getRootMarineLitterBatch() {
+ return rootMarineLitterBatch;
+ }
+
+ public BatchContainer<SpeciesBatch> getRootSpeciesBatch() {
+ return rootSpeciesBatch;
+ }
+
+ public BatchContainer<BenthosBatch> getRootBenthosBatch() {
+ return rootBenthosBatch;
+ }
+
+ public boolean isWithCatchBatch() {
+ return withCatchBatch;
+ }
+ }
+
+ protected Map<String, OperationContext> operationContexts = Maps.newTreeMap();
+
+ protected OperationContext getOperationContext(FishingOperation operation) {
+ String operationId = operation.getId();
+
+ OperationContext result = operationContexts.get(operationId);
+ if (result == null) {
+
+ // create it
+ result = new OperationContext(operation,
+ persistenceService,
+ weightComputingService);
+ operationContexts.put(operationId, result);
+ }
+ return result;
+
+ }
+}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/CatchesPdfExportService.java (from rev 1366, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/CatchesPdfExportService.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/CatchesPdfExportService.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,296 @@
+package fr.ifremer.tutti.service.export.pdf;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import fr.ifremer.tutti.TuttiBusinessException;
+import fr.ifremer.tutti.TuttiTechnicalException;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.AbstractTuttiService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.catches.WeightComputingService;
+import fr.ifremer.tutti.service.export.ExportBatchEntry;
+import freemarker.cache.ClassTemplateLoader;
+import freemarker.ext.beans.BeansWrapper;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.xhtmlrenderer.pdf.ITextRenderer;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.0
+ */
+public class CatchesPdfExportService extends AbstractTuttiService {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(CatchesPdfExportService.class);
+
+ protected Configuration freemarkerConfiguration;
+
+ protected PersistenceService persistenceService;
+
+ protected WeightComputingService weightComputingService;
+
+ public CatchesPdfExportService() {
+ super();
+
+ 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(CatchesPdfExportService.class, "/ftl");
+ freemarkerConfiguration.setTemplateLoader(templateLoader);
+
+ // pour les maps dans les template (entre autre)
+ freemarkerConfiguration.setObjectWrapper(new BeansWrapper());
+ }
+
+ @Override
+ public void setServiceContext(TuttiServiceContext context) {
+ super.setServiceContext(context);
+ persistenceService = getService(PersistenceService.class);
+ weightComputingService = getService(WeightComputingService.class);
+ }
+
+ /**
+ * Generate the PDF report for the fiven cruise.
+ *
+ * @param targetFile pdf file to generate
+ * @param locale generated pdf locale
+ * @throws TuttiBusinessException
+ */
+ public void generateCruisePDFFile(File targetFile,
+ String cruiseId,
+ Locale locale) throws TuttiBusinessException {
+
+
+ List<String> allFishingOperation =
+ persistenceService.getAllFishingOperationIds(cruiseId);
+
+ List<Map<String, Object>> operations = Lists.newArrayList();
+ for (String operationId : allFishingOperation) {
+
+ prepareOperation(operationId, operations);
+
+ }
+
+ generatePdf(targetFile, locale, operations);
+ }
+
+ /**
+ * Generate the PDF report for the given fishing operation.
+ *
+ * @param targetFile pdf file to generate
+ * @param fishingOperationId id of the fishing operation to export
+ * @param locale generated pdf locale
+ * @throws TuttiBusinessException
+ * @since 2.7
+ */
+ public void generateFishingOperationPDFFile(File targetFile,
+ String fishingOperationId,
+ Locale locale) throws TuttiBusinessException {
+
+ List<Map<String, Object>> operations = Lists.newArrayList();
+
+ prepareOperation(fishingOperationId, operations);
+
+ generatePdf(targetFile, locale, operations);
+ }
+
+ protected void prepareOperation(String fishingOperationId,
+ List<Map<String, Object>> operations) {
+
+ // get operation and catch data
+ boolean withCatchBatch =
+ persistenceService.isFishingOperationWithCatchBatch(
+ fishingOperationId);
+
+ if (!withCatchBatch) {
+ if (log.isWarnEnabled()) {
+ log.warn("Skip fishing operation " + fishingOperationId +
+ " since no catchBatch associated.");
+ }
+ return;
+ }
+
+ ExportCatchContext exportContext = ExportCatchContext.newExportContext(
+ persistenceService, weightComputingService, fishingOperationId);
+
+ // create operation data model
+ Map<String, Object> op = createOperation(exportContext.getFishingOperation());
+
+ float totalWeight = exportContext.getCatchTotalWeight();
+
+ op.put("totalWeight", totalWeight);
+ op.put("totalSortedWeight", exportContext.getCatchTotalSortedWeight());
+
+ List<PdfExportBatchEntry> catchList = Lists.newArrayList();
+
+ // Species
+ if (exportContext.withSpeciesBatches()) {
+ List<ExportBatchEntry> speciesBatchEntries =
+ exportContext.getSpeciesBatchEntry(false);
+
+ for (ExportBatchEntry entry : speciesBatchEntries) {
+
+ SpeciesAbleBatch batch = entry.getBatch();
+ Species species = batch.getSpecies();
+
+ Species speciesWithVerncularCode =
+ persistenceService.getSpeciesByReferenceTaxonIdWithVernacularCode(species.getReferenceTaxonId());
+
+ PdfExportBatchEntry pdfEntry = new PdfExportBatchEntry(species.getRefTaxCode(),
+ species.getName(),
+ speciesWithVerncularCode.getVernacularCode(),
+ entry.getSortedWeight(),
+ entry.getTotalWeight(),
+ totalWeight);
+ catchList.add(pdfEntry);
+ }
+ }
+
+ // Benthos
+ if (exportContext.withBenthosBatches()) {
+
+ List<ExportBatchEntry> benthosBatchEntries =
+ exportContext.getBenthosBatchEntry(false);
+
+ float sortedWeight = 0f;
+ float benthosTotalWeight = 0f;
+
+ for (ExportBatchEntry entry : benthosBatchEntries) {
+ sortedWeight += entry.getSortedWeight();
+ benthosTotalWeight += entry.getTotalWeight();
+ }
+
+ PdfExportBatchEntry pdfEntry = new PdfExportBatchEntry(
+ _("tutti.service.operations.exportCatchesReport.specialRows.benthos.code"),
+ "",
+ _("tutti.service.operations.exportCatchesReport.specialRows.benthos.name"),
+ sortedWeight,
+ benthosTotalWeight,
+ totalWeight);
+ catchList.add(pdfEntry);
+ }
+
+ // Inert and living not itemized
+ ExportBatchEntry inertLivingNotItemizedCatch = exportContext.getInertAndLivingNotItemizedCatch();
+
+ if (inertLivingNotItemizedCatch.getSortedWeight() > 0f) {
+
+ PdfExportBatchEntry pdfExportBatchEntry =
+ new PdfExportBatchEntry(
+ _("tutti.service.operations.exportCatchesReport.specialRows.inertAndLivinngNotItemized.code"),
+ "",
+ _("tutti.service.operations.exportCatchesReport.specialRows.inertAndLivinngNotItemized.name"),
+ inertLivingNotItemizedCatch.getSortedWeight(),
+ inertLivingNotItemizedCatch.getTotalWeight(),
+ totalWeight);
+ catchList.add(pdfExportBatchEntry);
+ }
+
+ if (log.isDebugEnabled()) {
+
+ // recompute total for check
+ float computedTotalWeight = 0f;
+ float computedPercentage = 0f;
+ for (PdfExportBatchEntry entry : catchList) {
+ computedTotalWeight += entry.getTotalWeight();
+ computedPercentage += entry.getPercentage();
+ }
+ log.debug("TotalWeight: " + totalWeight);
+ log.debug("ComputedTotalWeight: " + computedTotalWeight);
+ log.debug("ComputedPercentage: " + computedPercentage);
+ }
+ op.put("catches", catchList);
+ operations.add(op);
+ }
+
+ protected void generatePdf(File targetFile, Locale locale, List<Map<String, Object>> operations) {
+
+ Map<String, Object> data = Maps.newHashMap();
+ data.put("operations", operations);
+ // generate the report
+ OutputStream os = null;
+ try {
+
+ // render freemarker template
+ Template mapTemplate = freemarkerConfiguration.getTemplate("catchesReport.ftl", locale);
+
+ Writer out = new StringWriter();
+ mapTemplate.process(data, out);
+ out.flush();
+
+ // render template output as pdf
+ os = new FileOutputStream(targetFile);
+
+ ITextRenderer renderer = new ITextRenderer();
+ renderer.setDocumentFromString(out.toString());
+ renderer.layout();
+ renderer.createPDF(os);
+
+ os.close();
+
+ } catch (Exception ex) {
+ throw new TuttiTechnicalException(_("tutti.service.operations.exportCatchesReport.error"), ex);
+ } finally {
+ IOUtils.closeQuietly(os);
+ }
+ }
+
+ protected Map<String, Object> createOperation(FishingOperation fishingOperation) {
+ Map<String, Object> op = Maps.newHashMap();
+ op.put("number", fishingOperation.getFishingOperationNumber());
+ op.put("station", fishingOperation.getStationNumber());
+ op.put("rigNumber", fishingOperation.getMultirigAggregation());
+ op.put("startDate", fishingOperation.getGearShootingStartDate());
+ op.put("endDate", fishingOperation.getGearShootingEndDate());
+
+ return op;
+ }
+
+}
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/ExportCatchContext.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/ExportCatchContext.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/ExportCatchContext.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,337 @@
+package fr.ifremer.tutti.service.export.pdf;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.catches.WeightComputingService;
+import fr.ifremer.tutti.service.export.ExportBatchEntry;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 11/21/13.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since XXX
+ */
+public class ExportCatchContext {
+
+ final FishingOperation fishingOperation;
+
+ final CatchBatch catchBatch;
+
+ final BatchContainer<SpeciesBatch> rootSpeciesBatch;
+
+ final BatchContainer<BenthosBatch> rootBenthosBatch;
+
+ final BatchContainer<MarineLitterBatch> marineLitterBatches;
+
+ final Predicate<SpeciesAbleBatch> vracPredicate;
+
+ public static ExportCatchContext newExportContext(PersistenceService persistenceService,
+ WeightComputingService weightComputingService,
+ String fishingOperationId) {
+
+ FishingOperation fishingOperation =
+ persistenceService.getFishingOperation(fishingOperationId);
+
+ CatchBatch catchBatch =
+ persistenceService.getCatchBatchFromFishingOperation(fishingOperationId);
+
+ BatchContainer<SpeciesBatch> rootSpeciesBatch =
+ weightComputingService.getComputedSpeciesBatches(fishingOperationId);
+
+ BatchContainer<BenthosBatch> rootBenthosBatch =
+ weightComputingService.getComputedBenthosBatches(fishingOperationId);
+
+ BatchContainer<MarineLitterBatch> marineLitterBatches =
+ weightComputingService.getComputedMarineLitterBatches(
+ fishingOperationId,
+ catchBatch.getMarineLitterTotalWeight());
+ weightComputingService.computeCatchBatchWeights(catchBatch,
+ rootSpeciesBatch,
+ rootBenthosBatch,
+ marineLitterBatches);
+
+ Predicate<SpeciesAbleBatch> vracPredicate = persistenceService.getVracBatchPredicate();
+
+ ExportCatchContext result = new ExportCatchContext(vracPredicate,
+ fishingOperation,
+ catchBatch,
+ rootSpeciesBatch,
+ rootBenthosBatch,
+ marineLitterBatches);
+ return result;
+
+ }
+
+ private ExportCatchContext(Predicate<SpeciesAbleBatch> vracPredicate,
+ FishingOperation fishingOperation,
+ CatchBatch catchBatch,
+ BatchContainer<SpeciesBatch> rootSpeciesBatch,
+ BatchContainer<BenthosBatch> rootBenthosBatch,
+ BatchContainer<MarineLitterBatch> marineLitterBatches) {
+ this.vracPredicate = vracPredicate;
+ this.fishingOperation = fishingOperation;
+ this.catchBatch = catchBatch;
+ this.rootSpeciesBatch = rootSpeciesBatch;
+ this.rootBenthosBatch = rootBenthosBatch;
+ this.marineLitterBatches = marineLitterBatches;
+ }
+
+ public FishingOperation getFishingOperation() {
+ return fishingOperation;
+ }
+
+ public float getCatchTotalWeight() {
+ float result = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getCatchTotalWeight(),
+ catchBatch.getCatchTotalComputedWeight());
+ return result;
+ }
+
+ public float getCatchTotalSortedWeight() {
+ return catchBatch.getSpeciesTotalSampleSortedComputedWeight() +
+ catchBatch.getBenthosTotalSampleSortedComputedWeight();
+ }
+
+ public boolean withSpeciesBatches() {
+ return rootSpeciesBatch != null && !rootSpeciesBatch.isEmptyChildren();
+ }
+
+ public boolean withBenthosBatches() {
+ return rootBenthosBatch != null && !rootBenthosBatch.isEmptyChildren();
+ }
+
+ public List<ExportBatchEntry> getSpeciesBatchEntry(boolean computeNumber) {
+ List<ExportBatchEntry> catchList = Lists.newArrayList();
+
+ if (withSpeciesBatches()) {
+
+ Map<Species, ExportBatchEntry> catches = Maps.newLinkedHashMap();
+
+ // ratio total species weight / total sorted sampled species weight
+ float speciesRatio = getSpeciesElevationRate();
+
+ List<SpeciesBatch> batches = rootSpeciesBatch.getChildren();
+ for (SpeciesBatch batch : batches) {
+
+ createExportBatchCatch(
+ batch,
+ catches,
+ speciesRatio,
+ computeNumber);
+ }
+ catchList.addAll(catches.values());
+ }
+ return catchList;
+ }
+
+ public List<ExportBatchEntry> getBenthosBatchEntry(boolean computeNumber) {
+ List<ExportBatchEntry> catchList = Lists.newArrayList();
+
+ if (withBenthosBatches()) {
+
+ Map<Species, ExportBatchEntry> catches = Maps.newLinkedHashMap();
+
+ // ratio total species weight / total sorted sampled species weight
+ float speciesRatio = getBenthosElevationRate();
+
+ List<BenthosBatch> batches = rootBenthosBatch.getChildren();
+ for (BenthosBatch batch : batches) {
+
+ createExportBatchCatch(
+ batch,
+ catches,
+ speciesRatio,
+ computeNumber);
+ }
+
+ catchList.addAll(catches.values());
+ }
+ return catchList;
+ }
+
+ public ExportBatchEntry getInertAndLivingNotItemizedCatch() {
+
+ ExportBatchEntry result = new ExportBatchEntry(null);
+
+ float speciesRatio = getSpeciesElevationRate();
+ float benthosRatio = getBenthosElevationRate();
+
+ Float speciesInterWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getSpeciesTotalInertWeight(),
+ catchBatch.getSpeciesTotalInertComputedWeight());
+
+ if (speciesInterWeight != null) {
+ result.addSortedWeight(speciesInterWeight);
+ result.addTotalWeight(speciesInterWeight * speciesRatio);
+ }
+
+ Float speciesLivingNotItemizedWeigth = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getSpeciesTotalLivingNotItemizedWeight(),
+ catchBatch.getSpeciesTotalLivingNotItemizedComputedWeight());
+
+ if (speciesLivingNotItemizedWeigth != null) {
+ result.addSortedWeight(speciesLivingNotItemizedWeigth);
+ result.addTotalWeight(speciesLivingNotItemizedWeigth * speciesRatio);
+ }
+
+ Float benthosInterWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getBenthosTotalInertWeight(),
+ catchBatch.getBenthosTotalInertComputedWeight());
+
+ if (benthosInterWeight != null) {
+ result.addSortedWeight(benthosInterWeight);
+ result.addTotalWeight(benthosInterWeight * benthosRatio);
+ }
+
+ Float benthosLivingNotItemizedWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getBenthosTotalLivingNotItemizedWeight(),
+ catchBatch.getBenthosTotalLivingNotItemizedComputedWeight());
+
+ if (benthosLivingNotItemizedWeight != null) {
+ result.addSortedWeight(benthosLivingNotItemizedWeight);
+ result.addTotalWeight(benthosLivingNotItemizedWeight * benthosRatio);
+ }
+
+ return result;
+ }
+
+ public boolean isVracBatch(SpeciesAbleBatch batch) {
+ return vracPredicate.apply(batch);
+ }
+
+ protected float getSpeciesElevationRate() {
+
+ float globalRatio = (getCatchTotalWeight() - catchBatch.getCatchTotalUnsortedComputedWeight()) / catchBatch.getCatchTotalSortedComputedWeight();
+
+ float speciesTotalSortedWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getSpeciesTotalSortedWeight(),
+ catchBatch.getSpeciesTotalSortedComputedWeight());
+
+ // ratio total species weight / total sorted sampled species weight
+ float result = globalRatio * speciesTotalSortedWeight;
+ if (catchBatch.getSpeciesTotalSampleSortedComputedWeight() > 0) {
+ result /= catchBatch.getSpeciesTotalSampleSortedComputedWeight();
+ }
+ return result;
+ }
+
+ protected float getBenthosElevationRate() {
+
+ float globalRatio = (getCatchTotalWeight() - catchBatch.getCatchTotalUnsortedComputedWeight()) / catchBatch.getCatchTotalSortedComputedWeight();
+
+ float benthosTotalSortedWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getBenthosTotalSortedWeight(),
+ catchBatch.getBenthosTotalSortedComputedWeight());
+
+ // ratio total benthos weight / total sorted sampled benthos weight
+ float result = globalRatio * benthosTotalSortedWeight;
+ if (catchBatch.getBenthosTotalSampleSortedComputedWeight() > 0) {
+ result /= catchBatch.getBenthosTotalSampleSortedComputedWeight();
+ }
+ return result;
+ }
+
+ protected void createExportBatchCatch(SpeciesAbleBatch batch,
+ Map<Species, ExportBatchEntry> catches,
+ float ratio,
+ boolean computeNumber) {
+
+ Species species = batch.getSpecies();
+
+ ExportBatchEntry ktch = catches.get(species);
+ if (ktch == null) {
+ ktch = new ExportBatchEntry(batch);
+ catches.put(species, ktch);
+ }
+
+ float sortedWeight = TuttiEntities.getValueOrComputedValue(
+ batch.getSampleCategoryWeight(),
+ batch.getSampleCategoryComputedWeight());
+
+ ktch.addSortedWeight(sortedWeight);
+
+ boolean isVracBatch = isVracBatch(batch);
+ float speciesTotalWeight = sortedWeight;
+ if (isVracBatch) {
+ speciesTotalWeight *= ratio;
+ }
+ ktch.addTotalWeight(speciesTotalWeight);
+
+ if (computeNumber) {
+ int number = Math.round(computeNumber(batch, 1.0f));
+ if (isVracBatch) {
+ number *= ratio;
+ }
+ ktch.addNumber(number);
+ }
+ }
+
+ protected float computeNumber(SpeciesAbleBatch batch, float rf) {
+ float result;
+
+ float weight = TuttiEntities.getValueOrComputedValue(
+ batch.getSampleCategoryWeight(),
+ batch.getSampleCategoryComputedWeight());
+
+ if (batch.isChildBatchsEmpty()) {
+
+ // on a leaf, get his weight
+
+ Integer number = TuttiEntities.getValueOrComputedValue(
+ batch.getNumber(),
+ batch.getComputedNumber());
+ if (number == null) {
+
+ // no count
+ number = 0;
+ }
+
+ // get the sample weight
+ Float subweight = TuttiEntities.getValueOrComputedValue(
+ batch.getWeight(),
+ batch.getComputedWeight());
+
+ if (subweight != null) {
+
+ // with sub sample, update the raising factor
+ rf *= weight / subweight;
+ }
+
+ result = number.floatValue() * rf;
+ } else {
+
+ // get total weight of all childs
+ float totalWeight = 0.f;
+ for (SpeciesAbleBatch child : batch.getChildBatchs()) {
+ totalWeight += TuttiEntities.getValueOrComputedValue(
+ child.getSampleCategoryWeight(),
+ child.getSampleCategoryComputedWeight());
+ }
+
+ result = 0f;
+
+ float rf2 = rf * weight / totalWeight;
+ // sum result of each child
+ for (SpeciesAbleBatch child : batch.getChildBatchs()) {
+
+ result += computeNumber(child, rf2);
+ }
+
+ }
+ return result;
+ }
+}
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/ExportCatchContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/PdfExportBatchEntry.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/PdfExportBatchEntry.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/PdfExportBatchEntry.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,53 @@
+package fr.ifremer.tutti.service.export.pdf;
+
+import fr.ifremer.tutti.service.export.ExportBatchEntry;
+
+/**
+ * To store a species or batch entry within his speices informations,
+ * his sorted weight, total weight and percentage amoong the total catch
+ * weight.
+ *
+ * @since 2.10
+ */
+public class PdfExportBatchEntry extends ExportBatchEntry {
+
+ protected final String code;
+
+ protected final String scientificName;
+
+ protected final String commonName;
+
+ protected float percentage;
+
+ public PdfExportBatchEntry(String code,
+ String scientificName,
+ String commonName,
+ float sortedWeight, float totalWeight,
+ float catchTotalWeight) {
+ super(null);
+
+ this.code = code;
+ this.scientificName = scientificName;
+ this.commonName = commonName;
+
+ addSortedWeight(sortedWeight);
+ addTotalWeight(totalWeight);
+ this.percentage = 100 * totalWeight / catchTotalWeight;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getScientificName() {
+ return scientificName;
+ }
+
+ public String getCommonName() {
+ return commonName;
+ }
+
+ public float getPercentage() {
+ return percentage;
+ }
+}
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/pdf/PdfExportBatchEntry.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRow.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchRow.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,87 @@
+package fr.ifremer.tutti.service.export.sumatra;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+
+import java.io.Serializable;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.0
+ */
+public class CatchRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_FISHING_OPERATION = "fishingOperation";
+
+ public static final String PROPERTY_SPECIES = "species";
+
+ public static final String PROPERTY_WEIGHT = "weight";
+
+ public static final String PROPERTY_NUMBER = "number";
+
+ protected FishingOperation fishingOperation;
+
+ protected Species species;
+
+ protected Float weight;
+
+ protected Integer number;
+
+ public FishingOperation getFishingOperation() {
+ return fishingOperation;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public Species getSpecies() {
+ return species;
+ }
+
+ public void setSpecies(Species species) {
+ this.species = species;
+ }
+
+ public Float getWeight() {
+ return weight;
+ }
+
+ public void setWeight(Float weight) {
+ this.weight = weight;
+ }
+
+ public Integer getNumber() {
+ return number;
+ }
+
+ public void setNumber(Integer number) {
+ this.number = number;
+ }
+}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchRowModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,70 @@
+package fr.ifremer.tutti.service.export.sumatra;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.nuiton.csv.Common;
+import org.nuiton.csv.ValueFormatter;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.0
+ */
+public class CatchRowModel extends TuttiCsvUtil.AbstractTuttiImportExportModel<CatchRow> {
+
+ public CatchRowModel(char separator) {
+ super(separator);
+
+ // export definition
+
+ newColumnForExport(_("tutti.service.exportSumatra.header.station"), CatchRow.PROPERTY_FISHING_OPERATION, new ValueFormatter<FishingOperation>() {
+ @Override
+ public String format(FishingOperation o) {
+ Preconditions.checkNotNull(o, _("tutti.service.exportSumatra.error.station.null"));
+ return o.getStationNumber();
+ }
+ });
+ newColumnForExport(_("tutti.service.exportSumatra.header.species"), CatchRow.PROPERTY_SPECIES, new ValueFormatter<Species>() {
+ @Override
+ public String format(Species s) {
+ Preconditions.checkNotNull(s, _("tutti.service.exportSumatra.error.species.null"));
+ return s.getName();
+ }
+ });
+ newColumnForExport(_("tutti.service.exportSumatra.header.weight"), CatchRow.PROPERTY_WEIGHT, Common.PRIMITIVE_FLOAT);
+ newColumnForExport(_("tutti.service.exportSumatra.header.number"), CatchRow.PROPERTY_NUMBER, Common.PRIMITIVE_INTEGER);
+ }
+
+ @Override
+ public CatchRow newEmptyInstance() {
+ return new CatchRow();
+ }
+
+}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportService.java (from rev 1361, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchesSumatraExportService.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportService.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportService.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,375 @@
+package fr.ifremer.tutti.service.export.sumatra;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import com.google.common.io.Files;
+import fr.ifremer.tutti.TuttiTechnicalException;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.service.AbstractTuttiService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.catches.WeightComputingService;
+import fr.ifremer.tutti.service.export.ExportBatchEntry;
+import fr.ifremer.tutti.service.export.pdf.ExportCatchContext;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.csv.Export;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.util.List;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.0
+ */
+public class CatchesSumatraExportService extends AbstractTuttiService {
+
+ private static final Log log =
+ LogFactory.getLog(CatchesSumatraExportService.class);
+
+ protected PersistenceService persistenceService;
+
+ protected WeightComputingService weightComputingService;
+
+ @Override
+ public void setServiceContext(TuttiServiceContext context) {
+ super.setServiceContext(context);
+ persistenceService = getService(PersistenceService.class);
+ weightComputingService = getService(WeightComputingService.class);
+ }
+
+ /**
+ * Export selected cruise with the csv sumatra format.
+ *
+ * @param file where to generate report
+ * @param cruiseId id of the cruise to export
+ * @since 2.0
+ */
+ public void exportCruiseForSumatra(File file,
+ String cruiseId) {
+
+ Preconditions.checkNotNull(cruiseId, "Cannot export a null cruise");
+ Preconditions.checkNotNull(file, "Cannot export to a null file");
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export cruise " + cruiseId + " to file: " + file);
+ }
+
+ Cruise cruise = persistenceService.getCruise(cruiseId);
+ Preconditions.checkNotNull(cruise, "Cruise [" + cruiseId + "] not found");
+
+ List<String> operations =
+ persistenceService.getAllFishingOperationIds(cruiseId);
+
+ prepareOperationsAndExport(file, operations);
+ }
+
+ /**
+ * Export selected fishing operation with the csv sumatra format.
+ *
+ * @param file where to generate report
+ * @param cruiseId id of the cruise to export
+ * @param fishingOperationId id of the fishing operation to export
+ * @since 2.7
+ */
+ public void exportFishingOperationForSumatra(File file,
+ String cruiseId,
+ String fishingOperationId) {
+
+ Preconditions.checkNotNull(file, "Cannot export to a null file");
+ Preconditions.checkNotNull(cruiseId, "Cannot export a null cruise");
+ Preconditions.checkNotNull(fishingOperationId, "Cannot export a null fishing operation");
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export fishing operation " +
+ fishingOperationId + " to file: " + file);
+ }
+
+ Cruise cruise = persistenceService.getCruise(cruiseId);
+ Preconditions.checkNotNull(cruise, "Cruise [" + cruiseId + "] not found");
+
+ List<String> operations = Lists.newArrayList(fishingOperationId);
+
+ prepareOperationsAndExport(file, operations);
+ }
+
+ protected void prepareOperationsAndExport(File file,
+ List<String> operations) {
+
+ List<CatchRow> rows = Lists.newArrayList();
+
+ if (operations != null) {
+ for (String operationId : operations) {
+
+ prepareFishingOperation(rows, operationId);
+ }
+ }
+
+ CatchRowModel csvModel =
+ new CatchRowModel(context.getConfig().getCsvSeparator());
+
+ BufferedWriter writer = null;
+ try {
+ writer = Files.newWriter(file, Charsets.UTF_8);
+ Export export = Export.newExport(csvModel, rows);
+ export.write(writer);
+ writer.close();
+
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.sumatra.export.error", file), e);
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+ }
+
+ protected void prepareFishingOperation(List<CatchRow> rows, String operationId) {
+
+ ExportCatchContext exportContext = ExportCatchContext.newExportContext(
+ persistenceService, weightComputingService, operationId);
+
+ FishingOperation operation = exportContext.getFishingOperation();
+
+ // Species
+ if (exportContext.withSpeciesBatches()) {
+
+ List<ExportBatchEntry> entries =
+ exportContext.getSpeciesBatchEntry(true);
+
+ for (ExportBatchEntry entry : entries) {
+
+ CatchRow row = new CatchRow();
+ row.setFishingOperation(operation);
+ row.setSpecies(entry.getBatch().getSpecies());
+ row.setWeight(entry.getTotalWeight());
+ row.setNumber(entry.getTotalNumber());
+ rows.add(row);
+ }
+ }
+
+ // Benthos
+ if (exportContext.withBenthosBatches()) {
+
+ List<ExportBatchEntry> entries =
+ exportContext.getBenthosBatchEntry(true);
+
+ for (ExportBatchEntry entry : entries) {
+
+ CatchRow row = new CatchRow();
+ row.setFishingOperation(operation);
+ row.setSpecies(entry.getBatch().getSpecies());
+ row.setWeight(entry.getTotalWeight());
+ row.setNumber(entry.getTotalNumber());
+ rows.add(row);
+ }
+ }
+
+// FishingOperation operation = persistenceService.getFishingOperation(operationId);
+//
+// CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(
+// operationId);
+//
+// BatchContainer<SpeciesBatch> speciesBatchContainer =
+// weightComputingService.getComputedSpeciesBatches(operationId);
+// BatchContainer<BenthosBatch> benthosBatchContainer =
+// weightComputingService.getComputedBenthosBatches(operationId);
+//
+// BatchContainer<MarineLitterBatch> marineLitterBatch =
+// weightComputingService.getComputedMarineLitterBatches(
+// operationId, catchBatch.getMarineLitterTotalWeight());
+//
+// weightComputingService.computeCatchBatchWeights(catchBatch,
+// speciesBatchContainer,
+// benthosBatchContainer,
+// marineLitterBatch);
+//
+// Float totalWeight = TuttiEntities.getValueOrComputedValue(
+// catchBatch.getCatchTotalWeight(),
+// catchBatch.getCatchTotalComputedWeight());
+//
+// Float totalUnsortedWeight =
+// TuttiEntities.getValueOrComputedValue(
+// catchBatch.getCatchTotalUnsortedComputedWeight(),
+// 0f);
+//
+// Float totalSortedSpeciesWeight = TuttiEntities.getValueOrComputedValue(
+// catchBatch.getSpeciesTotalSortedWeight(),
+// catchBatch.getSpeciesTotalSortedComputedWeight());
+//
+// Float totalSampleSortedSpeciesWeight =
+// catchBatch.getSpeciesTotalSampleSortedComputedWeight();
+//
+// Float totalSortedBenthosWeight = TuttiEntities.getValueOrComputedValue(
+// catchBatch.getBenthosTotalSortedWeight(),
+// catchBatch.getBenthosTotalSortedComputedWeight());
+//
+// Float totalSampleSortedBenthosWeight =
+// catchBatch.getBenthosTotalSampleSortedComputedWeight();
+//
+// Float totalSortedWeight = catchBatch.getCatchTotalSortedComputedWeight();
+//
+// //FIXME tchemit 2013-07-12 J'utilise en fait la formule (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée)
+// // (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée - poids du HV dans la capture totale)
+//
+// Float catchRaisingFactor = totalWeight == null || totalUnsortedWeight == null || totalSortedWeight == null ? 1 : (totalWeight - totalUnsortedWeight) / totalSortedWeight;
+//
+// Float speciesCatchRaisingFactor = totalSampleSortedSpeciesWeight == null || totalSortedSpeciesWeight == null || totalSampleSortedSpeciesWeight == null ? 1 : (totalSampleSortedSpeciesWeight == 0 ? 0 : (totalSortedSpeciesWeight / totalSampleSortedSpeciesWeight) * catchRaisingFactor);
+// Float benthosCatchRaisingFactor = totalSampleSortedBenthosWeight == null || totalSortedBenthosWeight == null || totalSampleSortedBenthosWeight == null ? 1 : (totalSampleSortedBenthosWeight == 0 ? 0 : (totalSortedBenthosWeight / totalSampleSortedBenthosWeight) * catchRaisingFactor);
+//
+// speciesCatchRaisingFactor *= catchRaisingFactor;
+// benthosCatchRaisingFactor *= catchRaisingFactor;
+//
+// // add species rows
+// Map<Species, CatchRow> rowMap = Maps.newLinkedHashMap();
+// if (speciesBatchContainer != null) {
+// List<SpeciesBatch> speciesBatches = speciesBatchContainer.getChildren();
+// for (SpeciesBatch batch : speciesBatches) {
+// Species sp = batch.getSpecies();
+//
+// int number = Math.round(computeNumber(batch, 1.0f));
+//
+// Float weight = TuttiEntities.getValueOrComputedValue(
+// batch.getSampleCategoryWeight(),
+// batch.getSampleCategoryComputedWeight());
+//
+// weight *= speciesCatchRaisingFactor;
+// number = (int) (speciesCatchRaisingFactor * (float) number);
+//
+// CatchRow row = rowMap.get(sp);
+// if (row == null) {
+// row = new CatchRow();
+// row.setFishingOperation(operation);
+// row.setSpecies(sp);
+// row.setWeight(weight);
+// row.setNumber(number);
+//
+// } else {
+// row.setWeight(row.getWeight() + weight);
+// row.setNumber(row.getNumber() + number);
+// }
+// rowMap.put(sp, row);
+// }
+// rows.addAll(rowMap.values());
+// }
+//
+// // add benthos rows
+// rowMap.clear();
+// if (benthosBatchContainer != null) {
+// List<BenthosBatch> benthosBatches = benthosBatchContainer.getChildren();
+// for (BenthosBatch batch : benthosBatches) {
+// Species sp = batch.getSpecies();
+//
+// int number = Math.round(computeNumber(batch, 1.0f));
+//
+// Float weight = TuttiEntities.getValueOrComputedValue(
+// batch.getSampleCategoryWeight(),
+// batch.getSampleCategoryComputedWeight());
+//
+// weight *= benthosCatchRaisingFactor;
+// number = (int) (benthosCatchRaisingFactor * (float) number);
+//
+// CatchRow row = rowMap.get(sp);
+// if (row == null) {
+// row = new CatchRow();
+// row.setFishingOperation(operation);
+// row.setSpecies(sp);
+// row.setWeight(weight);
+// row.setNumber(number);
+//
+// } else {
+// row.setWeight(row.getWeight() + weight);
+// row.setNumber(row.getNumber() + number);
+// }
+// rowMap.put(sp, row);
+// }
+// }
+//
+// rows.addAll(rowMap.values());
+ }
+
+
+// protected float computeNumber(SpeciesAbleBatch batch, float rf) {
+// float result;
+//
+// float weight = TuttiEntities.getValueOrComputedValue(
+// batch.getSampleCategoryWeight(),
+// batch.getSampleCategoryComputedWeight());
+//
+// if (batch.isChildBatchsEmpty()) {
+//
+// // on a leaf, get his weight
+//
+// Integer number = TuttiEntities.getValueOrComputedValue(
+// batch.getNumber(),
+// batch.getComputedNumber());
+// if (number == null) {
+//
+// // no count
+// number = 0;
+// }
+//
+// // get the sample weight
+// Float subweight = TuttiEntities.getValueOrComputedValue(
+// batch.getWeight(),
+// batch.getComputedWeight());
+//
+// if (subweight != null) {
+//
+// // with sub sample, update the raising factor
+// rf *= weight / subweight;
+// }
+//
+// result = number.floatValue() * rf;
+// } else {
+//
+// // get total weight of all childs
+// float totalWeight = 0.f;
+// for (SpeciesAbleBatch child : batch.getChildBatchs()) {
+// totalWeight += TuttiEntities.getValueOrComputedValue(
+// child.getSampleCategoryWeight(),
+// child.getSampleCategoryComputedWeight());
+// }
+//
+// result = 0f;
+//
+// float rf2 = rf * weight / totalWeight;
+// // sum result of each child
+// for (SpeciesAbleBatch child : batch.getChildBatchs()) {
+//
+// result += computeNumber(child, rf2);
+// }
+//
+// }
+// return result;
+// }
+
+}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchRow.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchRow.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,87 +0,0 @@
-package fr.ifremer.tutti.service.sumatra;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-
-import java.io.Serializable;
-
-/**
- * @author kmorin <kmorin(a)codelutin.com>
- * @since 2.0
- */
-public class CatchRow implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- public static final String PROPERTY_FISHING_OPERATION = "fishingOperation";
-
- public static final String PROPERTY_SPECIES = "species";
-
- public static final String PROPERTY_WEIGHT = "weight";
-
- public static final String PROPERTY_NUMBER = "number";
-
- protected FishingOperation fishingOperation;
-
- protected Species species;
-
- protected Float weight;
-
- protected Integer number;
-
- public FishingOperation getFishingOperation() {
- return fishingOperation;
- }
-
- public void setFishingOperation(FishingOperation fishingOperation) {
- this.fishingOperation = fishingOperation;
- }
-
- public Species getSpecies() {
- return species;
- }
-
- public void setSpecies(Species species) {
- this.species = species;
- }
-
- public Float getWeight() {
- return weight;
- }
-
- public void setWeight(Float weight) {
- this.weight = weight;
- }
-
- public Integer getNumber() {
- return number;
- }
-
- public void setNumber(Integer number) {
- this.number = number;
- }
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchRowModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchRowModel.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchRowModel.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,70 +0,0 @@
-package fr.ifremer.tutti.service.sumatra;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-import org.nuiton.csv.Common;
-import org.nuiton.csv.ValueFormatter;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * @author kmorin <kmorin(a)codelutin.com>
- * @since 2.0
- */
-public class CatchRowModel extends TuttiCsvUtil.AbstractTuttiImportExportModel<CatchRow> {
-
- public CatchRowModel(char separator) {
- super(separator);
-
- // export definition
-
- newColumnForExport(_("tutti.service.exportSumatra.header.station"), CatchRow.PROPERTY_FISHING_OPERATION, new ValueFormatter<FishingOperation>() {
- @Override
- public String format(FishingOperation o) {
- Preconditions.checkNotNull(o, _("tutti.service.exportSumatra.error.station.null"));
- return o.getStationNumber();
- }
- });
- newColumnForExport(_("tutti.service.exportSumatra.header.species"), CatchRow.PROPERTY_SPECIES, new ValueFormatter<Species>() {
- @Override
- public String format(Species s) {
- Preconditions.checkNotNull(s, _("tutti.service.exportSumatra.error.species.null"));
- return s.getName();
- }
- });
- newColumnForExport(_("tutti.service.exportSumatra.header.weight"), CatchRow.PROPERTY_WEIGHT, Common.PRIMITIVE_FLOAT);
- newColumnForExport(_("tutti.service.exportSumatra.header.number"), CatchRow.PROPERTY_NUMBER, Common.PRIMITIVE_INTEGER);
- }
-
- @Override
- public CatchRow newEmptyInstance() {
- return new CatchRow();
- }
-
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchesSumatraExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchesSumatraExportService.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/sumatra/CatchesSumatraExportService.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,344 +0,0 @@
-package fr.ifremer.tutti.service.sumatra;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.io.Files;
-import fr.ifremer.tutti.TuttiTechnicalException;
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
-import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
-import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
-import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch;
-import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.service.AbstractTuttiService;
-import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.service.TuttiServiceContext;
-import fr.ifremer.tutti.service.catches.WeightComputingService;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.csv.Export;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.util.List;
-import java.util.Map;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * @author kmorin <kmorin(a)codelutin.com>
- * @since 2.0
- */
-public class CatchesSumatraExportService extends AbstractTuttiService {
-
- private static final Log log =
- LogFactory.getLog(CatchesSumatraExportService.class);
-
- protected PersistenceService persistenceService;
-
- protected WeightComputingService weightComputingService;
-
- @Override
- public void setServiceContext(TuttiServiceContext context) {
- super.setServiceContext(context);
- persistenceService = getService(PersistenceService.class);
- weightComputingService = getService(WeightComputingService.class);
- }
-
- /**
- * Export selected cruise with the csv sumatra format.
- *
- * @param file where to generate report
- * @param cruiseId id of the cruise to export
- * @since 2.0
- */
- public void exportCruiseForSumatra(File file,
- String cruiseId) {
-
- Preconditions.checkNotNull(cruiseId, "Cannot export a null cruise");
- Preconditions.checkNotNull(file, "Cannot export to a null file");
-
- if (log.isInfoEnabled()) {
- log.info("Will export cruise " + cruiseId + " to file: " + file);
- }
-
- Cruise cruise = persistenceService.getCruise(cruiseId);
- Preconditions.checkNotNull(cruise, "Cruise [" + cruiseId + "] not found");
-
- List<String> operations =
- persistenceService.getAllFishingOperationIds(cruiseId);
-
- prepareOperationsAndExport(file, operations);
- }
-
- /**
- * Export selected fishing operation with the csv sumatra format.
- *
- * @param file where to generate report
- * @param cruiseId id of the cruise to export
- * @param fishingOperationId id of the fishing operation to export
- * @since 2.7
- */
- public void exportFishingOperationForSumatra(File file,
- String cruiseId,
- String fishingOperationId) {
-
- Preconditions.checkNotNull(file, "Cannot export to a null file");
- Preconditions.checkNotNull(cruiseId, "Cannot export a null cruise");
- Preconditions.checkNotNull(fishingOperationId, "Cannot export a null fishing operation");
-
- if (log.isInfoEnabled()) {
- log.info("Will export fishing operation " +
- fishingOperationId + " to file: " + file);
- }
-
- Cruise cruise = persistenceService.getCruise(cruiseId);
- Preconditions.checkNotNull(cruise, "Cruise [" + cruiseId + "] not found");
-
- List<String> operations = Lists.newArrayList(fishingOperationId);
-
- prepareOperationsAndExport(file, operations);
- }
-
- protected void prepareOperationsAndExport(File file,
- List<String> operations) {
-
- List<CatchRow> rows = Lists.newArrayList();
-
- if (operations != null) {
- for (String operationId : operations) {
-
- prepareFishingOperation(rows, operationId);
- }
- }
-
- CatchRowModel csvModel =
- new CatchRowModel(context.getConfig().getCsvSeparator());
-
- BufferedWriter writer = null;
- try {
- writer = Files.newWriter(file, Charsets.UTF_8);
- Export export = Export.newExport(csvModel, rows);
- export.write(writer);
- writer.close();
-
- } catch (Exception e) {
- throw new TuttiTechnicalException(_("tutti.service.sumatra.export.error", file), e);
- } finally {
- IOUtils.closeQuietly(writer);
- }
- }
-
- protected void prepareFishingOperation(List<CatchRow> rows, String operationId) {
-
- FishingOperation operation = persistenceService.getFishingOperation(operationId);
-
- CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(
- operationId);
-
- BatchContainer<SpeciesBatch> speciesBatchContainer =
- weightComputingService.getComputedSpeciesBatches(operationId);
- BatchContainer<BenthosBatch> benthosBatchContainer =
- weightComputingService.getComputedBenthosBatches(operationId);
-
- BatchContainer<MarineLitterBatch> marineLitterBatch =
- weightComputingService.getComputedMarineLitterBatches(
- operationId, catchBatch.getMarineLitterTotalWeight());
-
- weightComputingService.computeCatchBatchWeights(catchBatch,
- speciesBatchContainer,
- benthosBatchContainer,
- marineLitterBatch);
-
- Float totalWeight = TuttiEntities.getValueOrComputedValue(
- catchBatch.getCatchTotalWeight(),
- catchBatch.getCatchTotalComputedWeight());
-
- Float totalUnsortedWeight =
- TuttiEntities.getValueOrComputedValue(
- catchBatch.getCatchTotalUnsortedComputedWeight(),
- 0f);
-
- Float totalSortedSpeciesWeight = TuttiEntities.getValueOrComputedValue(
- catchBatch.getSpeciesTotalSortedWeight(),
- catchBatch.getSpeciesTotalSortedComputedWeight());
-
- Float totalSampleSortedSpeciesWeight =
- catchBatch.getSpeciesTotalSampleSortedComputedWeight();
-
- Float totalSortedBenthosWeight = TuttiEntities.getValueOrComputedValue(
- catchBatch.getBenthosTotalSortedWeight(),
- catchBatch.getBenthosTotalSortedComputedWeight());
-
- Float totalSampleSortedBenthosWeight =
- catchBatch.getBenthosTotalSampleSortedComputedWeight();
-
- Float totalSortedWeight = catchBatch.getCatchTotalSortedComputedWeight();
-
- //FIXME tchemit 2013-07-12 J'utilise en fait la formule (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée)
- // (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée - poids du HV dans la capture totale)
-
- Float catchRaisingFactor = totalWeight == null || totalUnsortedWeight == null || totalSortedWeight == null ? 1 : (totalWeight - totalUnsortedWeight) / totalSortedWeight;
-
- Float speciesCatchRaisingFactor = totalSampleSortedSpeciesWeight == null || totalSortedSpeciesWeight == null || totalSampleSortedSpeciesWeight == null ? 1 : (totalSampleSortedSpeciesWeight == 0 ? 0 : (totalSortedSpeciesWeight / totalSampleSortedSpeciesWeight) * catchRaisingFactor);
- Float benthosCatchRaisingFactor = totalSampleSortedBenthosWeight == null || totalSortedBenthosWeight == null || totalSampleSortedBenthosWeight == null ? 1 : (totalSampleSortedBenthosWeight == 0 ? 0 : (totalSortedBenthosWeight / totalSampleSortedBenthosWeight) * catchRaisingFactor);
-
- speciesCatchRaisingFactor *= catchRaisingFactor;
- benthosCatchRaisingFactor *= catchRaisingFactor;
-
- // add species rows
- Map<Species, CatchRow> rowMap = Maps.newLinkedHashMap();
- if (speciesBatchContainer != null) {
- List<SpeciesBatch> speciesBatches = speciesBatchContainer.getChildren();
- for (SpeciesBatch batch : speciesBatches) {
- Species sp = batch.getSpecies();
-
- int number = Math.round(computeNumber(batch, 1.0f));
-
- Float weight = TuttiEntities.getValueOrComputedValue(
- batch.getSampleCategoryWeight(),
- batch.getSampleCategoryComputedWeight());
-
- weight *= speciesCatchRaisingFactor;
- number = (int) (speciesCatchRaisingFactor * (float) number);
-
- CatchRow row = rowMap.get(sp);
- if (row == null) {
- row = new CatchRow();
- row.setFishingOperation(operation);
- row.setSpecies(sp);
- row.setWeight(weight);
- row.setNumber(number);
-
- } else {
- row.setWeight(row.getWeight() + weight);
- row.setNumber(row.getNumber() + number);
- }
- rowMap.put(sp, row);
- }
- rows.addAll(rowMap.values());
- }
-
- // add benthos rows
- rowMap.clear();
- if (benthosBatchContainer != null) {
- List<BenthosBatch> benthosBatches = benthosBatchContainer.getChildren();
- for (BenthosBatch batch : benthosBatches) {
- Species sp = batch.getSpecies();
-
- int number = Math.round(computeNumber(batch, 1.0f));
-
- Float weight = TuttiEntities.getValueOrComputedValue(
- batch.getSampleCategoryWeight(),
- batch.getSampleCategoryComputedWeight());
-
- weight *= benthosCatchRaisingFactor;
- number = (int) (benthosCatchRaisingFactor * (float) number);
-
- CatchRow row = rowMap.get(sp);
- if (row == null) {
- row = new CatchRow();
- row.setFishingOperation(operation);
- row.setSpecies(sp);
- row.setWeight(weight);
- row.setNumber(number);
-
- } else {
- row.setWeight(row.getWeight() + weight);
- row.setNumber(row.getNumber() + number);
- }
- rowMap.put(sp, row);
- }
- }
-
- rows.addAll(rowMap.values());
- }
-
-
- protected float computeNumber(SpeciesAbleBatch batch, float rf) {
- float result;
-
- float weight = TuttiEntities.getValueOrComputedValue(
- batch.getSampleCategoryWeight(),
- batch.getSampleCategoryComputedWeight());
-
- if (batch.isChildBatchsEmpty()) {
-
- // on a leaf, get his weight
-
- Integer number = TuttiEntities.getValueOrComputedValue(
- batch.getNumber(),
- batch.getComputedNumber());
- if (number == null) {
-
- // no count
- number = 0;
- }
-
- // get the sample weight
- Float subweight = TuttiEntities.getValueOrComputedValue(
- batch.getWeight(),
- batch.getComputedWeight());
-
- if (subweight != null) {
-
- // with sub sample, update the raising factor
- rf *= weight / subweight;
- }
-
- result = number.floatValue() * rf;
- } else {
-
- // get total weight of all childs
- float totalWeight = 0.f;
- for (SpeciesAbleBatch child : batch.getChildBatchs()) {
- totalWeight += TuttiEntities.getValueOrComputedValue(
- child.getSampleCategoryWeight(),
- child.getSampleCategoryComputedWeight());
- }
-
- result = 0f;
-
- float rf2 = rf * weight / totalWeight;
- // sum result of each child
- for (SpeciesAbleBatch child : batch.getChildBatchs()) {
-
- result += computeNumber(child, rf2);
- }
-
- }
- return result;
- }
-
-}
Deleted: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/ExportCatchesReportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/ExportCatchesReportServiceTest.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/ExportCatchesReportServiceTest.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,70 +0,0 @@
-package fr.ifremer.tutti.service.catches;
-
-import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.service.ServiceDbResource;
-import fr.ifremer.tutti.service.TuttiServiceContext;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-import java.io.File;
-import java.util.Locale;
-
-/**
- * Created on 11/19/13.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 2.10
- */
-public class ExportCatchesReportServiceTest {
-
- @ClassRule
- public static final ServiceDbResource dbResource =
- ServiceDbResource.readDb("dbMedits");
-
- public static final String PROGRAM_ID = "CAM-MEDITS";
-
- public static final String CRUISE_ID = "100001";
-
- public static final String OPERATION_1_ID = "100106";
-
- protected ExportCatchesReportService exportService;
-
- protected PersistenceService persistenceService;
-
- protected File dataDirectory;
-
- @Before
- public void setUp() throws Exception {
-
- dataDirectory = dbResource.getServiceConfig().getDataDirectory();
-
- TuttiServiceContext serviceContext = dbResource.getServiceContext();
-
- persistenceService = serviceContext.getService(PersistenceService.class);
-
- serviceContext.getDataContext().open(serviceContext.getConfig(), persistenceService);
- exportService = serviceContext.getService(ExportCatchesReportService.class);
- }
-
- @After
- public void tearDown() throws Exception {
-
- }
-
- @Test
- public void generateFishingOperationPDFFile() throws Exception {
-
- File exportFile = new File(dataDirectory, "exportOperation.pdf");
-
- Assert.assertFalse(exportFile.exists());
-
- exportService.generateFishingOperationPDFFile(exportFile,
- OPERATION_1_ID,
- Locale.FRENCH);
-
- Assert.assertTrue(exportFile.exists());
- }
-}
Deleted: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportService2Test.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportService2Test.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportService2Test.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,264 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.io.Files;
-import fr.ifremer.tutti.TuttiBusinessException;
-import fr.ifremer.tutti.persistence.ProgressionModel;
-import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.service.ServiceDbResource;
-import fr.ifremer.tutti.service.TuttiServiceContext;
-import fr.ifremer.tutti.service.catches.WeightComputingService;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-import java.io.File;
-import java.net.URL;
-import java.util.List;
-
-/**
- * Test export of catches.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.3.2
- */
-public class TuttiExportService2Test {
-
- @ClassRule
- public static final ServiceDbResource dbResource =
- ServiceDbResource.readDb("dbExport");
-
- public static final String PROGRAM_ID = "CAM-TEST_ELEVATION";
-
- public static final String CRUISE_ID = "100003";
-
- public static final String OPERATION_1_ID = "100112";
-
- public static final String OPERATION_2_ID = "100113";
-
- public static final String OPERATION_3_ID = "100114";
-
- protected TuttiExportService service;
-
- protected ServiceDbResource.DataContext dataContext;
-
- protected File dataDirectory;
-
- @Before
- public void setUp() throws Exception {
-
- dataDirectory = dbResource.getServiceConfig().getDataDirectory();
-
- dbResource.setCountryInConfig("12");
-
- dbResource.openDataContext();
-
- TuttiServiceContext serviceContext = dbResource.getServiceContext();
-
- service = serviceContext.getService(TuttiExportService.class);
-
- }
-
- @Test
- public void exportWithErrors() throws Exception {
-
-
- TuttiServiceContext serviceContext = dbResource.getServiceContext();
-
- PersistenceService persistenceService = serviceContext.getService(PersistenceService.class);
-
- // check there is a error while compute weight for a cruise
- boolean errorDetected = false;
- WeightComputingService computingService = serviceContext.getService(WeightComputingService.class);
- List<String> allFishingOperation = persistenceService.getAllFishingOperationIds(CRUISE_ID);
- for (String fishingOperation : allFishingOperation) {
- try {
- computingService.getComputedSpeciesBatches(fishingOperation);
- } catch (Exception e) {
- errorDetected = true;
- break;
- }
- }
-
- Assert.assertTrue(errorDetected);
-
- File exportFile = new File(dataDirectory, "exportCruise.zip");
-
- Files.createParentDirs(exportFile);
-
- Assert.assertFalse(exportFile.exists());
-
- ProgressionModel progressionModel = new ProgressionModel();
- progressionModel.setTotal(9);
- try {
- service.exportCruise(CRUISE_ID, exportFile, progressionModel);
- // got an error after but export was still performed
- Assert.fail();
- } catch (TuttiBusinessException e) {
- // got an error
- Assert.assertTrue(true);
- }
- // export perform, file exist
- Assert.assertTrue(exportFile.exists());
-
- String urlPrefix = "jar:" + exportFile.toURI().toURL() + "!/exportCruise-" + CRUISE_ID + "/";
- {
- // check species file content
-
- URL url = new URL(urlPrefix + "species.csv");
- ServiceDbResource.assertFileContent("species export:\n",
- url,
- "Id;Code_Rubin;Nom Scientifique;Code campagne\n" +
- "380;ACANECH;Acanthocardia echinata;;\n" +
- "1358;ALOSALO;Alosa alosa;;\n" +
- "1938;AGONCAT;Agonus cataphractus;;\n" +
- "4622;ABIEABI;Abietinaria abietina;;\n" +
- "11183;;Brissopsis atlantica;;");
-
- }
-
- {
- // check accidentalCatch file content
-
- URL url = new URL(urlPrefix + "accidentalCatch.csv");
- ServiceDbResource.assertFileContent("accidentalCatch export:\n",
- url,
- "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue");
-
- }
-
- {
- // check operation file content
-
- URL url = new URL(urlPrefix + "operation.csv");
- ServiceDbResource.assertFileContent("operation export:\n",
- url,
- "Annee;Serie;Serie_Partielle;Code_Station;Numero_Trait;Poche;Engin;Navire;DateDeb_Op;LatDeb;LongDeb;DateFin_Op;LatFin;LongFin;Duree;Strate;Sous-Strate;Localite;Validite_OP;Rectiligne;Distance;Ouv_Verticale;Ouv_Horizontale_Ailes;Ouv_Horizontale_Panneaux;Saisisseur;NavireAssocie;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total_Carroussel_Calcule;Poids_Total_Espece;Poids_Total_Espece_Calcule;Poids_Total_Espece_Vrac;Poids_Total_Espece_Vrac_Calcule;Poids_Total_Espece_Vrac_Trie;Poids_Total_Espece_Vrac_Trie_Calcule;Poids_Total_Espece_HorsVrac;Poids_Total_Espece_HorsVrac_Calcule;Poids_Total_Espece_Inerte_Trie;Poids_Total_Espece_Inerte_Trie_Calcule;Poids_Total_Espece_Vivant_non_detaille_trie;Poids_Total_Espece_Vivant_non_detaille_trie_Calcule;Poids_Total_Benthos;Poids_Total_Benthos_Calcule;Poids_Total_Benthos_Vrac;Poids_Total_Benthos_Vrac_Calcule;Poids_Total_Benthos_Vrac_Trie;Poids_Total_Benthos_Vrac_Trie_Calcule;Poids_Total_Benthos_HorsVrac;Poids_Total_Benthos_HorsVrac_Calcule;Poids_Total_Benthos_Inerte_Trie;Poids_Total_Benthos_Inerte_Trie_Calcule;Poids_Total_Benthos_Vivant_non_detaille_trie;Poids_Total_Benthos_Vivant_non_detaille_trie_Calcule;Poids_Total_Macro_Dechet;Poids_Total_Macro_Dechet_Calcule\n" +
- "2013;test elevation;1;B;2;1;OTB 20/28.10;278970;01/07/2013 00:00:00;;;01/07/2013 00:00:00;;;00;NA;NA;NA;?;N;;NA;NA;NA;;;\"Commentaire sur le trait B-2-1\n" +
- "\n" +
- "avec\n" +
- "saut\n" +
- "de \n" +
- "ligne\";1000.0;Y;280.0;Y;20.0;Y;700.0;N;;?;;?;200.0;Y;180.0;Y;180.0;Y;20.0;Y;0.0;Y;0.0;Y;100.0;Y;100.0;N;50.0;Y;0.0;Y;2.0;N;0.0;Y;100.0;N;\n" +
- "2013;test elevation;1;A;1;1;OTB 20/28.10;278970;01/07/2013 00:00:00;;;01/07/2013 00:00:00;;;00;NA;NA;NA;?;N;;NA;NA;NA;;;\"commentaire trait A-1-1\n" +
- "Avec \n" +
- "saut\n" +
- "de\n" +
- "ligne\n" +
- "...\";1000.0;Y;180.0;Y;20.0;Y;800.0;N;;?;;?;200.0;Y;180.0;Y;180.0;Y;20.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;\n" +
- "2013;test elevation;1;C;3;1;;278970;25/09/2013 00:00:00;;;25/09/2013 00:00:00;;;00;NA;NA;NA;?;N;;NA;NA;NA;;;;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;");
-
- }
-
- {
- // check survey file content
-
- URL url = new URL(urlPrefix + "survey.csv");
- ServiceDbResource.assertFileContent("survey export:\n",
- url,
- "Annee;Serie;Serie_Partielle;Navire;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire\n" +
- "2013;test elevation;1;278970;FRA;CGFS - Manche Est / Sud Mer du Nord;test elevation_2013_1;;01/07/2013 00:00:00;La Barbotière (Gujan-Mestras);04/07/2013 00:00:00;La Barbotière (Gujan-Mestras);Adrian LEVREL;Alain BISEAU;;");
-
- }
-
- {
- // check individualObservation file content
-
- URL url = new URL(urlPrefix + "individualObservation.csv");
- ServiceDbResource.assertFileContent("individualObservation export:\n",
- url,
- "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue");
-
- }
-
- {
- // check catch file content
-
- URL url = new URL("jar:" + exportFile.toURI().toURL() + "!/exportCruise-" + CRUISE_ID + "/catch.csv");
- ServiceDbResource.assertFileContent("Catch export:\n",
- url,
- "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;Taxon;Nom_scientifique;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri_;Num_Ordre_Class_Tri__H2;Tot_Class_Tri_;Ech_Class_Tri_;Type_Volume_Poids_Class_Tri_;Unite_Volume_Poids_Class_Tri_;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturité;Num_Ordre_Maturité_H2;Tot_Maturité;Ech_Maturité;Type_Volume_Poids_Maturité;Unite_Volume_Poids_Maturité;Age;Num_Ordre_Age_H2;Tot_Age;Ech_Age;Type_Volume_Poids_Age;Unite_Volume_Poids_Age;Code_Longueur;Libelle_Longueur;Taille;NumOrdre_Taille_H2;Poids_Classe_Taille;Unite_Taille;Precision_Mesure;Nbr;Poids_Reference;Coef_Elev_Espece_Capture\n" +
- "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;1938;Agonus cataphractus;Trait B-2-1 AGONCAT-vrac 80;Vrac;1;80.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;80.0;3.5;\n" +
- "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;1358;Alosa alosa;Trait B-2-1 ALOSALO Vrac|Trait B-2-1 ALOSALO Vrac - Male 60;Vrac;2;;;Poids;kg;NA;;;;;kg;Mâle;1;60.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;60.0;5.8333335;\n" +
- "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;1358;Alosa alosa;Trait B-2-1 ALOSALO Vrac|Trait B-2-1 ALOSALO Vrac - Femelle 40.0;Vrac;2;;;Poids;kg;NA;;;;;kg;Femelle;2;40.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;40.0;8.75;\n" +
- "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;1938;Agonus cataphractus;Trait B-2-1 AGONCAT-horsvrac 20;Hors Vrac;1;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;20.0;1.0;\n" +
- "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;4622;Abietinaria abietina;\"Trait B-2-1 Benthos ABIEABI Vrac 30\n" +
- "\n" +
- "avec \n" +
- "\n" +
- "commentaire...\";Vrac;1;30.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;30.0;7.0;\n" +
- "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;380;Acanthocardia echinata;\"Trait B-2-1 Benthos ACANECH Vrac 18\n" +
- "\n" +
- "avec \n" +
- "\n" +
- "commentaire...\";Vrac;2;18.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;18.0;7.0;\n" +
- "2013;test elevation;1;OTB 20/28.10;A;1;1;278970;1938;Agonus cataphractus;AGONCAT-vrac-80;Vrac;1;80.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;80.0;5.4444447;\n" +
- "2013;test elevation;1;OTB 20/28.10;A;1;1;278970;1358;Alosa alosa;ALOSALO-vrac|ALOSALO-vrac-male 60;Vrac;2;;;Poids;kg;NA;;;;;kg;Mâle;1;60.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;60.0;9.074075;\n" +
- "2013;test elevation;1;OTB 20/28.10;A;1;1;278970;1358;Alosa alosa;ALOSALO-vrac|ALOSALO-vrac-femelle 40;Vrac;2;;;Poids;kg;NA;;;;;kg;Femelle;2;40.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;5.0;1;0.6;cm;1.0;4;0.6;907.4074;\n" +
- "2013;test elevation;1;OTB 20/28.10;A;1;1;278970;1358;Alosa alosa;ALOSALO-vrac|ALOSALO-vrac-femelle 40;Vrac;2;;;Poids;kg;NA;;;;;kg;Femelle;2;40.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;6.0;2;0.4;cm;1.0;10;0.4;1361.1111;\n" +
- "2013;test elevation;1;OTB 20/28.10;A;1;1;278970;1938;Agonus cataphractus;AGONCAT-horsvrac-20;Hors Vrac;1;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;20.0;1.0;\n" +
- "2013;test elevation;1;;C;3;1;278970;11183;Brissopsis atlantica;|;Vrac;1;;;Poids;kg;NA;;;;;kg;UNK - Indéterminé;1;30.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;30.0;0.0;\n" +
- "2013;test elevation;1;;C;3;1;278970;11183;Brissopsis atlantica;|;Vrac;1;;;Poids;kg;NA;;;;;kg;Mâle;2;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;20.0;0.0;\n" +
- "2013;test elevation;1;;C;3;1;278970;11183;Brissopsis atlantica;|;Vrac;1;;;Poids;kg;NA;;;;;kg;Femelle;3;;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;;1.0;");
-
- }
-
- {
- // check gearCaracteristics file content
-
- URL url = new URL(urlPrefix + "gearCaracteristics.csv");
- ServiceDbResource.assertFileContent("gearCaracteristics export:\n",
- url,
- "Annee;Serie;Serie_Partielle;Engin;Code_PMFM;Libelle_PMFM;Valeur");
-
- }
-
- {
- // check marineLitter file content
-
- URL url = new URL(urlPrefix + "marineLitter.csv");
- ServiceDbResource.assertFileContent("marineLitter export:\n",
- url,
- "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;MarineLitterCategory;MarineLitterSizeCategory;Number;Weight;Commentaire\n" +
- "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;L1 PLASTIQUE;A: <5*5 cm= 25 cm2;10;;\"Trait B-2-1 Macro dechet L1 Plastique (nb 10)\n" +
- "\n" +
- "avec \n" +
- "\n" +
- "commentaire...\";");
-
- }
- {
- // check parameter file content
-
- URL url = new URL(urlPrefix + "parameter.csv");
- ServiceDbResource.assertFileContent("parameter export:\n",
- url,
- "Annee;Serie;Serie_Partielle;Code_station;Numero_Trait;Poche;Code_PMFM;Libelle_PMFm;Valeur");
-
- }
- }
-}
Deleted: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,505 +0,0 @@
-package fr.ifremer.tutti.service.export;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.collect.Lists;
-import com.google.common.io.Files;
-import fr.ifremer.tutti.persistence.ProgressionModel;
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.service.ServiceDbResource;
-import fr.ifremer.tutti.service.TuttiServiceContext;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.io.File;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.3
- */
-public class TuttiExportServiceTest {
-
- @ClassRule
- public static final ServiceDbResource dbResource =
- ServiceDbResource.readDb("dbCGFS");
-
- public static final String PROGRAM_ID = "CAM-CGFS";
-
- public static final String CRUISE_ID = "100001";
-
- public static final String CRUISE_CGFS_ID = "100000";
-
- public static final String OPERATION_1_ID = "100106";
-
- public static final String OPERATION_2_ID = "100107";
-
- public static final String SURVEY_CONTENT =
- "Annee;Serie;Serie_Partielle;Navire;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire\n" +
- "2013;Campagne CGFS;;278970;FRA;CGFS - Manche Est / Sud Mer du Nord;Campagne CGFS_2013;;01/05/2013 00:00:00;La Barbotière (Gujan-Mestras);31/05/2013 00:00:00;Etang de Palo;Vincent AURECHE;Alain TETARD;;";
-
- public static final String GEAR_CARACTERISTICS_CONTENT =
- "Annee;Serie;Serie_Partielle;Engin;Code_PMFM;Libelle_PMFM;Valeur\n" +
- "2013;Campagne CGFS;;ScientificGear;289;Armature (drague) - engin - totale - Déclaration d'un professionnel;Lame;\n" +
- "2013;Campagne CGFS;;ScientificGear;121;Diamètre du goulot (Casier) - engin - goulotte - Déclaration d'un professionnel;120.0;\n" +
- "2013;Campagne CGFS;;ScientificGear;927;Maillage étiré de l'engin - engin - Maille des ailes - Inconnue;15.0;\n" +
- "2013;Campagne CGFS;;ScientificGear;287;Volet dépresseur (drague) - engin - totale - Déclaration d'un professionnel;Oui;";
-
- public static final String OPERATION_WITH_NO_CATCH_CONTENT =
- "Annee;Serie;Serie_Partielle;Code_Station;Numero_Trait;Poche;Engin;Navire;DateDeb_Op;LatDeb;LongDeb;DateFin_Op;LatFin;LongFin;Duree;Strate;Sous-Strate;Localite;Validite_OP;Rectiligne;Distance;Ouv_Verticale;Ouv_Horizontale_Ailes;Ouv_Horizontale_Panneaux;Saisisseur;NavireAssocie;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total_Carroussel_Calcule;Poids_Total_Espece;Poids_Total_Espece_Calcule;Poids_Total_Espece_Vrac;Poids_Total_Espece_Vrac_Calcule;Poids_Total_Espece_Vrac_Trie;Poids_Total_Espece_Vrac_Trie_Calcule;Poids_Total_Espece_HorsVrac;Poids_Total_Espece_HorsVrac_Calcule;Poids_Total_Espece_Inerte_Trie;Poids_Total_Espece_Inerte_Trie_Calcule;Poids_Total_Espece_Vivant_non_detaille_trie;Poids_Total_Espece_Vivant_non_detaille_trie_Calcule;Poids_Total_Benthos;Poids_Total_Benthos_Calcule;Poids_Total_Benthos_Vrac;Poids_Total_Benthos_Vrac_Calcule;Poids_Total_Benthos_Vrac_Trie;Poids_Total_Benthos_Vrac_Trie_Calcule;Poids_Total_Benthos_HorsVrac;Poids_Total_Benthos_HorsVrac_Calcule;Poids_Total_Benthos_Inerte_Trie;Poids_Total_Benthos_Inerte_Trie_Calcule;Poids_Total_Benthos_Vivant_non_detaille_trie;Poids_Total_Benthos_Vivant_non_detaille_trie_Calcule;Poids_Total_Macro_Dechet;Poids_Total_Macro_Dechet_Calcule\n" +
- "2010;Campagne CGFS;;65;65;1;GOV 19.7/25.9;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512.0;NA;NA;NA;;;avarie - chalut annulé completement à poil;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;";
-
- public static final String OPERATION_WITH_NO_CATCH_CONTENT_AND_NO_GEAR =
- "Annee;Serie;Serie_Partielle;Code_Station;Numero_Trait;Poche;Engin;Navire;DateDeb_Op;LatDeb;LongDeb;DateFin_Op;LatFin;LongFin;Duree;Strate;Sous-Strate;Localite;Validite_OP;Rectiligne;Distance;Ouv_Verticale;Ouv_Horizontale_Ailes;Ouv_Horizontale_Panneaux;Saisisseur;NavireAssocie;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total_Carroussel_Calcule;Poids_Total_Espece;Poids_Total_Espece_Calcule;Poids_Total_Espece_Vrac;Poids_Total_Espece_Vrac_Calcule;Poids_Total_Espece_Vrac_Trie;Poids_Total_Espece_Vrac_Trie_Calcule;Poids_Total_Espece_HorsVrac;Poids_Total_Espece_HorsVrac_Calcule;Poids_Total_Espece_Inerte_Trie;Poids_Total_Espece_Inerte_Trie_Calcule;Poids_Total_Espece_Vivant_non_detaille_trie;Poids_Total_Espece_Vivant_non_detaille_trie_Calcule;Poids_Total_Benthos;Poids_Total_Benthos_Calcule;Poids_Total_Benthos_Vrac;Poids_Total_Benthos_Vrac_Calcule;Poids_Total_Benthos_Vrac_Trie;Poids_Total_Benthos_Vrac_Trie_Calcule;Poids_Total_Benthos_HorsVrac;Poids_Total_Benthos_HorsVrac_Calcule;Poids_Total_Benthos_Inerte_Trie;Poids_Total_Benthos_Inerte_Trie_Calcule;Poids_Total_Benthos_Vivant_non_detaille_trie;Poids_Total_Benthos_Vivant_non_detaille_trie_Calcule;Poids_Total_Macro_Dechet;Poids_Total_Macro_Dechet_Calcule\n" +
- "2010;Campagne CGFS;;65;65;1;;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512.0;NA;NA;NA;;;avarie - chalut annulé completement à poil;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;";
-
- public static final String OPERATION_CONTENT =
- "Annee;Serie;Serie_Partielle;Code_Station;Numero_Trait;Poche;Engin;Navire;DateDeb_Op;LatDeb;LongDeb;DateFin_Op;LatFin;LongFin;Duree;Strate;Sous-Strate;Localite;Validite_OP;Rectiligne;Distance;Ouv_Verticale;Ouv_Horizontale_Ailes;Ouv_Horizontale_Panneaux;Saisisseur;NavireAssocie;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total_Carroussel_Calcule;Poids_Total_Espece;Poids_Total_Espece_Calcule;Poids_Total_Espece_Vrac;Poids_Total_Espece_Vrac_Calcule;Poids_Total_Espece_Vrac_Trie;Poids_Total_Espece_Vrac_Trie_Calcule;Poids_Total_Espece_HorsVrac;Poids_Total_Espece_HorsVrac_Calcule;Poids_Total_Espece_Inerte_Trie;Poids_Total_Espece_Inerte_Trie_Calcule;Poids_Total_Espece_Vivant_non_detaille_trie;Poids_Total_Espece_Vivant_non_detaille_trie_Calcule;Poids_Total_Benthos;Poids_Total_Benthos_Calcule;Poids_Total_Benthos_Vrac;Poids_Total_Benthos_Vrac_Calcule;Poids_Total_Benthos_Vrac_Trie;Poids_Total_Benthos_Vrac_Trie_Calcule;Poids_Total_Benthos_HorsVrac;Poids_Total_Benthos_HorsVrac_Calcule;Poids_Total_Benthos_Inerte_Trie;Poids_Total_Benthos_Inerte_Trie_Calcule;Poids_Total_Benthos_Vivant_non_detaille_trie;Poids_Total_Benthos_Vivant_non_detaille_trie_Calcule;Poids_Total_Macro_Dechet;Poids_Total_Macro_Dechet_Calcule\n" +
- "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;278970;01/05/2013 00:00:00;;;01/05/2013 00:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;;NA;NA;NA;Vincent AURECHE;;op1;120.0;Y;100.0;Y;20.0;Y;0.0;Y;;?;;?;120.0;Y;100.0;Y;100.0;Y;20.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;6.0;Y;\n" +
- "2013;Campagne CGFS;;A;2;1;GOV 19.7/25.9;278970;11/05/2013 08:00:00;;;11/05/2013 08:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;;NA;NA;NA;Robert BELLAIL|Herve BARONE;;OP2;0.0;Y;0.0;Y;0.0;Y;0.0;Y;;?;;?;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;";
-
- public static final String PARAMETER_CONTENT =
- "Annee;Serie;Serie_Partielle;Code_station;Numero_Trait;Poche;Code_PMFM;Libelle_PMFm;Valeur\n" +
- "2013;Campagne CGFS;;A;1;1;1164;Catégorie UE - produit/lot - totale - Diffusion par une Halle à marée;Cat UE10;\n" +
- "2013;Campagne CGFS;;A;1;1;1302;(Gross Tonnage) : augmentation de tonnage accordée pour des raisons de sécurité - navire - totale - Déclaration d'un professionnel;10.0;\n" +
- "2013;Campagne CGFS;;A;1;1;194;\"Etat de la mer - masse d'eau, eau brute - totale - Observation par un observateur\";\"2 - belle, vagues de 0.1 à 0.5 mètres\";\n" +
- "2013;Campagne CGFS;;A;1;1;821;Direction vent - air - totale - Instrument de bord;0.1;\n" +
- "2013;Campagne CGFS;;A;1;1;149;Coût de la glace - navire - totale - Déclaration d'un professionnel;10.0;\n" +
- "2013;Campagne CGFS;;A;2;1;1062;Catégorie de fraicheur - produit/lot - totale - Diffusion par une Halle à marée;A - Catégorie A;\n" +
- "2013;Campagne CGFS;;A;2;1;308;Nombre d'engin - engin - totale - Déclaration d'un professionnel;2.0;";
-
- public static final String CATCH_CONTENT =
- "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;Taxon;Nom_scientifique;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri_;Num_Ordre_Class_Tri__H2;Tot_Class_Tri_;Ech_Class_Tri_;Type_Volume_Poids_Class_Tri_;Unite_Volume_Poids_Class_Tri_;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturité;Num_Ordre_Maturité_H2;Tot_Maturité;Ech_Maturité;Type_Volume_Poids_Maturité;Unite_Volume_Poids_Maturité;Age;Num_Ordre_Age_H2;Tot_Age;Ech_Age;Type_Volume_Poids_Age;Unite_Volume_Poids_Age;Code_Longueur;Libelle_Longueur;Taille;NumOrdre_Taille_H2;Poids_Classe_Taille;Unite_Taille;Precision_Mesure;Nbr;Poids_Reference;Coef_Elev_Espece_Capture\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.0;1;;cm;0.5;5;5.0;20.0;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;2;;cm;0.5;2;5.0;20.0;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;11.0;3;;cm;0.5;1;5.0;20.0;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;11.0;1;;cm;0.5;5;10.0;10.0;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;10.0;1;;cm;;5;30.0;3.3333333;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;11.0;2;;cm;;6;30.0;3.3333333;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;12.0;3;;cm;;7;30.0;3.3333333;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;|;Vrac;1;100.0;;Poids;kg;M - Moyen;2;20.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;;;;;;;;;20.0;5.0;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;;Hors Vrac;1;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;2;20.0;1.0;";
-
- public static final String CATCH_CONTENT_2 =
- "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;Taxon;Nom_scientifique;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri_;Num_Ordre_Class_Tri__H2;Tot_Class_Tri_;Ech_Class_Tri_;Type_Volume_Poids_Class_Tri_;Unite_Volume_Poids_Class_Tri_;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturité;Num_Ordre_Maturité_H2;Tot_Maturité;Ech_Maturité;Type_Volume_Poids_Maturité;Unite_Volume_Poids_Maturité;Age;Num_Ordre_Age_H2;Tot_Age;Ech_Age;Type_Volume_Poids_Age;Unite_Volume_Poids_Age;Code_Longueur;Libelle_Longueur;Taille;NumOrdre_Taille_H2;Poids_Classe_Taille;Unite_Taille;Precision_Mesure;Nbr;Poids_Reference;Coef_Elev_Espece_Capture\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;365;Aequipecten opercularis;taxon;Vrac;1;0.005;0.005;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.005;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;491;Alloteuthis;taxon;Vrac;2;0.004;0.004;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.004;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;300;Buccinum undatum;taxon;Vrac;3;0.015;0.015;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.015;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1811;Callionymus lyra;taxon;Vrac;4;0.07;0.07;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.07;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1644;Dicentrarchus labrax;taxon;Vrac;5;1.06;1.06;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;36.0;1;;cm;1.0;1;1.06;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1644;Dicentrarchus labrax;taxon;Vrac;5;1.06;1.06;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;38.0;2;;cm;1.0;1;1.06;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1362;Engraulis encrasicolus;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;1;;cm;0.5;2;0.038;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1362;Engraulis encrasicolus;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;12.5;2;;cm;0.5;1;0.038;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1362;Engraulis encrasicolus;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;13.0;3;;cm;0.5;1;0.038;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1986;Limanda limanda;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;25.0;1;;cm;1.0;1;0.66;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1986;Limanda limanda;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;28.0;2;;cm;1.0;1;0.66;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1986;Limanda limanda;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;30.0;3;;cm;1.0;1;0.66;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;489;Loligo vulgaris;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;9.0;1;;cm;1.0;1;0.28;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;489;Loligo vulgaris;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;10.0;2;;cm;1.0;3;0.28;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;489;Loligo vulgaris;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;11.0;3;;cm;1.0;2;0.28;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1988;Microstomus kitt;taxon;Vrac;9;0.152;0.152;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;15.0;1;;cm;1.0;1;0.152;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1988;Microstomus kitt;taxon;Vrac;9;0.152;0.152;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;18.0;2;;cm;1.0;1;0.152;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1690;Mullus surmuletus;taxon;Vrac;10;0.036;0.036;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;11.0;1;;cm;1.0;1;0.036;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1978;Pleuronectes platessa;taxon;Vrac;11;0.852;0.852;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;26.0;1;;cm;1.0;1;0.852;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1978;Pleuronectes platessa;taxon;Vrac;11;0.852;0.852;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;30.0;2;;cm;1.0;1;0.852;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1351;Sardina pilchardus;taxon;Vrac;12;0.022;0.022;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;1;;cm;0.5;1;0.022;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1772;Scomber scombrus;taxon;Vrac;13;0.18;0.18;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;27.0;1;;cm;1.0;1;0.18;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1242;Scyliorhinus canicula;taxon|categorie_individu;Vrac;14;;;Poids;kg;NA;;;;;kg;Femelle;1;1.0;1.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;51.0;1;;cm;1.0;1;1.0;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1242;Scyliorhinus canicula;taxon|categorie_individu;Vrac;14;;;Poids;kg;NA;;;;;kg;Femelle;1;1.0;1.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;55.0;2;;cm;1.0;1;1.0;1.0;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1662;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;131.12;0.96;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;8.0;1;;cm;1.0;1;0.96;136.71875;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1662;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;131.12;0.96;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;9.0;2;;cm;1.0;20;0.96;136.71875;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1662;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;131.12;0.96;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;10.0;3;;cm;1.0;89;0.96;136.71875;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1662;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;131.12;0.96;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;11.0;4;;cm;1.0;5;0.96;136.71875;\n" +
- "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1662;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;G - Gros;2;0.13;0.13;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;23.0;1;;cm;1.0;1;0.13;1009.6154;";
-
- public static final String MARINE_LITTER_CONTENT =
- "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;MarineLitterCategory;MarineLitterSizeCategory;Number;Weight;Commentaire\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;L1 PLASTIQUE;A: <5*5 cm= 25 cm2;2;5.0;S1;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;L1a Sacs;B: <10*10 cm= 100 cm2;3;1.0;S2;";
-
- public static final String INDIVIDUAL_OBSERVATION_CONTENT =
- "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;220;0.1;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;1433;307;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;307;10.0;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;1436;10;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;1435;A20;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;101;10.0;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;46;0L - 0 VMS - 1 LB;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;1388;5.0;";
-
- public static final String ACCIDENTAL_CATCH_CONTENT =
- "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100001;3835;Abalistes;;1393;Rejet mort;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100001;3835;Abalistes;;196;Femelle;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100001;3835;Abalistes;;220;10.0;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100001;3835;Abalistes;;1433;1425;\n" +
- "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100001;3835;Abalistes;;1425;4.0;";
-
- public static final String SPECIES_CONTENT =
- "Id;Code_Rubin;Nom Scientifique;Code campagne\n" +
- "3835;ABAL;Abalistes;;\n" +
- "11242;AAPT;Aaptos;;\n" +
- "11243;AAPTAAP;Aaptos aaptos;;";
-
- public static final String SPECIES_CONTENT_2 =
- "Id;Code_Rubin;Nom Scientifique;Code campagne\n" +
- "300;BUCCUND;Buccinum undatum;;\n" +
- "365;AEQUOPE;Aequipecten opercularis;;\n" +
- "489;LOLIVUL;Loligo vulgaris;LOLIVUL;\n" +
- "491;ALLO;Alloteuthis;ALLOSPP;\n" +
- "1242;SCYOCAN;Scyliorhinus canicula;SCYOCAN;\n" +
- "1351;SARDPIL;Sardina pilchardus;SARDPIL;\n" +
- "1362;ENGRENC;Engraulis encrasicolus;ENGRENC;\n" +
- "1644;DICELAB;Dicentrarchus labrax;DICELAB;\n" +
- "1662;TRACTRA;Trachurus trachurus;TRACTRA;\n" +
- "1690;MULLSUR;Mullus surmuletus;MULLSUR;\n" +
- "1772;SCOMSCO;Scomber scombrus;SCOMSCO;\n" +
- "1811;CALMLYR;Callionymus lyra;CALMLYR;\n" +
- "1978;PLEUPLA;Pleuronectes platessa;;\n" +
- "1986;LIMDLIM;Limanda limanda;;\n" +
- "1988;MICTKIT;Microstomus kitt;;";
-
- public static final int NB_EXPECTED_CGFS_OPERATIONS = 106;
-
- protected TuttiExportService service;
-
- protected PersistenceService persistenceService;
-
- protected ServiceDbResource.DataContext dataContext;
-
- protected ProgressionModel progressionModel;
-
- protected File dataDirectory;
-
- @Before
- public void setUp() throws Exception {
-
- dataDirectory = dbResource.getServiceConfig().getDataDirectory();
-
- TuttiServiceContext serviceContext = dbResource.getServiceContext();
-
- persistenceService = serviceContext.getService(PersistenceService.class);
-
- dbResource.setCountryInConfig("12");
- dbResource.openDataContext();
-
- service = serviceContext.getService(TuttiExportService.class);
-
- dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 2, OPERATION_1_ID, OPERATION_2_ID);
-
- progressionModel = new ProgressionModel();
- progressionModel.setTotal(9);
- }
-
- @Ignore
- @Test
- public void exportProgram() throws Exception {
-
- File exportFile = new File(dataDirectory, "exportProgram.zip");
-
- Files.createParentDirs(exportFile);
-
- Assert.assertFalse(exportFile.exists());
-
- service.exportProgram(dataContext.program.getId(), exportFile, progressionModel);
- Assert.assertTrue(exportFile.exists());
- }
-
- @Test
- public void exportCruise() throws Exception {
-
- File exportFile = new File(dataDirectory, "exportCruise.zip");
-
- Files.createParentDirs(exportFile);
-
- Assert.assertFalse(exportFile.exists());
-
- service.exportCruise(dataContext.cruise.getId(), exportFile, progressionModel);
- Assert.assertTrue(exportFile.exists());
- }
-
- @Test
- public void exportSurvey() throws Exception {
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- service.exportSurvey(exportContext, dataContext.cruise);
- } finally {
- exportContext.close();
- }
- ServiceDbResource.assertFileContent("Survey export:\n",
- exportContext.surveyFile,
- SURVEY_CONTENT);
- }
-
- @Test
- public void exportGearCaracteristics() throws Exception {
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- service.exportGearCaracteristics(exportContext, dataContext.cruise);
- } finally {
- exportContext.close();
- }
- ServiceDbResource.assertFileContent("Gear caracteristics export:\n",
- exportContext.gearCaracteristicsFile,
- GEAR_CARACTERISTICS_CONTENT);
- }
-
- @Test
- public void exportOperations() throws Exception {
-
-// loadData(PROGRAM_ID, CRUISE_CGFS_ID);
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- service.exportOperations(exportContext, dataContext.cruise, dataContext.operations);
- } finally {
- exportContext.close();
- }
- ServiceDbResource.assertFileContent("Operation export:\n",
- exportContext.operationFile,
- OPERATION_CONTENT);
- }
-
- @Test
- public void exportOperationsWithNoCatches() throws Exception {
-
- dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_CGFS_ID, NB_EXPECTED_CGFS_OPERATIONS);
-
- FishingOperation operation = TuttiEntities.findById(dataContext.operations, "100105");
- dataContext.operations = Lists.newArrayList(operation);
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- service.exportOperations(exportContext, dataContext.cruise, dataContext.operations);
- } finally {
- exportContext.close();
- }
-
- ServiceDbResource.assertFileContent("Operation export:\n",
- exportContext.operationFile,
- OPERATION_WITH_NO_CATCH_CONTENT);
- }
-
- @Test
- public void exportOperationsWithNoGear() throws Exception {
-
- dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_CGFS_ID, NB_EXPECTED_CGFS_OPERATIONS);
-
- FishingOperation operation = TuttiEntities.findById(dataContext.operations, "100105");
- operation.setGear(null);
- dataContext.operations = Lists.newArrayList(operation);
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- service.exportOperations(exportContext, dataContext.cruise, dataContext.operations);
- } finally {
- exportContext.close();
- }
-
- ServiceDbResource.assertFileContent("Operation export:\n",
- exportContext.operationFile,
- OPERATION_WITH_NO_CATCH_CONTENT_AND_NO_GEAR);
- }
-
- @Test
- public void exportParameters() throws Exception {
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- service.exportParameters(exportContext, dataContext.cruise, dataContext.operations);
- } finally {
- exportContext.close();
- }
- ServiceDbResource.assertFileContent("Parameter export:\n",
- exportContext.parameterFile,
- PARAMETER_CONTENT);
- }
-
- @Test
- public void exportCatches() throws Exception {
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- service.exportCatches(exportContext, dataContext.cruise, dataContext.operations);
- } finally {
- exportContext.close();
- }
- ServiceDbResource.assertFileContent("Catch export:\n",
- exportContext.catchFile,
- CATCH_CONTENT);
- }
-
- // To fix http://forge.codelutin.com/issues/2692
- @Test
- public void exportCatchesAndSpecies() throws Exception {
-
- File protocolFile = new File("src/test/resources/tuttiProtocol.tuttiProtocol");
-
- TuttiProtocol protocol = dbResource.loadProtocol(protocolFile);
-
- persistenceService.setProtocol(protocol);
-
- dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_CGFS_ID, NB_EXPECTED_CGFS_OPERATIONS);
-
- FishingOperation operation = TuttiEntities.findById(dataContext.operations, "100000");
- dataContext.operations = Lists.newArrayList(operation);
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- service.exportCatches(exportContext, dataContext.cruise, dataContext.operations);
- service.exportSpecies(exportContext, exportContext.getSpeciesToExport());
- } finally {
- exportContext.close();
- }
-
- ServiceDbResource.assertFileContent("species export:\n",
- exportContext.speciesFile,
- SPECIES_CONTENT_2);
-
- ServiceDbResource.assertFileContent("Catch export:\n",
- exportContext.catchFile,
- CATCH_CONTENT_2);
-
-
- }
-
- // To fix http://forge.codelutin.com/issues/2523
- @Test
- public void exportBadCatches() throws Exception {
-
- dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_CGFS_ID, NB_EXPECTED_CGFS_OPERATIONS);
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- service.exportCatches(exportContext, dataContext.cruise, dataContext.operations);
- } finally {
- exportContext.close();
- }
- }
-
- @Test
- public void exportMarineLitters() throws Exception {
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- service.exportMarineLitters(exportContext, dataContext.cruise, dataContext.operations);
- } finally {
- exportContext.close();
- }
- ServiceDbResource.assertFileContent("MarineLitter export:\n",
- exportContext.marineLitterFile,
- MARINE_LITTER_CONTENT);
- }
-
- @Test
- public void exportIndividualObservations() throws Exception {
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- service.exportIndividualObservations(exportContext, dataContext.cruise, dataContext.operations);
- } finally {
- exportContext.close();
- }
- ServiceDbResource.assertFileContent("individualObservation export:\n",
- exportContext.individualObservationFile,
- INDIVIDUAL_OBSERVATION_CONTENT);
- }
-
- @Test
- public void exportAccidentalCatch() throws Exception {
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- service.exportAccidentalCatch(exportContext, dataContext.cruise, dataContext.operations);
- } finally {
- exportContext.close();
- }
- ServiceDbResource.assertFileContent("accidentalCatch export:\n",
- exportContext.accidentalCatchFile,
- ACCIDENTAL_CATCH_CONTENT);
- }
-
- @Test
- public void exportSpecies() throws Exception {
-
- TuttiExportService.ExportContext exportContext =
- service.createExportContext(dataDirectory);
-
- try {
- List<Species> allReferentSpecies =
- persistenceService.getAllReferentSpecies();
-
- Map<String, Species> allReferentSpeciesById =
- TuttiEntities.splitById(allReferentSpecies);
- exportContext.addSpecies(allReferentSpeciesById.get("35883"));
- exportContext.addSpecies(allReferentSpeciesById.get("35884"));
- exportContext.addSpecies(allReferentSpeciesById.get("19279"));
-
- service.exportSpecies(exportContext,
- exportContext.getSpeciesToExport());
- } finally {
- exportContext.close();
- }
- ServiceDbResource.assertFileContent("species export:\n",
- exportContext.speciesFile,
- SPECIES_CONTENT);
- }
-
-}
Copied: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java (from rev 1361, trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportService2Test.java)
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,265 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.io.Files;
+import fr.ifremer.tutti.TuttiBusinessException;
+import fr.ifremer.tutti.persistence.ProgressionModel;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.ServiceDbResource;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.catches.WeightComputingService;
+import fr.ifremer.tutti.service.export.generic.TuttiExportService;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+
+import java.io.File;
+import java.net.URL;
+import java.util.List;
+
+/**
+ * Test export of catches.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.3.2
+ */
+public class TuttiExportService2Test {
+
+ @ClassRule
+ public static final ServiceDbResource dbResource =
+ ServiceDbResource.readDb("dbExport");
+
+ public static final String PROGRAM_ID = "CAM-TEST_ELEVATION";
+
+ public static final String CRUISE_ID = "100003";
+
+ public static final String OPERATION_1_ID = "100112";
+
+ public static final String OPERATION_2_ID = "100113";
+
+ public static final String OPERATION_3_ID = "100114";
+
+ protected TuttiExportService service;
+
+ protected ServiceDbResource.DataContext dataContext;
+
+ protected File dataDirectory;
+
+ @Before
+ public void setUp() throws Exception {
+
+ dataDirectory = dbResource.getServiceConfig().getDataDirectory();
+
+ dbResource.setCountryInConfig("12");
+
+ dbResource.openDataContext();
+
+ TuttiServiceContext serviceContext = dbResource.getServiceContext();
+
+ service = serviceContext.getService(TuttiExportService.class);
+
+ }
+
+ @Test
+ public void exportWithErrors() throws Exception {
+
+
+ TuttiServiceContext serviceContext = dbResource.getServiceContext();
+
+ PersistenceService persistenceService = serviceContext.getService(PersistenceService.class);
+
+ // check there is a error while compute weight for a cruise
+ boolean errorDetected = false;
+ WeightComputingService computingService = serviceContext.getService(WeightComputingService.class);
+ List<String> allFishingOperation = persistenceService.getAllFishingOperationIds(CRUISE_ID);
+ for (String fishingOperation : allFishingOperation) {
+ try {
+ computingService.getComputedSpeciesBatches(fishingOperation);
+ } catch (Exception e) {
+ errorDetected = true;
+ break;
+ }
+ }
+
+ Assert.assertTrue(errorDetected);
+
+ File exportFile = new File(dataDirectory, "exportCruise.zip");
+
+ Files.createParentDirs(exportFile);
+
+ Assert.assertFalse(exportFile.exists());
+
+ ProgressionModel progressionModel = new ProgressionModel();
+ progressionModel.setTotal(9);
+ try {
+ service.exportCruise(CRUISE_ID, exportFile, progressionModel);
+ // got an error after but export was still performed
+ Assert.fail();
+ } catch (TuttiBusinessException e) {
+ // got an error
+ Assert.assertTrue(true);
+ }
+ // export perform, file exist
+ Assert.assertTrue(exportFile.exists());
+
+ String urlPrefix = "jar:" + exportFile.toURI().toURL() + "!/exportCruise-" + CRUISE_ID + "/";
+ {
+ // check species file content
+
+ URL url = new URL(urlPrefix + "species.csv");
+ ServiceDbResource.assertFileContent("species export:\n",
+ url,
+ "Id;Code_Rubin;Nom Scientifique;Code campagne\n" +
+ "380;ACANECH;Acanthocardia echinata;;\n" +
+ "1358;ALOSALO;Alosa alosa;;\n" +
+ "1938;AGONCAT;Agonus cataphractus;;\n" +
+ "4622;ABIEABI;Abietinaria abietina;;\n" +
+ "11183;;Brissopsis atlantica;;");
+
+ }
+
+ {
+ // check accidentalCatch file content
+
+ URL url = new URL(urlPrefix + "accidentalCatch.csv");
+ ServiceDbResource.assertFileContent("accidentalCatch export:\n",
+ url,
+ "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue");
+
+ }
+
+ {
+ // check operation file content
+
+ URL url = new URL(urlPrefix + "operation.csv");
+ ServiceDbResource.assertFileContent("operation export:\n",
+ url,
+ "Annee;Serie;Serie_Partielle;Code_Station;Numero_Trait;Poche;Engin;Navire;DateDeb_Op;LatDeb;LongDeb;DateFin_Op;LatFin;LongFin;Duree;Strate;Sous-Strate;Localite;Validite_OP;Rectiligne;Distance;Ouv_Verticale;Ouv_Horizontale_Ailes;Ouv_Horizontale_Panneaux;Saisisseur;NavireAssocie;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total_Carroussel_Calcule;Poids_Total_Espece;Poids_Total_Espece_Calcule;Poids_Total_Espece_Vrac;Poids_Total_Espece_Vrac_Calcule;Poids_Total_Espece_Vrac_Trie;Poids_Total_Espece_Vrac_Trie_Calcule;Poids_Total_Espece_HorsVrac;Poids_Total_Espece_HorsVrac_Calcule;Poids_Total_Espece_Inerte_Trie;Poids_Total_Espece_Inerte_Trie_Calcule;Poids_Total_Espece_Vivant_non_detaille_trie;Poids_Total_Espece_Vivant_non_detaille_trie_Calcule;Poids_Total_Benthos;Poids_Total_Benthos_Calcule;Poids_Total_Benthos_Vrac;Poids_Total_Benthos_Vrac_Calcule;Poids_Total_Benthos_Vrac_Trie;Poids_Total_Benthos_Vrac_Trie_Calcule;Poids_Total_Benthos_HorsVrac;Poids_Total_Benthos_HorsVrac_Calcule;Poids_Total_Benthos_Inerte_Trie;Poids_Total_Benthos_Inerte_Trie_Calcule;Poids_Total_Benthos_Vivant_non_detaille_trie;Poids_Total_Benthos_Vivant_non_detaille_trie_Calcule;Poids_Total_Macro_Dechet;Poids_Total_Macro_Dechet_Calcule\n" +
+ "2013;test elevation;1;B;2;1;OTB 20/28.10;278970;01/07/2013 00:00:00;;;01/07/2013 00:00:00;;;00;NA;NA;NA;?;N;;NA;NA;NA;;;\"Commentaire sur le trait B-2-1\n" +
+ "\n" +
+ "avec\n" +
+ "saut\n" +
+ "de \n" +
+ "ligne\";1000.0;Y;280.0;Y;20.0;Y;700.0;N;;?;;?;200.0;Y;180.0;Y;180.0;Y;20.0;Y;0.0;Y;0.0;Y;100.0;Y;100.0;N;50.0;Y;0.0;Y;2.0;N;0.0;Y;100.0;N;\n" +
+ "2013;test elevation;1;A;1;1;OTB 20/28.10;278970;01/07/2013 00:00:00;;;01/07/2013 00:00:00;;;00;NA;NA;NA;?;N;;NA;NA;NA;;;\"commentaire trait A-1-1\n" +
+ "Avec \n" +
+ "saut\n" +
+ "de\n" +
+ "ligne\n" +
+ "...\";1000.0;Y;180.0;Y;20.0;Y;800.0;N;;?;;?;200.0;Y;180.0;Y;180.0;Y;20.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;\n" +
+ "2013;test elevation;1;C;3;1;;278970;25/09/2013 00:00:00;;;25/09/2013 00:00:00;;;00;NA;NA;NA;?;N;;NA;NA;NA;;;;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;");
+
+ }
+
+ {
+ // check survey file content
+
+ URL url = new URL(urlPrefix + "survey.csv");
+ ServiceDbResource.assertFileContent("survey export:\n",
+ url,
+ "Annee;Serie;Serie_Partielle;Navire;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire\n" +
+ "2013;test elevation;1;278970;FRA;CGFS - Manche Est / Sud Mer du Nord;test elevation_2013_1;;01/07/2013 00:00:00;La Barbotière (Gujan-Mestras);04/07/2013 00:00:00;La Barbotière (Gujan-Mestras);Adrian LEVREL;Alain BISEAU;;");
+
+ }
+
+ {
+ // check individualObservation file content
+
+ URL url = new URL(urlPrefix + "individualObservation.csv");
+ ServiceDbResource.assertFileContent("individualObservation export:\n",
+ url,
+ "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue");
+
+ }
+
+ {
+ // check catch file content
+
+ URL url = new URL("jar:" + exportFile.toURI().toURL() + "!/exportCruise-" + CRUISE_ID + "/catch.csv");
+ ServiceDbResource.assertFileContent("Catch export:\n",
+ url,
+ "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;Taxon;Nom_scientifique;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri_;Num_Ordre_Class_Tri__H2;Tot_Class_Tri_;Ech_Class_Tri_;Type_Volume_Poids_Class_Tri_;Unite_Volume_Poids_Class_Tri_;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturité;Num_Ordre_Maturité_H2;Tot_Maturité;Ech_Maturité;Type_Volume_Poids_Maturité;Unite_Volume_Poids_Maturité;Age;Num_Ordre_Age_H2;Tot_Age;Ech_Age;Type_Volume_Poids_Age;Unite_Volume_Poids_Age;Code_Longueur;Libelle_Longueur;Taille;NumOrdre_Taille_H2;Poids_Classe_Taille;Unite_Taille;Precision_Mesure;Nbr;Poids_Reference;Coef_Elev_Espece_Capture\n" +
+ "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;1938;Agonus cataphractus;Trait B-2-1 AGONCAT-vrac 80;Vrac;1;80.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;80.0;3.5;\n" +
+ "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;1358;Alosa alosa;Trait B-2-1 ALOSALO Vrac|Trait B-2-1 ALOSALO Vrac - Male 60;Vrac;2;;;Poids;kg;NA;;;;;kg;Mâle;1;60.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;60.0;5.8333335;\n" +
+ "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;1358;Alosa alosa;Trait B-2-1 ALOSALO Vrac|Trait B-2-1 ALOSALO Vrac - Femelle 40.0;Vrac;2;;;Poids;kg;NA;;;;;kg;Femelle;2;40.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;40.0;8.75;\n" +
+ "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;1938;Agonus cataphractus;Trait B-2-1 AGONCAT-horsvrac 20;Hors Vrac;1;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;20.0;1.0;\n" +
+ "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;4622;Abietinaria abietina;\"Trait B-2-1 Benthos ABIEABI Vrac 30\n" +
+ "\n" +
+ "avec \n" +
+ "\n" +
+ "commentaire...\";Vrac;1;30.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;30.0;7.0;\n" +
+ "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;380;Acanthocardia echinata;\"Trait B-2-1 Benthos ACANECH Vrac 18\n" +
+ "\n" +
+ "avec \n" +
+ "\n" +
+ "commentaire...\";Vrac;2;18.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;18.0;7.0;\n" +
+ "2013;test elevation;1;OTB 20/28.10;A;1;1;278970;1938;Agonus cataphractus;AGONCAT-vrac-80;Vrac;1;80.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;80.0;5.4444447;\n" +
+ "2013;test elevation;1;OTB 20/28.10;A;1;1;278970;1358;Alosa alosa;ALOSALO-vrac|ALOSALO-vrac-male 60;Vrac;2;;;Poids;kg;NA;;;;;kg;Mâle;1;60.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;60.0;9.074075;\n" +
+ "2013;test elevation;1;OTB 20/28.10;A;1;1;278970;1358;Alosa alosa;ALOSALO-vrac|ALOSALO-vrac-femelle 40;Vrac;2;;;Poids;kg;NA;;;;;kg;Femelle;2;40.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;5.0;1;0.6;cm;1.0;4;0.6;907.4074;\n" +
+ "2013;test elevation;1;OTB 20/28.10;A;1;1;278970;1358;Alosa alosa;ALOSALO-vrac|ALOSALO-vrac-femelle 40;Vrac;2;;;Poids;kg;NA;;;;;kg;Femelle;2;40.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;6.0;2;0.4;cm;1.0;10;0.4;1361.1111;\n" +
+ "2013;test elevation;1;OTB 20/28.10;A;1;1;278970;1938;Agonus cataphractus;AGONCAT-horsvrac-20;Hors Vrac;1;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;20.0;1.0;\n" +
+ "2013;test elevation;1;;C;3;1;278970;11183;Brissopsis atlantica;|;Vrac;1;;;Poids;kg;NA;;;;;kg;UNK - Indéterminé;1;30.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;30.0;0.0;\n" +
+ "2013;test elevation;1;;C;3;1;278970;11183;Brissopsis atlantica;|;Vrac;1;;;Poids;kg;NA;;;;;kg;Mâle;2;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;20.0;0.0;\n" +
+ "2013;test elevation;1;;C;3;1;278970;11183;Brissopsis atlantica;|;Vrac;1;;;Poids;kg;NA;;;;;kg;Femelle;3;;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;;1.0;");
+
+ }
+
+ {
+ // check gearCaracteristics file content
+
+ URL url = new URL(urlPrefix + "gearCaracteristics.csv");
+ ServiceDbResource.assertFileContent("gearCaracteristics export:\n",
+ url,
+ "Annee;Serie;Serie_Partielle;Engin;Code_PMFM;Libelle_PMFM;Valeur");
+
+ }
+
+ {
+ // check marineLitter file content
+
+ URL url = new URL(urlPrefix + "marineLitter.csv");
+ ServiceDbResource.assertFileContent("marineLitter export:\n",
+ url,
+ "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;MarineLitterCategory;MarineLitterSizeCategory;Number;Weight;Commentaire\n" +
+ "2013;test elevation;1;OTB 20/28.10;B;2;1;278970;L1 PLASTIQUE;A: <5*5 cm= 25 cm2;10;;\"Trait B-2-1 Macro dechet L1 Plastique (nb 10)\n" +
+ "\n" +
+ "avec \n" +
+ "\n" +
+ "commentaire...\";");
+
+ }
+ {
+ // check parameter file content
+
+ URL url = new URL(urlPrefix + "parameter.csv");
+ ServiceDbResource.assertFileContent("parameter export:\n",
+ url,
+ "Annee;Serie;Serie_Partielle;Code_station;Numero_Trait;Poche;Code_PMFM;Libelle_PMFm;Valeur");
+
+ }
+ }
+}
Copied: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceTest.java (from rev 1361, trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java)
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceTest.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceTest.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,506 @@
+package fr.ifremer.tutti.service.export.generic;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Lists;
+import com.google.common.io.Files;
+import fr.ifremer.tutti.persistence.ProgressionModel;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.ServiceDbResource;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.export.generic.TuttiExportService;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class TuttiExportServiceTest {
+
+ @ClassRule
+ public static final ServiceDbResource dbResource =
+ ServiceDbResource.readDb("dbCGFS");
+
+ public static final String PROGRAM_ID = "CAM-CGFS";
+
+ public static final String CRUISE_ID = "100001";
+
+ public static final String CRUISE_CGFS_ID = "100000";
+
+ public static final String OPERATION_1_ID = "100106";
+
+ public static final String OPERATION_2_ID = "100107";
+
+ public static final String SURVEY_CONTENT =
+ "Annee;Serie;Serie_Partielle;Navire;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire\n" +
+ "2013;Campagne CGFS;;278970;FRA;CGFS - Manche Est / Sud Mer du Nord;Campagne CGFS_2013;;01/05/2013 00:00:00;La Barbotière (Gujan-Mestras);31/05/2013 00:00:00;Etang de Palo;Vincent AURECHE;Alain TETARD;;";
+
+ public static final String GEAR_CARACTERISTICS_CONTENT =
+ "Annee;Serie;Serie_Partielle;Engin;Code_PMFM;Libelle_PMFM;Valeur\n" +
+ "2013;Campagne CGFS;;ScientificGear;289;Armature (drague) - engin - totale - Déclaration d'un professionnel;Lame;\n" +
+ "2013;Campagne CGFS;;ScientificGear;121;Diamètre du goulot (Casier) - engin - goulotte - Déclaration d'un professionnel;120.0;\n" +
+ "2013;Campagne CGFS;;ScientificGear;927;Maillage étiré de l'engin - engin - Maille des ailes - Inconnue;15.0;\n" +
+ "2013;Campagne CGFS;;ScientificGear;287;Volet dépresseur (drague) - engin - totale - Déclaration d'un professionnel;Oui;";
+
+ public static final String OPERATION_WITH_NO_CATCH_CONTENT =
+ "Annee;Serie;Serie_Partielle;Code_Station;Numero_Trait;Poche;Engin;Navire;DateDeb_Op;LatDeb;LongDeb;DateFin_Op;LatFin;LongFin;Duree;Strate;Sous-Strate;Localite;Validite_OP;Rectiligne;Distance;Ouv_Verticale;Ouv_Horizontale_Ailes;Ouv_Horizontale_Panneaux;Saisisseur;NavireAssocie;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total_Carroussel_Calcule;Poids_Total_Espece;Poids_Total_Espece_Calcule;Poids_Total_Espece_Vrac;Poids_Total_Espece_Vrac_Calcule;Poids_Total_Espece_Vrac_Trie;Poids_Total_Espece_Vrac_Trie_Calcule;Poids_Total_Espece_HorsVrac;Poids_Total_Espece_HorsVrac_Calcule;Poids_Total_Espece_Inerte_Trie;Poids_Total_Espece_Inerte_Trie_Calcule;Poids_Total_Espece_Vivant_non_detaille_trie;Poids_Total_Espece_Vivant_non_detaille_trie_Calcule;Poids_Total_Benthos;Poids_Total_Benthos_Calcule;Poids_Total_Benthos_Vrac;Poids_Total_Benthos_Vrac_Calcule;Poids_Total_Benthos_Vrac_Trie;Poids_Total_Benthos_Vrac_Trie_Calcule;Poids_Total_Benthos_HorsVrac;Poids_Total_Benthos_HorsVrac_Calcule;Poids_Total_Benthos_Inerte_Trie;Poids_Total_Benthos_Inerte_Trie_Calcule;Poids_Total_Benthos_Vivant_non_detaille_trie;Poids_Total_Benthos_Vivant_non_detaille_trie_Calcule;Poids_Total_Macro_Dechet;Poids_Total_Macro_Dechet_Calcule\n" +
+ "2010;Campagne CGFS;;65;65;1;GOV 19.7/25.9;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512.0;NA;NA;NA;;;avarie - chalut annulé completement à poil;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;";
+
+ public static final String OPERATION_WITH_NO_CATCH_CONTENT_AND_NO_GEAR =
+ "Annee;Serie;Serie_Partielle;Code_Station;Numero_Trait;Poche;Engin;Navire;DateDeb_Op;LatDeb;LongDeb;DateFin_Op;LatFin;LongFin;Duree;Strate;Sous-Strate;Localite;Validite_OP;Rectiligne;Distance;Ouv_Verticale;Ouv_Horizontale_Ailes;Ouv_Horizontale_Panneaux;Saisisseur;NavireAssocie;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total_Carroussel_Calcule;Poids_Total_Espece;Poids_Total_Espece_Calcule;Poids_Total_Espece_Vrac;Poids_Total_Espece_Vrac_Calcule;Poids_Total_Espece_Vrac_Trie;Poids_Total_Espece_Vrac_Trie_Calcule;Poids_Total_Espece_HorsVrac;Poids_Total_Espece_HorsVrac_Calcule;Poids_Total_Espece_Inerte_Trie;Poids_Total_Espece_Inerte_Trie_Calcule;Poids_Total_Espece_Vivant_non_detaille_trie;Poids_Total_Espece_Vivant_non_detaille_trie_Calcule;Poids_Total_Benthos;Poids_Total_Benthos_Calcule;Poids_Total_Benthos_Vrac;Poids_Total_Benthos_Vrac_Calcule;Poids_Total_Benthos_Vrac_Trie;Poids_Total_Benthos_Vrac_Trie_Calcule;Poids_Total_Benthos_HorsVrac;Poids_Total_Benthos_HorsVrac_Calcule;Poids_Total_Benthos_Inerte_Trie;Poids_Total_Benthos_Inerte_Trie_Calcule;Poids_Total_Benthos_Vivant_non_detaille_trie;Poids_Total_Benthos_Vivant_non_detaille_trie_Calcule;Poids_Total_Macro_Dechet;Poids_Total_Macro_Dechet_Calcule\n" +
+ "2010;Campagne CGFS;;65;65;1;;278970;13/10/2010 13:35:00;50.22833;0.31833;13/10/2010 14:05:00;50.22167;0.28333;30;Strate 4J;NA;Localité 4J2;N;Y;2512.0;NA;NA;NA;;;avarie - chalut annulé completement à poil;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;;?;";
+
+ public static final String OPERATION_CONTENT =
+ "Annee;Serie;Serie_Partielle;Code_Station;Numero_Trait;Poche;Engin;Navire;DateDeb_Op;LatDeb;LongDeb;DateFin_Op;LatFin;LongFin;Duree;Strate;Sous-Strate;Localite;Validite_OP;Rectiligne;Distance;Ouv_Verticale;Ouv_Horizontale_Ailes;Ouv_Horizontale_Panneaux;Saisisseur;NavireAssocie;Commentaire;Poids_Total;Poids_Total_Calcule;Poids_Total_Vrac;Poids_Total_Vrac_Calcule;Poids_Total_HorsVrac;Poids_Total_HorsVrac_Calcule;Poids_Total_Non_Trie;Poids_Total_Non_Trie_Calcule;Poids_Total_Tremis;Poids_Total_Tremis_Calcule;Poids_Total_Carroussel;Poids_Total_Carroussel_Calcule;Poids_Total_Espece;Poids_Total_Espece_Calcule;Poids_Total_Espece_Vrac;Poids_Total_Espece_Vrac_Calcule;Poids_Total_Espece_Vrac_Trie;Poids_Total_Espece_Vrac_Trie_Calcule;Poids_Total_Espece_HorsVrac;Poids_Total_Espece_HorsVrac_Calcule;Poids_Total_Espece_Inerte_Trie;Poids_Total_Espece_Inerte_Trie_Calcule;Poids_Total_Espece_Vivant_non_detaille_trie;Poids_Total_Espece_Vivant_non_detaille_trie_Calcule;Poids_Total_Benthos;Poids_Total_Benthos_Calcule;Poids_Total_Benthos_Vrac;Poids_Total_Benthos_Vrac_Calcule;Poids_Total_Benthos_Vrac_Trie;Poids_Total_Benthos_Vrac_Trie_Calcule;Poids_Total_Benthos_HorsVrac;Poids_Total_Benthos_HorsVrac_Calcule;Poids_Total_Benthos_Inerte_Trie;Poids_Total_Benthos_Inerte_Trie_Calcule;Poids_Total_Benthos_Vivant_non_detaille_trie;Poids_Total_Benthos_Vivant_non_detaille_trie_Calcule;Poids_Total_Macro_Dechet;Poids_Total_Macro_Dechet_Calcule\n" +
+ "2013;Campagne CGFS;;A;1;1;GOV 19.7/25.9;278970;01/05/2013 00:00:00;;;01/05/2013 00:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;;NA;NA;NA;Vincent AURECHE;;op1;120.0;Y;100.0;Y;20.0;Y;0.0;Y;;?;;?;120.0;Y;100.0;Y;100.0;Y;20.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;6.0;Y;\n" +
+ "2013;Campagne CGFS;;A;2;1;GOV 19.7/25.9;278970;11/05/2013 08:00:00;;;11/05/2013 08:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;;NA;NA;NA;Robert BELLAIL|Herve BARONE;;OP2;0.0;Y;0.0;Y;0.0;Y;0.0;Y;;?;;?;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;0.0;Y;";
+
+ public static final String PARAMETER_CONTENT =
+ "Annee;Serie;Serie_Partielle;Code_station;Numero_Trait;Poche;Code_PMFM;Libelle_PMFm;Valeur\n" +
+ "2013;Campagne CGFS;;A;1;1;1164;Catégorie UE - produit/lot - totale - Diffusion par une Halle à marée;Cat UE10;\n" +
+ "2013;Campagne CGFS;;A;1;1;1302;(Gross Tonnage) : augmentation de tonnage accordée pour des raisons de sécurité - navire - totale - Déclaration d'un professionnel;10.0;\n" +
+ "2013;Campagne CGFS;;A;1;1;194;\"Etat de la mer - masse d'eau, eau brute - totale - Observation par un observateur\";\"2 - belle, vagues de 0.1 à 0.5 mètres\";\n" +
+ "2013;Campagne CGFS;;A;1;1;821;Direction vent - air - totale - Instrument de bord;0.1;\n" +
+ "2013;Campagne CGFS;;A;1;1;149;Coût de la glace - navire - totale - Déclaration d'un professionnel;10.0;\n" +
+ "2013;Campagne CGFS;;A;2;1;1062;Catégorie de fraicheur - produit/lot - totale - Diffusion par une Halle à marée;A - Catégorie A;\n" +
+ "2013;Campagne CGFS;;A;2;1;308;Nombre d'engin - engin - totale - Déclaration d'un professionnel;2.0;";
+
+ public static final String CATCH_CONTENT =
+ "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;Taxon;Nom_scientifique;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri_;Num_Ordre_Class_Tri__H2;Tot_Class_Tri_;Ech_Class_Tri_;Type_Volume_Poids_Class_Tri_;Unite_Volume_Poids_Class_Tri_;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturité;Num_Ordre_Maturité_H2;Tot_Maturité;Ech_Maturité;Type_Volume_Poids_Maturité;Unite_Volume_Poids_Maturité;Age;Num_Ordre_Age_H2;Tot_Age;Ech_Age;Type_Volume_Poids_Age;Unite_Volume_Poids_Age;Code_Longueur;Libelle_Longueur;Taille;NumOrdre_Taille_H2;Poids_Classe_Taille;Unite_Taille;Precision_Mesure;Nbr;Poids_Reference;Coef_Elev_Espece_Capture\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.0;1;;cm;0.5;5;5.0;20.0;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;2;;cm;0.5;2;5.0;20.0;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;1 - Stade 1;1;10.0;5.0;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;11.0;3;;cm;0.5;1;5.0;20.0;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;|||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Mâle;1;30.0;;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;11.0;1;;cm;0.5;5;10.0;10.0;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;10.0;1;;cm;;5;30.0;3.3333333;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;11.0;2;;cm;;6;30.0;3.3333333;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;||;Vrac;1;100.0;;Poids;kg;G - Gros;1;80.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;1425;Longueur totale (LT) - individu - queue - Mesure au cm par un observateur;12.0;3;;cm;;7;30.0;3.3333333;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;|;Vrac;1;100.0;;Poids;kg;M - Moyen;2;20.0;;Poids;kg;Femelle;2;50.0;30.0;Poids;kg;3 - Stade 3;3;10.0;;Poids;kg;NA;;;;;kg;;;;;;;;;20.0;5.0;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;11242;Aaptos;;Hors Vrac;1;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;2;20.0;1.0;";
+
+ public static final String CATCH_CONTENT_2 =
+ "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;Taxon;Nom_scientifique;Commentaire;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Class_Tri_;Num_Ordre_Class_Tri__H2;Tot_Class_Tri_;Ech_Class_Tri_;Type_Volume_Poids_Class_Tri_;Unite_Volume_Poids_Class_Tri_;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Maturité;Num_Ordre_Maturité_H2;Tot_Maturité;Ech_Maturité;Type_Volume_Poids_Maturité;Unite_Volume_Poids_Maturité;Age;Num_Ordre_Age_H2;Tot_Age;Ech_Age;Type_Volume_Poids_Age;Unite_Volume_Poids_Age;Code_Longueur;Libelle_Longueur;Taille;NumOrdre_Taille_H2;Poids_Classe_Taille;Unite_Taille;Precision_Mesure;Nbr;Poids_Reference;Coef_Elev_Espece_Capture\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;365;Aequipecten opercularis;taxon;Vrac;1;0.005;0.005;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.005;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;491;Alloteuthis;taxon;Vrac;2;0.004;0.004;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.004;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;300;Buccinum undatum;taxon;Vrac;3;0.015;0.015;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.015;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1811;Callionymus lyra;taxon;Vrac;4;0.07;0.07;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;1;0.07;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1644;Dicentrarchus labrax;taxon;Vrac;5;1.06;1.06;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;36.0;1;;cm;1.0;1;1.06;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1644;Dicentrarchus labrax;taxon;Vrac;5;1.06;1.06;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;38.0;2;;cm;1.0;1;1.06;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1362;Engraulis encrasicolus;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;1;;cm;0.5;2;0.038;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1362;Engraulis encrasicolus;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;12.5;2;;cm;0.5;1;0.038;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1362;Engraulis encrasicolus;taxon;Vrac;6;0.038;0.038;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;13.0;3;;cm;0.5;1;0.038;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1986;Limanda limanda;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;25.0;1;;cm;1.0;1;0.66;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1986;Limanda limanda;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;28.0;2;;cm;1.0;1;0.66;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1986;Limanda limanda;taxon;Vrac;7;0.66;0.66;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;30.0;3;;cm;1.0;1;0.66;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;489;Loligo vulgaris;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;9.0;1;;cm;1.0;1;0.28;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;489;Loligo vulgaris;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;10.0;2;;cm;1.0;3;0.28;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;489;Loligo vulgaris;taxon;Vrac;8;0.28;0.28;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;302;Longueur du manteau (LM) - individu - manteau - Mesure au cm par un observateur;11.0;3;;cm;1.0;2;0.28;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1988;Microstomus kitt;taxon;Vrac;9;0.152;0.152;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;15.0;1;;cm;1.0;1;0.152;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1988;Microstomus kitt;taxon;Vrac;9;0.152;0.152;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;18.0;2;;cm;1.0;1;0.152;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1690;Mullus surmuletus;taxon;Vrac;10;0.036;0.036;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;11.0;1;;cm;1.0;1;0.036;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1978;Pleuronectes platessa;taxon;Vrac;11;0.852;0.852;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;26.0;1;;cm;1.0;1;0.852;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1978;Pleuronectes platessa;taxon;Vrac;11;0.852;0.852;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;30.0;2;;cm;1.0;1;0.852;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1351;Sardina pilchardus;taxon;Vrac;12;0.022;0.022;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;307;Longueur totale (LT) - individu - totale - Mesure au 1/2 cm par un observateur;10.5;1;;cm;0.5;1;0.022;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1772;Scomber scombrus;taxon;Vrac;13;0.18;0.18;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;27.0;1;;cm;1.0;1;0.18;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1242;Scyliorhinus canicula;taxon|categorie_individu;Vrac;14;;;Poids;kg;NA;;;;;kg;Femelle;1;1.0;1.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;51.0;1;;cm;1.0;1;1.0;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1242;Scyliorhinus canicula;taxon|categorie_individu;Vrac;14;;;Poids;kg;NA;;;;;kg;Femelle;1;1.0;1.0;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;55.0;2;;cm;1.0;1;1.0;1.0;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1662;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;131.12;0.96;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;8.0;1;;cm;1.0;1;0.96;136.71875;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1662;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;131.12;0.96;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;9.0;2;;cm;1.0;20;0.96;136.71875;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1662;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;131.12;0.96;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;10.0;3;;cm;1.0;89;0.96;136.71875;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1662;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;P - Petit;1;131.12;0.96;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;11.0;4;;cm;1.0;5;0.96;136.71875;\n" +
+ "2010;Campagne CGFS;;GOV 19.7/25.9;20;20;1;278970;1662;Trachurus trachurus;taxon|categorie_individu;Vrac;15;;;Poids;kg;G - Gros;2;0.13;0.13;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;23.0;1;;cm;1.0;1;0.13;1009.6154;";
+
+ public static final String MARINE_LITTER_CONTENT =
+ "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;MarineLitterCategory;MarineLitterSizeCategory;Number;Weight;Commentaire\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;L1 PLASTIQUE;A: <5*5 cm= 25 cm2;2;5.0;S1;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;L1a Sacs;B: <10*10 cm= 100 cm2;3;1.0;S2;";
+
+ public static final String INDIVIDUAL_OBSERVATION_CONTENT =
+ "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;220;0.1;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;1433;307;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;307;10.0;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;1436;10;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;1435;A20;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;101;10.0;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;46;0L - 0 VMS - 1 LB;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100000;11242;Aaptos;P1;1388;5.0;";
+
+ public static final String ACCIDENTAL_CATCH_CONTENT =
+ "Annee;Serie;Serie_Partielle;Engin;Code_station;Numero_Trait;Poche;Navire;BatchId;ReferenceTaxonId;ReferenceTaxonName;Commentaire;CaracteristicId;CaracteristicValue\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100001;3835;Abalistes;;1393;Rejet mort;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100001;3835;Abalistes;;196;Femelle;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100001;3835;Abalistes;;220;10.0;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100001;3835;Abalistes;;1433;1425;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;A;1;1;278970;100001;3835;Abalistes;;1425;4.0;";
+
+ public static final String SPECIES_CONTENT =
+ "Id;Code_Rubin;Nom Scientifique;Code campagne\n" +
+ "3835;ABAL;Abalistes;;\n" +
+ "11242;AAPT;Aaptos;;\n" +
+ "11243;AAPTAAP;Aaptos aaptos;;";
+
+ public static final String SPECIES_CONTENT_2 =
+ "Id;Code_Rubin;Nom Scientifique;Code campagne\n" +
+ "300;BUCCUND;Buccinum undatum;;\n" +
+ "365;AEQUOPE;Aequipecten opercularis;;\n" +
+ "489;LOLIVUL;Loligo vulgaris;LOLIVUL;\n" +
+ "491;ALLO;Alloteuthis;ALLOSPP;\n" +
+ "1242;SCYOCAN;Scyliorhinus canicula;SCYOCAN;\n" +
+ "1351;SARDPIL;Sardina pilchardus;SARDPIL;\n" +
+ "1362;ENGRENC;Engraulis encrasicolus;ENGRENC;\n" +
+ "1644;DICELAB;Dicentrarchus labrax;DICELAB;\n" +
+ "1662;TRACTRA;Trachurus trachurus;TRACTRA;\n" +
+ "1690;MULLSUR;Mullus surmuletus;MULLSUR;\n" +
+ "1772;SCOMSCO;Scomber scombrus;SCOMSCO;\n" +
+ "1811;CALMLYR;Callionymus lyra;CALMLYR;\n" +
+ "1978;PLEUPLA;Pleuronectes platessa;;\n" +
+ "1986;LIMDLIM;Limanda limanda;;\n" +
+ "1988;MICTKIT;Microstomus kitt;;";
+
+ public static final int NB_EXPECTED_CGFS_OPERATIONS = 106;
+
+ protected TuttiExportService service;
+
+ protected PersistenceService persistenceService;
+
+ protected ServiceDbResource.DataContext dataContext;
+
+ protected ProgressionModel progressionModel;
+
+ protected File dataDirectory;
+
+ @Before
+ public void setUp() throws Exception {
+
+ dataDirectory = dbResource.getServiceConfig().getDataDirectory();
+
+ TuttiServiceContext serviceContext = dbResource.getServiceContext();
+
+ persistenceService = serviceContext.getService(PersistenceService.class);
+
+ dbResource.setCountryInConfig("12");
+ dbResource.openDataContext();
+
+ service = serviceContext.getService(TuttiExportService.class);
+
+ dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 2, OPERATION_1_ID, OPERATION_2_ID);
+
+ progressionModel = new ProgressionModel();
+ progressionModel.setTotal(9);
+ }
+
+ @Ignore
+ @Test
+ public void exportProgram() throws Exception {
+
+ File exportFile = new File(dataDirectory, "exportProgram.zip");
+
+ Files.createParentDirs(exportFile);
+
+ Assert.assertFalse(exportFile.exists());
+
+ service.exportProgram(dataContext.program.getId(), exportFile, progressionModel);
+ Assert.assertTrue(exportFile.exists());
+ }
+
+ @Test
+ public void exportCruise() throws Exception {
+
+ File exportFile = new File(dataDirectory, "exportCruise.zip");
+
+ Files.createParentDirs(exportFile);
+
+ Assert.assertFalse(exportFile.exists());
+
+ service.exportCruise(dataContext.cruise.getId(), exportFile, progressionModel);
+ Assert.assertTrue(exportFile.exists());
+ }
+
+ @Test
+ public void exportSurvey() throws Exception {
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ service.exportSurvey(exportContext, dataContext.cruise);
+ } finally {
+ exportContext.close();
+ }
+ ServiceDbResource.assertFileContent("Survey export:\n",
+ exportContext.surveyFile,
+ SURVEY_CONTENT);
+ }
+
+ @Test
+ public void exportGearCaracteristics() throws Exception {
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ service.exportGearCaracteristics(exportContext, dataContext.cruise);
+ } finally {
+ exportContext.close();
+ }
+ ServiceDbResource.assertFileContent("Gear caracteristics export:\n",
+ exportContext.gearCaracteristicsFile,
+ GEAR_CARACTERISTICS_CONTENT);
+ }
+
+ @Test
+ public void exportOperations() throws Exception {
+
+// loadData(PROGRAM_ID, CRUISE_CGFS_ID);
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ service.exportOperations(exportContext, dataContext.cruise, dataContext.operations);
+ } finally {
+ exportContext.close();
+ }
+ ServiceDbResource.assertFileContent("Operation export:\n",
+ exportContext.operationFile,
+ OPERATION_CONTENT);
+ }
+
+ @Test
+ public void exportOperationsWithNoCatches() throws Exception {
+
+ dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_CGFS_ID, NB_EXPECTED_CGFS_OPERATIONS);
+
+ FishingOperation operation = TuttiEntities.findById(dataContext.operations, "100105");
+ dataContext.operations = Lists.newArrayList(operation);
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ service.exportOperations(exportContext, dataContext.cruise, dataContext.operations);
+ } finally {
+ exportContext.close();
+ }
+
+ ServiceDbResource.assertFileContent("Operation export:\n",
+ exportContext.operationFile,
+ OPERATION_WITH_NO_CATCH_CONTENT);
+ }
+
+ @Test
+ public void exportOperationsWithNoGear() throws Exception {
+
+ dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_CGFS_ID, NB_EXPECTED_CGFS_OPERATIONS);
+
+ FishingOperation operation = TuttiEntities.findById(dataContext.operations, "100105");
+ operation.setGear(null);
+ dataContext.operations = Lists.newArrayList(operation);
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ service.exportOperations(exportContext, dataContext.cruise, dataContext.operations);
+ } finally {
+ exportContext.close();
+ }
+
+ ServiceDbResource.assertFileContent("Operation export:\n",
+ exportContext.operationFile,
+ OPERATION_WITH_NO_CATCH_CONTENT_AND_NO_GEAR);
+ }
+
+ @Test
+ public void exportParameters() throws Exception {
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ service.exportParameters(exportContext, dataContext.cruise, dataContext.operations);
+ } finally {
+ exportContext.close();
+ }
+ ServiceDbResource.assertFileContent("Parameter export:\n",
+ exportContext.parameterFile,
+ PARAMETER_CONTENT);
+ }
+
+ @Test
+ public void exportCatches() throws Exception {
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ service.exportCatches(exportContext, dataContext.cruise, dataContext.operations);
+ } finally {
+ exportContext.close();
+ }
+ ServiceDbResource.assertFileContent("Catch export:\n",
+ exportContext.catchFile,
+ CATCH_CONTENT);
+ }
+
+ // To fix http://forge.codelutin.com/issues/2692
+ @Test
+ public void exportCatchesAndSpecies() throws Exception {
+
+ File protocolFile = new File("src/test/resources/tuttiProtocol.tuttiProtocol");
+
+ TuttiProtocol protocol = dbResource.loadProtocol(protocolFile);
+
+ persistenceService.setProtocol(protocol);
+
+ dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_CGFS_ID, NB_EXPECTED_CGFS_OPERATIONS);
+
+ FishingOperation operation = TuttiEntities.findById(dataContext.operations, "100000");
+ dataContext.operations = Lists.newArrayList(operation);
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ service.exportCatches(exportContext, dataContext.cruise, dataContext.operations);
+ service.exportSpecies(exportContext, exportContext.getSpeciesToExport());
+ } finally {
+ exportContext.close();
+ }
+
+ ServiceDbResource.assertFileContent("species export:\n",
+ exportContext.speciesFile,
+ SPECIES_CONTENT_2);
+
+ ServiceDbResource.assertFileContent("Catch export:\n",
+ exportContext.catchFile,
+ CATCH_CONTENT_2);
+
+
+ }
+
+ // To fix http://forge.codelutin.com/issues/2523
+ @Test
+ public void exportBadCatches() throws Exception {
+
+ dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_CGFS_ID, NB_EXPECTED_CGFS_OPERATIONS);
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ service.exportCatches(exportContext, dataContext.cruise, dataContext.operations);
+ } finally {
+ exportContext.close();
+ }
+ }
+
+ @Test
+ public void exportMarineLitters() throws Exception {
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ service.exportMarineLitters(exportContext, dataContext.cruise, dataContext.operations);
+ } finally {
+ exportContext.close();
+ }
+ ServiceDbResource.assertFileContent("MarineLitter export:\n",
+ exportContext.marineLitterFile,
+ MARINE_LITTER_CONTENT);
+ }
+
+ @Test
+ public void exportIndividualObservations() throws Exception {
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ service.exportIndividualObservations(exportContext, dataContext.cruise, dataContext.operations);
+ } finally {
+ exportContext.close();
+ }
+ ServiceDbResource.assertFileContent("individualObservation export:\n",
+ exportContext.individualObservationFile,
+ INDIVIDUAL_OBSERVATION_CONTENT);
+ }
+
+ @Test
+ public void exportAccidentalCatch() throws Exception {
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ service.exportAccidentalCatch(exportContext, dataContext.cruise, dataContext.operations);
+ } finally {
+ exportContext.close();
+ }
+ ServiceDbResource.assertFileContent("accidentalCatch export:\n",
+ exportContext.accidentalCatchFile,
+ ACCIDENTAL_CATCH_CONTENT);
+ }
+
+ @Test
+ public void exportSpecies() throws Exception {
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
+
+ try {
+ List<Species> allReferentSpecies =
+ persistenceService.getAllReferentSpecies();
+
+ Map<String, Species> allReferentSpeciesById =
+ TuttiEntities.splitById(allReferentSpecies);
+ exportContext.addSpecies(allReferentSpeciesById.get("35883"));
+ exportContext.addSpecies(allReferentSpeciesById.get("35884"));
+ exportContext.addSpecies(allReferentSpeciesById.get("19279"));
+
+ service.exportSpecies(exportContext,
+ exportContext.getSpeciesToExport());
+ } finally {
+ exportContext.close();
+ }
+ ServiceDbResource.assertFileContent("species export:\n",
+ exportContext.speciesFile,
+ SPECIES_CONTENT);
+ }
+
+}
Copied: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/pdf/CatchesPdfExportServiceTest.java (from rev 1366, trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/ExportCatchesReportServiceTest.java)
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/pdf/CatchesPdfExportServiceTest.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/pdf/CatchesPdfExportServiceTest.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,70 @@
+package fr.ifremer.tutti.service.export.pdf;
+
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.ServiceDbResource;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.Locale;
+
+/**
+ * Created on 11/19/13.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.10
+ */
+public class CatchesPdfExportServiceTest {
+
+ @ClassRule
+ public static final ServiceDbResource dbResource =
+ ServiceDbResource.readDb("dbMedits");
+
+ public static final String PROGRAM_ID = "CAM-MEDITS";
+
+ public static final String CRUISE_ID = "100001";
+
+ public static final String OPERATION_1_ID = "100106";
+
+ protected CatchesPdfExportService exportService;
+
+ protected PersistenceService persistenceService;
+
+ protected File dataDirectory;
+
+ @Before
+ public void setUp() throws Exception {
+
+ dataDirectory = dbResource.getServiceConfig().getDataDirectory();
+
+ TuttiServiceContext serviceContext = dbResource.getServiceContext();
+
+ persistenceService = serviceContext.getService(PersistenceService.class);
+
+ serviceContext.getDataContext().open(serviceContext.getConfig(), persistenceService);
+ exportService = serviceContext.getService(CatchesPdfExportService.class);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+
+ }
+
+ @Test
+ public void generateFishingOperationPDFFile() throws Exception {
+
+ File exportFile = new File(dataDirectory, "exportOperation.pdf");
+
+ Assert.assertFalse(exportFile.exists());
+
+ exportService.generateFishingOperationPDFFile(exportFile,
+ OPERATION_1_ID,
+ Locale.FRENCH);
+
+ Assert.assertTrue(exportFile.exists());
+ }
+}
Copied: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportServiceTest.java (from rev 1361, trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/sumatra/CatchesSumatraExportServiceTest.java)
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportServiceTest.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportServiceTest.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -0,0 +1,112 @@
+package fr.ifremer.tutti.service.export.sumatra;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.service.ServiceDbResource;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.catches.TuttiWeightComputingException;
+import fr.ifremer.tutti.service.export.sumatra.CatchesSumatraExportService;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+
+import java.io.File;
+
+/**
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.4
+ */
+public class CatchesSumatraExportServiceTest {
+
+ @ClassRule
+ public static final ServiceDbResource dbResource =
+ ServiceDbResource.readDb("dbExport");
+
+ public static final String PROGRAM_ID = "CAM-TEST_ELEVATION";
+
+ public static final String CRUISE_BAD_ID = "100003";
+
+ public static final String CRUISE_ID = "100004";
+
+ public static final String OPERATION_1_ID = "100116";
+
+ public static final String OPERATION_BAD_1_ID = "100112";
+
+ public static final String OPERATION_BAD_2_ID = "100113";
+
+ public static final String OPERATION_BAD_3_ID = "100115";
+
+ public static final String EXPORT_CONTENT =
+ "Station;Espèce;Total;NbIndividus\n" +
+ "A;Chama magna;100.0;40;\n" +
+ "A;Echinogammarus;100.0;417;\n" +
+ "A;Brissopsis atlantica;100.0;94;";
+
+ protected CatchesSumatraExportService service;
+
+ protected ServiceDbResource.DataContext dataContext;
+
+ protected File dataDirectory;
+
+ @Before
+ public void setUp() throws Exception {
+
+ dataDirectory = dbResource.getServiceConfig().getDataDirectory();
+
+ TuttiServiceContext serviceContext = dbResource.getServiceContext();
+
+ dbResource.openDataContext();
+
+ service = serviceContext.getService(CatchesSumatraExportService.class);
+ }
+
+ @Test(expected = TuttiWeightComputingException.class)
+ public void testExportCruiseForSumatraBadCruise() throws Exception {
+
+ dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_BAD_ID, 3,
+ OPERATION_BAD_2_ID,
+ OPERATION_BAD_1_ID,
+ OPERATION_BAD_3_ID);
+
+ File exportFile = new File(dataDirectory, "exportSumatra.csv");
+
+ service.exportCruiseForSumatra(exportFile, CRUISE_BAD_ID);
+ }
+
+ @Test
+ public void testExportCruiseForSumatra() throws Exception {
+
+ dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 1,
+ OPERATION_1_ID);
+
+ File exportFile = new File(dataDirectory, "exportSumatra.csv");
+
+ service.exportCruiseForSumatra(exportFile, CRUISE_ID);
+
+ ServiceDbResource.assertFileContent("Sumatra export file:\n",
+ exportFile,
+ EXPORT_CONTENT);
+ }
+}
Deleted: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/sumatra/CatchesSumatraExportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/sumatra/CatchesSumatraExportServiceTest.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/sumatra/CatchesSumatraExportServiceTest.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -1,111 +0,0 @@
-package fr.ifremer.tutti.service.sumatra;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.service.ServiceDbResource;
-import fr.ifremer.tutti.service.TuttiServiceContext;
-import fr.ifremer.tutti.service.catches.TuttiWeightComputingException;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-import java.io.File;
-
-/**
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.4
- */
-public class CatchesSumatraExportServiceTest {
-
- @ClassRule
- public static final ServiceDbResource dbResource =
- ServiceDbResource.readDb("dbExport");
-
- public static final String PROGRAM_ID = "CAM-TEST_ELEVATION";
-
- public static final String CRUISE_BAD_ID = "100003";
-
- public static final String CRUISE_ID = "100004";
-
- public static final String OPERATION_1_ID = "100116";
-
- public static final String OPERATION_BAD_1_ID = "100112";
-
- public static final String OPERATION_BAD_2_ID = "100113";
-
- public static final String OPERATION_BAD_3_ID = "100115";
-
- public static final String EXPORT_CONTENT =
- "Station;Espèce;Total;NbIndividus\n" +
- "A;Chama magna;100.0;40;\n" +
- "A;Echinogammarus;100.0;417;\n" +
- "A;Brissopsis atlantica;100.0;94;";
-
- protected CatchesSumatraExportService service;
-
- protected ServiceDbResource.DataContext dataContext;
-
- protected File dataDirectory;
-
- @Before
- public void setUp() throws Exception {
-
- dataDirectory = dbResource.getServiceConfig().getDataDirectory();
-
- TuttiServiceContext serviceContext = dbResource.getServiceContext();
-
- dbResource.openDataContext();
-
- service = serviceContext.getService(CatchesSumatraExportService.class);
- }
-
- @Test(expected = TuttiWeightComputingException.class)
- public void testExportCruiseForSumatraBadCruise() throws Exception {
-
- dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_BAD_ID, 3,
- OPERATION_BAD_2_ID,
- OPERATION_BAD_1_ID,
- OPERATION_BAD_3_ID);
-
- File exportFile = new File(dataDirectory, "exportSumatra.csv");
-
- service.exportCruiseForSumatra(exportFile, CRUISE_BAD_ID);
- }
-
- @Test
- public void testExportCruiseForSumatra() throws Exception {
-
- dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 1,
- OPERATION_1_ID);
-
- File exportFile = new File(dataDirectory, "exportSumatra.csv");
-
- service.exportCruiseForSumatra(exportFile, CRUISE_ID);
-
- ServiceDbResource.assertFileContent("Sumatra export file:\n",
- exportFile,
- EXPORT_CONTENT);
- }
-}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -38,19 +38,19 @@
import fr.ifremer.tutti.service.TuttiDataContext;
import fr.ifremer.tutti.service.TuttiServiceContext;
import fr.ifremer.tutti.service.ValidationService;
-import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
+import fr.ifremer.tutti.service.export.pdf.CatchesPdfExportService;
import fr.ifremer.tutti.service.catches.ValidateCruiseOperationsService;
import fr.ifremer.tutti.service.catches.WeightCleaningService;
import fr.ifremer.tutti.service.catches.WeightComputingService;
import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService;
import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService;
-import fr.ifremer.tutti.service.export.TuttiExportService;
+import fr.ifremer.tutti.service.export.generic.TuttiExportService;
import fr.ifremer.tutti.service.protocol.ProtocolImportExportService;
import fr.ifremer.tutti.service.pupitri.PupitriImportExportService;
import fr.ifremer.tutti.service.referential.ReferentialImportExportService;
import fr.ifremer.tutti.service.referential.TuttiReferentialSynchronizeService;
import fr.ifremer.tutti.service.report.ReportService;
-import fr.ifremer.tutti.service.sumatra.CatchesSumatraExportService;
+import fr.ifremer.tutti.service.export.sumatra.CatchesSumatraExportService;
import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
import fr.ifremer.tutti.ui.swing.content.MainUI;
import fr.ifremer.tutti.ui.swing.util.TuttiErrorHelper;
@@ -563,8 +563,8 @@
return serviceContext.getService(ValidationService.class);
}
- public ExportCatchesReportService getGeneratePDFService() {
- return serviceContext.getService(ExportCatchesReportService.class);
+ public CatchesPdfExportService getGeneratePDFService() {
+ return serviceContext.getService(CatchesPdfExportService.class);
}
public TuttiExportService getTuttiExportService() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseAction.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseAction.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -28,7 +28,7 @@
import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.persistence.ProgressionModel;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.service.export.TuttiExportService;
+import fr.ifremer.tutti.service.export.generic.TuttiExportService;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseForSumatraAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseForSumatraAction.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseForSumatraAction.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -26,7 +26,7 @@
import com.google.common.base.Preconditions;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.service.sumatra.CatchesSumatraExportService;
+import fr.ifremer.tutti.service.export.sumatra.CatchesSumatraExportService;
import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
import org.apache.commons.logging.Log;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProgramAction.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProgramAction.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -29,7 +29,7 @@
import fr.ifremer.tutti.persistence.ProgressionModel;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.service.export.TuttiExportService;
+import fr.ifremer.tutti.service.export.generic.TuttiExportService;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -27,7 +27,7 @@
import com.google.common.base.Preconditions;
import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
+import fr.ifremer.tutti.service.export.pdf.CatchesPdfExportService;
import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
@@ -96,7 +96,7 @@
}
// export catches
- ExportCatchesReportService service =
+ CatchesPdfExportService service =
getContext().getGeneratePDFService();
service.generateCruisePDFFile(file, cruise.getId(), getConfig().getI18nLocale());
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ExportFishingOperationForSumatraAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ExportFishingOperationForSumatraAction.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ExportFishingOperationForSumatraAction.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -27,7 +27,7 @@
import com.google.common.base.Preconditions;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.service.sumatra.CatchesSumatraExportService;
+import fr.ifremer.tutti.service.export.sumatra.CatchesSumatraExportService;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ExportFishingOperationReportAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ExportFishingOperationReportAction.java 2013-11-21 14:30:34 UTC (rev 1369)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ExportFishingOperationReportAction.java 2013-11-21 15:41:34 UTC (rev 1370)
@@ -27,7 +27,7 @@
import com.google.common.base.Preconditions;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
+import fr.ifremer.tutti.service.export.pdf.CatchesPdfExportService;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -96,7 +96,7 @@
}
// export catches
- ExportCatchesReportService service =
+ CatchesPdfExportService service =
getContext().getGeneratePDFService();
service.generateFishingOperationPDFFile(file, fishingOperation.getId(), getConfig().getI18nLocale());
1
0
Author: tchemit
Date: 2013-11-21 15:30:34 +0100 (Thu, 21 Nov 2013)
New Revision: 1369
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1369
Log:
use last version of adagio
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-11-21 09:18:40 UTC (rev 1368)
+++ trunk/pom.xml 2013-11-21 14:30:34 UTC (rev 1369)
@@ -137,7 +137,7 @@
<slf4jVersion>1.7.5</slf4jVersion>
- <adagioVersion>3.4.0-1-SNAPSHOT</adagioVersion>
+ <adagioVersion>3.4.0-1</adagioVersion>
<birtVersion>4.2.1a</birtVersion>
<bluecoveVersion>2.1.0</bluecoveVersion>
1
0
r1368 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db
by tchemit@users.forge.codelutin.com 21 Nov '13
by tchemit@users.forge.codelutin.com 21 Nov '13
21 Nov '13
Author: tchemit
Date: 2013-11-21 10:18:40 +0100 (Thu, 21 Nov 2013)
New Revision: 1368
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1368
Log:
fix #3841: [TECH] Am?\195?\169lioration du d?\195?\169marrage de l'application (redirige vers la home)
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java 2013-11-21 08:52:45 UTC (rev 1367)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java 2013-11-21 09:18:40 UTC (rev 1368)
@@ -32,6 +32,7 @@
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
+import fr.ifremer.tutti.ui.swing.content.SelectCruiseAction;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import org.apache.commons.logging.Log;
@@ -156,7 +157,7 @@
try {
getContext().setDbExist(true);
getContext().setDbLoaded(true);
- getHandler().reloadPersistenceService();
+ handler.reloadPersistenceService();
} catch (Exception e) {
if (log.isErrorEnabled()) {
@@ -164,7 +165,7 @@
}
// no more db
getContext().setDbLoaded(false);
- getHandler().reloadPersistenceService();
+ handler.reloadPersistenceService();
// could not load db
throw new TuttiBusinessException(_("tutti.dbManager.action.importdb.couldNotOpen"), e);
@@ -177,7 +178,7 @@
progressionModel.increments(_("tutti.importDb.step.checkSchemaVersion"));
TuttiPersistence persistenceService =
- getHandler().getPersistenceService();
+ handler.getPersistenceService();
dbVersion = persistenceService.getDbVersion();
@@ -215,7 +216,7 @@
message,
_("tutti.dbManager.action.upgradeDb.schema.to.update.message.help"));
int i = JOptionPane.showConfirmDialog(
- getHandler().getTopestUI(),
+ handler.getTopestUI(),
htmlMessage,
_("tutti.dbManager.title.schema.toupdate"),
JOptionPane.OK_CANCEL_OPTION,
@@ -243,7 +244,7 @@
message,
_("tutti.dbManager.action.upgradeDb.schema.too.high.help"));
int i = JOptionPane.showConfirmDialog(
- getHandler().getTopestUI(),
+ handler.getTopestUI(),
htmlMessage,
_("tutti.dbManager.title.schema.toupdate"),
JOptionPane.OK_CANCEL_OPTION,
@@ -264,7 +265,7 @@
// ------------------------------------------------------------------ //
progressionModel.increments(_("tutti.importDb.step.closeDb"));
- TuttiActionHelper.runInternalAction(getHandler(), CloseDbAction.class);
+ TuttiActionHelper.runInternalAction(handler, CloseDbAction.class);
return;
}
@@ -283,7 +284,7 @@
progressionModel.increments(message);
sendMessage(message);
- getHandler().getPersistenceService().updateSchema();
+ handler.getPersistenceService().updateSchema();
sendMessage(_("tutti.flash.info.db.schema.updated", dbVersion, applicationVersion));
}
@@ -301,6 +302,12 @@
log.debug("Check db context");
}
getContext().checkDbContext();
+
+ // ------------------------------------------------------------------ //
+ // --- change screen //
+ // ------------------------------------------------------------------ //
+
+ TuttiActionHelper.runInternalAction(handler, SelectCruiseAction.class);
}
@Override
1
0
r1367 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches: benthos/frequency species/frequency
by tchemit@users.forge.codelutin.com 21 Nov '13
by tchemit@users.forge.codelutin.com 21 Nov '13
21 Nov '13
Author: tchemit
Date: 2013-11-21 09:52:45 +0100 (Thu, 21 Nov 2013)
New Revision: 1367
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1367
Log:
fixes #3838: [CAPTURE] j'arrive ?\195?\160 enregistrer une classe de taille de valeur 0 avec un nombre non nul d'individus associ?\195?\169s. Ca doit pas ?\195?\170tre possible
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-11-20 13:56:44 UTC (rev 1366)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-11-21 08:52:45 UTC (rev 1367)
@@ -117,7 +117,7 @@
@Override
protected boolean isRowValid(BenthosFrequencyRowModel row) {
return row.getLengthStepCaracteristic() != null &&
- row.getLengthStep() != null &&
+ row.getLengthStep() != null && row.getLengthStep() > 0 &&
((row.getNumber() == null && row.getWeight() == null) ||
(row.getNumber() != null && row.getNumber() > 0 &&
(withWeightRows.isEmpty() || row.getWeight() != null && row.getWeight() > 0)));
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-11-20 13:56:44 UTC (rev 1366)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-11-21 08:52:45 UTC (rev 1367)
@@ -119,7 +119,7 @@
@Override
protected boolean isRowValid(SpeciesFrequencyRowModel row) {
return row.getLengthStepCaracteristic() != null &&
- row.getLengthStep() != null &&
+ row.getLengthStep() != null && row.getLengthStep() > 0 &&
((row.getNumber() == null && row.getWeight() == null) ||
(row.getNumber() != null && row.getNumber() > 0 &&
(withWeightRows.isEmpty() || row.getWeight() != null && row.getWeight() > 0)));
1
0
20 Nov '13
Author: tchemit
Date: 2013-11-20 14:56:44 +0100 (Wed, 20 Nov 2013)
New Revision: 1366
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1366
Log:
refs 3823: [TECH] Temps d'affichage d'un trait trop lent (use snapshot of adagio)
refs #3803: [CAPTURE] ?\195?\169l?\195?\169vations : marche pas en .csv et .pdf depuis l'onglet r?\195?\169sum?\195?\169 (improve pdf export code + add a test on medits
data)
Added:
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/ExportCatchesReportServiceTest.java
trunk/tutti-service/src/test/resources/tutti-test-read-dbMedits.properties
Modified:
trunk/pom.xml
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeBatchWeightsAction.java
trunk/tutti-ui-swing/src/main/profiling/META-INF/aop.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-11-20 08:11:09 UTC (rev 1365)
+++ trunk/pom.xml 2013-11-20 13:56:44 UTC (rev 1366)
@@ -137,9 +137,8 @@
<slf4jVersion>1.7.5</slf4jVersion>
- <adagioVersion>3.4</adagioVersion>
+ <adagioVersion>3.4.0-1-SNAPSHOT</adagioVersion>
<birtVersion>4.2.1a</birtVersion>
- <!--<adagioVersion>3.4.1-SNAPSHOT</adagioVersion>-->
<bluecoveVersion>2.1.0</bluecoveVersion>
@@ -218,7 +217,7 @@
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-profiling</artifactId>
- <version>2.7</version>
+ <version>2.7.1</version>
</dependency>
<dependency>
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-11-20 08:11:09 UTC (rev 1365)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-11-20 13:56:44 UTC (rev 1366)
@@ -38,6 +38,7 @@
import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
@@ -268,10 +269,12 @@
Caracteristic getCaracteristic(Integer pmfmId);
- boolean isVracSpeciesBatch(SpeciesBatch speciesBatch);
+ boolean isVracBatch(SpeciesAbleBatch speciesBatch);
- boolean isVracBenthosBatch(BenthosBatch benthosBatch);
+// boolean isVracSpeciesBatch(SpeciesBatch speciesBatch);
+// boolean isVracBenthosBatch(BenthosBatch benthosBatch);
+
boolean isTemporary(TuttiReferentialEntity entity);
List<Gear> getAllScientificGear();
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-11-20 08:11:09 UTC (rev 1365)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-11-20 13:56:44 UTC (rev 1366)
@@ -46,6 +46,7 @@
import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
@@ -138,9 +139,11 @@
@Autowired
protected DatabaseSchemaDao databaseSchemaDao;
- protected Predicate<SpeciesBatch> speciesBatchVracPredicate;
+ protected Predicate<SpeciesAbleBatch> speciesAbleBatchVracPredicate;
- protected Predicate<BenthosBatch> benthosBatchVracPredicate;
+// protected Predicate<SpeciesBatch> speciesBatchVracPredicate;
+//
+// protected Predicate<BenthosBatch> benthosBatchVracPredicate;
@Override
public String getImplementationName() {
@@ -226,8 +229,9 @@
TuttiEnumerationFile enumerationFile = getEnumerationFile();
- speciesBatchVracPredicate = TuttiEntities.newSpeciesBatchCategoryPredicate(enumerationFile.PMFM_ID_SORTED_UNSORTED, enumerationFile.QUALITATIVE_VRAC_ID);
- benthosBatchVracPredicate = TuttiEntities.newBenthosBatchCategoryPredicate(enumerationFile.PMFM_ID_SORTED_UNSORTED, enumerationFile.QUALITATIVE_VRAC_ID);
+ speciesAbleBatchVracPredicate = TuttiEntities.newSpeciesAbleBatchCategoryPredicate(enumerationFile.PMFM_ID_SORTED_UNSORTED, enumerationFile.QUALITATIVE_VRAC_ID);
+// speciesBatchVracPredicate = TuttiEntities.newSpeciesBatchCategoryPredicate(enumerationFile.PMFM_ID_SORTED_UNSORTED, enumerationFile.QUALITATIVE_VRAC_ID);
+// benthosBatchVracPredicate = TuttiEntities.newBenthosBatchCategoryPredicate(enumerationFile.PMFM_ID_SORTED_UNSORTED, enumerationFile.QUALITATIVE_VRAC_ID);
}
@Override
@@ -416,14 +420,19 @@
}
@Override
- public boolean isVracSpeciesBatch(SpeciesBatch speciesBatch) {
- return speciesBatchVracPredicate.apply(speciesBatch);
+ public boolean isVracBatch(SpeciesAbleBatch speciesBatch) {
+ return speciesAbleBatchVracPredicate.apply(speciesBatch);
}
- @Override
- public boolean isVracBenthosBatch(BenthosBatch benthosBatch) {
- return benthosBatchVracPredicate.apply(benthosBatch);
- }
+// @Override
+// public boolean isVracSpeciesBatch(SpeciesBatch speciesBatch) {
+// return speciesBatchVracPredicate.apply(speciesBatch);
+// }
+//
+// @Override
+// public boolean isVracBenthosBatch(BenthosBatch benthosBatch) {
+// return benthosBatchVracPredicate.apply(benthosBatch);
+// }
@Override
public boolean isTemporary(TuttiReferentialEntity entity) {
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-11-20 08:11:09 UTC (rev 1365)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-11-20 13:56:44 UTC (rev 1366)
@@ -38,6 +38,7 @@
import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
@@ -96,17 +97,17 @@
throw notImplemented();
}
- @Override
- public boolean isVracSpeciesBatch(SpeciesBatch speciesBatch) {
- throw notImplemented();
- }
+// @Override
+// public boolean isVracSpeciesBatch(SpeciesBatch speciesBatch) {
+// throw notImplemented();
+// }
+//
+// @Override
+// public boolean isVracBenthosBatch(BenthosBatch benthosBatch) {
+// throw notImplemented();
+// }
@Override
- public boolean isVracBenthosBatch(BenthosBatch benthosBatch) {
- throw notImplemented();
- }
-
- @Override
public void clearAllCaches() {
throw notImplemented();
}
@@ -257,6 +258,11 @@
}
@Override
+ public boolean isVracBatch(SpeciesAbleBatch speciesBatch) {
+ throw notImplemented();
+ }
+
+ @Override
public boolean isTemporary(TuttiReferentialEntity entity) {
throw notImplemented();
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-11-20 08:11:09 UTC (rev 1365)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-11-20 13:56:44 UTC (rev 1366)
@@ -32,8 +32,7 @@
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
import com.google.common.collect.Sets;
-import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
-import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
@@ -189,14 +188,10 @@
return new SampleCategoryCaracteristicPredicate();
}
- public static Predicate<SpeciesBatch> newSpeciesBatchCategoryPredicate(Integer cateogryId, Integer value) {
- return new SpeciesBatchCategoryPredicate(cateogryId, value);
+ public static Predicate<SpeciesAbleBatch> newSpeciesAbleBatchCategoryPredicate(Integer cateogryId, Integer value) {
+ return new SpeciesAbleBatchCategoryPredicate(cateogryId, value);
}
- public static Predicate<BenthosBatch> newBenthosBatchCategoryPredicate(Integer cateogryId, Integer value) {
- return new BenthosBatchCategoryPredicate(cateogryId, value);
- }
-
public static <B extends TuttiEntity> B findById(Iterable<B> beans,
String id) {
B result = Iterables.tryFind(beans, newIdPredicate(id)).orNull();
@@ -386,44 +381,25 @@
}
}
- protected static class SpeciesBatchCategoryPredicate implements Predicate<SpeciesBatch> {
+ protected static class SpeciesAbleBatchCategoryPredicate implements Predicate<SpeciesAbleBatch> {
private final Integer id;
private final Integer qualitativeValue;
- public SpeciesBatchCategoryPredicate(Integer id, Integer qualitativeValue) {
+ public SpeciesAbleBatchCategoryPredicate(Integer id, Integer qualitativeValue) {
this.id = id;
this.qualitativeValue = qualitativeValue;
}
@Override
- public boolean apply(SpeciesBatch input) {
+ public boolean apply(SpeciesAbleBatch input) {
return id.equals(input.getSampleCategoryId()) &&
input.getSampleCategoryValue() instanceof CaracteristicQualitativeValue &&
qualitativeValue.equals(((CaracteristicQualitativeValue) input.getSampleCategoryValue()).getIdAsInt());
}
}
- protected static class BenthosBatchCategoryPredicate implements Predicate<BenthosBatch> {
-
- private final Integer id;
-
- private final Integer qualitativeValue;
-
- public BenthosBatchCategoryPredicate(Integer id, Integer qualitativeValue) {
- this.id = id;
- this.qualitativeValue = qualitativeValue;
- }
-
- @Override
- public boolean apply(BenthosBatch input) {
- return id.equals(input.getSampleCategoryId()) &&
- input.getSampleCategoryValue() instanceof CaracteristicQualitativeValue &&
- qualitativeValue.equals(((CaracteristicQualitativeValue) input.getSampleCategoryValue()).getIdAsInt());
- }
- }
-
public static <K, V> void fillEntries(Map<K, V> map,
Collection<K> keys,
Function<K, V> function) {
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-11-20 08:11:09 UTC (rev 1365)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-11-20 13:56:44 UTC (rev 1366)
@@ -832,16 +832,11 @@
}
@Override
- public boolean isVracSpeciesBatch(SpeciesBatch speciesBatch) {
- return driver.isVracSpeciesBatch(speciesBatch);
+ public boolean isVracBatch(SpeciesAbleBatch speciesBatch) {
+ return driver.isVracBatch(speciesBatch);
}
@Override
- public boolean isVracBenthosBatch(BenthosBatch benthosBatch) {
- return driver.isVracBenthosBatch(benthosBatch);
- }
-
- @Override
public boolean isTemporary(TuttiReferentialEntity entity) {
return driver.isTemporary(entity);
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java 2013-11-20 08:11:09 UTC (rev 1365)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java 2013-11-20 13:56:44 UTC (rev 1366)
@@ -28,6 +28,7 @@
import com.google.common.collect.Maps;
import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.TuttiTechnicalException;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
@@ -184,10 +185,10 @@
// create operation data model
Map<String, Object> op = createOperation(fishingOperation);
- Float totalWeight = catchBatch.getCatchTotalWeight();
- if (totalWeight == null) {
- totalWeight = catchBatch.getCatchTotalComputedWeight();
- }
+ float totalWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getCatchTotalWeight(),
+ catchBatch.getCatchTotalComputedWeight());
+
op.put("totalWeight", totalWeight);
op.put("totalSortedWeight", catchBatch.getSpeciesTotalSampleSortedComputedWeight() + catchBatch.getBenthosTotalSampleSortedComputedWeight());
@@ -196,52 +197,77 @@
// Species
- Map<Species, Map<String, Object>> catches = Maps.newHashMap();
- Float ratio = (totalWeight - catchBatch.getCatchTotalUnsortedComputedWeight()) / catchBatch.getCatchTotalSortedComputedWeight();
+ Map<Species, SpeciesBatchEntry> catches = Maps.newHashMap();
- Float speciesTotalSortedWeight = catchBatch.getSpeciesTotalSortedWeight();
- if (speciesTotalSortedWeight == null) {
- speciesTotalSortedWeight = catchBatch.getSpeciesTotalSortedComputedWeight();
+ float globalRatio = (totalWeight - catchBatch.getCatchTotalUnsortedComputedWeight()) / catchBatch.getCatchTotalSortedComputedWeight();
+
+ float speciesTotalSortedWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getSpeciesTotalSortedWeight(),
+ catchBatch.getSpeciesTotalSortedComputedWeight());
+
+ // ratio total species weight / total sorted sampled species weight
+ float speciesRatio = globalRatio * speciesTotalSortedWeight;
+ if (catchBatch.getSpeciesTotalSampleSortedComputedWeight() > 0) {
+ speciesRatio /= catchBatch.getSpeciesTotalSampleSortedComputedWeight();
}
- // ratio total species weight / total sorted sampled species weight
- Float speciesRatio = speciesTotalSortedWeight / catchBatch.getSpeciesTotalSampleSortedComputedWeight();
// create catches rows
if (rootSpeciesBatch != null) {
+
List<SpeciesBatch> speciesBatches = rootSpeciesBatch.getChildren();
for (SpeciesBatch batch : speciesBatches) {
- createSpeciesCatch(batch, catches, speciesRatio * ratio, totalWeight);
+
+ createSpeciesCatch(batch, catches, speciesRatio);
}
}
- List<Map<String, Object>> catchList = Lists.newArrayList(catches.values());
+ List<SpeciesBatchEntry> catchList = Lists.newArrayList(catches.values());
+
// Benthos
- Float benthosTotalSortedWeight = catchBatch.getBenthosTotalSortedWeight();
- if (benthosTotalSortedWeight == null) {
- benthosTotalSortedWeight = catchBatch.getBenthosTotalSortedComputedWeight();
+ float benthosTotalSortedWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getBenthosTotalSortedWeight(),
+ catchBatch.getBenthosTotalSortedComputedWeight());
+
+ // ratio total benthos weight / total sorted sampled benthos weight
+ float benthosRatio = globalRatio * benthosTotalSortedWeight;
+ if (catchBatch.getBenthosTotalSampleSortedComputedWeight() > 0) {
+ benthosRatio /= catchBatch.getBenthosTotalSampleSortedComputedWeight();
}
- // ratio total benthos weight / total sorted sampled benthos weight
- Float benthosRatio = benthosTotalSortedWeight / catchBatch.getBenthosTotalSampleSortedComputedWeight();
// add the benthos row
if (rootBenthosBatch != null) {
+
if (CollectionUtils.isNotEmpty(rootBenthosBatch.getChildren())) {
- Map<String, Object> benthosCatch =
- createBenthosCatch(rootBenthosBatch, ratio * benthosRatio, totalWeight);
+ SpeciesBatchEntry benthosCatch =
+ createBenthosCatch(rootBenthosBatch, benthosRatio);
catchList.add(benthosCatch);
}
}
// Inert and living not itemized
- Map<String, Object> inertLivingNotItemizedCatch = createInertAndLivingNotItemizedCatch(catchBatch,
- ratio * speciesRatio,
- ratio * benthosRatio,
- totalWeight);
- if ((Float) inertLivingNotItemizedCatch.get("sortedWeight") > 0f) {
+ SpeciesBatchEntry inertLivingNotItemizedCatch =
+ createInertAndLivingNotItemizedCatch(catchBatch,
+ speciesRatio,
+ benthosRatio);
+ if (inertLivingNotItemizedCatch.getSortedWeight() > 0f) {
catchList.add(inertLivingNotItemizedCatch);
}
+ if (log.isDebugEnabled()) {
+
+ // recompute total for check
+ float computedTotalWeight = 0f;
+ float computedPercentage = 0f;
+ for (SpeciesBatchEntry entry : catchList) {
+ entry.computePercentage(totalWeight);
+ computedTotalWeight += entry.getTotalWeight();
+ computedPercentage += entry.getPercentage();
+ }
+ log.debug("TotalWeight: " + totalWeight);
+ log.debug("ComputedTotalWeight: " + computedTotalWeight);
+ log.debug("ComputedPercentage: " + computedPercentage);
+ }
op.put("catches", catchList);
operations.add(op);
}
@@ -290,128 +316,178 @@
}
protected void createSpeciesCatch(SpeciesBatch batch,
- Map<Species, Map<String, Object>> catches,
- float ratio,
- float totalWeight) {
+ Map<Species, SpeciesBatchEntry> catches,
+ float ratio) {
Species species = batch.getSpecies();
- Float existingSortedWeight;
- Float existingTotalWeight;
- Map<String, Object> ktch = catches.get(species);
+ SpeciesBatchEntry ktch = catches.get(species);
if (ktch == null) {
- ktch = Maps.newHashMap();
- ktch.put("code", species.getRefTaxCode());
- ktch.put("scientificName", species.getName());
+ Species speciesWithVerncularCode =
+ persistenceService.getSpeciesByReferenceTaxonIdWithVernacularCode(species.getReferenceTaxonId());
- Species speciesWithVerncularCode = persistenceService.getSpeciesByReferenceTaxonIdWithVernacularCode(species.getReferenceTaxonId());
- ktch.put("commonName", speciesWithVerncularCode.getVernacularCode());
+ ktch = new SpeciesBatchEntry(
+ species.getRefTaxCode(),
+ species.getName(),
+ speciesWithVerncularCode.getVernacularCode()
+ );
+ catches.put(species, ktch);
+ }
- existingSortedWeight = 0f;
- existingTotalWeight = 0f;
+ float sortedWeight = TuttiEntities.getValueOrComputedValue(
+ batch.getSampleCategoryWeight(),
+ batch.getSampleCategoryComputedWeight());
- } else {
- existingSortedWeight = (Float) ktch.get("sortedWeight");
- existingTotalWeight = (Float) ktch.get("totalWeight");
- }
+ ktch.addSortedWeight(sortedWeight);
- Float weight = batch.getSampleCategoryWeight();
- if (weight == null) {
- weight = batch.getSampleCategoryComputedWeight();
+ float speciesTotalWeight = sortedWeight;
+ if (persistenceService.isVracBatch(batch)) {
+ speciesTotalWeight *= ratio;
}
- ktch.put("sortedWeight", weight + existingSortedWeight);
-
- if (persistenceService.isVracSpeciesBatch(batch)) {
- weight *= ratio;
- }
- weight += existingTotalWeight;
-
- ktch.put("totalWeight", weight);
- ktch.put("percentage", 100 * weight / totalWeight);
- catches.put(species, ktch);
+ ktch.addTotalWeight(speciesTotalWeight);
}
- protected Map<String, Object> createBenthosCatch(BatchContainer<BenthosBatch> rootBenthosBatch,
- float ratio,
- float totalWeight) {
- Map<String, Object> ktch = Maps.newHashMap();
- ktch.put("code", _("tutti.service.operations.exportCatchesReport.specialRows.benthos.code"));
- ktch.put("scientificName", "");
- ktch.put("commonName", _("tutti.service.operations.exportCatchesReport.specialRows.benthos.name"));
+ protected SpeciesBatchEntry createBenthosCatch(BatchContainer<BenthosBatch> rootBenthosBatch,
+ float ratio) {
+ SpeciesBatchEntry ktch = new SpeciesBatchEntry(
+ _("tutti.service.operations.exportCatchesReport.specialRows.benthos.code"),
+ "",
+ _("tutti.service.operations.exportCatchesReport.specialRows.benthos.name")
+ );
- Float sortedWeight = 0f;
- Float benthosTotalWeight = 0f;
+ float sortedWeight = 0f;
+ float benthosTotalWeight = 0f;
List<BenthosBatch> benthosBatches = rootBenthosBatch.getChildren();
for (BenthosBatch batch : benthosBatches) {
- Float batchWeight = batch.getSampleCategoryWeight();
- if (batchWeight == null) {
- batchWeight = batch.getSampleCategoryComputedWeight();
- }
+ float batchWeight = TuttiEntities.getValueOrComputedValue(
+ batch.getSampleCategoryWeight(),
+ batch.getSampleCategoryComputedWeight());
sortedWeight += batchWeight;
- if (persistenceService.isVracBenthosBatch(batch)) {
+ if (persistenceService.isVracBatch(batch)) {
batchWeight *= ratio;
}
benthosTotalWeight += batchWeight;
}
- ktch.put("sortedWeight", sortedWeight);
- ktch.put("totalWeight", benthosTotalWeight);
- ktch.put("percentage", 100 * benthosTotalWeight / totalWeight);
+ ktch.addSortedWeight(sortedWeight);
+ ktch.addTotalWeight(benthosTotalWeight);
return ktch;
}
- protected Map<String, Object> createInertAndLivingNotItemizedCatch(CatchBatch catchBatch,
- float speciesRatio,
- float benthosRatio,
- float totalWeight) {
- Map<String, Object> inertLivingNotItemizedCatch = Maps.newHashMap();
- inertLivingNotItemizedCatch.put("code", _("tutti.service.operations.exportCatchesReport.specialRows.inertAndLivinngNotItemized.code"));
- inertLivingNotItemizedCatch.put("scientificName", "");
- inertLivingNotItemizedCatch.put("commonName", _("tutti.service.operations.exportCatchesReport.specialRows.inertAndLivinngNotItemized.name"));
+ protected SpeciesBatchEntry createInertAndLivingNotItemizedCatch(CatchBatch catchBatch,
+ float speciesRatio,
+ float benthosRatio) {
+ SpeciesBatchEntry ktch = new SpeciesBatchEntry(
+ _("tutti.service.operations.exportCatchesReport.specialRows.inertAndLivinngNotItemized.code"),
+ "",
+ _("tutti.service.operations.exportCatchesReport.specialRows.inertAndLivinngNotItemized.name"));
- Float inertLivingNotItemizedSortedWeight = 0f;
- Float inertLivingNotItemizedTotalWeight = 0f;
+ float sortedWeight = 0f;
+ float totalWeight = 0f;
- Float speciesInterWeight = catchBatch.getSpeciesTotalInertWeight();
- if (speciesInterWeight == null) {
- speciesInterWeight = catchBatch.getSpeciesTotalInertComputedWeight();
- }
+ Float speciesInterWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getSpeciesTotalInertWeight(),
+ catchBatch.getSpeciesTotalInertComputedWeight());
+
if (speciesInterWeight != null) {
- inertLivingNotItemizedSortedWeight += speciesInterWeight;
- inertLivingNotItemizedTotalWeight += speciesInterWeight * speciesRatio;
+ sortedWeight += speciesInterWeight;
+ totalWeight += speciesInterWeight * speciesRatio;
}
- Float speciesLivingNotItemizedWeigth = catchBatch.getSpeciesTotalLivingNotItemizedWeight();
- if (speciesLivingNotItemizedWeigth == null) {
- speciesLivingNotItemizedWeigth = catchBatch.getSpeciesTotalLivingNotItemizedComputedWeight();
- }
+ Float speciesLivingNotItemizedWeigth = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getSpeciesTotalLivingNotItemizedWeight(),
+ catchBatch.getSpeciesTotalLivingNotItemizedComputedWeight());
+
if (speciesLivingNotItemizedWeigth != null) {
- inertLivingNotItemizedSortedWeight += speciesLivingNotItemizedWeigth;
- inertLivingNotItemizedTotalWeight += speciesLivingNotItemizedWeigth * speciesRatio;
+ sortedWeight += speciesLivingNotItemizedWeigth;
+ totalWeight += speciesLivingNotItemizedWeigth * speciesRatio;
}
- Float benthosInterWeight = catchBatch.getBenthosTotalInertWeight();
- if (benthosInterWeight == null) {
- benthosInterWeight = catchBatch.getBenthosTotalInertComputedWeight();
- }
+ Float benthosInterWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getBenthosTotalInertWeight(),
+ catchBatch.getBenthosTotalInertComputedWeight());
+
if (benthosInterWeight != null) {
- inertLivingNotItemizedSortedWeight += benthosInterWeight;
- inertLivingNotItemizedTotalWeight += benthosInterWeight * benthosRatio;
+ sortedWeight += benthosInterWeight;
+ totalWeight += benthosInterWeight * benthosRatio;
}
- Float benthosLivingNotItemizedWeight = catchBatch.getBenthosTotalLivingNotItemizedWeight();
- if (benthosLivingNotItemizedWeight == null) {
- benthosLivingNotItemizedWeight = catchBatch.getBenthosTotalLivingNotItemizedComputedWeight();
- }
+ Float benthosLivingNotItemizedWeight = TuttiEntities.getValueOrComputedValue(
+ catchBatch.getBenthosTotalLivingNotItemizedWeight(),
+ catchBatch.getBenthosTotalLivingNotItemizedComputedWeight());
+
if (benthosLivingNotItemizedWeight != null) {
- inertLivingNotItemizedSortedWeight += benthosLivingNotItemizedWeight;
- inertLivingNotItemizedTotalWeight += benthosLivingNotItemizedWeight * benthosRatio;
+ sortedWeight += benthosLivingNotItemizedWeight;
+ totalWeight += benthosLivingNotItemizedWeight * benthosRatio;
}
- inertLivingNotItemizedCatch.put("sortedWeight", inertLivingNotItemizedSortedWeight);
- inertLivingNotItemizedCatch.put("totalWeight", inertLivingNotItemizedTotalWeight);
- inertLivingNotItemizedCatch.put("percentage", 100 * inertLivingNotItemizedTotalWeight / totalWeight);
+ ktch.addSortedWeight(sortedWeight);
+ ktch.addTotalWeight(totalWeight);
- return inertLivingNotItemizedCatch;
+ return ktch;
}
+
+ /**
+ * To store a species or batch entry within his speices informations,
+ * his sorted weight, total weight and percentage amoong the total catch
+ * weight.
+ *
+ * @since 2.10
+ */
+ public static class SpeciesBatchEntry {
+
+ protected final String code;
+
+ protected final String scientificName;
+
+ protected final String commonName;
+
+ float sortedWeight;
+
+ float totalWeight;
+
+ float percentage;
+
+ SpeciesBatchEntry(String code, String scientificName, String commonName) {
+ this.code = code;
+ this.scientificName = scientificName;
+ this.commonName = commonName;
+ }
+
+ public void addSortedWeight(float weight) {
+ sortedWeight += weight;
+ }
+
+ public void addTotalWeight(float weight) {
+ totalWeight += weight;
+ }
+
+ public void computePercentage(float totalWeight) {
+ this.percentage = 100 * this.totalWeight / totalWeight;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getScientificName() {
+ return scientificName;
+ }
+
+ public String getCommonName() {
+ return commonName;
+ }
+
+ public float getSortedWeight() {
+ return sortedWeight;
+ }
+
+ public float getTotalWeight() {
+ return totalWeight;
+ }
+
+ public float getPercentage() {
+ return percentage;
+ }
+ }
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java 2013-11-20 08:11:09 UTC (rev 1365)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java 2013-11-20 13:56:44 UTC (rev 1366)
@@ -186,7 +186,7 @@
break;
}
- if (persistenceService.isVracSpeciesBatch(row)) {
+ if (persistenceService.isVracBatch(row)) {
speciesTotalComputedSortedWeight += weight;
} else {
speciesTotalComputedUnsortedWeight += weight;
@@ -243,7 +243,7 @@
break;
}
- if (persistenceService.isVracBenthosBatch(row)) {
+ if (persistenceService.isVracBatch(row)) {
benthosTotalComputedSortedWeight += weight;
} else {
benthosTotalComputedUnsortedWeight += weight;
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-11-20 08:11:09 UTC (rev 1365)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-11-20 13:56:44 UTC (rev 1366)
@@ -114,7 +114,7 @@
row.setSpecies(speciesBatch.getSpecies());
row.setBatchWeightUnit(batchWeightUnit);
- if (persistenceService.isVracSpeciesBatch(speciesBatch)) {
+ if (persistenceService.isVracBatch(speciesBatch)) {
// compute species total weight in catch
@@ -142,7 +142,7 @@
row.setSpecies(benthosBatch.getSpecies());
row.setBatchWeightUnit(batchWeightUnit);
- if (persistenceService.isVracBenthosBatch(benthosBatch)) {
+ if (persistenceService.isVracBatch(benthosBatch)) {
// compute species total weight in catch
Added: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/ExportCatchesReportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/ExportCatchesReportServiceTest.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/ExportCatchesReportServiceTest.java 2013-11-20 13:56:44 UTC (rev 1366)
@@ -0,0 +1,70 @@
+package fr.ifremer.tutti.service.catches;
+
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.ServiceDbResource;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.Locale;
+
+/**
+ * Created on 11/19/13.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.10
+ */
+public class ExportCatchesReportServiceTest {
+
+ @ClassRule
+ public static final ServiceDbResource dbResource =
+ ServiceDbResource.readDb("dbMedits");
+
+ public static final String PROGRAM_ID = "CAM-MEDITS";
+
+ public static final String CRUISE_ID = "100001";
+
+ public static final String OPERATION_1_ID = "100106";
+
+ protected ExportCatchesReportService exportService;
+
+ protected PersistenceService persistenceService;
+
+ protected File dataDirectory;
+
+ @Before
+ public void setUp() throws Exception {
+
+ dataDirectory = dbResource.getServiceConfig().getDataDirectory();
+
+ TuttiServiceContext serviceContext = dbResource.getServiceContext();
+
+ persistenceService = serviceContext.getService(PersistenceService.class);
+
+ serviceContext.getDataContext().open(serviceContext.getConfig(), persistenceService);
+ exportService = serviceContext.getService(ExportCatchesReportService.class);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+
+ }
+
+ @Test
+ public void generateFishingOperationPDFFile() throws Exception {
+
+ File exportFile = new File(dataDirectory, "exportOperation.pdf");
+
+ Assert.assertFalse(exportFile.exists());
+
+ exportService.generateFishingOperationPDFFile(exportFile,
+ OPERATION_1_ID,
+ Locale.FRENCH);
+
+ Assert.assertTrue(exportFile.exists());
+ }
+}
Property changes on: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/ExportCatchesReportServiceTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/tutti-service/src/test/resources/tutti-test-read-dbMedits.properties (from rev 1361, trunk/tutti-service/src/test/resources/tutti-test-read-dbCGFS.properties)
===================================================================
--- trunk/tutti-service/src/test/resources/tutti-test-read-dbMedits.properties (rev 0)
+++ trunk/tutti-service/src/test/resources/tutti-test-read-dbMedits.properties 2013-11-20 13:56:44 UTC (rev 1366)
@@ -0,0 +1,25 @@
+###
+# #%L
+# Tutti :: Service
+# $Id$
+# $HeadURL$
+# %%
+# Copyright (C) 2012 - 2013 Ifremer
+# %%
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/gpl-3.0.html>.
+# #L%
+###
+tutti.persistence.db.directory=src/test/dbMedits
+tutti.persistence.jdbc.url=jdbc:hsqldb:file:src/test/dbMedits/allegro
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeBatchWeightsAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeBatchWeightsAction.java 2013-11-20 08:11:09 UTC (rev 1365)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeBatchWeightsAction.java 2013-11-20 13:56:44 UTC (rev 1366)
@@ -273,7 +273,7 @@
List<SpeciesBatch> children = computedSpeciesBatches.getChildren();
for (SpeciesBatch batch : children) {
SpeciesBatchRowModel row = getUI().getSpeciesTabContent().getHandler().loadBatch(batch, null, rows);
- if (persistenceService.isVracSpeciesBatch(row)) {
+ if (persistenceService.isVracBatch(row)) {
SampleCategory<?> sampleCategory = row.getFirstSampleCategory();
Float weight = TuttiEntities.getValueOrComputedValue(
sampleCategory.getCategoryWeight(),
@@ -296,7 +296,7 @@
for (BenthosBatch batch : children) {
BenthosBatchRowModel row = getUI().getBenthosTabContent().getHandler().loadBatch(batch, null, rows);
- if (persistenceService.isVracBenthosBatch(row)) {
+ if (persistenceService.isVracBatch(row)) {
SampleCategory<?> sampleCategory = row.getFirstSampleCategory();
Float weight = TuttiEntities.getValueOrComputedValue(
sampleCategory.getCategoryWeight(),
Modified: trunk/tutti-ui-swing/src/main/profiling/META-INF/aop.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/profiling/META-INF/aop.xml 2013-11-20 08:11:09 UTC (rev 1365)
+++ trunk/tutti-ui-swing/src/main/profiling/META-INF/aop.xml 2013-11-20 13:56:44 UTC (rev 1366)
@@ -33,9 +33,9 @@
expression="
execution(* fr.ifremer.tutti..*(..))
||execution(* fr.ifremer.adagio.core..*(..))
- ||execution(* org.springframework..*(..))
- ||execution(* org.hibernate..*(..))
"/>
</concrete-aspect>
</aspects>
+ <!--||execution(* org.springframework..*(..))-->
+ <!--||execution(* org.hibernate..*(..))-->
</aspectj>
\ No newline at end of file
1
0
r1365 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing: content content/db util/action
by tchemit@users.forge.codelutin.com 20 Nov '13
by tchemit@users.forge.codelutin.com 20 Nov '13
20 Nov '13
Author: tchemit
Date: 2013-11-20 09:11:09 +0100 (Wed, 20 Nov 2013)
New Revision: 1365
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1365
Log:
fixes #3841: [TECH] Am?\195?\169lioration du d?\195?\169marrage de l'application
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/StartAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-11-19 18:25:58 UTC (rev 1364)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-11-20 08:11:09 UTC (rev 1365)
@@ -40,7 +40,6 @@
import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUI;
import fr.ifremer.tutti.ui.swing.content.db.DbManagerUI;
import fr.ifremer.tutti.ui.swing.content.db.DbManagerUIHandler;
-import fr.ifremer.tutti.ui.swing.content.db.OpenDbAction;
import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI;
import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
import fr.ifremer.tutti.ui.swing.content.program.EditProgramUI;
@@ -54,9 +53,7 @@
import fr.ifremer.tutti.ui.swing.util.RemoveablePropertyChangeListener;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
-import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI;
-import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction;
import jaxx.runtime.JAXXBinding;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.swing.session.SwingSession;
@@ -106,9 +103,10 @@
public void reloadDbManagerText() {
- AbstractTuttiUIHandler currentHandler = getCurrentHandler();
- if (currentHandler instanceof DbManagerUIHandler) {
- DbManagerUIHandler dbManagerUIHandler = (DbManagerUIHandler) currentHandler;
+ TuttiUI<?, ?> body = (TuttiUI<?, ?>) currentBody;
+
+ if (body != null && body.getHandler() instanceof DbManagerUIHandler) {
+ DbManagerUIHandler dbManagerUIHandler = (DbManagerUIHandler) body.getHandler();
dbManagerUIHandler.updateMessage();
}
}
@@ -207,37 +205,6 @@
JToolBar bar = ui.getBottomBar();
ui.getStatus().addWidget(bar, 0);
-
- if (context.isDbLoaded()) {
-
- // db already opened (happens when reloading ui)
- // just go to select cruise screen
- TuttiUIAction<SelectCruiseAction> uiAction = TuttiActionHelper.createUIAction(this, SelectCruiseAction.class);
- SelectCruiseAction logicAction = uiAction.getLogicAction();
- logicAction.setSkipCheckCurrentScreen(true);
- logicAction.setActionDescription(ui.getMenuActionSelectCruise().getToolTipText());
- uiAction.actionPerformed(null);
-
- } else {
-
- if (context.isDbExist()) {
-
- // open tutti db (using a fake button to have simple api)
- TuttiUIAction<OpenDbAction> uiAction = TuttiActionHelper.createUIAction(this, OpenDbAction.class);
- OpenDbAction logicAction = uiAction.getLogicAction();
- logicAction.setSkipCheckCurrentScreen(true);
- logicAction.setUpdateReferentiel(true);
- uiAction.actionPerformed(null);
-
- } else {
-
- // clean db context
- context.clearDbContext();
-
- // go to manage db screen (to install db)
- context.setScreen(TuttiScreen.MANAGE_DB);
- }
- }
}
@Override
@@ -377,11 +344,6 @@
return canClose;
}
- public AbstractTuttiUIHandler getCurrentHandler() {
- TuttiUI<?, ?> body = (TuttiUI<?, ?>) currentBody;
- return body.getHandler();
- }
-
/**
* Reload the persistence service and set the new ne into the handler.
*
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/StartAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/StartAction.java 2013-11-19 18:25:58 UTC (rev 1364)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/StartAction.java 2013-11-20 08:11:09 UTC (rev 1365)
@@ -25,8 +25,10 @@
*/
import fr.ifremer.tutti.TuttiIOUtil;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.content.db.ImportDbAction;
import fr.ifremer.tutti.ui.swing.content.db.InstallDbAction;
+import fr.ifremer.tutti.ui.swing.content.db.OpenDbAction;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -36,8 +38,10 @@
import static org.nuiton.i18n.I18n._;
/**
- * Start action (when the start action file is present when
- * starting application).
+ * Start action.
+ * <p/>
+ * If there is a start action file, then load it and run inside actions, otherwise
+ * just starts normal ui action (open db if exists, or go to manage db screen).
*
* @author tchemit <chemit(a)codelutin.com>
* @since 2.4
@@ -69,22 +73,28 @@
if (InstallDbAction.class.getName().equals(content)) {
// install db
- delegateAction = TuttiActionHelper.createLogicAction(getHandler(), InstallDbAction.class);
+ delegateAction = TuttiActionHelper.createLogicAction(handler, InstallDbAction.class);
if (log.isInfoEnabled()) {
log.info("Found install db action");
}
+ deleteOldDatabaseDirectory();
+
} else if (content.startsWith(ImportDbAction.class.getName())) {
// import db
- ImportDbAction action = TuttiActionHelper.createLogicAction(getHandler(), ImportDbAction.class);
+ ImportDbAction action = TuttiActionHelper.createLogicAction(handler, ImportDbAction.class);
File importFile = new File(content.substring(ImportDbAction.class.getName().length() + 1));
action.setImportFile(importFile);
delegateAction = action;
if (log.isInfoEnabled()) {
log.info("Found import db action (with file " + importFile + ")");
}
+ deleteOldDatabaseDirectory();
} else {
+ if (log.isWarnEnabled()) {
+ log.warn("Unknown start action: " + content);
+ }
doAction = false;
}
@@ -97,11 +107,46 @@
}
}
+ if (!doAction) {
- if (doAction) {
- setActionDescription(delegateAction.getActionDescription());
- doAction = delegateAction.prepareAction();
+ // no start action, normal start
+
+ TuttiUIContext context = getContext();
+
+ if (context.isDbLoaded()) {
+
+ // db already opened (happens when reloading ui)
+ // just go to select cruise screen
+ SelectCruiseAction action = TuttiActionHelper.createLogicAction(handler, SelectCruiseAction.class);
+ action.setSkipCheckCurrentScreen(true);
+ action.setActionDescription(getUI().getMenuActionSelectCruise().getToolTipText());
+ delegateAction = action;
+
+ } else {
+
+ if (context.isDbExist()) {
+
+ // open tutti db (using a fake button to have simple api)
+ OpenDbAction action = TuttiActionHelper.createLogicAction(handler, OpenDbAction.class);
+ action.setSkipCheckCurrentScreen(true);
+ action.setUpdateReferentiel(true);
+ delegateAction = action;
+
+ } else {
+
+ // clean db context
+ context.clearDbContext();
+
+ // go to manage db screen (to install db)
+ ManageDbAction action = TuttiActionHelper.createLogicAction(handler, ManageDbAction.class);
+ action.setSkipCheckCurrentScreen(true);
+ delegateAction = action;
+ }
+ }
}
+
+ setActionDescription(delegateAction.getActionDescription());
+ doAction = delegateAction.prepareAction();
return doAction;
}
@@ -116,4 +161,16 @@
delegateAction = null;
super.releaseAction();
}
+
+ protected void deleteOldDatabaseDirectory() {
+ File dbDirectory = getConfig().getServiceConfig().getPersistenceConfig().getDbDirectory();
+ if (dbDirectory.exists()) {
+
+ // delete it before install
+ if (log.isInfoEnabled()) {
+ log.info("Delete previous database directory: " + dbDirectory);
+ }
+ TuttiIOUtil.deleteDirectory(dbDirectory, "Could not delete old db directory");
+ }
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java 2013-11-19 18:25:58 UTC (rev 1364)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java 2013-11-20 08:11:09 UTC (rev 1365)
@@ -337,7 +337,7 @@
String message = _("tutti.openDb.step.check.dbContext",
dbVersion, applicationVersion);
- getProgressionModel().increments(message);
+ progressionModel.increments(message);
if (log.isDebugEnabled()) {
log.debug("Check db context");
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java 2013-11-19 18:25:58 UTC (rev 1364)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java 2013-11-20 08:11:09 UTC (rev 1365)
@@ -29,6 +29,8 @@
import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import org.apache.commons.lang3.reflect.ConstructorUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import javax.swing.AbstractButton;
import javax.swing.Action;
@@ -43,6 +45,9 @@
*/
public class TuttiActionHelper {
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(TuttiActionHelper.class);
+
public static <A extends AbstractTuttiAction> void runInternalAction(A action) {
Throwable error = null;
@@ -51,6 +56,9 @@
action.postSuccessAction();
} catch (Throwable e) {
error = e;
+ if (log.isErrorEnabled()) {
+ log.error("Error in action:", e);
+ }
throw TuttiActionException.propagateError(action, e);
} finally {
try {
1
0
r1364 - in trunk/src: conception/specifications conception/specifications/Concepts-metiers conception/specifications/Presentation site/rst
by lkaufmann@users.forge.codelutin.com 19 Nov '13
by lkaufmann@users.forge.codelutin.com 19 Nov '13
19 Nov '13
Author: lkaufmann
Date: 2013-11-19 19:25:58 +0100 (Tue, 19 Nov 2013)
New Revision: 1364
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1364
Log:
Specifications v0.2 update & spelling correction in help rst files
Modified:
trunk/src/conception/specifications/AllegroCampagne-Specifications.odt
trunk/src/conception/specifications/AllegroCampagne-Specifications.pdf
trunk/src/conception/specifications/Concepts-metiers/Campagne.txt
trunk/src/conception/specifications/Concepts-metiers/Capture.txt
trunk/src/conception/specifications/Concepts-metiers/OperationPecheTrait.txt
trunk/src/conception/specifications/Presentation/PresentationGenerale.txt
trunk/src/site/rst/features.rst
Modified: trunk/src/conception/specifications/AllegroCampagne-Specifications.odt
===================================================================
(Binary files differ)
Modified: trunk/src/conception/specifications/AllegroCampagne-Specifications.pdf
===================================================================
(Binary files differ)
Modified: trunk/src/conception/specifications/Concepts-metiers/Campagne.txt
===================================================================
--- trunk/src/conception/specifications/Concepts-metiers/Campagne.txt 2013-11-19 13:16:50 UTC (rev 1363)
+++ trunk/src/conception/specifications/Concepts-metiers/Campagne.txt 2013-11-19 18:25:58 UTC (rev 1364)
@@ -3,7 +3,7 @@
* Observations et méthodes
Les campagnes suivent 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.
-Chaque campagne est généralement accomplie une fois par an. Mais certains cas spécifiques imposent sa réalisation plusieurs fois par an, on parle alors de série partielle.
+Chaque campagne est généralement accomplie une fois par an. Mais certains cas spécifiques imposent sa réalisation plusieurs fois par an, on parle alors de leg ou de série partielle.
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.
Modified: trunk/src/conception/specifications/Concepts-metiers/Capture.txt
===================================================================
--- trunk/src/conception/specifications/Concepts-metiers/Capture.txt 2013-11-19 13:16:50 UTC (rev 1363)
+++ trunk/src/conception/specifications/Concepts-metiers/Capture.txt 2013-11-19 18:25:58 UTC (rev 1364)
@@ -3,16 +3,34 @@
* Espèces
+Les observations parmi les prises se font généralement par lots d'espèce. Une quantité significative d'une même nature fournit des observations plus représentatives.
+Les espèces étudiées sont des poissons, des mollusques et des crustacés.
-
* Benthos
-Le benthos regroupe l'ensemble des organismes vivant en relation étroite avec les fonds subaquatiques.
+Le benthos regroupe l'ensemble des organismes vivant en relation étroite avec les fonds subaquatiques : benthos végétal ou phytobenthos (algues et phanérogames) et benthos animal ou
+zoobenthos (vers, mollusques, crustacés...)
+* Macro déchets
+Malheureusement, l'environnement maritime a été affecté par les activités humaines, intentionnellement ou par accident. La problématique ne se pose pas uniquement pour les littoraux mais également les grandes profondeurs. Les déchets sont en effet transportés par les courants océaniques et terminent leurs parcours dans des zones où ils s'accumulent et constituent de véritables décharges sous-marines.
+Exemples de macro déchets :
+- Plastique (sac, emballage, bouteille, …)
+- Verre (bouteille, flacon)
+- Métal (Canette, Conserve, ...)
+- Vêtement et tissu (Gant, botte, chaussure, ...)
+- Baril
-Macro déchets
+* Observations individuelles
-Observations individuelles
+Les analyses se portent sur des espèces, principalement par lots, mais elles peuvent également être effectuées séparément, par individu.
+Les mesures peuvent alors êtres plus détaillées, apportant des observations d'une précision accrue.
-Captures accidentelles
+* Captures accidentelles
+
+Toute capture réalisée en mer peut inclure des espèces non ciblées par les campagnes d'observations, et captées fortuitement dans les chaluts.
+
+Exemples de captures accidentelles :
+- Dauphin
+- Baleine
+- Tortue
Modified: trunk/src/conception/specifications/Concepts-metiers/OperationPecheTrait.txt
===================================================================
--- trunk/src/conception/specifications/Concepts-metiers/OperationPecheTrait.txt 2013-11-19 13:16:50 UTC (rev 1363)
+++ trunk/src/conception/specifications/Concepts-metiers/OperationPecheTrait.txt 2013-11-19 18:25:58 UTC (rev 1364)
@@ -0,0 +1,3 @@
+Une campagne de pêche scientifique est composé d'une ou plusieurs sortie(s) en mer. Lors de ces sorties un certain nombre de captures est effectué à la traîne grâce au chalut. Chaque session de traîne représente un trait.
+
+Lors de ces opérations, un trait dure généralement entre une demi-heure et trois heures.
\ No newline at end of file
Modified: trunk/src/conception/specifications/Presentation/PresentationGenerale.txt
===================================================================
--- trunk/src/conception/specifications/Presentation/PresentationGenerale.txt 2013-11-19 13:16:50 UTC (rev 1363)
+++ trunk/src/conception/specifications/Presentation/PresentationGenerale.txt 2013-11-19 18:25:58 UTC (rev 1364)
@@ -1,24 +1,29 @@
1. Contexte
-L'Ifremer contribue, par ses travaux et expertises, à la connaissance des océans et de leurs ressources, à la surveillance du milieu marin et du littoral et au développement durable des activités maritimes. À ces fins, il conçoit et met en œuvre des outils d'observation, d'expérimentation et de surveillance, et gère des bases de données océanographiques.
+L'Institut Français de Recherche pour l'Exploitation de la MER contribue, par ses travaux et expertises, à la connaissance des océans et de leurs ressources, à la surveillance du milieu marin et du littoral et au développement durable des activités maritimes. À ces fins, il conçoit et met en œuvre des outils d'observation, d'expérimentation et de surveillance, et gère des bases de données océanographiques.
Parmi ses axes stratégiques principaux, la pêche est un domaine de recherche et d'expertise clé de l'Ifremer afin de contribuer à une pêche durable et à la valorisation des ressources biologiques. Dans cette optique, l’objectif est d'appréhender le système halieutique dans toutes ses composantes et sur l’ensemble des façades. Pour cela, l'Ifremer a mis en place un système d'information visant à connaître, évaluer, mettre en valeur les ressources des océans et permettre leur exploitation durable.
Un Système d'Informations Halieutiques (SIH), véritable observatoire national des ressources halieutiques et des usages, a été mis en place au début des années 2000. Il mobilise des compétences de biologistes, économistes, statisticiens et informaticiens.
Il constitue le réseau pérenne et opérationnel d'observation des ressources halieutiques et des usages associés (pêche professionnelle et progressivement pêche récréative) de l’Ifremer.
+
L’Ifremer a mis en place un réseau d’observation des ressources halieutiques et des usages associés, et mène par ailleurs la collecte de données qui lui sont propres, par des enquêtes auprès des professionnels, des échantillonnages et des observations à terre et en mer. Il développe aussi des outils de simulation et modélisation, des outils d’observation vidéo, des outils acoustiques ou des engins de captures spécifiques qui sont mis au point lors d’essais en mer. L’ensemble des données collectées par l’Ifremer ainsi que celles provenant des autres opérateurs sont archivées dans une même base de données.
-Le projet Allegro Campagne est une composante de ce système d'information en tant qu'outil dédié à la saisie de données d'opérations et de captures.
+Le projet Allegro Campagne est une composante de ce système d'information, le objectif étant de fournir un outil dédié à la saisie de données d'opérations et de captures.
2. Historique
-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.
+À l'origine de l'Ifremer, le Centre National pour l'exploitation des Océans (CNEXO) et l'Institut Scientifique et Technique des Pêches Maritimes (ISTPM) ont été uni le 5 juin 1984 afin de constituer l' Institut Français de Recherche pour l'Exploitation de la MER.
+Depuis plus d'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.
+Le développement du projet Allegro Campagne (anciennement dénommé Tutti) a été lancé en Novembre 2012.
+
+
3. Description générale
Le développement d’une démarche écosystémique pour la gestion de ressources halieutiques, aujourd’hui plus ou moins fortement dégradées, constitue une priorité de l’Ifremer. L'étude et les observations des ressources actuelles sont à l'origine de l'élaboration de programmes visant à développer le monde maritime. Le volet « Recherche » des actions de l'Ifremer est essentiel car il permet d'améliorer les connaissances et leur vulgarisation.
-Le projet Allegro Campagne fait partie de cette démarche de recueil et de capitalisation des informations. Il vise à fournir un outil spécialement dédié à la collecte de données au cours des campagnes halieutiques. Le périmètre des renseignements à glaner se limite aux opérations de pêches et aux captures réalisées.
+Le recueil et la capitalisation des informations représentent un axe principal de cette démarche où s'inscrit Allegro Campagne. La finalité de l'application cible du projet est la collecte de données au cours des campagnes halieutiques. Le périmètre des renseignements à glaner se limite aux opérations de pêches et aux captures réalisées.
4. Objectifs
Modified: trunk/src/site/rst/features.rst
===================================================================
--- trunk/src/site/rst/features.rst 2013-11-19 13:16:50 UTC (rev 1363)
+++ trunk/src/site/rst/features.rst 2013-11-19 18:25:58 UTC (rev 1364)
@@ -255,8 +255,8 @@
- **pmfmId** (entier) : identifiant du psfm
- **pmfmType** (LENGTH_STEP,GEAR_USE_FEATURE,VESSEL_USE_FEATURE) : écran où intervient la caractéristique
- pmfmParameterName (chaîne de caractères) : paramètre de la caractéristique
-- pmfmMatrixName (chaîne de caractères) : support de la caractérisque
-- pmfmFractionName (chaîne de caractères) : fraction de la caractérisque
+- pmfmMatrixName (chaîne de caractères) : support de la caractéristique
+- pmfmFractionName (chaîne de caractères) : fraction de la caractéristique
- pmfmMethodName (chaîne de caractères) : méthode de la caractéristique
A noter que seules les colonnes identifiées en gras sont prises en compte lors
1
0
r1363 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities tutti-service/src/main/java/fr/ifremer/tutti/service/catches
by tchemit@users.forge.codelutin.com 19 Nov '13
by tchemit@users.forge.codelutin.com 19 Nov '13
19 Nov '13
Author: tchemit
Date: 2013-11-19 14:16:50 +0100 (Tue, 19 Nov 2013)
New Revision: 1363
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1363
Log:
fixes #3804: [CAPTURE] mauvais affichage des //
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-11-19 07:51:45 UTC (rev 1362)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-11-19 13:16:50 UTC (rev 1363)
@@ -46,6 +46,8 @@
import org.hibernate.cfg.Environment;
import java.io.File;
+import java.math.BigDecimal;
+import java.math.MathContext;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
@@ -97,6 +99,8 @@
}
};
+ private static final MathContext MATH_CONTEXT_4_DIGIT = new MathContext(4);
+
/** Logger. */
private static final Log log = LogFactory.getLog(TuttiEntities.class);
@@ -113,8 +117,8 @@
public static <B extends TuttiEntity> List<Integer> toIntegerIds(Collection<B> list) {
List<Integer> result = list == null ?
- Collections.<Integer>emptyList() :
- Lists.transform(Lists.newArrayList(list), GET_ID_AS_INT);
+ Collections.<Integer>emptyList() :
+ Lists.transform(Lists.newArrayList(list), GET_ID_AS_INT);
return result;
}
@@ -333,6 +337,19 @@
}
}
+ /**
+ * Round the given value to max 4 digits.
+ *
+ * @param value the float to round.
+ * @return the rounded value
+ * @since 2.10
+ */
+ public static float roundKiloGram(float value) {
+ BigDecimal sumB = new BigDecimal(value);
+ float result = sumB.abs(MATH_CONTEXT_4_DIGIT).floatValue();
+ return result;
+ }
+
protected static class IdPredicate<B extends TuttiEntity> implements Predicate<B> {
private final String id;
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java 2013-11-19 07:51:45 UTC (rev 1362)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java 2013-11-19 13:16:50 UTC (rev 1363)
@@ -213,18 +213,21 @@
Float speciesTotalSortedWeight = catchBatch.getSpeciesTotalSortedWeight();
if (speciesTotalSortedWeight == null) {
speciesTotalSortedWeight = speciesTotalComputedSortedWeight;
- catchBatch.setSpeciesTotalSortedComputedWeight(speciesTotalSortedWeight);
+ catchBatch.setSpeciesTotalSortedComputedWeight(
+ TuttiEntities.roundKiloGram(speciesTotalSortedWeight));
} else if (speciesTotalSortedWeight < speciesTotalComputedSortedWeight) {
throw new TuttiBusinessException(_("tutti.service.operations.computeWeights.error.species.incoherentTotalSorted"));
}
- catchBatch.setSpeciesTotalUnsortedComputedWeight(speciesTotalComputedUnsortedWeight);
+ catchBatch.setSpeciesTotalUnsortedComputedWeight(
+ TuttiEntities.roundKiloGram(speciesTotalComputedUnsortedWeight));
if (speciesTotalSortedWeight == null) {
speciesTotalSortedWeight = catchBatch.getSpeciesTotalSortedComputedWeight();
}
Float speciesTotalWeight = speciesTotalComputedUnsortedWeight + speciesTotalSortedWeight;
- catchBatch.setSpeciesTotalComputedWeight(speciesTotalWeight);
+ catchBatch.setSpeciesTotalComputedWeight(
+ TuttiEntities.roundKiloGram(speciesTotalWeight));
// Benthos
Float benthosTotalComputedSortedWeight = 0f;
@@ -262,23 +265,27 @@
catchBatch.setBenthosTotalLivingNotItemizedComputedWeight(0f);
}
- catchBatch.setBenthosTotalSampleSortedComputedWeight(benthosTotalComputedSortedWeight);
+ catchBatch.setBenthosTotalSampleSortedComputedWeight(
+ TuttiEntities.roundKiloGram(benthosTotalComputedSortedWeight));
Float benthosTotalSortedWeight = catchBatch.getBenthosTotalSortedWeight();
if (benthosTotalSortedWeight == null) {
benthosTotalSortedWeight = benthosTotalComputedSortedWeight;
- catchBatch.setBenthosTotalSortedComputedWeight(benthosTotalSortedWeight);
+ catchBatch.setBenthosTotalSortedComputedWeight(
+ TuttiEntities.roundKiloGram(benthosTotalSortedWeight));
} else if (benthosTotalSortedWeight < benthosTotalComputedSortedWeight) {
throw new TuttiBusinessException(_("tutti.service.operations.computeWeights.error.benthos.incoherentTotalSorted"));
}
- catchBatch.setBenthosTotalUnsortedComputedWeight(benthosTotalComputedUnsortedWeight);
+ catchBatch.setBenthosTotalUnsortedComputedWeight(
+ TuttiEntities.roundKiloGram(benthosTotalComputedUnsortedWeight));
if (benthosTotalSortedWeight == null) {
benthosTotalSortedWeight = catchBatch.getBenthosTotalSortedComputedWeight();
}
Float benthosTotalWeight = benthosTotalComputedUnsortedWeight + benthosTotalSortedWeight;
- catchBatch.setBenthosTotalComputedWeight(benthosTotalWeight);
+ catchBatch.setBenthosTotalComputedWeight(
+ TuttiEntities.roundKiloGram(benthosTotalWeight));
// Marine litter
Float marineLitterTotalComputedWeight = 0f;
@@ -294,7 +301,8 @@
marineLitterTotalComputedWeight += rowWeight;
}
}
- catchBatch.setMarineLitterTotalComputedWeight(marineLitterTotalComputedWeight);
+ catchBatch.setMarineLitterTotalComputedWeight(
+ TuttiEntities.roundKiloGram(marineLitterTotalComputedWeight));
Float marineLitterTotalWeight = catchBatch.getMarineLitterTotalWeight();
if (marineLitterTotalWeight == null) {
@@ -311,8 +319,8 @@
Float totalSortedWeight = speciesTotalSortedWeight + benthosTotalSortedWeight;
- catchBatch.setCatchTotalSortedComputedWeight(totalSortedWeight);
- catchBatch.setCatchTotalUnsortedComputedWeight(totalUnsortedWeight);
+ catchBatch.setCatchTotalSortedComputedWeight(TuttiEntities.roundKiloGram(totalSortedWeight));
+ catchBatch.setCatchTotalUnsortedComputedWeight(TuttiEntities.roundKiloGram(totalUnsortedWeight));
Float totalWeight = catchBatch.getCatchTotalWeight();
Float rejectedWeight = catchBatch.getCatchTotalRejectedWeight();
@@ -323,9 +331,10 @@
throw new TuttiBusinessException(_("tutti.service.operations.computeWeights.error.incoherentTotal"));
} else {
- catchBatch.setCatchTotalRejectedComputedWeight(totalWeight
- - totalUnsortedWeight
- - totalSortedWeight);
+ catchBatch.setCatchTotalRejectedComputedWeight(
+ TuttiEntities.roundKiloGram(totalWeight
+ - totalUnsortedWeight
+ - totalSortedWeight));
}
} else if (totalWeight == null) {
@@ -333,9 +342,10 @@
rejectedWeight = 0f;
catchBatch.setCatchTotalRejectedComputedWeight(0f);
}
- catchBatch.setCatchTotalComputedWeight(totalUnsortedWeight
- + totalSortedWeight
- + rejectedWeight);
+ catchBatch.setCatchTotalComputedWeight(
+ TuttiEntities.roundKiloGram(totalUnsortedWeight
+ + totalSortedWeight
+ + rejectedWeight));
} else if (!totalWeight.equals(totalUnsortedWeight + totalSortedWeight + rejectedWeight)) {
throw new TuttiBusinessException(_("tutti.service.operations.computeWeights.error.incoherentTotal"));
@@ -410,7 +420,7 @@
if (sum != null) {
if (categoryWeight == null) {
- batch.setSampleCategoryComputedWeight(sum);
+ batch.setSampleCategoryComputedWeight(TuttiEntities.roundKiloGram(sum));
} else if (categoryWeight < sum) {
String categoryLabel = getCategoryLabel(batch.getSampleCategoryId());
@@ -475,7 +485,7 @@
} else if (categoryWeight == null && frequencyWeight != null) {
// if the category weight is null and the frequencies have a weight,
// then this weight is the result
- batch.setSampleCategoryComputedWeight(frequencyWeight);
+ batch.setSampleCategoryComputedWeight(TuttiEntities.roundKiloGram(frequencyWeight));
result = frequencyWeight;
} else if (frequencyWeight != null
@@ -498,7 +508,7 @@
thisIndex);
} else if (rowWeight == null) {
- batch.setComputedWeight(frequencyWeight);
+ batch.setComputedWeight(TuttiEntities.roundKiloGram(frequencyWeight));
}
result = categoryWeight;
@@ -532,7 +542,7 @@
thisIndex);
}
- return result;
+ return TuttiEntities.roundKiloGram(result);
}
private int currentBenthosRowIndex;
@@ -597,7 +607,7 @@
if (sum != null) {
if (categoryWeight == null) {
- batch.setSampleCategoryComputedWeight(sum);
+ batch.setSampleCategoryComputedWeight(TuttiEntities.roundKiloGram(sum));
} else if (categoryWeight < sum) {
String categoryLabel =
@@ -666,7 +676,7 @@
} else if (categoryWeight == null && frequencyWeight != null) {
// if the category weight is null and the frequencies have a weight,
// then this weight is the result
- batch.setSampleCategoryComputedWeight(frequencyWeight);
+ batch.setSampleCategoryComputedWeight(TuttiEntities.roundKiloGram(frequencyWeight));
result = frequencyWeight;
} else if (frequencyWeight != null
@@ -690,7 +700,7 @@
thisIndex);
} else if (rowWeight == null) {
- batch.setComputedWeight(frequencyWeight);
+ batch.setComputedWeight(TuttiEntities.roundKiloGram(frequencyWeight));
}
result = categoryWeight;
@@ -724,7 +734,7 @@
thisIndex);
}
- return result;
+ return TuttiEntities.roundKiloGram(result);
}
public BatchContainer<MarineLitterBatch> getComputedMarineLitterBatches(String fishingOperationId,
1
0
r1362 - trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service
by tchemit@users.forge.codelutin.com 19 Nov '13
by tchemit@users.forge.codelutin.com 19 Nov '13
19 Nov '13
Author: tchemit
Date: 2013-11-19 08:51:45 +0100 (Tue, 19 Nov 2013)
New Revision: 1362
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1362
Log:
fixes #3823: [TECH] Temps d'affichage d'un trait trop lent
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-11-18 09:09:03 UTC (rev 1361)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-11-19 07:51:45 UTC (rev 1362)
@@ -172,7 +172,7 @@
* @see Species#getRefTaxCode()
* @since 0.3
*/
- @Cacheable(value = "referentSpeciesById", key = "#referenceTaxonId", condition = "#referenceTaxonId != null")
+ @Cacheable(value = "referentSpeciesById", key = "#referenceTaxonId")
Species getSpeciesByReferenceTaxonId(Integer referenceTaxonId);
/**
@@ -187,7 +187,7 @@
* @see Species#getVernacularCode()
* @since 2.0
*/
- @Cacheable(value = "referentSpeciesByIdVernacular", key = "#referenceTaxonId", condition = "#referenceTaxonId != null")
+ @Cacheable(value = "referentSpeciesByIdVernacular", key = "#referenceTaxonId")
Species getSpeciesByReferenceTaxonIdWithVernacularCode(Integer referenceTaxonId);
/**
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-11-18 09:09:03 UTC (rev 1361)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-11-19 07:51:45 UTC (rev 1362)
@@ -436,9 +436,9 @@
}
@Override
- public Species getSpeciesByReferenceTaxonId(Integer speciesId) {
+ public Species getSpeciesByReferenceTaxonId(Integer referenceTaxonId) {
Species result = getSpeciesByReferenceTaxonId(
- speciesId,
+ referenceTaxonId,
enumeration.TRANSCRIBING_TYPE_ID_REFTAX);
if (result != null) {
result.setRefTaxCode(result.getExternalCode());
@@ -447,9 +447,9 @@
}
@Override
- public Species getSpeciesByReferenceTaxonIdWithVernacularCode(Integer speciesId) {
+ public Species getSpeciesByReferenceTaxonIdWithVernacularCode(Integer referenceTaxonId) {
Species result = getSpeciesByReferenceTaxonId(
- speciesId,
+ referenceTaxonId,
enumeration.TRANSCRIBING_TYPE_ID_VERNACULAIRE);
if (result != null) {
result.setVernacularCode(result.getExternalCode());
@@ -457,12 +457,12 @@
return result;
}
- protected Species getSpeciesByReferenceTaxonId(Integer speciesId,
+ protected Species getSpeciesByReferenceTaxonId(Integer referenceTaxonId,
Integer transcribingTypeId) {
Species target;
try {
TaxonRefVO source = taxonNameDao.getTaxonNameReferent(
- speciesId, transcribingTypeId);
+ referenceTaxonId, transcribingTypeId);
target = loadSpecies(source);
} catch (DataRetrievalFailureException drfe) {
target = null;
@@ -769,7 +769,7 @@
// Fill the result bean
Person result = Persons.newPerson();
- result.setId(target.getId().toString());
+ result.setId(target.getId());
result.setLastName(source.getLastName());
result.setFirstName(source.getFirstName());
setStatus(status, result);
@@ -792,7 +792,7 @@
// Add to cache
Cache cache = cacheService.getCache("referentSpeciesById");
- cache.put(Integer.valueOf(result.getId()), result);
+ cache.put(result.getIdAsInt(), result);
return result;
}
@@ -813,7 +813,7 @@
// Fill the result bean
Gear result = Gears.newGear();
- result.setId(target.getId().toString());
+ result.setId(target.getId());
result.setLabel(source.getLabel());
result.setName(source.getName());
result.setScientificGear(source.isScientificGear());
@@ -843,7 +843,7 @@
Integer pmfmId = (Integer) source[0];
Caracteristic result = Caracteristics.newCaracteristic();
- result.setId(pmfmId.toString());
+ result.setId(pmfmId);
result.setParameterName((String) source[1]);
result.setMatrixName((String) source[2]);
result.setFractionName((String) source[3]);
@@ -892,7 +892,7 @@
protected Species loadSpecies(TaxonRefVO source) {
Species target = Speciess.newSpecies();
- target.setId(String.valueOf(source.getTaxonNameId()));
+ target.setId(source.getTaxonNameId());
target.setName(source.getName());
target.setExternalCode(source.getExternalCode());
target.setReferenceTaxonId(source.getReferenceTaxonId());
@@ -941,7 +941,7 @@
protected TuttiLocation loadLocation(Object[] source) {
TuttiLocation target = TuttiLocations.newTuttiLocation();
- target.setId(String.valueOf(source[0]));
+ target.setId((Integer) source[0]);
target.setLabel((String) source[1]);
target.setName((String) source[2]);
setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[3], target);
1
0
r1361 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches: benthos/frequency species/frequency
by tchemit@users.forge.codelutin.com 18 Nov '13
by tchemit@users.forge.codelutin.com 18 Nov '13
18 Nov '13
Author: tchemit
Date: 2013-11-18 10:09:03 +0100 (Mon, 18 Nov 2013)
New Revision: 1361
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1361
Log:
fixes #3807: [CAPTURE] mensurations, non r?\195?\169initialisation des champs taile min et max entre deux ouverture de l'?\195?\169cran...
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-11-17 17:39:59 UTC (rev 1360)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-11-18 09:09:03 UTC (rev 1361)
@@ -427,22 +427,22 @@
Float maxStep = model.getLengthStep(model.getMaxStep());
Caracteristic lengthStepCaracteristic = model.getLengthStepCaracteristic();
+ Set<Float> existingKeys = Sets.newHashSet(rowsByStep.keySet());
+ List<BenthosFrequencyRowModel> rows = Lists.newArrayList(rowsByStep.values());
+
for (float i = minStep, step = model.getStep(); i <= maxStep;
i = TuttiUIUtil.getRoundedLengthStep(i + step, true)) {
- if (!rowsByStep.containsKey(i)) {
+ if (!existingKeys.contains(i)) {
// add it
BenthosFrequencyRowModel newRow = tableModel.createNewRow();
newRow.setLengthStep(i);
newRow.setLengthStepCaracteristic(lengthStepCaracteristic);
- rowsByStep.put(i, newRow);
+ rows.add(newRow);
}
}
-
- List<BenthosFrequencyRowModel> rows =
- Lists.newArrayList(rowsByStep.values());
-
+ Collections.sort(rows);
model.setRows(rows);
// select first cell in table (see http://forge.codelutin.com/issues/2496)
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-11-17 17:39:59 UTC (rev 1360)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-11-18 09:09:03 UTC (rev 1361)
@@ -424,22 +424,22 @@
Float maxStep = model.getLengthStep(model.getMaxStep());
Caracteristic lengthStepCaracteristic = model.getLengthStepCaracteristic();
+ Set<Float> existingKeys = Sets.newHashSet(rowsByStep.keySet());
+ List<SpeciesFrequencyRowModel> rows = Lists.newArrayList(rowsByStep.values());
+
for (float i = minStep, step = model.getStep(); i <= maxStep;
i = TuttiUIUtil.getRoundedLengthStep(i + step, true)) {
- if (!rowsByStep.containsKey(i)) {
+ if (!existingKeys.contains(i)) {
// add it
SpeciesFrequencyRowModel newRow = tableModel.createNewRow();
newRow.setLengthStep(i);
newRow.setLengthStepCaracteristic(lengthStepCaracteristic);
- rowsByStep.put(i, newRow);
+ rows.add(newRow);
}
}
-
- List<SpeciesFrequencyRowModel> rows =
- Lists.newArrayList(rowsByStep.values());
-
+ Collections.sort(rows);
model.setRows(rows);
// select first cell in table (see http://forge.codelutin.com/issues/2496)
1
0