Tutti-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- 4058 discussions
r1764 - in branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/export: generic sumatra
by tchemit@users.forge.codelutin.com 14 May '14
by tchemit@users.forge.codelutin.com 14 May '14
14 May '14
Author: tchemit
Date: 2014-05-14 14:27:19 +0200 (Wed, 14 May 2014)
New Revision: 1764
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1764
Log:
fix some tests
Modified:
branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java
branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportServiceV2Test.java
Modified: branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java 2014-05-14 12:03:51 UTC (rev 1763)
+++ branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/export/generic/TuttiExportService2Test.java 2014-05-14 12:27:19 UTC (rev 1764)
@@ -196,8 +196,8 @@
"2013;test elevation;1;OTB 20/28.10;B;2;1;1358;;Alosa alosa;Trait B-2-1 ALOSALO Vrac|Trait B-2-1 ALOSALO Vrac - Male 60;Vrac;2;;;Poids;kg;NA;;;;;kg;Mâle;1;60.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;60.0;5.8333335;1.0\n" +
"2013;test elevation;1;OTB 20/28.10;B;2;1;1358;;Alosa alosa;Trait B-2-1 ALOSALO Vrac|Trait B-2-1 ALOSALO Vrac - Femelle 40.0;Vrac;2;;;Poids;kg;NA;;;;;kg;Femelle;2;40.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;40.0;8.75;1.0\n" +
"2013;test elevation;1;OTB 20/28.10;B;2;1;1938;;Agonus cataphractus;Trait B-2-1 AGONCAT-horsvrac 20;Hors Vrac;1;20.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;20.0;1.0;1.0\n" +
- "2013;test elevation;1;OTB 20/28.10;B;2;1;4622;;Abietinaria abietina;Trait B-2-1 Benthos ABIEABI Vrac 30@@@@avec @@@@commentaire...;Vrac;1;30.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;30.0;7.0;1.0\n" +
- "2013;test elevation;1;OTB 20/28.10;B;2;1;380;;Acanthocardia echinata;Trait B-2-1 Benthos ACANECH Vrac 18@@@@avec @@@@commentaire...;Vrac;2;18.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;18.0;7.0;1.0\n" +
+ "2013;test elevation;1;OTB 20/28.10;B;2;1;4622;;Abietinaria abietina;Trait B-2-1 Benthos ABIEABI Vrac 30@@@@avec @@@@commentaire...;Vrac;101;30.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;30.0;7.0;1.0\n" +
+ "2013;test elevation;1;OTB 20/28.10;B;2;1;380;;Acanthocardia echinata;Trait B-2-1 Benthos ACANECH Vrac 18@@@@avec @@@@commentaire...;Vrac;102;18.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;18.0;7.0;1.0\n" +
"2013;test elevation;1;OTB 20/28.10;A;1;1;1938;;Agonus cataphractus;AGONCAT-vrac-80;Vrac;1;80.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;80.0;5.4444447;1.0\n" +
"2013;test elevation;1;OTB 20/28.10;A;1;1;1358;;Alosa alosa;ALOSALO-vrac|ALOSALO-vrac-male 60;Vrac;2;;;Poids;kg;NA;;;;;kg;Mâle;1;60.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;;;;;;;;;60.0;9.074075;1.0\n" +
"2013;test elevation;1;OTB 20/28.10;A;1;1;1358;;Alosa alosa;ALOSALO-vrac|ALOSALO-vrac-femelle 40;Vrac;2;;;Poids;kg;NA;;;;;kg;Femelle;2;40.0;;Poids;kg;NA;;;;;kg;NA;;;;;kg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;5.0;1;0.6;cm;1.0;4;0.6;907.4074;1.0\n" +
Modified: branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportServiceV2Test.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportServiceV2Test.java 2014-05-14 12:03:51 UTC (rev 1763)
+++ branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportServiceV2Test.java 2014-05-14 12:27:19 UTC (rev 1764)
@@ -64,7 +64,7 @@
"Année;Station;Poche;Espèce;Signe;Tri;Total;PoidsMoy;LongueurMoy;NbIndividus;Moule\n" +
"2013;A;1;CHAMMAG;;100.0;100.0;2.5;NA;40;0.4\n" +
"2013;A;1;ECHIGAM;;100.0;100.0;0.23980816;NA;417;4.17\n" +
- "2013;A;1;BRISATLAN;;100.0;100.0;1.0638298;NA;94;0.94";
+ "2013;A;1;BRISATLAN;;100.0;100.0;1.0638298;10.571428;94;0.94";
protected CatchesSumatraExportServiceV2 service;
1
0
r1763 - in branches/tutti-3.4.x/tutti-service/src: main/java/fr/ifremer/tutti/service/pupitri test/java/fr/ifremer/tutti/service/pupitri test/resources/pupitri
by tchemit@users.forge.codelutin.com 14 May '14
by tchemit@users.forge.codelutin.com 14 May '14
14 May '14
Author: tchemit
Date: 2014-05-14 14:03:51 +0200 (Wed, 14 May 2014)
New Revision: 1763
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1763
Log:
fixes #5062 [PUPITRI] Gestion du m?\195?\169lange
Added:
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/Signs.java
branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5062Test.java
branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5062.car
branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5062.tnk
branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5062.tuttiProtocol
Modified:
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRowModel.java
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportResult.java
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java 2014-05-13 20:52:44 UTC (rev 1762)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java 2014-05-14 12:03:51 UTC (rev 1763)
@@ -66,7 +66,7 @@
protected String speciesId;
- protected String sign;
+ protected Signs sign;
protected Directions direction;
@@ -101,11 +101,11 @@
this.speciesId = speciesId;
}
- public String getSign() {
+ public Signs getSign() {
return sign;
}
- public void setSign(String sign) {
+ public void setSign(Signs sign) {
this.sign = sign;
}
@@ -127,7 +127,7 @@
public boolean isSorted() {
- boolean sorted = Directions.VAT == direction && !"H".equals(sign);
+ boolean sorted = Directions.VAT == direction && !Signs.UNSORTED.equals(sign);
return sorted;
}
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRowModel.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRowModel.java 2014-05-13 20:52:44 UTC (rev 1762)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRowModel.java 2014-05-14 12:03:51 UTC (rev 1763)
@@ -25,7 +25,10 @@
*/
import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.nuiton.csv.ValueParser;
+import java.text.ParseException;
+
/**
* @author kmorin <kmorin(a)codelutin.com>
* @since 1.2
@@ -38,7 +41,18 @@
newMandatoryColumn(CarrouselRow.PROPERTY_OPERATION_CODE);
newMandatoryColumn(CarrouselRow.PROPERTY_RIG_NUMBER);
newMandatoryColumn(CarrouselRow.PROPERTY_SPECIES_ID);
- newMandatoryColumn(CarrouselRow.PROPERTY_SIGN);
+ newMandatoryColumn(CarrouselRow.PROPERTY_SIGN,
+ new ValueParser<Signs>() {
+ @Override
+ public Signs parse(String value) throws ParseException {
+ Signs result = Signs.getSign(value.toUpperCase());
+ if (result == null) {
+ throw new ParseException("Could not parse Sign value: " + value, 0);
+ }
+ return result;
+ }
+ }
+ );
newMandatoryColumn(CarrouselRow.PROPERTY_DIRECTION,
TuttiCsvUtil.newEnumByNameParserFormatter(Directions.class));
newMandatoryColumn(CarrouselRow.PROPERTY_WEIGHT,
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java 2014-05-13 20:52:44 UTC (rev 1762)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java 2014-05-14 12:03:51 UTC (rev 1763)
@@ -25,11 +25,7 @@
*/
import com.google.common.collect.Maps;
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.persistence.service.TuttiEnumerationFile;
import org.apache.commons.lang3.mutable.MutableFloat;
import java.io.Serializable;
@@ -43,117 +39,8 @@
private static final long serialVersionUID = 1L;
- public static enum Signs {
- DEFAULT("0") {
- @Override
- public Integer getCategory(TuttiEnumerationFile enumerationFile) {
- return enumerationFile.PMFM_ID_SEX;
- }
+ public static final String MELAG_META_SPECIES = "MELA-NGE";
- @Override
- public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
- return enumerationFile.QUALITATIVE_SEX_UNDEFINED_ID;
- }
- },
- UNSORTED("H") {
- @Override
- public Integer getCategory(TuttiEnumerationFile enumerationFile) {
- // special case, there is no cateogry possible here
- return null;
- }
-
- @Override
- public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
- // special case, there is no cateogry possible here
- return null;
- }
- },
- MALE("1") {
- @Override
- public Integer getCategory(TuttiEnumerationFile enumerationFile) {
- return enumerationFile.PMFM_ID_SEX;
- }
-
- @Override
- public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
- return enumerationFile.QUALITATIVE_SEX_MALE_ID;
- }
- },
- FEMALE("2") {
- @Override
- public Integer getCategory(TuttiEnumerationFile enumerationFile) {
- return enumerationFile.PMFM_ID_SEX;
- }
-
- @Override
- public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
- return enumerationFile.QUALITATIVE_SEX_FEMALE_ID;
- }
- },
- SMALL("P") {
- @Override
- public Integer getCategory(TuttiEnumerationFile enumerationFile) {
- return enumerationFile.PMFM_ID_SIZE_CATEGORY;
- }
-
- @Override
- public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
- return enumerationFile.QUALITATIVE_SIZE_SMALL_ID;
- }
- },
- MEDIUM("M") {
- @Override
- public Integer getCategory(TuttiEnumerationFile enumerationFile) {
- return enumerationFile.PMFM_ID_SIZE_CATEGORY;
- }
-
- @Override
- public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
- return enumerationFile.QUALITATIVE_SIZE_MEDIUM_ID;
- }
- },
- BIG("G") {
- @Override
- public Integer getCategory(TuttiEnumerationFile enumerationFile) {
- return enumerationFile.PMFM_ID_SIZE_CATEGORY;
- }
-
- @Override
- public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
- return enumerationFile.QUALITATIVE_SIZE_BIG_ID;
- }
- };
-
- private String sign;
-
- Signs(String sign) {
- this.sign = sign;
- }
-
- public static Signs getSign(String sign) {
- Signs result = null;
- for (Signs s : values()) {
- if (s.sign.equals(sign)) {
- result = s;
- break;
- }
- }
- return result;
- }
-
- public abstract Integer getCategory(TuttiEnumerationFile enumerationFile);
-
- public abstract Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile);
-
- public void registerSign(TuttiEnumerationFile enumerationFile,
- Caracteristic caracteristic,
- Map<Signs, CaracteristicQualitativeValue> map) {
- Integer valueId = getQualitativeValueId(enumerationFile);
- CaracteristicQualitativeValue result = TuttiEntities.getQualitativeValue(caracteristic, valueId);
- map.put(this, result);
- }
- }
-
protected Species species;
protected boolean sorted;
@@ -173,20 +60,41 @@
return sorted;
}
+ public boolean isForMelag() {
+ return weightBySign.containsKey(Signs.MELAG);
+ }
+
+ public boolean isMelagMetaSpecies() {
+
+ boolean melagMetaSpecies = MELAG_META_SPECIES.equals(species.getSurveyCode());
+ return melagMetaSpecies;
+
+ }
+
+ public Float getWeight(Signs signs) {
+
+ MutableFloat mutableFloat = weightBySign.get(signs);
+ return mutableFloat == null ? null : mutableFloat.floatValue();
+
+ }
+
public Map<Signs, MutableFloat> getWeightBySign() {
return weightBySign;
}
- public void addToSign(String sign, Float weight) {
- Signs s = Signs.getSign(sign);
- MutableFloat f = weightBySign.get(s);
+ public void addToSign(Signs sign, Float weight) {
+ MutableFloat f = weightBySign.get(sign);
if (f == null) {
f = new MutableFloat();
- weightBySign.put(s, f);
+ weightBySign.put(sign, f);
}
f.add(weight);
}
+ public void removeSign(Signs sign) {
+ weightBySign.remove(sign);
+ }
+
@Override
public int hashCode() {
int speciesHashCode = species != null ? species.hashCode() : 0;
@@ -211,5 +119,4 @@
}
return true;
}
-
}
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java 2014-05-13 20:52:44 UTC (rev 1762)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java 2014-05-14 12:03:51 UTC (rev 1763)
@@ -95,7 +95,7 @@
protected CaracteristicQualitativeValue unsortedCaracteristic;
- protected Map<PupitriCatch.Signs, CaracteristicQualitativeValue> signsToCaracteristicValue;
+ protected Map<Signs, CaracteristicQualitativeValue> signsToCaracteristicValue;
@Override
public void setServiceContext(TuttiServiceContext context) {
@@ -107,7 +107,7 @@
TuttiEnumerationFile enumerationFile =
persistenceService.getEnumerationFile();
- signsToCaracteristicValue = Maps.newEnumMap(PupitriCatch.Signs.class);
+ signsToCaracteristicValue = Maps.newEnumMap(Signs.class);
{ // sorted/unsorted caracteristic
Caracteristic caracteristic =
@@ -120,16 +120,16 @@
{ // sex category
Caracteristic caracteristic = persistenceService.getSexCaracteristic();
- PupitriCatch.Signs.DEFAULT.registerSign(enumerationFile, caracteristic, signsToCaracteristicValue);
- PupitriCatch.Signs.FEMALE.registerSign(enumerationFile, caracteristic, signsToCaracteristicValue);
- PupitriCatch.Signs.MALE.registerSign(enumerationFile, caracteristic, signsToCaracteristicValue);
+ Signs.DEFAULT.registerSign(enumerationFile, caracteristic, signsToCaracteristicValue);
+ Signs.FEMALE.registerSign(enumerationFile, caracteristic, signsToCaracteristicValue);
+ Signs.MALE.registerSign(enumerationFile, caracteristic, signsToCaracteristicValue);
}
{ // size category
Caracteristic caracteristic = persistenceService.getSizeCategoryCaracteristic();
- PupitriCatch.Signs.SMALL.registerSign(enumerationFile, caracteristic, signsToCaracteristicValue);
- PupitriCatch.Signs.MEDIUM.registerSign(enumerationFile, caracteristic, signsToCaracteristicValue);
- PupitriCatch.Signs.BIG.registerSign(enumerationFile, caracteristic, signsToCaracteristicValue);
+ Signs.SMALL.registerSign(enumerationFile, caracteristic, signsToCaracteristicValue);
+ Signs.MEDIUM.registerSign(enumerationFile, caracteristic, signsToCaracteristicValue);
+ Signs.BIG.registerSign(enumerationFile, caracteristic, signsToCaracteristicValue);
}
}
@@ -155,6 +155,9 @@
// there is some matching rows to import
+ result.prepareMelag();
+
+
savePupitriImportResult(result, operation, catchBatch);
}
@@ -411,7 +414,7 @@
boolean splitSpecies = isSplitSpecies(pupitriCatch);
- Map<PupitriCatch.Signs, MutableFloat> weightBySign =
+ Map<Signs, MutableFloat> weightBySign =
pupitriCatch.getWeightBySign();
if (splitSpecies) {
@@ -430,9 +433,9 @@
String parentBatchId = batch.getId();
- for (Map.Entry<PupitriCatch.Signs, MutableFloat> entry : weightBySign.entrySet()) {
+ for (Map.Entry<Signs, MutableFloat> entry : weightBySign.entrySet()) {
- PupitriCatch.Signs signs = entry.getKey();
+ Signs signs = entry.getKey();
float catchWeight = entry.getValue().floatValue();
Integer categoryId = signs.getCategory(enumerationFile);
@@ -473,24 +476,24 @@
persistenceService.saveCatchBatch(catchBatch);
}
- public static final Set<PupitriCatch.Signs> DEFAULT_SIGNS = Sets.newHashSet(
- PupitriCatch.Signs.DEFAULT
+ public static final Set<Signs> DEFAULT_SIGNS = Sets.newHashSet(
+ Signs.DEFAULT
);
- public static final Set<PupitriCatch.Signs> UNSORTED_SIGNS = Sets.newHashSet(
- PupitriCatch.Signs.UNSORTED
+ public static final Set<Signs> UNSORTED_SIGNS = Sets.newHashSet(
+ Signs.UNSORTED
);
- public static final Set<PupitriCatch.Signs> SEX_SIGNS = Sets.newHashSet(
- PupitriCatch.Signs.DEFAULT,
- PupitriCatch.Signs.MALE,
- PupitriCatch.Signs.FEMALE
+ public static final Set<Signs> SEX_SIGNS = Sets.newHashSet(
+ Signs.DEFAULT,
+ Signs.MALE,
+ Signs.FEMALE
);
- public static final Set<PupitriCatch.Signs> SIZE_SIGNS = Sets.newHashSet(
- PupitriCatch.Signs.SMALL,
- PupitriCatch.Signs.MEDIUM,
- PupitriCatch.Signs.BIG
+ public static final Set<Signs> SIZE_SIGNS = Sets.newHashSet(
+ Signs.SMALL,
+ Signs.MEDIUM,
+ Signs.BIG
);
@@ -509,9 +512,9 @@
*/
private boolean isSplitSpecies(PupitriCatch speciesCatch) {
boolean result;
- Map<PupitriCatch.Signs, MutableFloat> weightBySign =
+ Map<Signs, MutableFloat> weightBySign =
speciesCatch.getWeightBySign();
- Set<PupitriCatch.Signs> signs =
+ Set<Signs> signs =
Sets.newHashSet(weightBySign.keySet());
if (DEFAULT_SIGNS.equals(signs)) {
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportResult.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportResult.java 2014-05-13 20:52:44 UTC (rev 1762)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportResult.java 2014-05-14 12:03:51 UTC (rev 1763)
@@ -24,8 +24,16 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import org.apache.commons.lang3.mutable.MutableFloat;
+
import java.io.File;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
+import java.util.Set;
/**
* Result of a pupitri import.
@@ -55,11 +63,34 @@
private Float carrouselSortedWeight;
- private List<PupitriCatch> catches;
+ private final List<PupitriCatch> catches;
+ /**
+ * Total weight of all entries of species {@code MELA-GNE}.
+ *
+ * @since 3.4.2
+ */
+ private MutableFloat melagTotalWeight;
+
+ /**
+ * Total weight of all entries of sorted species of melag (sign = {@code T}).
+ *
+ * @since 3.4.2
+ */
+ private MutableFloat melagSortedWeight;
+
+ /**
+ * Set of all species in the melag (sign = {@code T}).
+ *
+ * @since 3.4.2
+ */
+ private final Set<Species> melagSpecies;
+
public PupitriImportResult(File trunkFile, File carrousselFile) {
this.trunkFile = trunkFile;
this.carrousselFile = carrousselFile;
+ catches = new ArrayList<>();
+ melagSpecies = new HashSet<>();
}
public boolean isFishingOperationFound() {
@@ -102,6 +133,38 @@
return carrouselSortedWeight;
}
+ public List<PupitriCatch> getCatches() {
+ return catches;
+ }
+
+ public Float getMelagTotalWeight() {
+ return melagTotalWeight == null ? null : melagTotalWeight.floatValue();
+ }
+
+ public Float getMelagSortedWeight() {
+ return melagSortedWeight == null ? null : melagSortedWeight.floatValue();
+ }
+
+ public Set<Species> getMelagSpecies() {
+ return melagSpecies;
+ }
+
+ /**
+ * @return {@code true} if there is a total melga weight defined (at least one species MELA-GNE found).
+ * @since 3.4.2
+ */
+ public boolean isFoundTotalMelag() {
+ return melagTotalWeight != null;
+ }
+
+ /**
+ * @return {@code true} if at least one species has a sorted melag weight.
+ * @since 3.4.2
+ */
+ public boolean isFoundSortedMelag() {
+ return melagSortedWeight != null;
+ }
+
void incrementNbTrunkImported() {
this.nbTrunkImported++;
}
@@ -135,10 +198,98 @@
}
void setCatches(List<PupitriCatch> catches) {
- this.catches = catches;
+ for (PupitriCatch aCatch : catches) {
+ addCatch(aCatch);
+ }
}
- List<PupitriCatch> getCatches() {
- return catches;
+ void addCatch(PupitriCatch aCatch) {
+
+ catches.add(aCatch);
+
+ if (aCatch.isMelagMetaSpecies()) {
+
+
+ // add weight to melag
+ addMelagTotalWeight(aCatch.getWeight(Signs.DEFAULT));
+
+ }
+
+ if (aCatch.isForMelag()) {
+
+ // add species as a melag one
+ melagSpecies.add(aCatch.getSpecies());
+
+ // add weight to sorted melag
+ addMelagSortedWeight(aCatch.getWeight(Signs.MELAG));
+
+ }
+
}
+
+ void addMelagTotalWeight(float weight) {
+
+ if (melagTotalWeight == null) {
+ melagTotalWeight = new MutableFloat();
+ }
+ melagTotalWeight.add(weight);
+
+ }
+
+ void addMelagSortedWeight(float weight) {
+
+ if (melagSortedWeight == null) {
+ melagSortedWeight = new MutableFloat();
+ }
+ melagSortedWeight.add(weight);
+
+ }
+
+ void prepareMelag() {
+
+ boolean useMelag = isFoundTotalMelag() && isFoundSortedMelag();
+
+ float melagRatio = 1f;
+
+ if (useMelag) {
+ melagRatio = melagSortedWeight.floatValue() * melagTotalWeight.floatValue();
+ }
+
+ Iterator<PupitriCatch> iterator = catches.iterator();
+ while (iterator.hasNext()) {
+ PupitriCatch aCatch = iterator.next();
+
+ if (useMelag && aCatch.isMelagMetaSpecies()) {
+
+ // remove the MELA-GNE species from import
+ iterator.remove();
+ continue;
+
+ }
+
+ if (aCatch.isForMelag()) {
+
+ if (useMelag) {
+
+ // compute the weight from melag
+
+ Float sampleWeight = aCatch.getWeight(Signs.MELAG);
+ Float weight = TuttiEntities.roundKiloGram(sampleWeight / melagRatio);
+ aCatch.addToSign(Signs.DEFAULT, weight);
+ aCatch.removeSign(Signs.MELAG);
+
+ } else {
+
+ // move the melag weight as a default weight
+
+ Float weight = aCatch.getWeight(Signs.MELAG);
+ aCatch.addToSign(Signs.DEFAULT, weight);
+ aCatch.removeSign(Signs.MELAG);
+
+ }
+ }
+
+ }
+
+ }
}
Added: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/Signs.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/Signs.java (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/Signs.java 2014-05-14 12:03:51 UTC (rev 1763)
@@ -0,0 +1,143 @@
+package fr.ifremer.tutti.service.pupitri;
+
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.persistence.service.TuttiEnumerationFile;
+
+import java.util.Map;
+
+/**
+ * Created on 5/14/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 3.4.2
+ */
+public enum Signs {
+
+ DEFAULT("0") {
+ @Override
+ public Integer getCategory(TuttiEnumerationFile enumerationFile) {
+ return enumerationFile.PMFM_ID_SEX;
+ }
+
+ @Override
+ public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
+ return enumerationFile.QUALITATIVE_SEX_UNDEFINED_ID;
+ }
+ },
+ UNSORTED("H") {
+ @Override
+ public Integer getCategory(TuttiEnumerationFile enumerationFile) {
+ // special case, there is no cateogry possible here
+ return null;
+ }
+
+ @Override
+ public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
+ // special case, there is no cateogry possible here
+ return null;
+ }
+ },
+ MALE("1") {
+ @Override
+ public Integer getCategory(TuttiEnumerationFile enumerationFile) {
+ return enumerationFile.PMFM_ID_SEX;
+ }
+
+ @Override
+ public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
+ return enumerationFile.QUALITATIVE_SEX_MALE_ID;
+ }
+ },
+ FEMALE("2") {
+ @Override
+ public Integer getCategory(TuttiEnumerationFile enumerationFile) {
+ return enumerationFile.PMFM_ID_SEX;
+ }
+
+ @Override
+ public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
+ return enumerationFile.QUALITATIVE_SEX_FEMALE_ID;
+ }
+ },
+ SMALL("P") {
+ @Override
+ public Integer getCategory(TuttiEnumerationFile enumerationFile) {
+ return enumerationFile.PMFM_ID_SIZE_CATEGORY;
+ }
+
+ @Override
+ public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
+ return enumerationFile.QUALITATIVE_SIZE_SMALL_ID;
+ }
+ },
+ MEDIUM("M") {
+ @Override
+ public Integer getCategory(TuttiEnumerationFile enumerationFile) {
+ return enumerationFile.PMFM_ID_SIZE_CATEGORY;
+ }
+
+ @Override
+ public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
+ return enumerationFile.QUALITATIVE_SIZE_MEDIUM_ID;
+ }
+ },
+ BIG("G") {
+ @Override
+ public Integer getCategory(TuttiEnumerationFile enumerationFile) {
+ return enumerationFile.PMFM_ID_SIZE_CATEGORY;
+ }
+
+ @Override
+ public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
+ return enumerationFile.QUALITATIVE_SIZE_BIG_ID;
+ }
+ },
+ MELAG("T") {
+ @Override
+ public Integer getCategory(TuttiEnumerationFile enumerationFile) {
+ // special case, there is no cateogry possible here
+ return null;
+ }
+
+ @Override
+ public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
+ // special case, there is no cateogry possible here
+ return null;
+ }
+ };
+
+ private String sign;
+
+ Signs(String sign) {
+ this.sign = sign;
+ }
+
+ public String getSign() {
+ return sign;
+ }
+
+ public static Signs getSign(String sign) {
+ Signs result = null;
+ for (Signs s : values()) {
+ if (s.sign.equals(sign)) {
+ result = s;
+ break;
+ }
+ }
+ return result;
+ }
+
+ public abstract Integer getCategory(TuttiEnumerationFile enumerationFile);
+
+ public abstract Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile);
+
+ public void registerSign(TuttiEnumerationFile enumerationFile,
+ Caracteristic caracteristic,
+ Map<Signs, CaracteristicQualitativeValue> map) {
+ Integer valueId = getQualitativeValueId(enumerationFile);
+ CaracteristicQualitativeValue result = TuttiEntities.getQualitativeValue(caracteristic, valueId);
+ map.put(this, result);
+ }
+}
Property changes on: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/Signs.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5062Test.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5062Test.java (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5062Test.java 2014-05-14 12:03:51 UTC (rev 1763)
@@ -0,0 +1,153 @@
+package fr.ifremer.tutti.service.pupitri;
+
+import com.google.common.collect.Sets;
+import fr.ifremer.tutti.TuttiConfigurationOption;
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.ServiceDbResource;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.nuiton.decorator.Decorator;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Created on 5/14/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 3.4.2
+ */
+public class PupitriImportServiceEvo5062Test {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(PupitriImportServiceEvo5062Test.class);
+
+ @ClassRule
+ public static final ServiceDbResource dbResource =
+ ServiceDbResource.writeDb("dbExport");
+
+ public static final String PROGRAM_ID = "CAM-TEST_ELEVATION";
+
+ public static final String CRUISE_ID = "100003";
+
+ public static final String OPERATION_1_ID = "100112";
+
+ public static final String OPERATION_2_ID = "100113";
+
+ public static final String OPERATION_3_ID = "100115";
+
+ protected PupitriImportExportService service;
+
+ protected PersistenceService persistenceService;
+
+ protected DecoratorService decoratorService;
+
+ protected ServiceDbResource.DataContext dataContext;
+
+ @Before
+ public void setUp() throws Exception {
+
+ TuttiServiceContext serviceContext = dbResource.getServiceContext();
+
+ persistenceService = serviceContext.getService(PersistenceService.class);
+
+ decoratorService = serviceContext.getService(DecoratorService.class);
+
+ dbResource.openDataContext();
+
+ service = serviceContext.getService(PupitriImportExportService.class);
+
+ dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 3,
+ OPERATION_2_ID,
+ OPERATION_1_ID,
+ OPERATION_3_ID);
+ }
+
+ @Test
+ public void importPupitri() throws IOException {
+
+ File trunk = dbResource.copyClassPathResource("pupitri/evo-5062.tnk", "pupitri.tnk");
+ File carroussel = dbResource.copyClassPathResource("pupitri/evo-5062.car", "pupitri.car");
+ File protocol = dbResource.copyClassPathResource("pupitri/evo-5062.tuttiProtocol", "evo-5062.tuttiProtocol");
+ dbResource.getConfig().getApplicationConfig().setOption(TuttiConfigurationOption.DB_PROTOCOL_DIRECTORY.getKey(), protocol.getParentFile().getAbsolutePath());
+ TuttiProtocol protocol1 = persistenceService.getProtocol("evo-5062");
+ persistenceService.setProtocol(protocol1);
+
+ FishingOperation operation = dataContext.operations.get(1);
+ CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operation.getId());
+ catchBatch.setFishingOperation(operation);
+
+ BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), null);
+ Assert.assertEquals(3, rootSpeciesBatch.sizeChildren());
+
+ int nbNotAdded = service.importPupitri(trunk, carroussel, operation, catchBatch).getNbCarrousselNotImported();
+ Assert.assertEquals(0, nbNotAdded);
+ BatchContainer<SpeciesBatch> rootSpeciesBatchAfter = persistenceService.getRootSpeciesBatch(operation.getId(), null);
+ Assert.assertEquals(9, rootSpeciesBatchAfter.sizeChildren());
+
+ Set<Integer> unexpectedSpecies = Sets.newHashSet(
+ );
+ Set<Integer> expectedSpecies = Sets.newHashSet(
+
+ 18237, // EUPH-AUX
+ 16994, // MERL-MCC
+ 17116, // TRAC-TRU
+ 16816, // ENGR-ENC
+ 17374, // EUTR-GUR
+ 17226, // SCOM-SCO
+ 17007, // MICR-POU
+ 16869 // MYCT-PUN
+ );
+
+ Set<Integer> alreadyFound = new HashSet<>();
+
+ Decorator<Species> speciesDecorator = decoratorService.getDecoratorByType(Species.class);
+
+ for (SpeciesBatch speciesBatch : rootSpeciesBatchAfter.getChildren()) {
+
+ Species species = speciesBatch.getSpecies();
+ Integer speciesId = species.getIdAsInt();
+ if (alreadyFound.contains(speciesId)) {
+
+ // already found
+ continue;
+
+ }
+
+ boolean remove = expectedSpecies.remove(speciesId);
+ if (log.isInfoEnabled()) {
+ log.info("Species : " + speciesId + " : " + speciesDecorator.toString(species));
+ }
+ if (remove) {
+
+ // ok mark it as safe specieId
+ alreadyFound.add(speciesId);
+
+ }
+
+ if (!remove) {
+ unexpectedSpecies.add(speciesId);
+ if (log.isWarnEnabled()) {
+ log.warn("Unexpected Species " + speciesId);
+ }
+ }
+ }
+
+ Assert.assertTrue("Expected species not found: " + expectedSpecies, expectedSpecies.isEmpty());
+ Assert.assertTrue("Unexpected species found: " + unexpectedSpecies, unexpectedSpecies.isEmpty());
+ }
+}
\ No newline at end of file
Property changes on: branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5062Test.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5062.car (from rev 1758, branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.car)
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5062.car (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5062.car 2014-05-14 12:03:51 UTC (rev 1763)
@@ -0,0 +1,29 @@
+$TSMES,27/11/13,13:14:46.647,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0018.0,
+$TSMES,27/11/13,13:16:26.243,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0011.9,
+$TSMES,27/11/13,13:16:41.355,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0013.2,
+$TSMES,27/11/13,13:17:21.436,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0016.9,
+$TSMES,27/11/13,13:17:36.955,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0013.6,
+$TSMES,27/11/13,13:19:05.279,BLCAR, 0,A,1,001,EUPH-AUX,H,VAT,0011.7, (lettre H = hors vrac)
+$TSMES,27/11/13,13:19:39.641,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0015.5,
+$TSMES,27/11/13,13:20:06.166,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0014.9,
+$TSMES,27/11/13,13:20:23.156,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0014.3,
+$TSMES,27/11/13,13:21:04.512,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0013.9,
+$TSMES,27/11/13,13:23:22.732,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0015.6,
+$TSMES,27/11/13,13:23:54.472,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0011.7,
+$TSMES,27/11/13,13:25:04.666,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0014.7,
+$TSMES,27/11/13,13:26:06.042,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0013.9,
+$TSMES,27/11/13,13:27:00.467,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0010.4,
+$TSMES,27/11/13,13:28:00.475,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0013.7,
+$TSMES,27/11/13,13:28:27.717,BLCAR, 0,A,1,002,MERL-MCC,G,VAT,0008.4, (du merlu gros)
+$TSMES,27/11/13,13:29:02.786,BLCAR, 0,A,1,002,MERL-MCC,G,VAT,0006.6, (du merlu gros)
+$TSMES,27/11/13,13:30:08.665,BLCAR, 0,A,1,001,TRAC-TRU,0,VAT,0007.9,
+$TSMES,27/11/13,13:30:30.398,BLCAR, 0,A,1,001,MERL-MCC,P,VAT,0010.1, (du merlu petit)
+$TSMES,27/11/13,13:31:17.004,BLCAR, 0,A,1,001,ENGR-ENC,0,VAT,0000.4,
+$TSMES,27/11/13,13:32:57.554,BLCAR, 0,A,1,001,EUTR-GUR,0,VAT,0000.4,
+$TSMES,27/11/13,13:33:49.235,BLCAR, 0,A,1,001,SCOM-SCO,0,VAT,0000.7,
+$TSMES,27/11/13,13:34:20.335,BLCAR, 0,A,1,002,MICR-POU,T,VAT,0014.9, (lettre T pour du poutassou trié dans le mélange)
+$TSMES,27/11/13,13:34:46.793,BLCAR, 0,A,1,002,MICR-POU,T,VAT,0019.0, (lettre T pour du poutassou trié dans le mélange)
+$TSMES,27/11/13,13:36:40.963,BLCAR, 0,A,1,002,MICR-POU,T,VAT,0014.8, (lettre T pour du poutassou trié dans le mélange)
+$TSMES,27/11/13,13:37:18.484,BLCAR, 0,A,1,002,MICR-POU,T,VAT,0011.1, (lettre T pour du poutassou trié dans le mélange)
+$TSMES,27/11/13,13:38:26.381,BLCAR, 0,A,1,002,EUPH-AUX,T,VAT,0009.6, (lettre T pour des euphausiacés triés dans le mélange)
+$TSMES,27/11/13,13:49:51.688,BLCAR, 0,A,1,001,MYCT-PUN,T,VAT,0001.1, (lettre T pour des myctophidés triés dans le mélange)
\ No newline at end of file
Copied: branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5062.tnk (from rev 1758, branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.tnk)
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5062.tnk (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5062.tnk 2014-05-14 12:03:51 UTC (rev 1763)
@@ -0,0 +1,32 @@
+$TSMES,27/11/13,09:08:45.130,BLTNK, 0,A,1,VAT,0045.4,
+$TSMES,27/11/13,09:10:10.522,BLTNK, 0,A,1,VAT,0045.0,
+$TSMES,27/11/13,09:12:14.730,BLTNK, 0,A,1,VAT,0043.9,
+$TSMES,27/11/13,09:14:06.033,BLTNK, 0,A,1,VAT,0044.0,
+$TSMES,27/11/13,09:16:08.907,BLTNK, 0,A,1,VAT,0042.4,
+$TSMES,27/11/13,09:17:47.515,BLTNK, 0,A,1,VAT,0044.3,
+$TSMES,27/11/13,09:19:44.039,BLTNK, 0,A,1,VAT,0043.6,
+$TSMES,27/11/13,09:21:49.166,BLTNK, 0,A,1,VAT,0044.2,
+$TSMES,27/11/13,09:26:57.681,BLTNK, 0,A,1,VAT,0045.9,
+$TSMES,27/11/13,09:29:20.020,BLTNK, 0,A,1,VAT,0045.8,
+$TSMES,27/11/13,09:30:37.535,BLTNK, 0,A,1,VAT,0047.0,
+$TSMES,27/11/13,09:32:16.153,BLTNK, 0,A,1,VAT,0046.6,
+$TSMES,27/11/13,09:33:30.882,BLTNK, 0,A,1,VAT,0044.4,
+$TSMES,27/11/13,09:34:50.649,BLTNK, 0,A,1,VAT,0044.5,
+$TSMES,27/11/13,09:36:36.933,BLTNK, 0,A,1,VAT,0043.7,
+$TSMES,27/11/13,09:37:53.424,BLTNK, 0,A,1,VAT,0046.4,
+$TSMES,27/11/13,09:41:40.944,BLTNK, 0,A,1,VAT,0048.6,
+$TSMES,27/11/13,09:43:33.377,BLTNK, 0,A,1,VAT,0046.4,
+$TSMES,27/11/13,09:44:46.487,BLTNK, 0,A,1,VAT,0046.4,
+$TSMES,27/11/13,09:46:12.192,BLTNK, 0,A,1,VAT,0045.2,
+$TSMES,27/11/13,09:47:34.846,BLTNK, 0,A,1,VAT,0045.4,
+$TSMES,27/11/13,09:48:55.920,BLTNK, 0,A,1,VAT,0048.4,
+$TSMES,27/11/13,09:51:12.724,BLTNK, 0,A,1,VAT,0046.4,
+$TSMES,27/11/13,09:54:14.063,BLTNK, 0,A,1,VAT,0040.4,
+$TSMES,27/11/13,09:56:11.000,BLTNK, 0,A,1,VAT,0044.2,
+$TSMES,27/11/13,09:57:38.344,BLTNK, 0,A,1,VAT,0047.3,
+$TSMES,27/11/13,09:59:23.603,BLTNK, 0,A,1,VAT,0047.6,
+$TSMES,27/11/13,10:00:51.868,BLTNK, 0,A,1,VAT,0047.9,
+$TSMES,27/11/13,10:02:29.655,BLTNK, 0,A,1,VAT,0044.2,
+$TSMES,27/11/13,10:04:14.101,BLTNK, 0,A,1,VAT,0045.9,
+$TSMES,27/11/13,10:06:08.886,BLTNK, 0,A,1,VAT,0043.2,
+$TSMES,27/11/13,10:08:35.000,BLTNK, 0,A,1,VAT,0007.5,
\ No newline at end of file
Copied: branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5062.tuttiProtocol (from rev 1758, branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.tuttiProtocol)
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5062.tuttiProtocol (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5062.tuttiProtocol 2014-05-14 12:03:51 UTC (rev 1763)
@@ -0,0 +1,154 @@
+id: c6ee2088-9720-46c0-b8d2-8f21c902676f
+name: Protocole EVHOE 2013
+benthos:
+comment: Protocole pour les tests 2013 avec Jean Jacques Rivoalen
+gearUseFeaturePmfmId:
+- 131
+- 828
+- 884
+- 965
+lengthClassesPmfmId:
+- 306
+- 622
+- 307
+- 302
+- 299
+- 1394
+- 1417
+- 1425
+- 1426
+- 1427
+- 283
+- 284
+- 285
+- 294
+- 295
+- 300
+- 301
+- 304
+- 318
+- 319
+- 322
+- 323
+- 661
+- 662
+species:
+- !SpeciesProtocol
+ id: 056a7ad4-934c-4d69-b068-1a2dd64012cb
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 2786
+ speciesSurveyCode: EUPH-AUX
+ weightEnabled: true
+- !SpeciesProtocol
+ id: 5f7e400c-6a03-4092-9ccf-0031823b3a14
+ calcifySampleEnabled: true
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId:
+ - 198
+ - 196
+ speciesReferenceTaxonId: 1540
+ speciesSurveyCode: MERL-MCC
+ weightEnabled: true
+- !SpeciesProtocol
+ id: dc5738bb-ed38-4814-a016-9fabfd833212
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId:
+ - 198
+ speciesReferenceTaxonId: 1662
+ speciesSurveyCode: TRAC-TRU
+ weightEnabled: true
+- !SpeciesProtocol
+ id: e4577b1e-18d1-459c-acff-04aedf4e917d
+ calcifySampleEnabled: true
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 307
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 1362
+ speciesSurveyCode: ENGR-ENC
+ weightEnabled: true
+- !SpeciesProtocol
+ id: 4076fe7e-01fe-4164-820a-47b50dfa8e02
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 1920
+ speciesSurveyCode: EUTR-GUR
+ weightEnabled: true
+- !SpeciesProtocol
+ id: 16f4a094-1904-4e50-aff9-1f2dcab3a909
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId:
+ - 198
+ speciesReferenceTaxonId: 1772
+ speciesSurveyCode: SCOM-SCO
+ weightEnabled: true
+- !SpeciesProtocol
+ id: d5887f0e-bd99-4f66-a967-8fcff8224b32
+ calcifySampleEnabled: true
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId:
+ - 198
+ - 196
+ speciesReferenceTaxonId: 1553
+ speciesSurveyCode: MICR-POU
+ weightEnabled: true
+- !SpeciesProtocol
+ id: 944db3c6-d870-4f03-8abc-9a985a6feb65
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 1415
+ speciesSurveyCode: MYCT-PUN
+ weightEnabled: true
+- !SpeciesProtocol
+ id: 2a8122cf-d238-4820-a7b9-eacaf1f302bd
+ calcifySampleEnabled: true
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 1551
+ speciesSurveyCode: MELA-NGE
+ weightEnabled: true
+- !SpeciesProtocol
+ id: 0de3f5c9-0ca9-4a7c-84aa-323d9eaa7f7f
+ countIfNoFrequencyEnabled: true
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 872
+ speciesSurveyCode: ACAN-PEL
+ weightEnabled: true
+- !SpeciesProtocol
+ id: ddffa4c9-cbb5-447f-a829-e2ac0cfea0f5
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 1732
+ speciesSurveyCode: ACANPAL
+ weightEnabled: true
+vesselUseFeaturePmfmId:
+- 173
+- 194
+- 230
+- 782
+- 843
+- 844
+- 846
+- 847
+- 848
+- 849
+- 850
+- 851
+- 857
+- 858
+- 859
+- 861
+- 862
+- 863
+- 881
+- 882
+- 883
\ No newline at end of file
1
0
r1762 - in branches/tutti-3.4.x: tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport tutti-service/src/main/resources/i18n tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport tutti-service/src/test/resources/psion tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action tutti-ui-swing/src/main/resources/i18n
by tchemit@users.forge.codelutin.com 13 May '14
by tchemit@users.forge.codelutin.com 13 May '14
13 May '14
Author: tchemit
Date: 2014-05-13 22:52:44 +0200 (Tue, 13 May 2014)
New Revision: 1762
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1762
Log:
refs-90 #5059 (need new tests)
Modified:
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportBatchModel.java
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportResult.java
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java
branches/tutti-3.4.x/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
branches/tutti-3.4.x/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport/PsionImportServiceTest.java
branches/tutti-3.4.x/tutti-service/src/test/resources/psion/CC053.IWA
branches/tutti-3.4.x/tutti-service/src/test/resources/psion/FM001.IWA
branches/tutti-3.4.x/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportPsionAction.java
branches/tutti-3.4.x/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportBatchModel.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportBatchModel.java 2014-05-13 14:30:26 UTC (rev 1761)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportBatchModel.java 2014-05-13 20:52:44 UTC (rev 1762)
@@ -150,6 +150,17 @@
return frequencies.size();
}
+ void merge(PsionImportBatchModel batchModel) {
+ setWeight(getWeight() + batchModel.getWeight());
+ setSampleWeight(getSampleWeight() + batchModel.getSampleWeight());
+
+ for (Map.Entry<Float, MutableInt> entry : batchModel.getFrequencies().entrySet()) {
+ Float stepClass = entry.getKey();
+ int number = entry.getValue().intValue();
+ addFrequency(stepClass, number);
+ }
+ }
+
@Override
public String toString() {
return new ToStringBuilder(this)
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java 2014-05-13 14:30:26 UTC (rev 1761)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java 2014-05-13 20:52:44 UTC (rev 1762)
@@ -24,19 +24,29 @@
* #L%
*/
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
+import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import org.apache.commons.lang3.mutable.MutableInt;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import static org.nuiton.i18n.I18n.t;
+
/**
* Created on 1/20/14.
*
@@ -48,40 +58,70 @@
/** Logger. */
private static final Log log = LogFactory.getLog(PsionImportModel.class);
- protected final Map<String, PsionImportBatchModel> batchsByCategory;
+// protected final Map<String, PsionImportBatchModel> batchsByCategory;
+ /**
+ * All registred species in their registred order.
+ */
+ protected final LinkedHashSet<Species> speciesSet;
+
+ /**
+ * All sorted batch indexed by their species.
+ *
+ * @since 3.4.2
+ */
+ protected final Multimap<Species, PsionImportBatchModel> sortedBatchsBySpecies;
+
+ /**
+ * All unsorted batch indexed by their species.
+ *
+ * @since 3.4.2
+ */
+ protected final Multimap<Species, PsionImportBatchModel> unsortedBatchsBySpecies;
+
protected final List<String> errors;
public PsionImportModel() {
- batchsByCategory = Maps.newLinkedHashMap();
+ speciesSet = new LinkedHashSet<>();
+ sortedBatchsBySpecies = ArrayListMultimap.create();
+ unsortedBatchsBySpecies = ArrayListMultimap.create();
+// batchsByCategory = Maps.newLinkedHashMap();
errors = Lists.newArrayList();
}
public boolean withBatchs() {
- return !batchsByCategory.isEmpty();
+ return !speciesSet.isEmpty();
}
public Set<Species> getSpecies() {
- Set<Species> result = Sets.newLinkedHashSet();
- for (PsionImportBatchModel batch : batchsByCategory.values()) {
- result.add(batch.getSpecies());
+ Set<Species> result = ImmutableSet.copyOf(speciesSet);
+ return result;
+ }
+
+ public List<PsionImportBatchModel> getUnsortedBatches(Species species) {
+ Collection<PsionImportBatchModel> batches = unsortedBatchsBySpecies.get(species);
+ List<PsionImportBatchModel> result = null;
+
+ if (batches != null) {
+ result = ImmutableList.copyOf(batches);
+
}
return result;
}
- public List<PsionImportBatchModel> getBatchs(Species species) {
- List<PsionImportBatchModel> result = Lists.newArrayList();
- for (PsionImportBatchModel batch : batchsByCategory.values()) {
- if (species.equals(batch.getSpecies())) {
- result.add(batch);
- }
+ public List<PsionImportBatchModel> getSortedBatches(Species species) {
+ Collection<PsionImportBatchModel> batches = sortedBatchsBySpecies.get(species);
+ List<PsionImportBatchModel> result = null;
+
+ if (batches != null) {
+ result = ImmutableList.copyOf(batches);
}
return result;
}
public Set<Integer> getSampleCategoryIdUsed() {
Set<Integer> result = Sets.newHashSet();
- for (PsionImportBatchModel batch : batchsByCategory.values()) {
+ for (PsionImportBatchModel batch : sortedBatchsBySpecies.values()) {
Iterator<PsionImportBatchModel.SampleCategory> categoryIterator = batch.getCategoryIterator();
while (categoryIterator.hasNext()) {
PsionImportBatchModel.SampleCategory next = categoryIterator.next();
@@ -89,6 +129,14 @@
result.add(next.getCategoryId());
}
}
+ for (PsionImportBatchModel batch : unsortedBatchsBySpecies.values()) {
+ Iterator<PsionImportBatchModel.SampleCategory> categoryIterator = batch.getCategoryIterator();
+ while (categoryIterator.hasNext()) {
+ PsionImportBatchModel.SampleCategory next = categoryIterator.next();
+
+ result.add(next.getCategoryId());
+ }
+ }
return result;
}
@@ -96,32 +144,65 @@
return !errors.isEmpty();
}
+ public List<String> getErrors() {
+ return errors;
+ }
+
void addBatch(PsionImportBatchModel batchModel) {
- String cacheCode = batchModel.getSpecies().getSurveyCode() + "_" + batchModel.getCategoryCode();
+ Species species = batchModel.getSpecies();
+ speciesSet.add(species);
+
+ String categoryCode = batchModel.getCategoryCode();
+ Float weight = batchModel.getWeight();
+ Float sampleWeight = batchModel.getSampleWeight();
- PsionImportBatchModel mergeBatch = batchsByCategory.get(cacheCode);
+ Multimap<Species, PsionImportBatchModel> store;
+ // --- Guess if sorted or unsorted batch --- //
+ if (TuttiEntities.isGreaterWeight(weight, 0) && TuttiEntities.isEqualWeight(weight, sampleWeight)) {
+
+ store = unsortedBatchsBySpecies;
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Found a unsorted batch [%s] %s - %s", species.getSurveyCode(), weight, sampleWeight));
+ }
+ } else {
+
+ store = sortedBatchsBySpecies;
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Found a sorted batch [%s] %s - %s", species.getSurveyCode(), weight, sampleWeight));
+ }
+ }
+
+ // --- Get if exist the previous batch --- //
+
+ Collection<PsionImportBatchModel> psionImportBatchModels = store.get(species);
+
+ PsionImportBatchModel mergeBatch = null;
+
+ if (CollectionUtils.isNotEmpty(psionImportBatchModels)) {
+
+ for (PsionImportBatchModel importBatchModel : psionImportBatchModels) {
+ if (categoryCode.equals(importBatchModel.getCategoryCode())) {
+ mergeBatch = importBatchModel;
+ break;
+ }
+ }
+ }
+
if (mergeBatch == null) {
// new batch
- batchsByCategory.put(cacheCode, batchModel);
+ store.put(species, batchModel);
if (log.isInfoEnabled()) {
log.info("Added " + batchModel);
}
} else {
- // merge data with this batch
+ // merge batch
+ mergeBatch.merge(batchModel);
- mergeBatch.setWeight(mergeBatch.getWeight() + batchModel.getWeight());
- mergeBatch.setSampleWeight(mergeBatch.getSampleWeight() + batchModel.getSampleWeight());
-
- for (Map.Entry<Float, MutableInt> entry : batchModel.getFrequencies().entrySet()) {
- Float stepClass = entry.getKey();
- int number = entry.getValue().intValue();
- mergeBatch.addFrequency(stepClass, number);
- }
if (log.isInfoEnabled()) {
log.info("Merged " + batchModel + " to " + mergeBatch);
}
@@ -132,7 +213,139 @@
errors.add(error);
}
- public List<String> getErrors() {
- return errors;
+ void cleanSortedBatches() {
+
+ for (Species species : sortedBatchsBySpecies.keySet()) {
+
+ for (PsionImportBatchModel batchModel : sortedBatchsBySpecies.get(species)) {
+
+ Float weight = batchModel.getWeight();
+ Float sampleWeight = batchModel.getSampleWeight();
+
+ if (TuttiEntities.isEqualWeight(weight, 0) && TuttiEntities.isGreaterWeight(sampleWeight, 0)) {
+
+ // POID = 0 et TAIL != POID : un seul poids à positionner
+ batchModel.setWeight(sampleWeight);
+ batchModel.setSampleWeight(null);
+
+ }
+
+ }
+
+ }
}
+
+ void cleanUnsortedBatches() {
+
+ for (Species species : unsortedBatchsBySpecies.keySet()) {
+
+ for (PsionImportBatchModel batchModel : unsortedBatchsBySpecies.get(species)) {
+
+ // POID = TAIL un seul poids à positionner
+ batchModel.setSampleWeight(null);
+ }
+
+ }
+ }
+
+ void checkSortedBatches() throws IOException {
+
+ Set<Species> speciesSet = sortedBatchsBySpecies.keySet();
+
+ for (Species species : speciesSet) {
+
+ Collection<PsionImportBatchModel> sortedBatches = sortedBatchsBySpecies.get(species);
+
+ Map<String, Float> weightByCategory = new HashMap<>();
+
+ for (PsionImportBatchModel sortedBatch : sortedBatches) {
+ Float weight = sortedBatch.getWeight();
+ if (TuttiEntities.isGreaterWeight(weight, 0)) {
+
+ Float rootweight = weightByCategory.get(sortedBatch.getCategoryCode());
+
+ if (rootweight == null) {
+
+ // first time
+ weightByCategory.put(sortedBatch.getCategoryCode(), weight);
+ } else if (!TuttiEntities.isEqualWeight(rootweight, weight)) {
+
+ // can't have 2 batches with different vrac batch weight
+ throw new IOException(
+ t("tutti.service.psionimport.error.inconsistentVracWeight.message", species.getSurveyCode()));
+ }
+
+ }
+ }
+ }
+
+ }
+
+// public boolean withBatchs() {
+// return !batchsByCategory.isEmpty();
+// }
+//
+// public Set<Species> getSpecies() {
+// Set<Species> result = Sets.newLinkedHashSet();
+// for (PsionImportBatchModel batch : batchsByCategory.values()) {
+// result.add(batch.getSpecies());
+// }
+// return result;
+// }
+//
+// public List<PsionImportBatchModel> getBatchs(Species species) {
+// List<PsionImportBatchModel> result = Lists.newArrayList();
+// for (PsionImportBatchModel batch : batchsByCategory.values()) {
+// if (species.equals(batch.getSpecies())) {
+// result.add(batch);
+// }
+// }
+// return result;
+// }
+//
+// public Set<Integer> getSampleCategoryIdUsed() {
+// Set<Integer> result = Sets.newHashSet();
+// for (PsionImportBatchModel batch : batchsByCategory.values()) {
+// Iterator<PsionImportBatchModel.SampleCategory> categoryIterator = batch.getCategoryIterator();
+// while (categoryIterator.hasNext()) {
+// PsionImportBatchModel.SampleCategory next = categoryIterator.next();
+//
+// result.add(next.getCategoryId());
+// }
+// }
+// return result;
+// }
+//
+// void addBatch(PsionImportBatchModel batchModel) {
+//
+// String cacheCode = batchModel.getSpecies().getSurveyCode() + "_" + batchModel.getCategoryCode();
+//
+// PsionImportBatchModel mergeBatch = batchsByCategory.get(cacheCode);
+//
+// if (mergeBatch == null) {
+//
+// // new batch
+// batchsByCategory.put(cacheCode, batchModel);
+//
+// if (log.isInfoEnabled()) {
+// log.info("Added " + batchModel);
+// }
+// } else {
+//
+// // merge data with this batch
+//
+// mergeBatch.setWeight(mergeBatch.getWeight() + batchModel.getWeight());
+// mergeBatch.setSampleWeight(mergeBatch.getSampleWeight() + batchModel.getSampleWeight());
+//
+// for (Map.Entry<Float, MutableInt> entry : batchModel.getFrequencies().entrySet()) {
+// Float stepClass = entry.getKey();
+// int number = entry.getValue().intValue();
+// mergeBatch.addFrequency(stepClass, number);
+// }
+// if (log.isInfoEnabled()) {
+// log.info("Merged " + batchModel + " to " + mergeBatch);
+// }
+// }
+// }
+
}
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportResult.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportResult.java 2014-05-13 14:30:26 UTC (rev 1761)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportResult.java 2014-05-13 20:52:44 UTC (rev 1762)
@@ -41,8 +41,12 @@
protected final List<String> errors;
- protected int nbImported;
+ protected int nbSortedImported;
+ protected int nbUnsortedImported;
+
+// protected int nbImported;
+
public PsionImportResult(File importFile, List<String> errors) {
this.importFile = importFile;
this.errors = Lists.newArrayList(errors);
@@ -52,18 +56,30 @@
return importFile;
}
- public int getNbImported() {
- return nbImported;
+// public int getNbImported() {
+// return nbImported;
+// }
+
+ public int getNbSortedImported() {
+ return nbSortedImported;
}
+ public int getNbUnsortedImported() {
+ return nbUnsortedImported;
+ }
+
public List<String> getErrors() {
return errors;
}
- void incrementNbImported() {
- this.nbImported++;
+ void incrementNbSortedImported() {
+ this.nbSortedImported++;
}
+ void incrementNbUnsortedImported() {
+ this.nbUnsortedImported++;
+ }
+
void addError(String error) {
errors.add(error);
}
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java 2014-05-13 14:30:26 UTC (rev 1761)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java 2014-05-13 20:52:44 UTC (rev 1762)
@@ -53,6 +53,7 @@
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.service.TuttiServiceContext;
import fr.ifremer.tutti.type.WeightUnit;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.mutable.MutableInt;
@@ -232,33 +233,48 @@
if (log.isWarnEnabled()) {
log.warn("Won't import psion file, errors detected.");
}
- } else {
- // check sample categories exists
+ return result;
+ }
- SampleCategoryModel sampleCategoryModel = context.getSampleCategoryModel();
- Set<Integer> sampleCategoryIdUsed = importModel.getSampleCategoryIdUsed();
- List<String> missingCategories = Lists.newArrayList();
- for (Integer categoryId : sampleCategoryIdUsed) {
- if (!sampleCategoryModel.containsCategoryId(categoryId)) {
- missingCategories.add("<li>" + categoryId + "</li>");
- }
+ // --- Check sample category id used --- //
+ SampleCategoryModel sampleCategoryModel = context.getSampleCategoryModel();
+ Set<Integer> sampleCategoryIdUsed = importModel.getSampleCategoryIdUsed();
+ List<String> missingCategories = Lists.newArrayList();
+ for (Integer categoryId : sampleCategoryIdUsed) {
+ if (!sampleCategoryModel.containsCategoryId(categoryId)) {
+ missingCategories.add("<li>" + categoryId + "</li>");
}
+ }
- if (!missingCategories.isEmpty()) {
+ if (!missingCategories.isEmpty()) {
- result.addError(
- t("tutti.service.psionimport.error.invalidSampleCategoryModel.message",
- Joiner.on("").join(missingCategories))
- );
- } else {
+ result.addError(
+ t("tutti.service.psionimport.error.invalidSampleCategoryModel.message",
+ Joiner.on("").join(missingCategories))
+ );
- // persist in db
- persist(result, importModel, operation, catchBatch);
- }
+ return result;
+ }
+ // --- Check sorted batches --- //
+ try {
+ importModel.checkSortedBatches();
+ } catch (IOException e) {
+ result.addError(e.getMessage());
+ return result;
}
+ // --- clean sorted batches --- //
+ importModel.cleanSortedBatches();
+
+ // --- clean unsorted batches --- //
+ importModel.cleanUnsortedBatches();
+
+ // --- Ok no error, can persist --- //
+
+ persist(result, importModel, operation, catchBatch);
+
return result;
}
@@ -285,7 +301,7 @@
throw new IOException(t("tutti.service.psionimport.error.invalid.date.format"));
}
- boolean correctOperation = Objects.equals(operationCode, operation.getStationNumber()) &&
+ boolean correctOperation = Objects.equals(operationCode, String.valueOf(operation.getFishingOperationNumber())) &&
Objects.equals(operationDate, operation.getGearShootingStartDate());
if (!correctOperation) {
@@ -492,112 +508,305 @@
// insert all imported species batches
- TuttiEnumerationFile enumerationFile = persistenceService.getEnumerationFile();
+// TuttiEnumerationFile enumerationFile = persistenceService.getEnumerationFile();
Set<Species> species = importModel.getSpecies();
for (Species specy : species) {
- List<PsionImportBatchModel> batchs = importModel.getBatchs(specy);
+ List<PsionImportBatchModel> sortedBatchs = importModel.getSortedBatches(specy);
- if (batchs.size() == 1 && !batchs.get(0).withCategories()) {
+ if (CollectionUtils.isNotEmpty(sortedBatchs)) {
+ persistSortedBatches(operation, specy, sortedBatchs);
- PsionImportBatchModel batchModel = batchs.get(0);
+ result.incrementNbSortedImported();
+ }
- // simple batch with no category
- SpeciesBatch batch = createSpeciesBatch(operation,
- batchModel.getSpecies(),
- batchModel.getWeight(),
- batchModel.getSampleWeight(),
+ List<PsionImportBatchModel> unsortedBatchs = importModel.getUnsortedBatches(specy);
+
+ if (CollectionUtils.isNotEmpty(unsortedBatchs)) {
+ persistUnsortedBatches(operation, specy, unsortedBatchs);
+
+ result.incrementNbUnsortedImported();
+ }
+
+// List<PsionImportBatchModel> batchs = importModel.getSortedBatches(specy);
+//
+// if (batchs.size() == 1 && !batchs.get(0).withCategories()) {
+//
+// PsionImportBatchModel batchModel = batchs.get(0);
+//
+// // simple batch with no category
+// SpeciesBatch batch = createSpeciesBatch(operation,
+// batchModel.getSpecies(),
+// batchModel.getWeight(),
+// batchModel.getSampleWeight(),
+// enumerationFile.PMFM_ID_SORTED_UNSORTED,
+// sortedCaracteristic);
+//
+// batch = persistenceService.createSpeciesBatch(batch, null);
+//
+// persistFrequencies(batch, batchModel);
+//
+// } else {
+//
+// // batch with categories
+//
+// SpeciesBatch rootBatch = createSpeciesBatch(operation,
+// specy,
+// null,
+// null,
+// enumerationFile.PMFM_ID_SORTED_UNSORTED,
+// sortedCaracteristic);
+//
+// rootBatch = persistenceService.createSpeciesBatch(rootBatch, null);
+//
+//
+// for (PsionImportBatchModel batchModel : batchs) {
+//
+// SpeciesBatch parentBatch = rootBatch;
+//
+// SpeciesBatch childBatch = null;
+//
+// Iterator<PsionImportBatchModel.SampleCategory> categoryIterator = batchModel.getCategoryIterator();
+//
+// while (categoryIterator.hasNext()) {
+// PsionImportBatchModel.SampleCategory sampleCategory = categoryIterator.next();
+//
+// boolean lastCategory = !categoryIterator.hasNext();
+//
+// Integer categoryId = sampleCategory.getCategoryId();
+// Serializable categoryValue = sampleCategory.getCategoryValue();
+//
+// if (lastCategory) {
+//
+// // always create the leaf
+// childBatch = createSpeciesBatch(operation,
+// specy,
+// batchModel.getWeight(),
+// batchModel.getSampleWeight(),
+// categoryId,
+// categoryValue);
+// } else {
+//
+// // try to find child in parent children
+//
+// childBatch = null;
+// for (SpeciesBatch speciesBatch : parentBatch.getChildBatchs()) {
+//
+// if (speciesBatch.getSampleCategoryId().equals(categoryId) &&
+// speciesBatch.getSampleCategoryValue().equals(categoryValue)) {
+// childBatch = speciesBatch;
+// break;
+// }
+// }
+//
+// if (childBatch == null) {
+//
+// // must create it
+// childBatch = createSpeciesBatch(operation,
+// specy,
+// null,
+// null,
+// categoryId,
+// categoryValue);
+// }
+// }
+//
+// if (TuttiEntities.isNew(childBatch)) {
+//
+// // persist it
+// childBatch = persistenceService.createSpeciesBatch(childBatch, parentBatch.getId());
+// parentBatch.addChildBatchs(childBatch);
+// }
+//
+// parentBatch = childBatch;
+// }
+//
+// persistFrequencies(childBatch, batchModel);
+// }
+// }
+// result.incrementNbImported();
+ }
+
+ persistenceService.saveCatchBatch(catchBatch);
+ }
+
+ protected void persistSortedBatches(FishingOperation operation,
+ Species specy,
+ List<PsionImportBatchModel> batchs) {
+
+ CaracteristicQualitativeValue caracteristicQualitativeValue = sortedCaracteristic;
+
+ if (batchs.size() == 1 && !batchs.get(0).withCategories()) {
+
+ PsionImportBatchModel batchModel = batchs.get(0);
+
+ // simple batch with no category
+ SpeciesBatch batch = createSpeciesBatch(operation,
+ batchModel.getSpecies(),
+ batchModel.getWeight(),
+ batchModel.getSampleWeight(),
+ enumerationFile.PMFM_ID_SORTED_UNSORTED,
+ caracteristicQualitativeValue);
+
+ batch = persistenceService.createSpeciesBatch(batch, null);
+
+ persistFrequencies(batch, batchModel);
+
+ } else {
+
+ // batch with categories
+
+ // Is there two weights ? If so then the weight has to be placed in the sorted batch
+
+ Float sortedBatchWeight = null;
+
+ Float weight = batchs.get(0).getWeight();
+ Float sampleWeight = batchs.get(0).getSampleWeight();
+
+ if (sampleWeight != null) {
+
+ // use the weight as sorted batch weight
+ sortedBatchWeight = weight;
+ }
+
+ SpeciesBatch rootBatch = createSpeciesBatch(operation,
+ specy,
+ sortedBatchWeight,
+ null,
enumerationFile.PMFM_ID_SORTED_UNSORTED,
- sortedCaracteristic);
+ caracteristicQualitativeValue);
- batch = persistenceService.createSpeciesBatch(batch, null);
+ rootBatch = persistenceService.createSpeciesBatch(rootBatch, null);
- persistFrequencies(batch, batchModel);
+ createCategoryBatches(operation, specy, batchs, rootBatch, sortedBatchWeight != null);
- } else {
+ }
- // batch with categories
+ }
- SpeciesBatch rootBatch = createSpeciesBatch(operation,
- specy,
- null,
- null,
- enumerationFile.PMFM_ID_SORTED_UNSORTED,
- sortedCaracteristic);
+ protected void persistUnsortedBatches(FishingOperation operation,
+ Species specy,
+ List<PsionImportBatchModel> batchs) {
- rootBatch = persistenceService.createSpeciesBatch(rootBatch, null);
+ CaracteristicQualitativeValue caracteristicQualitativeValue = unsortedCaracteristic;
+ if (batchs.size() == 1 && !batchs.get(0).withCategories()) {
- for (PsionImportBatchModel batchModel : batchs) {
+ PsionImportBatchModel batchModel = batchs.get(0);
- SpeciesBatch parentBatch = rootBatch;
+ // simple batch with no category
+ SpeciesBatch batch = createSpeciesBatch(operation,
+ batchModel.getSpecies(),
+ batchModel.getWeight(),
+ batchModel.getSampleWeight(),
+ enumerationFile.PMFM_ID_SORTED_UNSORTED,
+ caracteristicQualitativeValue);
- SpeciesBatch childBatch = null;
+ batch = persistenceService.createSpeciesBatch(batch, null);
- Iterator<PsionImportBatchModel.SampleCategory> categoryIterator = batchModel.getCategoryIterator();
+ persistFrequencies(batch, batchModel);
- while (categoryIterator.hasNext()) {
- PsionImportBatchModel.SampleCategory sampleCategory = categoryIterator.next();
+ } else {
- boolean lastCategory = !categoryIterator.hasNext();
+ // batch with categories
- Integer categoryId = sampleCategory.getCategoryId();
- Serializable categoryValue = sampleCategory.getCategoryValue();
+ SpeciesBatch rootBatch = createSpeciesBatch(operation,
+ specy,
+ null,
+ null,
+ enumerationFile.PMFM_ID_SORTED_UNSORTED,
+ caracteristicQualitativeValue);
- if (lastCategory) {
+ rootBatch = persistenceService.createSpeciesBatch(rootBatch, null);
- // always create the leaf
- childBatch = createSpeciesBatch(operation,
- specy,
- batchModel.getWeight(),
- batchModel.getSampleWeight(),
- categoryId,
- categoryValue);
- } else {
+ createCategoryBatches(operation, specy, batchs, rootBatch, false);
- // try to find child in parent children
+ }
- childBatch = null;
- for (SpeciesBatch speciesBatch : parentBatch.getChildBatchs()) {
+ }
- if (speciesBatch.getSampleCategoryId().equals(categoryId) &&
- speciesBatch.getSampleCategoryValue().equals(categoryValue)) {
- childBatch = speciesBatch;
- break;
- }
- }
+ protected void createCategoryBatches(FishingOperation operation,
+ Species specy,
+ List<PsionImportBatchModel> batchs,
+ SpeciesBatch rootBatch,
+ boolean applyOnlySampleWeight) {
- if (childBatch == null) {
+ for (PsionImportBatchModel batchModel : batchs) {
- // must create it
- childBatch = createSpeciesBatch(operation,
- specy,
- null,
- null,
- categoryId,
- categoryValue);
- }
- }
+ SpeciesBatch parentBatch = rootBatch;
- if (TuttiEntities.isNew(childBatch)) {
+ SpeciesBatch childBatch = null;
- // persist it
- childBatch = persistenceService.createSpeciesBatch(childBatch, parentBatch.getId());
- parentBatch.addChildBatchs(childBatch);
+ Iterator<PsionImportBatchModel.SampleCategory> categoryIterator = batchModel.getCategoryIterator();
+
+ while (categoryIterator.hasNext()) {
+ PsionImportBatchModel.SampleCategory sampleCategory = categoryIterator.next();
+
+ boolean lastCategory = !categoryIterator.hasNext();
+
+ Integer categoryId = sampleCategory.getCategoryId();
+ Serializable categoryValue = sampleCategory.getCategoryValue();
+
+ if (lastCategory) {
+
+ // always create the leaf
+
+ Float weight;
+ Float sampleWeight;
+
+ if (applyOnlySampleWeight) {
+ weight = batchModel.getSampleWeight();
+ sampleWeight = null;
+ } else {
+ weight = batchModel.getWeight();
+ sampleWeight = batchModel.getSampleWeight();
+ }
+ childBatch = createSpeciesBatch(operation,
+ specy,
+ weight,
+ sampleWeight,
+ categoryId,
+ categoryValue);
+ } else {
+
+ // try to find child in parent children
+
+ childBatch = null;
+ for (SpeciesBatch speciesBatch : parentBatch.getChildBatchs()) {
+
+ if (speciesBatch.getSampleCategoryId().equals(categoryId) &&
+ speciesBatch.getSampleCategoryValue().equals(categoryValue)) {
+ childBatch = speciesBatch;
+ break;
}
+ }
- parentBatch = childBatch;
+ if (childBatch == null) {
+
+ // must create it
+ childBatch = createSpeciesBatch(operation,
+ specy,
+ null,
+ null,
+ categoryId,
+ categoryValue);
}
+ }
- persistFrequencies(childBatch, batchModel);
+ if (TuttiEntities.isNew(childBatch)) {
+
+ // persist it
+ childBatch = persistenceService.createSpeciesBatch(childBatch, parentBatch.getId());
+ parentBatch.addChildBatchs(childBatch);
}
+
+ parentBatch = childBatch;
}
- result.incrementNbImported();
+
+ persistFrequencies(childBatch, batchModel);
}
-
- persistenceService.saveCatchBatch(catchBatch);
}
protected PsionImportBatchModel.SampleCategory guessCategory(String categoryCode) {
Modified: branches/tutti-3.4.x/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2014-05-13 14:30:26 UTC (rev 1761)
+++ branches/tutti-3.4.x/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2014-05-13 20:52:44 UTC (rev 1762)
@@ -160,6 +160,7 @@
tutti.service.protocol.import.species.error=
tutti.service.protocol.import.taxonUsed.error=
tutti.service.psion.import.attachment.comment=
+tutti.service.psionimport.error.inconsistentVracWeight.message=
tutti.service.psionimport.error.invalid.category.syntax=
tutti.service.psionimport.error.invalid.command.syntax=
tutti.service.psionimport.error.invalid.date.format=
Modified: branches/tutti-3.4.x/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2014-05-13 14:30:26 UTC (rev 1761)
+++ branches/tutti-3.4.x/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2014-05-13 20:52:44 UTC (rev 1762)
@@ -159,6 +159,7 @@
tutti.service.protocol.import.species.error=Erreur lors de l'import des espèces du protocole %1s du fichier %2s
tutti.service.protocol.import.taxonUsed.error=Le taxon référent d'id %s est déjà utilisé
tutti.service.psion.import.attachment.comment=Import Psion du %s
+tutti.service.psionimport.error.inconsistentVracWeight.message=Pour l'espèce '%s', il existe deux enregistrements de lot vrac avec le champs 'POID' différent, ce qui est interdit
tutti.service.psionimport.error.invalid.category.syntax=Ligne %s, catégorisation '%s' inconnue, l'espèce %s sera ignorée
tutti.service.psionimport.error.invalid.command.syntax=Ligne %s, la commande '%s' n'est pas reconnue
tutti.service.psionimport.error.invalid.date.format=Format de la date du trait incorrecte (mm-dd-aaaa)
Modified: branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport/PsionImportServiceTest.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport/PsionImportServiceTest.java 2014-05-13 14:30:26 UTC (rev 1761)
+++ branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport/PsionImportServiceTest.java 2014-05-13 20:52:44 UTC (rev 1762)
@@ -24,12 +24,16 @@
* #L%
*/
+import com.google.common.base.Predicate;
import fr.ifremer.tutti.TuttiConfigurationOption;
import fr.ifremer.tutti.persistence.ProgressionModel;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.service.TuttiEnumerationFile;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.service.ServiceDbResource;
import fr.ifremer.tutti.service.TuttiServiceContext;
@@ -79,6 +83,8 @@
protected File dataDirectory;
+ protected Predicate<SpeciesAbleBatch> vracPredicate;
+
@Before
public void setUp() throws Exception {
@@ -99,6 +105,9 @@
progressionModel.setTotal(9);
dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 3, OPERATION_2_ID, OPERATION_1_ID, OPERATION_3_ID);
+
+ TuttiEnumerationFile enumerationFile = persistenceService.getEnumerationFile();
+ vracPredicate = TuttiEntities.newSpeciesAbleBatchCategoryPredicate(enumerationFile.PMFM_ID_SORTED_UNSORTED, enumerationFile.QUALITATIVE_VRAC_ID);
}
@Test
@@ -111,24 +120,55 @@
catchBatch.setFishingOperation(operation);
BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), null);
- int oldNbBatchs = rootSpeciesBatch.sizeChildren();
+ int oldSortedBatchs = 0;
+ int oldUnsortedBatchs = 0;
+ for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) {
+ boolean sorted = vracPredicate.apply(speciesBatch);
+
+ if (sorted) {
+ oldSortedBatchs++;
+ } else {
+ oldUnsortedBatchs++;
+ }
+ }
+
PsionImportResult importResult = service.importFile(importFile, operation, catchBatch);
- int nbAdded = importResult.getNbImported();
+ int nbSortedAdded = importResult.getNbSortedImported();
+ int nbUnsortedAdded = importResult.getNbUnsortedImported();
List<String> errors = importResult.getErrors();
if (log.isInfoEnabled()) {
- log.info("Imported: " + nbAdded);
+ log.info("Sorted Imported: " + nbSortedAdded);
+ log.info("Unsorted Imported: " + nbUnsortedAdded);
log.info("Errors: " + errors.size());
}
- Assert.assertEquals(17, nbAdded);
+ int nbNewSortedBatchs = 10;
+ int nbNewUnsortedBatchs = 9;
+ Assert.assertEquals(nbNewSortedBatchs, nbSortedAdded);
+ Assert.assertEquals(nbNewUnsortedBatchs, nbUnsortedAdded);
Assert.assertEquals(0, errors.size());
// no batch imported
BatchContainer<SpeciesBatch> rootSpeciesBatchAfter = persistenceService.getRootSpeciesBatch(operation.getId(), null);
- Assert.assertEquals(oldNbBatchs + 17, rootSpeciesBatchAfter.sizeChildren());
+
+ int totalSortedBatchs = 0;
+ int totalUnsortedBatchs = 0;
+ for (SpeciesBatch speciesBatch : rootSpeciesBatchAfter.getChildren()) {
+
+ boolean sorted = vracPredicate.apply(speciesBatch);
+
+ if (sorted) {
+ totalSortedBatchs++;
+ } else {
+ totalUnsortedBatchs++;
+ }
+ }
+
+ Assert.assertEquals(oldSortedBatchs + nbNewSortedBatchs, totalSortedBatchs);
+ Assert.assertEquals(oldUnsortedBatchs + nbNewUnsortedBatchs, totalUnsortedBatchs);
}
@Test
@@ -141,23 +181,54 @@
catchBatch.setFishingOperation(operation);
BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), null);
- int oldNbBatchs = rootSpeciesBatch.sizeChildren();
+ int oldSortedBatchs = 0;
+ int oldUnsortedBatchs = 0;
+ for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) {
+ boolean sorted = vracPredicate.apply(speciesBatch);
+
+ if (sorted) {
+ oldSortedBatchs++;
+ } else {
+ oldUnsortedBatchs++;
+ }
+ }
+
PsionImportResult importResult = service.importFile(importFile, operation, catchBatch);
- int nbAdded = importResult.getNbImported();
+ int nbSortedAdded = importResult.getNbSortedImported();
+ int nbUnsortedAdded = importResult.getNbUnsortedImported();
List<String> errors = importResult.getErrors();
if (log.isInfoEnabled()) {
- log.info("Imported: " + nbAdded);
+ log.info("Sorted Imported: " + nbSortedAdded);
+ log.info("Unsorted Imported: " + nbUnsortedAdded);
log.info("Errors: " + errors.size());
}
- Assert.assertEquals(10, nbAdded);
+ int nbNewSortedBatchs = 0;
+ int nbNewUnsortedBatchs = 10;
+ Assert.assertEquals(nbNewSortedBatchs, nbSortedAdded);
+ Assert.assertEquals(nbNewUnsortedBatchs, nbUnsortedAdded);
Assert.assertEquals(0, errors.size());
BatchContainer<SpeciesBatch> rootSpeciesBatchAfter = persistenceService.getRootSpeciesBatch(operation.getId(), null);
- Assert.assertEquals(oldNbBatchs + 10, rootSpeciesBatchAfter.sizeChildren());
+
+ int totalSortedBatchs = 0;
+ int totalUnsortedBatchs = 0;
+ for (SpeciesBatch speciesBatch : rootSpeciesBatchAfter.getChildren()) {
+
+ boolean sorted = vracPredicate.apply(speciesBatch);
+
+ if (sorted) {
+ totalSortedBatchs++;
+ } else {
+ totalUnsortedBatchs++;
+ }
+ }
+
+ Assert.assertEquals(oldSortedBatchs + nbNewSortedBatchs, totalSortedBatchs);
+ Assert.assertEquals(oldUnsortedBatchs + nbNewUnsortedBatchs, totalUnsortedBatchs);
}
@Test
@@ -173,15 +244,18 @@
int oldNbBatchs = rootSpeciesBatch.sizeChildren();
PsionImportResult importResult = service.importFile(importFile, operation, catchBatch);
- int nbAdded = importResult.getNbImported();
+ int nbSortedAdded = importResult.getNbSortedImported();
+ int nbUnsortedAdded = importResult.getNbUnsortedImported();
List<String> errors = importResult.getErrors();
if (log.isInfoEnabled()) {
- log.info("Imported: " + nbAdded);
+ log.info("Sorted Imported: " + nbSortedAdded);
+ log.info("Unsorted Imported: " + nbUnsortedAdded);
log.info("Errors: " + errors.size());
}
- Assert.assertEquals(0, nbAdded);
+ Assert.assertEquals(0, nbSortedAdded);
+ Assert.assertEquals(0, nbUnsortedAdded);
Assert.assertEquals(1, errors.size());
// no batch imported
Modified: branches/tutti-3.4.x/tutti-service/src/test/resources/psion/CC053.IWA
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/resources/psion/CC053.IWA 2014-05-13 14:30:26 UTC (rev 1761)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/psion/CC053.IWA 2014-05-13 20:52:44 UTC (rev 1762)
@@ -1,5 +1,5 @@
cc
-A
+1
07-01-2013
07:19:11
Modified: branches/tutti-3.4.x/tutti-service/src/test/resources/psion/FM001.IWA
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/resources/psion/FM001.IWA 2014-05-13 14:30:26 UTC (rev 1761)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/psion/FM001.IWA 2014-05-13 20:52:44 UTC (rev 1762)
@@ -1,5 +1,5 @@
fm
-A
+1
07-01-2013
18:28:13
Modified: branches/tutti-3.4.x/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportPsionAction.java
===================================================================
--- branches/tutti-3.4.x/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportPsionAction.java 2014-05-13 14:30:26 UTC (rev 1761)
+++ branches/tutti-3.4.x/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportPsionAction.java 2014-05-13 20:52:44 UTC (rev 1762)
@@ -125,7 +125,7 @@
if (importResult.isDone()) {
sendMessage(t("tutti.editSpeciesBatch.action.importPsion.success",
- importResult.getNbImported()));
+ importResult.getNbSortedImported(), importResult.getNbUnsortedImported()));
} else {
StringBuilder sb = new StringBuilder();
Modified: branches/tutti-3.4.x/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- branches/tutti-3.4.x/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2014-05-13 14:30:26 UTC (rev 1761)
+++ branches/tutti-3.4.x/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2014-05-13 20:52:44 UTC (rev 1762)
@@ -982,7 +982,7 @@
tutti.editSpeciesBatch.action.importPsion.no.matching.data=Import psion non réalisé (des erreurs ont été détectées lors de la lecture du fichier)
tutti.editSpeciesBatch.action.importPsion.no.matching.fishingOperation=L'import Psion n'a pas été réalisé, des erreurs ont été détectées \:<ul>%s</ul><br/>Aucun lot n'a donc été importé.
tutti.editSpeciesBatch.action.importPsion.no.matching.fishingOperation.title=Import Psion
-tutti.editSpeciesBatch.action.importPsion.success=Import Psion réussi \: %1s espèces importées
+tutti.editSpeciesBatch.action.importPsion.success=Import Psion réussi \: %1s espèces importées (Vrac), %2s espèces importées (Hors-Vrac)
tutti.editSpeciesBatch.action.importPsion.tip=Import Psion
tutti.editSpeciesBatch.action.importPupitri=Import Pupitri
tutti.editSpeciesBatch.action.importPupitri.existingData.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour ne pas importer les données Pupitri et conserver les espèces saisies</li><li><strong>OK</strong> pour supprimer les espèces existantes et les remplacer par les données de Pupitri</li></ul>
1
0
See <http://ci.codelutin.com/jenkins/job/tutti-ci/76/changes>
Changes:
[Tony CHEMIT] Merge #5060 (from version 3.4.2)
[Tony CHEMIT] Merge #5058 (from version 3.4.2)
------------------------------------------
[...truncated 203 lines...]
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceWriteTest
Running fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceReadTest
2014-05-13 14:48:46,443 86 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceReadTest
2014-05-13 14:48:46,450 93 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-persistence/src…,> test [class fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceReadTest
Running fr.ifremer.tutti.persistence.service.AccidentalBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.AccidentalBatchPersistenceServiceReadTest
Running fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceReadTest
2014-05-13 14:48:46,457 100 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceReadTest
2014-05-13 14:48:46,462 105 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-persistence/src…,> test [class fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceReadTest
Running fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceWriteTest
2014-05-13 14:48:46,469 112 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceWriteTest
2014-05-13 14:48:46,471 114 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - No configuration file found in classpath at tutti-test-write.properties
2014-05-13 14:48:46,473 116 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceWriteTest
Running fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceWriteTest
2014-05-13 14:48:46,475 118 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceWriteTest
2014-05-13 14:48:46,483 126 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - No configuration file found in classpath at tutti-test-write.properties
2014-05-13 14:48:46,486 129 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceWriteTest
Running fr.ifremer.tutti.persistence.TuttiPersistenceWriteTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.TuttiPersistenceWriteTest
Results :
Tests run: 29, Failures: 0, Errors: 0, Skipped: 24
[JENKINS] Recording test results
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter).
log4j:WARN Please initialize the log4j system properly.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ tutti-persistence ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-persistence/tar…>
[INFO]
[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ tutti-persistence ---
[JENKINS] Archiving disabled
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: Ichtyometer API 3.5-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-ichtyometer ---
[INFO] Deleting <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-ichtyometer/tar…>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ tutti-ichtyometer ---
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tutti-ichtyometer ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ tutti-ichtyometer ---
[INFO] Compiling 15 source files to <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-ichtyometer/tar…>
[INFO]
[INFO] --- maven-antrun-plugin:1.7:run (generate-surefire-workdir) @ tutti-ichtyometer ---
[INFO] Executing tasks
main:
[mkdir] Created dir: <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-ichtyometer/tar…>
[INFO] Executed tasks
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ tutti-ichtyometer ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ tutti-ichtyometer ---
[INFO] Compiling 4 source files to <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-ichtyometer/tar…>
[INFO]
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ tutti-ichtyometer ---
[INFO] Surefire report directory: <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-ichtyometer/tar…>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running fr.ifremer.tutti.ichtyometer.IchtyometerClientTest
BlueCove log redirected to log4j
Native Library bluecove_x64 not available
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.133 sec - in fr.ifremer.tutti.ichtyometer.IchtyometerClientTest
Running fr.ifremer.tutti.ichtyometer.interactive.CommandEngineTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.ichtyometer.interactive.CommandEngineTest
Running fr.ifremer.tutti.ichtyometer.feed.FeedReaderTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.ichtyometer.feed.FeedReaderTest
Running fr.ifremer.tutti.ichtyometer.feed.FeedReaderRecordTest
2014-05-13 14:48:49,113 0 [main] INFO fr.ifremer.tutti.ichtyometer.feed.FeedReaderRecordTest - incoming CRC: A4F4F841 (2767517761) -- computed CRC: 1693D3D39 (6060588345)
2014-05-13 14:48:49,135 22 [main] INFO fr.ifremer.tutti.ichtyometer.feed.FeedReaderRecordTest - incoming CRC: A4F4F841 (2767517761) -- computed CRC: 1693D3D79 (6060588409)
2014-05-13 14:48:49,154 41 [main] INFO fr.ifremer.tutti.ichtyometer.feed.FeedReaderRecordTest - incoming CRC: C974F841 (3379886145) -- computed CRC: 1725D3D39 (6213680441)
2014-05-13 14:48:49,170 57 [main] INFO fr.ifremer.tutti.ichtyometer.feed.FeedReaderRecordTest - incoming CRC: E834F841 (3895785537) -- computed CRC: 17A0D3D39 (6342655289)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.081 sec - in fr.ifremer.tutti.ichtyometer.feed.FeedReaderRecordTest
Results :
Tests run: 4, Failures: 0, Errors: 0, Skipped: 2
[JENKINS] Recording test results
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ tutti-ichtyometer ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-ichtyometer/tar…>
[INFO]
[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ tutti-ichtyometer ---
[JENKINS] Archiving disabled
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: Service 3.5-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-service ---
[INFO] Deleting <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/target>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ tutti-service ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserJava (scan-sources) @ tutti-service ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserValidation (scan-sources) @ tutti-service ---
[INFO] Load rules file validation.rules
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:gen (scan-sources) @ tutti-service >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:get (get) @ tutti-service ---
[INFO] Copying tutti-service.properties to <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/target/…>
[INFO] Copying tutti-service.properties to <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/target/…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:gen (scan-sources) @ tutti-service <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:gen (scan-sources) @ tutti-service ---
[WARNING] bundle fr_FR contains 2/261 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 251/262 empty entries! (use -Di18n.showEmpty to see these entries)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tutti-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 18 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ tutti-service ---
[INFO] Compiling 96 source files to <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/target/…>
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/src/mai…>: Some input files use unchecked or unsafe operations.
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/src/mai…>: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- maven-antrun-plugin:1.7:run (generate-surefire-workdir) @ tutti-service ---
[INFO] Executing tasks
main:
[mkdir] Created dir: <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/target/…>
[INFO] Executed tasks
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ tutti-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 36 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ tutti-service ---
[INFO] Compiling 21 source files to <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/target/…>
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING :
[INFO] -------------------------------------------------------------
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/src/tes…>: Some input files use unchecked or unsafe operations.
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/src/tes…>: Recompile with -Xlint:unchecked for details.
[INFO] 2 warnings
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/src/tes…>:[93,75] method getRootSpeciesBatch in class fr.ifremer.tutti.service.PersistenceService cannot be applied to given types;
required: java.lang.String,boolean
found: java.lang.String,<nulltype>
reason: actual argument <nulltype> cannot be converted to boolean by method invocation conversion
[ERROR] <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/src/tes…>:[98,80] method getRootSpeciesBatch in class fr.ifremer.tutti.service.PersistenceService cannot be applied to given types;
required: java.lang.String,boolean
found: java.lang.String,<nulltype>
reason: actual argument <nulltype> cannot be converted to boolean by method invocation conversion
[INFO] 2 errors
[INFO] -------------------------------------------------------------
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Tutti ............................................. SUCCESS [ 1.923 s]
[INFO] Tutti :: Persistence .............................. SUCCESS [ 20.555 s]
[INFO] Tutti :: Ichtyometer API .......................... SUCCESS [ 1.264 s]
[INFO] Tutti :: Service .................................. FAILURE [ 4.886 s]
[INFO] Tutti :: UI ....................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30.081 s
[INFO] Finished at: 2014-05-13T14:48:54+01:00
[INFO] Final Memory: 80M/804M
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project tutti-service: Compilation failure: Compilation failure:
[ERROR] <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/src/tes…>:[93,75] method getRootSpeciesBatch in class fr.ifremer.tutti.service.PersistenceService cannot be applied to given types;
[ERROR] required: java.lang.String,boolean
[ERROR] found: java.lang.String,<nulltype>
[ERROR] reason: actual argument <nulltype> cannot be converted to boolean by method invocation conversion
[ERROR] <http://ci.codelutin.com/jenkins/job/tutti-ci/ws/trunk/tutti-service/src/tes…>:[98,80] method getRootSpeciesBatch in class fr.ifremer.tutti.service.PersistenceService cannot be applied to given types;
[ERROR] required: java.lang.String,boolean
[ERROR] found: java.lang.String,<nulltype>
[ERROR] reason: actual argument <nulltype> cannot be converted to boolean by method invocation conversion
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project tutti-service: Compilation failure
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.jvnet.hudson.maven3.launcher.Maven31Launcher.main(Maven31Launcher.java:132)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238)
at jenkins.maven3.agent.Maven31Main.launch(Maven31Main.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:134)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:69)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:328)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:858)
at org.apache.maven.plugin.compiler.TestCompilerMojo.execute(TestCompilerMojo.java:152)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 30 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :tutti-service
Sending e-mails to: tutti-commits(a)list.forge.codelutin.com chemit+codelutin-ci(a)codelutin.com
channel stopped
1
1
Build failed in Jenkins: tutti-ci » Tutti :: Service #76
by admin+ci-codelutin.com@codelutin.com 13 May '14
by admin+ci-codelutin.com@codelutin.com 13 May '14
13 May '14
See <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>
Changes:
[Tony CHEMIT] Merge #5060 (from version 3.4.2)
------------------------------------------
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: Service 3.5-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-service ---
[INFO] Deleting <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ tutti-service ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserJava (scan-sources) @ tutti-service ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserValidation (scan-sources) @ tutti-service ---
[INFO] Load rules file validation.rules
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:gen (scan-sources) @ tutti-service >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:get (get) @ tutti-service ---
[INFO] Copying tutti-service.properties to <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>
[INFO] Copying tutti-service.properties to <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:gen (scan-sources) @ tutti-service <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:gen (scan-sources) @ tutti-service ---
[WARNING] bundle fr_FR contains 2/261 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 251/262 empty entries! (use -Di18n.showEmpty to see these entries)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tutti-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 18 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ tutti-service ---
[INFO] Compiling 96 source files to <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>: Some input files use unchecked or unsafe operations.
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- maven-antrun-plugin:1.7:run (generate-surefire-workdir) @ tutti-service ---
[INFO] Executing tasks
main:
[mkdir] Created dir: <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>
[INFO] Executed tasks
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ tutti-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 36 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ tutti-service ---
[INFO] Compiling 21 source files to <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING :
[INFO] -------------------------------------------------------------
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>: Some input files use unchecked or unsafe operations.
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>: Recompile with -Xlint:unchecked for details.
[INFO] 2 warnings
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>:[93,75] method getRootSpeciesBatch in class fr.ifremer.tutti.service.PersistenceService cannot be applied to given types;
required: java.lang.String,boolean
found: java.lang.String,<nulltype>
reason: actual argument <nulltype> cannot be converted to boolean by method invocation conversion
[ERROR] <http://ci.codelutin.com/jenkins/job/tutti-ci/fr.ifremer.tutti$tutti-service…>:[98,80] method getRootSpeciesBatch in class fr.ifremer.tutti.service.PersistenceService cannot be applied to given types;
required: java.lang.String,boolean
found: java.lang.String,<nulltype>
reason: actual argument <nulltype> cannot be converted to boolean by method invocation conversion
[INFO] 2 errors
[INFO] -------------------------------------------------------------
[JENKINS] Archiving disabled
1
1
r1761 - trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri
by tchemit@users.forge.codelutin.com 13 May '14
by tchemit@users.forge.codelutin.com 13 May '14
13 May '14
Author: tchemit
Date: 2014-05-13 16:30:26 +0200 (Tue, 13 May 2014)
New Revision: 1761
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1761
Log:
Merge refs #5060 (from version 3.4.2)
Modified:
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java
Modified: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java 2014-05-13 12:28:45 UTC (rev 1760)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java 2014-05-13 14:30:26 UTC (rev 1761)
@@ -90,12 +90,12 @@
CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operation.getId());
catchBatch.setFishingOperation(operation);
- BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), null);
+ BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), false);
Assert.assertEquals(3, rootSpeciesBatch.sizeChildren());
int nbNotAdded = service.importPupitri(trunk, carroussel, operation, catchBatch).getNbCarrousselNotImported();
Assert.assertEquals(1, nbNotAdded);
- BatchContainer<SpeciesBatch> rootSpeciesBatchAfter = persistenceService.getRootSpeciesBatch(operation.getId(), null);
+ BatchContainer<SpeciesBatch> rootSpeciesBatchAfter = persistenceService.getRootSpeciesBatch(operation.getId(), false);
Assert.assertEquals(2, rootSpeciesBatchAfter.sizeChildren());
Set<Integer> unexpectedSpecies = Sets.newHashSet(
1
0
r1760 - in trunk/tutti-service/src: main/java/fr/ifremer/tutti/service/pupitri test/java/fr/ifremer/tutti/service/pupitri test/resources/pupitri
by tchemit@users.forge.codelutin.com 13 May '14
by tchemit@users.forge.codelutin.com 13 May '14
13 May '14
Author: tchemit
Date: 2014-05-13 14:28:45 +0200 (Tue, 13 May 2014)
New Revision: 1760
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1760
Log:
Merge #5060 (from version 3.4.2)
Added:
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java
trunk/tutti-service/src/test/resources/pupitri/evo-5060.car
trunk/tutti-service/src/test/resources/pupitri/evo-5060.tnk
trunk/tutti-service/src/test/resources/pupitri/evo-5060.tuttiProtocol
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java 2014-05-13 12:28:13 UTC (rev 1759)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java 2014-05-13 12:28:45 UTC (rev 1760)
@@ -125,4 +125,11 @@
this.weight = weight;
}
+ public boolean isSorted() {
+
+ boolean sorted = Directions.VAT == direction && !"H".equals(sign);
+ return sorted;
+
+ }
+
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java 2014-05-13 12:28:13 UTC (rev 1759)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java 2014-05-13 12:28:45 UTC (rev 1760)
@@ -57,6 +57,19 @@
return QualitativeValueId2.SEX_UNDEFINED.getValue();
}
},
+ UNSORTED("H") {
+ @Override
+ public Integer getCategory() {
+ // special case, there is no cateogry possible here
+ return null;
+ }
+
+ @Override
+ public Integer getQualitativeValueId() {
+ // special case, there is no cateogry possible here
+ return null;
+ }
+ },
MALE("1") {
@Override
public Integer getCategory() {
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java 2014-05-13 12:28:13 UTC (rev 1759)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java 2014-05-13 12:28:45 UTC (rev 1760)
@@ -301,20 +301,22 @@
result.incrementNbCarrousselImported();
String speciesId = bean.getSpeciesId();
+
+ if (Directions.HOV.equals(bean.getDirection())) {
+
+ // Do not accept any longer this direction (see https://forge.codelutin.com/issues/5060)
+ notFoundSpecies.add(speciesId);
+ continue;
+ }
+
List<Species> speciesList = speciesBySurveyCode.get(speciesId);
Float beanWeight = bean.getWeight();
if (beanWeight < 0f) {
beanWeight = 0f;
}
- boolean sorted;
- switch (bean.getDirection()) {
- case HOV:
- sorted = false;
- break;
-
- default:
- sorted = true;
- carrouselSortedWeight += beanWeight;
+ boolean sorted = bean.isSorted();
+ if (sorted) {
+ carrouselSortedWeight += beanWeight;
}
if (CollectionUtils.isNotEmpty(speciesList)) {
@@ -448,6 +450,10 @@
PupitriCatch.Signs.DEFAULT
);
+ public static final Set<PupitriCatch.Signs> UNSORTED_SIGNS = Sets.newHashSet(
+ PupitriCatch.Signs.UNSORTED
+ );
+
public static final Set<PupitriCatch.Signs> SEX_SIGNS = Sets.newHashSet(
PupitriCatch.Signs.DEFAULT,
PupitriCatch.Signs.MALE,
@@ -465,7 +471,7 @@
* Check that the given species catch can be split.
* For the moment accept for a same catch :
* <ul>
- * <li>Signs.DEFAULT, Signs.MALE, Signs.FEMALE</li>
+ * <li>Signs.DEFAULT, Signs.UNSORTED, Signs.MALE, Signs.FEMALE</li>
* <li>Signs.SMALL, Signs.MEDIUM, Signs.BIG</li>
* </ul>
* See http://forge.codelutin.com/issues/3898
@@ -485,6 +491,10 @@
// only a default sign, no split
result = false;
+ } else if (UNSORTED_SIGNS.equals(signs)) {
+
+ // only a unsorted sign, no split
+ result = false;
} else {
// remove all sex signs
Added: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java 2014-05-13 12:28:45 UTC (rev 1760)
@@ -0,0 +1,130 @@
+package fr.ifremer.tutti.service.pupitri;
+
+import com.google.common.collect.Sets;
+import fr.ifremer.tutti.TuttiConfigurationOption;
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.ServiceDbResource;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.nuiton.decorator.Decorator;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Set;
+
+/**
+ * Created on 5/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 3.4.2
+ */
+public class PupitriImportServiceEvo5060Test {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(PupitriImportServiceEvo5060Test.class);
+
+ @ClassRule
+ public static final ServiceDbResource dbResource =
+ ServiceDbResource.writeDb("dbExport");
+
+ public static final String PROGRAM_ID = "CAM-TEST_ELEVATION";
+
+ public static final String CRUISE_ID = "100003";
+
+ public static final String OPERATION_1_ID = "100112";
+
+ public static final String OPERATION_2_ID = "100113";
+
+ public static final String OPERATION_3_ID = "100115";
+
+ protected PupitriImportExportService service;
+
+ protected PersistenceService persistenceService;
+
+ protected DecoratorService decoratorService;
+
+ protected ServiceDbResource.DataContext dataContext;
+
+ @Before
+ public void setUp() throws Exception {
+
+ TuttiServiceContext serviceContext = dbResource.getServiceContext();
+
+ persistenceService = serviceContext.getService(PersistenceService.class);
+
+ decoratorService = serviceContext.getService(DecoratorService.class);
+
+ dbResource.openDataContext();
+
+ service = serviceContext.getService(PupitriImportExportService.class);
+
+ dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 3,
+ OPERATION_2_ID,
+ OPERATION_1_ID,
+ OPERATION_3_ID);
+ }
+
+ @Test
+ public void importPupitri() throws IOException {
+
+ File trunk = dbResource.copyClassPathResource("pupitri/evo-5060.tnk", "pupitri.tnk");
+ File carroussel = dbResource.copyClassPathResource("pupitri/evo-5060.car", "pupitri.car");
+ File protocol = dbResource.copyClassPathResource("pupitri/evo-5060.tuttiProtocol", "evo-5060.tuttiProtocol");
+ dbResource.getConfig().getApplicationConfig().setOption(TuttiConfigurationOption.DB_PROTOCOL_DIRECTORY.getKey(), protocol.getParentFile().getAbsolutePath());
+ TuttiProtocol protocol1 = persistenceService.getProtocol("evo-5060");
+ persistenceService.setProtocol(protocol1);
+
+ FishingOperation operation = dataContext.operations.get(1);
+ CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operation.getId());
+ catchBatch.setFishingOperation(operation);
+
+ BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), null);
+ Assert.assertEquals(3, rootSpeciesBatch.sizeChildren());
+
+ int nbNotAdded = service.importPupitri(trunk, carroussel, operation, catchBatch).getNbCarrousselNotImported();
+ Assert.assertEquals(1, nbNotAdded);
+ BatchContainer<SpeciesBatch> rootSpeciesBatchAfter = persistenceService.getRootSpeciesBatch(operation.getId(), null);
+ Assert.assertEquals(2, rootSpeciesBatchAfter.sizeChildren());
+
+ Set<Integer> unexpectedSpecies = Sets.newHashSet(
+ );
+ Set<Integer> expectedSpecies = Sets.newHashSet(
+
+ 17186, // ACATPAL
+ 16328 // ACAPPEL
+ );
+
+ Decorator<Species> speciesDecorator = decoratorService.getDecoratorByType(Species.class);
+
+ for (SpeciesBatch speciesBatch : rootSpeciesBatchAfter.getChildren()) {
+
+ Species species = speciesBatch.getSpecies();
+ Integer speciesId = species.getIdAsInt();
+ boolean remove = expectedSpecies.remove(speciesId);
+ if (log.isInfoEnabled()) {
+ log.info("Species : " + speciesId + " : " + speciesDecorator.toString(species));
+ }
+ if (!remove) {
+ unexpectedSpecies.add(speciesId);
+ if (log.isWarnEnabled()) {
+ log.warn("Unexpected Species " + speciesId);
+ }
+ }
+ }
+
+ Assert.assertTrue("Expected species not found: " + expectedSpecies, expectedSpecies.isEmpty());
+ Assert.assertTrue("Unexpected species found: " + unexpectedSpecies, unexpectedSpecies.isEmpty());
+ }
+}
Property changes on: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/tutti-service/src/test/resources/pupitri/evo-5060.car (from rev 1758, branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.car)
===================================================================
--- trunk/tutti-service/src/test/resources/pupitri/evo-5060.car (rev 0)
+++ trunk/tutti-service/src/test/resources/pupitri/evo-5060.car 2014-05-13 12:28:45 UTC (rev 1760)
@@ -0,0 +1,3 @@
+$TSMES,27/11/13,09:17:40.272,BLCAR, 0,A,1,002,MERLMNG,0,HOV,0021.1,
+$TSMES,27/11/13,09:18:48.818,BLCAR, 0,A,1,002,ACAN-PEL,H,VAT,100.0,
+$TSMES,27/11/13,09:18:48.818,BLCAR, 0,A,1,002,ACANPAL,0,VAT,200.0,
Copied: trunk/tutti-service/src/test/resources/pupitri/evo-5060.tnk (from rev 1758, branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.tnk)
===================================================================
--- trunk/tutti-service/src/test/resources/pupitri/evo-5060.tnk (rev 0)
+++ trunk/tutti-service/src/test/resources/pupitri/evo-5060.tnk 2014-05-13 12:28:45 UTC (rev 1760)
@@ -0,0 +1,32 @@
+$TSMES,27/11/13,09:08:45.130,BLTNK, 0,A,1,VAT,0045.4,
+$TSMES,27/11/13,09:10:10.522,BLTNK, 0,A,1,VAT,0045.0,
+$TSMES,27/11/13,09:12:14.730,BLTNK, 0,A,1,VAT,0043.9,
+$TSMES,27/11/13,09:14:06.033,BLTNK, 0,A,1,VAT,0044.0,
+$TSMES,27/11/13,09:16:08.907,BLTNK, 0,A,1,VAT,0042.4,
+$TSMES,27/11/13,09:17:47.515,BLTNK, 0,A,1,VAT,0044.3,
+$TSMES,27/11/13,09:19:44.039,BLTNK, 0,A,1,VAT,0043.6,
+$TSMES,27/11/13,09:21:49.166,BLTNK, 0,A,1,VAT,0044.2,
+$TSMES,27/11/13,09:26:57.681,BLTNK, 0,A,1,VAT,0045.9,
+$TSMES,27/11/13,09:29:20.020,BLTNK, 0,A,1,VAT,0045.8,
+$TSMES,27/11/13,09:30:37.535,BLTNK, 0,A,1,VAT,0047.0,
+$TSMES,27/11/13,09:32:16.153,BLTNK, 0,A,1,VAT,0046.6,
+$TSMES,27/11/13,09:33:30.882,BLTNK, 0,A,1,VAT,0044.4,
+$TSMES,27/11/13,09:34:50.649,BLTNK, 0,A,1,VAT,0044.5,
+$TSMES,27/11/13,09:36:36.933,BLTNK, 0,A,1,VAT,0043.7,
+$TSMES,27/11/13,09:37:53.424,BLTNK, 0,A,1,VAT,0046.4,
+$TSMES,27/11/13,09:41:40.944,BLTNK, 0,A,1,VAT,0048.6,
+$TSMES,27/11/13,09:43:33.377,BLTNK, 0,A,1,VAT,0046.4,
+$TSMES,27/11/13,09:44:46.487,BLTNK, 0,A,1,VAT,0046.4,
+$TSMES,27/11/13,09:46:12.192,BLTNK, 0,A,1,VAT,0045.2,
+$TSMES,27/11/13,09:47:34.846,BLTNK, 0,A,1,VAT,0045.4,
+$TSMES,27/11/13,09:48:55.920,BLTNK, 0,A,1,VAT,0048.4,
+$TSMES,27/11/13,09:51:12.724,BLTNK, 0,A,1,VAT,0046.4,
+$TSMES,27/11/13,09:54:14.063,BLTNK, 0,A,1,VAT,0040.4,
+$TSMES,27/11/13,09:56:11.000,BLTNK, 0,A,1,VAT,0044.2,
+$TSMES,27/11/13,09:57:38.344,BLTNK, 0,A,1,VAT,0047.3,
+$TSMES,27/11/13,09:59:23.603,BLTNK, 0,A,1,VAT,0047.6,
+$TSMES,27/11/13,10:00:51.868,BLTNK, 0,A,1,VAT,0047.9,
+$TSMES,27/11/13,10:02:29.655,BLTNK, 0,A,1,VAT,0044.2,
+$TSMES,27/11/13,10:04:14.101,BLTNK, 0,A,1,VAT,0045.9,
+$TSMES,27/11/13,10:06:08.886,BLTNK, 0,A,1,VAT,0043.2,
+$TSMES,27/11/13,10:08:35.000,BLTNK, 0,A,1,VAT,0007.5,
Copied: trunk/tutti-service/src/test/resources/pupitri/evo-5060.tuttiProtocol (from rev 1758, branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.tuttiProtocol)
===================================================================
--- trunk/tutti-service/src/test/resources/pupitri/evo-5060.tuttiProtocol (rev 0)
+++ trunk/tutti-service/src/test/resources/pupitri/evo-5060.tuttiProtocol 2014-05-13 12:28:45 UTC (rev 1760)
@@ -0,0 +1,81 @@
+id: c6ee2088-9720-46c0-b8d2-8f21c902676f
+name: Protocole EVHOE 2013
+benthos:
+comment: Protocole pour les tests 2013 avec Jean Jacques Rivoalen
+gearUseFeaturePmfmId:
+- 131
+- 828
+- 884
+- 965
+lengthClassesPmfmId:
+- 306
+- 622
+- 307
+- 302
+- 299
+- 1394
+- 1417
+- 1425
+- 1426
+- 1427
+- 283
+- 284
+- 285
+- 294
+- 295
+- 300
+- 301
+- 304
+- 318
+- 319
+- 322
+- 323
+- 661
+- 662
+species:
+- !SpeciesProtocol
+ id: 2a8122cf-d238-4820-a7b9-eacaf1f302bd
+ calcifySampleEnabled: true
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 1551
+ speciesSurveyCode: MERLMNG
+ weightEnabled: true
+- !SpeciesProtocol
+ id: 0de3f5c9-0ca9-4a7c-84aa-323d9eaa7f7f
+ countIfNoFrequencyEnabled: true
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 872
+ speciesSurveyCode: ACAN-PEL
+ weightEnabled: true
+- !SpeciesProtocol
+ id: ddffa4c9-cbb5-447f-a829-e2ac0cfea0f5
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 1732
+ speciesSurveyCode: ACANPAL
+ weightEnabled: true
+vesselUseFeaturePmfmId:
+- 173
+- 194
+- 230
+- 782
+- 843
+- 844
+- 846
+- 847
+- 848
+- 849
+- 850
+- 851
+- 857
+- 858
+- 859
+- 861
+- 862
+- 863
+- 881
+- 882
+- 883
1
0
r1759 - trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/type
by tchemit@users.forge.codelutin.com 13 May '14
by tchemit@users.forge.codelutin.com 13 May '14
13 May '14
Author: tchemit
Date: 2014-05-13 14:28:13 +0200 (Tue, 13 May 2014)
New Revision: 1759
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1759
Log:
Merge #5058 (from version 3.4.2)
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/type/WeightUnit.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/type/WeightUnit.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/type/WeightUnit.java 2014-05-13 12:11:02 UTC (rev 1758)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/type/WeightUnit.java 2014-05-13 12:28:13 UTC (rev 1759)
@@ -37,7 +37,7 @@
*/
public enum WeightUnit {
- G(n("application.common.unit.g"), n("application.common.unit.short.g"), 1, "\\d{0,6}(\\.\\d{0,1})?") {
+ G(n("application.common.unit.g"), n("application.common.unit.short.g"), 1, "\\d{0,8}(\\.\\d{0,1})?") {
@Override
public Float fromEntity(Float weight) {
return weight == null ? null : weight * 1000;
1
0
r1758 - in branches/tutti-3.4.x/tutti-service/src: main/java/fr/ifremer/tutti/service/pupitri test/java/fr/ifremer/tutti/service/pupitri test/resources/pupitri
by tchemit@users.forge.codelutin.com 13 May '14
by tchemit@users.forge.codelutin.com 13 May '14
13 May '14
Author: tchemit
Date: 2014-05-13 14:11:02 +0200 (Tue, 13 May 2014)
New Revision: 1758
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1758
Log:
fxes #5060 Changer la gestion du Hors-Vrac
Added:
branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java
branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.car
branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.tnk
branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.tuttiProtocol
Modified:
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java 2014-05-13 11:22:05 UTC (rev 1757)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java 2014-05-13 12:11:02 UTC (rev 1758)
@@ -125,4 +125,11 @@
this.weight = weight;
}
+ public boolean isSorted() {
+
+ boolean sorted = Directions.VAT == direction && !"H".equals(sign);
+ return sorted;
+
+ }
+
}
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java 2014-05-13 11:22:05 UTC (rev 1757)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java 2014-05-13 12:11:02 UTC (rev 1758)
@@ -55,6 +55,19 @@
return enumerationFile.QUALITATIVE_SEX_UNDEFINED_ID;
}
},
+ UNSORTED("H") {
+ @Override
+ public Integer getCategory(TuttiEnumerationFile enumerationFile) {
+ // special case, there is no cateogry possible here
+ return null;
+ }
+
+ @Override
+ public Integer getQualitativeValueId(TuttiEnumerationFile enumerationFile) {
+ // special case, there is no cateogry possible here
+ return null;
+ }
+ },
MALE("1") {
@Override
public Integer getCategory(TuttiEnumerationFile enumerationFile) {
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java 2014-05-13 11:22:05 UTC (rev 1757)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java 2014-05-13 12:11:02 UTC (rev 1758)
@@ -318,21 +318,32 @@
result.incrementNbCarrousselImported();
String speciesId = bean.getSpeciesId();
+
+ if (Directions.HOV.equals(bean.getDirection())) {
+
+ // Do not accept any longer this direction (see https://forge.codelutin.com/issues/5060)
+ notFoundSpecies.add(speciesId);
+ continue;
+ }
+
List<Species> speciesList = speciesBySurveyCode.get(speciesId);
Float beanWeight = bean.getWeight();
if (beanWeight < 0f) {
beanWeight = 0f;
}
- boolean sorted;
- switch (bean.getDirection()) {
- case HOV:
- sorted = false;
- break;
-
- default:
- sorted = true;
- carrouselSortedWeight += beanWeight;
+ boolean sorted = bean.isSorted();
+ if (sorted) {
+ carrouselSortedWeight += beanWeight;
}
+// switch (bean.getDirection()) {
+// case HOV:
+// sorted = false;
+// break;
+//
+// default:
+// sorted = true;
+// carrouselSortedWeight += beanWeight;
+// }
if (CollectionUtils.isNotEmpty(speciesList)) {
@@ -466,6 +477,10 @@
PupitriCatch.Signs.DEFAULT
);
+ public static final Set<PupitriCatch.Signs> UNSORTED_SIGNS = Sets.newHashSet(
+ PupitriCatch.Signs.UNSORTED
+ );
+
public static final Set<PupitriCatch.Signs> SEX_SIGNS = Sets.newHashSet(
PupitriCatch.Signs.DEFAULT,
PupitriCatch.Signs.MALE,
@@ -483,7 +498,7 @@
* Check that the given species catch can be split.
* For the moment accept for a same catch :
* <ul>
- * <li>Signs.DEFAULT, Signs.MALE, Signs.FEMALE</li>
+ * <li>Signs.DEFAULT, Signs.UNSORTED, Signs.MALE, Signs.FEMALE</li>
* <li>Signs.SMALL, Signs.MEDIUM, Signs.BIG</li>
* </ul>
* See http://forge.codelutin.com/issues/3898
@@ -503,6 +518,10 @@
// only a default sign, no split
result = false;
+ } else if (UNSORTED_SIGNS.equals(signs)) {
+
+ // only a unsorted sign, no split
+ result = false;
} else {
// remove all sex signs
Added: branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java 2014-05-13 12:11:02 UTC (rev 1758)
@@ -0,0 +1,130 @@
+package fr.ifremer.tutti.service.pupitri;
+
+import com.google.common.collect.Sets;
+import fr.ifremer.tutti.TuttiConfigurationOption;
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.ServiceDbResource;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.nuiton.decorator.Decorator;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Set;
+
+/**
+ * Created on 5/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 3.4.2
+ */
+public class PupitriImportServiceEvo5060Test {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(PupitriImportServiceEvo5060Test.class);
+
+ @ClassRule
+ public static final ServiceDbResource dbResource =
+ ServiceDbResource.writeDb("dbExport");
+
+ public static final String PROGRAM_ID = "CAM-TEST_ELEVATION";
+
+ public static final String CRUISE_ID = "100003";
+
+ public static final String OPERATION_1_ID = "100112";
+
+ public static final String OPERATION_2_ID = "100113";
+
+ public static final String OPERATION_3_ID = "100115";
+
+ protected PupitriImportExportService service;
+
+ protected PersistenceService persistenceService;
+
+ protected DecoratorService decoratorService;
+
+ protected ServiceDbResource.DataContext dataContext;
+
+ @Before
+ public void setUp() throws Exception {
+
+ TuttiServiceContext serviceContext = dbResource.getServiceContext();
+
+ persistenceService = serviceContext.getService(PersistenceService.class);
+
+ decoratorService = serviceContext.getService(DecoratorService.class);
+
+ dbResource.openDataContext();
+
+ service = serviceContext.getService(PupitriImportExportService.class);
+
+ dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 3,
+ OPERATION_2_ID,
+ OPERATION_1_ID,
+ OPERATION_3_ID);
+ }
+
+ @Test
+ public void importPupitri() throws IOException {
+
+ File trunk = dbResource.copyClassPathResource("pupitri/evo-5060.tnk", "pupitri.tnk");
+ File carroussel = dbResource.copyClassPathResource("pupitri/evo-5060.car", "pupitri.car");
+ File protocol = dbResource.copyClassPathResource("pupitri/evo-5060.tuttiProtocol", "evo-5060.tuttiProtocol");
+ dbResource.getConfig().getApplicationConfig().setOption(TuttiConfigurationOption.DB_PROTOCOL_DIRECTORY.getKey(), protocol.getParentFile().getAbsolutePath());
+ TuttiProtocol protocol1 = persistenceService.getProtocol("evo-5060");
+ persistenceService.setProtocol(protocol1);
+
+ FishingOperation operation = dataContext.operations.get(1);
+ CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operation.getId());
+ catchBatch.setFishingOperation(operation);
+
+ BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), null);
+ Assert.assertEquals(3, rootSpeciesBatch.sizeChildren());
+
+ int nbNotAdded = service.importPupitri(trunk, carroussel, operation, catchBatch).getNbCarrousselNotImported();
+ Assert.assertEquals(1, nbNotAdded);
+ BatchContainer<SpeciesBatch> rootSpeciesBatchAfter = persistenceService.getRootSpeciesBatch(operation.getId(), null);
+ Assert.assertEquals(2, rootSpeciesBatchAfter.sizeChildren());
+
+ Set<Integer> unexpectedSpecies = Sets.newHashSet(
+ );
+ Set<Integer> expectedSpecies = Sets.newHashSet(
+
+ 17186, // ACATPAL
+ 16328 // ACAPPEL
+ );
+
+ Decorator<Species> speciesDecorator = decoratorService.getDecoratorByType(Species.class);
+
+ for (SpeciesBatch speciesBatch : rootSpeciesBatchAfter.getChildren()) {
+
+ Species species = speciesBatch.getSpecies();
+ Integer speciesId = species.getIdAsInt();
+ boolean remove = expectedSpecies.remove(speciesId);
+ if (log.isInfoEnabled()) {
+ log.info("Species : " + speciesId + " : " + speciesDecorator.toString(species));
+ }
+ if (!remove) {
+ unexpectedSpecies.add(speciesId);
+ if (log.isWarnEnabled()) {
+ log.warn("Unexpected Species " + speciesId);
+ }
+ }
+ }
+
+ Assert.assertTrue("Expected species not found: " + expectedSpecies, expectedSpecies.isEmpty());
+ Assert.assertTrue("Unexpected species found: " + unexpectedSpecies, unexpectedSpecies.isEmpty());
+ }
+}
Property changes on: branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5060Test.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.car
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.car (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.car 2014-05-13 12:11:02 UTC (rev 1758)
@@ -0,0 +1,3 @@
+$TSMES,27/11/13,09:17:40.272,BLCAR, 0,A,1,002,MERLMNG,0,HOV,0021.1,
+$TSMES,27/11/13,09:18:48.818,BLCAR, 0,A,1,002,ACAN-PEL,H,VAT,100.0,
+$TSMES,27/11/13,09:18:48.818,BLCAR, 0,A,1,002,ACANPAL,0,VAT,200.0,
Added: branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.tnk
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.tnk (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.tnk 2014-05-13 12:11:02 UTC (rev 1758)
@@ -0,0 +1,32 @@
+$TSMES,27/11/13,09:08:45.130,BLTNK, 0,A,1,VAT,0045.4,
+$TSMES,27/11/13,09:10:10.522,BLTNK, 0,A,1,VAT,0045.0,
+$TSMES,27/11/13,09:12:14.730,BLTNK, 0,A,1,VAT,0043.9,
+$TSMES,27/11/13,09:14:06.033,BLTNK, 0,A,1,VAT,0044.0,
+$TSMES,27/11/13,09:16:08.907,BLTNK, 0,A,1,VAT,0042.4,
+$TSMES,27/11/13,09:17:47.515,BLTNK, 0,A,1,VAT,0044.3,
+$TSMES,27/11/13,09:19:44.039,BLTNK, 0,A,1,VAT,0043.6,
+$TSMES,27/11/13,09:21:49.166,BLTNK, 0,A,1,VAT,0044.2,
+$TSMES,27/11/13,09:26:57.681,BLTNK, 0,A,1,VAT,0045.9,
+$TSMES,27/11/13,09:29:20.020,BLTNK, 0,A,1,VAT,0045.8,
+$TSMES,27/11/13,09:30:37.535,BLTNK, 0,A,1,VAT,0047.0,
+$TSMES,27/11/13,09:32:16.153,BLTNK, 0,A,1,VAT,0046.6,
+$TSMES,27/11/13,09:33:30.882,BLTNK, 0,A,1,VAT,0044.4,
+$TSMES,27/11/13,09:34:50.649,BLTNK, 0,A,1,VAT,0044.5,
+$TSMES,27/11/13,09:36:36.933,BLTNK, 0,A,1,VAT,0043.7,
+$TSMES,27/11/13,09:37:53.424,BLTNK, 0,A,1,VAT,0046.4,
+$TSMES,27/11/13,09:41:40.944,BLTNK, 0,A,1,VAT,0048.6,
+$TSMES,27/11/13,09:43:33.377,BLTNK, 0,A,1,VAT,0046.4,
+$TSMES,27/11/13,09:44:46.487,BLTNK, 0,A,1,VAT,0046.4,
+$TSMES,27/11/13,09:46:12.192,BLTNK, 0,A,1,VAT,0045.2,
+$TSMES,27/11/13,09:47:34.846,BLTNK, 0,A,1,VAT,0045.4,
+$TSMES,27/11/13,09:48:55.920,BLTNK, 0,A,1,VAT,0048.4,
+$TSMES,27/11/13,09:51:12.724,BLTNK, 0,A,1,VAT,0046.4,
+$TSMES,27/11/13,09:54:14.063,BLTNK, 0,A,1,VAT,0040.4,
+$TSMES,27/11/13,09:56:11.000,BLTNK, 0,A,1,VAT,0044.2,
+$TSMES,27/11/13,09:57:38.344,BLTNK, 0,A,1,VAT,0047.3,
+$TSMES,27/11/13,09:59:23.603,BLTNK, 0,A,1,VAT,0047.6,
+$TSMES,27/11/13,10:00:51.868,BLTNK, 0,A,1,VAT,0047.9,
+$TSMES,27/11/13,10:02:29.655,BLTNK, 0,A,1,VAT,0044.2,
+$TSMES,27/11/13,10:04:14.101,BLTNK, 0,A,1,VAT,0045.9,
+$TSMES,27/11/13,10:06:08.886,BLTNK, 0,A,1,VAT,0043.2,
+$TSMES,27/11/13,10:08:35.000,BLTNK, 0,A,1,VAT,0007.5,
\ No newline at end of file
Copied: branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.tuttiProtocol (from rev 1756, branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.tuttiProtocol)
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.tuttiProtocol (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/evo-5060.tuttiProtocol 2014-05-13 12:11:02 UTC (rev 1758)
@@ -0,0 +1,81 @@
+id: c6ee2088-9720-46c0-b8d2-8f21c902676f
+name: Protocole EVHOE 2013
+benthos:
+comment: Protocole pour les tests 2013 avec Jean Jacques Rivoalen
+gearUseFeaturePmfmId:
+- 131
+- 828
+- 884
+- 965
+lengthClassesPmfmId:
+- 306
+- 622
+- 307
+- 302
+- 299
+- 1394
+- 1417
+- 1425
+- 1426
+- 1427
+- 283
+- 284
+- 285
+- 294
+- 295
+- 300
+- 301
+- 304
+- 318
+- 319
+- 322
+- 323
+- 661
+- 662
+species:
+- !SpeciesProtocol
+ id: 2a8122cf-d238-4820-a7b9-eacaf1f302bd
+ calcifySampleEnabled: true
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 1551
+ speciesSurveyCode: MERLMNG
+ weightEnabled: true
+- !SpeciesProtocol
+ id: 0de3f5c9-0ca9-4a7c-84aa-323d9eaa7f7f
+ countIfNoFrequencyEnabled: true
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 872
+ speciesSurveyCode: ACAN-PEL
+ weightEnabled: true
+- !SpeciesProtocol
+ id: ddffa4c9-cbb5-447f-a829-e2ac0cfea0f5
+ countIfNoFrequencyEnabled: true
+ lengthStepPmfmId: 306
+ mandatorySampleCategoryId: []
+ speciesReferenceTaxonId: 1732
+ speciesSurveyCode: ACANPAL
+ weightEnabled: true
+vesselUseFeaturePmfmId:
+- 173
+- 194
+- 230
+- 782
+- 843
+- 844
+- 846
+- 847
+- 848
+- 849
+- 850
+- 851
+- 857
+- 858
+- 859
+- 861
+- 862
+- 863
+- 881
+- 882
+- 883
\ No newline at end of file
1
0
r1757 - branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/type
by tchemit@users.forge.codelutin.com 13 May '14
by tchemit@users.forge.codelutin.com 13 May '14
13 May '14
Author: tchemit
Date: 2014-05-13 13:22:05 +0200 (Tue, 13 May 2014)
New Revision: 1757
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1757
Log:
fixes #5058
Modified:
branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/type/WeightUnit.java
Modified: branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/type/WeightUnit.java
===================================================================
--- branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/type/WeightUnit.java 2014-05-06 10:04:31 UTC (rev 1756)
+++ branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/type/WeightUnit.java 2014-05-13 11:22:05 UTC (rev 1757)
@@ -37,7 +37,7 @@
*/
public enum WeightUnit {
- G(n("application.common.unit.g"), n("application.common.unit.short.g"), 1, "\\d{0,6}(\\.\\d{0,1})?") {
+ G(n("application.common.unit.g"), n("application.common.unit.short.g"), 1, "\\d{0,8}(\\.\\d{0,1})?") {
@Override
public Float fromEntity(Float weight) {
return weight == null ? null : weight * 1000;
1
0