This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 427c9fe38f45da69c98aca7e918aeb51ec29d775 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 6 19:37:29 2015 +0100 - introduce CsvProducer API - use it also for referential export - move TuttiCsvUtil to his new csv package --- .../AbstractFishingOperationRowModel.java | 2 +- .../catches/multipost/AccidentalCatchRowModel.java | 2 +- .../catches/multipost/CaracteristicRowModel.java | 2 +- .../catches/multipost/CatchBatchRowModel.java | 2 +- .../catches/multipost/CatchFrequencyRowModel.java | 2 +- .../service/catches/multipost/CatchRowModel.java | 2 +- .../catches/multipost/CatchWeightsRowModel.java | 2 +- .../multipost/IndividualObservationRowModel.java | 2 +- .../catches/multipost/MarineLitterRowModel.java | 2 +- .../multipost/MarineLitterWeightRowModel.java | 2 +- .../service/csv/AbstractTuttiExportModel.java | 3 +- .../csv/AbstractTuttiImportExportModel.java | 3 +- .../service/csv/AbstractTuttiImportModel.java | 2 +- .../tutti/service/csv/BeanIndexNullableGetter.java | 2 +- .../tutti/service/csv/BeanNullableGetter.java | 2 +- .../tutti/service/csv/BeanPropertyFormatter.java | 2 +- .../service/csv/CaracteristicValueFormatter.java | 2 +- .../fr/ifremer/tutti/service/csv/CsvProducer.java | 58 +++++ .../service/csv/DecoratorPropertyFormatter.java | 2 +- .../service/csv/EnumByNameParserFormatter.java | 2 +- .../tutti/service/csv/ListGearFormatter.java | 2 +- .../tutti/service/csv/ListIntegerFormatter.java | 2 +- .../tutti/service/csv/ListPersonFormatter.java | 2 +- .../tutti/service/csv/ListVesselFormatter.java | 2 +- .../tutti/service/csv/StringParserFormatter.java | 2 +- .../tutti/service/{ => csv}/TuttiCsvUtil.java | 2 +- .../tutti/service/csv/TuttiRepeatableExport.java | 2 +- .../ifremer/tutti/service/csv/VesselFormatter.java | 2 +- .../export/generic/GlobalExportContext.java | 265 -------------------- .../service/export/sumatra/CatchRowModel.java | 2 +- .../GenericFormatExportService.java} | 268 ++++++++++----------- .../service/genericformat/GlobalExportContext.java | 240 ++++++++++++++++++ .../GlobalImportContext.java | 6 +- .../OperationExportContext.java | 2 +- .../csv/AccidentalCatchModel.java | 98 +------- .../csv/AccidentalCatchRow.java | 2 +- .../service/genericformat/csv/CatchModel.java | 169 +++++++++++++ .../generic => genericformat}/csv/CatchRow.java | 2 +- .../csv/ExportSampleCategory.java | 2 +- .../csv/GearCaracteristicModel.java | 33 +-- .../csv/GearCaracteristicRow.java | 2 +- .../csv/IndividualObservationModel.java | 84 +------ .../csv/IndividualObservationRow.java | 2 +- .../csv/MarineLitterModel.java | 33 +-- .../csv/MarineLitterRow.java | 2 +- .../csv/OperationModel.java | 19 +- .../csv/OperationRow.java | 2 +- .../csv/ParameterModel.java | 45 +--- .../csv/ParameterRow.java | 2 +- .../csv/SpeciesExportModel.java | 55 +---- .../csv/SpeciesExportRow.java | 2 +- .../generic => genericformat}/csv/SurveyModel.java | 15 +- .../generic => genericformat}/csv/SurveyRow.java | 2 +- .../producer/CsvProducerForAccidentalCatch.java | 115 +++++++++ .../producer/CsvProducerForCatch.java} | 171 ++----------- .../producer/CsvProducerForGearCaracteristics.java | 50 ++++ .../CsvProducerForIndividualObservation.java | 100 ++++++++ .../producer/CsvProducerForMarineLitter.java | 49 ++++ .../producer/CsvProducerForOperation.java | 35 +++ .../producer/CsvProducerForParameter.java | 62 +++++ .../producer/CsvProducerForSpecies.java | 97 ++++++++ .../producer/CsvProducerForSurvey.java | 32 +++ .../operationimport/ImportFromColumnFileModel.java | 2 +- .../service/protocol/CaracteristicRowModel.java | 2 +- .../tutti/service/protocol/SpeciesRowModel.java | 2 +- .../service/pupitri/csv/CarrouselRowModel.java | 2 +- .../tutti/service/pupitri/csv/TrunkRowModel.java | 2 +- .../ReferentialTemporaryGearService.java | 22 +- .../ReferentialTemporaryPersonService.java | 24 +- .../ReferentialTemporarySpeciesService.java | 23 +- .../ReferentialTemporaryVesselService.java | 25 +- .../tutti/service/referential/csv/GearModel.java | 36 ++- .../tutti/service/referential/csv/PersonModel.java | 36 ++- .../service/referential/csv/SpeciesModel.java | 36 ++- .../tutti/service/referential/csv/VesselModel.java | 36 ++- .../producer/CsvProducerForTemporaryGear.java | 38 +++ .../producer/CsvProducerForTemporaryPerson.java | 38 +++ .../producer/CsvProducerForTemporarySpecies.java | 38 +++ .../producer/CsvProducerForTemporaryVessel.java | 38 +++ .../tutti/service/report/ReportService.java | 4 +- .../GenericFormatExportService2Test.java} | 8 +- .../GenericFormatExportServiceAno5804Test.java} | 8 +- .../GenericFormatExportServiceTest.java} | 14 +- .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 6 +- .../tutti/ui/swing/action/ExportCruiseAction.java | 4 +- .../tutti/ui/swing/action/ExportProgramAction.java | 4 +- .../GearCaracteristicListCellRenderer.java | 2 +- 87 files changed, 1536 insertions(+), 1093 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRowModel.java index ad7b73b..1897dd4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRowModel.java @@ -22,7 +22,7 @@ package fr.ifremer.tutti.service.catches.multipost; * #L% */ -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; /** diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java index 85f4704..c15f738 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.service.catches.multipost; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.List; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java index b849953..4b90e05 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.List; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java index c8f4e00..503ac9e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.service.catches.multipost; * #L% */ -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; /** * Created on 11/15/14. diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java index 2039484..3331f48 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.List; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java index 54e1594..9014d90 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.List; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java index a120648..569739a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java @@ -22,7 +22,7 @@ package fr.ifremer.tutti.service.catches.multipost; * #L% */ -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; /** * @author kmorin <kmorin@codelutin.com> diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java index e6a1773..ff35722 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.service.catches.multipost; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.List; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java index d42c79a..628230d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.List; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java index 0a6e41b..64ff121 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java @@ -22,7 +22,7 @@ package fr.ifremer.tutti.service.catches.multipost; * #L% */ -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; /** * @author kmorin <kmorin@codelutin.com> diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiExportModel.java index eab7599..ac3febb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiExportModel.java @@ -1,6 +1,5 @@ package fr.ifremer.tutti.service.csv; -import fr.ifremer.tutti.service.TuttiCsvUtil; import org.nuiton.csv.ExportableColumn; import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ext.AbstractExportModel; @@ -10,7 +9,7 @@ import org.nuiton.decorator.Decorator; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public abstract class AbstractTuttiExportModel<M> extends AbstractExportModel<M> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java index 75a7ae2..f915145 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java @@ -5,7 +5,6 @@ import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.TuttiEntity; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Speciess; -import fr.ifremer.tutti.service.TuttiCsvUtil; import org.nuiton.csv.ExportableColumn; import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ext.AbstractImportExportModel; @@ -18,7 +17,7 @@ import java.util.Map; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportExportModel<M> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java index 19093f9..9a6f4ff 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java @@ -9,7 +9,7 @@ import java.util.Map; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public abstract class AbstractTuttiImportModel<M> extends AbstractImportModel<M> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java index d51b573..c665a86 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java @@ -11,7 +11,7 @@ import java.util.Collection; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class BeanIndexNullableGetter<E, T> implements ValueGetter<E, T> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java index f06d10f..25048eb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java @@ -10,7 +10,7 @@ import java.lang.reflect.InvocationTargetException; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class BeanNullableGetter<E, T> implements ValueGetter<E, T> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java index 2824fe0..30620c6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java @@ -10,7 +10,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class BeanPropertyFormatter<E> implements ValueFormatter<E> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java index 6ba8f5f..5ff567a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java @@ -11,7 +11,7 @@ import java.io.Serializable; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class CaracteristicValueFormatter implements ValueFormatter<Serializable> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java new file mode 100644 index 0000000..a1dbdc4 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java @@ -0,0 +1,58 @@ +package fr.ifremer.tutti.service.csv; + +import com.google.common.base.Charsets; +import com.google.common.io.Files; +import org.apache.commons.io.IOUtils; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.BufferedWriter; +import java.io.Closeable; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public abstract class CsvProducer<O, M extends AbstractTuttiImportExportModel<O>> implements Closeable { + + private final BufferedWriter writer; + + private final TuttiRepeatableExport<O> export; + + public CsvProducer(File file, M model) { + + try { + this.writer = Files.newWriter(file, Charsets.UTF_8); + } catch (FileNotFoundException e) { + // should never happen + throw new ApplicationTechnicalException("file not found " + file, e); + } + + this.export = TuttiCsvUtil.newRepeatableExport(model); + + } + + @Override + public void close() throws IOException { + IOUtils.closeQuietly(writer); + } + + public void write(O row) throws Exception { + + List<O> rows = new ArrayList<>(); + rows.add(row); + write(rows); + + } + + public void write(List<O> rows) throws Exception { + export.write(rows, writer); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java index b290585..536cf39 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java @@ -10,7 +10,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class DecoratorPropertyFormatter<E> implements ValueFormatter<E> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java index d8d2513..d30d11a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java @@ -11,7 +11,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class EnumByNameParserFormatter<E extends Enum<E>> implements ValueParserFormatter<E> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListGearFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListGearFormatter.java index cec4f1f..5194ca5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListGearFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListGearFormatter.java @@ -12,7 +12,7 @@ import java.util.List; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class ListGearFormatter implements ValueFormatter<List<Gear>> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java index a915cf5..4b374d5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java @@ -13,7 +13,7 @@ import java.util.List; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class ListIntegerFormatter implements ValueParserFormatter<List<Integer>> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java index ce6f749..bc3df5d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java @@ -12,7 +12,7 @@ import java.util.List; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class ListPersonFormatter implements ValueFormatter<List<Person>> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java index e5ad93c..ce3f2ef 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java @@ -13,7 +13,7 @@ import java.util.List; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class ListVesselFormatter implements ValueFormatter<List<Vessel>> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java index f3aae34..785654c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java @@ -6,7 +6,7 @@ import org.nuiton.csv.Common; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class StringParserFormatter extends Common.NullableParserFormatter<String> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index 4b472f2..9e16ce2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service; +package fr.ifremer.tutti.service.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java index 6431400..e273d4b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java @@ -10,7 +10,7 @@ import java.util.Collections; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class TuttiRepeatableExport<E> extends RepeatableExport<E> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java index a355239..f88f19f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java @@ -7,7 +7,7 @@ import org.nuiton.csv.ValueFormatter; * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com -* @since XXX +* @since 3.13 */ public class VesselFormatter implements ValueFormatter<Vessel> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalExportContext.java deleted file mode 100644 index 1b92764..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalExportContext.java +++ /dev/null @@ -1,265 +0,0 @@ -package fr.ifremer.tutti.service.export.generic; - -import com.google.common.base.Charsets; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.io.Files; -import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.TuttiCsvUtil; -import fr.ifremer.tutti.service.csv.TuttiRepeatableExport; -import fr.ifremer.tutti.service.export.generic.csv.AccidentalCatchModel; -import fr.ifremer.tutti.service.export.generic.csv.AccidentalCatchRow; -import fr.ifremer.tutti.service.export.generic.csv.CatchModel; -import fr.ifremer.tutti.service.export.generic.csv.CatchRow; -import fr.ifremer.tutti.service.export.generic.csv.GearCaracteristicModel; -import fr.ifremer.tutti.service.export.generic.csv.GearCaracteristicRow; -import fr.ifremer.tutti.service.export.generic.csv.IndividualObservationModel; -import fr.ifremer.tutti.service.export.generic.csv.IndividualObservationRow; -import fr.ifremer.tutti.service.export.generic.csv.MarineLitterModel; -import fr.ifremer.tutti.service.export.generic.csv.MarineLitterRow; -import fr.ifremer.tutti.service.export.generic.csv.OperationModel; -import fr.ifremer.tutti.service.export.generic.csv.OperationRow; -import fr.ifremer.tutti.service.export.generic.csv.ParameterModel; -import fr.ifremer.tutti.service.export.generic.csv.ParameterRow; -import fr.ifremer.tutti.service.export.generic.csv.SpeciesExportModel; -import fr.ifremer.tutti.service.export.generic.csv.SpeciesExportRow; -import fr.ifremer.tutti.service.export.generic.csv.SurveyModel; -import fr.ifremer.tutti.service.export.generic.csv.SurveyRow; -import org.apache.commons.io.IOUtils; -import org.nuiton.jaxx.application.ApplicationTechnicalException; - -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.t; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class GlobalExportContext implements Closeable { - - File protocolFile; - - File temporaryGearFile; - - File temporaryPersonFile; - - File temporarySpeciesFile; - - File temporaryVesselFile; - - 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; - - SurveyModel surveyModel; - - GearCaracteristicModel gearCaracteristicsModel; - - OperationModel operationModel; - - MarineLitterModel marineLitterModel; - - ParameterModel parameterModel; - - CatchModel catchModel; - - AccidentalCatchModel accidentalCatchModel; - - IndividualObservationModel individualObservationModel; - - SpeciesExportModel speciesModel; - - final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap(); - - TuttiRepeatableExport<SurveyRow> surveyExport; - - TuttiRepeatableExport<GearCaracteristicRow> gearCaracteristicsExport; - - TuttiRepeatableExport<OperationRow> operationExport; - - TuttiRepeatableExport<MarineLitterRow> marineLitterExport; - - TuttiRepeatableExport<ParameterRow> parameterExport; - - TuttiRepeatableExport<CatchRow> catchExport; - - TuttiRepeatableExport<AccidentalCatchRow> accidentalCatchExport; - - TuttiRepeatableExport<IndividualObservationRow> individualObservationExport; - - TuttiRepeatableExport<SpeciesExportRow> speciesExport; - - private final SampleCategoryModel sampleCategoryModel; - - Map<String, Species> speciesById; - - String checkError; - - GlobalExportContext(File basedir, - char csvSeparator, - DecoratorService decoratorService, - SampleCategoryModel sampleCategoryModel, - Map<String, Species> speciesById) { - this.sampleCategoryModel = sampleCategoryModel; - - this.speciesById = speciesById; - try { - - protocolFile = new File(basedir, "protocol.tuttiProtocol"); - temporaryGearFile = new File(basedir, "temporayGear.csv"); - temporaryPersonFile = new File(basedir, "temporayPerson.csv"); - temporarySpeciesFile = new File(basedir, "temporaySpecies.csv"); - temporaryVesselFile = new File(basedir, "temporayVessel.csv"); - - 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 ApplicationTechnicalException(t("tutti.service.export.context.error"), e); - } - - surveyModel = SurveyModel.forExport(csvSeparator); - gearCaracteristicsModel = GearCaracteristicModel.forExport(csvSeparator, decoratorService); - operationModel = OperationModel.forExport(csvSeparator, decoratorService); - parameterModel = ParameterModel.forExport(csvSeparator, decoratorService); - marineLitterModel = MarineLitterModel.forExport(csvSeparator); - catchModel = CatchModel.forExport(csvSeparator, sampleCategoryModel, decoratorService); - accidentalCatchModel = AccidentalCatchModel.forExport(csvSeparator); - individualObservationModel = IndividualObservationModel.forExport(csvSeparator); - speciesModel = SpeciesExportModel.forExport(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); - // add the survey code (see http://forge.codelutin.com/issues/4799) - species.setSurveyCode(fullSpecies.getSurveyCode()); - } - } - - 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; - } - - public SampleCategoryModel getSampleCategoryModel() { - return sampleCategoryModel; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java index f606a43..a2001f6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.export.sumatra; */ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.export.ExportBatchEntry; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java similarity index 74% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java index 9ed9bd1..55c00c3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.genericformat; /* * #%L @@ -24,7 +24,6 @@ package fr.ifremer.tutti.service.export.generic; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -36,7 +35,6 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -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.Person; @@ -48,20 +46,37 @@ import fr.ifremer.tutti.service.DecoratorService; 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.generic.csv.AccidentalCatchRow; -import fr.ifremer.tutti.service.export.generic.csv.CatchRow; -import fr.ifremer.tutti.service.export.generic.csv.GearCaracteristicRow; -import fr.ifremer.tutti.service.export.generic.csv.IndividualObservationRow; -import fr.ifremer.tutti.service.export.generic.csv.MarineLitterRow; -import fr.ifremer.tutti.service.export.generic.csv.OperationRow; -import fr.ifremer.tutti.service.export.generic.csv.ParameterRow; -import fr.ifremer.tutti.service.export.generic.csv.SpeciesExportRow; -import fr.ifremer.tutti.service.export.generic.csv.SurveyRow; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; +import fr.ifremer.tutti.service.genericformat.csv.CatchRow; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; +import fr.ifremer.tutti.service.genericformat.csv.OperationRow; +import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; +import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportRow; +import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAccidentalCatch; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForCatch; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForGearCaracteristics; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForIndividualObservation; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForMarineLitter; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForOperation; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForParameter; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSpecies; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSurvey; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; +import fr.ifremer.tutti.service.referential.csv.GearRow; +import fr.ifremer.tutti.service.referential.csv.PersonRow; +import fr.ifremer.tutti.service.referential.csv.SpeciesRow; +import fr.ifremer.tutti.service.referential.csv.VesselRow; import fr.ifremer.tutti.util.Numbers; import org.apache.commons.collections4.MapUtils; import org.apache.commons.io.IOUtils; @@ -73,8 +88,6 @@ import org.nuiton.jaxx.application.ApplicationIOUtil; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; -import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -88,16 +101,16 @@ import static org.nuiton.i18n.I18n.t; * @author tchemit <chemit@codelutin.com> * @since 1.3 */ -public class TuttiExportService extends AbstractTuttiService { +public class GenericFormatExportService extends AbstractTuttiService { - private static final Log log = LogFactory.getLog(TuttiExportService.class); + private static final Log log = LogFactory.getLog(GenericFormatExportService.class); protected PersistenceService persistenceService; - protected DecoratorService decoratorService; - protected WeightComputingService weightComputingService; + protected DecoratorService decoratorService; + protected ReferentialTemporaryGearService referentialTemporaryGearService; protected ReferentialTemporaryPersonService referentialTemporaryPersonService; @@ -108,22 +121,9 @@ public class TuttiExportService extends AbstractTuttiService { protected ProtocolImportExportService protocolImportExportService; - protected Caracteristic verticalOpeningCaracteristic; - - protected Caracteristic horizontalOpeningWingCaracteristic; - - protected Caracteristic horizontalOpeningDoorCaracteristic; - - 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); @@ -134,13 +134,6 @@ public class TuttiExportService extends AbstractTuttiService { referentialTemporaryVesselService = getService(ReferentialTemporaryVesselService.class); protocolImportExportService = getService(ProtocolImportExportService.class); - verticalOpeningCaracteristic = persistenceService.getVerticalOpeningCaracteristic(); - horizontalOpeningWingCaracteristic = persistenceService.getHorizontalOpeningWingsCaracteristic(); - horizontalOpeningDoorCaracteristic = persistenceService.getHorizontalOpeningDoorCaracteristic(); - weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic(); - pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic(); - deadOrAliveCaracteristic = persistenceService.getDeadOrAliveCaracteristic(); - genderCaracteristic = persistenceService.getSexCaracteristic(); } public ProgressionModel createExportProgramProgessionModel(String programId) { @@ -157,6 +150,7 @@ public class TuttiExportService extends AbstractTuttiService { } public void exportProgram(String programId, File exportFile, ProgressionModel progressionModel) { + Preconditions.checkNotNull(programId); Preconditions.checkNotNull(exportFile); @@ -167,8 +161,6 @@ public class TuttiExportService extends AbstractTuttiService { log.debug("Will export program: " + programId); } - operationContexts.clear(); - List<Cruise> allCruise = persistenceService.getAllCruise(programId); File basedir = new File(context.getConfig().newTempFile("exportProgram"), "exportProgram-" + programId); @@ -213,8 +205,6 @@ public class TuttiExportService extends AbstractTuttiService { Cruise cruise = persistenceService.getCruise(cruiseId); Preconditions.checkNotNull(cruise); - operationContexts.clear(); - if (log.isDebugEnabled()) { log.debug("Will export cruise: " + cruiseId); } @@ -273,42 +263,35 @@ public class TuttiExportService extends AbstractTuttiService { protected void exportTemporaryGears(GlobalExportContext exportContext, ProgressionModel progressionModel) { List<Gear> temporaryGears = referentialTemporaryGearService.getTemporaryGears(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryGear", temporaryGears.size())); - if (temporaryGears.isEmpty()) { - - increments(progressionModel, t("tutti.service.genericExport.skipTemporaryGearExport")); - } else { + try { - increments(progressionModel, t("tutti.service.genericExport.exportTemporaryGear", temporaryGears.size())); + CsvProducerForTemporaryGear producerForTemporarySpecies = exportContext.getProducerForTemporaryGear(); - try { - referentialTemporaryGearService.exportTemporaryGear(exportContext.temporaryGearFile, temporaryGears); - } catch (IOException e) { - throw new ApplicationTechnicalException("Could not export temporary gears", e); - } + List<GearRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryGears); + producerForTemporarySpecies.write(dataToExport); + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary gear", e); } } - protected void exportTemporaryPersons(GlobalExportContext exportContext, ProgressionModel progressionModel) { List<Person> temporaryPersons = referentialTemporaryPersonService.getTemporaryPersons(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryPerson", temporaryPersons.size())); - if (temporaryPersons.isEmpty()) { + try { - increments(progressionModel, t("tutti.service.genericExport.skipTemporaryPersonExport")); - } else { + CsvProducerForTemporaryPerson producerForTemporarySpecies = exportContext.getProducerForTemporaryPerson(); - increments(progressionModel, t("tutti.service.genericExport.exportTemporaryPerson", temporaryPersons.size())); - - try { - referentialTemporaryPersonService.exportTemporaryPerson(exportContext.temporaryPersonFile, temporaryPersons); - } catch (IOException e) { - throw new ApplicationTechnicalException("Could not export temporary person", e); - } + List<PersonRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryPersons); + producerForTemporarySpecies.write(dataToExport); + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary person", e); } } @@ -316,20 +299,17 @@ public class TuttiExportService extends AbstractTuttiService { protected void exportTemporarySpeciess(GlobalExportContext exportContext, ProgressionModel progressionModel) { List<Species> temporarySpeciess = referentialTemporarySpeciesService.getTemporarySpeciess(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporarySpecies", temporarySpeciess.size())); - if (temporarySpeciess.isEmpty()) { - - increments(progressionModel, t("tutti.service.genericExport.skipTemporarySpeciesExport")); - } else { + try { - increments(progressionModel, t("tutti.service.genericExport.exportTemporarySpecies", temporarySpeciess.size())); + CsvProducerForTemporarySpecies producerForTemporarySpecies = exportContext.getProducerForTemporarySpecies(); - try { - referentialTemporarySpeciesService.exportTemporarySpecies(exportContext.temporarySpeciesFile, temporarySpeciess); - } catch (IOException e) { - throw new ApplicationTechnicalException("Could not export temporary species", e); - } + List<SpeciesRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporarySpeciess); + producerForTemporarySpecies.write(dataToExport); + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary species", e); } } @@ -337,20 +317,17 @@ public class TuttiExportService extends AbstractTuttiService { protected void exportTemporaryVessels(GlobalExportContext exportContext, ProgressionModel progressionModel) { List<Vessel> temporaryVessels = referentialTemporaryVesselService.getTemporaryVessels(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryVessel", temporaryVessels.size())); - if (temporaryVessels.isEmpty()) { - - increments(progressionModel, t("tutti.service.genericExport.skipTemporaryVesselExport")); - } else { + try { - increments(progressionModel, t("tutti.service.genericExport.exportTemporaryVessel", temporaryVessels.size())); + CsvProducerForTemporaryVessel producerForTemporaryVessel = exportContext.getProducerForTemporaryVessel(); - try { - referentialTemporaryVesselService.exportTemporaryVessel(exportContext.temporaryVesselFile, temporaryVessels); - } catch (IOException e) { - throw new ApplicationTechnicalException("Could not export temporary vessels", e); - } + List<VesselRow> dataToExport = producerForTemporaryVessel.getDataToExport(temporaryVessels); + producerForTemporaryVessel.write(dataToExport); + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary vessels", e); } } @@ -370,8 +347,6 @@ public class TuttiExportService extends AbstractTuttiService { Cruise cruise = persistenceService.getCruise(cruiseId); Preconditions.checkNotNull(cruise); - operationContexts.clear(); - if (log.isDebugEnabled()) { log.debug("Will export cruise: " + cruiseId); } @@ -412,14 +387,12 @@ public class TuttiExportService extends AbstractTuttiService { protected GlobalExportContext createExportContext(File basedir) { - List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); - Map<String, Species> speciesById = TuttiEntities.splitById(allReferentSpecies); - return new GlobalExportContext(basedir, ';', + persistenceService, + weightComputingService, decoratorService, - context.getSampleCategoryModel(), - speciesById); + context.getSampleCategoryModel()); } @@ -466,7 +439,7 @@ public class TuttiExportService extends AbstractTuttiService { TuttiProtocol protocol = persistenceService.getProtocol(); increments(progressionModel, t("tutti.service.genericExport.exportProtocol", protocol.getName())); - protocolImportExportService.exportProtocol(protocol, exportContext.protocolFile); + protocolImportExportService.exportProtocol(protocol, exportContext.getProtocolFile()); } else { increments(progressionModel, t("tutti.service.genericExport.skipProtocolExport")); @@ -516,7 +489,7 @@ public class TuttiExportService extends AbstractTuttiService { exportCatches(exportContext, cruise, loadedOperations); increments(progressionModel, t("tutti.service.exportCruise.exportSpecies", cruiseName)); - exportSpecies(exportContext, exportContext.getSpeciesToExport()); + exportSpecies(exportContext); } protected void exportSurvey(GlobalExportContext exportContext, Cruise cruise) { @@ -527,11 +500,11 @@ public class TuttiExportService extends AbstractTuttiService { try { - List<SurveyRow> rows = new ArrayList<>(); - SurveyRow surveyRow = exportContext.surveyModel.getDataToExport(cruise, country); - rows.add(surveyRow); + CsvProducerForSurvey producerForSurvey = exportContext.getProducerForSurvey(); + + SurveyRow surveyRow = producerForSurvey.getDataToExport(cruise, country); + producerForSurvey.write(surveyRow); - exportContext.surveyExport.write(rows, exportContext.surveyWriter); } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.export.survey.error"), e); } @@ -540,21 +513,23 @@ public class TuttiExportService extends AbstractTuttiService { protected void exportGearCaracteristics(GlobalExportContext exportContext, Cruise cruise) { try { + CsvProducerForGearCaracteristics producerForGearCaracteristics = exportContext.getProducerForGearCaracteristics(); + List<GearCaracteristicRow> rows = Lists.newArrayList(); for (Gear gear : cruise.getGear()) { - CaracteristicMap caracteristics = - persistenceService.getGearCaracteristics(cruise.getId(), gear.getId(), gear.getRankOrder()); - + CaracteristicMap caracteristics = persistenceService.getGearCaracteristics(cruise.getId(), gear.getId(), gear.getRankOrder()); Gear gearWithCaracteristics = Gears.newGear(gear); gearWithCaracteristics.setCaracteristics(caracteristics); - List<GearCaracteristicRow> dataToExport = exportContext.gearCaracteristicsModel.getDataToExport(cruise, gearWithCaracteristics); + + List<GearCaracteristicRow> dataToExport = producerForGearCaracteristics.getDataToExport(cruise, gearWithCaracteristics); rows.addAll(dataToExport); } - exportContext.gearCaracteristicsExport.write(rows, exportContext.gearCaracteristicsWriter); + producerForGearCaracteristics.write(rows); + } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.export.gearCaracteristics.error"), e); } @@ -564,18 +539,22 @@ public class TuttiExportService extends AbstractTuttiService { try { + CsvProducerForOperation producerForOperation = exportContext.getProducerForOperation(); + List<OperationRow> rows = Lists.newArrayList(); for (FishingOperation operation : operations) { - OperationExportContext operationContext = getOperationContext(exportContext, cruise, operation); + OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); CatchBatch catchBatch = operationContext.getCatchBatch(); - OperationRow operationRow = exportContext.operationModel.getDataToExport(cruise, operation, catchBatch); + + OperationRow operationRow = producerForOperation.getDataToExport(cruise, operation, catchBatch); rows.add(operationRow); } - exportContext.operationExport.write(rows, exportContext.operationWriter); + producerForOperation.write(rows); + } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.export.operations.error"), e); } @@ -585,9 +564,13 @@ public class TuttiExportService extends AbstractTuttiService { try { + CsvProducerForParameter producerForParameter = exportContext.getProducerForParameter(); + for (FishingOperation operation : operations) { - List<ParameterRow> rows = exportContext.parameterModel.getDataToExport(cruise, operation); - exportContext.parameterExport.write(rows, exportContext.parameterWriter); + + List<ParameterRow> rows = producerForParameter.getDataToExport(cruise, operation); + producerForParameter.write(rows); + } } catch (Exception e) { @@ -599,15 +582,19 @@ public class TuttiExportService extends AbstractTuttiService { try { + CsvProducerForMarineLitter producerForMarineLitter = exportContext.getProducerForMarineLitter(); + for (FishingOperation operation : operations) { - OperationExportContext operationContext = getOperationContext(exportContext, cruise, operation); + OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { continue; } - List<MarineLitterRow> rows = exportContext.marineLitterModel.getDataToExport(operationContext); - exportContext.marineLitterExport.write(rows, exportContext.marineLitterWriter); + + List<MarineLitterRow> rows = producerForMarineLitter.getDataToExport(operationContext); + producerForMarineLitter.write(rows); + } } catch (Exception e) { @@ -619,16 +606,19 @@ public class TuttiExportService extends AbstractTuttiService { try { + CsvProducerForIndividualObservation producerForIndividualObservation = exportContext.getProducerForIndividualObservation(); + CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); + for (FishingOperation operation : operations) { - OperationExportContext operationContext = getOperationContext(exportContext, cruise, operation); + OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { continue; } - List<IndividualObservationRow> rows = exportContext.individualObservationModel.getDataToExport(operationContext); - exportContext.speciesModel.prepareIndividualRows(exportContext, rows); - exportContext.individualObservationExport.write(rows, exportContext.individualObservationWriter); + List<IndividualObservationRow> rows = producerForIndividualObservation.getDataToExport(operationContext); + producerForSpecies.prepareIndividualRows(exportContext, rows); + producerForIndividualObservation.write(rows); } } catch (Exception e) { @@ -639,13 +629,16 @@ public class TuttiExportService extends AbstractTuttiService { protected void exportAccidentalCatch(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { + CsvProducerForAccidentalCatch producerForAccidentalCatch = exportContext.getProducerForAccidentalCatch(); + CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); + for (FishingOperation operation : operations) { - OperationExportContext operationContext = getOperationContext(exportContext, cruise, operation); + OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); - List<AccidentalCatchRow> rows = exportContext.accidentalCatchModel.getDataToExport(operationContext); - exportContext.speciesModel.prepareAccidentalRows(exportContext, rows); - exportContext.accidentalCatchExport.write(rows, exportContext.accidentalCatchWriter); + List<AccidentalCatchRow> rows = producerForAccidentalCatch.getDataToExport(operationContext); + producerForSpecies.prepareAccidentalRows(exportContext, rows); + producerForAccidentalCatch.write(rows); } } catch (Exception e) { @@ -658,7 +651,7 @@ public class TuttiExportService extends AbstractTuttiService { for (FishingOperation operation : operations) { - OperationExportContext operationContext = getOperationContext(exportContext, cruise, operation); + OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { @@ -682,9 +675,11 @@ public class TuttiExportService extends AbstractTuttiService { BatchContainer<BenthosBatch> rootBenthosBatch = operationContext.getRootBenthosBatch(); + CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); + // Warning! This will also add the survey code to batch species - exportContext.speciesModel.prepareSpeciesBatchRows(exportContext, rootSpeciesBatch); - exportContext.speciesModel.prepareBenthosBatchRows(exportContext, rootBenthosBatch); + producerForSpecies.prepareSpeciesBatchRows(exportContext, rootSpeciesBatch); + producerForSpecies.prepareBenthosBatchRows(exportContext, rootBenthosBatch); Float totalWeight = Numbers.getValueOrComputedValue( catchBatch.getCatchTotalWeight(), @@ -692,7 +687,6 @@ public class TuttiExportService extends AbstractTuttiService { Float totalUnsortedWeight = catchBatch.getCatchTotalUnsortedComputedWeight(); - Float totalSortedSpeciesWeight = Numbers.getValueOrComputedValue( catchBatch.getSpeciesTotalSortedWeight(), catchBatch.getSpeciesTotalSortedComputedWeight()); @@ -728,39 +722,27 @@ public class TuttiExportService extends AbstractTuttiService { log.debug(message); } - List<CatchRow> rows = exportContext.catchModel.getDataToExport(operationContext, - speciesCatchRaisingFactor, - benthosCatchRaisingFactor); + CsvProducerForCatch producerForCatch = exportContext.getProducerForCatch(); + List<CatchRow> rows = producerForCatch.getDataToExport(operationContext, + speciesCatchRaisingFactor, + benthosCatchRaisingFactor); - exportContext.catchExport.write(rows, exportContext.catchWriter); + producerForCatch.write(rows); } - protected void exportSpecies(GlobalExportContext exportContext, List<SpeciesExportRow> rows) { + protected void exportSpecies(GlobalExportContext exportContext) { try { - exportContext.speciesExport.write(rows, exportContext.speciesWriter); + CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); + List<SpeciesExportRow> rows = producerForSpecies.getSpeciesToExport(); + producerForSpecies.write(rows); } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.export.species.error"), e); } } - protected Map<String, OperationExportContext> operationContexts = Maps.newTreeMap(); - - protected OperationExportContext getOperationContext(GlobalExportContext exportContext, Cruise cruise, FishingOperation operation) { - - String operationId = operation.getId(); - - OperationExportContext result = operationContexts.get(operationId); - if (result == null) { - // create it - result = new OperationExportContext(cruise, operation, persistenceService, weightComputingService, exportContext.getSampleCategoryModel(), weightMeasuredCaracteristic, pmfmIdCaracteristic, deadOrAliveCaracteristic, genderCaracteristic); - operationContexts.put(operationId, result); - } - return result; - - } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java new file mode 100644 index 0000000..d449c18 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java @@ -0,0 +1,240 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.collect.Maps; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +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.catches.WeightComputingService; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; +import fr.ifremer.tutti.service.genericformat.csv.CatchModel; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; +import fr.ifremer.tutti.service.genericformat.csv.OperationModel; +import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; +import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportModel; +import fr.ifremer.tutti.service.genericformat.csv.SurveyModel; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAccidentalCatch; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForCatch; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForGearCaracteristics; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForIndividualObservation; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForMarineLitter; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForOperation; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForParameter; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSpecies; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSurvey; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; +import org.apache.commons.io.IOUtils; + +import java.io.Closeable; +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class GlobalExportContext implements Closeable { + + private final File protocolFile; + + private final SampleCategoryModel sampleCategoryModel; + + protected Map<String, OperationExportContext> operationContexts = Maps.newTreeMap(); + + protected final PersistenceService persistenceService; + + protected final WeightComputingService weightComputingService; + + protected final Caracteristic deadOrAliveCaracteristic; + + protected final Caracteristic genderCaracteristic; + + protected final Caracteristic weightMeasuredCaracteristic; + + protected final Caracteristic pmfmIdCaracteristic; + + private final CsvProducerForSurvey producerForSurvey; + + private final CsvProducerForGearCaracteristics producerForGearCaracteristics; + + private final CsvProducerForOperation producerForOperation; + + private final CsvProducerForParameter producerForParameter; + + private final CsvProducerForIndividualObservation producerForIndividualObservation; + + private final CsvProducerForAccidentalCatch producerForAccidentalCatch; + + private final CsvProducerForCatch producerForCatch; + + private final CsvProducerForSpecies producerForSpecies; + + private final CsvProducerForMarineLitter producerForMarineLitter; + + private final CsvProducerForTemporaryGear producerForTemporaryGear; + + private final CsvProducerForTemporaryPerson producerForTemporaryPerson; + + private final CsvProducerForTemporarySpecies producerForTemporarySpecies; + + private final CsvProducerForTemporaryVessel producerForTemporaryVessel; + + protected String checkError; + + GlobalExportContext(File basedir, + char csvSeparator, + PersistenceService persistenceService, + WeightComputingService weightComputingService, + DecoratorService decoratorService, + SampleCategoryModel sampleCategoryModel) { + + this.persistenceService = persistenceService; + this.weightComputingService = weightComputingService; + + this.sampleCategoryModel = sampleCategoryModel; + + this.weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic(); + this.pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic(); + this.deadOrAliveCaracteristic = persistenceService.getDeadOrAliveCaracteristic(); + this.genderCaracteristic = persistenceService.getSexCaracteristic(); + + List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); + Map<String, Species> speciesById = TuttiEntities.splitById(allReferentSpecies); + + this.producerForSurvey = new CsvProducerForSurvey(basedir, SurveyModel.forExport(csvSeparator)); + this.producerForGearCaracteristics = new CsvProducerForGearCaracteristics(basedir, GearCaracteristicModel.forExport(csvSeparator, decoratorService)); + this.producerForOperation = new CsvProducerForOperation(basedir, OperationModel.forExport(csvSeparator, decoratorService)); + this.producerForIndividualObservation = new CsvProducerForIndividualObservation(basedir, IndividualObservationModel.forExport(csvSeparator)); + this.producerForSpecies = new CsvProducerForSpecies(basedir, SpeciesExportModel.forExport(csvSeparator), speciesById); + this.producerForCatch = new CsvProducerForCatch(basedir, CatchModel.forExport(csvSeparator, sampleCategoryModel, decoratorService)); + this.producerForAccidentalCatch = new CsvProducerForAccidentalCatch(basedir, AccidentalCatchModel.forExport(csvSeparator)); + this.producerForParameter = new CsvProducerForParameter(basedir, ParameterModel.forExport(csvSeparator, decoratorService)); + this.producerForMarineLitter = new CsvProducerForMarineLitter(basedir, MarineLitterModel.forExport(csvSeparator)); + + this.producerForTemporaryGear = new CsvProducerForTemporaryGear(new File(basedir, "temporaryGears.csv"), csvSeparator); + this.producerForTemporaryPerson = new CsvProducerForTemporaryPerson(new File(basedir, "temporaryPersons.csv"), csvSeparator); + this.producerForTemporarySpecies = new CsvProducerForTemporarySpecies(new File(basedir, "temporarySpecies.csv"), csvSeparator); + this.producerForTemporaryVessel = new CsvProducerForTemporaryVessel(new File(basedir, "temporaryVessels.csv"), csvSeparator); + + this.protocolFile = new File(basedir, "protocol.tuttiProtocol"); + + } + + public OperationExportContext getOperationContext(Cruise cruise, FishingOperation operation) { + + String operationId = operation.getId(); + + OperationExportContext operationExportContext = operationContexts.get(operationId); + if (operationExportContext == null) { + + operationExportContext = new OperationExportContext(cruise, + operation, + persistenceService, + weightComputingService, + sampleCategoryModel, + weightMeasuredCaracteristic, + pmfmIdCaracteristic, + deadOrAliveCaracteristic, + genderCaracteristic); + operationContexts.put(operationId, operationExportContext); + + } + return operationExportContext; + + } + + @Override + public void close() throws IOException { + IOUtils.closeQuietly(producerForSurvey); + IOUtils.closeQuietly(producerForSpecies); + IOUtils.closeQuietly(producerForGearCaracteristics); + IOUtils.closeQuietly(producerForOperation); + IOUtils.closeQuietly(producerForParameter); + IOUtils.closeQuietly(producerForAccidentalCatch); + IOUtils.closeQuietly(producerForIndividualObservation); + IOUtils.closeQuietly(producerForCatch); + IOUtils.closeQuietly(producerForMarineLitter); + IOUtils.closeQuietly(producerForTemporaryGear); + IOUtils.closeQuietly(producerForTemporaryPerson); + IOUtils.closeQuietly(producerForTemporarySpecies); + IOUtils.closeQuietly(producerForTemporaryVessel); + } + + public String getCheckError() { + return checkError; + } + + public void setCheckError(String checkError) { + this.checkError = checkError; + } + + public CsvProducerForSurvey getProducerForSurvey() { + return producerForSurvey; + } + + public CsvProducerForGearCaracteristics getProducerForGearCaracteristics() { + return producerForGearCaracteristics; + } + + public CsvProducerForOperation getProducerForOperation() { + return producerForOperation; + } + + public CsvProducerForParameter getProducerForParameter() { + return producerForParameter; + } + + public CsvProducerForIndividualObservation getProducerForIndividualObservation() { + return producerForIndividualObservation; + } + + public CsvProducerForAccidentalCatch getProducerForAccidentalCatch() { + return producerForAccidentalCatch; + } + + public CsvProducerForCatch getProducerForCatch() { + return producerForCatch; + } + + public CsvProducerForSpecies getProducerForSpecies() { + return producerForSpecies; + } + + public CsvProducerForMarineLitter getProducerForMarineLitter() { + return producerForMarineLitter; + } + + public CsvProducerForTemporaryGear getProducerForTemporaryGear() { + return producerForTemporaryGear; + } + + public CsvProducerForTemporaryPerson getProducerForTemporaryPerson() { + return producerForTemporaryPerson; + } + + public CsvProducerForTemporarySpecies getProducerForTemporarySpecies() { + return producerForTemporarySpecies; + } + + public CsvProducerForTemporaryVessel getProducerForTemporaryVessel() { + return producerForTemporaryVessel; + } + + public File getProtocolFile() { + return protocolFile; + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalImportContext.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java index 3af0423..a6e31bc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.genericformat; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.PersistenceService; @@ -41,8 +41,10 @@ public class GlobalImportContext { private final FishingOperationSubStrataParser fishingOperationSubStrataParser; private final FishingOperationLocationParser fishingOperationLocationParser; + private final ListVesselParser listVesselParser; - private final SpeciesParser speciesParser; + + private final SpeciesParser speciesParser; public GlobalImportContext(PersistenceService persistenceService, Program program) { this.vesselParser = new VesselParser(persistenceService); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/OperationExportContext.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportContext.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/OperationExportContext.java index 028302f..1e55f1a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/OperationExportContext.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.genericformat; import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; import fr.ifremer.tutti.persistence.entities.data.BatchContainer; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java similarity index 56% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java index 578641c..b9805ae 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,7 +22,6 @@ package fr.ifremer.tutti.service.export.generic.csv; * #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.Cruises; @@ -31,17 +30,9 @@ 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.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; -import fr.ifremer.tutti.service.export.generic.OperationExportContext; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** * TODO @@ -76,89 +67,6 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden } - public List<AccidentalCatchRow> getDataToExport(OperationExportContext operationExportContext) { - - List<AccidentalCatchRow> rows = new ArrayList<>(); - - List<AccidentalBatch> accidentalBatches = operationExportContext.getAccidentalBatches(); - - if (CollectionUtils.isNotEmpty(accidentalBatches)) { - for (AccidentalBatch accidentalBatch : accidentalBatches) { - - addAccidentalBatch(operationExportContext, rows, accidentalBatch); - - } - - } - - return rows; - - } - - protected void addAccidentalBatch(OperationExportContext operationExportContext, List<AccidentalCatchRow> rows, AccidentalBatch accidentalBatch) { - - addCaracteristicRow(operationExportContext, - rows, - accidentalBatch, - operationExportContext.getDeadOrAliveCaracteristic(), - accidentalBatch.getDeadOrAlive()); - - addCaracteristicRow(operationExportContext, - rows, - accidentalBatch, - operationExportContext.getGenderCaracteristic(), - accidentalBatch.getGender()); - - addCaracteristicRow(operationExportContext, - rows, - accidentalBatch, - operationExportContext.getWeightMeasuredCaracteristic(), - accidentalBatch.getWeight()); - - if (accidentalBatch.getLengthStepCaracteristic() != null) { - addCaracteristicRow(operationExportContext, - rows, - accidentalBatch, - operationExportContext.getPmfmIdCaracteristic(), - accidentalBatch.getLengthStepCaracteristic().getIdAsInt()); - - addCaracteristicRow(operationExportContext, - rows, - accidentalBatch, - accidentalBatch.getLengthStepCaracteristic(), - accidentalBatch.getSize()); - } - - CaracteristicMap caracteristics = accidentalBatch.getCaracteristics(); - if (MapUtils.isNotEmpty(caracteristics)) { - for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { - addCaracteristicRow(operationExportContext, - rows, - accidentalBatch, - entry.getKey(), - entry.getValue()); - } - } - - } - - protected void addCaracteristicRow(OperationExportContext operationExportContext, - List<AccidentalCatchRow> rows, - AccidentalBatch accidentalBatch, - Caracteristic caracteristic, - Serializable caracteristicValue) { - if (caracteristicValue != null) { - - AccidentalCatchRow row = new AccidentalCatchRow(); - row.setCruise(operationExportContext.getCruise()); - row.setFishingOperation(operationExportContext.getOperation()); - row.setBatch(accidentalBatch); - row.setCaracteristic(caracteristic); - row.setCaracteristicValue(caracteristicValue); - rows.add(row); - } - } - protected AccidentalCatchModel(char separator) { super(separator); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchRow.java index 7d968d2..b52c090 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java new file mode 100644 index 0000000..bd78bf3 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -0,0 +1,169 @@ +package fr.ifremer.tutti.service.genericformat.csv; + +/* + * #%L + * Tutti :: Service + * %% + * Copyright (C) 2012 - 2014 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.Cruises; +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.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.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; + +/** + * Model of a catch export. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.3 + */ +public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { + + public static final String WEIGHT_OR_VOL_TYPE = "Poids"; + + public static CatchModel forExport(char separator, SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { + + CatchModel exportModel = new CatchModel(separator); + exportModel.forExport(sampleCategoryModel, decoratorService); + return exportModel; + + } + + public static CatchModel forImport(char separator, SampleCategoryModel sampleCategoryModel, GlobalImportContext globalImportContext) { + + CatchModel importModel = new CatchModel(separator); + importModel.forImport(sampleCategoryModel, globalImportContext); + return importModel; + + } + + @Override + public CatchRow newEmptyInstance() { + + CatchRow row = new CatchRow(false, false); + row.setCruise(Cruises.newCruise()); + return row; + + } + + protected CatchModel(char separator) { + super(separator); + } + + protected void forExport(SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { + + 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("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); + newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); + newColumnForExport("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.INTEGER); + newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); + newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); + newColumnForExport("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); + + for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { + + String headerPrefix = entry.getCode(); + int categoryOrder = entry.getOrder(); + String categoryName = CatchRow.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, CatchRow.BATCH_WEIGHT_UNIT); + } + + // mensuration + + newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_ID); + newNullableColumnForExportByDecorator("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); + newNullableColumnForExport("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); + newNullableColumnForExport("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); + newNullableColumnForExport("Poids_Classe_Taille", CatchRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT); + newNullableColumnForExport("Unite_Taille", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_UNIT); + newNullableColumnForExport("Precision_Mesure", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_PRECISION, TuttiCsvUtil.FLOAT); + newNullableColumnForExport("Nbr", CatchRow.BATCH_NUMBER, TuttiCsvUtil.INTEGER); + + newColumnForExport("Poids_Reference", CatchRow.REFERENCE_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT); + newColumnForExport("Coef_Elev_Espece_Capture", CatchRow.RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); + newColumnForExport("Coef_Final_Elevation", CatchRow.FINAL_RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); + + } + + protected void forImport(SampleCategoryModel sampleCategoryModel, GlobalImportContext globalImportContext) { + + newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); + newMandatoryColumn("Serie", Cruise.PROPERTY_PROGRAM, globalImportContext.getProgramParser()); + newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); + + newMandatoryColumn("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); + newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); + newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); + newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); + + newMandatoryColumn("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); +// newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); +// newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); + newMandatoryColumn("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); + + //FIXME + for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { + + String headerPrefix = entry.getCode(); + int categoryOrder = entry.getOrder(); + String categoryName = CatchRow.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, CatchRow.BATCH_WEIGHT_UNIT); + } + + // mensuration + + newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_ID); +// newNullableColumnForExportByDecorator("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); + newNullableColumnForExport("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); + newNullableColumnForExport("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); + newNullableColumnForExport("Poids_Classe_Taille", CatchRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT); +// newNullableColumnForExport("Unite_Taille", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_UNIT); +// newNullableColumnForExport("Precision_Mesure", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_PRECISION, TuttiCsvUtil.FLOAT); + newNullableColumnForExport("Nbr", CatchRow.BATCH_NUMBER, TuttiCsvUtil.INTEGER); + +// newColumnForExport("Poids_Reference", CatchRow.REFERENCE_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT); +// newColumnForExport("Coef_Elev_Espece_Capture", CatchRow.RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); +// newColumnForExport("Coef_Final_Elevation", CatchRow.FINAL_RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java index 67ced1c..74938d9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ExportSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ExportSampleCategory.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ExportSampleCategory.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ExportSampleCategory.java index 88862e3..4612542 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ExportSampleCategory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ExportSampleCategory.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java similarity index 77% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java index 9235fa6..aa20683 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,21 +22,15 @@ package fr.ifremer.tutti.service.export.generic.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; 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 fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** * To export gear caracteristics. @@ -90,27 +84,6 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC } - public List<GearCaracteristicRow> getDataToExport(Cruise cruise, Gear gear) { - - List<GearCaracteristicRow> rows = new ArrayList<>(); - CaracteristicMap caracteristics = gear.getCaracteristics(); - if (caracteristics != null) { - for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { - Caracteristic caracteristic = entry.getKey(); - Serializable value = entry.getValue(); - GearCaracteristicRow row = new GearCaracteristicRow(); - row.setCruise(cruise); - row.setGear(gear); - row.setCaracteristic(caracteristic); - row.setValue(value); - rows.add(row); - } - } - - return rows; - - } - @Override public GearCaracteristicRow newEmptyInstance() { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java index 08ca9b2..6348236 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java similarity index 60% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java index b5d7d41..66dfef4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,7 +22,6 @@ package fr.ifremer.tutti.service.export.generic.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; @@ -31,17 +30,9 @@ 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.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; -import fr.ifremer.tutti.service.export.generic.OperationExportContext; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** * Model of a individual observation export. @@ -76,75 +67,6 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I } - public List<IndividualObservationRow> getDataToExport(OperationExportContext operationExportContext) { - - List<IndividualObservationRow> rows = new ArrayList<>(); - List<IndividualObservationBatch> individualObservations = operationExportContext.getIndividualObservations(); - - if (CollectionUtils.isNotEmpty(individualObservations)) { - for (IndividualObservationBatch child : individualObservations) { - - addIndividualObservationBatch(operationExportContext, rows, child); - } - } - - return rows; - - } - - protected void addIndividualObservationBatch(OperationExportContext operationExportContext, - List<IndividualObservationRow> rows, - IndividualObservationBatch child) { - - addCaracteristicRow(operationExportContext, - rows, - child, - operationExportContext.getWeightMeasuredCaracteristic(), - child.getWeight()); - - if (child.getLengthStepCaracteristic() != null) { - addCaracteristicRow(operationExportContext, - rows, - child, - operationExportContext.getPmfmIdCaracteristic(), - child.getLengthStepCaracteristic().getIdAsInt()); - - addCaracteristicRow(operationExportContext, - rows, - child, - child.getLengthStepCaracteristic(), - child.getSize()); - } - - CaracteristicMap caracteristics = child.getCaracteristics(); - if (MapUtils.isNotEmpty(caracteristics)) { - for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { - addCaracteristicRow(operationExportContext, - rows, - child, - entry.getKey(), - entry.getValue()); - } - } - } - - protected void addCaracteristicRow(OperationExportContext operationExportContext, - List<IndividualObservationRow> rows, - IndividualObservationBatch child, - Caracteristic caracteristic, - Serializable caracteristicValue) { - if (caracteristicValue != null) { - - IndividualObservationRow row = new IndividualObservationRow(); - row.setCruise(operationExportContext.getCruise()); - row.setFishingOperation(operationExportContext.getOperation()); - row.setBatch(child); - row.setCaracteristic(caracteristic); - row.setCaracteristicValue(caracteristicValue); - rows.add(row); - } - } - protected IndividualObservationModel(char separator) { super(separator); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java index 85fa2a8..09d80df 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java similarity index 79% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java index 3c22c72..12f1957 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,21 +22,15 @@ package fr.ifremer.tutti.service.export.generic.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; 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.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; -import fr.ifremer.tutti.service.export.generic.OperationExportContext; -import org.apache.commons.collections4.CollectionUtils; - -import java.util.ArrayList; -import java.util.List; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** * Model of a marine litter export. @@ -71,27 +65,6 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt } - public List<MarineLitterRow> getDataToExport(OperationExportContext operationExportContext) { - - List<MarineLitterRow> rows = new ArrayList<>(); - - BatchContainer<MarineLitterBatch> rootMarineLitterBatch = operationExportContext.getRootMarineLitterBatch(); - - List<MarineLitterBatch> children = rootMarineLitterBatch.getChildren(); - if (CollectionUtils.isNotEmpty(children)) { - for (MarineLitterBatch child : children) { - MarineLitterRow row = new MarineLitterRow(); - row.setCruise(operationExportContext.getCruise()); - row.setFishingOperation(operationExportContext.getOperation()); - row.setBatch(child); - rows.add(row); - } - } - - return rows; - - } - protected MarineLitterModel(char separator) { super(separator); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterRow.java index a78accd..b843a8b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java index 5091209..cd4309c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,7 +22,6 @@ package fr.ifremer.tutti.service.export.generic.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.CatchBatchs; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; @@ -33,9 +32,9 @@ 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.DecoratorService; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import org.nuiton.decorator.Decorator; /** @@ -62,18 +61,6 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> } - public OperationRow getDataToExport(Cruise cruise, FishingOperation operation, CatchBatch catchBatch) { - - OperationRow row = new OperationRow(); - row.setCruise(cruise); - row.setFishingOperation(operation); - row.setCatchBatch(catchBatch); - - return row; - - } - - @Override public OperationRow newEmptyInstance() { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java index b2cd0d8..631c4fa 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java similarity index 74% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java index c7265ef..4128b72 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,21 +22,15 @@ package fr.ifremer.tutti.service.export.generic.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; 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 fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** * Model of a parameter export. @@ -71,39 +65,6 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> } - public List<ParameterRow> getDataToExport(Cruise cruise, FishingOperation operation) { - - List<ParameterRow> rows = new ArrayList<>(); - - CaracteristicMap gearUseFeatures = operation.getGearUseFeatures(); - if (gearUseFeatures != null) { - addCaracteristicMap(rows, cruise, operation, gearUseFeatures); - } - - CaracteristicMap vesselUseFeatures = operation.getVesselUseFeatures(); - if (vesselUseFeatures != null) { - addCaracteristicMap(rows, cruise, operation, vesselUseFeatures); - } - - return rows; - - } - - protected void addCaracteristicMap(List<ParameterRow> rows, Cruise cruise, FishingOperation operation, CaracteristicMap caracteristicMap) { - - for (Map.Entry<Caracteristic, Serializable> entry : caracteristicMap.entrySet()) { - - ParameterRow row = new ParameterRow(); - row.setCruise(cruise); - row.setFishingOperation(operation); - row.setCaracteristic(entry.getKey()); - row.setValue(entry.getValue()); - rows.add(row); - - } - - } - protected ParameterModel(char separator) { super(separator); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterRow.java index fbe6850..b9f87e1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java similarity index 50% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java index a430065..7e21971 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -22,15 +22,9 @@ package fr.ifremer.tutti.service.export.generic.csv; * #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 fr.ifremer.tutti.service.csv.AbstractTuttiExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalExportContext; - -import java.util.List; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; /** * To export a species used in data to export. @@ -38,7 +32,7 @@ import java.util.List; * @author tchemit <chemit@codelutin.com> * @since 2.3 */ -public class SpeciesExportModel extends AbstractTuttiExportModel<SpeciesExportRow> { +public class SpeciesExportModel extends AbstractTuttiImportExportModel<SpeciesExportRow> { public static SpeciesExportModel forExport(char separator) { @@ -48,42 +42,6 @@ public class SpeciesExportModel extends AbstractTuttiExportModel<SpeciesExportRo } - public void prepareSpeciesBatchRows(GlobalExportContext exportContext, - BatchContainer<SpeciesBatch> rootSpeciesBatch) { - - for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) { - exportContext.addSpecies(speciesBatch.getSpecies()); - } - - } - - public void prepareBenthosBatchRows(GlobalExportContext exportContext, - BatchContainer<BenthosBatch> rootBenthosBatch) { - - for (BenthosBatch benthosBatch : rootBenthosBatch.getChildren()) { - exportContext.addSpecies(benthosBatch.getSpecies()); - } - - } - - public void prepareIndividualRows(GlobalExportContext exportContext, - List<IndividualObservationRow> rows) { - - for (IndividualObservationRow row : rows) { - exportContext.addSpecies(row.getSpecies()); - } - - } - - public void prepareAccidentalRows(GlobalExportContext exportContext, - List<AccidentalCatchRow> rows) { - - for (AccidentalCatchRow row : rows) { - exportContext.addSpecies(row.getSpecies()); - } - - } - protected SpeciesExportModel(char separator) { super(separator); } @@ -96,4 +54,9 @@ public class SpeciesExportModel extends AbstractTuttiExportModel<SpeciesExportRo newColumnForExport("Code_campagne", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_SURVEY_CODE); } + + @Override + public SpeciesExportRow newEmptyInstance() { + return new SpeciesExportRow(); + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportRow.java similarity index 96% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportRow.java index b46d331..4ba125c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java similarity index 92% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java index 1d0d74e..6ae4412 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L @@ -26,9 +26,9 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; /** * Model of a survey export. @@ -54,15 +54,6 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { } - public SurveyRow getDataToExport(Cruise cruise, TuttiLocation country) { - - SurveyRow row = new SurveyRow(); - row.setCruise(cruise); - row.setCountry(country); - return row; - - } - protected SurveyModel(char separator) { super(separator); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java index 36a17ba..f27a9b1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic.csv; +package fr.ifremer.tutti.service.genericformat.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java new file mode 100644 index 0000000..ae20d90 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java @@ -0,0 +1,115 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.OperationExportContext; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; + +import java.io.File; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForAccidentalCatch extends CsvProducer<AccidentalCatchRow, AccidentalCatchModel> { + + public CsvProducerForAccidentalCatch(File basedir, AccidentalCatchModel model) { + super(new File(basedir, "accidentalCatch.csv"), model); + } + + public List<AccidentalCatchRow> getDataToExport(OperationExportContext operationExportContext) { + + List<AccidentalCatchRow> rows = new ArrayList<>(); + + List<AccidentalBatch> accidentalBatches = operationExportContext.getAccidentalBatches(); + + if (CollectionUtils.isNotEmpty(accidentalBatches)) { + for (AccidentalBatch accidentalBatch : accidentalBatches) { + + addAccidentalBatch(operationExportContext, rows, accidentalBatch); + + } + + } + + return rows; + + } + + protected void addAccidentalBatch(OperationExportContext operationExportContext, List<AccidentalCatchRow> rows, AccidentalBatch accidentalBatch) { + + addCaracteristicRow(operationExportContext, + rows, + accidentalBatch, + operationExportContext.getDeadOrAliveCaracteristic(), + accidentalBatch.getDeadOrAlive()); + + addCaracteristicRow(operationExportContext, + rows, + accidentalBatch, + operationExportContext.getGenderCaracteristic(), + accidentalBatch.getGender()); + + addCaracteristicRow(operationExportContext, + rows, + accidentalBatch, + operationExportContext.getWeightMeasuredCaracteristic(), + accidentalBatch.getWeight()); + + if (accidentalBatch.getLengthStepCaracteristic() != null) { + addCaracteristicRow(operationExportContext, + rows, + accidentalBatch, + operationExportContext.getPmfmIdCaracteristic(), + accidentalBatch.getLengthStepCaracteristic().getIdAsInt()); + + addCaracteristicRow(operationExportContext, + rows, + accidentalBatch, + accidentalBatch.getLengthStepCaracteristic(), + accidentalBatch.getSize()); + } + + CaracteristicMap caracteristics = accidentalBatch.getCaracteristics(); + if (MapUtils.isNotEmpty(caracteristics)) { + for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { + addCaracteristicRow(operationExportContext, + rows, + accidentalBatch, + entry.getKey(), + entry.getValue()); + } + } + + } + + protected void addCaracteristicRow(OperationExportContext operationExportContext, + List<AccidentalCatchRow> rows, + AccidentalBatch accidentalBatch, + Caracteristic caracteristic, + Serializable caracteristicValue) { + if (caracteristicValue != null) { + + AccidentalCatchRow row = new AccidentalCatchRow(); + row.setCruise(operationExportContext.getCruise()); + row.setFishingOperation(operationExportContext.getOperation()); + row.setBatch(accidentalBatch); + row.setCaracteristic(caracteristic); + row.setCaracteristicValue(caracteristicValue); + rows.add(row); + + } + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java similarity index 62% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java index d8cfcb5..d5033df 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java @@ -1,88 +1,38 @@ -package fr.ifremer.tutti.service.export.generic.csv; - -/* - * #%L - * Tutti :: Service - * %% - * Copyright (C) 2012 - 2014 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% - */ +package fr.ifremer.tutti.service.genericformat.producer; 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.Cruises; -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.TuttiCsvUtil; -import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.export.generic.GlobalImportContext; -import fr.ifremer.tutti.service.export.generic.OperationExportContext; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.OperationExportContext; +import fr.ifremer.tutti.service.genericformat.csv.CatchModel; +import fr.ifremer.tutti.service.genericformat.csv.CatchRow; +import fr.ifremer.tutti.service.genericformat.csv.ExportSampleCategory; import fr.ifremer.tutti.util.Numbers; import fr.ifremer.tutti.util.Weights; import org.apache.commons.collections4.CollectionUtils; import org.nuiton.jaxx.application.ApplicationTechnicalException; +import java.io.File; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** - * Model of a catch export. + * Created on 2/6/15. * - * @author tchemit <chemit@codelutin.com> - * @since 1.3 + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 */ -public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { - - public static final String WEIGHT_OR_VOL_TYPE = "Poids"; - - public static CatchModel forExport(char separator, SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { - - CatchModel exportModel = new CatchModel(separator); - exportModel.forExport(sampleCategoryModel, decoratorService); - return exportModel; - - } - - public static CatchModel forImport(char separator, SampleCategoryModel sampleCategoryModel, GlobalImportContext globalImportContext) { - - CatchModel importModel = new CatchModel(separator); - importModel.forImport(sampleCategoryModel, globalImportContext); - return importModel; - - } - - @Override - public CatchRow newEmptyInstance() { - - CatchRow row = new CatchRow(false, false); - row.setCruise(Cruises.newCruise()); - return row; +public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { + public CsvProducerForCatch(File basedir, CatchModel model) { + super(new File(basedir, "catch.csv"), model); } public List<CatchRow> getDataToExport(OperationExportContext operationExportContext, @@ -482,104 +432,11 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { sampleCategory.setSampleWeight(batchWeight); sampleCategory.setComputedWeight(sampleCategoryComputedWeight); - sampleCategory.setWeightOrVolType(WEIGHT_OR_VOL_TYPE); + sampleCategory.setWeightOrVolType(CatchModel.WEIGHT_OR_VOL_TYPE); sampleCategory.setRankOrder(batchRankOrder); currentRow.addSampleCategory(sampleCategory); } - protected CatchModel(char separator) { - super(separator); - } - - protected void forExport(SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { - - 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("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); - newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newColumnForExport("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.INTEGER); - newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); - newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); - newColumnForExport("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - - for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { - - String headerPrefix = entry.getCode(); - int categoryOrder = entry.getOrder(); - String categoryName = CatchRow.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, CatchRow.BATCH_WEIGHT_UNIT); - } - - // mensuration - - newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_ID); - newNullableColumnForExportByDecorator("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); - newNullableColumnForExport("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); - newNullableColumnForExport("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); - newNullableColumnForExport("Poids_Classe_Taille", CatchRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT); - newNullableColumnForExport("Unite_Taille", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_UNIT); - newNullableColumnForExport("Precision_Mesure", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_PRECISION, TuttiCsvUtil.FLOAT); - newNullableColumnForExport("Nbr", CatchRow.BATCH_NUMBER, TuttiCsvUtil.INTEGER); - - newColumnForExport("Poids_Reference", CatchRow.REFERENCE_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT); - newColumnForExport("Coef_Elev_Espece_Capture", CatchRow.RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); - newColumnForExport("Coef_Final_Elevation", CatchRow.FINAL_RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); - - } - protected void forImport(SampleCategoryModel sampleCategoryModel, GlobalImportContext globalImportContext) { - - newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); - newMandatoryColumn("Serie", Cruise.PROPERTY_PROGRAM, globalImportContext.getProgramParser()); - newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); - - newMandatoryColumn("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER); - newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); - newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newMandatoryColumn("Engin", FishingOperation.PROPERTY_GEAR, globalImportContext.getOptionalGearParser()); - - newMandatoryColumn("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); -// newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_SURVEY_CODE); -// newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); - newMandatoryColumn("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - - //FIXME - for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { - - String headerPrefix = entry.getCode(); - int categoryOrder = entry.getOrder(); - String categoryName = CatchRow.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, CatchRow.BATCH_WEIGHT_UNIT); - } - - // mensuration - - newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_ID); -// newNullableColumnForExportByDecorator("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); - newNullableColumnForExport("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); - newNullableColumnForExport("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); - newNullableColumnForExport("Poids_Classe_Taille", CatchRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT); -// newNullableColumnForExport("Unite_Taille", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_UNIT); -// newNullableColumnForExport("Precision_Mesure", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_PRECISION, TuttiCsvUtil.FLOAT); - newNullableColumnForExport("Nbr", CatchRow.BATCH_NUMBER, TuttiCsvUtil.INTEGER); - -// newColumnForExport("Poids_Reference", CatchRow.REFERENCE_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT); -// newColumnForExport("Coef_Elev_Espece_Capture", CatchRow.RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); -// newColumnForExport("Coef_Final_Elevation", CatchRow.FINAL_RAISING_FACTOR, TuttiCsvUtil.PRIMITIVE_FLOAT); - - } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java new file mode 100644 index 0000000..6562d6f --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java @@ -0,0 +1,50 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; + +import java.io.File; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForGearCaracteristics extends CsvProducer<GearCaracteristicRow, GearCaracteristicModel> { + + public CsvProducerForGearCaracteristics(File basedir, GearCaracteristicModel model) { + super(new File(basedir, "gearCaracteristics.csv"), model); + } + + public List<GearCaracteristicRow> getDataToExport(Cruise cruise, Gear gear) { + + List<GearCaracteristicRow> rows = new ArrayList<>(); + CaracteristicMap caracteristics = gear.getCaracteristics(); + if (caracteristics != null) { + for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { + Caracteristic caracteristic = entry.getKey(); + Serializable value = entry.getValue(); + GearCaracteristicRow row = new GearCaracteristicRow(); + row.setCruise(cruise); + row.setGear(gear); + row.setCaracteristic(caracteristic); + row.setValue(value); + rows.add(row); + } + } + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java new file mode 100644 index 0000000..c076f07 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java @@ -0,0 +1,100 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.OperationExportContext; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; + +import java.io.File; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForIndividualObservation extends CsvProducer<IndividualObservationRow, IndividualObservationModel> { + + public CsvProducerForIndividualObservation(File basedir, IndividualObservationModel model) { + super(new File(basedir, "individualObservation.csv"), model); + } + + public List<IndividualObservationRow> getDataToExport(OperationExportContext operationExportContext) { + + List<IndividualObservationRow> rows = new ArrayList<>(); + List<IndividualObservationBatch> individualObservations = operationExportContext.getIndividualObservations(); + + if (CollectionUtils.isNotEmpty(individualObservations)) { + for (IndividualObservationBatch child : individualObservations) { + + addIndividualObservationBatch(operationExportContext, rows, child); + } + } + + return rows; + + } + + protected void addIndividualObservationBatch(OperationExportContext operationExportContext, + List<IndividualObservationRow> rows, + IndividualObservationBatch child) { + + addCaracteristicRow(operationExportContext, + rows, + child, + operationExportContext.getWeightMeasuredCaracteristic(), + child.getWeight()); + + if (child.getLengthStepCaracteristic() != null) { + addCaracteristicRow(operationExportContext, + rows, + child, + operationExportContext.getPmfmIdCaracteristic(), + child.getLengthStepCaracteristic().getIdAsInt()); + + addCaracteristicRow(operationExportContext, + rows, + child, + child.getLengthStepCaracteristic(), + child.getSize()); + } + + CaracteristicMap caracteristics = child.getCaracteristics(); + if (MapUtils.isNotEmpty(caracteristics)) { + for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { + addCaracteristicRow(operationExportContext, + rows, + child, + entry.getKey(), + entry.getValue()); + } + } + } + + protected void addCaracteristicRow(OperationExportContext operationExportContext, + List<IndividualObservationRow> rows, + IndividualObservationBatch child, + Caracteristic caracteristic, + Serializable caracteristicValue) { + if (caracteristicValue != null) { + + IndividualObservationRow row = new IndividualObservationRow(); + row.setCruise(operationExportContext.getCruise()); + row.setFishingOperation(operationExportContext.getOperation()); + row.setBatch(child); + row.setCaracteristic(caracteristic); + row.setCaracteristicValue(caracteristicValue); + rows.add(row); + } + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java new file mode 100644 index 0000000..d6a8e61 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java @@ -0,0 +1,49 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.data.BatchContainer; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.OperationExportContext; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; +import org.apache.commons.collections4.CollectionUtils; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForMarineLitter extends CsvProducer<MarineLitterRow, MarineLitterModel> { + + public CsvProducerForMarineLitter(File basedir, MarineLitterModel model) { + super(new File(basedir, "survey.csv"), model); + } + + + public List<MarineLitterRow> getDataToExport(OperationExportContext operationExportContext) { + + List<MarineLitterRow> rows = new ArrayList<>(); + + BatchContainer<MarineLitterBatch> rootMarineLitterBatch = operationExportContext.getRootMarineLitterBatch(); + + List<MarineLitterBatch> children = rootMarineLitterBatch.getChildren(); + if (CollectionUtils.isNotEmpty(children)) { + for (MarineLitterBatch child : children) { + MarineLitterRow row = new MarineLitterRow(); + row.setCruise(operationExportContext.getCruise()); + row.setFishingOperation(operationExportContext.getOperation()); + row.setBatch(child); + rows.add(row); + } + } + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java new file mode 100644 index 0000000..d2f8b4d --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForOperation.java @@ -0,0 +1,35 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +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.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.csv.OperationModel; +import fr.ifremer.tutti.service.genericformat.csv.OperationRow; + +import java.io.File; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForOperation extends CsvProducer<OperationRow, OperationModel> { + + public CsvProducerForOperation(File basedir, OperationModel model) { + super(new File(basedir, "survey.csv"), model); + } + + public OperationRow getDataToExport(Cruise cruise, FishingOperation operation, CatchBatch catchBatch) { + + OperationRow row = new OperationRow(); + row.setCruise(cruise); + row.setFishingOperation(operation); + row.setCatchBatch(catchBatch); + + return row; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForParameter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForParameter.java new file mode 100644 index 0000000..f113c6e --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForParameter.java @@ -0,0 +1,62 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +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.referential.Caracteristic; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; +import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; + +import java.io.File; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForParameter extends CsvProducer<ParameterRow, ParameterModel> { + + public CsvProducerForParameter(File basedir, ParameterModel model) { + super(new File(basedir, "parameter.csv"), model); + } + + public List<ParameterRow> getDataToExport(Cruise cruise, FishingOperation operation) { + + List<ParameterRow> rows = new ArrayList<>(); + + CaracteristicMap gearUseFeatures = operation.getGearUseFeatures(); + if (gearUseFeatures != null) { + addCaracteristicMap(rows, cruise, operation, gearUseFeatures); + } + + CaracteristicMap vesselUseFeatures = operation.getVesselUseFeatures(); + if (vesselUseFeatures != null) { + addCaracteristicMap(rows, cruise, operation, vesselUseFeatures); + } + + return rows; + + } + + protected void addCaracteristicMap(List<ParameterRow> rows, Cruise cruise, FishingOperation operation, CaracteristicMap caracteristicMap) { + + for (Map.Entry<Caracteristic, Serializable> entry : caracteristicMap.entrySet()) { + + ParameterRow row = new ParameterRow(); + row.setCruise(cruise); + row.setFishingOperation(operation); + row.setCaracteristic(entry.getKey()); + row.setValue(entry.getValue()); + rows.add(row); + + } + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java new file mode 100644 index 0000000..18362a8 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java @@ -0,0 +1,97 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +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.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.GlobalExportContext; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; +import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportModel; +import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportRow; + +import java.io.File; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, SpeciesExportModel> { + + final Map<String, Species> speciesById; + + final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap(); + + public CsvProducerForSpecies(File basedir, SpeciesExportModel model, Map<String, Species> speciesById) { + super(new File(basedir, "species.csv"), model); + this.speciesById = speciesById; + } + + public void prepareSpeciesBatchRows(GlobalExportContext exportContext, BatchContainer<SpeciesBatch> rootSpeciesBatch) { + + for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) { + addSpecies(speciesBatch.getSpecies()); + } + + } + + public void prepareBenthosBatchRows(GlobalExportContext exportContext, BatchContainer<BenthosBatch> rootBenthosBatch) { + + for (BenthosBatch benthosBatch : rootBenthosBatch.getChildren()) { + addSpecies(benthosBatch.getSpecies()); + } + + } + + public void prepareIndividualRows(GlobalExportContext exportContext, List<IndividualObservationRow> rows) { + + for (IndividualObservationRow row : rows) { + addSpecies(row.getSpecies()); + } + + } + + public void prepareAccidentalRows(GlobalExportContext exportContext, List<AccidentalCatchRow> rows) { + + for (AccidentalCatchRow row : rows) { + addSpecies(row.getSpecies()); + } + + } + + 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); + // add the survey code (see http://forge.codelutin.com/issues/4799) + species.setSurveyCode(fullSpecies.getSurveyCode()); + } + } + + 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; + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSurvey.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSurvey.java new file mode 100644 index 0000000..0f3b314 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSurvey.java @@ -0,0 +1,32 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.csv.SurveyModel; +import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; + +import java.io.File; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForSurvey extends CsvProducer<SurveyRow, SurveyModel> { + + public CsvProducerForSurvey(File basedir, SurveyModel model) { + super(new File(basedir, "survey.csv"), model); + } + + public SurveyRow getDataToExport(Cruise cruise, TuttiLocation country) { + + SurveyRow row = new SurveyRow(); + row.setCruise(cruise); + row.setCountry(country); + return row; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/ImportFromColumnFileModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/ImportFromColumnFileModel.java index 5388ac2..0afb699 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/ImportFromColumnFileModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/ImportFromColumnFileModel.java @@ -39,7 +39,7 @@ 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 fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.TuttiDataContext; import fr.ifremer.tutti.service.csv.AbstractTuttiImportModel; import org.apache.commons.lang3.StringUtils; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java index d98e97e..a95e334 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.service.protocol; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import java.util.Map; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java index 6b18ac1..e294367 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.service.protocol; import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.ForeignKeyValue; import fr.ifremer.tutti.service.csv.StringParserFormatter; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/CarrouselRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/CarrouselRowModel.java index a4c9dac..73750cc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/CarrouselRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/CarrouselRowModel.java @@ -22,7 +22,7 @@ package fr.ifremer.tutti.service.pupitri.csv; * #L% */ -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.ImportModelWithHeader; import fr.ifremer.tutti.service.pupitri.BoxType; import fr.ifremer.tutti.service.pupitri.Directions; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/TrunkRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/TrunkRowModel.java index cf367d7..775acde 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/TrunkRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/csv/TrunkRowModel.java @@ -22,7 +22,7 @@ package fr.ifremer.tutti.service.pupitri.csv; * #L% */ -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.ImportModelWithHeader; import fr.ifremer.tutti.service.pupitri.Directions; import org.nuiton.csv.Common; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java index f61d3cd..15711ee 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java @@ -25,7 +25,6 @@ package fr.ifremer.tutti.service.referential; */ import com.google.common.base.Charsets; -import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -37,16 +36,15 @@ import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.referential.csv.GearModel; import fr.ifremer.tutti.service.referential.csv.GearRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Export; import org.nuiton.csv.Import; import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; -import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.Reader; @@ -176,23 +174,15 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { public void exportTemporaryGear(File file, List<Gear> toExport) throws IOException { - GearModel csvModel = new GearModel(getCsvSeparator()); + try (CsvProducerForTemporaryGear producerForTemporarySpecies = new CsvProducerForTemporaryGear(file, getCsvSeparator())) { - List<GearRow> toExportRows = Lists.transform(toExport, new Function<Gear, GearRow>() { - @Override - public GearRow apply(Gear gear) { - return new GearRow(gear); - } - }); + List<GearRow> dataToExport = producerForTemporarySpecies.getDataToExport(toExport); + producerForTemporarySpecies.write(dataToExport); - try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); - } catch (IOException e) { - throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.referential.export.gear.error", file), e); } + } protected ImportRequestResult<Gear, Integer> processImportFile(File file, List<Gear> existingEntities) { @@ -201,7 +191,7 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { - GearModel csvModel = new GearModel(getCsvSeparator()); + GearModel csvModel = GearModel.forImport(getCsvSeparator()); try (Import<GearRow> importer = Import.newImport(csvModel, reader)) { for (GearRow bean : importer) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java index 9f20a1d..f6f8813 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java @@ -25,7 +25,6 @@ package fr.ifremer.tutti.service.referential; */ import com.google.common.base.Charsets; -import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -37,16 +36,15 @@ import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.referential.csv.PersonModel; import fr.ifremer.tutti.service.referential.csv.PersonRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Export; import org.nuiton.csv.Import; import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; -import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.Reader; @@ -169,25 +167,15 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { public void exportTemporaryPerson(File file, List<Person> toExport) throws IOException { - PersonModel csvModel = new PersonModel(getCsvSeparator()); + try (CsvProducerForTemporaryPerson producerForTemporarySpecies = new CsvProducerForTemporaryPerson(file, getCsvSeparator())) { - List<PersonRow> toExportRows = Lists.transform(toExport, new Function<Person, PersonRow>() { - @Override - public PersonRow apply(Person person) { - return new PersonRow(person); - } - }); - - try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { - - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); + List<PersonRow> dataToExport = producerForTemporarySpecies.getDataToExport(toExport); + producerForTemporarySpecies.write(dataToExport); - } catch (IOException e) { - throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.referential.export.person.error", file), e); } + } protected ImportRequestResult<Person, Integer> processImportFile(File file, List<Person> existingEntities) { @@ -196,7 +184,7 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { - PersonModel csvModel = new PersonModel(getCsvSeparator()); + PersonModel csvModel = PersonModel.forImport(getCsvSeparator()); try (Import<PersonRow> importer = Import.newImport(csvModel, reader)) { for (PersonRow bean : importer) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java index 663b3f0..e22439e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java @@ -25,7 +25,6 @@ package fr.ifremer.tutti.service.referential; */ import com.google.common.base.Charsets; -import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -37,16 +36,15 @@ import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.referential.csv.SpeciesModel; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Export; import org.nuiton.csv.Import; import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; -import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.Reader; @@ -166,22 +164,11 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { public void exportTemporarySpecies(File file, List<Species> toExport) throws IOException { - SpeciesModel csvModel = new SpeciesModel(getCsvSeparator()); + try (CsvProducerForTemporarySpecies producerForTemporarySpecies = new CsvProducerForTemporarySpecies(file, getCsvSeparator())) { - List<SpeciesRow> toExportRows = Lists.transform(toExport, new Function<Species, SpeciesRow>() { - @Override - public SpeciesRow apply(Species species) { - return new SpeciesRow(species); - } - }); - - try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { + List<SpeciesRow> dataToExport = producerForTemporarySpecies.getDataToExport(toExport); + producerForTemporarySpecies.write(dataToExport); - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); - - } catch (IOException e) { - throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.referential.export.species.error", file), e); } @@ -194,7 +181,7 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { - SpeciesModel csvModel = new SpeciesModel(getCsvSeparator()); + SpeciesModel csvModel = SpeciesModel.forImport(getCsvSeparator()); try (Import<SpeciesRow> importer = Import.newImport(csvModel, reader)) { for (SpeciesRow bean : importer) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java index c1ac62d..63e0bf6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java @@ -25,7 +25,6 @@ package fr.ifremer.tutti.service.referential; */ import com.google.common.base.Charsets; -import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -37,16 +36,15 @@ import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.referential.csv.VesselModel; import fr.ifremer.tutti.service.referential.csv.VesselRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Export; import org.nuiton.csv.Import; import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; -import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.Reader; @@ -182,28 +180,17 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { } - public void exportTemporaryVessel(File file, List<Vessel> toExport) throws IOException { - VesselModel csvModel = new VesselModel(getCsvSeparator()); - - List<VesselRow> toExportRows = Lists.transform(toExport, new Function<Vessel, VesselRow>() { - @Override - public VesselRow apply(Vessel vessel) { - return new VesselRow(vessel); - } - }); - - try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { + try (CsvProducerForTemporaryVessel producerForTemporaryVessel = new CsvProducerForTemporaryVessel(file, getCsvSeparator())) { - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); + List<VesselRow> dataToExport = producerForTemporaryVessel.getDataToExport(toExport); + producerForTemporaryVessel.write(dataToExport); - } catch (IOException e) { - throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.referential.export.vessel.error", file), e); } + } protected ImportRequestResult<Vessel, String> processImportFile(File file, List<Vessel> existingEntities) { @@ -212,7 +199,7 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { - VesselModel csvModel = new VesselModel(getCsvSeparator()); + VesselModel csvModel = VesselModel.forImport(getCsvSeparator()); try (Import<VesselRow> importer = Import.newImport(csvModel, reader)) { for (VesselRow bean : importer) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java index adcf8d9..7687178 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/GearModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.referential.csv; */ import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import org.nuiton.csv.Common; @@ -37,10 +37,32 @@ import static org.nuiton.i18n.I18n.n; */ public class GearModel extends AbstractTuttiImportExportModel<GearRow> { - public GearModel(char separator) { + public static GearModel forExport(char separator) { + + GearModel exportModel = new GearModel(separator); + exportModel.forExport(); + return exportModel; + + } + + public static GearModel forImport(char separator) { + + GearModel importModel = new GearModel(separator); + importModel.forImport(); + return importModel; + + } + + @Override + public GearRow newEmptyInstance() { + return new GearRow(); + } + + protected GearModel(char separator) { super(separator); + } - // import definition + protected void forImport() { newMandatoryColumn(GearRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser(n("tutti.service.referential.import.gear.idNotNegative.error"))); newMandatoryColumn(GearRow.PROPERTY_NAME); @@ -48,18 +70,16 @@ public class GearModel extends AbstractTuttiImportExportModel<GearRow> { newMandatoryColumn(GearRow.PROPERTY_SCIENTIFIC_GEAR, Common.PRIMITIVE_BOOLEAN); newMandatoryColumn(GearRow.PROPERTY_TO_DELETE, TuttiCsvUtil.BOOLEAN); - // export definition + } + + protected void forExport() { newColumnForExport(GearRow.PROPERTY_ID); newColumnForExport(GearRow.PROPERTY_NAME); newColumnForExport(GearRow.PROPERTY_LABEL); newColumnForExport(GearRow.PROPERTY_SCIENTIFIC_GEAR, Common.PRIMITIVE_BOOLEAN); newColumnForExport(GearRow.PROPERTY_TO_DELETE); - } - @Override - public GearRow newEmptyInstance() { - return new GearRow(); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java index 1f67b75..4acc2e4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.referential.csv; */ import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import static org.nuiton.i18n.I18n.n; @@ -36,27 +36,47 @@ import static org.nuiton.i18n.I18n.n; */ public class PersonModel extends AbstractTuttiImportExportModel<PersonRow> { - public PersonModel(char separator) { + public static PersonModel forExport(char separator) { + + PersonModel exportModel = new PersonModel(separator); + exportModel.forExport(); + return exportModel; + + } + + public static PersonModel forImport(char separator) { + + PersonModel importModel = new PersonModel(separator); + importModel.forImport(); + return importModel; + + } + + @Override + public PersonRow newEmptyInstance() { + return new PersonRow(); + } + + protected PersonModel(char separator) { super(separator); + } - // import definition + protected void forImport() { newMandatoryColumn(PersonRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser(n("tutti.service.referential.import.person.idNotNegative.error"))); newMandatoryColumn(PersonRow.PROPERTY_FIRST_NAME); newMandatoryColumn(PersonRow.PROPERTY_LAST_NAME); newMandatoryColumn(PersonRow.PROPERTY_TO_DELETE, TuttiCsvUtil.BOOLEAN); - // export definition + } + + protected void forExport() { newColumnForExport(PersonRow.PROPERTY_ID); newColumnForExport(PersonRow.PROPERTY_FIRST_NAME); newColumnForExport(PersonRow.PROPERTY_LAST_NAME); newColumnForExport(PersonRow.PROPERTY_TO_DELETE); - } - @Override - public PersonRow newEmptyInstance() { - return new PersonRow(); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java index 767ada4..a2be5d3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/SpeciesModel.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.service.referential.csv; */ import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import static org.nuiton.i18n.I18n.n; @@ -36,25 +36,45 @@ import static org.nuiton.i18n.I18n.n; */ public class SpeciesModel extends AbstractTuttiImportExportModel<SpeciesRow> { - public SpeciesModel(char separator) { - super(separator); + public static SpeciesModel forExport(char separator) { + + SpeciesModel exportModel = new SpeciesModel(separator); + exportModel.forExport(); + return exportModel; + + } + + public static SpeciesModel forImport(char separator) { + + SpeciesModel importModel = new SpeciesModel(separator); + importModel.forImport(); + return importModel; + + } + + @Override + public SpeciesRow newEmptyInstance() { + return new SpeciesRow(); + } - // import definition + protected void forImport() { newMandatoryColumn(SpeciesRow.PROPERTY_ID, new TemporaryReferentialEntityIdParser(n("tutti.service.referential.import.species.idNotNegative.error"))); newMandatoryColumn(SpeciesRow.PROPERTY_NAME); newMandatoryColumn(SpeciesRow.PROPERTY_TO_DELETE, TuttiCsvUtil.BOOLEAN); - // export definition + } + + protected void forExport() { newColumnForExport(SpeciesRow.PROPERTY_ID); newColumnForExport(SpeciesRow.PROPERTY_NAME); newColumnForExport(SpeciesRow.PROPERTY_TO_DELETE); + } - @Override - public SpeciesRow newEmptyInstance() { - return new SpeciesRow(); + protected SpeciesModel(char separator) { + super(separator); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java index d0630f6..9c02179 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/VesselModel.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.service.referential.csv; import fr.ifremer.adagio.core.dao.technical.hibernate.TemporaryDataHelper; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import org.apache.commons.lang3.StringUtils; import org.nuiton.csv.Common; @@ -39,10 +39,32 @@ import static org.nuiton.i18n.I18n.t; */ public class VesselModel extends AbstractTuttiImportExportModel<VesselRow> { - public VesselModel(char separator) { + public static VesselModel forExport(char separator) { + + VesselModel exportModel = new VesselModel(separator); + exportModel.forExport(); + return exportModel; + + } + + public static VesselModel forImport(char separator) { + + VesselModel importModel = new VesselModel(separator); + importModel.forImport(); + return importModel; + + } + + @Override + public VesselRow newEmptyInstance() { + return new VesselRow(); + } + + protected VesselModel(char separator) { super(separator); + } - // import definition + protected void forImport() { newMandatoryColumn(VesselRow.PROPERTY_ID, new Common.StringValueParser() { @@ -71,18 +93,16 @@ public class VesselModel extends AbstractTuttiImportExportModel<VesselRow> { newMandatoryColumn(VesselRow.PROPERTY_SCIENTIFIC_VESSEL, Common.PRIMITIVE_BOOLEAN); newMandatoryColumn(VesselRow.PROPERTY_TO_DELETE, TuttiCsvUtil.BOOLEAN); - // export definition + } + + protected void forExport() { newColumnForExport(VesselRow.PROPERTY_ID); newColumnForExport(VesselRow.PROPERTY_NAME); newColumnForExport(VesselRow.PROPERTY_INTERNATIONAL_REGISTRATION_CODE); newColumnForExport(VesselRow.PROPERTY_SCIENTIFIC_VESSEL, Common.PRIMITIVE_BOOLEAN); newColumnForExport(VesselRow.PROPERTY_TO_DELETE); - } - @Override - public VesselRow newEmptyInstance() { - return new VesselRow(); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java new file mode 100644 index 0000000..9789834 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryGear.java @@ -0,0 +1,38 @@ +package fr.ifremer.tutti.service.referential.producer; + +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.referential.csv.GearModel; +import fr.ifremer.tutti.service.referential.csv.GearRow; + +import java.io.File; +import java.util.List; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForTemporaryGear extends CsvProducer<GearRow, GearModel> { + + public CsvProducerForTemporaryGear(File file, char separator) { + super(file, GearModel.forImport(separator)); + } + + public List<GearRow> getDataToExport(List<Gear> toExport) { + + List<GearRow> rows = Lists.transform(toExport, new Function<Gear, GearRow>() { + @Override + public GearRow apply(Gear Gear) { + return new GearRow(Gear); + } + }); + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryPerson.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryPerson.java new file mode 100644 index 0000000..2e1d2fe --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryPerson.java @@ -0,0 +1,38 @@ +package fr.ifremer.tutti.service.referential.producer; + +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.referential.csv.PersonModel; +import fr.ifremer.tutti.service.referential.csv.PersonRow; + +import java.io.File; +import java.util.List; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForTemporaryPerson extends CsvProducer<PersonRow, PersonModel> { + + public CsvProducerForTemporaryPerson(File file, char separator) { + super(file, PersonModel.forExport(separator)); + } + + public List<PersonRow> getDataToExport(List<Person> toExport) { + + List<PersonRow> rows = Lists.transform(toExport, new Function<Person, PersonRow>() { + @Override + public PersonRow apply(Person Person) { + return new PersonRow(Person); + } + }); + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporarySpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporarySpecies.java new file mode 100644 index 0000000..1d82559 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporarySpecies.java @@ -0,0 +1,38 @@ +package fr.ifremer.tutti.service.referential.producer; + +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.referential.csv.SpeciesModel; +import fr.ifremer.tutti.service.referential.csv.SpeciesRow; + +import java.io.File; +import java.util.List; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForTemporarySpecies extends CsvProducer<SpeciesRow, SpeciesModel> { + + public CsvProducerForTemporarySpecies(File file, char separator) { + super(file, SpeciesModel .forExport(separator)); + } + + public List<SpeciesRow> getDataToExport(List<Species> toExport) { + + List<SpeciesRow> rows = Lists.transform(toExport, new Function<Species, SpeciesRow>() { + @Override + public SpeciesRow apply(Species species) { + return new SpeciesRow(species); + } + }); + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryVessel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryVessel.java new file mode 100644 index 0000000..da9381b --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/producer/CsvProducerForTemporaryVessel.java @@ -0,0 +1,38 @@ +package fr.ifremer.tutti.service.referential.producer; + +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.referential.csv.VesselModel; +import fr.ifremer.tutti.service.referential.csv.VesselRow; + +import java.io.File; +import java.util.List; + +/** + * Created on 2/6/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForTemporaryVessel extends CsvProducer<VesselRow, VesselModel> { + + public CsvProducerForTemporaryVessel(File file, char separator) { + super(file, VesselModel.forExport(separator)); + } + + public List<VesselRow> getDataToExport(List<Vessel> toExport) { + + List<VesselRow> rows = Lists.transform(toExport, new Function<Vessel, VesselRow>() { + @Override + public VesselRow apply(Vessel Vessel) { + return new VesselRow(Vessel); + } + }); + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportService.java index b4a3c49..9676c8f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportService.java @@ -30,7 +30,7 @@ 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.export.generic.TuttiExportService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.birt.core.exception.BirtException; @@ -174,7 +174,7 @@ public class ReportService extends AbstractTuttiService { // export fishing operation progressionModel.increments(t("tutti.report.step.export.fishingOperation")); - File exportDirectory = getService(TuttiExportService.class). + File exportDirectory = getService(GenericFormatExportService.class). exportFishingOperation(model.getCruiseId(), model.getFishingOperationId()); diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService2Test.java similarity index 98% rename from tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java rename to tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService2Test.java index d1c852b..275e40b 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService2Test.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.genericformat; /* * #%L @@ -44,7 +44,7 @@ import java.util.List; * @author tchemit <chemit@codelutin.com> * @since 2.3.2 */ -public class TuttiExportService2Test { +public class GenericFormatExportService2Test { @ClassRule public static final ServiceDbResource dbResource = @@ -60,7 +60,7 @@ public class TuttiExportService2Test { public static final String OPERATION_3_ID = "100114"; - protected TuttiExportService service; + protected GenericFormatExportService service; protected ServiceDbResource.DataContext dataContext; @@ -77,7 +77,7 @@ public class TuttiExportService2Test { TuttiServiceContext serviceContext = dbResource.getServiceContext(); - service = serviceContext.getService(TuttiExportService.class); + service = serviceContext.getService(GenericFormatExportService.class); } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceAno5804Test.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno5804Test.java similarity index 92% rename from tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceAno5804Test.java rename to tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno5804Test.java index 3dd2413..e579cc0 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceAno5804Test.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno5804Test.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.genericformat; /* * #%L @@ -42,13 +42,13 @@ import java.io.File; * @author Tony Chemit - chemit@codelutin.com * @since XXX */ -public class TuttiExportServiceAno5804Test { +public class GenericFormatExportServiceAno5804Test { @ClassRule public static final ServiceDbResource dbResource = ServiceDbResource.readDb("dbAno5804"); - protected TuttiExportService service; + protected GenericFormatExportService service; protected PersistenceService persistenceService; @@ -82,7 +82,7 @@ public class TuttiExportServiceAno5804Test { dbResource.setCountryInConfig("12"); dbResource.openDataContext(); - service = serviceContext.getService(TuttiExportService.class); + service = serviceContext.getService(GenericFormatExportService.class); dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 3, OPERATION_1_ID, OPERATION_2_ID, OPERATION_3_ID); diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java similarity index 98% rename from tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceTest.java rename to tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java index 9019a77..988ef78 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.genericformat; /* * #%L @@ -46,7 +46,7 @@ import java.util.Map; * @author tchemit <chemit@codelutin.com> * @since 1.3 */ -public class TuttiExportServiceTest { +public class GenericFormatExportServiceTest { @ClassRule public static final ServiceDbResource dbResource = @@ -190,7 +190,7 @@ public class TuttiExportServiceTest { public static final int NB_EXPECTED_CGFS_OPERATIONS = 106; - protected TuttiExportService service; + protected GenericFormatExportService service; protected PersistenceService persistenceService; @@ -212,7 +212,7 @@ public class TuttiExportServiceTest { dbResource.setCountryInConfig("12"); dbResource.openDataContext(); - service = serviceContext.getService(TuttiExportService.class); + service = serviceContext.getService(GenericFormatExportService.class); dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 2, OPERATION_1_ID, OPERATION_2_ID); @@ -396,7 +396,7 @@ public class TuttiExportServiceTest { try { service.exportCatches(exportContext, dataContext.cruise, dataContext.operations); - service.exportSpecies(exportContext, exportContext.getSpeciesToExport()); + service.exportSpecies(exportContext); } finally { exportContext.close(); } @@ -492,8 +492,8 @@ public class TuttiExportServiceTest { exportContext.addSpecies(allReferentSpeciesById.get("35884")); exportContext.addSpecies(allReferentSpeciesById.get("19279")); - service.exportSpecies(exportContext, - exportContext.getSpeciesToExport()); + service.exportSpecies(exportContext + ); } finally { exportContext.close(); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java index 1b6db2c..f1387ed 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java @@ -39,7 +39,7 @@ 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.generic.TuttiExportService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import fr.ifremer.tutti.service.export.pdf.CatchesPdfExportService; import fr.ifremer.tutti.service.export.sumatra.CatchesSumatraExportService; import fr.ifremer.tutti.service.operationimport.FishingOperationImportService; @@ -721,8 +721,8 @@ public class TuttiUIContext extends AbstractBean implements Closeable, UIMessage return serviceContext.getService(CatchesPdfExportService.class); } - public TuttiExportService getTuttiExportService() { - return serviceContext.getService(TuttiExportService.class); + public GenericFormatExportService getTuttiExportService() { + return serviceContext.getService(GenericFormatExportService.class); } public CatchesSumatraExportService getCatchesSumatraExportService() { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java index 08b098f..b66ef48 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseAction.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.ui.swing.action; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.service.export.generic.TuttiExportService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIHandler; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIModel; @@ -94,7 +94,7 @@ public class ExportCruiseAction extends AbstractTuttiAction<SelectCruiseUIModel, log.info("Will save cruise " + cruise.getId() + " to file: " + file); } - TuttiExportService service = getContext().getTuttiExportService(); + GenericFormatExportService service = getContext().getTuttiExportService(); ProgressionModel progressionModel = service.createExportCruiseProgessionModel(); setProgressionModel(progressionModel); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java index fd1f231..2c4c09e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportProgramAction.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.ui.swing.action; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.service.export.generic.TuttiExportService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIHandler; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIModel; @@ -92,7 +92,7 @@ public class ExportProgramAction extends AbstractTuttiAction<SelectCruiseUIModel log.info("Will save program " + program.getId() + " to file: " + file); } - TuttiExportService service = getContext().getTuttiExportService(); + GenericFormatExportService service = getContext().getTuttiExportService(); ProgressionModel progressionModel = service.createExportProgramProgessionModel(program.getId()); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/GearCaracteristicListCellRenderer.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/GearCaracteristicListCellRenderer.java index 75105d9..9153729 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/GearCaracteristicListCellRenderer.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/GearCaracteristicListCellRenderer.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.ui.swing.util.caracteristics; import com.google.common.collect.Maps; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import org.apache.commons.collections4.MapUtils; import org.nuiton.csv.ValueFormatter; import org.nuiton.decorator.Decorator; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.