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 b47cae501bf387d83584fe6c434adb2bbcf79b2b Author: Kevin Morin <morin@codelutin.com> Date: Tue Sep 30 22:44:32 2014 +0200 fixes #5879 [IMPORT BIGFIN] plusieurs anomalies --- .../tutti/service/bigfin/BigfinDataRow.java | 6 +- .../tutti/service/bigfin/BigfinDataRowModel.java | 2 +- .../tutti/service/bigfin/BigfinImportService.java | 97 ++++++++++++---------- .../resources/i18n/tutti-service_en_GB.properties | 1 + .../resources/i18n/tutti-service_fr_FR.properties | 2 +- 5 files changed, 59 insertions(+), 49 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 aa9b43f..2d94226 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 @@ -50,7 +50,7 @@ public class BigfinDataRow implements Serializable { protected float length; protected Float weight; protected Species species; - protected Integer station; + protected String station; protected Date dt; protected Signs szClass; protected Signs gender; @@ -88,11 +88,11 @@ public class BigfinDataRow implements Serializable { this.species = species; } - public Integer getStation() { + public String getStation() { return station; } - public void setStation(Integer station) { + public void setStation(String station) { this.station = station; } 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 cc118dd..d3527a4 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 @@ -101,7 +101,7 @@ public class BigfinDataRowModel extends TuttiCsvUtil.AbstractTuttiImportModel<Bi }); // n° de la station (non importé mais utile pour contrôle à l'import) - newMandatoryColumn("station", BigfinDataRow.PROPERTY_STATION, Common.INTEGER); + newMandatoryColumn("station", BigfinDataRow.PROPERTY_STATION); // date et heure de l'enregistrement (non importé mais utile pour contrôle à l'import) newMandatoryColumn("Dt", BigfinDataRow.PROPERTY_DT, new Common.DateValue("MM/dd/yy HH:mm")); 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 3e2a6b1..6921500 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 @@ -187,9 +187,9 @@ public class BigfinImportService extends AbstractTuttiService { // check if the station is the one of the operation // and do not check again a species that has not been recognized before - Integer station = bean.getStation(); + String station = bean.getStation(); Date dt = bean.getDt(); - if (station != null && station.toString().equals(operation.getStationNumber()) + if (station != null && station.equals(operation.getStationNumber()) && dt != null && DateUtils.isSameDay(dt, operation.getGearShootingStartDate())) { if (bean.getSzClass() == null) { @@ -280,6 +280,43 @@ public class BigfinImportService extends AbstractTuttiService { } }); + SampleCategoryModel sampleCategoryModel = context.getSampleCategoryModel(); + List<Integer> samplingOrder = sampleCategoryModel.getSamplingOrder(); + + List<Integer> pmfmIds = new ArrayList<>(); + pmfmIds.add(PmfmId.SORTED_UNSORTED.getValue()); + List<Function<BigfinDataRow, Signs>> functions = new ArrayList<>(); + + // put the size and order in the right order + for (Integer categoryId: samplingOrder) { + if (PmfmId.SIZE_CATEGORY.getValue().equals(categoryId)) { + pmfmIds.add(categoryId); + functions.add(new Function<BigfinDataRow, Signs>() { + @Override + public Signs apply(BigfinDataRow bigfinDataRow) { + Signs result = bigfinDataRow.getSzClass(); + return result; + } + }); + + } else if (PmfmId.SEX.getValue().equals(categoryId)) { + pmfmIds.add(categoryId); + functions.add(new Function<BigfinDataRow, Signs>() { + @Override + public Signs apply(BigfinDataRow bigfinDataRow) { + Signs result = bigfinDataRow.getGender(); + return result; + } + }); + } + } + + List<Category> categories = new ArrayList<>(); + for (int i = 0 ; i < pmfmIds.size() ; i++) { + Category category = new Category(pmfmIds.get(i), i < functions.size() ? functions.get(i) : null); + categories.add(category); + } + // for each species imported for (Species species : rowsBySpecies.keySet()) { @@ -302,43 +339,6 @@ public class BigfinImportService extends AbstractTuttiService { } }); - SampleCategoryModel sampleCategoryModel = context.getSampleCategoryModel(); - List<Integer> samplingOrder = sampleCategoryModel.getSamplingOrder(); - - List<Integer> pmfmIds = new ArrayList<>(); - pmfmIds.add(PmfmId.SORTED_UNSORTED.getValue()); - List<Function<BigfinDataRow, Signs>> functions = new ArrayList<>(); - - // put the size and order in the right order - for (Integer categoryId: samplingOrder) { - if (PmfmId.SIZE_CATEGORY.getValue().equals(categoryId)) { - pmfmIds.add(categoryId); - functions.add(new Function<BigfinDataRow, Signs>() { - @Override - public Signs apply(BigfinDataRow bigfinDataRow) { - Signs result = bigfinDataRow.getSzClass(); - return result; - } - }); - - } else if (PmfmId.SEX.getValue().equals(categoryId)) { - pmfmIds.add(categoryId); - functions.add(new Function<BigfinDataRow, Signs>() { - @Override - public Signs apply(BigfinDataRow bigfinDataRow) { - Signs result = bigfinDataRow.getGender(); - return result; - } - }); - } - } - - List<Category> categories = new ArrayList<>(); - for (int i = 0 ; i < pmfmIds.size() ; i++) { - Category category = new Category(pmfmIds.get(i), i < functions.size() ? functions.get(i) : null); - categories.add(category); - } - Collection<SpeciesBatch> speciesBatches = batchesBySpecies.get(species); Map<Serializable, SpeciesBatch> speciesBatchByVracHorsVrac = Maps.uniqueIndex(speciesBatches, SpeciesBatchs.GET_SAMPLE_CATEGORY_VALUE); @@ -380,11 +380,16 @@ public class BigfinImportService extends AbstractTuttiService { // if it does not exists, create the batch if (batch == null) { - batch = createSpeciesBatch(commonParameter.getSpecies(), - commonParameter.getOperation(), - category.getPmfmId(), - caracteristic, - parentBatch != null ? parentBatch.getId() : null); + if (caracteristic.isNullEquivalent()) { + batch = parentBatch; + + } else { + batch = createSpeciesBatch(commonParameter.getSpecies(), + commonParameter.getOperation(), + category.getPmfmId(), + caracteristic, + parentBatch != null ? parentBatch.getId() : null); + } } else { List<SpeciesBatchFrequency> frequencies = persistenceService.getAllSpeciesBatchFrequency(batch.getId()); @@ -404,9 +409,13 @@ public class BigfinImportService extends AbstractTuttiService { // create the frequencies Integer deletedNb = persistenceService.countFrequenciesNumber( persistenceService.getAllSpeciesBatchFrequency(batch.getId()), false); + List<SpeciesBatchFrequency> frequencies = createFrequencies(batch, bigfinDataRows, commonParameter.getLengthStepPmfm()); + persistenceService.saveSpeciesBatchFrequency(batch.getId(), frequencies); + commonParameter.getResult().incrementNbFrequenciesDeleted(deletedNb != null ? deletedNb : 0); + Integer importedNb = persistenceService.countFrequenciesNumber(frequencies, false); commonParameter.getResult().incrementNbFrequenciesImported(importedNb != null ? importedNb : 0); } diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index d686b05..bbb970e 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -1,6 +1,7 @@ tutti.error.benthos.not.in.protocol= tutti.error.species.not.in.protocol= tutti.io.mkDir.error= +tutti.pdf.export.missing.species.code= tutti.property.attachment= tutti.property.caracteristic= tutti.property.country= diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index dd2ceb6..a870c3c 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -1,4 +1,5 @@ tutti.io.mkDir.error=Erreur à la création du dossier %s +tutti.pdf.export.missing.species.code=Une espèce (referenceId %s, nom scientifique %s) n'a ni code campagne, ni code refTax. tutti.property.attachment=Pièce jointe tutti.property.caracteristic=Caractéristique tutti.property.country=Pays @@ -11,7 +12,6 @@ tutti.property.fishingOperationLocation=Lieu tutti.property.fishingOperationNumber=Numéro de trait tutti.property.fractionName=Fraction tutti.property.gear=Engin -tutti.pdf.export.missing.species.code=Une espèce (referenceId %s, nom scientifique %s) n'a ni code campagne, ni code refTax. tutti.property.gearShootingStartDate=Date de début de traîne tutti.property.genusSpecies=Nom scientifique tutti.property.internationalRegistrationCode=Immatriculation internationale (ou nationale si non trouvée) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.