branch feature/8153 created (now 0f1fbe5)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8153 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git at 0f1fbe5 on recharge les lignes ) partir du résultat de l'import (fixes #8153) This branch includes the following new commits: new 343806d ajout du code de prélèvement et du mode de recopie pour l'import export (refs #8153) new 1f6be08 on n'enregistre pas les lignes importées, on les retourne à l'utilisateur (refs #8153) new 0f1fbe5 on recharge les lignes ) partir du résultat de l'import (fixes #8153) The 3 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 0f1fbe59a1cdcbc38051aa094ffbcb4dd3411bdd Author: Kevin Morin <morin@codelutin.com> Date: Wed Mar 30 17:34:17 2016 +0200 on recharge les lignes ) partir du résultat de l'import (fixes #8153) commit 1f6be08cbad6b6d4ed78e1c17c43381528554956 Author: Kevin Morin <morin@codelutin.com> Date: Wed Mar 30 17:09:47 2016 +0200 on n'enregistre pas les lignes importées, on les retourne à l'utilisateur (refs #8153) commit 343806dce92bb52ff785c0e70b03f8f7f00f02a7 Author: Kevin Morin <morin@codelutin.com> Date: Wed Mar 30 17:09:14 2016 +0200 ajout du code de prélèvement et du mode de recopie pour l'import export (refs #8153) -- 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/8153 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 343806dce92bb52ff785c0e70b03f8f7f00f02a7 Author: Kevin Morin <morin@codelutin.com> Date: Wed Mar 30 17:09:14 2016 +0200 ajout du code de prélèvement et du mode de recopie pour l'import export (refs #8153) --- .../catches/multipost/MultiPostExportContext.java | 4 +-- .../multipost/csv/IndividualObservationRow.java | 42 +++++++++++----------- .../csv/IndividualObservationRowModel.java | 5 +++ 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportContext.java index caadec3..a0ca5ff 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportContext.java @@ -241,9 +241,9 @@ public class MultiPostExportContext implements MultiPostConstants, Closeable { row.setWeight(batch.getWeight()); row.setSize(batch.getSize()); row.setLengthStepCaracteristic(batch.getLengthStepCaracteristic()); -// row.setSamplingCode(batch.getSamplingCode()); -// row.setCalcifiedPieceSamplingCode(batch.getCalcifiedPieceSamplingCode()); + row.setSamplingCode(batch.getSamplingCode()); row.setComment(batch.getComment()); + row.setCopyIndividualObservationMode(batch.getCopyIndividualObservationMode()); individualObservationRows.add(row); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRow.java index 82adf9e..43a7d16 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRow.java @@ -22,6 +22,7 @@ package fr.ifremer.tutti.service.catches.multipost.csv; * #L% */ +import fr.ifremer.tutti.persistence.entities.data.CopyIndividualObservationMode; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; @@ -40,10 +41,9 @@ public class IndividualObservationRow implements Serializable { public static final String SIZE = "size"; public static final String LENGTH_STEP_CARACTERISTIC = "lengthStepCaracteristic"; public static final String COMMENT = "comment"; - -// public static final String SAMPLING_CODE = "samplingCode"; + public static final String SAMPLING_CODE = "samplingCode"; + public static final String COPY_INDIVIDUAL_OBSERVATION_MODE = "copyIndividualObservationMode"; // -// public static final String CALCIFIED_PIECE_SAMPLING_CODE = "calcifiedPieceSamplingCode"; private static final long serialVersionUID = 1L; protected String batchId; protected String speciesBatchId; @@ -56,12 +56,12 @@ public class IndividualObservationRow implements Serializable { protected Caracteristic lengthStepCaracteristic; -// protected String samplingCode; -// -// protected String calcifiedPieceSamplingCode; + protected String samplingCode; protected String comment; + protected CopyIndividualObservationMode copyIndividualObservationMode; + public String getBatchId() { return batchId; } @@ -110,21 +110,13 @@ public class IndividualObservationRow implements Serializable { this.lengthStepCaracteristic = lengthStepCaracteristic; } -// public String getSamplingCode() { -// return samplingCode; -// } -// -// public void setSamplingCode(String samplingCode) { -// this.samplingCode = samplingCode; -// } -// -// public String getCalcifiedPieceSamplingCode() { -// return calcifiedPieceSamplingCode; -// } -// -// public void setCalcifiedPieceSamplingCode(String calcifiedPieceSamplingCode) { -// this.calcifiedPieceSamplingCode = calcifiedPieceSamplingCode; -// } + public String getSamplingCode() { + return samplingCode; + } + + public void setSamplingCode(String samplingCode) { + this.samplingCode = samplingCode; + } public String getComment() { return comment; @@ -133,4 +125,12 @@ public class IndividualObservationRow implements Serializable { public void setComment(String comment) { this.comment = comment; } + + public CopyIndividualObservationMode getCopyIndividualObservationMode() { + return copyIndividualObservationMode; + } + + public void setCopyIndividualObservationMode(CopyIndividualObservationMode copyIndividualObservationMode) { + this.copyIndividualObservationMode = copyIndividualObservationMode; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRowModel.java index d188147..e5711bc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRowModel.java @@ -22,6 +22,7 @@ package fr.ifremer.tutti.service.catches.multipost.csv; * #L% */ +import fr.ifremer.tutti.persistence.entities.data.CopyIndividualObservationMode; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.catches.multipost.MultiPostConstants; @@ -56,6 +57,10 @@ public class IndividualObservationRowModel extends AbstractTuttiImportExportMode newColumnForImportExport(IndividualObservationRow.COMMENT); + newColumnForImportExport(IndividualObservationRow.SAMPLING_CODE); + + newColumnForImportExport(IndividualObservationRow.COPY_INDIVIDUAL_OBSERVATION_MODE, TuttiCsvUtil.newEnumByNameParserFormatter(CopyIndividualObservationMode.class)); + } public static IndividualObservationRowModel forExport() { -- 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/8153 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 1f6be08cbad6b6d4ed78e1c17c43381528554956 Author: Kevin Morin <morin@codelutin.com> Date: Wed Mar 30 17:09:47 2016 +0200 on n'enregistre pas les lignes importées, on les retourne à l'utilisateur (refs #8153) --- .../catches/multipost/MultiPostImportResult.java | 36 ++++++++ .../catches/multipost/MultiPostImportService.java | 96 +++++++++++++++++----- 2 files changed, 112 insertions(+), 20 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportResult.java new file mode 100644 index 0000000..06a4a93 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportResult.java @@ -0,0 +1,36 @@ +package fr.ifremer.tutti.service.catches.multipost; + +import com.google.common.collect.Multimap; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; + +import java.io.File; +import java.util.List; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class MultiPostImportResult { + + private final List<SpeciesBatchFrequency> importedFrequencies; + private final List<IndividualObservationBatch> importedObservations; + private final Multimap<Integer, File> observationAttachments; + + public MultiPostImportResult(List<SpeciesBatchFrequency> importedFrequencies, + List<IndividualObservationBatch> importedObservations, + Multimap<Integer, File> observationAttachments) { + this.importedFrequencies = importedFrequencies; + this.importedObservations = importedObservations; + this.observationAttachments = observationAttachments; + } + + public List<SpeciesBatchFrequency> getImportedFrequencies() { + return importedFrequencies; + } + + public List<IndividualObservationBatch> getImportedObservations() { + return importedObservations; + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java index 2be0a65..1a0b6e1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java @@ -25,7 +25,9 @@ package fr.ifremer.tutti.service.catches.multipost; import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.HashMultimap; import com.google.common.collect.ListMultimap; +import com.google.common.collect.Multimap; import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.TuttiEntity; @@ -89,6 +91,7 @@ import java.io.IOException; import java.io.Reader; import java.io.Serializable; import java.text.ParseException; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; @@ -502,7 +505,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult * @param operation the operation in which to add the batches * @return the list of the species which have not been imported, because there were concurrent batches */ - public Map<String, Object> importSpeciesBatch(File file, + public MultiPostImportResult importSpeciesBatch(File file, FishingOperation operation, SpeciesBatch speciesBatch, boolean importFrequencies, @@ -514,16 +517,19 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult // Import frequencies - if (importFrequencies) { - - List<SpeciesBatchFrequency> frequenciesToSave = importFrequencies(importContext, speciesBatch, SpeciesBatchFrequencys::newSpeciesBatchFrequency); + List<SpeciesBatchFrequency> frequenciesToSave = new ArrayList<>(); + if (importFrequencies) { + frequenciesToSave.addAll(importFrequencies(importContext, speciesBatch, SpeciesBatchFrequencys::newSpeciesBatchFrequency)); frequenciesToSave.forEach(speciesBatchFrequency -> speciesBatchFrequency.setBatch(speciesBatch)); - persistenceService.saveSpeciesBatchFrequency(speciesBatch.getIdAsInt(), frequenciesToSave); } // Import indivudal observations + List<IndividualObservationBatch> individualObservations = new ArrayList<>(); + + Multimap<Integer, File> attachmentFiles = HashMultimap.create(); + if (importIndividualObservations) { // Import batches @@ -534,17 +540,19 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult importCaracteristics(importContext, individualObservationsBatches); + individualObservations.addAll(individualObservationsBatches.values()); + // Persist batches - persistenceService.createIndividualObservationBatches(individualObservationsBatches.values()); +// persistenceService.createIndividualObservationBatches(individualObservationsBatches.values()); // Import attachments - importAttachments(importContext, individualObservationsBatches, ObjectTypeCode.SAMPLE); + attachmentFiles.putAll(getAttachmentFiles(importContext, individualObservationsBatches, ObjectTypeCode.SAMPLE)); } - return new HashMap<>(); + return new MultiPostImportResult(frequenciesToSave, individualObservations, attachmentFiles); } }); @@ -811,6 +819,8 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult //-- Import Benthos Batches data --// //------------------------------------------------------------------------// + + //FIXME exactly the same as for the species ??? /** * Import benthos batches frequencies or individual observations from a satellite post. * @@ -818,28 +828,32 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult * @param operation the operation in which to add the batches * @return the list of the species which have not been imported, because there were concurrent batches */ - public Map<String, Object> importBenthosBatch(File file, - FishingOperation operation, - SpeciesBatch speciesBatch, - boolean importFrequencies, - boolean importIndividualObservations) { + public MultiPostImportResult importBenthosBatch(File file, + FishingOperation operation, + SpeciesBatch speciesBatch, + boolean importFrequencies, + boolean importIndividualObservations) { return persistenceService.invoke(() -> { + try (MultiPostImportContext importContext = new MultiPostImportContext(context, file, operation)) { // Import frequencies - if (importFrequencies) { - - List<SpeciesBatchFrequency> frequenciesToSave = importFrequencies(importContext, speciesBatch, SpeciesBatchFrequencys::newSpeciesBatchFrequency); + List<SpeciesBatchFrequency> frequenciesToSave = new ArrayList<>(); + if (importFrequencies) { + frequenciesToSave.addAll(importFrequencies(importContext, speciesBatch, SpeciesBatchFrequencys::newSpeciesBatchFrequency)); frequenciesToSave.forEach(speciesBatchFrequency -> speciesBatchFrequency.setBatch(speciesBatch)); - persistenceService.saveBenthosBatchFrequency(speciesBatch.getIdAsInt(), frequenciesToSave); } // Import indivudal observations + List<IndividualObservationBatch> individualObservations = new ArrayList<>(); + + Multimap<Integer, File> attachmentFiles = HashMultimap.create(); + if (importIndividualObservations) { // Import batches @@ -850,19 +864,22 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult importCaracteristics(importContext, individualObservationsBatches); + individualObservations.addAll(individualObservationsBatches.values()); + // Persist batches - persistenceService.createIndividualObservationBatches(individualObservationsBatches.values()); +// persistenceService.createIndividualObservationBatches(individualObservationsBatches.values()); // Import attachments - importAttachments(importContext, individualObservationsBatches, ObjectTypeCode.SAMPLE); + attachmentFiles.putAll(getAttachmentFiles(importContext, individualObservationsBatches, ObjectTypeCode.SAMPLE)); } - return new HashMap<>(); + return new MultiPostImportResult(frequenciesToSave, individualObservations, attachmentFiles); } + }); } @@ -1235,6 +1252,41 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult } + protected <R extends TuttiEntity> Multimap<Integer, File> getAttachmentFiles(MultiPostImportContext importContext, Map<String, R> data, ObjectTypeCode objectType) throws IOException { + + Function<AttachmentRow, Integer> getObjetcIdFunction = input -> { + Integer result = null; + R batch = data.get(input.getBatchId()); + if (batch != null) { + result = batch.getIdAsInt(); + } + return result; + }; + + return getAttachmentFiles(importContext, getObjetcIdFunction, objectType); + } + + protected Multimap<Integer, File> getAttachmentFiles(MultiPostImportContext importContext, Function<AttachmentRow, Integer> getObjetcIdFunction, ObjectTypeCode objectType) throws IOException { + Multimap<Integer, File> result = HashMultimap.create(); + try (Reader reader = importContext.newFileReader(ATTACHMENTS_FILE)) { + + AttachmentRowModel attachmentModel = + AttachmentRowModel.forImport(importContext.newFile(ATTACHMENTS_DIRECTORY)); + try (Import<AttachmentRow> importer = Import.newImport(attachmentModel, reader)) { + + for (AttachmentRow row : importer) { + Integer objectId = getObjetcIdFunction.apply(row); + if (objectId != null) { + + result.put(objectId, row.getFile()); + } + } + + } + } + return result; + } + protected <B extends SampleEntity> void importCaracteristics(MultiPostImportContext importContext, Map<String, B> batches) throws IOException { @@ -1310,6 +1362,8 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult batch.setSize(row.getSize()); batch.setLengthStepCaracteristic(row.getLengthStepCaracteristic()); batch.setComment(row.getComment()); + batch.setCopyIndividualObservationMode(row.getCopyIndividualObservationMode()); + batch.setSamplingCode(row.getSamplingCode()); batch.setCaracteristics(new CaracteristicMap()); batches.put(row.getBatchId(), batch); @@ -1448,6 +1502,8 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult batch.setLengthStepCaracteristic(row.getLengthStepCaracteristic()); batch.setComment(row.getComment()); batch.setCaracteristics(new CaracteristicMap()); + batch.setSamplingCode(row.getSamplingCode()); + batch.setCopyIndividualObservationMode(row.getCopyIndividualObservationMode()); batches.put(row.getBatchId(), batch); } -- 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/8153 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 0f1fbe59a1cdcbc38051aa094ffbcb4dd3411bdd Author: Kevin Morin <morin@codelutin.com> Date: Wed Mar 30 17:34:17 2016 +0200 on recharge les lignes ) partir du résultat de l'import (fixes #8153) --- .../persistence/entities/CaracteristicMap.java | 2 +- .../IndividualObservationBatchTableModel.java | 12 +- .../catches/species/BenthosBatchUISupportImpl.java | 3 +- .../catches/species/SpeciesBatchUISupportImpl.java | 3 +- .../species/SpeciesOrBenthosBatchUISupport.java | 3 +- .../frequency/SpeciesFrequencyUIHandler.java | 138 +++++++++++---------- .../species/frequency/SpeciesFrequencyUIModel.java | 10 +- .../ImportMultiPostSpeciesSupportAction.java | 87 +++++++++---- .../resources/i18n/tutti-ui-swing_en_GB.properties | 1 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 1 + 10 files changed, 167 insertions(+), 93 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java index 68a7c66..7bb4001 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java @@ -58,7 +58,7 @@ public class CaracteristicMap extends LinkedHashMap<Caracteristic, Serializable> public boolean hasNonNullValues(Collection<Caracteristic> caracteristicsToIgnore) { return keySet().stream() - .filter(caracteristic -> caracteristicsToIgnore.contains(caracteristic) && get(caracteristic) != null) + .filter(caracteristic -> !caracteristicsToIgnore.contains(caracteristic) && get(caracteristic) != null) .count() > 0; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java index e1930d0..592cf13 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java @@ -39,6 +39,7 @@ import javax.swing.event.TableColumnModelListener; import java.io.Serializable; import java.util.Collection; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.n; @@ -163,6 +164,10 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab } } + public Optional<Caracteristic> getMaturityCaracteristic() { + return maturityCaracteristic; + } + public void setMaturityCaracteristic(Optional<Caracteristic> maturityCaracteristic) { this.maturityCaracteristic = maturityCaracteristic; if (rows != null) { @@ -224,9 +229,10 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab for (int i = rows.size() - 1 ; i >= 0 ; i--) { IndividualObservationBatchRowModel row = rows.get(i); // if the row has no data set, then it could be the empty row we are looking for - defaultCaracteristicsMap.keySet().stream() - .filter(key -> defaultCaracteristicsMap.get(key) != null).collect(Collectors.toSet()); - if (row.isEmpty()) { + Set<Caracteristic> notNullCaracteristics = defaultCaracteristicsMap.keySet().stream() + .filter(key -> defaultCaracteristicsMap.get(key) != null) + .collect(Collectors.toSet()); + if (row.isEmpty(notNullCaracteristics)) { result = row; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/BenthosBatchUISupportImpl.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/BenthosBatchUISupportImpl.java index 5af43d1..9cc5dec 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/BenthosBatchUISupportImpl.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/BenthosBatchUISupportImpl.java @@ -31,6 +31,7 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.catches.multipost.MultiPostImportResult; import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; @@ -236,7 +237,7 @@ public class BenthosBatchUISupportImpl extends SpeciesOrBenthosBatchUISupport { } @Override - public Map<String, Object> importMultiPost(File file, FishingOperation operation, SpeciesBatch speciesBatch, boolean importFrequencies, boolean importIndivudalObservations) { + public MultiPostImportResult importMultiPost(File file, FishingOperation operation, SpeciesBatch speciesBatch, boolean importFrequencies, boolean importIndivudalObservations) { return context.getMultiPostImportService().importBenthosBatch(file, operation, speciesBatch, importFrequencies, importIndivudalObservations); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUISupportImpl.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUISupportImpl.java index 2dee051..8bba93e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUISupportImpl.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUISupportImpl.java @@ -31,6 +31,7 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.catches.multipost.MultiPostImportResult; import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; @@ -226,7 +227,7 @@ public class SpeciesBatchUISupportImpl extends SpeciesOrBenthosBatchUISupport { } @Override - public Map<String, Object> importMultiPost(File file, FishingOperation operation, SpeciesBatch speciesBatch, boolean importFrequencies, boolean importIndivudalObservations) { + public MultiPostImportResult importMultiPost(File file, FishingOperation operation, SpeciesBatch speciesBatch, boolean importFrequencies, boolean importIndivudalObservations) { return context.getMultiPostImportService().importSpeciesBatch(file, operation, speciesBatch, importFrequencies, importIndivudalObservations); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesOrBenthosBatchUISupport.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesOrBenthosBatchUISupport.java index 79e88e2..d9f2de7 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesOrBenthosBatchUISupport.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesOrBenthosBatchUISupport.java @@ -33,6 +33,7 @@ import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.catches.multipost.MultiPostImportResult; import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; @@ -152,7 +153,7 @@ public abstract class SpeciesOrBenthosBatchUISupport { public abstract Map<String, Object> importMultiPost(File file, FishingOperation operation, boolean importFrequencies, boolean importIndivudalObservations); - public abstract Map<String, Object> importMultiPost(File file, FishingOperation operation, SpeciesBatch speciesBatch, boolean importFrequencies, boolean importIndivudalObservations); + public abstract MultiPostImportResult importMultiPost(File file, FishingOperation operation, SpeciesBatch speciesBatch, boolean importFrequencies, boolean importIndivudalObservations); public abstract void exportMultiPost(File file, FishingOperation operation, boolean importFrequencies, boolean importIndivudalObservations); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java index 7c5dde2..e189ec7 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java @@ -47,12 +47,8 @@ import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchTableModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.SamplingCodeCellRenderer; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.SamplingCodeCellEditor; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.EditSpeciesBatchPanelUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchTableModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.SamplingCodeCellRenderer; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.EditSpeciesBatchPanelUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchRowModel; @@ -852,50 +848,32 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } + frequencyEditor = editor; SpeciesFrequencyUIModel model = getModel(); - model.setInitBatchEdition(true); + model.setNextEditableRowIndex(frequencyEditor.getNextEditableRowIndex()); - try { + List<SpeciesFrequencyRowModel> frequency = speciesBatch.getFrequency(); + List<IndividualObservationBatchRowModel> individualObservations = speciesBatch.getIndividualObservation(); - FrequencyConfigurationMode mode = FrequencyConfigurationMode.FREQUENCIES; - FrequencyConfigurationMode frequenciesMode = FrequencyConfigurationMode.AUTO_GEN; - model.setNextEditableRowIndex(editor.getNextEditableRowIndex()); - model.setTotalNumber(null); - model.setTotalComputedWeight(null); - model.setTotalWeight(null); - model.setSimpleCount(null); + model.setInitBatchEdition(true); + + try { + // keep batch (will be used to push back editing entry) + model.setBatch(speciesBatch); model.setMinStep(null); model.setMaxStep(null); - model.setRtp(null); model.setCopyRtpWeights(false); model.setAddIndividualObservationOnRafale(false); - frequencyEditor = editor; - - Caracteristic lengthStepCaracteristic = null; - CopyIndividualObservationMode copyIndividualObservationMode = null; - - List<SpeciesFrequencyRowModel> rows = new ArrayList<>(); - List<IndividualObservationBatchRowModel> obsRows = new ArrayList<>(); - - Species species = speciesBatch.getSpecies(); - IndividualObservationBatchTableModel obsTableModel = getObsTableModel(); - obsTableModel.setSpecies(species); - String samplingCodeSeparator = getConfig().getSamplingCodeSeparator(); - obsTableModel.setSamplingCodePrefix(getConfig().getSamplingCodePrefix() + samplingCodeSeparator + - decorate(species, DecoratorService.WITH_SURVEY_CODE_NO_NAME) + samplingCodeSeparator); - - model.setTotalWeight(speciesBatch.getWeight()); - Optional<String> speciesMaturityPmfmId = Optional.empty(); // set rtps TuttiProtocol protocol = getDataContext().getProtocol(); if (protocol != null) { - Integer referenceTaxonId = species.getReferenceTaxonId(); + Integer referenceTaxonId = speciesBatch.getSpecies().getReferenceTaxonId(); Optional<SpeciesProtocol> optSpeciesProtocol = protocol.getSpecies().stream() .filter(sp -> sp.getSpeciesReferenceTaxonId().equals(referenceTaxonId)) @@ -919,14 +897,73 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } else { rtp = speciesProtocol.getRtpUndefined(); } - model.setRtp(rtp); + getModel().setRtp(rtp); speciesMaturityPmfmId = Optional.ofNullable(speciesProtocol.getMaturityPmfmId()); } + + } + + // Add maturity column if necessary + + Optional<Caracteristic> maturityCaracteristic = speciesMaturityPmfmId.map(maturityCaracteristics::get); + + setMaturityCaracteristic(maturityCaracteristic); + + loadFrequenciesAndObservations(frequency, individualObservations); + + if (getContext().isIchtyometerConnected()) { + + // let's listen the ichtyometer + listenItchtyometer(); + } - List<SpeciesFrequencyRowModel> frequency = speciesBatch.getFrequency(); - List<IndividualObservationBatchRowModel> individualObservations = speciesBatch.getIndividualObservation(); + individualObservationUICache.init(ui, frequencyEditor.getEditRow(), getDataContext().getFishingOperation()); + + model.setModify(false); + + getContext().addVetoableChangeListener(TuttiUIContext.PROPERTY_SCREEN, changeScreenListener); + + } finally { + model.setInitBatchEdition(false); + //FIXME Voir si c'est nécessaire ? + model.setModify(false); + } + + } + + public void loadFrequenciesAndObservations(List<SpeciesFrequencyRowModel> frequency, List<IndividualObservationBatchRowModel> individualObservations) { + SpeciesFrequencyUIModel model = getModel(); + SpeciesBatchRowModel speciesBatch = model.getBatch(); + + model.setInitBatchEdition(true); + + try { + + FrequencyConfigurationMode mode = FrequencyConfigurationMode.FREQUENCIES; + FrequencyConfigurationMode frequenciesMode = FrequencyConfigurationMode.AUTO_GEN; + + model.setTotalNumber(null); + model.setTotalComputedWeight(null); + model.setTotalWeight(null); + model.setSimpleCount(null); + model.setRtp(null); + + Caracteristic lengthStepCaracteristic = null; + CopyIndividualObservationMode copyIndividualObservationMode = null; + + List<SpeciesFrequencyRowModel> rows = new ArrayList<>(); + List<IndividualObservationBatchRowModel> obsRows = new ArrayList<>(); + + Species species = speciesBatch.getSpecies(); + IndividualObservationBatchTableModel obsTableModel = getObsTableModel(); + obsTableModel.setSpecies(species); + String samplingCodeSeparator = getConfig().getSamplingCodeSeparator(); + obsTableModel.setSamplingCodePrefix(getConfig().getSamplingCodePrefix() + samplingCodeSeparator + + decorate(species, DecoratorService.WITH_SURVEY_CODE_NO_NAME) + samplingCodeSeparator); + + model.setTotalWeight(speciesBatch.getWeight()); // // try to load existing frequency @@ -954,12 +991,6 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } } - // Add maturity column if necessary - - Optional<Caracteristic> maturityCaracteristic = speciesMaturityPmfmId.map(maturityCaracteristics::get); - - setMaturityCaracteristic(maturityCaracteristic); - // // try to load existing individual observations // @@ -987,9 +1018,9 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci newRow.addPropertyChangeListener(obsChangedListener); newRow.setValid(true); - if (maturityCaracteristic.isPresent()) { + if (getObsTableModel().getMaturityCaracteristic().isPresent()) { - Caracteristic caracteristicKey = maturityCaracteristic.get(); + Caracteristic caracteristicKey = getObsTableModel().getMaturityCaracteristic().get(); Serializable caracteristicValue = newRow.getCaracteristics().remove(caracteristicKey); newRow.getDefaultCaracteristics().putIfAbsent(caracteristicKey, caracteristicValue); } @@ -1104,34 +1135,15 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci obsTableModel.setRows(obsRows); model.recomputeIndividualObservationRowsValidateState(); - // keep batch (will be used to push back editing entry) - model.setBatch(speciesBatch); - // let's change the copy mode (mark it in init mode to avoid user change confirmation and some recompuations) model.setCopyIndividualObservationMode(null); model.setCopyIndividualObservationMode(copyIndividualObservationMode); model.computeRowWeightWithRtp(); - if (getContext().isIchtyometerConnected()) { - - // let's listen the ichtyometer - listenItchtyometer(); - - } - - individualObservationUICache.init(ui, frequencyEditor.getEditRow(), getDataContext().getFishingOperation()); - - model.setModify(false); - - getContext().addVetoableChangeListener(TuttiUIContext.PROPERTY_SCREEN, changeScreenListener); - } finally { model.setInitBatchEdition(false); - //FIXME Voir si c'est nécessaire ? - model.setModify(false); } - } public boolean askCancelEditBeforeLeaving() { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java index 5532cad..3b3672c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java @@ -27,8 +27,8 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.protocol.Rtp; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.type.WeightUnit; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.util.computable.ComputableData; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; @@ -776,6 +776,10 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa firePropertyChange(PROPERTY_EMPTY_ROWS, null, emptyRows); } + public boolean isNonEmptyRows() { + return getRowCount() - emptyRows.size() - rowsInError.size() > 0; + } + public int computeTotalNumber() { int result = 0; if (rows != null) { @@ -942,6 +946,10 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa isNonEmptyIndividualObservationRowsInError()); } + public boolean isNonEmptyIndividualObservationRow() { + return individualObservationRows.stream().anyMatch(row -> !row.isEmpty(defaultCaracteristic)); + } + public void recomputeRowsValidateState() { if (log.isInfoEnabled()) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesSupportAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesSupportAction.java index b26f7f4..f608cff 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesSupportAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesSupportAction.java @@ -26,15 +26,16 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; +import fr.ifremer.tutti.service.catches.multipost.MultiPostImportResult; +import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.actions.ImportMultiPostActionSupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyCellComponent; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIModel; +import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; @@ -42,8 +43,6 @@ import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; import javax.swing.JOptionPane; import java.io.File; import java.util.List; -import java.util.Map; -import java.util.Optional; import static org.nuiton.i18n.I18n.t; @@ -51,19 +50,39 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 4.5 */ -public abstract class ImportMultiPostSpeciesSupportAction extends ImportMultiPostActionSupport<SpeciesFrequencyUIModel, SpeciesFrequencyUI, SpeciesFrequencyUIHandler> { +public abstract class ImportMultiPostSpeciesSupportAction extends LongActionSupport<SpeciesFrequencyUIModel, SpeciesFrequencyUI, SpeciesFrequencyUIHandler> { /** Logger. */ private static final Log log = LogFactory.getLog(ImportMultiPostSpeciesSupportAction.class); + /** + * File to import. + */ + private File file; + + /** + * Optional data that were not imported. + */ + private MultiPostImportResult importResult; + protected ImportMultiPostSpeciesSupportAction(SpeciesFrequencyUIHandler handler) { - super(handler); + super(handler, false); } public abstract boolean isImportFrequencies(); public abstract boolean isImportIndivudalObservations(); + protected abstract String getSuccessMessage(File file); + + protected abstract String getFileExtension(); + + protected abstract String getFileExtensionDescription(); + + protected abstract String getFileChooserTitle(); + + protected abstract String getFileChooserButton(); + @Override public boolean prepareAction() throws Exception { boolean doAction = super.prepareAction(); @@ -72,14 +91,15 @@ public abstract class ImportMultiPostSpeciesSupportAction extends ImportMultiPos String message = "<ul>"; boolean ask = false; - if (isImportFrequencies() && getModel().getRowCount() > 0) { + if (isImportFrequencies() && getModel().isNonEmptyRows()) { ask = true; message = "<li>" + t("tutti.askBeforeMultiPostImport.frequencies.message") + "</li>"; } - if (isImportIndivudalObservations() && getModel().getIndividualObservationRows().size() > 0) { + if (isImportIndivudalObservations() && getModel().getIndividualObservationRows().size() > 0 + && getModel().isNonEmptyIndividualObservationRow()) { ask = true; - message += "<li>" + t("tutti.askBeforeMultiPostImport.frequencies.message") + "</li>"; + message += "<li>" + t("tutti.askBeforeMultiPostImport.observations.message") + "</li>"; } message += "</ul>"; @@ -112,8 +132,20 @@ public abstract class ImportMultiPostSpeciesSupportAction extends ImportMultiPos } + } + + if (doAction) { + + // choose file to import + file = chooseFile(getFileChooserTitle(), + getFileChooserButton(), + "^.*\\." + getFileExtension(), + getFileExtensionDescription()); + + doAction = file != null; } + } return doAction; @@ -121,12 +153,14 @@ public abstract class ImportMultiPostSpeciesSupportAction extends ImportMultiPos } @Override - protected final Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { + public final void doAction() throws Exception { + + FishingOperation operation = getDataContext().getFishingOperation(); SpeciesOrBenthosBatchUISupport batchUISupport = getModel().getSpeciesOrBenthosBatchUISupport(); SpeciesBatch speciesBatch = getModel().getBatch().toEntity(); - return batchUISupport.importMultiPost(file, operation, speciesBatch, isImportFrequencies(), isImportIndivudalObservations()); -// return multiPostImportExportService.importSpeciesBatch(file, operation, speciesBatch, isImportFrequencies(), isImportIndivudalObservations()); + + importResult = batchUISupport.importMultiPost(file, operation, speciesBatch, isImportFrequencies(), isImportIndivudalObservations()); } @@ -134,27 +168,36 @@ public abstract class ImportMultiPostSpeciesSupportAction extends ImportMultiPos public final void postSuccessAction() { super.postSuccessAction(); + sendMessage(getSuccessMessage(file)); + SpeciesFrequencyCellComponent.FrequencyCellEditor frequencyEditor = getHandler().getFrequencyEditor(); SpeciesBatchRowModel editRow = frequencyEditor.getEditRow(); Integer speciesBatchId = editRow.getIdAsInt(); - PersistenceService persistenceService = getContext().getPersistenceService(); - List<SpeciesBatchFrequency> frequencies = persistenceService.getAllSpeciesBatchFrequency(speciesBatchId); + List<SpeciesBatchFrequency> frequencies = importResult.getImportedFrequencies(); if (log.isInfoEnabled()) { log.info("[SpeciesBatch: " + speciesBatchId + "] Frequencies: " + frequencies.size()); } - editRow.loadFrequencies(frequencies); - - List<IndividualObservationBatch> individualObservations = persistenceService.getAllIndividualObservationBatchsForBatch(speciesBatchId); - editRow.loadIndividualObservations(getConfig().getIndividualObservationWeightUnit(), - getDataContext().getDefaultIndividualObservationCaracteristics(), - individualObservations); + List<SpeciesFrequencyRowModel> frequencyRows = SpeciesFrequencyRowModel.fromEntity(getModel().getSpeciesOrBenthosBatchUISupport().getWeightUnit(), frequencies); + List<IndividualObservationBatch> individualObservations = importResult.getImportedObservations(); if (log.isInfoEnabled()) { log.info("[SpeciesBatch: " + speciesBatchId + "] Individual Observations: " + individualObservations.size()); } - getHandler().editBatch(frequencyEditor, Optional.empty()); + List<IndividualObservationBatchRowModel> individualObservationRows = IndividualObservationBatchRowModel.fromEntity(getConfig().getIndividualObservationWeightUnit(), + getDataContext().getDefaultIndividualObservationCaracteristics(), + individualObservations); + + getHandler().loadFrequenciesAndObservations(frequencyRows, individualObservationRows); + getModel().setModify(true); } + + @Override + public final void releaseAction() { + file = null; + importResult = null; + super.releaseAction(); + } } diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index 25ddb67..4d28f54 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -49,6 +49,7 @@ tutti.applicationUpdater.updateDone.deleteDirectory.i18n.error= tutti.askBeforeMultiPostImport.frequencies.message= tutti.askBeforeMultiPostImport.help= tutti.askBeforeMultiPostImport.message= +tutti.askBeforeMultiPostImport.observations.message= tutti.askBeforeMultiPostImport.title= tutti.askToCancelEditFrequencies.help= tutti.askToCancelEditFrequencies.message= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index 91916e8..3322d81 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -34,6 +34,7 @@ tutti.askBeforeMultiPostImport.frequencies.message=Des mensurations existent tutti.askBeforeMultiPostImport.help=Que voulez-vous faire ?<ul><li><strong>Annuler l'import</strong> pour annuler l'opération d'import</li><li><strong>Réaliser l'import</strong> pour supprimer les données existantes puis réaliser l'import</li></ul> tutti.askBeforeMultiPostImport.individualObservations.message=Des observations individuelles existent tutti.askBeforeMultiPostImport.message=%s<br/>Elles seront supprimées avant l'import. +tutti.askBeforeMultiPostImport.observations.message=Des observations existent tutti.askBeforeMultiPostImport.title=Des données existent; elles seront supprimées avant l'import \! tutti.askToCancelEditFrequencies.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour rester sur l'écran</li><li><strong>Continuer</strong> pour confirmer la perte des données modifiées et le retour sur l'écran des lots</li></ul> tutti.askToCancelEditFrequencies.message=Des modifications sur les mensurations - observations individuelles ne sont pas enregistrées. -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm