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 0b53b62d7310d307f22021613cf020765ee27845 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 18:30:01 2015 +0200 tri des campagnes et traits --- .../tutti/persistence/TuttiPersistenceImpl.java | 9 +++- .../tutti/persistence/entities/data/Cruises.java | 15 ++++++ .../entities/data/FishingOperations.java | 38 +++++++++++++ .../persistence/entities/referential/Speciess.java | 7 +++ .../genericformat/GenericFormatContextSupport.java | 26 +++++++++ .../genericformat/GenericFormatExportService.java | 62 ---------------------- .../GenericFormatImportCruiseContext.java | 16 ++++++ .../genericformat/GenericFormatImportResult.java | 2 +- .../GenericFormatValidateFileContext.java | 4 +- 9 files changed, 112 insertions(+), 67 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java index 0ebc857..db56413 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java @@ -36,7 +36,9 @@ import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; 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.FishingOperations; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.data.Program; @@ -88,6 +90,7 @@ import javax.annotation.Resource; import java.io.File; import java.io.IOException; import java.sql.SQLException; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -274,7 +277,8 @@ public class TuttiPersistenceImpl implements TuttiPersistence { Program program = getProgram(programId); Set<CruiseDataModel> cruiseModels = new LinkedHashSet<>(); - List<Cruise> cruises = getAllCruise(programId); + List<Cruise> cruises = new ArrayList<>(getAllCruise(programId)); + Cruises.sort(cruises); for (Cruise cruise : cruises) { List<String> fishingOperationIds = loadFishingOperation ? getAllFishingOperationIds(cruise.getId()) : Collections.<String>emptyList(); CruiseDataModel model = loadCruise(cruise, fishingOperationIds); @@ -323,7 +327,8 @@ public class TuttiPersistenceImpl implements TuttiPersistence { Set<OperationDataModel> fishingOperationModels = new LinkedHashSet<>(); - List<FishingOperation> fishingOperations = getAllFishingOperation(cruise.getId()); + List<FishingOperation> fishingOperations = new ArrayList<>(getAllFishingOperation(cruise.getId())); + FishingOperations.sort(fishingOperations); for (FishingOperation fishingOperation : fishingOperations) { if (fishingOperationIds.contains(fishingOperation.getId())) { diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Cruises.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Cruises.java index e2febdc..e10373f 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Cruises.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Cruises.java @@ -26,6 +26,9 @@ import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatu import org.apache.commons.lang3.builder.EqualsBuilder; import java.util.Calendar; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; import java.util.Objects; public class Cruises extends AbstractCruises { @@ -112,4 +115,16 @@ public class Cruises extends AbstractCruises { return naturalId; } + + public static void sort(List<Cruise> cruises) { + Collections.sort(cruises, CRUISE_COMPARATOR); + } + + public static Comparator<Cruise> CRUISE_COMPARATOR = new Comparator<Cruise>() { + @Override + public int compare(Cruise o1, Cruise o2) { + return o1.getName().compareTo(o2.getName()); + } + }; + } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/FishingOperations.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/FishingOperations.java index c57c8f4..2ba5f6d 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/FishingOperations.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/FishingOperations.java @@ -26,6 +26,9 @@ package fr.ifremer.tutti.persistence.entities.data; import org.apache.commons.lang3.builder.EqualsBuilder; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; import java.util.Objects; public class FishingOperations extends AbstractFishingOperations { @@ -71,4 +74,39 @@ public class FishingOperations extends AbstractFishingOperations { } + public static void sort(List<FishingOperation> cruises) { + Collections.sort(cruises, FISHING_OPERATION_COMPARATOR); + } + + public static Comparator<FishingOperation> FISHING_OPERATION_COMPARATOR = new Comparator<FishingOperation>() { + @Override + public int compare(FishingOperation o1, FishingOperation o2) { + + int result = compare(o1.getGearShootingStartDate(), o2.getGearShootingStartDate()); + if (result == 0) { + result = compare(o1.getStationNumber(), o2.getStationNumber()); + } + if (result == 0) { + result = compare(o1.getFishingOperationNumber(), o2.getFishingOperationNumber()); + } + + return result; + } + + private <C extends Comparable<C>> int compare(C o1, C o2) { + int result; + if (Objects.equals(o1, o2)) { + result = 0; + } else if (o1 == null) { + result = -1; + } else if (o2 == null) { + result = 1; + } else { + result = o1.compareTo(o2); + } + + return result; + } + }; + } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java index c31adbb..3786d0a 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java @@ -103,6 +103,13 @@ public class Speciess extends AbstractSpeciess { } }; + public static final Function<Species, Integer> GET_REFERECE_TAXON_ID_AS_INT = new Function<Species, Integer>() { + @Override + public Integer apply(Species input) { + return input.getReferenceTaxonId(); + } + }; + public static final Function<Species, String> GET_REF_TAX_CODE = new Function<Species, String>() { @Override public String apply(Species input) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatContextSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatContextSupport.java index e3fc3f0..8791c98 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatContextSupport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatContextSupport.java @@ -24,10 +24,12 @@ package fr.ifremer.tutti.service.genericformat; * #L% */ +import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Multimap; +import com.google.common.collect.Ordering; import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; @@ -75,6 +77,7 @@ import java.util.Collection; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -499,6 +502,29 @@ public abstract class GenericFormatContextSupport implements Closeable, Iterable } } + public Iterable<GenericFormatImportCruiseContext> orderedCruiseContexts() { + + List<GenericFormatImportCruiseContext> orderedCruiseContexts = Ordering.from(Cruises.CRUISE_COMPARATOR).onResultOf(new Function<GenericFormatImportCruiseContext, Cruise>() { + + @Override + public Cruise apply(GenericFormatImportCruiseContext input) { + return input.getCruise(); + } + }).sortedCopy(cruiseContexts.values()); + return orderedCruiseContexts; + + } + + public void doActionOnSortedCruiseContexts(CruiseContextAction action) { + + for (GenericFormatImportCruiseContext cruiseContext : orderedCruiseContexts()) { + + action.onCruise(cruiseContext, progressionModel); + + } + } + + public boolean isTechnicalFilesValid() { return isArchiveLayoutValid() && sampleCategoryFileResult.isValid() diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java index 518ba90..de35d33 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java @@ -37,8 +37,6 @@ import fr.ifremer.tutti.service.catches.WeightComputingService; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSampleCategory; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.application.ApplicationTechnicalException; @@ -63,8 +61,6 @@ import static org.nuiton.i18n.I18n.t; */ public class GenericFormatExportService extends AbstractTuttiService { - private static final Log log = LogFactory.getLog(GenericFormatExportService.class); - private PersistenceService persistenceService; private WeightComputingService weightComputingService; @@ -87,64 +83,6 @@ public class GenericFormatExportService extends AbstractTuttiService { } - public GenericFormatExportConfiguration createExportConfigurationForProgram(String programId, File exportFile) { - - ProgramDataModel dataToExport = persistenceService.loadProgram(programId, true); - - GenericFormatExportConfiguration configuration = new GenericFormatExportConfiguration(); - configuration.setExportFile(exportFile); - configuration.setExportAttachments(true); - configuration.setExportSpecies(true); - configuration.setExportBenthos(true); - configuration.setExportMarineLitter(true); - configuration.setExportAccidentalCatch(true); - configuration.setExportIndividualObservation(true); - configuration.setDataToExport(dataToExport); - return configuration; - - } - - public GenericFormatExportConfiguration createExportConfigurationForCruise(String programId, String cruiseId, File exportFile) { - - Preconditions.checkNotNull(cruiseId); - Preconditions.checkNotNull(exportFile); - - ProgramDataModel dataToExport = persistenceService.loadCruises(programId, true, cruiseId); - - GenericFormatExportConfiguration configuration = new GenericFormatExportConfiguration(); - configuration.setExportFile(exportFile); - configuration.setExportAttachments(true); - configuration.setExportSpecies(true); - configuration.setExportBenthos(true); - configuration.setExportMarineLitter(true); - configuration.setExportAccidentalCatch(true); - configuration.setExportIndividualObservation(true); - configuration.setDataToExport(dataToExport); - return configuration; - - } - - public GenericFormatExportConfiguration createExportConfigurationForFishingOperation(String programId, String cruiseId, String fishingOperationId, File exportFile) { - - Preconditions.checkNotNull(programId); - Preconditions.checkNotNull(cruiseId); - Preconditions.checkNotNull(fishingOperationId); - - ProgramDataModel dataToExport = persistenceService.loadCruise(programId, cruiseId, fishingOperationId); - - GenericFormatExportConfiguration configuration = new GenericFormatExportConfiguration(); - configuration.setExportFile(exportFile); - configuration.setExportAttachments(true); - configuration.setExportSpecies(true); - configuration.setExportBenthos(true); - configuration.setExportMarineLitter(true); - configuration.setExportAccidentalCatch(true); - configuration.setExportIndividualObservation(true); - configuration.setDataToExport(dataToExport); - return configuration; - - } - public int getExportNbSteps(GenericFormatExportConfiguration configuration) { ProgramDataModel dataToExport = configuration.getDataToExport(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportCruiseContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportCruiseContext.java index ab06f31..dedae0b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportCruiseContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportCruiseContext.java @@ -24,8 +24,10 @@ package fr.ifremer.tutti.service.genericformat; * #L% */ +import com.google.common.base.Function; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; +import com.google.common.collect.Ordering; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; @@ -43,6 +45,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; @@ -91,6 +94,19 @@ public class GenericFormatImportCruiseContext implements Closeable, Iterable<Gen this.skippedFishingOperationsNaturalId = new LinkedHashSet<>(); } + public Iterable<GenericFormatImportOperationContext> orderedFishingOperationContexts() { + + List<GenericFormatImportOperationContext> orderedOperationContexts = Ordering.from(FishingOperations.FISHING_OPERATION_COMPARATOR).onResultOf(new Function<GenericFormatImportOperationContext, FishingOperation>() { + + @Override + public FishingOperation apply(GenericFormatImportOperationContext input) { + return input.getFishingOperation(); + } + }).sortedCopy(fishingOperationContexts.values()); + return orderedOperationContexts; + + } + @Override public void close() { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java index 049c88c..1d03834 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java @@ -59,7 +59,7 @@ public class GenericFormatImportResult extends GenericFormatResultSupport { this.withInvalidWeights = false; - for (GenericFormatImportCruiseContext cruiseContext : importContext) { + for (GenericFormatImportCruiseContext cruiseContext : importContext.orderedCruiseContexts()) { Cruise cruise = cruiseContext.getCruise(); GenericFormatImportCruiseResult cruiseResult = new GenericFormatImportCruiseResult(cruiseContext); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileContext.java index 949f244..6c26fa4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileContext.java @@ -72,7 +72,7 @@ public class GenericFormatValidateFileContext extends GenericFormatContextSuppor final Set<CruiseDataModel> importedCruises = new LinkedHashSet<>(); - doActionOnCruiseContexts(new CruiseContextAction() { + doActionOnSortedCruiseContexts(new CruiseContextAction() { @Override public void onCruise(GenericFormatImportCruiseContext cruiseContext, ProgressionModel progressionModel) { @@ -82,7 +82,7 @@ public class GenericFormatValidateFileContext extends GenericFormatContextSuppor Set<OperationDataModel> operations = new LinkedHashSet<>(); - for (GenericFormatImportOperationContext fishingOperationContext : cruiseContext) { + for (GenericFormatImportOperationContext fishingOperationContext : cruiseContext.orderedFishingOperationContexts()) { FishingOperation fishingOperation = fishingOperationContext.getFishingOperation(); // Add a natural Id as id (used in import to find which cruise to import) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.