branch develop updated (8370139 -> 0aa0a5b)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See http://git.codelutin.com/tutti.git from 8370139 fixes #6891: [TECH] erreur à la réouverture de l'écran d'import Merge branch 'feature/6891' into develop new 68186cd suppression des référentiels temporaires importés pendant la validation de l'import new f707a8c fixes #6894: [IMPORT GENERIQUE] Laisser la base propre après validation des données Merge branch 'feature/6894' into develop new 0b53b62 tri des campagnes et traits new a6faeb2 suppression des methodes de creations de configuration d'export new 3f5d777 fixes #6897: [IMPORT EXPORT GENERIQUE] Utiliser un ordre sur les traits Merge branch 'feature/6897' into develop new 0d540e1 amélioration du rapport de validation new 4170313 fixes #6893: [IMPORT GENERIQUE] Revoir le rapport de validation Merge branch 'feature/6893' into develop new 2952a24 amélioration du rapport d'import new 0aa0a5b fixes #6896: [IMPORT GENERIQUE] Revoir le rapport d'import Merge branch 'feature/6896' into develop The 9 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 0aa0a5b4d645e06f8415319711d9365fef35446d Merge: 4170313 2952a24 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 21:02:21 2015 +0200 fixes #6896: [IMPORT GENERIQUE] Revoir le rapport d'import Merge branch 'feature/6896' into develop commit 2952a24b4029287aaa9f62336b7194668043d91a Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 21:02:15 2015 +0200 amélioration du rapport d'import commit 4170313370f429561261758e41c83cbe4f0b4b4d Merge: 3f5d777 0d540e1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 21:01:36 2015 +0200 fixes #6893: [IMPORT GENERIQUE] Revoir le rapport de validation Merge branch 'feature/6893' into develop commit 0d540e1f97004a7a22c74b4233a7bfb3c5c638f3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 21:00:56 2015 +0200 amélioration du rapport de validation commit 3f5d7775087f4bc749dde96d9dd10452c046b199 Merge: f707a8c a6faeb2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 18:31:06 2015 +0200 fixes #6897: [IMPORT EXPORT GENERIQUE] Utiliser un ordre sur les traits Merge branch 'feature/6897' into develop commit a6faeb2cc1bfef659b5618b7009c82db6593b9e4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 18:30:25 2015 +0200 suppression des methodes de creations de configuration d'export commit 0b53b62d7310d307f22021613cf020765ee27845 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 18:30:01 2015 +0200 tri des campagnes et traits commit f707a8c14695b7621e9cc6adb1e7b0db737ed489 Merge: 8370139 68186cd Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 16:34:54 2015 +0200 fixes #6894: [IMPORT GENERIQUE] Laisser la base propre après validation des données Merge branch 'feature/6894' into develop commit 68186cdae134cf92827fce376fab2d14040c1d5f Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 16:34:38 2015 +0200 suppression des référentiels temporaires importés pendant la validation de l'import Summary of changes: .../tutti/persistence/TuttiPersistenceImpl.java | 9 +- .../tutti/persistence/entities/data/Cruises.java | 15 ++ .../entities/data/FishingOperations.java | 38 +++++ .../entities/data/SpeciesAbleBatchs.java | 11 ++ .../persistence/entities/referential/Speciess.java | 7 + .../tutti/persistence/model/ProgramDataModel.java | 12 +- .../genericformat/GenericFormatContextSupport.java | 26 ++++ .../genericformat/GenericFormatExportService.java | 62 -------- .../GenericFormatImportCruiseContext.java | 16 ++ .../GenericFormatImportCruiseResult.java | 10 +- .../GenericFormatImportOperationContext.java | 19 +++ .../GenericFormatImportOperationResult.java | 42 +----- .../genericformat/GenericFormatImportResult.java | 2 +- .../GenericFormatReferentialImportResult.java | 5 + .../genericformat/GenericFormatResultSupport.java | 5 + .../GenericFormatValidateFileContext.java | 4 +- .../GenericFormatValidateFileResult.java | 7 + .../importactions/RestoreAfterValidateAction.java | 132 ++++++++++++++-- .../service/report/ReportGenerationService.java | 29 +++- .../resources/ftl/genericFormatImportReport_fr.ftl | 167 +++++++++++++-------- .../ftl/genericFormatValidateReport_fr.ftl | 86 ++++++++--- .../GenericFormatExportServiceAno5804Test.java | 14 +- .../GenericFormatExportServiceTest.java | 27 +++- .../GenericFormatImportServiceTest.java | 14 +- .../GenericFormatImportServiceValidTest.java | 13 ++ 25 files changed, 560 insertions(+), 212 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 68186cdae134cf92827fce376fab2d14040c1d5f Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 16:34:38 2015 +0200 suppression des référentiels temporaires importés pendant la validation de l'import --- .../GenericFormatReferentialImportResult.java | 5 + .../importactions/RestoreAfterValidateAction.java | 132 +++++++++++++++++++-- 2 files changed, 126 insertions(+), 11 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java index 016a020..d7f86f2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java @@ -31,6 +31,7 @@ import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.ReferentialImportResult; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; @@ -84,6 +85,10 @@ public class GenericFormatReferentialImportResult<E extends TuttiReferentialEnti return entitiesAdded.entrySet(); } + public Collection<E> getEntitiesAdded() { + return entitiesAdded.values(); + } + public Set<Map.Entry<String, E>> getEntitiesLinkedEntries() { return entitiesLinked.entrySet(); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/RestoreAfterValidateAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/RestoreAfterValidateAction.java index c62d051..32fc547 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/RestoreAfterValidateAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/RestoreAfterValidateAction.java @@ -24,14 +24,26 @@ package fr.ifremer.tutti.service.genericformat.importactions; * #L% */ +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Speciess; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatImportRequest; +import fr.ifremer.tutti.service.genericformat.GenericFormatReferentialImportResult; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.util.HashSet; +import java.util.Set; + /** * Created on 3/25/15. * @@ -58,16 +70,58 @@ public class RestoreAfterValidateAction extends ImportActionSupport { @Override protected void doExecute() { - GenericFormatImportRequest importRequest = importContext.getImportRequest(); - - try { - - rollbackSampleCategoryModel(importRequest); - - } finally { - - rollbackProtocol(importRequest); - + Set<Runnable> actions = new HashSet<>(); + actions.add(new Runnable() { + @Override + public void run() { + rollbackSampleCategoryModel(importContext.getImportRequest()); + } + }); + actions.add(new Runnable() { + @Override + public void run() { + rollbackProtocol(); + } + }); + actions.add(new Runnable() { + @Override + public void run() { + rollbackPreviousProtocol(importContext.getImportRequest()); + } + }); + actions.add(new Runnable() { + @Override + public void run() { + rollbackTemporaryGears(); + } + }); + actions.add(new Runnable() { + @Override + public void run() { + rollbackTemporaryPersons(); + } + }); + actions.add(new Runnable() { + @Override + public void run() { + rollbackTemporarySpecies(); + } + }); + actions.add(new Runnable() { + @Override + public void run() { + rollbackTemporaryVessels(); + } + }); + + for (Runnable action : actions) { + try { + action.run(); + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("Could not execute rollback action", e); + } + } } } @@ -83,7 +137,7 @@ public class RestoreAfterValidateAction extends ImportActionSupport { } - protected void rollbackProtocol(GenericFormatImportRequest importRequest) { + protected void rollbackPreviousProtocol(GenericFormatImportRequest importRequest) { TuttiProtocol previousProtocol = importRequest.getProtocol(); if (previousProtocol != null) { @@ -95,6 +149,10 @@ public class RestoreAfterValidateAction extends ImportActionSupport { } + } + + protected void rollbackProtocol() { + TuttiProtocol importedProtocol = importContext.getImportedProtocol(); if (importedProtocol != null) { @@ -105,6 +163,58 @@ public class RestoreAfterValidateAction extends ImportActionSupport { } + } + + protected void rollbackTemporaryGears() { + + GenericFormatReferentialImportResult<Gear, Integer> fileResult = importContext.getReferentialTemporaryGearFileResult(); + Set<Integer> addedEntriesIds = Sets.newHashSet(Iterables.transform(fileResult.getEntitiesAdded(), TuttiEntities.GET_ID_AS_INT)); + if (!addedEntriesIds.isEmpty()) { + if (log.isInfoEnabled()) { + log.info("Rollback previous imported temporary gears: " + addedEntriesIds); + } + persistenceService.deleteTemporaryGears(addedEntriesIds); + } } + + protected void rollbackTemporaryPersons() { + + GenericFormatReferentialImportResult<Person, Integer> fileResult = importContext.getReferentialTemporaryPersonFileResult(); + Set<Integer> addedEntriesIds = Sets.newHashSet(Iterables.transform(fileResult.getEntitiesAdded(), TuttiEntities.GET_ID_AS_INT)); + if (!addedEntriesIds.isEmpty()) { + if (log.isInfoEnabled()) { + log.info("Rollback previous imported temporary persons: " + addedEntriesIds); + } + persistenceService.deleteTemporaryPersons(addedEntriesIds); + } + + } + + protected void rollbackTemporarySpecies() { + + GenericFormatReferentialImportResult<Species, Integer> fileResult = importContext.getReferentialTemporarySpeciesFileResult(); + Set<Integer> addedEntriesIds = Sets.newHashSet(Iterables.transform(fileResult.getEntitiesAdded(), Speciess.GET_REFERECE_TAXON_ID_AS_INT)); + if (!addedEntriesIds.isEmpty()) { + if (log.isInfoEnabled()) { + log.info("Rollback previous imported temporary species: " + addedEntriesIds); + } + persistenceService.deleteTemporarySpecies(addedEntriesIds); + } + + } + + protected void rollbackTemporaryVessels() { + + GenericFormatReferentialImportResult<Vessel, String> fileResult = importContext.getReferentialTemporaryVesselFileResult(); + Set<String> addedEntriesIds = Sets.newHashSet(Iterables.transform(fileResult.getEntitiesAdded(), TuttiEntities.GET_ID)); + if (!addedEntriesIds.isEmpty()) { + if (log.isInfoEnabled()) { + log.info("Rollback previous imported temporary vessels: " + addedEntriesIds); + } + persistenceService.deleteTemporaryVessels(addedEntriesIds); + } + + } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 f707a8c14695b7621e9cc6adb1e7b0db737ed489 Merge: 8370139 68186cd Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 16:34:54 2015 +0200 fixes #6894: [IMPORT GENERIQUE] Laisser la base propre après validation des données Merge branch 'feature/6894' into develop .../GenericFormatReferentialImportResult.java | 5 + .../importactions/RestoreAfterValidateAction.java | 132 +++++++++++++++++++-- 2 files changed, 126 insertions(+), 11 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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>.
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 a6faeb2cc1bfef659b5618b7009c82db6593b9e4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 18:30:25 2015 +0200 suppression des methodes de creations de configuration d'export --- .../service/report/ReportGenerationService.java | 29 ++++++++++++++++++++-- .../GenericFormatExportServiceAno5804Test.java | 14 ++++++++++- .../GenericFormatExportServiceTest.java | 27 ++++++++++++++++++-- 3 files changed, 65 insertions(+), 5 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportGenerationService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportGenerationService.java index d435bd2..a2de34b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportGenerationService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportGenerationService.java @@ -29,6 +29,7 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.TuttiConfiguration; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.model.ProgramDataModel; import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.genericformat.GenericFormatExportConfiguration; @@ -92,7 +93,7 @@ public class ReportGenerationService extends AbstractTuttiService { // export fishing operation progressionModel.increments(t("tutti.report.step.export.fishingOperation")); GenericFormatExportService service = getService(GenericFormatExportService.class); - GenericFormatExportConfiguration exportConfiguration = service.createExportConfigurationForFishingOperation(request.getProgramId(), request.getCruiseId(), request.getFishingOperationId(), null); + GenericFormatExportConfiguration exportConfiguration = createExportConfigurationForFishingOperation(request.getProgramId(), request.getCruiseId(), request.getFishingOperationId(), null); GenericFormatExportResult exportResult = service.export(exportConfiguration, progressionModel); @@ -112,6 +113,30 @@ public class ReportGenerationService extends AbstractTuttiService { } + protected GenericFormatExportConfiguration createExportConfigurationForFishingOperation(String programId, String cruiseId, String fishingOperationId, File exportFile) { + + Preconditions.checkNotNull(programId); + Preconditions.checkNotNull(cruiseId); + Preconditions.checkNotNull(fishingOperationId); + + PersistenceService persistenceService = getService(PersistenceService.class); + + 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; + + } + + protected File newOutputFile() { return context.getConfig().newTempFile("tutti-report", ".pdf"); } @@ -207,7 +232,7 @@ public class ReportGenerationService extends AbstractTuttiService { int result = 4; GenericFormatExportService service = getService(GenericFormatExportService.class); - GenericFormatExportConfiguration exportConfiguration = service.createExportConfigurationForFishingOperation(request.getProgramId(), request.getCruiseId(), request.getFishingOperationId(), null); + GenericFormatExportConfiguration exportConfiguration = createExportConfigurationForFishingOperation(request.getProgramId(), request.getCruiseId(), request.getFishingOperationId(), null); result += service.getExportNbSteps(exportConfiguration); return result; diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno5804Test.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno5804Test.java index 322bc47..93e3a8e 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno5804Test.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno5804Test.java @@ -26,6 +26,7 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.persistence.model.ProgramDataModel; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.ServiceDbResource; import fr.ifremer.tutti.service.TuttiServiceContext; @@ -101,7 +102,18 @@ public class GenericFormatExportServiceAno5804Test { String programId = dataContext.program.getId(); String cruiseId = dataContext.cruise.getId(); - GenericFormatExportConfiguration exportConfiguration = service.createExportConfigurationForCruise(programId, cruiseId, exportFile); + + ProgramDataModel dataToExport = persistenceService.loadCruises(programId, true, cruiseId); + + GenericFormatExportConfiguration exportConfiguration = new GenericFormatExportConfiguration(); + exportConfiguration.setExportFile(exportFile); + exportConfiguration.setExportAttachments(true); + exportConfiguration.setExportSpecies(true); + exportConfiguration.setExportBenthos(true); + exportConfiguration.setExportMarineLitter(true); + exportConfiguration.setExportAccidentalCatch(true); + exportConfiguration.setExportIndividualObservation(true); + exportConfiguration.setDataToExport(dataToExport); int nbSteps = service.getExportNbSteps(exportConfiguration); progressionModel.setTotal(nbSteps); diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java index ca91118..250e4f9 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceTest.java @@ -24,6 +24,7 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.persistence.model.ProgramDataModel; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.ServiceDbResource; import fr.ifremer.tutti.service.TuttiServiceContext; @@ -233,7 +234,18 @@ public class GenericFormatExportServiceTest { Assert.assertFalse(exportFile.exists()); String programId = dataContext.program.getId(); - GenericFormatExportConfiguration exportConfiguration = service.createExportConfigurationForProgram(programId, exportFile); + + ProgramDataModel dataToExport = persistenceService.loadProgram(programId, true); + + GenericFormatExportConfiguration exportConfiguration = new GenericFormatExportConfiguration(); + exportConfiguration.setExportFile(exportFile); + exportConfiguration.setExportAttachments(true); + exportConfiguration.setExportSpecies(true); + exportConfiguration.setExportBenthos(true); + exportConfiguration.setExportMarineLitter(true); + exportConfiguration.setExportAccidentalCatch(true); + exportConfiguration.setExportIndividualObservation(true); + exportConfiguration.setDataToExport(dataToExport); int nbSteps = service.getExportNbSteps(exportConfiguration); progressionModel.setTotal(nbSteps); @@ -251,7 +263,18 @@ public class GenericFormatExportServiceTest { String programId = dataContext.program.getId(); String cruiseId = dataContext.cruise.getId(); - GenericFormatExportConfiguration exportConfiguration = service.createExportConfigurationForCruise(programId, cruiseId, exportFile); + + ProgramDataModel dataToExport = persistenceService.loadCruises(programId, true, cruiseId); + + GenericFormatExportConfiguration exportConfiguration = new GenericFormatExportConfiguration(); + exportConfiguration.setExportFile(exportFile); + exportConfiguration.setExportAttachments(true); + exportConfiguration.setExportSpecies(true); + exportConfiguration.setExportBenthos(true); + exportConfiguration.setExportMarineLitter(true); + exportConfiguration.setExportAccidentalCatch(true); + exportConfiguration.setExportIndividualObservation(true); + exportConfiguration.setDataToExport(dataToExport); int nbSteps = service.getExportNbSteps(exportConfiguration); progressionModel.setTotal(nbSteps); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 3f5d7775087f4bc749dde96d9dd10452c046b199 Merge: f707a8c a6faeb2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 18:31:06 2015 +0200 fixes #6897: [IMPORT EXPORT GENERIQUE] Utiliser un ordre sur les traits Merge branch 'feature/6897' into develop .../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 +- .../service/report/ReportGenerationService.java | 29 +++++++++- .../GenericFormatExportServiceAno5804Test.java | 14 ++++- .../GenericFormatExportServiceTest.java | 27 +++++++++- 12 files changed, 177 insertions(+), 72 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 0d540e1f97004a7a22c74b4233a7bfb3c5c638f3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 21:00:56 2015 +0200 amélioration du rapport de validation --- .../entities/data/SpeciesAbleBatchs.java | 11 +++ .../tutti/persistence/model/ProgramDataModel.java | 12 ++- .../genericformat/GenericFormatResultSupport.java | 5 ++ .../GenericFormatValidateFileResult.java | 7 ++ .../ftl/genericFormatValidateReport_fr.ftl | 86 +++++++++++++++++----- .../GenericFormatImportServiceValidTest.java | 13 ++++ 6 files changed, 113 insertions(+), 21 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SpeciesAbleBatchs.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SpeciesAbleBatchs.java index 7e9ac01..5277c3d 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SpeciesAbleBatchs.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SpeciesAbleBatchs.java @@ -26,8 +26,11 @@ package fr.ifremer.tutti.persistence.entities.data; import com.google.common.base.Predicate; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import java.util.Collection; import java.util.List; +import java.util.Set; /** * Created on 8/26/14. @@ -95,6 +98,14 @@ public class SpeciesAbleBatchs { } + public static <B extends SpeciesAbleBatch> void grabSpeciesChildBatchs(Collection<B> childs, Set<Species> speciesSet) { + + for (B child : childs) { + speciesSet.add(child.getSpecies()); + } + + } + public static class SpeciesAbleBatchCategoryPredicate implements Predicate<SpeciesAbleBatch> { diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/model/ProgramDataModel.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/model/ProgramDataModel.java index c2b3913..be2ebb6 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/model/ProgramDataModel.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/model/ProgramDataModel.java @@ -43,7 +43,7 @@ public class ProgramDataModel extends DataModelSupport implements Iterable<Cruis private final Set<CruiseDataModel> cruises; public ProgramDataModel(Program program, Set<CruiseDataModel> cruises) { - this(program.getId(), program.getName(),cruises); + this(program.getId(), program.getName(), cruises); } public ProgramDataModel(String id, String label, Set<CruiseDataModel> cruises) { @@ -55,12 +55,20 @@ public class ProgramDataModel extends DataModelSupport implements Iterable<Cruis return cruises.size(); } + public int getNbOperations() { + int result = 0; + for (CruiseDataModel cruise : this) { + result += cruise.size(); + } + return result; + } + @Override public Iterator<CruiseDataModel> iterator() { return cruises.iterator(); } - public CruiseDataModel getCruise(String id) { + public CruiseDataModel getCruise(String id) { CruiseDataModel result = null; for (CruiseDataModel cruise : this) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java index 56087d2..ab85eac 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java @@ -26,6 +26,7 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.collect.ImmutableSet; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; @@ -159,6 +160,10 @@ public abstract class GenericFormatResultSupport implements Serializable { return sampleCategoryFileResult; } + public SampleCategoryModel getSampleCategoryModel() { + return importRequest.getSampleCategoryModel(); + } + public GenericFormatReferentialImportResult<Gear, Integer> getReferentialTemporaryGearFileResult() { return referentialTemporaryGearFileResult; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileResult.java index b8ae551..9ef7e63 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileResult.java @@ -39,4 +39,11 @@ public class GenericFormatValidateFileResult extends GenericFormatResultSupport setDataModel(validateFileContext.toDataModel()); } + public int getNbCruises() { + return getDataModel().size(); + } + + public int getNbOperations() { + return getDataModel().getNbOperations(); + } } diff --git a/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl b/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl index 2c30751..7448808 100644 --- a/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl +++ b/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl @@ -65,7 +65,7 @@ <@renderErrors errorsEntries=errorsEntries/> </#macro> -<#macro renderImportFile fileResult> +<#macro renderImportFile fileResult showNbLines=true> <#assign errorsEntries = fileResult.errorsEntries> <ul> <li>Nom du fichier : <span class="bold">${fileResult.filename}</span></li> @@ -74,7 +74,9 @@ </ul> <#return> </#if> +<#if showNbLines> <li>Nombre de lignes à importer : ${fileResult.linesCount}</li> +</#if> <#if !fileResult.valid> <li class="error">Fichier non valide</li> </#if> @@ -99,8 +101,12 @@ </#if> <li>Nombre de lignes à importer : ${fileResult.linesCount}</li> <#if fileResult.valid> - <li>Nombre de lignes importées : ${fileResult.entitiesAddedEntries?size}</li> - <li>Nombre de lignes associées : ${fileResult.entitiesLinkedEntries?size}</li> + <#if fileResult.entitiesAddedEntries?size != 0 > + <li>Nombre de référentiels ajoutés : ${fileResult.entitiesAddedEntries?size}</li> + </#if> + <#if fileResult.entitiesLinkedEntries?size != 0 > + <li>Nombre de référentiels associés : ${fileResult.entitiesLinkedEntries?size}</li> + </#if> <#else> <li class="error">Fichier non valide</li> </#if> @@ -316,6 +322,14 @@ background: #fff; } + .operationPadding { + padding-left: 25pt; + } + + .small { + font-size: 11px; + } + </style> </head> <body> @@ -328,8 +342,11 @@ <li>Fichier : ${importConfiguration.importFile.name}</li> <li>Date - heure : ${startingDate?date?string.full} ${startingDate?time?string.short}</li> <li>Série de campagne: ${program.name}</li> + <li>Nombre de campagnes détectées: ${nbCruises}</li> + <li>Nombre de traits détectés: ${nbOperations}</li> </ul> +<h3>Fichiers détectés <a name="summary_files"></a></h3> <table align="center"> <thead> <tr> @@ -361,54 +378,84 @@ </table> <h2 class="nextPage"></h2> +<h2>Résumé des données détéctées <a name="summary_data_imported"></a> </h2> +<table> + <thead> + <tr> + <th class="small">Campagne - Trait</th> + </tr> + </thead> + <tbody> + <#list dataModel.iterator() as cruise> + <tr> + <td class="small">${cruise.label} (${cruise.size()} traits)</td> + </tr> + <#list cruise.iterator() as operation> + <tr> + <td class="small operationPadding">Trait ${operation.label}</td> + </tr> + </#list> + </#list> + </tbody> +</table> + +<h2 class="nextPage"></h2> <h2>Modèle de catégorisation <a name="sampleCategoryFileResult"></a></h2> -<@renderImportFile fileResult=sampleCategoryFileResult/> +<@renderImportFile fileResult=sampleCategoryFileResult showNbLines=false/> +<p>Nombre de catégories : ${sampleCategoryModel.nbSampling}</p> +<ul> +<#list sampleCategoryModel.category as category> + <li>Catégorie ${category.code} (identifiant ${category.categoryId})</li> +</#list> +</ul> + + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Référentiel temporaire Engin <a name="referentialTemporaryGearFileResult"></a></h2> <#assign fileResult = referentialTemporaryGearFileResult> <@renderReferentialImportFile fileResult=fileResult/> <#if fileResult.imported && fileResult.valid> -<p>Des engins temporaires ont été importés.</p> <@renderReferentialGearList title="Engins ajoutés" entries=fileResult.entitiesAddedEntries/> <@renderReferentialGearList title="Engins associés" entries=fileResult.entitiesLinkedEntries/> </#if> +<p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage" style="width: 100%"></h2> <h2>Référentiel temporaire Personne <a name="referentialTemporaryPersonFileResult"></a></h2> <#assign fileResult = referentialTemporaryPersonFileResult> <@renderReferentialImportFile fileResult=fileResult/> <#if fileResult.imported && fileResult.valid> -<p>Des personnes temporaires ont été importées.</p> <@renderReferentialPersonList title="Personnes ajoutées" entries=fileResult.entitiesAddedEntries/> <@renderReferentialPersonList title="Personnes associées" entries=fileResult.entitiesLinkedEntries/> </#if> +<p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Référentiel temporaire Taxon <a name="referentialTemporarySpeciesFileResult"></a></h2> <#assign fileResult = referentialTemporarySpeciesFileResult> <@renderReferentialImportFile fileResult=fileResult/> <#if fileResult.imported && fileResult.valid> -<p>Des taxons temporaires ont été importées.</p> <@renderReferentialSpeciesList title="Taxons ajoutés" entries=fileResult.entitiesAddedEntries/> <@renderReferentialSpeciesList title="Taxons associés" entries=fileResult.entitiesLinkedEntries/> </#if> +<p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Référentiel temporaire Navire <a name="referentialTemporaryVesselFileResult"></a></h2> <#assign fileResult = referentialTemporaryVesselFileResult> <@renderReferentialImportFile fileResult=fileResult/> <#if fileResult.imported && fileResult.valid> -<p>Des navires temporaires ont été importés.</p> <@renderReferentialVesselList title="Navires ajoutés" entries=fileResult.entitiesAddedEntries/> <@renderReferentialVesselList title="Navires associés" entries=fileResult.entitiesLinkedEntries/> </#if> +<p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Protocole <a name="protocolFileResult"></a></h2> @@ -419,6 +466,7 @@ <p>Un protocol nommé ${protocol.name} a été importé et sélectionné pour l'import.</p> </#if> + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des campagnes <a name="surveyFileResult"></a></h2> @@ -427,7 +475,7 @@ <#if fileResult.valid> <p>Des campagnes ont été validées.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des mises en oeuvre d'engin <a name="gearCaracteristicFileResult"></a></h2> @@ -436,7 +484,7 @@ <#if fileResult.valid> <p>Des mises en oeuvre d'engin ont été validées.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des traits <a name="operationFileResult"></a></h2> @@ -445,7 +493,7 @@ <#if fileResult.valid> <p>Des traits ont été validés.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des caractéristiques de trait <a name="parameterFileResult"></a></h2> @@ -454,16 +502,16 @@ <#if fileResult.valid> <p>Des caractéristiques de trait ont été validées.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> -<h2>Fichier des lôts capture <a name="catchFileResult"></a></h2> +<h2>Fichier des lots capture <a name="catchFileResult"></a></h2> <#assign fileResult = catchFileResult> <@renderImportFile fileResult=fileResult/> <#if fileResult.valid> -<p>Des lôts capture ont été validées.</p> +<p>Des lots capture ont été validés.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des macro déchets <a name="marineLitterFileResult"></a></h2> @@ -472,7 +520,7 @@ <#if fileResult.valid> <p>Des macro déchets ont été validés.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des captures accidentelles <a name="accidentalCatchFileResult"></a></h2> @@ -481,7 +529,7 @@ <#if fileResult.valid> <p>Des captures accidentelles ont été validées.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des observations individuelles <a name="individualObservationFileResult"></a></h2> @@ -490,7 +538,7 @@ <#if fileResult.valid> <p>Des observations individuelles ont été validées.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des pièces jointes<a name="attachmentsFileResult"></a></h2> <#assign fileResult = attachmentsFileResult> @@ -498,6 +546,6 @@ <#if fileResult.valid> <p>Des pièces-jointes ont été validées.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> </body> </html> diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java index 50eb7d0..12a8ff2 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java @@ -73,6 +73,19 @@ public class GenericFormatImportServiceValidTest extends GenericFormatImportServ } @Test + public void testValidate() throws IOException { + + dbResource.setDestroyResources(false); + + doValidate("testImport", PROGRAM_ID, "referentials", "sampleCategory", "protocol", "default"); + + if (log.isInfoEnabled()) { + log.info("Report files:" + builder.toString()); + } + + } + + @Test public void testArchiveLayoutNotValid() throws IOException { GenericFormatValidateFileResult result = doValidate("ArchiveLayoutNotValid", PROGRAM_ID); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 4170313370f429561261758e41c83cbe4f0b4b4d Merge: 3f5d777 0d540e1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 21:01:36 2015 +0200 fixes #6893: [IMPORT GENERIQUE] Revoir le rapport de validation Merge branch 'feature/6893' into develop .../entities/data/SpeciesAbleBatchs.java | 11 +++ .../tutti/persistence/model/ProgramDataModel.java | 12 ++- .../genericformat/GenericFormatResultSupport.java | 5 ++ .../GenericFormatValidateFileResult.java | 7 ++ .../ftl/genericFormatValidateReport_fr.ftl | 86 +++++++++++++++++----- .../GenericFormatImportServiceValidTest.java | 13 ++++ 6 files changed, 113 insertions(+), 21 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 2952a24b4029287aaa9f62336b7194668043d91a Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 21:02:15 2015 +0200 amélioration du rapport d'import --- .../GenericFormatImportCruiseResult.java | 10 +- .../GenericFormatImportOperationContext.java | 19 +++ .../GenericFormatImportOperationResult.java | 42 +----- .../resources/ftl/genericFormatImportReport_fr.ftl | 167 +++++++++++++-------- .../GenericFormatImportServiceTest.java | 14 +- 5 files changed, 144 insertions(+), 108 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportCruiseResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportCruiseResult.java index c1dd7dd..cd4c490 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportCruiseResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportCruiseResult.java @@ -28,8 +28,8 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import java.io.Serializable; -import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.Map; /** @@ -60,11 +60,11 @@ public class GenericFormatImportCruiseResult implements Serializable, Iterable<G label = cruiseContext.getCruiseLabel(); this.cruise = cruiseContext.getCruise(); this.override = cruiseContext.getExistingCruiseData() != null; - this.fishingOperationResults = new HashMap<>(); + this.fishingOperationResults = new LinkedHashMap<>(); this.withInvalidWeights = false; - for (GenericFormatImportOperationContext operationContext : cruiseContext) { + for (GenericFormatImportOperationContext operationContext : cruiseContext.orderedFishingOperationContexts()) { GenericFormatImportOperationResult operationResult = new GenericFormatImportOperationResult(operationContext); fishingOperationResults.put(operationContext.getFishingOperation().getId(), operationResult); @@ -98,6 +98,10 @@ public class GenericFormatImportCruiseResult implements Serializable, Iterable<G return nbOperationsUpdated; } + public int getNbOperations() { + return nbOperationsCreated + nbOperationsUpdated; + } + public boolean isWithInvalidWeights() { return withInvalidWeights; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java index f6ef162..9f2223e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java @@ -35,9 +35,11 @@ import fr.ifremer.tutti.persistence.entities.data.CatchBatch; 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.SpeciesAbleBatchs; 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.Species; import fr.ifremer.tutti.persistence.model.OperationDataModel; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -46,6 +48,7 @@ import java.io.Closeable; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -244,6 +247,22 @@ public class GenericFormatImportOperationContext implements Closeable { return ImmutableList.copyOf(individualObservationBatchesById.values()); } + public int getNbSpeciesTaxon() { + Set<Species> speciesSet= new HashSet<>(); + SpeciesAbleBatchs.grabSpeciesChildBatchs(vracSpeciesBatches.values(), speciesSet); + SpeciesAbleBatchs.grabSpeciesChildBatchs(horsVracSpeciesBatches.values(), speciesSet); + int result = speciesSet.size(); + return result; + } + + public int getNbBenthosTaxon() { + Set<Species> speciesSet= new HashSet<>(); + SpeciesAbleBatchs.grabSpeciesChildBatchs(vracBenthosBatches.values(), speciesSet); + SpeciesAbleBatchs.grabSpeciesChildBatchs(horsVracBenthosBatches.values(), speciesSet); + int result = speciesSet.size(); + return result; + } + public Collection<SpeciesBatch> getSpeciesBatches(boolean vrac) { return ImmutableList.copyOf(getSpeciesBatchMap(vrac).values()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationResult.java index a3535ed..034c8c6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationResult.java @@ -62,13 +62,9 @@ public class GenericFormatImportOperationResult implements Serializable { private int nbIndividualObservations; - private int nbSpeciesBatchesVrac; + private int nbSpeciesTaxon; - private int nbSpeciesBatchesHorsVrac; - - private int nbBenthosBatchesVrac; - - private int nbBenthosBatchesHorsVrac; + private int nbBenthosTaxon; private final boolean override; @@ -125,14 +121,6 @@ public class GenericFormatImportOperationResult implements Serializable { return catchBatch.getBenthosTotalSortedWeight(); } - public int getNbSpeciesTaxon() { - return nbSpeciesBatchesVrac + nbSpeciesBatchesHorsVrac; - } - - public int getNbBenthosTaxon() { - return nbBenthosBatchesVrac + nbBenthosBatchesHorsVrac; - } - public boolean isWithAccidentalCatches() { return nbAccidentalCatches > 0; } @@ -169,20 +157,12 @@ public class GenericFormatImportOperationResult implements Serializable { return nbIndividualObservations; } - public int getNbSpeciesBatchesVrac() { - return nbSpeciesBatchesVrac; - } - - public int getNbSpeciesBatchesHorsVrac() { - return nbSpeciesBatchesHorsVrac; - } - - public int getNbBenthosBatchesVrac() { - return nbBenthosBatchesVrac; + public int getNbSpeciesTaxon() { + return nbSpeciesTaxon; } - public int getNbBenthosBatchesHorsVrac() { - return nbBenthosBatchesHorsVrac; + public int getNbBenthosTaxon() { + return nbBenthosTaxon; } protected void flushContext(GenericFormatImportOperationContext operationContext) { @@ -205,16 +185,10 @@ public class GenericFormatImportOperationResult implements Serializable { } if (operationContext.withSpeciesBatches(true)) { - nbSpeciesBatchesVrac = operationContext.getSpeciesBatches(true).size(); - } - if (operationContext.withSpeciesBatches(false)) { - nbSpeciesBatchesHorsVrac = operationContext.getSpeciesBatches(false).size(); + nbSpeciesTaxon = operationContext.getNbSpeciesTaxon(); } if (operationContext.withBenthosBatches(true)) { - nbBenthosBatchesVrac = operationContext.getBenthosBatches(true).size(); - } - if (operationContext.withBenthosBatches(false)) { - nbBenthosBatchesHorsVrac = operationContext.getBenthosBatches(false).size(); + nbBenthosTaxon = operationContext.getNbBenthosTaxon(); } } diff --git a/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl b/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl index a794e4b..ede139b 100644 --- a/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl +++ b/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl @@ -99,8 +99,12 @@ </#if> <li>Nombre de lignes à importer : ${fileResult.linesCount}</li> <#if fileResult.valid> - <li>Nombre de lignes importées : ${fileResult.entitiesAddedEntries?size}</li> - <li>Nombre de lignes associées : ${fileResult.entitiesLinkedEntries?size}</li> + <#if fileResult.entitiesAddedEntries?size != 0 > + <li>Nombre de référentiels ajoutés : ${fileResult.entitiesAddedEntries?size}</li> + </#if> + <#if fileResult.entitiesLinkedEntries?size != 0 > + <li>Nombre de référentiels associés : ${fileResult.entitiesLinkedEntries?size}</li> + </#if> <#else> <li class="error">Fichier non valide</li> </#if> @@ -341,24 +345,36 @@ <li>Nombre de campagnes créées: ${nbCruisesCreated}</li> <li>Nombre de campagnes mises à jour: ${nbCruisesUpdated}</li> <li>Nombre de traits créés: ${nbOperationsCreated}</li> - <li>Nombre de campagnes mises à jour: ${nbOperationsUpdated}</li> + <li>Nombre de traits mis à jour: ${nbOperationsUpdated}</li> </ul> +<#assign overrideData = importConfiguration.overrideData> +<#assign overrideProtocol = importConfiguration.overrideProtocol> +<#assign updateCruises = importConfiguration.updateCruises> +<#assign updateOperations = importConfiguration.updateOperations> +<#assign importSpecies = importConfiguration.importSpecies> +<#assign importBenthos = importConfiguration.importBenthos> +<#assign importMarineLitter = importConfiguration.importMarineLitter> +<#assign importAccidentalCatch = importConfiguration.importAccidentalCatch> +<#assign importIndividualObservation = importConfiguration.importIndividualObservation> +<#assign importAttachments = importConfiguration.importAttachments> +<#assign cleanWeights = importConfiguration.cleanWeights> +<#assign checkWeights = importConfiguration.checkWeights> <h2>Configuration de l'import</h2> <ul> -<#if importConfiguration.overrideData><li>Écraser des données existantes</li></#if> -<#if importConfiguration.overrideProtocol><li>Remplacer le protocole existant</li></#if> -<#if importConfiguration.updateCruises><li>Mettre à jour les caractéristiques des campagnes existantes</li></#if> -<#if importConfiguration.updateOperations><li>Mettre à jour les caractéristiques des traits existants</li></#if> -<#if importConfiguration.importSpecies><li>Importer les lôts espèces</li></#if> -<#if importConfiguration.importBenthos><li>Importer les lôts benthos</li></#if> -<#if importConfiguration.importMarineLitter><li>Importer les lôts macro-déchets</li></#if> -<#if importConfiguration.importAccidentalCatch><li>Importer les captures accidentelles</li></#if> -<#if importConfiguration.importIndividualObservation><li>Importer les observations individuelles</li></#if> -<#if importConfiguration.importAttachments><li>Importer les pièces-jointes</li></#if> -<#if importConfiguration.cleanWeights><li>Supprimer les poids en doubles</li></#if> -<#if importConfiguration.checkWeights><li>Valider les poids de la captures (élévation des poids)</li></#if> +<#if overrideData><li>Écraser des données existantes</li></#if> +<#if overrideProtocol><li>Remplacer le protocole existant</li></#if> +<#if updateCruises><li>Mettre à jour les caractéristiques des campagnes existantes</li></#if> +<#if updateOperations><li>Mettre à jour les caractéristiques des traits existants</li></#if> +<#if importSpecies><li>Importer les lots espèces</li></#if> +<#if importBenthos><li>Importer les lots benthos</li></#if> +<#if importMarineLitter><li>Importer les lots macro-déchets</li></#if> +<#if importAccidentalCatch><li>Importer les captures accidentelles</li></#if> +<#if importIndividualObservation><li>Importer les observations individuelles</li></#if> +<#if importAttachments><li>Importer les pièces-jointes</li></#if> +<#if cleanWeights><li>Supprimer les poids en doubles</li></#if> +<#if checkWeights><li>Valider les poids de la captures (élévation des poids)</li></#if> </ul> <h2>Protocol</h2> @@ -369,11 +385,19 @@ <p>Pas de protocol utilisé.</p> </#if> +<h2>Modèle de catégorisation</h2> + +<p>Nombre de catégories : ${sampleCategoryModel.nbSampling}</p> +<ul> +<#list sampleCategoryModel.category as category> + <li>Catégorie ${category.code} (identifiant ${category.categoryId})</li> +</#list> +</ul> <h2 class="nextPage"></h2> <h2>Fichiers importés</h2> -<h3>Référentiels temporaires importés</h3> +<h3>Référentiels temporaires importés <a name="summary_referentials"></a></h3> <table> <thead> <tr> @@ -409,19 +433,19 @@ <@renderImportFileResult fileResult=gearCaracteristicFileResult anchorName="gearCaracteristicFileResult" showDetail=false/> <@renderImportFileResult fileResult=operationFileResult anchorName="operationFileResult" showDetail=false/> <@renderImportFileResult fileResult=parameterFileResult anchorName="parameterFileResult" showDetail=false/> -<#if importConfiguration.importSpecies || importConfiguration.importBenthos> +<#if importSpecies || importBenthos> <@renderImportFileResult fileResult=catchFileResult anchorName="catchFileResult" showDetail=false/> </#if> -<#if importConfiguration.importMarineLitter> +<#if importMarineLitter> <@renderImportFileResult fileResult=marineLitterFileResult anchorName="marineLitterFileResult" showDetail=false/> </#if> -<#if importConfiguration.importAccidentalCatch> +<#if importAccidentalCatch> <@renderImportFileResult fileResult=accidentalCatchFileResult anchorName="accidentalCatchFileResult" showDetail=false/> </#if> -<#if importConfiguration.importIndividualObservation> +<#if importIndividualObservation> <@renderImportFileResult fileResult=individualObservationFileResult anchorName="individualObservationFileResult" showDetail=false/> </#if> -<#if importConfiguration.importAttachments> +<#if importAttachments> <@renderImportFileResult fileResult=attachmentsFileResult anchorName="attachmentsFileResult" showDetail=false/> </#if> </tbody> @@ -433,29 +457,29 @@ <table> <thead> <tr> - <th>Campagne - Trait</th> - <th>Déja dans la base?</th> - <#if importConfiguration.cleanWeights><th>Poids en double ?</th></#if> - <#if importConfiguration.checkWeights><th>Poids valides ?</th></#if> + <th class="small">Campagne - Trait</th> + <th class="small">Déja présent dans la base ?</th> + <#if cleanWeights><th class="small">Poids en double ?</th></#if> + <#if checkWeights><th class="small">Poids valides ?</th></#if> </tr> </thead> <tbody> <#list cruiseResults as cruiseResult> <tr> - <td><a href="#cruise_${cruiseResult.id}">${cruiseResult.label}</a></td> - <td>${cruiseResult.override?string('Oui','Non')}</td> - <td></td> - <td></td> + <td class="small"><a href="#cruise_${cruiseResult.id}">${cruiseResult.label}</a> (${cruiseResult.nbOperations} traits importés)</td> + <td class="small">${cruiseResult.override?string('Oui','Non')}</td> + <#if cleanWeights><td></td></#if> + <#if checkWeights><td></td></#if> </tr> <#list cruiseResult.iterator() as operationResult> <tr> - <td class="operationPadding">Trait ${operationResult.label}</td> - <td>${operationResult.override?string('Oui','Non')}</td> - <#if importConfiguration.cleanWeights> - <td>${operationResult.weightsDeleted?string('Oui','Non')}</td> + <td class="small operationPadding">Trait ${operationResult.label}</td> + <td class="small">${operationResult.override?string('Oui','Non')}</td> + <#if cleanWeights> + <td class="small">${operationResult.weightsDeleted?string('Oui','Non')}</td> </#if> - <#if importConfiguration.checkWeights> - <td class="${operationResult.withInvalidWeights?string('notValid','valid')}"></td> + <#if checkWeights> + <td class="small ${operationResult.withInvalidWeights?string('notValid','valid')}"></td> </#if> </tr> </#list> @@ -481,22 +505,22 @@ </li> </ul> - <h3>Trais importés</h3> + <h3>Volumétrie importée par traits</h3> <table align="center"> <thead> <tr> <th class="small">Trait</th> - <th class="small">Valide</th> - <th class="small">Capture (1)</th> - <th class="small">Vrac non trié (2)</th> - <th class="small">Vrac Espèce (3)</th> - <th class="small">Vrac Benthos (4)</th> - <th class="small">Espèces (5)</th> - <th class="small">Benthos (6)</th> - <th class="small">Observations (6)</th> - <th class="small">Captures accidentelles</th> - <th class="small">Macro-déchets</th> + <th class="small">Status (1)</th> + <th class="small">Capture (2)</th> + <th class="small">Vrac non trié (3)</th> + <th class="small">Vrac Espèce (4)</th> + <th class="small">Vrac Benthos (5)</th> + <th class="small">Espèces (6)</th> + <th class="small">Benthos (7)</th> + <th class="small">Observations (8)</th> + <th class="small">Captures accidentelles (9)</th> + <th class="small">Macro-déchets (10)</th> </tr> </thead> <tbody> @@ -504,35 +528,46 @@ <tr> <td class="small">${operationResult.label} <a name="operation_${cruiseResult.id}_${operationResult.id}"></a></td> <#if operationResult.valid><td class="valid"></td><#else><td class="notValid"></td></#if> - <td class="small">${operationResult.catchTotalWeight!'NA'}</td> - <td class="small">${operationResult.catchTotalRejectedWeight!'NA'}</td> - <td class="small">${operationResult.speciesTotalSortedWeight!'NA'}</td> - <td class="small">${operationResult.benthosTotalSortedWeight!'NA'}</td> - <td class="small">${operationResult.nbSpeciesTaxon}</td> - <td class="small">${operationResult.nbBenthosTaxon}</td> - <td class="small">${operationResult.nbIndividualObservations}</td> - <td class="small">${operationResult.withAccidentalCatches?string('Oui', 'Non')}</td> - <td class="small">${operationResult.withMarineLitter?string('Oui', 'Non')}</td> + <td class="small"><#if updateOperations> ${operationResult.catchTotalWeight!'NA'}<#else> - </#if></td> + <td class="small"><#if updateOperations> ${operationResult.catchTotalRejectedWeight!'NA'}<#else> - </#if></td> + <td class="small"><#if importSpecies> ${operationResult.speciesTotalSortedWeight!'NA'}<#else> - </#if></td> + <td class="small"><#if importBenthos> ${operationResult.benthosTotalSortedWeight!'NA'}<#else> - </#if></td> + <td class="small"><#if importSpecies> ${operationResult.nbSpeciesTaxon}<#else> - </#if></td> + <td class="small"><#if importBenthos> ${operationResult.nbBenthosTaxon}<#else> - </#if></td> + <td class="small"><#if importIndividualObservation> ${operationResult.nbIndividualObservations}<#else> - </#if></td> + <td class="small"><#if importAccidentalCatch> ${operationResult.withAccidentalCatches?string('Oui', 'Non')}<#else> - </#if></td> + <td class="small"><#if importMarineLitter> ${operationResult.withMarineLitter?string('Oui', 'Non')}<#else> - </#if></td> </tr> </#list> </tbody> </table> <ul class="small"> - <li>(1) Capture totale (kg)</li> - <li>(2) Vrac non trié (kg)</li> - <li>(2) Vrac Espèces isolée (kg)</li> - <li>(3) Vrac Betnhos isolé (kg)</li> - <li>(4) Nombre de taxon Espèces</li> - <li>(5) Nombre de taxon Benthos</li> - <li>(6) Nombre d'observations individuelles</li> + <li>(1) Status du trait (i)</li> + <li>(2) Capture totale (kg) (i)</li> + <li>(3) Vrac non trié (kg) (i)</li> + <li>(4) Vrac Espèces isolée (kg) (ii)</li> + <li>(5) Vrac Betnhos isolé (kg) (iii)</li> + <li>(6) Nombre de taxon Espèces (ii)</li> + <li>(7) Nombre de taxon Benthos (iii)</li> + <li>(8) Nombre d'observations individuelles (iv)</li> + <li>(9) Captures accidentelles ? (v)</li> + <li>(10) Macro déchets importés ? (vi)</li> </ul> +<ul class="small"> + <li>(i) uniquement renseigné pour les traits créés ou si la mise à jour des traits est activée</li> + <li>(ii) uniquement renseigné si l'import des lot espèces est activé</li> + <li>(iii) uniquement renseigné si l'import des lot benthos est activé</li> + <li>(iv) uniquement renseigné si l'import des observations individuelles est activé</li> + <li>(vi) uniquement renseigné si l'import des captures accidentelles est activé</li> + <li>(v) uniquement renseigné si l'import des macro déchets est activé</li> +</ul> <p><a href="#summary_data_imported">Remonter au résumé des données importées</a></p> </#list> -<#if importConfiguration.checkWeights> +<#if checkWeights> <h2 class="nextPage"></h2> <h2>Poids non valides (Élévation des poids)</h2> @@ -581,6 +616,8 @@ <@renderReferentialGearList title="Engins associés" entries=fileResult.entitiesLinkedEntries/> </#if> +<p><a href="#summary_referentials">Remonter au résumé des référentiels importés</a></p> + <h2 class="nextPage" style="width: 100%"></h2> <h2>Référentiel temporaire Personne <a name="referentialTemporaryPersonFileResult"></a></h2> @@ -591,6 +628,7 @@ <@renderReferentialPersonList title="Personnes associées" entries=fileResult.entitiesLinkedEntries/> </#if> + <p><a href="#summary_referentials">Remonter au résumé des référentiels importés</a></p> <h2 class="nextPage"></h2> <h2>Référentiel temporaire Taxon <a name="referentialTemporarySpeciesFileResult"></a></h2> @@ -601,6 +639,7 @@ <@renderReferentialSpeciesList title="Taxons associés" entries=fileResult.entitiesLinkedEntries/> </#if> + <p><a href="#summary_referentials">Remonter au résumé des référentiels importés</a></p> <h2 class="nextPage"></h2> <h2>Référentiel temporaire Navire <a name="referentialTemporaryVesselFileResult"></a></h2> @@ -610,6 +649,6 @@ <@renderReferentialVesselList title="Navires ajoutés" entries=fileResult.entitiesAddedEntries/> <@renderReferentialVesselList title="Navires associés" entries=fileResult.entitiesLinkedEntries/> </#if> - + <p><a href="#summary_referentials">Remonter au résumé des référentiels importés</a></p> </body> </html> diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java index 45f1281..ebac410 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java @@ -151,7 +151,7 @@ public class GenericFormatImportServiceTest extends GenericFormatImportServiceTe { - doImport(builder, "testImportNoOverride", true, PROGRAM_ID, "referentials", "sampleCategory", "protocol", "empty", "onlyCruise"); + doImport(builder, "testImportNoOverride", true, "referentials", "sampleCategory", "protocol", "empty", "onlyCruise"); assertCruiseInserted(); @@ -204,13 +204,13 @@ public class GenericFormatImportServiceTest extends GenericFormatImportServiceTe } } - protected GenericFormatImportResult doImport(StringBuilder builder, String archivName, String programId, String... directoryies) throws IOException { + protected GenericFormatImportResult doImport(StringBuilder builder, String archivName, String... directoryies) throws IOException { - return doImport(builder, archivName, false, programId, directoryies); + return doImport(builder, archivName, false, directoryies); } - protected GenericFormatImportResult doImport(StringBuilder builder, String archivName, boolean overrideData, String programId, String... directoryies) throws IOException { + protected GenericFormatImportResult doImport(StringBuilder builder, String archivName, boolean overrideData, String... directoryies) throws IOException { File archiveFile = createArchive(archivName + ".zip", directoryies); @@ -230,12 +230,12 @@ public class GenericFormatImportServiceTest extends GenericFormatImportServiceTe { Set<OperationDataModel> operations = new LinkedHashSet<>(); - operations.add(new OperationDataModel("2014--1--CAM-EVHOE--S0820--1--1","S0820 - 1 - 19/10/2014")); - operations.add(new OperationDataModel("2014--1--CAM-EVHOE--S0981--156--1","S0820 - 156 - 30/11/2014")); + operations.add(new OperationDataModel("2014--1--CAM-EVHOE--S0820--1--1", "S0820 - 1 - 19/10/2014")); + operations.add(new OperationDataModel("2014--1--CAM-EVHOE--S0981--156--1", "S0820 - 156 - 30/11/2014")); cruises.add(new CruiseDataModel("2014--1--CAM-EVHOE", "Campagne EVOHE 2014", operations)); } - ProgramDataModel dataModel = new ProgramDataModel("CAM-EVHOE","Campagne EVOHE",cruises); + ProgramDataModel dataModel = new ProgramDataModel("CAM-EVHOE", "Campagne EVOHE", cruises); importConfiguration.setDataToExport(dataModel); File reportFile = getServiceDbResource().getConfig().newTempFile(archivName, ".pdf"); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 0aa0a5b4d645e06f8415319711d9365fef35446d Merge: 4170313 2952a24 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 21:02:21 2015 +0200 fixes #6896: [IMPORT GENERIQUE] Revoir le rapport d'import Merge branch 'feature/6896' into develop .../GenericFormatImportCruiseResult.java | 10 +- .../GenericFormatImportOperationContext.java | 19 +++ .../GenericFormatImportOperationResult.java | 42 +----- .../resources/ftl/genericFormatImportReport_fr.ftl | 167 +++++++++++++-------- .../GenericFormatImportServiceTest.java | 14 +- 5 files changed, 144 insertions(+), 108 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm