This is an automated email from the git hooks/post-receive script. New commit to branch feature/importBigfin in repository tutti. See http://git.codelutin.com/tutti.git commit 44e4500599da24c67f7d8314b0104fb95883dfd0 Author: Kevin Morin <morin@codelutin.com> Date: Fri Sep 5 18:44:29 2014 +0200 refs #5411 [CAPTURE] Import BIGFIN --- .../tutti/service/bigfin/BigfinDataRow.java | 10 + .../tutti/service/bigfin/BigfinDataRowModel.java | 31 ++- .../tutti/service/bigfin/BigfinImportResult.java | 24 +- .../tutti/service/bigfin/BigfinImportService.java | 289 ++++++++++++++++----- .../fr/ifremer/tutti/service/bigfin/Signs.java | 33 ++- .../service/bigfin/BigfinImportServiceTest.java | 9 +- .../tutti/ui/swing/action/ImportBigfinAction.java | 14 +- 7 files changed, 298 insertions(+), 112 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinDataRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinDataRow.java index 111fe39..09475c1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinDataRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinDataRow.java @@ -20,6 +20,7 @@ public class BigfinDataRow implements Serializable { public static final String PROPERTY_DT = "dt"; public static final String PROPERTY_SZ_CLASS = "szClass"; public static final String PROPERTY_GENDER = "gender"; + public static final String PROPERTY_VRAC_HORS_VRAC = "vracHorsVrac"; protected String recordId; protected float length; @@ -29,6 +30,7 @@ public class BigfinDataRow implements Serializable { protected Date dt; protected Signs szClass; protected Signs gender; + protected Signs vracHorsVrac; public String getRecordId() { return recordId; @@ -93,4 +95,12 @@ public class BigfinDataRow implements Serializable { public void setGender(Signs gender) { this.gender = gender; } + + public Signs getVracHorsVrac() { + return vracHorsVrac; + } + + public void setVracHorsVrac(Signs vracHorsVrac) { + this.vracHorsVrac = vracHorsVrac; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinDataRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinDataRowModel.java index dd592e6..dd94d7c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinDataRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinDataRowModel.java @@ -5,6 +5,7 @@ import com.google.common.collect.ListMultimap; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; +import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId2; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; @@ -57,17 +58,9 @@ public class BigfinDataRowModel extends TuttiCsvUtil.AbstractTuttiImportModel<Bi result = speciesBySurveyCode.get(value); } -// Si on ne trouve pas une espèce de code campagne XXXXXXX, on essaye alors avec le code XXXX-XXX et vice-versa. +// Si on ne trouve pas une espèce de code campagne XXXXXXX, on essaye alors avec le code XXXX-XXX if (result == null) { - String alternativeSpeciesCode = value; - int i = alternativeSpeciesCode.indexOf('-'); - if (i < 0) { - alternativeSpeciesCode = alternativeSpeciesCode.substring(0, 4) + - '-' + alternativeSpeciesCode.substring(4); - - } else { - alternativeSpeciesCode = alternativeSpeciesCode.substring(0, i) + alternativeSpeciesCode.substring(i + 1); - } + String alternativeSpeciesCode = value.substring(0, 4) + '-' + value.substring(4); result = speciesBySurveyCode.get(alternativeSpeciesCode); } // record the code in the found codes @@ -93,7 +86,7 @@ public class BigfinDataRowModel extends TuttiCsvUtil.AbstractTuttiImportModel<Bi new ValueParser<Signs>() { @Override public Signs parse(String value) throws ParseException { - Signs result = Signs.getSign(value.toUpperCase()); + Signs result = Signs.getSign(value.toUpperCase(), PmfmId2.SIZE_CATEGORY.getValue()); return result; } }); @@ -103,7 +96,7 @@ public class BigfinDataRowModel extends TuttiCsvUtil.AbstractTuttiImportModel<Bi new ValueParser<Signs>() { @Override public Signs parse(String value) throws ParseException { - Signs result = Signs.getSign(value.toUpperCase()); + Signs result = Signs.getSign(value.toUpperCase(), PmfmId2.SEX.getValue()); if (result == null) { throw new ParseException("Could not parse Sign value: " + value, 0); } @@ -111,9 +104,21 @@ public class BigfinDataRowModel extends TuttiCsvUtil.AbstractTuttiImportModel<Bi } }); + newMandatoryColumn("text", BigfinDataRow.PROPERTY_VRAC_HORS_VRAC, new ValueParser<Signs>() { + @Override + public Signs parse(String value) throws ParseException { +// On importe dans le Vrac par défaut, sauf si il y a le texte HV ou hv dans le champ text + Signs result = Signs.getSign(value.toUpperCase(), PmfmId2.SORTED_UNSORTED.getValue()); + if (result == null) { + result = Signs.VRAC; + } + return result; + } + }); + + newIgnoredColumn("cruise"); newIgnoredColumn("pan"); - newIgnoredColumn("text"); } @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportResult.java index 287650e..6478e79 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportResult.java @@ -22,7 +22,7 @@ package fr.ifremer.tutti.service.bigfin; * #L% */ -import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.referential.Species; import java.io.File; import java.util.ArrayList; @@ -40,9 +40,11 @@ public class BigfinImportResult { protected final List<String> errors = new ArrayList<>(); - protected int nbSortedImported; + protected int nbVracImported; - protected int nbUnsortedImported; + protected int nbHorsVracImported; + + protected final List<Species> speciesNotInProtocol = new ArrayList<>(); public BigfinImportResult(File importFile) { this.importFile = importFile; @@ -52,12 +54,12 @@ public class BigfinImportResult { return importFile; } - public int getNbSortedImported() { - return nbSortedImported; + public int getNbVracImported() { + return nbVracImported; } - public int getNbUnsortedImported() { - return nbUnsortedImported; + public int getNbHorsVracImported() { + return nbHorsVracImported; } public List<String> getErrors() { @@ -65,19 +67,19 @@ public class BigfinImportResult { } void incrementNbSortedImported() { - this.nbSortedImported++; + this.nbVracImported++; } void incrementNbUnsortedImported() { - this.nbUnsortedImported++; + this.nbHorsVracImported++; } void addError(String error) { errors.add(error); } - void addErrors(List<String> errors) { - this.errors.addAll(errors); + void addSpeciesNotInProtocol(Species species) { + speciesNotInProtocol.add(species); } public boolean isDone() { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportService.java index 7f18157..a8f7683 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportService.java @@ -13,7 +13,9 @@ import com.google.common.collect.Multimaps; import com.google.common.collect.Sets; import com.google.common.io.Files; import fr.ifremer.adagio.core.dao.referential.pmfm.ObjectTypeCode2; +import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm; import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId; +import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId2; import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueId; import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueId2; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -42,11 +44,13 @@ import fr.ifremer.tutti.service.psionimport.PsionImportResult; import fr.ifremer.tutti.util.Weights; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationBusinessException; +import org.nuiton.util.DateUtil; import java.io.File; import java.io.Reader; @@ -76,8 +80,6 @@ public class BigfinImportService extends AbstractTuttiService { protected Map<Signs, CaracteristicQualitativeValue> signsToCaracteristicValue; protected Map<String, SpeciesProtocol> speciesProtocolBySurveyCode; - private CaracteristicQualitativeValue sortedCaracteristic; - @Override public void setServiceContext(TuttiServiceContext context) { @@ -89,8 +91,8 @@ public class BigfinImportService extends AbstractTuttiService { { // sorted/unsorted caracteristic Caracteristic caracteristic = persistenceService.getSortedUnsortedCaracteristic(); - - sortedCaracteristic = CaracteristicQualitativeValues.getQualitativeValue(caracteristic, QualitativeValueId.SORTED_VRAC.getValue()); + Signs.VRAC.registerSign(caracteristic, signsToCaracteristicValue); + Signs.HORS_VRAC.registerSign(caracteristic, signsToCaracteristicValue); } { // size caracteristic @@ -146,10 +148,6 @@ public class BigfinImportService extends AbstractTuttiService { } BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), false); - Set<Species> alreadyUsedSpecies = Sets.newHashSet(); - for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) { - alreadyUsedSpecies.add(speciesBatch.getSpecies()); - } // set of not found species already added in the errors Set<Species> speciesNotRecognized = new HashSet<>(); @@ -176,7 +174,7 @@ public class BigfinImportService extends AbstractTuttiService { Integer station = bean.getStation(); Date dt = bean.getDt(); if (station != null && station.toString().equals(operation.getStationNumber()) - && dt != null && dt.after(operation.getGearShootingStartDate()) && dt.before(operation.getGearShootingEndDate())) { + && dt != null && DateUtils.isSameDay(dt, operation.getGearShootingStartDate())) { if (bean.getSzClass() == null) { String error = t("tutti.service.bigfinImport.error.szClass.unknwon", bean.getRecordId()); @@ -196,23 +194,27 @@ public class BigfinImportService extends AbstractTuttiService { } } else { -// bloquer toute espèce reconnue du protocole mais qui n'a pas de méthode de mesure String code = species.getSurveyCode(); if (code == null) { code = species.getReferenceTaxonId().toString(); } SpeciesProtocol speciesProtocol = speciesProtocolBySurveyCode.get(code); - if (speciesProtocol != null && speciesProtocol.getLengthStepPmfmId() == null + +// On n'importe pas les espèces non présentes dans le protocole et +// on liste les espèces/catégorisées non importées pour aider l'utilisateur +// à identifier le problème et on fait l'import des autres + if (speciesProtocol == null) { + result.addSpeciesNotInProtocol(species); + + } else if (speciesProtocol.getLengthStepPmfmId() == null && speciesInProtocolButWithoutLengthStepPmfmId.add(species)) { +// bloquer toute espèce reconnue du protocole mais qui n'a pas de méthode de mesure String error = t("tutti.service.bigfinImport.error.species.without.lengthstep", code); if (log.isWarnEnabled()) { log.warn(error); } result.addError(error); - } else if (alreadyUsedSpecies.contains(species)) { - // TODO on fait quoi ? - } else { rows.add(bean); } @@ -231,7 +233,19 @@ public class BigfinImportService extends AbstractTuttiService { IOUtils.closeQuietly(reader); } + // if no error if (result.isDone()) { + // get the root batches + List<SpeciesBatch> rootSpeciesBatches = rootSpeciesBatch.getChildren(); + // and separate them by species + Multimap<Species, SpeciesBatch> batchesBySpecies = Multimaps.index(rootSpeciesBatches, new Function<SpeciesBatch, Species>() { + @Override + public Species apply(SpeciesBatch input) { + return input.getSpecies(); + } + }); + + // separate the imported rows by species Multimap<Species, BigfinDataRow> rowsBySpecies = Multimaps.index(rows, new Function<BigfinDataRow, Species>() { @Override public Species apply(BigfinDataRow bigfinDataRow) { @@ -239,65 +253,139 @@ public class BigfinImportService extends AbstractTuttiService { } }); + // for each species imported for (Species species : rowsBySpecies.keySet()) { - SpeciesBatch batch = createSpeciesBatch(species, - operation, - PmfmId.SORTED_UNSORTED.getValue(), - sortedCaracteristic, - null); - // new sorted batch imported - result.incrementNbSortedImported(); - - String code = batch.getSpecies().getSurveyCode(); + // get the speciesprotocol and its lengthstep pmfm + String code = species.getSurveyCode(); if (code == null) { code = species.getReferenceTaxonId().toString(); } SpeciesProtocol speciesProtocol = speciesProtocolBySurveyCode.get(code); Caracteristic lengthStepPmfm = persistenceService.getCaracteristic(Integer.parseInt(speciesProtocol.getLengthStepPmfmId())); + // get the rows whith the current species and separate them by vrac/hors varc Collection<BigfinDataRow> speciesRows = rowsBySpecies.get(species); - Multimap<CaracteristicQualitativeValue, BigfinDataRow> rowsBySize = - Multimaps.index(speciesRows, new Function<BigfinDataRow, CaracteristicQualitativeValue>() { - @Override - public CaracteristicQualitativeValue apply(BigfinDataRow bigfinDataRow) { - CaracteristicQualitativeValue result = signsToCaracteristicValue.get(bigfinDataRow.getSzClass()); - return result; - } - }); - - for (CaracteristicQualitativeValue size : rowsBySize.keySet()) { - - SpeciesBatch sizeBatch = createSpeciesBatch(species, - operation, - PmfmId.SIZE_CATEGORY.getValue(), - size, - batch.getId()); - - Collection<BigfinDataRow> sizeRows = rowsBySize.get(size); - Multimap<CaracteristicQualitativeValue, BigfinDataRow> rowsByGender = - Multimaps.index(sizeRows, new Function<BigfinDataRow, CaracteristicQualitativeValue>() { - @Override - public CaracteristicQualitativeValue apply(BigfinDataRow bigfinDataRow) { - CaracteristicQualitativeValue result = signsToCaracteristicValue.get(bigfinDataRow.getGender()); - return result; - } - }); - - for (CaracteristicQualitativeValue gender : rowsByGender.keySet()) { - Collection<BigfinDataRow> bigfinDataRows = rowsByGender.get(gender); - - SpeciesBatch genderBatch = createSpeciesBatch(species, - operation, - PmfmId.SEX.getValue(), - gender, - sizeBatch.getId()); - - List<SpeciesBatchFrequency> frequencies = createFrequencies(genderBatch, bigfinDataRows, lengthStepPmfm); - persistenceService.saveSpeciesBatchFrequency(genderBatch.getId(), frequencies); - - } - } + Multimap<Signs, BigfinDataRow> rowsByVracHorsVrac = + Multimaps.index(speciesRows, new Function<BigfinDataRow, Signs>() { + @Override + public Signs apply(BigfinDataRow bigfinDataRow) { + Signs result = bigfinDataRow.getVracHorsVrac(); + return result; + } + }); + + //TODO kmorin 20140905 get categories from the conf + Test[] tests = new Test[] { + new Test(PmfmId.SORTED_UNSORTED, + new Function<BigfinDataRow, Signs>() { + @Override + public Signs apply(BigfinDataRow bigfinDataRow) { + Signs result = bigfinDataRow.getSzClass(); + return result; + } + }), + new Test(PmfmId.SIZE_CATEGORY, + new Function<BigfinDataRow, Signs>() { + @Override + public Signs apply(BigfinDataRow bigfinDataRow) { + Signs result = bigfinDataRow.getGender(); + return result; + } + }), + new Test(PmfmId.SEX, null) + }; + + test(operation, species, lengthStepPmfm, null, tests, 0, rowsByVracHorsVrac); +// // get the batches whose species is the current species and separate them by vrac/hors vrac +// Collection<SpeciesBatch> speciesSpeciesBatches = batchesBySpecies.get(species); +// Map<Serializable, SpeciesBatch> batchesByVracHorsVrac = Maps.uniqueIndex(speciesSpeciesBatches, +// new Function<SpeciesBatch, Serializable>() { +// @Override +// public Serializable apply(SpeciesBatch input) { +// return input.getSampleCategoryValue(); +// } +// }); +// +// // for each imported vrac/hors vrac found for the current species +// for (Signs vracHorsVrac : rowsByVracHorsVrac.keySet()) { +// +// // get the batch with the current vrac/hors vrac value +// SpeciesBatch batch = batchesByVracHorsVrac.get(signsToCaracteristicValue.get(vracHorsVrac)); +// // if it does not exists, create the batch +// if (batch == null) { +// batch = createSpeciesBatch(species, +// operation, +// PmfmId.SORTED_UNSORTED.getValue(), +// vracHorsVrac, +// null); +// } else { +// persistenceService.saveSpeciesBatchFrequency(batch.getId(), new ArrayList<SpeciesBatchFrequency>()); +// } +// +// // new vrac or hors vrac batch imported, increment the number +// if (Signs.VRAC.getQualitativeValueId().equals(vracHorsVrac.getQualitativeValueId())) { +// result.incrementNbSortedImported(); +// } else { +// result.incrementNbUnsortedImported(); +// } +// +// // get the imported rows with the current species and vrac / hors vrac and separate them by size +// Collection<BigfinDataRow> vracHorsVracRows = rowsByVracHorsVrac.get(vracHorsVrac); +// Multimap<Signs, BigfinDataRow> rowsBySize = +// Multimaps.index(vracHorsVracRows, new Function<BigfinDataRow, Signs>() { +// @Override +// public Signs apply(BigfinDataRow bigfinDataRow) { +// Signs result = bigfinDataRow.getSzClass(); +// return result; +// } +// }); +// +// // get the children of the current batch and separate them by size +// List<SpeciesBatch> vracHorsVracBatchChildren = batch.getChildBatchs(); +// Map<Serializable, SpeciesBatch> batchesBySize = new HashMap<>(); +// if (vracHorsVracBatchChildren != null) { +// batchesBySize.putAll(Maps.uniqueIndex(vracHorsVracBatchChildren, +// new Function<SpeciesBatch, Serializable>() { +// @Override +// public Serializable apply(SpeciesBatch input) { +// return input.getSampleCategoryValue(); +// } +// })); +// } +// +// // for each imported size found for the current species and vrac / hors vrac +// for (Signs size : rowsBySize.keySet()) { +// +// // get the batch with the size +// SpeciesBatch sizeBatch = batchesBySize.get(signsToCaracteristicValue.get(size)); +// // if it does not exists, create the batch +// if (sizeBatch == null) { +// sizeBatch = createSpeciesBatch(species, +// operation, +// PmfmId.SIZE_CATEGORY.getValue(), +// size, +// batch.getId()); +// } else { +// persistenceService.saveSpeciesBatchFrequency(sizeBatch.getId(), new ArrayList<SpeciesBatchFrequency>()); +// } +// +// // get the imported rows with the current species and vrac / hors vrac and size +// // and separate them by gender +// Collection<BigfinDataRow> sizeRows = rowsBySize.get(size); +// Multimap<Signs, BigfinDataRow> rowsByGender = +// Multimaps.index(sizeRows, new Function<BigfinDataRow, Signs>() { +// @Override +// public Signs apply(BigfinDataRow bigfinDataRow) { +// Signs result = bigfinDataRow.getGender(); +// return result; +// } +// }); +// test(operation, species, lengthStepPmfm, sizeBatch, PmfmId2.SEX, rowsByGender, true); +// +// +// } +// } } addFileAsAttachment(bigfinFile, catchBatch); @@ -306,24 +394,79 @@ public class BigfinImportService extends AbstractTuttiService { return result; } + //TODO kmorin 20140905 check why data are not overriden + protected void test(FishingOperation operation, + Species species, + Caracteristic lengthStepPmfm, + SpeciesBatch parentBatch, + Test[] tests, + int depth, + Multimap<Signs, BigfinDataRow> rowsByCaracteristic) { + + // get the children of the current batch and separate them by gender + List<SpeciesBatch> batchChildren = parentBatch != null ? parentBatch.getChildBatchs() : null; + Map<Serializable, SpeciesBatch> batchesByCaracteristic = new HashMap<>(); + if (batchChildren != null) { + batchesByCaracteristic.putAll(Maps.uniqueIndex(batchChildren, + new Function<SpeciesBatch, Serializable>() { + @Override + public Serializable apply(SpeciesBatch input) { + return input.getSampleCategoryValue(); + } + })); + } + + Test test = tests[depth++]; + + for (Signs caracteristic : rowsByCaracteristic.keySet()) { + Collection<BigfinDataRow> bigfinDataRows = rowsByCaracteristic.get(caracteristic); + + // get the batch with the gender + SpeciesBatch batch = batchesByCaracteristic.get(signsToCaracteristicValue.get(caracteristic)); + // if it does not exists, create the batch + if (batch == null) { + batch = createSpeciesBatch(species, + operation, + test.pmfmId.getValue(), + caracteristic, + parentBatch != null ? parentBatch.getId() : null); + } + + if (test.function != null) { + Multimap<Signs, BigfinDataRow> rowsByNewCaracteristic = + Multimaps.index(bigfinDataRows, test.function); + + test(operation, species, lengthStepPmfm, batch, tests, depth, rowsByNewCaracteristic); + + } else { + List<SpeciesBatchFrequency> frequencies = createFrequencies(batch, bigfinDataRows, lengthStepPmfm); + persistenceService.saveSpeciesBatchFrequency(batch.getId(), frequencies); + } + + } + } + protected SpeciesBatch createSpeciesBatch(Species species, FishingOperation operation, Integer categoryId, - Serializable categoryValue, + Signs signs, String parentBatchId) { + + Preconditions.checkArgument(signs.getCategory().equals(categoryId)); + SpeciesBatch batch = SpeciesBatchs.newSpeciesBatch(); batch.setSpecies(species); batch.setFishingOperation(operation); - //TODO check in text if hv + batch.setSampleCategoryId(categoryId); - batch.setSampleCategoryValue(categoryValue); + batch.setSampleCategoryValue(signsToCaracteristicValue.get(signs)); batch = persistenceService.createSpeciesBatch(batch, parentBatchId); return batch; } protected List<SpeciesBatchFrequency> createFrequencies(SpeciesBatch batch, Collection<BigfinDataRow> rows, Caracteristic lengthStepPmfm) { - //TODO on fait quoi si lengthStepPmfm est nul? + Preconditions.checkNotNull(lengthStepPmfm); String unit = lengthStepPmfm.getUnit(); Float precision = lengthStepPmfm.getPrecision(); if (precision == null) { @@ -387,4 +530,14 @@ public class BigfinImportService extends AbstractTuttiService { attachment.setComment(comment); persistenceService.createAttachment(attachment, f); } + + protected class Test { + PmfmId pmfmId; + Function<BigfinDataRow, Signs> function; + + public Test(PmfmId pmfmId, Function<BigfinDataRow, Signs> function) { + this.pmfmId = pmfmId; + this.function = function; + } + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/Signs.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/Signs.java index 524884d..169a14d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/Signs.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/Signs.java @@ -48,7 +48,7 @@ public enum Signs { @Override public Integer getQualitativeValueId() { - return QualitativeValueId2.SEX_UNDEFINED.getValue(); + return QualitativeValueId.NON_SEXED_SEX.getValue(); } }, MALE("M") { @@ -107,6 +107,30 @@ public enum Signs { public Integer getQualitativeValueId() { return QualitativeValueId.SIZE_BIG.getValue(); } + }, + + // vrac / hors vrac + VRAC("") { + @Override + public Integer getCategory() { + return PmfmId2.SORTED_UNSORTED.getValue(); + } + + @Override + public Integer getQualitativeValueId() { + return QualitativeValueId.SORTED_VRAC.getValue(); + } + }, + HORS_VRAC("HV") { + @Override + public Integer getCategory() { + return PmfmId2.SORTED_UNSORTED.getValue(); + } + + @Override + public Integer getQualitativeValueId() { + return QualitativeValueId.SORTED_HORS_VRAC.getValue(); + } }; private String sign; @@ -120,9 +144,14 @@ public enum Signs { } public static Signs getSign(String sign) { + Signs result = getSign(sign, null); + return result; + } + public static Signs getSign(String sign, Integer categoryId) { Signs result = null; for (Signs s : values()) { - if (s.sign.equals(sign)) { + if (s.sign.equals(sign) && + (categoryId == null || s.getCategory().equals(categoryId))) { result = s; break; } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/bigfin/BigfinImportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/bigfin/BigfinImportServiceTest.java index 5db965b..5846a42 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/bigfin/BigfinImportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/bigfin/BigfinImportServiceTest.java @@ -14,7 +14,6 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.ServiceDbResource; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.psionimport.PsionImportService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; @@ -100,8 +99,8 @@ public class BigfinImportServiceTest { BigfinImportResult importResult = service.importFile(importFile, operation, catchBatch); - int nbSortedAdded = importResult.getNbSortedImported(); - int nbUnsortedAdded = importResult.getNbUnsortedImported(); + int nbSortedAdded = importResult.getNbVracImported(); + int nbUnsortedAdded = importResult.getNbHorsVracImported(); List<String> errors = importResult.getErrors(); if (log.isInfoEnabled()) { @@ -152,8 +151,8 @@ public class BigfinImportServiceTest { BigfinImportResult importResult = service.importFile(importFile, operation, catchBatch); - int nbSortedAdded = importResult.getNbSortedImported(); - int nbUnsortedAdded = importResult.getNbUnsortedImported(); + int nbSortedAdded = importResult.getNbVracImported(); + int nbUnsortedAdded = importResult.getNbHorsVracImported(); List<String> errors = importResult.getErrors(); if (log.isInfoEnabled()) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportBigfinAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportBigfinAction.java index 729da55..e615f14 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportBigfinAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportBigfinAction.java @@ -22,31 +22,19 @@ package fr.ifremer.tutti.ui.swing.action; * #L% */ -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId2; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.bigfin.BigfinImportResult; import fr.ifremer.tutti.service.bigfin.BigfinImportService; -import fr.ifremer.tutti.service.psionimport.PsionImportResult; -import fr.ifremer.tutti.service.psionimport.PsionImportService; -import fr.ifremer.tutti.service.pupitri.PupitriImportExportService; -import fr.ifremer.tutti.service.pupitri.PupitriImportResult; import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.ImportPupitriPopupUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel; -import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; -import javax.swing.*; import java.io.File; -import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -128,7 +116,7 @@ public class ImportBigfinAction extends AbstractTuttiAction<SpeciesBatchUIModel, if (importResult.isDone()) { sendMessage(t("tutti.editSpeciesBatch.action.importBigfin.success", - importResult.getNbSortedImported(), importResult.getNbUnsortedImported())); + importResult.getNbVracImported(), importResult.getNbHorsVracImported())); } else { StringBuilder sb = new StringBuilder(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.