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 d4b1000705a0e45d1c9564d0c7fbfab3576ebf7a Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 23 12:06:47 2015 +0100 introduce a import configuration object --- .../GenericFormatImportConfiguration.java | 62 ++++++++++++++++++++++ .../genericformat/GenericFormatImportRequest.java | 20 +++++-- .../genericformat/GenericFormatImportService.java | 61 +++++++++++++++------ .../GenericFormatImportServiceTest.java | 8 ++- .../ImportGenericFormatProgramCruisesAction.java | 12 ++++- 5 files changed, 139 insertions(+), 24 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportConfiguration.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportConfiguration.java new file mode 100644 index 0000000..89b7428 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportConfiguration.java @@ -0,0 +1,62 @@ +package fr.ifremer.tutti.service.genericformat; + +import java.io.File; + +/** + * Created on 2/23/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatImportConfiguration { + + private String programId; + + private File importFile; + + private boolean cleanWeights; + + private boolean checkWeights; + + private boolean overrideData; + + public String getProgramId() { + return programId; + } + + public void setProgramId(String programId) { + this.programId = programId; + } + + public File getImportFile() { + return importFile; + } + + public void setImportFile(File importFile) { + this.importFile = importFile; + } + + public boolean isCleanWeights() { + return cleanWeights; + } + + public void setCleanWeights(boolean cleanWeights) { + this.cleanWeights = cleanWeights; + } + + public boolean isCheckWeights() { + return checkWeights; + } + + public void setCheckWeights(boolean checkWeights) { + this.checkWeights = checkWeights; + } + + public boolean isOverrideData() { + return overrideData; + } + + public void setOverrideData(boolean overrideData) { + this.overrideData = overrideData; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java index 92f06f5..9b06b87 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java @@ -16,6 +16,8 @@ import java.util.Set; */ public class GenericFormatImportRequest { + private final GenericFormatImportConfiguration importConfiguration; + private final GenericFormatArchive archive; private final char csvSeparator; @@ -28,13 +30,14 @@ public class GenericFormatImportRequest { private final Program program; - public GenericFormatImportRequest(GenericFormatArchive archive, + public GenericFormatImportRequest(GenericFormatImportConfiguration importConfiguration, + GenericFormatArchive archive, char csvSeparator, Program program, SampleCategoryModel sampleCategoryModel, Set<Cruise> cruises, - TuttiProtocol oldProtocol - ) { + TuttiProtocol oldProtocol) { + this.importConfiguration = importConfiguration; this.archive = archive; this.csvSeparator = csvSeparator; this.sampleCategoryModel = sampleCategoryModel; @@ -84,4 +87,15 @@ public class GenericFormatImportRequest { } + public boolean isCleanWeights() { + return importConfiguration.isCleanWeights(); + } + + public boolean isCheckWeights() { + return importConfiguration.isCheckWeights(); + } + + public boolean isOverrideData() { + return importConfiguration.isOverrideData(); + } } 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 51fd6c8..16b049b 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 @@ -79,7 +79,13 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { } - public int getImportProgramNbSteps(File importFile) { + public int getImportProgramNbSteps(GenericFormatImportConfiguration importConfiguration) { + + Preconditions.checkNotNull(importConfiguration); + + File importFile = importConfiguration.getImportFile(); + Preconditions.checkNotNull(importFile); + Preconditions.checkState(importFile.exists()); GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); @@ -91,6 +97,10 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { if (log.isInfoEnabled()) { log.info("Count " + nbOperations + " operations to import."); } + + boolean checkWeights = importConfiguration.isCheckWeights(); + boolean cleanWeights = importConfiguration.isCleanWeights(); + int result = 6 // check sampleCategoryModel + import ( gear + person + species + vessel + protocol ) + 1 + nbCruises // load cruises + nbCruise * persist cruise + 1 + nbCruises // load gear caracteristics + nbCruise * persist gear caracteristics @@ -100,30 +110,23 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { + 1 + nbOperations // load marine litters + nbOperations * persist marine litters + 1 + nbOperations // load individualObservations + nbOperations * persist individualObservations + 1 + nbOperations // load accidental catches + nbOperations * persist accidental catches - + nbOperations // nbOperations * cleanWeights - + nbOperations // nbOperations * checkWeights + + (cleanWeights ? nbOperations : 0) // nbOperations * cleanWeights + + (checkWeights ? nbOperations : 0) // nbOperations * checkWeights + 1; // compute report return result; } - public GenericFormatImportResult importProgram(String programId, File importFile, ProgressionModel progressionModel) { + public GenericFormatImportResult importProgram(GenericFormatImportConfiguration importConfiguration, ProgressionModel progressionModel) { - Preconditions.checkNotNull(programId); - Preconditions.checkNotNull(importFile); - Preconditions.checkNotNull(progressionModel); + Preconditions.checkNotNull(importConfiguration); - Program program = persistenceService.getProgram(programId); - Preconditions.checkNotNull(program); - - if (log.isDebugEnabled()) { - log.debug("Will import into program: " + programId); - } + Preconditions.checkNotNull(progressionModel); - GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); + GenericFormatImportRequest importRequest = createImportRequest(importConfiguration); - GenericFormatImportResult result = doImport(archive, program, progressionModel); + GenericFormatImportResult result = doImport(importRequest, progressionModel); computeReport(result, progressionModel); @@ -131,17 +134,41 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { } - protected GenericFormatImportResult doImport(GenericFormatArchive archive, Program program, ProgressionModel progressionModel) { + protected GenericFormatImportRequest createImportRequest(GenericFormatImportConfiguration importConfiguration) { + + String programId = importConfiguration.getProgramId(); + Preconditions.checkNotNull(programId); + + Program program = persistenceService.getProgram(programId); + Preconditions.checkNotNull(program); + + if (log.isDebugEnabled()) { + log.debug("Will import into program: " + programId); + } + + File importFile = importConfiguration.getImportFile(); + Preconditions.checkNotNull(importFile); + Preconditions.checkState(importFile.exists()); Set<Cruise> cruises = ImmutableSet.copyOf(persistenceService.getAllCruise(program.getId())); TuttiProtocol protocol = persistenceService.getProtocol(); - GenericFormatImportRequest request = new GenericFormatImportRequest(archive, + + GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); + + GenericFormatImportRequest request = new GenericFormatImportRequest(importConfiguration, + archive, ';', program, context.getSampleCategoryModel(), cruises, protocol); + return request; + + } + + protected GenericFormatImportResult doImport(GenericFormatImportRequest request, ProgressionModel progressionModel) { + try (GenericFormatImportContext importContext = new GenericFormatImportContext(request, progressionModel, persistenceService, cruiseDecorator, fishingOperationDecorator)) { GenericformatImportPersitenceHelper persitenceHelper = new GenericformatImportPersitenceHelper(importContext, persistenceService, cruiseDecorator, fishingOperationDecorator); 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 7261a4e..0d4f7d9 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 @@ -22,13 +22,17 @@ public class GenericFormatImportServiceTest extends GenericFormatImportServiceTe File archiveFile = createArchive("empty", "empty.zip"); - int nbSteps = service.getImportProgramNbSteps(archiveFile); + GenericFormatImportConfiguration importConfiguration = new GenericFormatImportConfiguration(); + importConfiguration.setImportFile(archiveFile); + importConfiguration.setProgramId(dataContext.program.getId()); + + int nbSteps = service.getImportProgramNbSteps(importConfiguration); progressionModel.adaptTotal(nbSteps); if (log.isInfoEnabled()) { log.info("Will do import in " + nbSteps + " steps"); } - service.importProgram(dataContext.program.getId(), archiveFile, progressionModel); + service.importProgram(importConfiguration, progressionModel); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java index 2608764..73ba1c6 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java @@ -2,6 +2,7 @@ package fr.ifremer.tutti.ui.swing.action; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportConfiguration; import fr.ifremer.tutti.service.genericformat.GenericFormatImportService; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIHandler; @@ -52,8 +53,11 @@ public class ImportGenericFormatProgramCruisesAction extends AbstractTuttiAction // compute number of steps (will also check archive format) + GenericFormatImportConfiguration importConfiguration = new GenericFormatImportConfiguration(); + importConfiguration.setImportFile(file); + GenericFormatImportService service = getContext().getGenericFormatImportService(); - int nbSteps = service.getImportProgramNbSteps(file); + int nbSteps = service.getImportProgramNbSteps(importConfiguration); createProgressionModelIfRequired(nbSteps); } @@ -77,8 +81,12 @@ public class ImportGenericFormatProgramCruisesAction extends AbstractTuttiAction ApplicationBusinessException importError = null; + GenericFormatImportConfiguration importConfiguration = new GenericFormatImportConfiguration(); + importConfiguration.setImportFile(file); + importConfiguration.setProgramId(program.getId()); + try { - service.importProgram(program.getId(), file, getProgressionModel()); + service.importProgram(importConfiguration, getProgressionModel()); } catch (ApplicationBusinessException e) { String errorMessage; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.