branch feature/6688 updated (fe19de0 -> bd6f2ef)
This is an automated email from the git hooks/post-receive script. New change to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git from fe19de0 test involution when importing temporary referentials new 5ce290a add getAllCruiseId to only grab ids of cruise new bd6f2ef can override cruise + test for it The 2 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 bd6f2ef378cf73be37e3481e7a96fe351372d1a7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 23 20:37:03 2015 +0100 can override cruise + test for it commit 5ce290af9101e17926d273102882396883b89cf8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 23 20:36:31 2015 +0100 add getAllCruiseId to only grab ids of cruise Summary of changes: .../tutti/persistence/TuttiPersistenceImpl.java | 6 ++ .../persistence/TuttiPersistenceNoDbImpl.java | 6 ++ .../service/CruisePersistenceService.java | 2 + .../service/CruisePersistenceServiceImpl.java | 40 ++++++-- .../src/main/resources/queries-failsafe.hbm.xml | 15 +++ .../ifremer/tutti/service/PersistenceService.java | 5 + .../genericformat/GenericFormatImportContext.java | 15 +-- .../GenericFormatImportCruiseContext.java | 9 +- .../GenericFormatImportCruiseResult.java | 7 ++ .../genericformat/GenericFormatImportService.java | 10 +- .../GenericformatImportPersitenceHelper.java | 43 +++++++- .../consumer/CsvConsumerForSurvey.java | 9 +- .../resources/i18n/tutti-service_fr_FR.properties | 1 + .../GenericFormatImportServiceTest.java | 110 +++++++++++++++++++++ .../{default => onlyCruise}/gearCaracteristics.csv | 0 .../{default => onlyCruise}/survey.csv | 2 +- 16 files changed, 256 insertions(+), 24 deletions(-) copy tutti-service/src/test/resources/genericFormat/{default => onlyCruise}/gearCaracteristics.csv (100%) copy tutti-service/src/test/resources/genericFormat/{default => onlyCruise}/survey.csv (94%) -- 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 feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 5ce290af9101e17926d273102882396883b89cf8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 23 20:36:31 2015 +0100 add getAllCruiseId to only grab ids of cruise --- .../tutti/persistence/TuttiPersistenceImpl.java | 6 ++++ .../persistence/TuttiPersistenceNoDbImpl.java | 6 ++++ .../service/CruisePersistenceService.java | 2 ++ .../service/CruisePersistenceServiceImpl.java | 40 ++++++++++++++++++---- .../src/main/resources/queries-failsafe.hbm.xml | 15 ++++++++ .../ifremer/tutti/service/PersistenceService.java | 5 +++ 6 files changed, 67 insertions(+), 7 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 d440f2f..292c608 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 @@ -777,6 +777,12 @@ public class TuttiPersistenceImpl implements TuttiPersistence { //-- Cruise methods --// //------------------------------------------------------------------------// + + @Override + public List<String> getAllCruiseId(String programId) { + return getCruiseService().getAllCruiseId(programId); + } + @Override public List<Cruise> getAllCruise(String programId) { return getCruiseService().getAllCruise(programId); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java index 7ab5eeb..24bcc12 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java @@ -414,6 +414,12 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { //-- Cruise methods --// //------------------------------------------------------------------------// + + @Override + public List<String> getAllCruiseId(String programId) { + throw notImplemented(); + } + @Override public List<Cruise> getAllCruise(String programId) { throw notImplemented(); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceService.java index 15c5ada..eb6a31a 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceService.java @@ -40,6 +40,8 @@ import java.util.List; @Transactional(readOnly = true) public interface CruisePersistenceService extends TuttiPersistenceServiceImplementor { + List<String> getAllCruiseId(String programId); + List<Cruise> getAllCruise(String programId); Cruise getCruise(String id); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java index 2d0d525..58e2381 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java @@ -177,7 +177,28 @@ public class CruisePersistenceServiceImpl extends AbstractPersistenceService imp protected SynchronizationStatusHelper synchronizationStatusHelper; @Override + public List<String> getAllCruiseId(String programId) { + + Preconditions.checkNotNull(programId); + + Iterator list = queryList( + "allCruiseIds", + "programCode", StringType.INSTANCE, programId); + + List<String> result = Lists.newArrayList(); + while (list.hasNext()) { + Integer id = (Integer) list.next(); + result.add(id.toString()); + } + return Collections.unmodifiableList(result); + + } + + @Override public List<Cruise> getAllCruise(String programId) { + + Preconditions.checkNotNull(programId); + Iterator<Object[]> list = queryList( "allCruises", "programCode", StringType.INSTANCE, programId); @@ -193,20 +214,24 @@ public class CruisePersistenceServiceImpl extends AbstractPersistenceService imp result.add(target); } return Collections.unmodifiableList(result); + } @Override - public Cruise getCruise(String id) { + public Cruise getCruise(String cruiseId) { + + Preconditions.checkNotNull(cruiseId); + Object[] source = queryUnique( "cruise", - "cruiseId", IntegerType.INSTANCE, Integer.valueOf(id), + "cruiseId", IntegerType.INSTANCE, Integer.valueOf(cruiseId), "pmfmIdSurveyPart", IntegerType.INSTANCE, PmfmId.SURVEY_PART.getValue()); if (source == null) { - throw new DataRetrievalFailureException("Could not retrieve cruise with id=" + id); + throw new DataRetrievalFailureException("Could not retrieve cruise with id=" + cruiseId); } Cruise result = Cruises.newCruise(); - result.setId(id); + result.setId(cruiseId); int index = 0; @@ -261,7 +286,7 @@ public class CruisePersistenceServiceImpl extends AbstractPersistenceService imp // get cruise gears Iterator<Object[]> list = queryList( "allCruiseGears", - "cruiseId", IntegerType.INSTANCE, Integer.valueOf(id), + "cruiseId", IntegerType.INSTANCE, Integer.valueOf(cruiseId), "pmfmIdTrawlNet", IntegerType.INSTANCE, PmfmId.MULTIRIG_NUMBER.getValue()); List<GearWithOriginalRankOrder> gears = Lists.newArrayList(); @@ -284,7 +309,7 @@ public class CruisePersistenceServiceImpl extends AbstractPersistenceService imp Iterator<Object[]> vesselPersonFeaturesList = queryList( "allCruiseVesselPersonFeatures", - "cruiseId", IntegerType.INSTANCE, Integer.valueOf(id)); + "cruiseId", IntegerType.INSTANCE, Integer.valueOf(cruiseId)); while (vesselPersonFeaturesList.hasNext()) { Object[] vesselPersonFeatures = vesselPersonFeaturesList.next(); @@ -301,10 +326,11 @@ public class CruisePersistenceServiceImpl extends AbstractPersistenceService imp // Force initialization of multirigNumber to 1 initialization (need for UI) if (result.getMultirigNumber() == null) { - log.warn(MessageFormat.format("Cruise with id={0} has been load with a default multirigNumber=1, beacause not multirigNumber were found in database.", id)); + log.warn(MessageFormat.format("Cruise with id={0} has been load with a default multirigNumber=1, beacause not multirigNumber were found in database.", cruiseId)); result.setMultirigNumber(1); } return result; + } @Override diff --git a/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml b/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml index 0367f32..fe0e2f3 100644 --- a/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml +++ b/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml @@ -58,6 +58,21 @@ <query-param name="locationClassificationId" type="java.lang.Integer"/> </query> + <!-- [DAT-02-1] Get all cruises for a given program (to list with no detail) --> + <query cacheable="true" name="allCruiseIds"> + <![CDATA[ + SELECT + c.id + FROM + ScientificCruiseImpl c + WHERE + c.program.code = :programCode + ORDER BY + c.departureDateTime desc + ]]> + <query-param name="programCode" type="java.lang.String"/> + </query> + <!-- [DAT-02] Get all cruises for a given program (to list with no detail) --> <query cacheable="true" name="allCruises"> <![CDATA[ diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index 1e1ff30..d69b7c7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -1048,6 +1048,11 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer //------------------------------------------------------------------------// @Override + public List<String> getAllCruiseId(String programId) { + return driver.getAllCruiseId(programId); + } + + @Override public List<Cruise> getAllCruise(String programId) { return driver.getAllCruise(programId); } -- 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 feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit bd6f2ef378cf73be37e3481e7a96fe351372d1a7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 23 20:37:03 2015 +0100 can override cruise + test for it --- .../genericformat/GenericFormatImportContext.java | 15 +-- .../GenericFormatImportCruiseContext.java | 9 +- .../GenericFormatImportCruiseResult.java | 7 ++ .../genericformat/GenericFormatImportService.java | 10 +- .../GenericformatImportPersitenceHelper.java | 43 +++++++- .../consumer/CsvConsumerForSurvey.java | 9 +- .../resources/i18n/tutti-service_fr_FR.properties | 1 + .../GenericFormatImportServiceTest.java | 110 +++++++++++++++++++++ .../onlyCruise/gearCaracteristics.csv | 3 + .../resources/genericFormat/onlyCruise/survey.csv | 2 + 10 files changed, 193 insertions(+), 16 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java index 0824f2c..cc6e382 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java @@ -148,11 +148,8 @@ public class GenericFormatImportContext implements Closeable { this.importedVessels = importedVessels; } - public boolean isCruiseAlreadyExists(Cruise cruise) { - - Cruise existingCruise = importRequest.getExistingCruise(cruise); - return existingCruise != null; - + public Cruise getExistingCruise(Cruise cruise) { + return importRequest.getExistingCruise(cruise); } public boolean isCruiseAlreadyImported(Cruise cruise) { @@ -162,10 +159,10 @@ public class GenericFormatImportContext implements Closeable { } - public void addImportedCruise(Cruise cruise) { + public void addImportedCruise(Cruise cruise, boolean override) { String cruiseId = cruise.getId(); - GenericFormatImportCruiseContext cruiseContext = new GenericFormatImportCruiseContext(cruise, cruiseDecorator.toString(cruise)); + GenericFormatImportCruiseContext cruiseContext = new GenericFormatImportCruiseContext(cruise, override,cruiseDecorator.toString(cruise)); cruiseContexts.put(cruiseId, cruiseContext); } @@ -307,6 +304,10 @@ public class GenericFormatImportContext implements Closeable { } } + public void addStepsInProgressionModel(int size) { + progressionModel.adaptTotal(progressionModel.getTotal() + size); + } + public static interface CruiseContextAction { void onCruise(GenericFormatImportCruiseContext cruiseContext, ProgressionModel progressionModel); 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 f8d48af..5ef2b87 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 @@ -29,14 +29,17 @@ public class GenericFormatImportCruiseContext implements Closeable { private final Cruise cruise; + private final boolean override; + private final String cruiseLabel; private final Map<String, GenericFormatImportOperationContext> fishingOperationContexts; private final Set<Gear> gearsWithcaracteristics; - public GenericFormatImportCruiseContext(Cruise cruise, String cruiseLabel) { + public GenericFormatImportCruiseContext(Cruise cruise, boolean override, String cruiseLabel) { this.cruise = cruise; + this.override=override; this.cruiseLabel = cruiseLabel; this.fishingOperationContexts = new TreeMap<>(); this.gearsWithcaracteristics = new HashSet<>(); @@ -56,6 +59,10 @@ public class GenericFormatImportCruiseContext implements Closeable { return cruise; } + public boolean isOverride() { + return override; + } + public String getCruiseLabel() { return cruiseLabel; } 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 886ade5..197256e 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,11 +28,14 @@ public class GenericFormatImportCruiseResult { private final Cruise cruise; + private final boolean override; + private final Map<String, GenericFormatImportOperationResult> fishingOperationResults; public GenericFormatImportCruiseResult(GenericFormatImportCruiseContext cruiseContext) { this.cruise = cruiseContext.getCruise(); + this.override = cruiseContext.isOverride(); this.fishingOperationResults = new HashMap<>(); for (GenericFormatImportOperationContext operationContext : cruiseContext.getFishingOperationContexts()) { @@ -48,6 +51,10 @@ public class GenericFormatImportCruiseResult { return cruise; } + public boolean isOverride() { + return override; + } + public GenericFormatImportOperationResult getFishingOperationResult(String fishingOperationId) { return fishingOperationResults.get(fishingOperationId); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index 16b049b..fdfead5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -52,6 +52,7 @@ import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; import java.io.IOException; +import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; @@ -150,7 +151,12 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { Preconditions.checkNotNull(importFile); Preconditions.checkState(importFile.exists()); - Set<Cruise> cruises = ImmutableSet.copyOf(persistenceService.getAllCruise(program.getId())); + // Full load cruise + Set<Cruise> cruises = new LinkedHashSet<>(); + for (String cruiseId : persistenceService.getAllCruiseId(program.getId())) { + cruises.add(persistenceService.getCruise(cruiseId)); + } + TuttiProtocol protocol = persistenceService.getProtocol(); GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); @@ -160,7 +166,7 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { ';', program, context.getSampleCategoryModel(), - cruises, + ImmutableSet.copyOf(cruises), protocol); return request; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java index 34019fd..d41d77d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java @@ -2,6 +2,7 @@ package fr.ifremer.tutti.service.genericformat; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency; @@ -54,12 +55,44 @@ public class GenericformatImportPersitenceHelper { public void persistCruise(Cruise cruise) { String cruiseStr = cruiseDecorator.toString(cruise); - if (log.isInfoEnabled()) { - log.info("Persist cruise: " + cruiseStr); + + boolean createCruise = TuttiEntities.isNew(cruise); + + Cruise savedCruise; + + if (createCruise) { + + if (log.isInfoEnabled()) { + log.info("Create cruise: " + cruiseStr); + } + importContext.increments(t("tutti.service.genericFormat.persist.cruise", cruiseStr)); + + savedCruise = persistenceService.createCruise(cruise); + + } else { + + if (log.isInfoEnabled()) { + log.info("Save existing cruise: " + cruiseStr); + } + + importContext.increments(t("tutti.service.genericFormat.persist.cruise", cruiseStr)); + savedCruise = persistenceService.saveCruise(cruise, false, false); + + List<String> fishingOperationIds = persistenceService.getAllFishingOperationIds(savedCruise.getId()); + importContext.addStepsInProgressionModel(fishingOperationIds.size()); + + for (String fishingOperationId : fishingOperationIds) { + + FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId); + importContext.increments(t("tutti.service.genericFormat.remove.existingCruise.fishingOperation", cruiseStr, fishingOperationDecorator.toString(fishingOperation))); + + persistenceService.deleteFishingOperation(fishingOperationId); + + } + } - importContext.increments(t("tutti.service.genericFormat.persist.cruise", cruiseStr)); - Cruise savedCruise = persistenceService.createCruise(cruise); - importContext.addImportedCruise(savedCruise); + + importContext.addImportedCruise(savedCruise, !createCruise); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java index a96b13a..2470218 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java @@ -34,7 +34,8 @@ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { Cruise cruise = bean.getCruise(); - if (importContext.isCruiseAlreadyExists(cruise)) { + Cruise existingCruise = importContext.getExistingCruise(cruise); + if (!(existingCruise == null || importContext.getImportRequest().isOverrideData())) { addCheckError(row, new CruiseAlreadyExistException(cruise)); @@ -44,6 +45,12 @@ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { } else { + if (existingCruise != null) { + + cruise.setId(existingCruise.getId()); + + } + NuitonValidatorResult nuitonValidatorResult = importContext.getValidationHelper().validateCruise(cruise); if (nuitonValidatorResult.hasFatalMessages()) { diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 860aeb9..9e91655 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -166,6 +166,7 @@ tutti.service.genericFormat.invalid.cruise=Erreur d'élévation de poids sur les tutti.service.genericFormat.invalid.fishingOperation=<li>L'élévation des poids ne peut pas être réalisée sur le trait %s, pour la raison suivante \:<ul><li>%s</li></ul></li> tutti.service.genericFormat.load.protocol=Import du protocol tutti.service.genericFormat.persist.cruise=Sauvegarde de la campagne <strong>%s</strong> +tutti.service.genericFormat.remove.existingCruise.fishingOperation=Suppression du trait <strong>%s</strong> - <strong>%s</strong> tutti.service.genericFormat.persist.gearCaracteristics=Sauvegarde des caractéristiques des engins de la campagne <strong>%s</strong> tutti.service.genericFormat.persist.operation=Sauvegarde du trait <strong>%s</strong> - <strong>%s</strong> tutti.service.genericFormat.persist.operation.accidentalBatches=Sauvegarde des captures accidentelles du trait <strong>%s</strong> - <strong>%s</strong> 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 7024e1d..66bef66 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 @@ -1,6 +1,9 @@ package fr.ifremer.tutti.service.genericformat; import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.referential.GearWithOriginalRankOrder; import fr.ifremer.tutti.service.ServiceDbResource; import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; @@ -11,9 +14,11 @@ import org.apache.commons.logging.LogFactory; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.io.File; import java.io.IOException; +import java.util.List; /** * Created on 2/15/15. @@ -105,4 +110,109 @@ public class GenericFormatImportServiceTest extends GenericFormatImportServiceTe Assert.assertEquals(4, temporaryVesselService.getTemporaryVessels().size()); } + + @Test + public void testImportNoOverride() throws IOException { + + ServiceDbResource.DataContext dataContext = getServiceDbResource().loadContext(PROGRAM_ID); + + File archiveFile = createArchive("empty.zip", "technical", "protocol", "empty", "onlyCruise"); + + GenericFormatImportConfiguration importConfiguration = new GenericFormatImportConfiguration(); + importConfiguration.setImportFile(archiveFile); + importConfiguration.setProgramId(dataContext.program.getId()); + + + int nbSteps = service.getImportProgramNbSteps(importConfiguration); + + { + ProgressionModel progressionModel = new ProgressionModel(); + progressionModel.adaptTotal(nbSteps); + + if (log.isInfoEnabled()) { + log.info("Will do import in " + nbSteps + " steps"); + } + + { + List<String> cruiseId = persistenceService.getAllCruiseId(PROGRAM_ID); + Assert.assertEquals(0, cruiseId.size()); + } + + service.importProgram(importConfiguration, progressionModel); + + assertCruiseInserted(); + } + + { + ProgressionModel progressionModel = new ProgressionModel(); + progressionModel.adaptTotal(nbSteps); + + if (log.isInfoEnabled()) { + log.info("Will do import in " + nbSteps + " steps"); + } + try { + service.importProgram(importConfiguration, progressionModel); + Assert.fail("Can't override cruise if overrideData to false"); + } catch (ApplicationBusinessException e) { + Assert.assertTrue(true); + } + } + + { + ProgressionModel progressionModel = new ProgressionModel(); + progressionModel.adaptTotal(nbSteps); + + if (log.isInfoEnabled()) { + log.info("Will do import in " + nbSteps + " steps"); + } + + importConfiguration.setOverrideData(true); + service.importProgram(importConfiguration, progressionModel); + + assertCruiseInserted(); + + } + + } + + protected void assertCruiseInserted() { + List<String> cruiseIds = persistenceService.getAllCruiseId(PROGRAM_ID); + Assert.assertEquals(1, cruiseIds.size()); + + Cruise cruise = persistenceService.getCruise(cruiseIds.get(0)); + Assert.assertNotNull(cruise); + Assert.assertEquals(4, cruise.sizeGear()); + + { + GearWithOriginalRankOrder gear = cruise.getGear(0); + Assert.assertEquals(379, (int) gear.getIdAsInt()); + + CaracteristicMap gearCaracteristics = persistenceService.getGearCaracteristics(cruise.getId(), gear.getId(), gear.getRankOrder()); + Assert.assertEquals(0, gearCaracteristics.size()); + } + + { + GearWithOriginalRankOrder gear = cruise.getGear(1); + Assert.assertEquals(381, (int) gear.getIdAsInt()); + + CaracteristicMap gearCaracteristics = persistenceService.getGearCaracteristics(cruise.getId(), gear.getId(), gear.getRankOrder()); + Assert.assertEquals(0, gearCaracteristics.size()); + } + + { + GearWithOriginalRankOrder gear = cruise.getGear(2); + Assert.assertEquals(64, (int) gear.getIdAsInt()); + + CaracteristicMap gearCaracteristics = persistenceService.getGearCaracteristics(cruise.getId(), gear.getId(), gear.getRankOrder()); + Assert.assertEquals(2, gearCaracteristics.size()); + } + + { + GearWithOriginalRankOrder gear = cruise.getGear(3); + Assert.assertEquals(64, (int) gear.getIdAsInt()); + + CaracteristicMap gearCaracteristics = persistenceService.getGearCaracteristics(cruise.getId(), gear.getId(), gear.getRankOrder()); + Assert.assertEquals(0, gearCaracteristics.size()); + } + } } diff --git a/tutti-service/src/test/resources/genericFormat/onlyCruise/gearCaracteristics.csv b/tutti-service/src/test/resources/genericFormat/onlyCruise/gearCaracteristics.csv new file mode 100644 index 0000000..a150b41 --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/onlyCruise/gearCaracteristics.csv @@ -0,0 +1,3 @@ +Annee;Serie;Serie_Partielle;Engin;Rang_Engin;Code_PMFM;Libelle_PMFM;Valeur;Serie_Id;Engin_Id;Valeur_Id +2014;Campagne EVHOE;1;Dragues à main manoeuvrées à partir du bateau;3;1391;Accessibilité au poisson - enquête - totale - Observation par un observateur;Bonne;CAM-EVHOE;64;1752 +2014;Campagne EVHOE;1;Dragues à main manoeuvrées à partir du bateau;3;46;Algorithme de déterminaison - marée - totale - Estimation algorithme SACROIS;3a - N VMS - 1 LB (VMS validées);CAM-EVHOE;64;172 \ No newline at end of file diff --git a/tutti-service/src/test/resources/genericFormat/onlyCruise/survey.csv b/tutti-service/src/test/resources/genericFormat/onlyCruise/survey.csv new file mode 100644 index 0000000..8090b4c --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/onlyCruise/survey.csv @@ -0,0 +1,2 @@ +Annee;Serie;Serie_Partielle;Navire;Nombre_Poches;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire;Serie_Id;Navire_Id;Engin_Id;Port_Deb_Campagne_Id;Port_Fin_Campagne_Id;Chef_Mission_Id;Resp_Salle_Tri_Id +2014;Campagne EVHOE;1;868095;1;FRA;EVHOE - Golfe de Gascogne / Mer Celtique;Campagne EVHOE 2014;;17/10/2014 07:00:00;Brest;01/12/2014 07:00:00;Brest;Jean-Pierre LEAUTE|Michele SALAUN|Lionel PAWLOWSKI;Erwan DUHAMEL|Nicolas CAROFF;;CAM-EVHOE;868095;379|381|64|64;530;530;143|70|2332;128|59 -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm