r897 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service tutti-service/src/main/java/fr/ifremer/tutti/service tutti-service/src/main/java/fr/ifremer/tutti/service/export tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data tutti-service/src/main/resources/i18n tutti-service/src/test/java/fr/ifremer/tutti/service/export tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content
Author: tchemit Date: 2013-04-30 16:28:59 +0200 (Tue, 30 Apr 2013) New Revision: 897 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/897 Log: -refs #1875: [IMP/EXP] - Export des donn?\195?\169es de campagne : format g?\195?\169n?\195?\169rique (export marineLitter + individualObservations) -add missing svn properties + license headers Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportModel.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportRow.java Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ExportCruiseValidationMessagesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ExportOperationValidationMessagesAction.java Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-04-30 14:28:59 UTC (rev 897) @@ -238,6 +238,14 @@ Caracteristic getDeadOrAliveCaracteristic(); + Caracteristic getSampleIdCaracteristic(); + + Caracteristic getOtolitheIdCaracteristic(); + + Caracteristic getPmfmIdCaracteristic(); + + Caracteristic getWeightMeasuredCaracteristic(); + List<Gear> getAllScientificGear(); List<Gear> getAllFishingGear(); Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-04-30 14:28:59 UTC (rev 897) @@ -350,6 +350,26 @@ } @Override + public Caracteristic getSampleIdCaracteristic() { + return referentialService.getSampleIdCaracteristic(); + } + + @Override + public Caracteristic getOtolitheIdCaracteristic() { + return referentialService.getOtolitheIdCaracteristic(); + } + + @Override + public Caracteristic getPmfmIdCaracteristic() { + return referentialService.getPmfmIdCaracteristic(); + } + + @Override + public Caracteristic getWeightMeasuredCaracteristic() { + return referentialService.getWeightMeasuredCaracteristic(); + } + + @Override public List<Gear> getAllScientificGear() { return referentialService.getAllScientificGear(); } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-04-30 14:28:59 UTC (rev 897) @@ -201,6 +201,26 @@ } @Override + public Caracteristic getSampleIdCaracteristic() { + throw new RuntimeException("method not implemented"); + } + + @Override + public Caracteristic getOtolitheIdCaracteristic() { + throw new RuntimeException("method not implemented"); + } + + @Override + public Caracteristic getPmfmIdCaracteristic() { + throw new RuntimeException("method not implemented"); + } + + @Override + public Caracteristic getWeightMeasuredCaracteristic() { + throw new RuntimeException("method not implemented"); + } + + @Override public List<Gear> getAllScientificGear() { throw new RuntimeException("method not implemented"); } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-04-30 14:28:59 UTC (rev 897) @@ -289,28 +289,26 @@ if (source.getSamplingCode() != null) { Caracteristic caracteristic = - referentialService.getCaracteristic(enumeration.PMFM_ID_SAMPLE_ID); + referentialService.getSampleIdCaracteristic(); caracteristics.put(caracteristic, source.getSamplingCode()); } if (source.getCalcifiedPieceSamplingCode() != null) { Caracteristic caracteristic = - referentialService.getCaracteristic(enumeration.PMFM_ID_OTOLITHE_ID); + referentialService.getOtolitheIdCaracteristic(); caracteristics.put(caracteristic, source.getCalcifiedPieceSamplingCode()); } if (source.getWeight() != null) { - Caracteristic caracteristic = referentialService.getCaracteristic( - enumeration.PMFM_ID_WEIGHT_MEASURED); + Caracteristic caracteristic = referentialService.getWeightMeasuredCaracteristic(); caracteristics.put(caracteristic, source.getWeight()); } if (source.getLengthStepCaracteristic() != null) { - Caracteristic caracteristic = referentialService.getCaracteristic( - enumeration.PMFM_ID_ID_PSFM); + Caracteristic caracteristic = referentialService.getPmfmIdCaracteristic(); caracteristics.put(caracteristic, source.getLengthStepCaracteristic().getId()); @@ -351,22 +349,22 @@ sampleMeasurementPersistenceHelper.fillSampleMeasurements( result, batch.getIdAsInt()); - String sampleCode = (String) result.remove(referentialService.getCaracteristic(enumeration.PMFM_ID_SAMPLE_ID)); + String sampleCode = (String) result.remove(referentialService.getSampleIdCaracteristic()); if (sampleCode != null) { batch.setSamplingCode(sampleCode); } - String calcifiedPieceSampleCode = (String) result.remove(referentialService.getCaracteristic(enumeration.PMFM_ID_OTOLITHE_ID)); + String calcifiedPieceSampleCode = (String) result.remove(referentialService.getOtolitheIdCaracteristic()); if (sampleCode != null) { batch.setCalcifiedPieceSamplingCode(calcifiedPieceSampleCode); } - Float weight = (Float) result.remove(referentialService.getCaracteristic(enumeration.PMFM_ID_WEIGHT_MEASURED)); + Float weight = (Float) result.remove(referentialService.getWeightMeasuredCaracteristic()); if (weight != null) { batch.setWeight(weight); } - String lengthClassId = (String) result.remove(referentialService.getCaracteristic(enumeration.PMFM_ID_ID_PSFM)); + String lengthClassId = (String) result.remove(referentialService.getPmfmIdCaracteristic()); if (lengthClassId != null) { Caracteristic lengthStepCaracteristic = referentialService.getCaracteristic(Integer.valueOf(lengthClassId)); batch.setLengthStepCaracteristic(lengthStepCaracteristic); Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-04-30 14:28:59 UTC (rev 897) @@ -230,6 +230,14 @@ Caracteristic getDeadOrAliveCaracteristic(); + Caracteristic getSampleIdCaracteristic(); + + Caracteristic getOtolitheIdCaracteristic(); + + Caracteristic getPmfmIdCaracteristic(); + + Caracteristic getWeightMeasuredCaracteristic(); + List<Gear> getAllScientificGear(); List<Gear> getAllFishingGear(); Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-04-30 14:28:59 UTC (rev 897) @@ -608,6 +608,34 @@ } @Override + public Caracteristic getSampleIdCaracteristic() { + Integer pmfmId = enumeration.PMFM_ID_SAMPLE_ID; + Caracteristic result = thisService.getCaracteristic(pmfmId); + return result; + } + + @Override + public Caracteristic getOtolitheIdCaracteristic() { + Integer pmfmId = enumeration.PMFM_ID_OTOLITHE_ID; + Caracteristic result = thisService.getCaracteristic(pmfmId); + return result; + } + + @Override + public Caracteristic getPmfmIdCaracteristic() { + Integer pmfmId = enumeration.PMFM_ID_ID_PSFM; + Caracteristic result = thisService.getCaracteristic(pmfmId); + return result; + } + + @Override + public Caracteristic getWeightMeasuredCaracteristic() { + Integer pmfmId = enumeration.PMFM_ID_WEIGHT_MEASURED; + Caracteristic result = thisService.getCaracteristic(pmfmId); + return result; + } + + @Override public Caracteristic getCaracteristic(Integer pmfmId) { Object[] source = queryUniqueWithStatus("pmfmById", "pmfmId", IntegerType.INSTANCE, pmfmId, Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-04-30 14:28:59 UTC (rev 897) @@ -452,6 +452,26 @@ } @Override + public Caracteristic getSampleIdCaracteristic() { + return driver.getSampleIdCaracteristic(); + } + + @Override + public Caracteristic getOtolitheIdCaracteristic() { + return driver.getOtolitheIdCaracteristic(); + } + + @Override + public Caracteristic getPmfmIdCaracteristic() { + return driver.getPmfmIdCaracteristic(); + } + + @Override + public Caracteristic getWeightMeasuredCaracteristic() { + return driver.getWeightMeasuredCaracteristic(); + } + + @Override public Vessel getVessel(String vesselCode) { return driver.getVessel(vesselCode); } Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-04-30 14:28:59 UTC (rev 897) @@ -206,7 +206,6 @@ prepareRows(persistenceService, currentRow, rows, childBatch); } } - } public void prepareRows(PersistenceService persistenceService, Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java (rev 0) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java 2013-04-30 14:28:59 UTC (rev 897) @@ -0,0 +1,168 @@ +package fr.ifremer.tutti.service.export; + +/* + * #%L + * Tutti :: Service + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.TuttiCsvUtil; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + * Model of a individual observation export. + * + * @author tchemit <chemit@codelutin.com> + * @since 2.0.1 + */ +public class IndividualObservationExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<IndividualObservationExportRow> { + + protected final Caracteristic caracteristicSample; + + protected final Caracteristic caracteristicOtolithe; + + protected final Caracteristic caracteristicWeight; + + protected final Caracteristic caracteristicPmfmId; + + public IndividualObservationExportModel( + char separator, + Caracteristic caracteristicSample, + Caracteristic caracteristicOtolithe, + Caracteristic caracteristicWeight, + Caracteristic caracteristicPmfmId) { + super(separator); + + this.caracteristicSample = caracteristicSample; + this.caracteristicOtolithe = caracteristicOtolithe; + this.caracteristicWeight = caracteristicWeight; + this.caracteristicPmfmId = caracteristicPmfmId; + + newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); + newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); + newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); + newColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, Gear.PROPERTY_NAME); + newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); + newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER); + newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); + newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME); + + newColumnForExport("BatchId", IndividualObservationExportRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); + newColumnForExport("Comment", IndividualObservationBatch.PROPERTY_COMMENT); + newColumnForExport("CaracteristicId", IndividualObservationExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID); + newColumnForExport("CaracteristicValue", IndividualObservationExportRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + } + + public void prepareRows(PersistenceService persistenceService, + List<IndividualObservationExportRow> rows, + Cruise cruise, + FishingOperation operation) { + + List<IndividualObservationBatch> observations = + persistenceService.getAllIndividualObservationBatch(operation.getId()); + + if (CollectionUtils.isNotEmpty(observations)) { + for (IndividualObservationBatch child : observations) { + + addCaracteristicRow(rows, + cruise, + operation, + child, + caracteristicSample, + child.getSamplingCode()); + + addCaracteristicRow(rows, + cruise, + operation, + child, + caracteristicOtolithe, + child.getCalcifiedPieceSamplingCode()); + + addCaracteristicRow(rows, + cruise, + operation, + child, + caracteristicWeight, + child.getWeight()); + + if (child.getLengthStepCaracteristic() != null) { + addCaracteristicRow(rows, + cruise, + operation, + child, + caracteristicPmfmId, + child.getLengthStepCaracteristic().getIdAsInt()); + + addCaracteristicRow(rows, + cruise, + operation, + child, + child.getLengthStepCaracteristic(), + child.getSize()); + } + + CaracteristicMap caracteristics = child.getCaracteristics(); + if (MapUtils.isNotEmpty(caracteristics)) { + for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) { + addCaracteristicRow(rows, + cruise, + operation, + child, + entry.getKey(), + entry.getValue()); + } + } + } + } + } + + private void addCaracteristicRow(List<IndividualObservationExportRow> rows, + Cruise cruise, + FishingOperation operation, + IndividualObservationBatch child, + Caracteristic caracteristic, + Serializable caracteristicValue) { + if (caracteristicValue != null) { + + IndividualObservationExportRow row = new IndividualObservationExportRow(); + row.setCruise(cruise); + row.setFishingOperation(operation); + row.setBatch(child); + row.setCaracteristic(caracteristic); + row.setCaracteristicValue(caracteristicValue); + rows.add(row); + } + } +} Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java (rev 0) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java 2013-04-30 14:28:59 UTC (rev 897) @@ -0,0 +1,133 @@ +package fr.ifremer.tutti.service.export; + +/* + * #%L + * Tutti :: Service + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; + +import java.io.Serializable; +import java.util.Date; + +/** + * A row in a individual observation export. + * + * @author tchemit <chemit@codelutin.com> + * @since 2.0.1 + */ +public class IndividualObservationExportRow implements Serializable { + + public static final String PROPERTY_BATCH = "batch"; + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_BATCH_ID = "batchId"; + + public static final String PROPERTY_CARACTERISTIC = "caracteristic"; + + public static final String PROPERTY_CARACTERISTIC_VALUE = "caracteristicValue"; + + protected Cruise cruise; + + protected FishingOperation fishingOperation; + + protected IndividualObservationBatch batch; + + protected Caracteristic caracteristic; + + protected Serializable caracteristicValue; + + public void setCruise(Cruise cruise) { + this.cruise = cruise; + } + + public void setFishingOperation(FishingOperation fishingOperation) { + this.fishingOperation = fishingOperation; + } + + public void setBatch(IndividualObservationBatch batch) { + this.batch = batch; + } + + public void setCaracteristic(Caracteristic caracteristic) { + this.caracteristic = caracteristic; + } + + public void setCaracteristicValue(Serializable caracteristicValue) { + this.caracteristicValue = caracteristicValue; + } + + public Integer getBatchId() { + return batch.getIdAsInt(); + } + + public Caracteristic getCaracteristic() { + return caracteristic; + } + + public Serializable getCaracteristicValue() { + return caracteristicValue; + } + + public String getComment() { + return batch.getComment(); + } + + public Date getBeginDate() { + return cruise.getBeginDate(); + } + + public Program getProgram() { + return cruise.getProgram(); + } + + public String getSurveyPart() { + return cruise.getSurveyPart(); + } + + public String getStationNumber() { + return fishingOperation.getStationNumber(); + } + + public Integer getFishingOperationNumber() { + return fishingOperation.getFishingOperationNumber(); + } + + public Gear getGear() { + return fishingOperation.getGear(); + } + + public Vessel getVessel() { + return fishingOperation.getVessel(); + } + + public String getMultirigAggregation() { + return fishingOperation.getMultirigAggregation(); + } +} Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportModel.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportModel.java (rev 0) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportModel.java 2013-04-30 14:28:59 UTC (rev 897) @@ -0,0 +1,86 @@ +package fr.ifremer.tutti.service.export; + +/* + * #%L + * Tutti :: Service + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.BatchContainer; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.TuttiCsvUtil; +import org.apache.commons.collections.CollectionUtils; + +import java.util.List; + +/** + * Model of a marine litter export. + * + * @author tchemit <chemit@codelutin.com> + * @since 2.0.1 + */ +public class MarineLitterExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<MarineLitterExportRow> { + + public MarineLitterExportModel(char separator) { + super(separator); + + newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); + newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME); + newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); + newColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, Gear.PROPERTY_NAME); + newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); + newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER); + newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); + newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME); + + newColumnForExport("MarineLitterCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newColumnForExport("MarineLitterSizeCategory", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); + newColumnForExport("Number", MarineLitterBatch.PROPERTY_NUMBER, TuttiCsvUtil.INTEGER); + newColumnForExport("Weight", MarineLitterBatch.PROPERTY_WEIGHT, TuttiCsvUtil.FLOAT); + newColumnForExport("Comment", MarineLitterBatch.PROPERTY_COMMENT); + } + + public void prepareRows(PersistenceService persistenceService, + List<MarineLitterExportRow> rows, + Cruise cruise, + FishingOperation operation) { + + BatchContainer<MarineLitterBatch> rootMarineLitterBatch = + persistenceService.getRootMarineLitterBatch(operation.getId()); + + List<MarineLitterBatch> children = rootMarineLitterBatch.getChildren(); + if (CollectionUtils.isNotEmpty(children)) { + for (MarineLitterBatch child : children) { + MarineLitterExportRow row = new MarineLitterExportRow(); + row.setCruise(cruise); + row.setFishingOperation(operation); + row.setBatch(child); + rows.add(row); + } + } + } +} Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportRow.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportRow.java (rev 0) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportRow.java 2013-04-30 14:28:59 UTC (rev 897) @@ -0,0 +1,119 @@ +package fr.ifremer.tutti.service.export; + +/* + * #%L + * Tutti :: Service + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; + +import java.io.Serializable; +import java.util.Date; + +/** + * A row in a marine litter export. + * + * @author tchemit <chemit@codelutin.com> + * @since 2.0.1 + */ +public class MarineLitterExportRow implements Serializable { + + public static final String PROPERTY_BATCH= "batch"; + + private static final long serialVersionUID = 1L; + + protected Cruise cruise; + + protected FishingOperation fishingOperation; + + protected MarineLitterBatch batch; + + public void setCruise(Cruise cruise) { + this.cruise = cruise; + } + + public void setFishingOperation(FishingOperation fishingOperation) { + this.fishingOperation = fishingOperation; + } + + public void setBatch(MarineLitterBatch batch) { + this.batch = batch; + } + + public CaracteristicQualitativeValue getMarineLitterCategory() { + return batch.getMarineLitterCategory(); + } + + public CaracteristicQualitativeValue getMarineLitterSizeCategory() { + return batch.getMarineLitterSizeCategory(); + } + + public Integer getNumber() { + return batch.getNumber(); + } + + public Float getWeight() { + return batch.getWeight(); + } + + public String getComment() { + return batch.getComment(); + } + + public Date getBeginDate() { + return cruise.getBeginDate(); + } + + public Program getProgram() { + return cruise.getProgram(); + } + + public String getSurveyPart() { + return cruise.getSurveyPart(); + } + + public String getStationNumber() { + return fishingOperation.getStationNumber(); + } + + public Integer getFishingOperationNumber() { + return fishingOperation.getFishingOperationNumber(); + } + + public Gear getGear() { + return fishingOperation.getGear(); + } + + public Vessel getVessel() { + return fishingOperation.getVessel(); + } + + public String getMultirigAggregation() { + return fishingOperation.getMultirigAggregation(); + } +} Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/MarineLitterExportRow.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-30 14:28:59 UTC (rev 897) @@ -97,6 +97,14 @@ protected List<SampleCategoryEnum> samplingOrder; + protected Caracteristic sampleIdCaracteristic; + + protected Caracteristic otolitheIdCaracteristic; + + protected Caracteristic weightMeasuredCaracteristic; + + protected Caracteristic pmfmIdCaracteristic; + @Override public void setServiceContext(TuttiServiceContext context) { super.setServiceContext(context); @@ -108,6 +116,11 @@ verticalOpeningCaracteristic = persistenceService.getVerticalOpeningCaracteristic(); horizontalOpeningWingCaracteristic = persistenceService.getHorizontalOpeningWingCaracteristic(); horizontalOpeningDoorCaracteristic = persistenceService.getHorizontalOpeningDoorCaracteristic(); + sampleIdCaracteristic = persistenceService.getSampleIdCaracteristic(); + otolitheIdCaracteristic = persistenceService.getOtolitheIdCaracteristic(); + weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic(); + pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic(); + List<TuttiLocation> allCountry = persistenceService.getAllCountry(); String countryId = context.getConfig().getExportCountryId(); country = TuttiEntities.splitById(allCountry).get(countryId); @@ -208,6 +221,10 @@ verticalOpeningCaracteristic, horizontalOpeningWingCaracteristic, horizontalOpeningDoorCaracteristic, + sampleIdCaracteristic, + otolitheIdCaracteristic, + weightMeasuredCaracteristic, + pmfmIdCaracteristic, samplingOrder); } @@ -279,6 +296,16 @@ progressionModel.increments(1); progressionModel.setMessage( + _("tutti.service.exportCruise.exportMarineLitters", cruiseName)); + exportMarineLitters(exportContext, cruise, loadedOperations); + progressionModel.increments(1); + + progressionModel.setMessage( + _("tutti.service.exportCruise.exportIndividualObservations", cruiseName)); + exportIndividualObservations(exportContext, cruise, loadedOperations); + progressionModel.increments(1); + + progressionModel.setMessage( _("tutti.service.exportCruise.exportCatches", cruiseName)); // exportCatches(exportContext, cruise, loadedOperations); progressionModel.increments(1); @@ -328,6 +355,40 @@ } } + protected void exportMarineLitters(ExportContext exportContext, + Cruise cruise, + List<FishingOperation> operations) { + + try { + + for (FishingOperation operation : operations) { + List<MarineLitterExportRow> rows = Lists.newArrayList(); + exportContext.marineLitterModel.prepareRows(persistenceService, rows, cruise, operation); + exportContext.marineLitterExport.write(rows, exportContext.marineLitterWriter); + } + + } catch (Exception e) { + throw new TuttiTechnicalException(_("tutti.service.export.parameters.error"), e); + } + } + + protected void exportIndividualObservations(ExportContext exportContext, + Cruise cruise, + List<FishingOperation> operations) { + + try { + + for (FishingOperation operation : operations) { + List<IndividualObservationExportRow> rows = Lists.newArrayList(); + exportContext.individualObservationModel.prepareRows(persistenceService, rows, cruise, operation); + exportContext.individualObservationExport.write(rows, exportContext.individualObservationWriter); + } + + } catch (Exception e) { + throw new TuttiTechnicalException(_("tutti.service.export.parameters.error"), e); + } + } + protected void exportCatches(ExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { @@ -380,6 +441,10 @@ File parameterFile; + File marineLitterFile; + + File individualObservationFile; + File catchFile; BufferedWriter surveyWriter; @@ -388,30 +453,46 @@ BufferedWriter parameterWriter; + BufferedWriter marineLitterWriter; + BufferedWriter catchWriter; + BufferedWriter individualObservationWriter; + SurveyExportModel surveyModel; OperationExportModel operationModel; + MarineLitterExportModel marineLitterModel; + ParameterExportModel parameterModel; CatchExportModel catchModel; + IndividualObservationExportModel individualObservationModel; + TuttiCsvUtil.TuttiRepeatableExport<SurveyExportRow> surveyExport; TuttiCsvUtil.TuttiRepeatableExport<OperationExportRow> operationExport; + TuttiCsvUtil.TuttiRepeatableExport<MarineLitterExportRow> marineLitterExport; + TuttiCsvUtil.TuttiRepeatableExport<ParameterExportRow> parameterExport; TuttiCsvUtil.TuttiRepeatableExport<CatchExportRow> catchExport; + TuttiCsvUtil.TuttiRepeatableExport<IndividualObservationExportRow> individualObservationExport; + ExportContext(File basedir, char csvSeparator, DecoratorService decoratorService, Caracteristic verticalOpeningCaracteristic, Caracteristic horizontalOpeningWingCaracteristic, Caracteristic horizontalOpeningDoorCaracteristic, + Caracteristic sampleIdCaracteristic, + Caracteristic otolitheIdCaracteristic, + Caracteristic weightMeasuredCaracteristic, + Caracteristic pmfmIdCaracteristic, List<SampleCategoryEnum> samplingOrder) { try { @@ -422,12 +503,18 @@ 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); + individualObservationFile = new File(basedir, "individualObservation.csv"); + individualObservationWriter = Files.newWriter(individualObservationFile, Charsets.UTF_8); + } catch (FileNotFoundException e) { // should never happen @@ -445,7 +532,15 @@ parameterModel = new ParameterExportModel( csvSeparator, decoratorService); + + marineLitterModel = new MarineLitterExportModel(csvSeparator); catchModel = new CatchExportModel(csvSeparator, samplingOrder); + individualObservationModel = new IndividualObservationExportModel( + csvSeparator, + sampleIdCaracteristic, + otolitheIdCaracteristic, + weightMeasuredCaracteristic, + pmfmIdCaracteristic); surveyExport = TuttiCsvUtil.newRepeatableExport( surveyModel); @@ -456,7 +551,11 @@ parameterExport = TuttiCsvUtil.newRepeatableExport( parameterModel); + marineLitterExport = TuttiCsvUtil.newRepeatableExport( + marineLitterModel); + catchExport = TuttiCsvUtil.newRepeatableExport(catchModel); + individualObservationExport = TuttiCsvUtil.newRepeatableExport(individualObservationModel); } @Override @@ -465,6 +564,8 @@ IOUtils.closeQuietly(operationWriter); IOUtils.closeQuietly(parameterWriter); IOUtils.closeQuietly(catchWriter); + IOUtils.closeQuietly(marineLitterWriter); + IOUtils.closeQuietly(individualObservationWriter); } } Modified: trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml =================================================================== --- trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml 2013-04-30 14:28:59 UTC (rev 897) @@ -2,8 +2,8 @@ <!-- #%L Tutti :: Service - $Id: SpeciesBatch-error-validation.xml 862 2013-04-23 08:09:40Z kmorin $ - $HeadURL: http://svn.forge.codelutin.com/svn/tutti/trunk/tutti-service/src/main/resour... $ + $Id$ + $HeadURL$ %% Copyright (C) 2012 - 2013 Ifremer %% Property changes on: trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties =================================================================== --- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-04-30 14:28:59 UTC (rev 897) @@ -68,6 +68,8 @@ tutti.service.exportCruise.exportCatches=Export du fichier <strong>catch.csv</strong> pour la campagne %s tutti.service.exportCruise.exportOperations=Export du fichier <strong>operations.csv</strong> pour la campagne %s tutti.service.exportCruise.exportParameters=Export du fichier <strong>parameters.csv</strong> pour la campagne %s +tutti.service.exportCruise.exportMarineLitters=Export du fichier <strong>marineLitter.csv</strong> pour la campagne %s +tutti.service.exportCruise.exportIndividualObservations=Export du fichier <strong>individualObservation.csv</strong> pour la campagne %s tutti.service.exportCruise.exportSurvey=Export du fichier <strong>survey.csv</strong> pour la campagne %s tutti.service.exportSumatra.error.species.null=L'espèce est nulle tutti.service.exportSumatra.error.station.null=Le trait est nul Modified: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java =================================================================== --- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-04-30 14:28:59 UTC (rev 897) @@ -31,8 +31,11 @@ import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory; import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; @@ -73,6 +76,24 @@ protected TuttiExportService service; + protected Caracteristic marineLitterCategory; + + protected Caracteristic marineLitterSizeCategory; + + protected Caracteristic caracteristicVerticalOpening; + + protected Caracteristic caracteristicHorizontalOpeningWing; + + protected Caracteristic caracteristicHorizontalOpeningDoor; + + protected Caracteristic sampleIdCaracteristic; + + protected Caracteristic otolitheIdCaracteristic; + + protected Caracteristic weightMeasuredCaracteristic; + + protected Caracteristic pmfmIdCaracteristic; + protected List<TuttiLocation> countries; protected Program program; @@ -81,6 +102,10 @@ protected List<FishingOperation> operations; + protected List<MarineLitterBatch> marineLitters; + + protected List<IndividualObservationBatch> individualObservations; + protected ProgressionModel progressionModel; @Override @@ -101,6 +126,8 @@ cruise = createCruise(); operations = createOperations(cruise); + marineLitters = createMarineLitters(operations); + individualObservations = createIndividualObservations(operations); SampleCategoryEnum.sortedUnsorted.setFieldValue(1428); SampleCategoryEnum.sortedUnsorted.setInit(true); @@ -113,7 +140,7 @@ SampleCategoryEnum.age.setFieldValue(1430); SampleCategoryEnum.age.setInit(true); - Map<String,FishingOperation> operationMap = TuttiEntities.splitById(operations); + Map<String, FishingOperation> operationMap = TuttiEntities.splitById(operations); serviceContext.getConfig().setCsvSeparator(';'); @@ -123,6 +150,11 @@ Mockito.when(persistenceService.getVerticalOpeningCaracteristic()).thenReturn(caracteristicVerticalOpening); Mockito.when(persistenceService.getHorizontalOpeningDoorCaracteristic()).thenReturn(caracteristicHorizontalOpeningDoor); Mockito.when(persistenceService.getHorizontalOpeningWingCaracteristic()).thenReturn(caracteristicHorizontalOpeningWing); + Mockito.when(persistenceService.getSampleIdCaracteristic()).thenReturn(sampleIdCaracteristic); + Mockito.when(persistenceService.getOtolitheIdCaracteristic()).thenReturn(otolitheIdCaracteristic); + Mockito.when(persistenceService.getWeightMeasuredCaracteristic()).thenReturn(weightMeasuredCaracteristic); + Mockito.when(persistenceService.getPmfmIdCaracteristic()).thenReturn(pmfmIdCaracteristic); + Mockito.when(persistenceService.getProgram(Mockito.<String>any())).thenReturn(program); Mockito.when(persistenceService.getCruise(Mockito.<String>any())).thenReturn(cruise); Mockito.when(persistenceService.getAllCruise(Mockito.<String>any())).thenReturn(Lists.newArrayList(cruise)); @@ -133,6 +165,28 @@ Mockito.when(persistenceService.getFishingOperation("2")).thenReturn(operationMap.get("2")); Mockito.when(persistenceService.getFishingOperation("3")).thenReturn(operationMap.get("3")); + BatchContainer<MarineLitterBatch> marineLitterBatchBatchContainer; + marineLitterBatchBatchContainer = new BatchContainer<MarineLitterBatch>(); + marineLitterBatchBatchContainer.addChildren(marineLitters.get(0)); + marineLitterBatchBatchContainer.addChildren(marineLitters.get(1)); + Mockito.when(persistenceService.getRootMarineLitterBatch("0")).thenReturn(marineLitterBatchBatchContainer); + + marineLitterBatchBatchContainer = new BatchContainer<MarineLitterBatch>(); + marineLitterBatchBatchContainer.addChildren(marineLitters.get(2)); + marineLitterBatchBatchContainer.addChildren(marineLitters.get(3)); + Mockito.when(persistenceService.getRootMarineLitterBatch("1")).thenReturn(marineLitterBatchBatchContainer); + + marineLitterBatchBatchContainer = new BatchContainer<MarineLitterBatch>(); + Mockito.when(persistenceService.getRootMarineLitterBatch("2")).thenReturn(marineLitterBatchBatchContainer); + + marineLitterBatchBatchContainer = new BatchContainer<MarineLitterBatch>(); + Mockito.when(persistenceService.getRootMarineLitterBatch("3")).thenReturn(marineLitterBatchBatchContainer); + + Mockito.when(persistenceService.getAllIndividualObservationBatch("0")).thenReturn(Lists.newArrayList(individualObservations.get(0), individualObservations.get(1))); + Mockito.when(persistenceService.getAllIndividualObservationBatch("1")).thenReturn(Lists.newArrayList(individualObservations.get(2), individualObservations.get(3))); + Mockito.when(persistenceService.getAllIndividualObservationBatch("2")).thenReturn(Lists.<IndividualObservationBatch>newArrayList()); + Mockito.when(persistenceService.getAllIndividualObservationBatch("3")).thenReturn(Lists.<IndividualObservationBatch>newArrayList()); + TuttiServiceContext serviceContextSpy = Mockito.spy(serviceContext); Mockito.when(serviceContextSpy.getService(Mockito.eq(PersistenceService.class))).thenReturn(persistenceService); @@ -146,7 +200,6 @@ tuttiWeightComputingService.setServiceContext(serviceContextSpy); service.tuttiWeightComputingService = tuttiWeightComputingService; - progressionModel = new ProgressionModel(); progressionModel.setTotal(6); @@ -190,7 +243,7 @@ exportContext.close(); } Assert.assertTrue(exportContext.surveyFile.exists()); - Assert.assertEquals(Files.readLines(exportContext.surveyFile, Charsets.UTF_8).size(), 1 + 1); + Assert.assertEquals(1 + 1, Files.readLines(exportContext.surveyFile, Charsets.UTF_8).size()); if (log.isInfoEnabled()) { log.info("Survey export:\n" + @@ -210,7 +263,7 @@ exportContext.close(); } Assert.assertTrue(exportContext.operationFile.exists()); - Assert.assertEquals(Files.readLines(exportContext.operationFile, Charsets.UTF_8).size(), operations.size() + 1); + Assert.assertEquals(operations.size() + 1, Files.readLines(exportContext.operationFile, Charsets.UTF_8).size()); if (log.isInfoEnabled()) { log.info("Operation export:\n" + @@ -230,7 +283,7 @@ exportContext.close(); } Assert.assertTrue(exportContext.parameterFile.exists()); - Assert.assertEquals(Files.readLines(exportContext.parameterFile, Charsets.UTF_8).size(), 1 + operations.size() * 7); + Assert.assertEquals(1 + operations.size() * 7, Files.readLines(exportContext.parameterFile, Charsets.UTF_8).size()); if (log.isInfoEnabled()) { log.info("Parameter export:\n" + @@ -250,13 +303,59 @@ exportContext.close(); } Assert.assertTrue(exportContext.catchFile.exists()); - Assert.assertEquals(Files.readLines(exportContext.catchFile, Charsets.UTF_8).size(), 2); + Assert.assertEquals(2, Files.readLines(exportContext.catchFile, Charsets.UTF_8).size()); if (log.isInfoEnabled()) { log.info("Catch export:\n" + Files.toString(exportContext.catchFile, Charsets.UTF_8)); } } + @Test + public void exportMarineLitters() throws Exception { + + TuttiExportService.ExportContext exportContext = + service.createExportContext(datadirectory); + + try { + service.exportMarineLitters(exportContext, cruise, operations); + } finally { + exportContext.close(); + } + Assert.assertTrue(exportContext.marineLitterFile.exists()); + Assert.assertEquals(marineLitters.size() + 1, Files.readLines(exportContext.marineLitterFile, Charsets.UTF_8).size()); + + if (log.isInfoEnabled()) { + log.info("MarineLitter export:\n" + + Files.toString(exportContext.marineLitterFile, Charsets.UTF_8)); + } + } + + @Test + public void exportIndividualObservations() throws Exception { + + TuttiExportService.ExportContext exportContext = + service.createExportContext(datadirectory); + + try { + service.exportIndividualObservations(exportContext, cruise, operations); + } finally { + exportContext.close(); + } + Assert.assertTrue(exportContext.individualObservationFile.exists()); + int expectedRow = 1 /* header*/ + + 5 /* individualObservation 0 */ + + 3 /* individualObservation 1 */ + + 5 /* individualObservation 2 */ + + 3 /* individualObservation 3 */; + + if (log.isInfoEnabled()) { + log.info("individualObservation export:\n" + + Files.toString(exportContext.individualObservationFile, Charsets.UTF_8)); + } + + Assert.assertEquals(expectedRow, Files.readLines(exportContext.individualObservationFile, Charsets.UTF_8).size()); + } + private List<TuttiLocation> createCountries() { List<TuttiLocation> result = Lists.newArrayList(); TuttiLocation country = TuttiBeanFactory.newTuttiLocation(); @@ -340,12 +439,123 @@ return cruise; } - Caracteristic caracteristicVerticalOpening; + private List<MarineLitterBatch> createMarineLitters(List<FishingOperation> operations) { - Caracteristic caracteristicHorizontalOpeningWing; + List<MarineLitterBatch> result = Lists.newArrayList(); - Caracteristic caracteristicHorizontalOpeningDoor; + MarineLitterBatch marineLitterBatch; + marineLitterBatch = TuttiBeanFactory.newMarineLitterBatch(); + result.add(marineLitterBatch); + marineLitterBatch.setFishingOperation(operations.get(0)); + marineLitterBatch.setId(1); + marineLitterBatch.setMarineLitterCategory(marineLitterCategory.getQualitativeValue(0)); + marineLitterBatch.setMarineLitterSizeCategory(marineLitterSizeCategory.getQualitativeValue(0)); + marineLitterBatch.setComment("Comment1"); + marineLitterBatch.setNumber(10); + marineLitterBatch.setWeight(10f); + + marineLitterBatch = TuttiBeanFactory.newMarineLitterBatch(); + result.add(marineLitterBatch); + marineLitterBatch.setFishingOperation(operations.get(0)); + marineLitterBatch.setId(2); + marineLitterBatch.setMarineLitterCategory(marineLitterCategory.getQualitativeValue(1)); + marineLitterBatch.setMarineLitterSizeCategory(marineLitterSizeCategory.getQualitativeValue(1)); + marineLitterBatch.setComment("Comment2"); + marineLitterBatch.setNumber(20); + marineLitterBatch.setWeight(20f); + + marineLitterBatch = TuttiBeanFactory.newMarineLitterBatch(); + result.add(marineLitterBatch); + marineLitterBatch.setFishingOperation(operations.get(1)); + marineLitterBatch.setId(10); + marineLitterBatch.setMarineLitterCategory(marineLitterCategory.getQualitativeValue(0)); + marineLitterBatch.setMarineLitterSizeCategory(marineLitterSizeCategory.getQualitativeValue(0)); + marineLitterBatch.setComment("Comment10"); + marineLitterBatch.setNumber(100); + marineLitterBatch.setWeight(100f); + + marineLitterBatch = TuttiBeanFactory.newMarineLitterBatch(); + result.add(marineLitterBatch); + marineLitterBatch.setFishingOperation(operations.get(1)); + marineLitterBatch.setId(20); + marineLitterBatch.setMarineLitterCategory(marineLitterCategory.getQualitativeValue(1)); + marineLitterBatch.setMarineLitterSizeCategory(marineLitterSizeCategory.getQualitativeValue(1)); + marineLitterBatch.setComment("Comment20"); + marineLitterBatch.setNumber(200); + marineLitterBatch.setWeight(200f); + + return result; + } + + private List<IndividualObservationBatch> createIndividualObservations(List<FishingOperation> operations) { + + List<IndividualObservationBatch> result = Lists.newArrayList(); + + Caracteristic lengthStepCaracteristic = TuttiBeanFactory.newCaracteristic(); + lengthStepCaracteristic.setCaracteristicType(CaracteristicType.NUMBER); + lengthStepCaracteristic.setId(200); + + IndividualObservationBatch batch; + + // 5 caracteristics (lengthStep - size - weight - samplingCode - CalcifiedPieceSamplingCode) + batch = TuttiBeanFactory.newIndividualObservationBatch(); + result.add(batch); + batch.setFishingOperation(operations.get(0)); + batch.setId(1); + batch.setComment("Comment1"); + batch.setLengthStepCaracteristic(lengthStepCaracteristic); + batch.setSize(10f); + batch.setWeight(10f); + batch.setSamplingCode("0"); + batch.setCalcifiedPieceSamplingCode("C1"); + + // 3 caracteristics (lengthStep - size - weight) + batch = TuttiBeanFactory.newIndividualObservationBatch(); + result.add(batch); + batch.setFishingOperation(operations.get(0)); + batch.setId(2); + batch.setComment("Comment2"); + batch.setLengthStepCaracteristic(lengthStepCaracteristic); + batch.setSize(20f); + batch.setWeight(20f); + + // 5 caracteristics (lengthStep - size - weight + 2 others) + batch = TuttiBeanFactory.newIndividualObservationBatch(); + result.add(batch); + batch.setFishingOperation(operations.get(1)); + batch.setId(10); + batch.setComment("Comment10"); + batch.setLengthStepCaracteristic(lengthStepCaracteristic); + batch.setSize(100f); + batch.setWeight(100f); + batch.setCaracteristics(new CaracteristicMap()); + + Caracteristic caracteristic; + + caracteristic = TuttiBeanFactory.newCaracteristic(); + caracteristic.setCaracteristicType(CaracteristicType.NUMBER); + caracteristic.setId(100); + batch.getCaracteristics().put(caracteristic, 100); + + caracteristic = TuttiBeanFactory.newCaracteristic(); + caracteristic.setCaracteristicType(CaracteristicType.TEXT); + caracteristic.setId(101); + batch.getCaracteristics().put(caracteristic, "Text"); + + // 3 caracteristics (weight - samplingCode - calcifiedPieceSamplingCode) + batch = TuttiBeanFactory.newIndividualObservationBatch(); + result.add(batch); + batch.setFishingOperation(operations.get(1)); + batch.setId(20); + batch.setComment("Comment20"); + batch.setWeight(200f); + batch.setSamplingCode("20"); + batch.setCalcifiedPieceSamplingCode("2C1"); + + return result; + } + private void createCaracteristics() { caracteristicVerticalOpening = TuttiBeanFactory.newCaracteristic(); @@ -374,6 +584,52 @@ caracteristicHorizontalOpeningDoor.setMatrixName("CaracteristicHorizontalOpeningDoorMatrixName"); caracteristicHorizontalOpeningDoor.setFractionName("CaracteristicHorizontalOpeningDoorFractionName"); caracteristicHorizontalOpeningDoor.setMethodName("CaracteristicHorizontalOpeningDoorMethodName"); + + marineLitterCategory = TuttiBeanFactory.newCaracteristic(); + marineLitterCategory.setCaracteristicType(CaracteristicType.QUALITATIVE); + marineLitterCategory.setId(13); + marineLitterCategory.setQualitativeValue(Lists.<CaracteristicQualitativeValue>newArrayList()); + CaracteristicQualitativeValue qualitativeValue; + qualitativeValue = TuttiBeanFactory.newCaracteristicQualitativeValue(); + qualitativeValue.setId(1); + qualitativeValue.setName("Plastic"); + marineLitterCategory.addQualitativeValue(qualitativeValue); + qualitativeValue = TuttiBeanFactory.newCaracteristicQualitativeValue(); + qualitativeValue.setId(2); + qualitativeValue.setName("Machine à laver"); + marineLitterCategory.addQualitativeValue(qualitativeValue); + + marineLitterSizeCategory = TuttiBeanFactory.newCaracteristic(); + marineLitterSizeCategory.setCaracteristicType(CaracteristicType.QUALITATIVE); + marineLitterSizeCategory.setId(14); + marineLitterSizeCategory.setQualitativeValue(Lists.<CaracteristicQualitativeValue>newArrayList()); + + qualitativeValue = TuttiBeanFactory.newCaracteristicQualitativeValue(); + qualitativeValue.setId(3); + qualitativeValue.setName("Petit"); + marineLitterSizeCategory.addQualitativeValue(qualitativeValue); + qualitativeValue = TuttiBeanFactory.newCaracteristicQualitativeValue(); + qualitativeValue.setId(4); + qualitativeValue.setName("Gros"); + marineLitterSizeCategory.addQualitativeValue(qualitativeValue); + + sampleIdCaracteristic = TuttiBeanFactory.newCaracteristic(); + sampleIdCaracteristic.setCaracteristicType(CaracteristicType.TEXT); + sampleIdCaracteristic.setId(15); + + otolitheIdCaracteristic = TuttiBeanFactory.newCaracteristic(); + otolitheIdCaracteristic.setCaracteristicType(CaracteristicType.TEXT); + otolitheIdCaracteristic.setId(16); + + weightMeasuredCaracteristic = TuttiBeanFactory.newCaracteristic(); + weightMeasuredCaracteristic.setCaracteristicType(CaracteristicType.NUMBER); + weightMeasuredCaracteristic.setId(17); + + pmfmIdCaracteristic = TuttiBeanFactory.newCaracteristic(); + pmfmIdCaracteristic.setCaracteristicType(CaracteristicType.TEXT); + pmfmIdCaracteristic.setId(18); + + } private List<FishingOperation> createOperations(Cruise cruise) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ExportCruiseValidationMessagesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ExportCruiseValidationMessagesAction.java 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ExportCruiseValidationMessagesAction.java 2013-04-30 14:28:59 UTC (rev 897) @@ -1,5 +1,29 @@ package fr.ifremer.tutti.ui.swing.content.cruise; +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + import fr.ifremer.tutti.TuttiIOUtil; import fr.ifremer.tutti.service.catches.ValidateCruiseOperationsService; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ExportCruiseValidationMessagesAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ExportOperationValidationMessagesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ExportOperationValidationMessagesAction.java 2013-04-30 14:12:06 UTC (rev 896) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ExportOperationValidationMessagesAction.java 2013-04-30 14:28:59 UTC (rev 897) @@ -1,5 +1,29 @@ package fr.ifremer.tutti.ui.swing.content.cruise; +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.catches.ValidateCruiseOperationsService; Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ExportOperationValidationMessagesAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native
participants (1)
-
tchemit@users.forge.codelutin.com