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 b1b5135b8c0eb018166eed43d985872e50884b68 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 18:01:57 2015 +0100 introduce generic format import service and some of his objects --- .../genericformat/GenericFormatImportResult.java | 49 +++++++++ .../genericformat/GenericFormatImportService.java | 120 +++++++++++++++++++++ .../service/genericformat/GlobalImportContext.java | 49 ++++++++- .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 9 +- 4 files changed, 223 insertions(+), 4 deletions(-) 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 new file mode 100644 index 0000000..4fe8680 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java @@ -0,0 +1,49 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.collect.ImmutableSet; +import fr.ifremer.tutti.persistence.entities.data.Cruise; + +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatImportResult { + + private final GenericFormatArchive archive; + + private final Set<Cruise> importedCruises; + + private final Set<String> errors; + + public GenericFormatImportResult(GenericFormatArchive archive) { + this.archive = archive; + this.importedCruises = new LinkedHashSet<>(); + this.errors = new LinkedHashSet<>(); + } + + public GenericFormatArchive getArchive() { + return archive; + } + + public Set<Cruise> getImportedCruises() { + return ImmutableSet.copyOf(importedCruises); + } + + public Set<String> getErrors() { + return ImmutableSet.copyOf(errors); + } + + public void addImportedCruise(Cruise cruise) { + importedCruises.add(cruise); + } + + public void addError(String error) { + errors.add(error); + } + +} 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 new file mode 100644 index 0000000..96eb56c --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -0,0 +1,120 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.base.Preconditions; +import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.service.AbstractTuttiService; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.TuttiServiceContext; +import fr.ifremer.tutti.service.catches.WeightComputingService; +import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; +import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatImportService extends AbstractTuttiService { + + private static final Log log = LogFactory.getLog(GenericFormatImportService.class); + + protected PersistenceService persistenceService; + + protected WeightComputingService weightComputingService; + + protected DecoratorService decoratorService; + + protected ReferentialTemporaryGearService referentialTemporaryGearService; + + protected ReferentialTemporaryPersonService referentialTemporaryPersonService; + + protected ReferentialTemporarySpeciesService referentialTemporarySpeciesService; + + protected ReferentialTemporaryVesselService referentialTemporaryVesselService; + + protected ProtocolImportExportService protocolImportExportService; + + @Override + public void setServiceContext(TuttiServiceContext context) { + + super.setServiceContext(context); + persistenceService = getService(PersistenceService.class); + decoratorService = getService(DecoratorService.class); + weightComputingService = getService(WeightComputingService.class); + referentialTemporaryGearService = getService(ReferentialTemporaryGearService.class); + referentialTemporaryPersonService = getService(ReferentialTemporaryPersonService.class); + referentialTemporarySpeciesService = getService(ReferentialTemporarySpeciesService.class); + referentialTemporaryVesselService = getService(ReferentialTemporaryVesselService.class); + protocolImportExportService = getService(ProtocolImportExportService.class); + + } + + public int getImportProgramNbSteps(File importFile) { + + // nbCruise * (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / marine litters) + + // (species + sampleCategoryModel + protocol + temporary gear + temporary person + temporar species + temporary vessel + zip) + + GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); + + Path surveyPath = archive.getSurveyPath(); + try { + + List<String> allCruise = Files.readAllLines(surveyPath, Charset.forName("UTF-8")); + int result = 9 * allCruise.size() - 1 + 8; + return result; + + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not read survey.csv file from archive " + importFile, e); + } + } + + public void checkArchive(File importFile) { + + GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); + archive.checkArchiveLayout(); + + } + + public GenericFormatImportResult importProgram(String programId, File importFile, ProgressionModel progressionModel) { + + Preconditions.checkNotNull(programId); + Preconditions.checkNotNull(importFile); + + Program program = persistenceService.getProgram(programId); + Preconditions.checkNotNull(program); + + if (log.isDebugEnabled()) { + log.debug("Will import into program: " + programId); + } + + GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); + archive.checkArchiveLayout(); + + GlobalImportContext importContext = new GlobalImportContext(persistenceService, archive, program); + + // load sampleSampleCategory and check it + + GenericFormatImportResult result = new GenericFormatImportResult(archive); + + return result; + + } + + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java index fbbca75..f996532 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java @@ -1,5 +1,8 @@ package fr.ifremer.tutti.service.genericformat; +import com.google.common.collect.ImmutableSet; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CaracteristicTechnicalParser; @@ -14,13 +17,18 @@ import fr.ifremer.tutti.service.csv.ListVesselTechnicalParser; import fr.ifremer.tutti.service.csv.SpeciesTechnicalParser; import fr.ifremer.tutti.service.csv.VesselTechnicalParser; +import java.io.Closeable; +import java.io.IOException; +import java.util.List; +import java.util.Set; + /** * Created on 2/5/15. * * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class GlobalImportContext { +public class GlobalImportContext implements Closeable { private final VesselTechnicalParser vesselParser; @@ -48,7 +56,12 @@ public class GlobalImportContext { private final CaracteristicValueTechnicalParser marineLitterSizeCategoryValueParser; - public GlobalImportContext(PersistenceService persistenceService, Program program) { + private final GenericFormatArchive archive; + + private final Set<Cruise> existingCruises; + + public GlobalImportContext(PersistenceService persistenceService, GenericFormatArchive archive, Program program) { + this.archive = archive; this.vesselParser = new VesselTechnicalParser(persistenceService); this.harbourParser = new HarbourTechnicalParser(persistenceService); this.listPersonParser = new ListPersonTechnicalParser(persistenceService); @@ -62,6 +75,22 @@ public class GlobalImportContext { this.speciesParser = new SpeciesTechnicalParser(persistenceService); this.marineLitterCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterCategoryCaracteristic()); this.marineLitterSizeCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterSizeCategoryCaracteristic()); + + List<Cruise> allCruise = persistenceService.getAllCruise(program.getId()); + this.existingCruises = ImmutableSet.copyOf(allCruise); + + } + + @Override + public void close() throws IOException { + + //TODO Close + //archive.close(); + + } + + public GenericFormatArchive getArchive() { + return archive; } public VesselTechnicalParser getVesselParser() { @@ -115,4 +144,20 @@ public class GlobalImportContext { public CaracteristicValueTechnicalParser getMarineLitterSizeCategoryValueParser() { return marineLitterSizeCategoryValueParser; } + + public boolean isCruiseExists(Cruise cruise) { + + boolean equals = false; + for (Cruise existingCruise : existingCruises) { + + + equals = Cruises.equals(cruise, existingCruise); + if (equals) { + break; + } + + } + return equals; + + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java index f1387ed..01cd2e9 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java @@ -39,9 +39,10 @@ import fr.ifremer.tutti.service.catches.WeightCleaningService; import fr.ifremer.tutti.service.catches.WeightComputingService; import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; -import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import fr.ifremer.tutti.service.export.pdf.CatchesPdfExportService; import fr.ifremer.tutti.service.export.sumatra.CatchesSumatraExportService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportService; import fr.ifremer.tutti.service.operationimport.FishingOperationImportService; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; import fr.ifremer.tutti.service.psionimport.PsionImportService; @@ -721,10 +722,14 @@ public class TuttiUIContext extends AbstractBean implements Closeable, UIMessage return serviceContext.getService(CatchesPdfExportService.class); } - public GenericFormatExportService getTuttiExportService() { + public GenericFormatExportService getGenericFormatExportService() { return serviceContext.getService(GenericFormatExportService.class); } + public GenericFormatImportService getGenericFormatImportService() { + return serviceContext.getService(GenericFormatImportService.class); + } + public CatchesSumatraExportService getCatchesSumatraExportService() { return serviceContext.getService(CatchesSumatraExportService.class); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.