Tutti-commits
Threads by month
- ----- 2026 -----
- August
- July
- 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
May 2014
- 5 participants
- 105 discussions
r1766 - in trunk: 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 May 14, 2014
by tchemit@users.forge.codelutin.com May 14, 2014
May 14, 2014
Author: tchemit
Date: 2014-05-14 14:55:14 +0200 (Wed, 14 May 2014)
New Revision: 1766
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1766
Log:
report refs #5059 (l'import psion est ?\195?\160 corriger) (from version 3.4.2)
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportBatchModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportResult.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java
trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport/PsionImportServiceTest.java
trunk/tutti-service/src/test/resources/psion/CC053.IWA
trunk/tutti-service/src/test/resources/psion/FM001.IWA
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportPsionAction.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportBatchModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportBatchModel.java 2014-05-14 12:32:05 UTC (rev 1765)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportBatchModel.java 2014-05-14 12:55:14 UTC (rev 1766)
@@ -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: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java 2014-05-14 12:32:05 UTC (rev 1765)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java 2014-05-14 12:55:14 UTC (rev 1766)
@@ -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,67 @@
/** Logger. */
private static final Log log = LogFactory.getLog(PsionImportModel.class);
- 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();
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 +126,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 +141,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.isDebugEnabled()) {
log.debug("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.isDebugEnabled()) {
log.debug("Merged " + batchModel + " to " + mergeBatch);
}
@@ -132,7 +210,72 @@
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()));
+ }
+
+ }
+ }
+ }
+
+ }
+
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportResult.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportResult.java 2014-05-14 12:32:05 UTC (rev 1765)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportResult.java 2014-05-14 12:55:14 UTC (rev 1766)
@@ -41,8 +41,10 @@
protected final List<String> errors;
- protected int nbImported;
+ protected int nbSortedImported;
+ protected int nbUnsortedImported;
+
public PsionImportResult(File importFile, List<String> errors) {
this.importFile = importFile;
this.errors = Lists.newArrayList(errors);
@@ -52,18 +54,26 @@
return importFile;
}
- 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: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java 2014-05-14 12:32:05 UTC (rev 1765)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java 2014-05-14 12:55:14 UTC (rev 1766)
@@ -55,6 +55,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;
@@ -230,33 +231,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;
}
@@ -283,7 +299,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) {
@@ -494,106 +510,199 @@
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();
+ }
+
+ }
+
+ persistenceService.saveCatchBatch(catchBatch);
+ }
+
+ protected void persistSortedBatches(FishingOperation operation,
+ Species specy,
+ List<PsionImportBatchModel> batchs) {
+
+ 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(),
+ PmfmId2.SORTED_UNSORTED.getValue(),
+ sortedCaracteristic);
+
+
+ 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,
PmfmId2.SORTED_UNSORTED.getValue(),
sortedCaracteristic);
- 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,
- PmfmId2.SORTED_UNSORTED.getValue(),
- sortedCaracteristic);
+ protected void persistUnsortedBatches(FishingOperation operation,
+ Species specy,
+ List<PsionImportBatchModel> batchs) {
- rootBatch = persistenceService.createSpeciesBatch(rootBatch, null);
+ if (batchs.size() == 1 && !batchs.get(0).withCategories()) {
+ PsionImportBatchModel batchModel = batchs.get(0);
- for (PsionImportBatchModel batchModel : batchs) {
+ // simple batch with no category
+ SpeciesBatch batch = createSpeciesBatch(operation,
+ batchModel.getSpecies(),
+ batchModel.getWeight(),
+ batchModel.getSampleWeight(),
+ PmfmId2.SORTED_UNSORTED.getValue(),
+ unsortedCaracteristic);
- SpeciesBatch parentBatch = rootBatch;
+ batch = persistenceService.createSpeciesBatch(batch, null);
- SpeciesBatch childBatch = null;
+ persistFrequencies(batch, batchModel);
- Iterator<PsionImportBatchModel.SampleCategory> categoryIterator = batchModel.getCategoryIterator();
+ } else {
- while (categoryIterator.hasNext()) {
- PsionImportBatchModel.SampleCategory sampleCategory = categoryIterator.next();
+ // batch with categories
- boolean lastCategory = !categoryIterator.hasNext();
+ SpeciesBatch rootBatch = createSpeciesBatch(operation,
+ specy,
+ null,
+ null,
+ PmfmId2.SORTED_UNSORTED.getValue(),
+ unsortedCaracteristic);
- Integer categoryId = sampleCategory.getCategoryId();
- Serializable categoryValue = sampleCategory.getCategoryValue();
+ rootBatch = persistenceService.createSpeciesBatch(rootBatch, null);
- if (lastCategory) {
+ createCategoryBatches(operation, specy, batchs, rootBatch, false);
- // 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()) {
+ protected void createCategoryBatches(FishingOperation operation,
+ Species specy,
+ List<PsionImportBatchModel> batchs,
+ SpeciesBatch rootBatch,
+ boolean applyOnlySampleWeight) {
- if (speciesBatch.getSampleCategoryId().equals(categoryId) &&
- speciesBatch.getSampleCategoryValue().equals(categoryValue)) {
- childBatch = speciesBatch;
- break;
- }
- }
+ for (PsionImportBatchModel batchModel : batchs) {
- if (childBatch == null) {
+ SpeciesBatch parentBatch = rootBatch;
- // must create it
- childBatch = createSpeciesBatch(operation,
- specy,
- null,
- null,
- categoryId,
- categoryValue);
- }
- }
+ SpeciesBatch childBatch = null;
- if (TuttiEntities.isNew(childBatch)) {
+ Iterator<PsionImportBatchModel.SampleCategory> categoryIterator = batchModel.getCategoryIterator();
- // persist it
- childBatch = persistenceService.createSpeciesBatch(childBatch, parentBatch.getId());
- parentBatch.addChildBatchs(childBatch);
+ 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: trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2014-05-14 12:32:05 UTC (rev 1765)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2014-05-14 12:55:14 UTC (rev 1766)
@@ -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: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2014-05-14 12:32:05 UTC (rev 1765)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2014-05-14 12:55:14 UTC (rev 1766)
@@ -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: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport/PsionImportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport/PsionImportServiceTest.java 2014-05-14 12:32:05 UTC (rev 1765)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport/PsionImportServiceTest.java 2014-05-14 12:55:14 UTC (rev 1766)
@@ -24,11 +24,16 @@
* #L%
*/
+import com.google.common.base.Predicate;
+import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId2;
+import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueId;
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.service.PersistenceService;
import fr.ifremer.tutti.service.ServiceDbResource;
@@ -79,6 +84,8 @@
protected File dataDirectory;
+ protected Predicate<SpeciesAbleBatch> vracPredicate;
+
@Before
public void setUp() throws Exception {
@@ -99,6 +106,8 @@
progressionModel.setTotal(9);
dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 3, OPERATION_2_ID, OPERATION_1_ID, OPERATION_3_ID);
+
+ vracPredicate = TuttiEntities.newSpeciesAbleBatchCategoryPredicate(PmfmId2.SORTED_UNSORTED.getValue(), QualitativeValueId.VRAC.getValue());
}
@Test
@@ -111,24 +120,55 @@
catchBatch.setFishingOperation(operation);
BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), false);
- 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(), false);
- 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(), false);
- 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(), false);
- 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: trunk/tutti-service/src/test/resources/psion/CC053.IWA
===================================================================
--- trunk/tutti-service/src/test/resources/psion/CC053.IWA 2014-05-14 12:32:05 UTC (rev 1765)
+++ trunk/tutti-service/src/test/resources/psion/CC053.IWA 2014-05-14 12:55:14 UTC (rev 1766)
@@ -1,5 +1,5 @@
cc
-A
+1
07-01-2013
07:19:11
Modified: trunk/tutti-service/src/test/resources/psion/FM001.IWA
===================================================================
--- trunk/tutti-service/src/test/resources/psion/FM001.IWA 2014-05-14 12:32:05 UTC (rev 1765)
+++ trunk/tutti-service/src/test/resources/psion/FM001.IWA 2014-05-14 12:55:14 UTC (rev 1766)
@@ -1,5 +1,5 @@
fm
-A
+1
07-01-2013
18:28:13
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportPsionAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportPsionAction.java 2014-05-14 12:32:05 UTC (rev 1765)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportPsionAction.java 2014-05-14 12:55:14 UTC (rev 1766)
@@ -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: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2014-05-14 12:32:05 UTC (rev 1765)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2014-05-14 12:55:14 UTC (rev 1766)
@@ -984,7 +984,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
r1765 - 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 May 14, 2014
by tchemit@users.forge.codelutin.com May 14, 2014
May 14, 2014
Author: tchemit
Date: 2014-05-14 14:32:05 +0200 (Wed, 14 May 2014)
New Revision: 1765
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1765
Log:
report refs #5062 [PUPITRI] Gestion du m?\195?\169lange (from version 3.4.2)
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/Signs.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5062Test.java
trunk/tutti-service/src/test/resources/pupitri/evo-5062.car
trunk/tutti-service/src/test/resources/pupitri/evo-5062.tnk
trunk/tutti-service/src/test/resources/pupitri/evo-5062.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/CarrouselRowModel.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
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportResult.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-14 12:27:19 UTC (rev 1764)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRow.java 2014-05-14 12:32:05 UTC (rev 1765)
@@ -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: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRowModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRowModel.java 2014-05-14 12:27:19 UTC (rev 1764)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRowModel.java 2014-05-14 12:32:05 UTC (rev 1765)
@@ -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: 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-14 12:27:19 UTC (rev 1764)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriCatch.java 2014-05-14 12:32:05 UTC (rev 1765)
@@ -25,12 +25,6 @@
*/
import com.google.common.collect.Maps;
-import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId2;
-import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueId;
-import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueId2;
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-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 org.apache.commons.lang3.mutable.MutableFloat;
@@ -45,116 +39,8 @@
private static final long serialVersionUID = 1L;
- public static enum Signs {
- DEFAULT("0") {
- @Override
- public Integer getCategory() {
- return PmfmId2.SEX.getValue();
- }
+ public static final String MELAG_META_SPECIES = "MELA-NGE";
- @Override
- public Integer getQualitativeValueId() {
- 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() {
- return PmfmId2.SEX.getValue();
- }
-
- @Override
- public Integer getQualitativeValueId() {
- return QualitativeValueId.SEX_MALE.getValue();
- }
- },
- FEMALE("2") {
- @Override
- public Integer getCategory() {
- return PmfmId2.SEX.getValue();
- }
-
- @Override
- public Integer getQualitativeValueId() {
- return QualitativeValueId.SEX_FEMALE.getValue();
- }
- },
- SMALL("P") {
- @Override
- public Integer getCategory() {
- return PmfmId2.SIZE_CATEGORY.getValue();
- }
-
- @Override
- public Integer getQualitativeValueId() {
- return QualitativeValueId.SIZE_SMALL.getValue();
- }
- },
- MEDIUM("M") {
- @Override
- public Integer getCategory() {
- return PmfmId2.SIZE_CATEGORY.getValue();
- }
-
- @Override
- public Integer getQualitativeValueId() {
- return QualitativeValueId.SIZE_MEDIUM.getValue();
- }
- },
- BIG("G") {
- @Override
- public Integer getCategory() {
- return PmfmId2.SIZE_CATEGORY.getValue();
- }
-
- @Override
- public Integer getQualitativeValueId() {
- return QualitativeValueId.SIZE_BIG.getValue();
- }
- };
-
- 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();
-
- public abstract Integer getQualitativeValueId();
-
- public void registerSign(Caracteristic caracteristic,
- Map<Signs, CaracteristicQualitativeValue> map) {
- Integer valueId = getQualitativeValueId();
- CaracteristicQualitativeValue result = TuttiEntities.getQualitativeValue(caracteristic, valueId);
- map.put(this, result);
- }
- }
-
protected Species species;
protected boolean sorted;
@@ -174,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;
@@ -212,5 +119,4 @@
}
return true;
}
-
}
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-14 12:27:19 UTC (rev 1764)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java 2014-05-14 12:32:05 UTC (rev 1765)
@@ -96,7 +96,7 @@
protected CaracteristicQualitativeValue unsortedCaracteristic;
- protected Map<PupitriCatch.Signs, CaracteristicQualitativeValue> signsToCaracteristicValue;
+ protected Map<Signs, CaracteristicQualitativeValue> signsToCaracteristicValue;
@Override
public void setServiceContext(TuttiServiceContext context) {
@@ -105,7 +105,7 @@
decoratorService = getService(DecoratorService.class);
dataContext = context.getDataContext();
- signsToCaracteristicValue = Maps.newEnumMap(PupitriCatch.Signs.class);
+ signsToCaracteristicValue = Maps.newEnumMap(Signs.class);
{ // sorted/unsorted caracteristic
Caracteristic caracteristic =
@@ -118,16 +118,16 @@
{ // sex category
Caracteristic caracteristic = persistenceService.getSexCaracteristic();
- PupitriCatch.Signs.DEFAULT.registerSign(caracteristic, signsToCaracteristicValue);
- PupitriCatch.Signs.FEMALE.registerSign(caracteristic, signsToCaracteristicValue);
- PupitriCatch.Signs.MALE.registerSign(caracteristic, signsToCaracteristicValue);
+ Signs.DEFAULT.registerSign(caracteristic, signsToCaracteristicValue);
+ Signs.FEMALE.registerSign(caracteristic, signsToCaracteristicValue);
+ Signs.MALE.registerSign(caracteristic, signsToCaracteristicValue);
}
{ // size category
Caracteristic caracteristic = persistenceService.getSizeCategoryCaracteristic();
- PupitriCatch.Signs.SMALL.registerSign(caracteristic, signsToCaracteristicValue);
- PupitriCatch.Signs.MEDIUM.registerSign(caracteristic, signsToCaracteristicValue);
- PupitriCatch.Signs.BIG.registerSign(caracteristic, signsToCaracteristicValue);
+ Signs.SMALL.registerSign(caracteristic, signsToCaracteristicValue);
+ Signs.MEDIUM.registerSign(caracteristic, signsToCaracteristicValue);
+ Signs.BIG.registerSign(caracteristic, signsToCaracteristicValue);
}
}
@@ -153,6 +153,8 @@
// there is some matching rows to import
+ result.prepareMelag();
+
savePupitriImportResult(result, operation, catchBatch);
}
@@ -384,7 +386,7 @@
boolean splitSpecies = isSplitSpecies(pupitriCatch);
- Map<PupitriCatch.Signs, MutableFloat> weightBySign =
+ Map<Signs, MutableFloat> weightBySign =
pupitriCatch.getWeightBySign();
if (splitSpecies) {
@@ -403,9 +405,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();
@@ -446,24 +448,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
);
@@ -482,9 +484,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: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportResult.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportResult.java 2014-05-14 12:27:19 UTC (rev 1764)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportResult.java 2014-05-14 12:32:05 UTC (rev 1765)
@@ -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: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/Signs.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/Signs.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/Signs.java 2014-05-14 12:32:05 UTC (rev 1765)
@@ -0,0 +1,145 @@
+package fr.ifremer.tutti.service.pupitri;
+
+import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId2;
+import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueId;
+import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueId2;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+
+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() {
+ return PmfmId2.SEX.getValue();
+ }
+
+ @Override
+ public Integer getQualitativeValueId() {
+ 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() {
+ return PmfmId2.SEX.getValue();
+ }
+
+ @Override
+ public Integer getQualitativeValueId() {
+ return QualitativeValueId.SEX_MALE.getValue();
+ }
+ },
+ FEMALE("2") {
+ @Override
+ public Integer getCategory() {
+ return PmfmId2.SEX.getValue();
+ }
+
+ @Override
+ public Integer getQualitativeValueId() {
+ return QualitativeValueId.SEX_FEMALE.getValue();
+ }
+ },
+ SMALL("P") {
+ @Override
+ public Integer getCategory() {
+ return PmfmId2.SIZE_CATEGORY.getValue();
+ }
+
+ @Override
+ public Integer getQualitativeValueId() {
+ return QualitativeValueId.SIZE_SMALL.getValue();
+ }
+ },
+ MEDIUM("M") {
+ @Override
+ public Integer getCategory() {
+ return PmfmId2.SIZE_CATEGORY.getValue();
+ }
+
+ @Override
+ public Integer getQualitativeValueId() {
+ return QualitativeValueId.SIZE_MEDIUM.getValue();
+ }
+ },
+ BIG("G") {
+ @Override
+ public Integer getCategory() {
+ return PmfmId2.SIZE_CATEGORY.getValue();
+ }
+
+ @Override
+ public Integer getQualitativeValueId() {
+ return QualitativeValueId.SIZE_BIG.getValue();
+ }
+ },
+
+ MELAG("T") {
+ @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;
+ }
+ };
+
+ 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();
+
+ public abstract Integer getQualitativeValueId();
+
+ public void registerSign(Caracteristic caracteristic,
+ Map<Signs, CaracteristicQualitativeValue> map) {
+ Integer valueId = getQualitativeValueId();
+ CaracteristicQualitativeValue result = TuttiEntities.getQualitativeValue(caracteristic, valueId);
+ map.put(this, result);
+ }
+}
Property changes on: trunk/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: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5062Test.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5062Test.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5062Test.java 2014-05-14 12:32:05 UTC (rev 1765)
@@ -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(), false);
+ 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(), false);
+ 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());
+ }
+}
Property changes on: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo5062Test.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/test/resources/pupitri/evo-5062.car
===================================================================
--- trunk/tutti-service/src/test/resources/pupitri/evo-5062.car (rev 0)
+++ trunk/tutti-service/src/test/resources/pupitri/evo-5062.car 2014-05-14 12:32:05 UTC (rev 1765)
@@ -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)
Added: trunk/tutti-service/src/test/resources/pupitri/evo-5062.tnk
===================================================================
--- trunk/tutti-service/src/test/resources/pupitri/evo-5062.tnk (rev 0)
+++ trunk/tutti-service/src/test/resources/pupitri/evo-5062.tnk 2014-05-14 12:32:05 UTC (rev 1765)
@@ -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,
Added: trunk/tutti-service/src/test/resources/pupitri/evo-5062.tuttiProtocol
===================================================================
--- trunk/tutti-service/src/test/resources/pupitri/evo-5062.tuttiProtocol (rev 0)
+++ trunk/tutti-service/src/test/resources/pupitri/evo-5062.tuttiProtocol 2014-05-14 12:32:05 UTC (rev 1765)
@@ -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
1
0
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 May 14, 2014
by tchemit@users.forge.codelutin.com May 14, 2014
May 14, 2014
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 May 14, 2014
by tchemit@users.forge.codelutin.com May 14, 2014
May 14, 2014
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 May 13, 2014
by tchemit@users.forge.codelutin.com May 13, 2014
May 13, 2014
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
May 13, 2014
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 May 13, 2014
by admin+ci-codelutin.com@codelutin.com May 13, 2014
May 13, 2014
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 May 13, 2014
by tchemit@users.forge.codelutin.com May 13, 2014
May 13, 2014
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 May 13, 2014
by tchemit@users.forge.codelutin.com May 13, 2014
May 13, 2014
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 May 13, 2014
by tchemit@users.forge.codelutin.com May 13, 2014
May 13, 2014
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 May 13, 2014
by tchemit@users.forge.codelutin.com May 13, 2014
May 13, 2014
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 May 13, 2014
by tchemit@users.forge.codelutin.com May 13, 2014
May 13, 2014
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
May 6, 2014
See <http://ci.codelutin.com/jenkins/job/tutti-nightly/31/changes>
Changes:
[blavenier] Fix Issue #4995 : do not create a new entity when existing in the list of regulation area
[Tony CHEMIT] fix build (jaxx can't support jdk 7)
[Tony CHEMIT] refs #4995 (add TU)
[Tony CHEMIT] refs #4958
------------------------------------------
[...truncated 402 lines...]
2014-04-26 00:51:09,524 41 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at src/test/dbCGFS_ANO4995, test [class fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceAno4995Test] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.007 sec - in fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceAno4995Test
Running fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceReadTest
2014-04-26 00:51:09,526 43 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceReadTest
2014-04-26 00:51:09,533 50 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…,> test [class fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.009 sec - in fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceReadTest
Running fr.ifremer.tutti.persistence.service.MarineLitterBatchPersistenceServiceWriteTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.MarineLitterBatchPersistenceServiceWriteTest
Running fr.ifremer.tutti.persistence.service.BenthosBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.BenthosBatchPersistenceServiceReadTest
Running fr.ifremer.tutti.persistence.service.MarineLitterBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.MarineLitterBatchPersistenceServiceReadTest
Running fr.ifremer.tutti.persistence.service.BenthosBatchPersistenceServiceWriteTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.BenthosBatchPersistenceServiceWriteTest
Running fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec - in fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceReadTest
Running fr.ifremer.tutti.persistence.service.AttachmentPersistenceServiceWriteTest
2014-04-26 00:51:09,535 52 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.AttachmentPersistenceServiceWriteTest
2014-04-26 00:51:09,537 54 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - No configuration file found in classpath at tutti-test-write.properties
2014-04-26 00:51:09,540 57 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.AttachmentPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.AttachmentPersistenceServiceWriteTest
Running fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceWriteTest
2014-04-26 00:51:09,541 58 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceWriteTest
2014-04-26 00:51:09,544 61 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - No configuration file found in classpath at tutti-test-write.properties
2014-04-26 00:51:09,547 64 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.002 sec - in fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceWriteTest
Running fr.ifremer.tutti.persistence.service.SpeciesBatchPersistenceServiceWriteTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.SpeciesBatchPersistenceServiceWriteTest
Running fr.ifremer.tutti.persistence.service.CruisePersistenceServiceWriteTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.CruisePersistenceServiceWriteTest
Running fr.ifremer.tutti.persistence.service.IndividualObservationBatchPersistenceServiceWriteTest
2014-04-26 00:51:09,549 66 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.IndividualObservationBatchPersistenceServiceWriteTest
2014-04-26 00:51:09,552 69 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - No configuration file found in classpath at tutti-test-write.properties
2014-04-26 00:51:09,555 72 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.IndividualObservationBatchPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.persistence.service.IndividualObservationBatchPersistenceServiceWriteTest
Running fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceWriteTest
2014-04-26 00:51:09,556 73 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceWriteTest
2014-04-26 00:51:09,558 75 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - No configuration file found in classpath at tutti-test-write.properties
2014-04-26 00:51:09,561 78 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.006 sec - in fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceWriteTest
Running fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceReadTest
2014-04-26 00:51:09,568 85 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceReadTest
2014-04-26 00:51:09,573 90 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…,> test [class fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.01 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-04-26 00:51:09,574 91 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceReadTest
2014-04-26 00:51:09,579 96 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…,> test [class fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec - in fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceReadTest
Running fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceWriteTest
2014-04-26 00:51:09,581 98 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceWriteTest
2014-04-26 00:51:09,583 100 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - No configuration file found in classpath at tutti-test-write.properties
2014-04-26 00:51:09,585 102 [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.005 sec - in fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceWriteTest
Running fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceWriteTest
2014-04-26 00:51:09,586 103 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceWriteTest
2014-04-26 00:51:09,588 105 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - No configuration file found in classpath at tutti-test-write.properties
2014-04-26 00:51:09,590 107 [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.005 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
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ tutti-persistence ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>
[INFO]
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) @ tutti-persistence >>>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (ensure-no-container-api) @ tutti-persistence ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ tutti-persistence ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-release-properties) @ tutti-persistence ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-redmine-login) @ tutti-persistence ---
[INFO] Skipping goal (runOnce flag is on and goal was already executed).
[INFO]
[INFO] --- eugene-maven-plugin:2.9-SNAPSHOT:generate (default) @ tutti-persistence ---
[INFO] Process phase [zargo] for one entry.
[INFO] No file generated.
[INFO] Process phase [xmi] for one entry.
[INFO] No file generated.
[INFO] Process phase [model] for one entry.
WARN [pool-1-thread-1 for channel] (AbstractObjectModelReader.java:393) loadStereotype - Deprecated stereotype usage [fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol.attribute.mandatorySampleCategoryId.stereotype] : indexed
[INFO] No file generated.
[INFO] Process phase [java] for one entry.
[INFO] Apply generator JavaInterfaceTransformer
[INFO] Apply generator SimpleJavaBeanTransformer
[INFO] Apply generator JavaEnumerationTransformer
[INFO] No file generated.
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO]
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) @ tutti-persistence <<<
[INFO]
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ tutti-persistence ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>
[INFO]
[INFO] --- maven-javadoc-plugin:2.9.1:jar (attach-javadocs) @ tutti-persistence ---
[INFO]
24 warnings
[WARNING] Javadoc Warnings
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see:illegal character: "123" in "{@link Cruise#getDepartureLocation()}"
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see:illegal character: "64" in "{@link Cruise#getDepartureLocation()}"
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see:illegal character: "123" in "{@link Cruise#setDepartureLocation(TuttiLocation)}"
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see:illegal character: "64" in "{@link Cruise#setDepartureLocation(TuttiLocation)}"
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see:illegal character: "123" in "{@link Cruise#getReturnLocation()}"
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see:illegal character: "64" in "{@link Cruise#getReturnLocation()}"
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see:illegal character: "123" in "{@link Cruise#setReturnLocation(TuttiLocation)}"
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see:illegal character: "64" in "{@link Cruise#setReturnLocation(TuttiLocation)}"
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#getDepartureLocation()}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#setDepartureLocation(TuttiLocation)}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#getReturnLocation()}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#setReturnLocation(TuttiLocation)}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#getDepartureLocation()}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#setDepartureLocation(TuttiLocation)}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#getReturnLocation()}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#setReturnLocation(TuttiLocation)}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#getDepartureLocation()}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#setDepartureLocation(TuttiLocation)}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#getReturnLocation()}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#setReturnLocation(TuttiLocation)}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#getDepartureLocation()}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#setDepartureLocation(TuttiLocation)}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#getReturnLocation()}
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>:85: warning - Tag @see: reference not found: {@link Cruise#setReturnLocation(TuttiLocation)}
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/tutti-persistenc…>
[INFO]
[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ tutti-persistence ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-pgp-passphrase) @ tutti-persistence ---
[INFO] Exporting server [gpg-signer] username in ${gpg.keyname}
[INFO] Exporting server [gpg-signer] password in ${gpg.passphrase}
[INFO]
[INFO] --- helper-maven-plugin:2.1:collect-files (collect-build-artifacts) @ tutti-persistence ---
[INFO] Loaded <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/target/collect-a…>
[INFO] Copying tutti-persistence-3.5-SNAPSHOT.jar to <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/target/collect/f…>
[INFO] Copying THIRD-PARTY.properties to <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/target/collect/f…>
[INFO] Copying tutti-persistence-3.5-SNAPSHOT-sources.jar to <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/target/collect/f…>
[INFO] Copying tutti-persistence-3.5-SNAPSHOT-javadoc.jar to <http://ci.codelutin.com/jenkins/job/tutti-nightly/ws/trunk/target/collect/f…>
[INFO]
[INFO] --- helper-maven-plugin:2.1:collect-files (collect-build-attachements) @ tutti-persistence ---
[WARNING] Skipping goal (No file to collect).
[INFO]
[INFO] --- maven-gpg-plugin:1.5:sign (sign-artifacts) @ tutti-persistence ---
[INFO]
[INFO] --- maven-dependency-plugin:2.8:analyze-only (analyze) @ tutti-persistence ---
[INFO] Used declared dependencies found:
[INFO] org.nuiton.jaxx:jaxx-application-api:jar:2.8.4:compile
[INFO] fr.ifremer.adagio:adagio-core-shared:jar:3.5.2:compile
[INFO] fr.ifremer.adagio:adagio-core-allegro:jar:3.5.2:compile
[INFO] org.springframework:spring-beans:jar:4.0.1.RELEASE:provided
[INFO] org.springframework:spring-context:jar:4.0.1.RELEASE:provided
[INFO] org.springframework:spring-tx:jar:4.0.1.RELEASE:provided
[INFO] org.hibernate:hibernate-core:jar:4.3.1.Final:compile
[INFO] org.nuiton:nuiton-utils:jar:3.0-rc-2:compile
[INFO] org.nuiton:nuiton-config:jar:3.0-alpha-2:compile
[INFO] org.nuiton:nuiton-decorator:jar:3.0-alpha-3:compile
[INFO] org.nuiton:nuiton-updater:jar:3.0-alpha-2:compile
[INFO] org.nuiton.i18n:nuiton-i18n:jar:3.0:compile
[INFO] org.apache.commons:commons-lang3:jar:3.3.2:compile
[INFO] commons-io:commons-io:jar:2.4:compile
[INFO] commons-beanutils:commons-beanutils:jar:1.9.1:compile
[INFO] commons-collections:commons-collections:jar:3.2.1:compile
[INFO] commons-logging:commons-logging:jar:1.1.3:compile
[INFO] com.google.guava:guava:jar:16.0.1:compile
[INFO] com.esotericsoftware.yamlbeans:yamlbeans:jar:1.06:compile
[INFO] hsqldb:hsqldb:jar:1.8.0.10:compile
[INFO] junit:junit:jar:4.11:provided
[WARNING] Used undeclared dependencies found:
[WARNING] commons-lang:commons-lang:jar:2.6:compile
[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 [ 7.239 s]
[INFO] Tutti :: Persistence .............................. FAILURE [ 32.415 s]
[INFO] Tutti :: Ichtyometer API .......................... SKIPPED
[INFO] Tutti :: Service .................................. SKIPPED
[INFO] Tutti :: UI ....................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 41.412 s
[INFO] Finished at: 2014-04-26T00:51:19+01:00
[INFO] Final Memory: 67M/526M
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:analyze-only (analyze) on project tutti-persistence: Dependency problems found -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:analyze-only (analyze) on project tutti-persistence: Dependency problems found
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
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.MojoExecutionException: Dependency problems found
at org.apache.maven.plugin.dependency.analyze.AbstractAnalyzeMojo.execute(AbstractAnalyzeMojo.java:188)
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/MojoExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :tutti-persistence
Failed to send e-mail to blavenier because no e-mail address is known, and no default e-mail domain is configured
Sending e-mails to: tutti-commits(a)list.forge.codelutin.com chemit+codelutin-ci(a)codelutin.com
channel stopped
Skipping sonar analysis due to bad build status FAILURE
Failed to send e-mail to blavenier because no e-mail address is known, and no default e-mail domain is configured
1
4
Build failed in Jenkins: tutti-nightly » Tutti :: Service #33
by admin+ci-codelutin.com@codelutin.com May 6, 2014
by admin+ci-codelutin.com@codelutin.com May 6, 2014
May 6, 2014
See <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>
Changes:
[Tony CHEMIT] optimize some dependencies
update jre to 1.7u55
fixes #5011: [TECH] Mise en place d'un déployement de type *dev*
fixes #5013: [TECH] Mise en place d'un module spécifique pour l'ichtyometre
------------------------------------------
[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-nightly/fr.ifremer.tutti$tutti-se…>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (ensure-no-container-api) @ tutti-service ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ tutti-service ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-release-properties) @ tutti-service ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-redmine-login) @ tutti-service ---
[INFO] Exporting server [redmine-forge.codelutin.com] privateKey in ${redmine.apiKey}
[INFO]
[INFO] --- license-maven-plugin:1.6:update-project-license (attach-licenses) @ tutti-service ---
[INFO]
[INFO] --- license-maven-plugin:1.6:add-third-party (attach-licenses) @ tutti-service ---
[INFO] Load missing file <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>
[INFO] Missing file <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…> is up-to-date.
[INFO] Writing third-party file to <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>
[INFO] Will attach third party file from <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>
[INFO]
[INFO] --- license-maven-plugin:1.6:update-file-header (update-file-header-on-pom) @ tutti-service ---
[INFO] Will search files to update from root <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>
[INFO] Scan 1 file header done in 1.498ms.
[INFO] All files are up-to-date.
[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-nightly/fr.ifremer.tutti$tutti-se…>
[INFO] Copying tutti-service.properties to <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>
[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] Copying 2 resources
[INFO]
[INFO] --- license-maven-plugin:1.6:update-file-header (update-file-header) @ tutti-service ---
[INFO] Will search files to update from root <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>
[INFO] Will search files to update from root <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>
[INFO] Scan 139 files header done in 199.851ms.
[INFO] All files are up-to-date.
[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-nightly/fr.ifremer.tutti$tutti-se…>
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>: Some input files use unchecked or unsafe operations.
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- animal-sniffer-maven-plugin:1.10:check (default) @ tutti-service ---
[INFO] Checking unresolved references to org.codehaus.mojo.signature:java17:1.0
[INFO]
[INFO] --- jredmine-maven-plugin:1.8.1:generate-changes (jredmine-generate-changes) @ tutti-service ---
[INFO] Skipping goal (skipGenerateChanges flag is on).
[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-nightly/fr.ifremer.tutti$tutti-se…>
[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 30 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ tutti-service ---
[INFO] Compiling 19 source files to <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>: Some input files use unchecked or unsafe operations.
[WARNING] <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ tutti-service ---
[INFO] Skipping execution of surefire because it has already been run for this configuration
[JENKINS] Recording test results
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ tutti-service ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>
[INFO]
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) @ tutti-service >>>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (ensure-no-container-api) @ tutti-service ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ tutti-service ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-release-properties) @ tutti-service ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-redmine-login) @ tutti-service ---
[INFO] Skipping goal (runOnce flag is on and goal was already executed).
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO]
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) @ tutti-service <<<
[INFO]
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ tutti-service ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>
[INFO]
[INFO] --- maven-javadoc-plugin:2.9.1:jar (attach-javadocs) @ tutti-service ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/tutti-nightly/fr.ifremer.tutti$tutti-se…>
[INFO]
[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ tutti-service ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-pgp-passphrase) @ tutti-service ---
[INFO] Exporting server [gpg-signer] username in ${gpg.keyname}
[INFO] Exporting server [gpg-signer] password in ${gpg.passphrase}
[INFO]
[INFO] --- helper-maven-plugin:2.1:collect-files (collect-build-artifacts) @ tutti-service ---
[INFO] Loaded /var/local/forge/data/codelutin.com/jenkins/workspace/tutti-nightly/trunk/target/collect-artifacts.txt
[INFO] Copying tutti-service-3.5-SNAPSHOT.jar to /var/local/forge/data/codelutin.com/jenkins/workspace/tutti-nightly/trunk/target/collect/fr.ifremer.tutti--tutti-service/tutti-service-3.5-SNAPSHOT.jar
[INFO] Copying THIRD-PARTY.properties to /var/local/forge/data/codelutin.com/jenkins/workspace/tutti-nightly/trunk/target/collect/fr.ifremer.tutti--tutti-service/THIRD-PARTY.properties
[INFO] Copying tutti-service-3.5-SNAPSHOT-sources.jar to /var/local/forge/data/codelutin.com/jenkins/workspace/tutti-nightly/trunk/target/collect/fr.ifremer.tutti--tutti-service/tutti-service-3.5-SNAPSHOT-sources.jar
[INFO] Copying tutti-service-3.5-SNAPSHOT-javadoc.jar to /var/local/forge/data/codelutin.com/jenkins/workspace/tutti-nightly/trunk/target/collect/fr.ifremer.tutti--tutti-service/tutti-service-3.5-SNAPSHOT-javadoc.jar
[INFO]
[INFO] --- helper-maven-plugin:2.1:collect-files (collect-build-attachements) @ tutti-service ---
[WARNING] Skipping goal (No file to collect).
[INFO]
[INFO] --- maven-gpg-plugin:1.5:sign (sign-artifacts) @ tutti-service ---
[INFO]
[INFO] --- maven-dependency-plugin:2.8:analyze-only (analyze) @ tutti-service ---
[INFO] Used declared dependencies found:
[INFO] fr.ifremer.tutti:tutti-persistence:jar:3.5-SNAPSHOT:compile
[INFO] fr.ifremer.adagio:adagio-core-allegro:jar:3.5.2:compile
[INFO] org.nuiton.jaxx:jaxx-application-api:jar:2.8.4:compile
[INFO] org.nuiton:nuiton-utils:jar:3.0-rc-2:compile
[INFO] org.nuiton:nuiton-decorator:jar:3.0-alpha-3:compile
[INFO] org.nuiton.i18n:nuiton-i18n:jar:3.0:compile
[INFO] org.nuiton:nuiton-csv:jar:3.0-alpha-3:compile
[INFO] org.nuiton:nuiton-validator:jar:3.0-rc-1:compile
[INFO] com.google.guava:guava:jar:16.0.1:compile
[INFO] org.apache.commons:commons-lang3:jar:3.3.2:compile
[INFO] org.apache.commons:commons-collections4:jar:4.0:compile
[INFO] commons-beanutils:commons-beanutils:jar:1.9.1:compile
[INFO] commons-io:commons-io:jar:2.4:compile
[INFO] commons-logging:commons-logging:jar:1.1.3:compile
[INFO] org.apache.commons:commons-vfs2:jar:2.0:compile
[INFO] org.swinglabs.swingx:swingx-common:jar:1.6.4:compile
[INFO] org.apache.struts.xwork:xwork-core:jar:2.3.16:compile
[INFO] org.xhtmlrenderer:flying-saucer-pdf-itext5:jar:9.0.2:compile
[INFO] org.freemarker:freemarker:jar:2.3.19:compile
[INFO] org.eclipse.birt.runtime:org.eclipse.birt.runtime:jar:codelutin:4.3.1-1:compile
[INFO] junit:junit:jar:4.11:test
[INFO] org.nuiton:nuiton-validator:jar:tests:3.0-rc-1:test
[WARNING] Used undeclared dependencies found:
[WARNING] org.nuiton:nuiton-config:jar:3.0-alpha-2:compile
[JENKINS] Archiving disabled
1
2
May 6, 2014
Author: tchemit
Date: 2014-05-06 12:04:31 +0200 (Tue, 06 May 2014)
New Revision: 1756
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1756
Log:
fixes #5045
Added:
trunk/tutti-ui-swing/src/main/ichtyometer/10MF1_Firmware_ifremer_v1-60.eeprom
Removed:
trunk/tutti-ui-swing/src/main/ichtyometer/10MF1_Firmware_v1-58.eeprom
Added: trunk/tutti-ui-swing/src/main/ichtyometer/10MF1_Firmware_ifremer_v1-60.eeprom
===================================================================
(Binary files differ)
Property changes on: trunk/tutti-ui-swing/src/main/ichtyometer/10MF1_Firmware_ifremer_v1-60.eeprom
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Deleted: trunk/tutti-ui-swing/src/main/ichtyometer/10MF1_Firmware_v1-58.eeprom
===================================================================
(Binary files differ)
1
0
Author: tchemit
Date: 2014-05-06 09:20:19 +0200 (Tue, 06 May 2014)
New Revision: 1755
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1755
Log:
optimize dependencies
Modified:
trunk/tutti-service/pom.xml
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2014-05-06 07:19:53 UTC (rev 1754)
+++ trunk/tutti-service/pom.xml 2014-05-06 07:20:19 UTC (rev 1755)
@@ -70,6 +70,10 @@
<artifactId>nuiton-decorator</artifactId>
</dependency>
<dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-config</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.nuiton.i18n</groupId>
<artifactId>nuiton-i18n</artifactId>
</dependency>
1
0
Author: tchemit
Date: 2014-05-06 09:19:53 +0200 (Tue, 06 May 2014)
New Revision: 1754
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1754
Log:
remove obsolete branches
Removed:
branches/3.3.6/
branches/3.4.1/
branches/tutti-3.3.x/
branches/tutti-3.4/
branches/tutti-before-ifremer-shared/
1
0
r1753 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri tutti-service/src/test/resources/pupitri
by tchemit@users.forge.codelutin.com May 5, 2014
by tchemit@users.forge.codelutin.com May 5, 2014
May 5, 2014
Author: tchemit
Date: 2014-05-05 17:00:37 +0200 (Mon, 05 May 2014)
New Revision: 1753
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1753
Log:
merge from refs #5032 (version 3.4.1)
Added:
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno3898Test.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5032Test.java
trunk/tutti-service/src/test/resources/pupitri/ano-5032.car
trunk/tutti-service/src/test/resources/pupitri/ano-5032.tnk
trunk/tutti-service/src/test/resources/pupitri/ano-5032.tuttiProtocol
Removed:
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceTest.java
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRowModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java
trunk/tutti-service/src/test/resources/pupitri/ano-3898.car
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2014-05-05 14:59:13 UTC (rev 1752)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2014-05-05 15:00:37 UTC (rev 1753)
@@ -4,6 +4,7 @@
* #%L
* Tutti :: Persistence API
* $Id$
+ * $Id$
* $HeadURL$
* %%
* Copyright (C) 2012 Ifremer
@@ -622,28 +623,32 @@
Map<String, Species> map = TuttiEntities.splitByTaxonId(allReferentSpecies);
- Iterator<SpeciesProtocol> iterator = protocol.getSpecies().iterator();
- while (iterator.hasNext()) {
- SpeciesProtocol speciesProtocol = iterator.next();
- String taxonId = String.valueOf(speciesProtocol.getSpeciesReferenceTaxonId());
- Species species = map.get(taxonId);
- if (species == null) {
- if (log.isWarnEnabled()) {
- log.warn("Could not find protocol species " + taxonId + " (" + speciesProtocol.getSpeciesSurveyCode() + ") in referential.");
+ if (!protocol.isSpeciesEmpty()) {
+ Iterator<SpeciesProtocol> iterator = protocol.getSpecies().iterator();
+ while (iterator.hasNext()) {
+ SpeciesProtocol speciesProtocol = iterator.next();
+ String taxonId = String.valueOf(speciesProtocol.getSpeciesReferenceTaxonId());
+ Species species = map.get(taxonId);
+ if (species == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("Could not find protocol species " + taxonId + " (" + speciesProtocol.getSpeciesSurveyCode() + ") in referential.");
+ }
+ iterator.remove();
}
- iterator.remove();
}
}
- iterator = protocol.getBenthos().iterator();
- while (iterator.hasNext()) {
- SpeciesProtocol speciesProtocol = iterator.next();
- String taxonId = String.valueOf(speciesProtocol.getSpeciesReferenceTaxonId());
- Species species = map.get(taxonId);
- if (species == null) {
- if (log.isWarnEnabled()) {
- log.warn("Could not find protocol benthos " + taxonId + " (" + speciesProtocol.getSpeciesSurveyCode() + ") in referential.");
+ if (!protocol.isBenthosEmpty()) {
+ Iterator<SpeciesProtocol> iterator = protocol.getBenthos().iterator();
+ while (iterator.hasNext()) {
+ SpeciesProtocol speciesProtocol = iterator.next();
+ String taxonId = String.valueOf(speciesProtocol.getSpeciesReferenceTaxonId());
+ Species species = map.get(taxonId);
+ if (species == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("Could not find protocol benthos " + taxonId + " (" + speciesProtocol.getSpeciesSurveyCode() + ") in referential.");
+ }
+ iterator.remove();
}
- iterator.remove();
}
}
return protocol;
@@ -917,20 +922,24 @@
Map<Integer, String> surveyCodeByTaxonId = Maps.newTreeMap();
- for (SpeciesProtocol speciesProtocol : protocol.getSpecies()) {
- String surveyCode = speciesProtocol.getSpeciesSurveyCode();
- if (StringUtils.isNotBlank(surveyCode)) {
- Integer taxonId =
- speciesProtocol.getSpeciesReferenceTaxonId();
- surveyCodeByTaxonId.put(taxonId, surveyCode);
+ if (!protocol.isSpeciesEmpty()) {
+ for (SpeciesProtocol speciesProtocol : protocol.getSpecies()) {
+ String surveyCode = speciesProtocol.getSpeciesSurveyCode();
+ if (StringUtils.isNotBlank(surveyCode)) {
+ Integer taxonId =
+ speciesProtocol.getSpeciesReferenceTaxonId();
+ surveyCodeByTaxonId.put(taxonId, surveyCode);
+ }
}
}
- for (SpeciesProtocol speciesProtocol : protocol.getBenthos()) {
- String surveyCode = speciesProtocol.getSpeciesSurveyCode();
- if (StringUtils.isNotBlank(surveyCode)) {
- Integer taxonId =
- speciesProtocol.getSpeciesReferenceTaxonId();
- surveyCodeByTaxonId.put(taxonId, surveyCode);
+ if (!protocol.isBenthosEmpty()) {
+ for (SpeciesProtocol speciesProtocol : protocol.getBenthos()) {
+ String surveyCode = speciesProtocol.getSpeciesSurveyCode();
+ if (StringUtils.isNotBlank(surveyCode)) {
+ Integer taxonId =
+ speciesProtocol.getSpeciesReferenceTaxonId();
+ surveyCodeByTaxonId.put(taxonId, surveyCode);
+ }
}
}
for (Species species : speciesList) {
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2014-05-05 14:59:13 UTC (rev 1752)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2014-05-05 15:00:37 UTC (rev 1753)
@@ -4,6 +4,7 @@
* #%L
* Tutti :: Persistence API
* $Id$
+ * $Id$
* $HeadURL$
* %%
* Copyright (C) 2012 Ifremer
@@ -147,6 +148,10 @@
return Multimaps.index(list, GET_REF_TAX_CODE);
}
+ public static Multimap<String, Species> splitBySurveyCode(Iterable<Species> list) {
+ return Multimaps.index(list, GET_SURVEY_CODE);
+ }
+
public static final Function<Species, String> GET_TAXON_ID = new Function<Species, String>() {
@Override
public String apply(Species input) {
@@ -161,6 +166,13 @@
}
};
+ public static final Function<Species, String> GET_SURVEY_CODE = new Function<Species, String>() {
+ @Override
+ public String apply(Species input) {
+ return String.valueOf(input.getSurveyCode());
+ }
+ };
+
public static final Function<TuttiEntity, String> GET_ID = new Function<TuttiEntity, String>() {
@Override
public String apply(TuttiEntity input) {
@@ -515,7 +527,7 @@
public static float roundKiloGram(float value) {
BigDecimal sumB = new BigDecimal(value);
float result;
- if (Math.abs(value - sumB.floatValue())< 0.0001f) {
+ if (Math.abs(value - sumB.floatValue()) < 0.0001f) {
result = value;
} else {
result = sumB.abs(MATH_CONTEXT_4_DIGIT).floatValue();
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRowModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRowModel.java 2014-05-05 14:59:13 UTC (rev 1752)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRowModel.java 2014-05-05 15:00:37 UTC (rev 1753)
@@ -25,11 +25,7 @@
*/
import fr.ifremer.tutti.service.TuttiCsvUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.nuiton.csv.ValueParser;
-import java.text.ParseException;
-
/**
* @author kmorin <kmorin(a)codelutin.com>
* @since 1.2
@@ -41,13 +37,7 @@
newMandatoryColumn(CarrouselRow.PROPERTY_OPERATION_CODE);
newMandatoryColumn(CarrouselRow.PROPERTY_RIG_NUMBER);
- newMandatoryColumn(CarrouselRow.PROPERTY_SPECIES_ID, new ValueParser<String>() {
-
- @Override
- public String parse(String string) throws ParseException {
- return StringUtils.remove(string, '-').trim();
- }
- });
+ newMandatoryColumn(CarrouselRow.PROPERTY_SPECIES_ID);
newMandatoryColumn(CarrouselRow.PROPERTY_SIGN);
newMandatoryColumn(CarrouselRow.PROPERTY_DIRECTION,
TuttiCsvUtil.newEnumByNameParserFormatter(Directions.class));
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-05 14:59:13 UTC (rev 1752)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java 2014-05-05 15:00:37 UTC (rev 1753)
@@ -30,7 +30,6 @@
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import com.google.common.collect.Multimaps;
import com.google.common.collect.Sets;
import fr.ifremer.adagio.core.dao.referential.pmfm.ObjectTypeCode2;
import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId2;
@@ -147,7 +146,7 @@
PupitriImportResult result = new PupitriImportResult(trunkFile,
carrouselFile);
- importPupitriTrunk(result, trunkFile, operation, catchBatch);
+ importPupitriTrunk(result, trunkFile, operation);
importPupitriCarrousel(result, carrouselFile, operation, catchBatch);
if (result.isFishingOperationFound()) {
@@ -201,9 +200,7 @@
persistenceService.createAttachment(attachment, f);
}
- protected void importPupitriTrunk(PupitriImportResult result, File file,
- FishingOperation operation,
- CatchBatch catchBatch) {
+ protected void importPupitriTrunk(PupitriImportResult result, File file, FishingOperation operation) {
if (log.isInfoEnabled()) {
log.info("Will import pupitri operation [" + operation.toString() +
@@ -272,22 +269,9 @@
// prepare import
- //FIXME tchemit-2013-12-02 Explain what does it do ?
- // get the map of species by survey code
+ // get the map of species by survey code or reftax code
ListMultimap<String, Species> speciesBySurveyCode = ArrayListMultimap.create();
-
- speciesBySurveyCode.putAll(
- Multimaps.index(dataContext.getReferentSpeciesWithSurveyCode(),
- new Function<Species, String>() {
- @Override
- public String apply(Species input) {
- String surveyCode = String.valueOf(input.getSurveyCode());
- int end = Math.min(surveyCode.length(), 7);
- return surveyCode.substring(0, end);
- }
- }
- )
- );
+ speciesBySurveyCode.putAll(TuttiEntities.splitBySurveyCode(dataContext.getReferentSpeciesWithSurveyCode()));
speciesBySurveyCode.putAll(TuttiEntities.splitByRefTaxCode(dataContext.getReferentSpecies()));
// import the batches
Copied: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno3898Test.java (from rev 1735, trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceTest.java)
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno3898Test.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno3898Test.java 2014-05-05 15:00:37 UTC (rev 1753)
@@ -0,0 +1,137 @@
+package fr.ifremer.tutti.service.pupitri;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+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.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;
+
+/**
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 3.0-rc-2
+ */
+public class PupitriImportServiceAno3898Test {
+
+ @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/ano-3898.tnk", "pupitri.tnk");
+ File carroussel = dbResource.copyClassPathResource("pupitri/ano-3898.car", "pupitri.car");
+ File protocol = dbResource.copyClassPathResource("pupitri/ano-3898.tuttiProtocol", "ano-3898.tuttiProtocol");
+ dbResource.getConfig().getApplicationConfig().setOption(TuttiConfigurationOption.DB_PROTOCOL_DIRECTORY.getKey(), protocol.getParentFile().getAbsolutePath());
+ TuttiProtocol protocol1 = persistenceService.getProtocol("ano-3898");
+ 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(), false);
+ 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(), false);
+ Assert.assertEquals(31, rootSpeciesBatchAfter.sizeChildren());
+
+ Decorator<Species> speciesDecorator = decoratorService.getDecoratorByType(Species.class);
+
+ for (SpeciesBatch speciesBatch : rootSpeciesBatchAfter.getChildren()) {
+
+ Integer nbChildren = null;
+ // species 17003 (MELAAEG) has two childs (SMALL - BIG)
+ if (17003 == speciesBatch.getSpecies().getIdAsInt()) {
+ nbChildren = 2;
+ // species 37312 (LOLIFOR) has no childs (in puttitri has some DEFAULT AND SMALL)
+ } else if (37312 == speciesBatch.getSpecies().getIdAsInt()) {
+ nbChildren = 0;
+ // species 17005 (MERNMER) has no childs (in puttitri has some DEFAULT AND SMALL)
+ } else if (17005 == speciesBatch.getSpecies().getIdAsInt()) {
+ nbChildren = 0;
+ }
+
+ if (nbChildren != null) {
+ Assert.assertEquals("SpeciesBatch with species " + speciesDecorator.toString(speciesBatch.getSpecies()) + " should have with " + nbChildren + " but had " + speciesBatch.sizeChildBatchs(), nbChildren.intValue(), speciesBatch.sizeChildBatchs());
+ }
+
+ }
+ }
+}
Added: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5032Test.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5032Test.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5032Test.java 2014-05-05 15:00:37 UTC (rev 1753)
@@ -0,0 +1,152 @@
+package fr.ifremer.tutti.service.pupitri;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL: https://svn.codelutin.com/tutti/branches/3.3.6/tutti-service/src/test/java/… $
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+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;
+
+/**
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 3.0-rc-2
+ */
+public class PupitriImportServiceAno5032Test {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(PupitriImportServiceAno5032Test.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/ano-5032.tnk", "pupitri.tnk");
+ File carroussel = dbResource.copyClassPathResource("pupitri/ano-5032.car", "pupitri.car");
+ File protocol = dbResource.copyClassPathResource("pupitri/ano-5032.tuttiProtocol", "ano-5032.tuttiProtocol");
+ dbResource.getConfig().getApplicationConfig().setOption(TuttiConfigurationOption.DB_PROTOCOL_DIRECTORY.getKey(), protocol.getParentFile().getAbsolutePath());
+ TuttiProtocol protocol1 = persistenceService.getProtocol("ano-5032");
+ 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(), false);
+ Assert.assertEquals(3, rootSpeciesBatch.sizeChildren());
+ int nbNotAdded = service.importPupitri(trunk, carroussel, operation, catchBatch).getNbCarrousselNotImported();
+ Assert.assertEquals(4, nbNotAdded);
+ BatchContainer<SpeciesBatch> rootSpeciesBatchAfter = persistenceService.getRootSpeciesBatch(operation.getId(), false);
+ Assert.assertEquals(4, rootSpeciesBatchAfter.sizeChildren());
+
+ Set<Integer> unexpectedSpecies = Sets.newHashSet(
+ );
+ Set<Integer> expectedSpecies = Sets.newHashSet(
+ 17005, // MERNMER
+ 17186, // ACATPAL
+ 16328, // ACAPPEL
+ 20788 // ASRNATL
+ );
+
+ 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/PupitriImportServiceAno5032Test.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Deleted: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceTest.java 2014-05-05 14:59:13 UTC (rev 1752)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceTest.java 2014-05-05 15:00:37 UTC (rev 1753)
@@ -1,138 +0,0 @@
-package fr.ifremer.tutti.service.pupitri;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-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.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;
-
-/**
- * @author tchemit <chemit(a)codelutin.com>
- * @since 3.0-rc-2
- */
-public class PupitriImportServiceTest {
-
- @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 importPupitriANO3898() throws IOException {
-
- File trunk = dbResource.copyClassPathResource("pupitri/ano-3898.tnk", "pupitri.tnk");
- File carroussel = dbResource.copyClassPathResource("pupitri/ano-3898.car", "pupitri.car");
- File protocol = dbResource.copyClassPathResource("pupitri/ano-3898.tuttiProtocol", "ano-3898.tuttiProtocol");
- dbResource.getConfig().getApplicationConfig().setOption(TuttiConfigurationOption.DB_PROTOCOL_DIRECTORY.getKey(), protocol.getParentFile().getAbsolutePath());
- TuttiProtocol protocol1 = persistenceService.getProtocol("ano-3898");
- 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(), false);
- 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(), false);
- Assert.assertEquals(31, rootSpeciesBatchAfter.sizeChildren());
-
- Decorator<Species> speciesDecorator = decoratorService.getDecoratorByType(Species.class);
-
-// int index = 0;
- for (SpeciesBatch speciesBatch : rootSpeciesBatchAfter.getChildren()) {
-
- Integer nbChildren = null;
- // species 17003 (MELAAEG) has two childs (SMALL - BIG)
- if (17003 == speciesBatch.getSpecies().getIdAsInt()) {
- nbChildren = 2;
- // species 37312 (LOLIFOR) has no childs (in puttitri has some DEFAULT AND SMALL)
- } else if (37312 == speciesBatch.getSpecies().getIdAsInt()) {
- nbChildren = 0;
- // species 17005 (MERNMER) has no childs (in puttitri has some DEFAULT AND SMALL)
- }else if (17005== speciesBatch.getSpecies().getIdAsInt()) {
- nbChildren = 0;
- }
-
- if (nbChildren != null) {
- Assert.assertEquals("SpeciesBatch with species " + speciesDecorator.toString(speciesBatch.getSpecies()) + " should have with " + nbChildren + " but had " + speciesBatch.sizeChildBatchs(), nbChildren.intValue(), speciesBatch.sizeChildBatchs());
- }
-
- }
- }
-}
Modified: trunk/tutti-service/src/test/resources/pupitri/ano-3898.car
===================================================================
--- trunk/tutti-service/src/test/resources/pupitri/ano-3898.car 2014-05-05 14:59:13 UTC (rev 1752)
+++ trunk/tutti-service/src/test/resources/pupitri/ano-3898.car 2014-05-05 15:00:37 UTC (rev 1753)
@@ -1,381 +1,381 @@
-$TSMES,27/11/13,09:12:04.612,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0015.6,
-$TSMES,27/11/13,09:13:21.994,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0018.9,
-$TSMES,27/11/13,09:15:12.588,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0021.4,
-$TSMES,27/11/13,09:15:58.396,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0017.9,
-$TSMES,27/11/13,09:17:11.714,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0017.2,
-$TSMES,27/11/13,09:17:40.272,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0021.1,
-$TSMES,27/11/13,09:18:48.818,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0018.0,
-$TSMES,27/11/13,09:19:33.335,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0016.6,
-$TSMES,27/11/13,09:21:16.442,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0015.8,
-$TSMES,27/11/13,09:21:40.776,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0022.8,
-$TSMES,27/11/13,09:22:45.945,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0016.1,
-$TSMES,27/11/13,09:26:51.656,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0019.1,
-$TSMES,27/11/13,09:27:53.133,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0016.5,
-$TSMES,27/11/13,09:28:17.445,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0018.4,
-$TSMES,27/11/13,09:31:22.362,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0014.6,
-$TSMES,27/11/13,09:31:45.650,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0018.4,
-$TSMES,27/11/13,09:32:05.512,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0023.0,
-$TSMES,27/11/13,09:33:00.869,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0014.2,
-$TSMES,27/11/13,09:33:24.472,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0012.8,
-$TSMES,27/11/13,09:34:25.343,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0015.8,
-$TSMES,27/11/13,09:34:44.541,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0021.0,
-$TSMES,27/11/13,09:36:02.174,BLCAR, 0,A,1,001,NEPH-NOR,0,VAT,0006.3,
-$TSMES,27/11/13,09:36:30.632,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0024.1,
-$TSMES,27/11/13,09:37:25.749,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0017.5,
-$TSMES,27/11/13,09:37:47.056,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0018.3,
-$TSMES,27/11/13,09:38:44.513,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0018.5,
-$TSMES,27/11/13,09:40:34.621,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0015.8,
-$TSMES,27/11/13,09:41:28.855,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0011.3,
-$TSMES,27/11/13,09:42:39.349,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0016.7,
-$TSMES,27/11/13,09:43:01.405,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0020.2,
-$TSMES,27/11/13,09:43:21.779,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0018.7,
-$TSMES,27/11/13,09:44:16.028,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0025.7,
-$TSMES,27/11/13,09:44:39.643,BLCAR, 0,A,1,002,MERL-MCC,0,VAT,0017.6,
-$TSMES,27/11/13,09:45:41.310,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0015.9,
-$TSMES,27/11/13,09:46:04.181,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0018.0,
-$TSMES,27/11/13,09:47:00.822,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0018.1,
-$TSMES,27/11/13,09:47:25.806,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0018.0,
-$TSMES,27/11/13,09:48:25.059,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0013.1,
-$TSMES,27/11/13,09:48:47.779,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0016.4,
-$TSMES,27/11/13,09:50:25.036,BLCAR,-1,A,1,002,CLUP-HAR,0,VAT,-001.8,
-$TSMES,27/11/13,09:51:02.085,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0016.5,
-$TSMES,27/11/13,09:52:08.332,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0016.2,
-$TSMES,27/11/13,09:52:34.644,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0020.6,
-$TSMES,27/11/13,09:52:57.540,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0016.1,
-$TSMES,27/11/13,09:53:31.676,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0018.3,
-$TSMES,27/11/13,09:54:07.781,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0021.0,
-$TSMES,27/11/13,09:55:10.374,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0018.4,
-$TSMES,27/11/13,09:55:35.859,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0018.1,
-$TSMES,27/11/13,09:56:02.545,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0014.2,
-$TSMES,27/11/13,09:57:06.900,BLCAR, 0,A,1,002,EUTR-GUR,0,VAT,0013.5,
-$TSMES,27/11/13,09:57:28.821,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0018.3,
-$TSMES,27/11/13,09:58:35.607,BLCAR, 0,A,1,001,MERL-MNG,0,VAT,0009.9,
-$TSMES,27/11/13,09:59:17.462,BLCAR, 0,A,1,001,EUTR-GUR,0,VAT,0006.9,
-$TSMES,27/11/13,10:00:18.404,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0023.0,
-$TSMES,27/11/13,10:00:45.111,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0014.8,
-$TSMES,27/11/13,10:01:59.945,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0019.3,
-$TSMES,27/11/13,10:02:23.121,BLCAR, 0,A,1,002,NEPH-NOR,0,VAT,0010.2,
-$TSMES,27/11/13,10:03:37.632,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0014.0,
-$TSMES,27/11/13,10:04:06.529,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0015.1,
-$TSMES,27/11/13,10:05:06.144,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0014.0,
-$TSMES,27/11/13,10:05:36.831,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0020.3,
-$TSMES,27/11/13,10:06:02.527,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0012.3,
-$TSMES,27/11/13,10:07:12.015,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0023.7,
-$TSMES,27/11/13,10:07:44.295,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0018.2,
-$TSMES,27/11/13,10:08:22.400,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0017.6,
-$TSMES,27/11/13,10:09:24.404,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0022.5,
-$TSMES,27/11/13,10:09:45.542,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0017.7,
-$TSMES,27/11/13,10:10:07.635,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0021.8,
-$TSMES,27/11/13,10:10:38.750,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0011.2,
-$TSMES,27/11/13,10:11:05.784,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0015.9,
-$TSMES,27/11/13,10:11:34.634,BLCAR, 0,A,1,002,CONG-CON,0,VAT,0001.0,
-$TSMES,27/11/13,10:12:40.011,BLCAR,-1,A,1,002,RAJA-CLA,0,VAT,-000.1,
-$TSMES,27/11/13,10:13:08.077,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0014.8,
-$TSMES,27/11/13,10:13:35.173,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0012.2,
-$TSMES,27/11/13,10:13:56.456,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0020.3,
-$TSMES,27/11/13,10:14:43.589,BLCAR, 0,A,1,001,HIPP-PLA,0,VAT,0002.9,
-$TSMES,27/11/13,10:15:33.096,BLCAR, 0,A,1,001,MELA-AEG,P,VAT,0001.4,
-$TSMES,27/11/13,10:15:59.750,BLCAR, 0,A,1,002,MELA-AEG,G,VAT,0007.8,
-$TSMES,27/11/13,10:16:28.073,BLCAR, 0,A,1,001,GADU-MOR,0,VAT,0000.1,
-$TSMES,27/11/13,10:17:04.293,BLCAR, 0,A,1,001,MERL-MNG,0,VAT,0007.1,
-$TSMES,27/11/13,10:17:35.174,BLCAR, 0,A,1,001,TRIS-MIN,0,VAT,0006.0,
-$TSMES,27/11/13,10:18:09.419,BLCAR, 0,A,1,001,MERL-MNG,P,VAT,0007.4,
-$TSMES,27/11/13,10:18:41.202,BLCAR, 0,A,1,001,MERL-MNG,0,VAT,0000.4,
-$TSMES,27/11/13,10:19:05.719,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0007.7,
-$TSMES,27/11/13,10:19:50.270,BLCAR, 0,A,1,001,HIPP-PLA,0,VAT,0002.7,
-$TSMES,27/11/13,10:20:20.642,BLCAR, 0,A,1,002,MICR-POU,0,VAT,0010.7,
-$TSMES,27/11/13,10:20:48.724,BLCAR, 0,A,1,001,LOLI-FOR,0,VAT,0002.2,
-$TSMES,27/11/13,10:21:10.768,BLCAR, 0,A,1,001,EUTR-GUR,0,VAT,0004.7,
-$TSMES,27/11/13,10:21:41.022,BLCAR, 0,A,1,001,NEPH-NOR,0,VAT,0006.3,
-$TSMES,27/11/13,10:22:42.411,BLCAR, 0,A,1,001,ARGE-SPH,0,VAT,0000.1,
-$TSMES,27/11/13,10:23:25.537,BLCAR, 0,A,1,001,TRAC-TRU,0,VAT,0000.1,
-$TSMES,27/11/13,10:24:06.077,BLCAR, 0,A,1,001,SCOM-SCO,0,VAT,0000.4,
-$TSMES,27/11/13,10:24:34.127,BLCAR, 0,A,1,001,MAUR-MUE,0,VAT,0000.1,
-$TSMES,27/11/13,10:25:23.660,BLCAR, 0,A,1,001,LEPI-WHI,0,VAT,0003.1,
-$TSMES,27/11/13,10:25:47.598,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0005.3,
-$TSMES,27/11/13,10:26:12.602,BLCAR, 0,A,1,002,LOPH-PIS,0,VAT,0012.0,
-$TSMES,27/11/13,10:26:33.530,BLCAR, 0,A,1,003,ELED-CIR,0,VAT,0001.4,
-$TSMES,27/11/13,10:27:34.508,BLCAR, 0,A,1,003,ROSS-MAC,0,VAT,0000.1,
-$TSMES,27/11/13,10:28:17.554,BLCAR, 0,A,1,001,ENCH-CIM,0,VAT,0000.8,
-$TSMES,27/11/13,10:28:57.935,BLCAR, 0,A,1,001,LIMA-LIM,0,VAT,0000.2,
-$TSMES,27/11/13,10:29:42.251,BLCAR, 0,A,1,001,CALL-MAC,0,VAT,0000.2,
-$TSMES,27/11/13,10:30:09.536,BLCAR, 0,A,1,001,CALL-LYR,0,VAT,0000.8,
-$TSMES,27/11/13,10:30:59.437,BLCAR, 0,A,1,001,MICR-VAR,0,VAT,0000.2,
-$TSMES,27/11/13,10:31:32.624,BLCAR, 0,A,1,001,SEPI-OLZ,0,VAT,0000.2,
-$TSMES,27/11/13,10:31:59.713,BLCAR, 0,A,1,003,LOLI-FOR,P,VAT,0000.1,
-$TSMES,27/11/13,10:32:34.851,BLCAR, 0,A,1,003,TODA-EBL,0,VAT,0000.2,
-$TSMES,27/11/13,10:33:02.175,BLCAR, 0,A,1,002,MERL-MCC,0,VAT,0013.8,
-$TSMES,27/11/13,10:35:38.377,BLCAR, 0,A,1,001,GLYP-CYN,0,VAT,0000.3,
-$TSMES,27/11/13,12:04:35.575,BLCAR, 0,R0482,1,001,MERL-MNG,0,VAT,0020.0,
-$TSMES,27/11/13,12:06:30.634,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.9,
-$TSMES,27/11/13,12:08:42.036,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.3,
-$TSMES,27/11/13,12:09:02.786,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0019.2,
-$TSMES,27/11/13,12:12:30.199,BLCAR, 0,R0482,1,002,MELA-AEG,0,VAT,0021.9,
-$TSMES,27/11/13,12:13:14.543,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0000.0,
-$TSMES,27/11/13,12:13:35.465,BLCAR,-1,R0482,1,002,MELA-AEG,0,VAT,-001.4,
-$TSMES,27/11/13,12:14:42.156,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0000.9,
-$TSMES,27/11/13,12:15:05.319,BLCAR,-1,R0482,1,002,CLUP-HAR,0,VAT,-002.9,
-$TSMES,27/11/13,12:16:11.874,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0007.1,
-$TSMES,27/11/13,12:16:53.113,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0000.3,
-$TSMES,27/11/13,12:19:51.787,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0000.4,
-$TSMES,27/11/13,12:20:45.974,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.5,
-$TSMES,27/11/13,12:21:08.178,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.2,
-$TSMES,27/11/13,12:21:41.969,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0021.3,
-$TSMES,27/11/13,12:22:09.619,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0015.2,
-$TSMES,27/11/13,12:23:05.053,BLCAR, 0,R0482,1,002,MERL-MNG,P,VAT,0014.7,
-$TSMES,27/11/13,12:24:17.176,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0016.4,
-$TSMES,27/11/13,12:25:25.163,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.8,
-$TSMES,27/11/13,12:27:27.892,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0017.8,
-$TSMES,27/11/13,12:27:49.775,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0017.7,
-$TSMES,27/11/13,12:28:15.701,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0007.3,
-$TSMES,27/11/13,12:32:10.843,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0018.7,
-$TSMES,27/11/13,12:34:21.824,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.6,
-$TSMES,27/11/13,12:35:28.244,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.9,
-$TSMES,27/11/13,12:35:55.232,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0018.6,
-$TSMES,27/11/13,12:36:27.381,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.9,
-$TSMES,27/11/13,12:37:02.445,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0021.9,
-$TSMES,27/11/13,12:38:17.102,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0020.9,
-$TSMES,27/11/13,12:38:39.197,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0020.5,
-$TSMES,27/11/13,12:39:55.258,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0008.8,
-$TSMES,27/11/13,12:41:15.892,BLCAR, 0,R0482,1,001,MELA-AEG,P,VAT,0008.7,
-$TSMES,27/11/13,12:41:42.452,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0019.1,
-$TSMES,27/11/13,12:43:19.486,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0018.1,
-$TSMES,27/11/13,12:44:34.765,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0018.3,
-$TSMES,27/11/13,12:45:02.744,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.4,
-$TSMES,27/11/13,12:46:42.493,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0020.0,
-$TSMES,27/11/13,12:47:10.163,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0021.0,
-$TSMES,27/11/13,12:49:31.763,BLCAR,-1,R0482,1,002,MERL-MNG,P,VAT,-002.4,
-$TSMES,27/11/13,12:50:05.748,BLCAR,-1,R0482,1,002,MELA-AEG,G,VAT,-000.1,
-$TSMES,27/11/13,12:52:27.719,BLCAR,-1,R0482,1,002,MERL-MNG,0,VAT,-000.2,
-$TSMES,27/11/13,12:53:38.590,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0006.6,
-$TSMES,27/11/13,12:54:05.175,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0034.3,
-$TSMES,27/11/13,12:54:57.849,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0039.3,
-$TSMES,27/11/13,12:55:38.978,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0005.0,
-$TSMES,27/11/13,12:55:58.875,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0038.0,
-$TSMES,27/11/13,12:56:58.719,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0039.8,
-$TSMES,27/11/13,12:58:00.192,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0040.2,
-$TSMES,27/11/13,12:58:59.709,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.0,
-$TSMES,27/11/13,13:00:07.669,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0042.2,
-$TSMES,27/11/13,13:00:30.038,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0040.7,
-$TSMES,27/11/13,13:00:56.621,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0042.0,
-$TSMES,27/11/13,13:01:46.953,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0039.7,
-$TSMES,27/11/13,13:02:16.623,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0042.7,
-$TSMES,27/11/13,13:03:14.387,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0008.3,
-$TSMES,27/11/13,13:03:53.935,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0041.8,
-$TSMES,27/11/13,13:04:18.682,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.8,
-$TSMES,27/11/13,13:04:44.747,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.8,
-$TSMES,27/11/13,13:06:33.303,BLCAR, 0,R0482,1,002,TRIS-ESM,0,VAT,0037.5,
-$TSMES,27/11/13,13:07:10.083,BLCAR, 0,R0482,1,001,MERL-MNG,0,VAT,0011.8,
-$TSMES,27/11/13,13:12:04.520,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0042.3,
-$TSMES,27/11/13,13:13:25.402,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.3,
-$TSMES,27/11/13,13:13:45.372,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0042.0,
-$TSMES,27/11/13,13:14:52.337,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0040.0,
-$TSMES,27/11/13,13:16:04.830,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.4,
-$TSMES,27/11/13,13:16:47.888,BLCAR, 0,R0482,1,002,MERL-MNG,P,VAT,0041.0,
-$TSMES,27/11/13,13:17:10.620,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0045.5,
-$TSMES,27/11/13,13:18:21.177,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0041.8,
-$TSMES,27/11/13,13:18:46.078,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.1,
-$TSMES,27/11/13,13:20:06.454,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0008.4,
-$TSMES,27/11/13,13:20:43.587,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0040.2,
-$TSMES,27/11/13,13:21:13.460,BLCAR, 0,R0482,1,002,TRIS-ESM,0,VAT,0035.1,
-$TSMES,27/11/13,13:21:42.160,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0043.2,
-$TSMES,27/11/13,13:22:43.729,BLCAR, 0,R0482,1,002,EUTR-GUR,0,VAT,0036.9,
-$TSMES,27/11/13,13:23:05.231,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0040.3,
-$TSMES,27/11/13,13:23:34.911,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0040.9,
-$TSMES,27/11/13,13:24:11.619,BLCAR, 0,R0482,1,002,MELA-AEG,0,VAT,0038.0,
-$TSMES,27/11/13,13:24:31.678,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.6,
-$TSMES,27/11/13,13:25:51.665,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0041.5,
-$TSMES,27/11/13,13:26:40.759,BLCAR, 0,R0482,1,002,EUTR-GUR,0,VAT,0034.1,
-$TSMES,27/11/13,13:27:08.325,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0040.0,
-$TSMES,27/11/13,13:27:38.129,BLCAR, 0,R0482,1,002,SCYL-CAN,0,VAT,0036.8,
-$TSMES,27/11/13,13:30:07.410,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0040.1,
-$TSMES,27/11/13,13:31:10.336,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0008.4,
-$TSMES,27/11/13,13:33:25.697,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0042.7,
-$TSMES,27/11/13,13:35:13.921,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0028.1,
-$TSMES,27/11/13,13:35:34.139,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0040.6,
-$TSMES,27/11/13,13:36:54.752,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0041.0,
-$TSMES,27/11/13,13:37:51.527,BLCAR, 0,R0482,1,002,MELA-AEG,0,VAT,0039.3,
-$TSMES,27/11/13,13:38:19.527,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.1,
-$TSMES,27/11/13,13:39:05.751,BLCAR, 0,R0482,1,002,LOPH-PIS,0,VAT,0024.2,
-$TSMES,27/11/13,13:39:33.528,BLCAR, 0,R0482,1,002,SCYL-CAN,0,VAT,0024.4,
-$TSMES,27/11/13,13:39:55.322,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0037.2,
-$TSMES,27/11/13,13:40:29.179,BLCAR, 0,R0482,1,001,MERL-MCC,0,VAT,0004.7,
-$TSMES,27/11/13,13:40:48.783,BLCAR, 0,R0482,1,001,SQUA-ACA,0,VAT,0001.8,
-$TSMES,27/11/13,13:41:11.596,BLCAR, 0,R0482,1,002,EUTR-GUR,0,VAT,0036.8,
-$TSMES,27/11/13,13:41:43.833,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0038.3,
-$TSMES,27/11/13,13:42:28.895,BLCAR, 0,R0482,1,001,MOLV-MOL,0,VAT,0000.7,
-$TSMES,27/11/13,13:42:57.179,BLCAR, 0,R0482,1,001,SCOM-SCO,0,VAT,0000.4,
-$TSMES,27/11/13,13:43:24.662,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0028.9,
-$TSMES,27/11/13,13:44:00.332,BLCAR, 0,R0482,1,001,ARGE-SPH,0,VAT,0001.4,
-$TSMES,27/11/13,13:44:33.512,BLCAR, 0,R0482,1,001,GLYP-CYN,0,VAT,0000.3,
-$TSMES,27/11/13,13:45:01.228,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0044.2,
-$TSMES,27/11/13,13:45:44.635,BLCAR, 0,R0482,1,001,NEPH-NOR,0,VAT,0000.7,
-$TSMES,27/11/13,13:46:34.572,BLCAR, 0,R0482,1,001,MICR-POU,0,VAT,0001.5,
-$TSMES,27/11/13,13:46:58.845,BLCAR, 0,R0482,1,001,HIPP-PLA,0,VAT,0006.0,
-$TSMES,27/11/13,13:47:30.185,BLCAR, 0,R0482,1,002,TRIS-ESM,0,VAT,0027.9,
-$TSMES,27/11/13,13:48:06.934,BLCAR, 0,R0482,1,001,TRIS-MIN,0,VAT,0008.4,
-$TSMES,27/11/13,13:49:00.114,BLCAR, 0,R0482,1,001,ASPI-CUC,0,VAT,0000.3,
-$TSMES,27/11/13,13:49:22.326,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0034.3,
-$TSMES,27/11/13,13:50:00.587,BLCAR, 0,R0482,1,001,MICR-KIT,0,VAT,0002.0,
-$TSMES,27/11/13,13:50:54.059,BLCAR, 0,R0482,1,001,LIMA-LIM,0,VAT,0000.8,
-$TSMES,27/11/13,13:51:57.928,BLCAR, 0,R0482,1,001,CALL-LYR,0,VAT,0000.7,
-$TSMES,27/11/13,13:53:03.922,BLCAR, 0,R0482,1,001,LEPI-WHI,0,VAT,0005.3,
-$TSMES,27/11/13,13:53:27.565,BLCAR, 0,R0482,1,001,CALL-MAC,0,VAT,0000.2,
-$TSMES,27/11/13,13:53:57.947,BLCAR, 0,R0482,1,001,PLEU-PLA,0,VAT,0000.8,
-$TSMES,27/11/13,13:54:15.343,BLCAR, 0,R0482,1,001,TODA-EBL,0,VAT,0000.2,
-$TSMES,27/11/13,13:54:35.664,BLCAR, 0,R0482,1,001,ELED-CIR,0,VAT,0000.3,
-$TSMES,27/11/13,13:55:04.135,BLCAR, 0,R0482,1,001,TRAC-TRU,0,VAT,0000.7,
+$TSMES,27/11/13,09:12:04.612,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0015.6,
+$TSMES,27/11/13,09:13:21.994,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0018.9,
+$TSMES,27/11/13,09:15:12.588,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0021.4,
+$TSMES,27/11/13,09:15:58.396,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0017.9,
+$TSMES,27/11/13,09:17:11.714,BLCAR, 0,A,1,002,TRISESM,0,VAT,0017.2,
+$TSMES,27/11/13,09:17:40.272,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0021.1,
+$TSMES,27/11/13,09:18:48.818,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0018.0,
+$TSMES,27/11/13,09:19:33.335,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0016.6,
+$TSMES,27/11/13,09:21:16.442,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0015.8,
+$TSMES,27/11/13,09:21:40.776,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0022.8,
+$TSMES,27/11/13,09:22:45.945,BLCAR, 0,A,1,002,TRISESM,0,VAT,0016.1,
+$TSMES,27/11/13,09:26:51.656,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0019.1,
+$TSMES,27/11/13,09:27:53.133,BLCAR, 0,A,1,002,TRISESM,0,VAT,0016.5,
+$TSMES,27/11/13,09:28:17.445,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0018.4,
+$TSMES,27/11/13,09:31:22.362,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0014.6,
+$TSMES,27/11/13,09:31:45.650,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0018.4,
+$TSMES,27/11/13,09:32:05.512,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0023.0,
+$TSMES,27/11/13,09:33:00.869,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0014.2,
+$TSMES,27/11/13,09:33:24.472,BLCAR, 0,A,1,002,TRISESM,0,VAT,0012.8,
+$TSMES,27/11/13,09:34:25.343,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0015.8,
+$TSMES,27/11/13,09:34:44.541,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0021.0,
+$TSMES,27/11/13,09:36:02.174,BLCAR, 0,A,1,001,NEPHNOR,0,VAT,0006.3,
+$TSMES,27/11/13,09:36:30.632,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0024.1,
+$TSMES,27/11/13,09:37:25.749,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0017.5,
+$TSMES,27/11/13,09:37:47.056,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0018.3,
+$TSMES,27/11/13,09:38:44.513,BLCAR, 0,A,1,002,TRISESM,0,VAT,0018.5,
+$TSMES,27/11/13,09:40:34.621,BLCAR, 0,A,1,002,TRISESM,0,VAT,0015.8,
+$TSMES,27/11/13,09:41:28.855,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0011.3,
+$TSMES,27/11/13,09:42:39.349,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0016.7,
+$TSMES,27/11/13,09:43:01.405,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0020.2,
+$TSMES,27/11/13,09:43:21.779,BLCAR, 0,A,1,002,TRISESM,0,VAT,0018.7,
+$TSMES,27/11/13,09:44:16.028,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0025.7,
+$TSMES,27/11/13,09:44:39.643,BLCAR, 0,A,1,002,MERLMCC,0,VAT,0017.6,
+$TSMES,27/11/13,09:45:41.310,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0015.9,
+$TSMES,27/11/13,09:46:04.181,BLCAR, 0,A,1,002,TRISESM,0,VAT,0018.0,
+$TSMES,27/11/13,09:47:00.822,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0018.1,
+$TSMES,27/11/13,09:47:25.806,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0018.0,
+$TSMES,27/11/13,09:48:25.059,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0013.1,
+$TSMES,27/11/13,09:48:47.779,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0016.4,
+$TSMES,27/11/13,09:50:25.036,BLCAR,-1,A,1,002,CLUPHAR,0,VAT,-001.8,
+$TSMES,27/11/13,09:51:02.085,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0016.5,
+$TSMES,27/11/13,09:52:08.332,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0016.2,
+$TSMES,27/11/13,09:52:34.644,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0020.6,
+$TSMES,27/11/13,09:52:57.540,BLCAR, 0,A,1,002,TRISESM,0,VAT,0016.1,
+$TSMES,27/11/13,09:53:31.676,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0018.3,
+$TSMES,27/11/13,09:54:07.781,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0021.0,
+$TSMES,27/11/13,09:55:10.374,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0018.4,
+$TSMES,27/11/13,09:55:35.859,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0018.1,
+$TSMES,27/11/13,09:56:02.545,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0014.2,
+$TSMES,27/11/13,09:57:06.900,BLCAR, 0,A,1,002,EUTRGUR,0,VAT,0013.5,
+$TSMES,27/11/13,09:57:28.821,BLCAR, 0,A,1,002,TRISESM,0,VAT,0018.3,
+$TSMES,27/11/13,09:58:35.607,BLCAR, 0,A,1,001,MERLMNG,0,VAT,0009.9,
+$TSMES,27/11/13,09:59:17.462,BLCAR, 0,A,1,001,EUTRGUR,0,VAT,0006.9,
+$TSMES,27/11/13,10:00:18.404,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0023.0,
+$TSMES,27/11/13,10:00:45.111,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0014.8,
+$TSMES,27/11/13,10:01:59.945,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0019.3,
+$TSMES,27/11/13,10:02:23.121,BLCAR, 0,A,1,002,NEPHNOR,0,VAT,0010.2,
+$TSMES,27/11/13,10:03:37.632,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0014.0,
+$TSMES,27/11/13,10:04:06.529,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0015.1,
+$TSMES,27/11/13,10:05:06.144,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0014.0,
+$TSMES,27/11/13,10:05:36.831,BLCAR, 0,A,1,002,TRISESM,0,VAT,0020.3,
+$TSMES,27/11/13,10:06:02.527,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0012.3,
+$TSMES,27/11/13,10:07:12.015,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0023.7,
+$TSMES,27/11/13,10:07:44.295,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0018.2,
+$TSMES,27/11/13,10:08:22.400,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0017.6,
+$TSMES,27/11/13,10:09:24.404,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0022.5,
+$TSMES,27/11/13,10:09:45.542,BLCAR, 0,A,1,002,TRISESM,0,VAT,0017.7,
+$TSMES,27/11/13,10:10:07.635,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0021.8,
+$TSMES,27/11/13,10:10:38.750,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0011.2,
+$TSMES,27/11/13,10:11:05.784,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0015.9,
+$TSMES,27/11/13,10:11:34.634,BLCAR, 0,A,1,002,CONGCON,0,VAT,0001.0,
+$TSMES,27/11/13,10:12:40.011,BLCAR,-1,A,1,002,RAJACLA,0,VAT,-000.1,
+$TSMES,27/11/13,10:13:08.077,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0014.8,
+$TSMES,27/11/13,10:13:35.173,BLCAR, 0,A,1,002,TRISESM,0,VAT,0012.2,
+$TSMES,27/11/13,10:13:56.456,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0020.3,
+$TSMES,27/11/13,10:14:43.589,BLCAR, 0,A,1,001,HIPPPLA,0,VAT,0002.9,
+$TSMES,27/11/13,10:15:33.096,BLCAR, 0,A,1,001,MELAAEG,P,VAT,0001.4,
+$TSMES,27/11/13,10:15:59.750,BLCAR, 0,A,1,002,MELAAEG,G,VAT,0007.8,
+$TSMES,27/11/13,10:16:28.073,BLCAR, 0,A,1,001,GADUMOR,0,VAT,0000.1,
+$TSMES,27/11/13,10:17:04.293,BLCAR, 0,A,1,001,MERLMNG,0,VAT,0007.1,
+$TSMES,27/11/13,10:17:35.174,BLCAR, 0,A,1,001,TRISMIN,0,VAT,0006.0,
+$TSMES,27/11/13,10:18:09.419,BLCAR, 0,A,1,001,MERLMNG,P,VAT,0007.4,
+$TSMES,27/11/13,10:18:41.202,BLCAR, 0,A,1,001,MERLMNG,0,VAT,0000.4,
+$TSMES,27/11/13,10:19:05.719,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0007.7,
+$TSMES,27/11/13,10:19:50.270,BLCAR, 0,A,1,001,HIPPPLA,0,VAT,0002.7,
+$TSMES,27/11/13,10:20:20.642,BLCAR, 0,A,1,002,MICRPOU,0,VAT,0010.7,
+$TSMES,27/11/13,10:20:48.724,BLCAR, 0,A,1,001,LOLIFOR,0,VAT,0002.2,
+$TSMES,27/11/13,10:21:10.768,BLCAR, 0,A,1,001,EUTRGUR,0,VAT,0004.7,
+$TSMES,27/11/13,10:21:41.022,BLCAR, 0,A,1,001,NEPHNOR,0,VAT,0006.3,
+$TSMES,27/11/13,10:22:42.411,BLCAR, 0,A,1,001,ARGESPH,0,VAT,0000.1,
+$TSMES,27/11/13,10:23:25.537,BLCAR, 0,A,1,001,TRACTRU,0,VAT,0000.1,
+$TSMES,27/11/13,10:24:06.077,BLCAR, 0,A,1,001,SCOMSCO,0,VAT,0000.4,
+$TSMES,27/11/13,10:24:34.127,BLCAR, 0,A,1,001,MAURMUE,0,VAT,0000.1,
+$TSMES,27/11/13,10:25:23.660,BLCAR, 0,A,1,001,LEPIWHI,0,VAT,0003.1,
+$TSMES,27/11/13,10:25:47.598,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0005.3,
+$TSMES,27/11/13,10:26:12.602,BLCAR, 0,A,1,002,LOPHPIS,0,VAT,0012.0,
+$TSMES,27/11/13,10:26:33.530,BLCAR, 0,A,1,003,ELEDCIR,0,VAT,0001.4,
+$TSMES,27/11/13,10:27:34.508,BLCAR, 0,A,1,003,ROSSMAC,0,VAT,0000.1,
+$TSMES,27/11/13,10:28:17.554,BLCAR, 0,A,1,001,ENCHCIM,0,VAT,0000.8,
+$TSMES,27/11/13,10:28:57.935,BLCAR, 0,A,1,001,LIMALIM,0,VAT,0000.2,
+$TSMES,27/11/13,10:29:42.251,BLCAR, 0,A,1,001,CALLMAC,0,VAT,0000.2,
+$TSMES,27/11/13,10:30:09.536,BLCAR, 0,A,1,001,CALLLYR,0,VAT,0000.8,
+$TSMES,27/11/13,10:30:59.437,BLCAR, 0,A,1,001,MICRVAR,0,VAT,0000.2,
+$TSMES,27/11/13,10:31:32.624,BLCAR, 0,A,1,001,SEPIOLZ,0,VAT,0000.2,
+$TSMES,27/11/13,10:31:59.713,BLCAR, 0,A,1,003,LOLIFOR,P,VAT,0000.1,
+$TSMES,27/11/13,10:32:34.851,BLCAR, 0,A,1,003,TODAEBL,0,VAT,0000.2,
+$TSMES,27/11/13,10:33:02.175,BLCAR, 0,A,1,002,MERLMCC,0,VAT,0013.8,
+$TSMES,27/11/13,10:35:38.377,BLCAR, 0,A,1,001,GLYPCYN,0,VAT,0000.3,
+$TSMES,27/11/13,12:04:35.575,BLCAR, 0,R0482,1,001,MERLMNG,0,VAT,0020.0,
+$TSMES,27/11/13,12:06:30.634,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.9,
+$TSMES,27/11/13,12:08:42.036,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.3,
+$TSMES,27/11/13,12:09:02.786,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0019.2,
+$TSMES,27/11/13,12:12:30.199,BLCAR, 0,R0482,1,002,MELAAEG,0,VAT,0021.9,
+$TSMES,27/11/13,12:13:14.543,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0000.0,
+$TSMES,27/11/13,12:13:35.465,BLCAR,-1,R0482,1,002,MELAAEG,0,VAT,-001.4,
+$TSMES,27/11/13,12:14:42.156,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0000.9,
+$TSMES,27/11/13,12:15:05.319,BLCAR,-1,R0482,1,002,CLUPHAR,0,VAT,-002.9,
+$TSMES,27/11/13,12:16:11.874,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0007.1,
+$TSMES,27/11/13,12:16:53.113,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0000.3,
+$TSMES,27/11/13,12:19:51.787,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0000.4,
+$TSMES,27/11/13,12:20:45.974,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.5,
+$TSMES,27/11/13,12:21:08.178,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.2,
+$TSMES,27/11/13,12:21:41.969,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0021.3,
+$TSMES,27/11/13,12:22:09.619,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0015.2,
+$TSMES,27/11/13,12:23:05.053,BLCAR, 0,R0482,1,002,MERLMNG,P,VAT,0014.7,
+$TSMES,27/11/13,12:24:17.176,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0016.4,
+$TSMES,27/11/13,12:25:25.163,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.8,
+$TSMES,27/11/13,12:27:27.892,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0017.8,
+$TSMES,27/11/13,12:27:49.775,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0017.7,
+$TSMES,27/11/13,12:28:15.701,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0007.3,
+$TSMES,27/11/13,12:32:10.843,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0018.7,
+$TSMES,27/11/13,12:34:21.824,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.6,
+$TSMES,27/11/13,12:35:28.244,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.9,
+$TSMES,27/11/13,12:35:55.232,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0018.6,
+$TSMES,27/11/13,12:36:27.381,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.9,
+$TSMES,27/11/13,12:37:02.445,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0021.9,
+$TSMES,27/11/13,12:38:17.102,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0020.9,
+$TSMES,27/11/13,12:38:39.197,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0020.5,
+$TSMES,27/11/13,12:39:55.258,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0008.8,
+$TSMES,27/11/13,12:41:15.892,BLCAR, 0,R0482,1,001,MELAAEG,P,VAT,0008.7,
+$TSMES,27/11/13,12:41:42.452,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0019.1,
+$TSMES,27/11/13,12:43:19.486,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0018.1,
+$TSMES,27/11/13,12:44:34.765,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0018.3,
+$TSMES,27/11/13,12:45:02.744,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.4,
+$TSMES,27/11/13,12:46:42.493,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0020.0,
+$TSMES,27/11/13,12:47:10.163,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0021.0,
+$TSMES,27/11/13,12:49:31.763,BLCAR,-1,R0482,1,002,MERLMNG,P,VAT,-002.4,
+$TSMES,27/11/13,12:50:05.748,BLCAR,-1,R0482,1,002,MELAAEG,G,VAT,-000.1,
+$TSMES,27/11/13,12:52:27.719,BLCAR,-1,R0482,1,002,MERLMNG,0,VAT,-000.2,
+$TSMES,27/11/13,12:53:38.590,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0006.6,
+$TSMES,27/11/13,12:54:05.175,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0034.3,
+$TSMES,27/11/13,12:54:57.849,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0039.3,
+$TSMES,27/11/13,12:55:38.978,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0005.0,
+$TSMES,27/11/13,12:55:58.875,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0038.0,
+$TSMES,27/11/13,12:56:58.719,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0039.8,
+$TSMES,27/11/13,12:58:00.192,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0040.2,
+$TSMES,27/11/13,12:58:59.709,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.0,
+$TSMES,27/11/13,13:00:07.669,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0042.2,
+$TSMES,27/11/13,13:00:30.038,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0040.7,
+$TSMES,27/11/13,13:00:56.621,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0042.0,
+$TSMES,27/11/13,13:01:46.953,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0039.7,
+$TSMES,27/11/13,13:02:16.623,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0042.7,
+$TSMES,27/11/13,13:03:14.387,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0008.3,
+$TSMES,27/11/13,13:03:53.935,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0041.8,
+$TSMES,27/11/13,13:04:18.682,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.8,
+$TSMES,27/11/13,13:04:44.747,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.8,
+$TSMES,27/11/13,13:06:33.303,BLCAR, 0,R0482,1,002,TRISESM,0,VAT,0037.5,
+$TSMES,27/11/13,13:07:10.083,BLCAR, 0,R0482,1,001,MERLMNG,0,VAT,0011.8,
+$TSMES,27/11/13,13:12:04.520,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0042.3,
+$TSMES,27/11/13,13:13:25.402,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.3,
+$TSMES,27/11/13,13:13:45.372,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0042.0,
+$TSMES,27/11/13,13:14:52.337,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0040.0,
+$TSMES,27/11/13,13:16:04.830,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.4,
+$TSMES,27/11/13,13:16:47.888,BLCAR, 0,R0482,1,002,MERLMNG,P,VAT,0041.0,
+$TSMES,27/11/13,13:17:10.620,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0045.5,
+$TSMES,27/11/13,13:18:21.177,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0041.8,
+$TSMES,27/11/13,13:18:46.078,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.1,
+$TSMES,27/11/13,13:20:06.454,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0008.4,
+$TSMES,27/11/13,13:20:43.587,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0040.2,
+$TSMES,27/11/13,13:21:13.460,BLCAR, 0,R0482,1,002,TRISESM,0,VAT,0035.1,
+$TSMES,27/11/13,13:21:42.160,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0043.2,
+$TSMES,27/11/13,13:22:43.729,BLCAR, 0,R0482,1,002,EUTRGUR,0,VAT,0036.9,
+$TSMES,27/11/13,13:23:05.231,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0040.3,
+$TSMES,27/11/13,13:23:34.911,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0040.9,
+$TSMES,27/11/13,13:24:11.619,BLCAR, 0,R0482,1,002,MELAAEG,0,VAT,0038.0,
+$TSMES,27/11/13,13:24:31.678,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.6,
+$TSMES,27/11/13,13:25:51.665,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0041.5,
+$TSMES,27/11/13,13:26:40.759,BLCAR, 0,R0482,1,002,EUTRGUR,0,VAT,0034.1,
+$TSMES,27/11/13,13:27:08.325,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0040.0,
+$TSMES,27/11/13,13:27:38.129,BLCAR, 0,R0482,1,002,SCYLCAN,0,VAT,0036.8,
+$TSMES,27/11/13,13:30:07.410,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0040.1,
+$TSMES,27/11/13,13:31:10.336,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0008.4,
+$TSMES,27/11/13,13:33:25.697,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0042.7,
+$TSMES,27/11/13,13:35:13.921,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0028.1,
+$TSMES,27/11/13,13:35:34.139,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0040.6,
+$TSMES,27/11/13,13:36:54.752,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0041.0,
+$TSMES,27/11/13,13:37:51.527,BLCAR, 0,R0482,1,002,MELAAEG,0,VAT,0039.3,
+$TSMES,27/11/13,13:38:19.527,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.1,
+$TSMES,27/11/13,13:39:05.751,BLCAR, 0,R0482,1,002,LOPHPIS,0,VAT,0024.2,
+$TSMES,27/11/13,13:39:33.528,BLCAR, 0,R0482,1,002,SCYLCAN,0,VAT,0024.4,
+$TSMES,27/11/13,13:39:55.322,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0037.2,
+$TSMES,27/11/13,13:40:29.179,BLCAR, 0,R0482,1,001,MERLMCC,0,VAT,0004.7,
+$TSMES,27/11/13,13:40:48.783,BLCAR, 0,R0482,1,001,SQUAACA,0,VAT,0001.8,
+$TSMES,27/11/13,13:41:11.596,BLCAR, 0,R0482,1,002,EUTRGUR,0,VAT,0036.8,
+$TSMES,27/11/13,13:41:43.833,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0038.3,
+$TSMES,27/11/13,13:42:28.895,BLCAR, 0,R0482,1,001,MOLVMOL,0,VAT,0000.7,
+$TSMES,27/11/13,13:42:57.179,BLCAR, 0,R0482,1,001,SCOMSCO,0,VAT,0000.4,
+$TSMES,27/11/13,13:43:24.662,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0028.9,
+$TSMES,27/11/13,13:44:00.332,BLCAR, 0,R0482,1,001,ARGESPH,0,VAT,0001.4,
+$TSMES,27/11/13,13:44:33.512,BLCAR, 0,R0482,1,001,GLYPCYN,0,VAT,0000.3,
+$TSMES,27/11/13,13:45:01.228,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0044.2,
+$TSMES,27/11/13,13:45:44.635,BLCAR, 0,R0482,1,001,NEPHNOR,0,VAT,0000.7,
+$TSMES,27/11/13,13:46:34.572,BLCAR, 0,R0482,1,001,MICRPOU,0,VAT,0001.5,
+$TSMES,27/11/13,13:46:58.845,BLCAR, 0,R0482,1,001,HIPPPLA,0,VAT,0006.0,
+$TSMES,27/11/13,13:47:30.185,BLCAR, 0,R0482,1,002,TRISESM,0,VAT,0027.9,
+$TSMES,27/11/13,13:48:06.934,BLCAR, 0,R0482,1,001,TRISMIN,0,VAT,0008.4,
+$TSMES,27/11/13,13:49:00.114,BLCAR, 0,R0482,1,001,ASPICUC,0,VAT,0000.3,
+$TSMES,27/11/13,13:49:22.326,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0034.3,
+$TSMES,27/11/13,13:50:00.587,BLCAR, 0,R0482,1,001,MICRKIT,0,VAT,0002.0,
+$TSMES,27/11/13,13:50:54.059,BLCAR, 0,R0482,1,001,LIMALIM,0,VAT,0000.8,
+$TSMES,27/11/13,13:51:57.928,BLCAR, 0,R0482,1,001,CALLLYR,0,VAT,0000.7,
+$TSMES,27/11/13,13:53:03.922,BLCAR, 0,R0482,1,001,LEPIWHI,0,VAT,0005.3,
+$TSMES,27/11/13,13:53:27.565,BLCAR, 0,R0482,1,001,CALLMAC,0,VAT,0000.2,
+$TSMES,27/11/13,13:53:57.947,BLCAR, 0,R0482,1,001,PLEUPLA,0,VAT,0000.8,
+$TSMES,27/11/13,13:54:15.343,BLCAR, 0,R0482,1,001,TODAEBL,0,VAT,0000.2,
+$TSMES,27/11/13,13:54:35.664,BLCAR, 0,R0482,1,001,ELEDCIR,0,VAT,0000.3,
+$TSMES,27/11/13,13:55:04.135,BLCAR, 0,R0482,1,001,TRACTRU,0,VAT,0000.7,
$TSMES,27/11/13,13:55:28.772,BLCAR, 0,R0482,1,001,LOLI-FOR,0,VAT,0001.1,
-$TSMES,27/11/13,13:56:07.647,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0039.5,
-$TSMES,27/11/13,13:56:47.621,BLCAR, 0,R0482,1,001,SEPI-OLZ,0,VAT,0000.1,
-$TSMES,27/11/13,13:58:31.048,BLCAR, 0,R0482,1,001,HIPP-PLA,0,VAT,0000.0,
-$TSMES,27/11/13,15:04:17.116,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0037.6,
-$TSMES,27/11/13,15:05:36.658,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.3,
-$TSMES,27/11/13,15:07:24.923,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.3,
-$TSMES,27/11/13,15:08:42.057,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.9,
-$TSMES,27/11/13,15:09:01.674,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.5,
-$TSMES,27/11/13,15:10:13.129,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.1,
-$TSMES,27/11/13,15:10:36.121,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0040.2,
-$TSMES,27/11/13,15:11:00.595,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0036.5,
-$TSMES,27/11/13,15:11:53.701,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.9,
-$TSMES,27/11/13,15:14:24.769,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.1,
-$TSMES,27/11/13,15:16:18.478,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0041.0,
-$TSMES,27/11/13,15:16:38.981,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.6,
-$TSMES,27/11/13,15:17:36.780,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0037.6,
-$TSMES,27/11/13,15:17:59.835,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0040.4,
-$TSMES,27/11/13,15:19:19.326,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0037.7,
-$TSMES,27/11/13,15:19:51.956,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.5,
-$TSMES,27/11/13,15:21:07.014,BLCAR, 0,R0483,1,002,TRIS-ESM,0,VAT,0038.8,
-$TSMES,27/11/13,15:21:35.753,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0041.0,
-$TSMES,27/11/13,15:21:57.564,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0037.9,
-$TSMES,27/11/13,15:23:13.595,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0040.8,
-$TSMES,27/11/13,15:23:44.203,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.3,
-$TSMES,27/11/13,15:25:01.382,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0038.5,
-$TSMES,27/11/13,15:25:33.850,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.7,
-$TSMES,27/11/13,15:26:40.348,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.3,
-$TSMES,27/11/13,15:27:25.003,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0041.2,
-$TSMES,27/11/13,15:27:52.244,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0038.6,
-$TSMES,27/11/13,15:29:15.679,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.0,
-$TSMES,27/11/13,15:29:45.429,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0041.7,
-$TSMES,27/11/13,15:31:04.254,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.1,
-$TSMES,27/11/13,15:32:48.975,BLCAR, 0,R0483,1,002,TRIS-ESM,0,VAT,0036.8,
-$TSMES,27/11/13,15:33:13.585,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.6,
-$TSMES,27/11/13,15:33:38.474,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0040.9,
-$TSMES,27/11/13,15:34:25.118,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0036.7,
-$TSMES,27/11/13,15:35:39.285,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.7,
-$TSMES,27/11/13,15:36:06.481,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.3,
-$TSMES,27/11/13,15:36:54.494,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0040.6,
-$TSMES,27/11/13,15:38:37.423,BLCAR, 0,R0483,1,002,MELA-AEG,G,VAT,0039.6,
-$TSMES,27/11/13,15:39:06.734,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.4,
-$TSMES,27/11/13,15:39:30.356,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.2,
-$TSMES,27/11/13,15:42:01.949,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.5,
-$TSMES,27/11/13,15:42:32.622,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0040.3,
-$TSMES,27/11/13,15:43:53.560,BLCAR, 0,R0483,1,002,TRIS-ESM,0,VAT,0034.4,
-$TSMES,27/11/13,15:44:53.834,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.7,
-$TSMES,27/11/13,15:45:20.674,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.5,
-$TSMES,27/11/13,15:45:42.151,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.8,
-$TSMES,27/11/13,15:46:36.631,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0038.5,
-$TSMES,27/11/13,15:47:46.081,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0041.1,
-$TSMES,27/11/13,15:48:09.796,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0036.9,
-$TSMES,27/11/13,15:49:07.011,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.1,
-$TSMES,27/11/13,15:50:20.735,BLCAR, 0,R0483,1,001,EUTR-GUR,0,VAT,0009.3,
-$TSMES,27/11/13,15:50:46.736,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0037.4,
-$TSMES,27/11/13,15:51:54.878,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0041.3,
-$TSMES,27/11/13,15:52:30.751,BLCAR, 0,R0483,1,002,TRIS-ESM,0,VAT,0035.9,
-$TSMES,27/11/13,15:53:51.579,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.5,
-$TSMES,27/11/13,15:54:27.228,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.8,
-$TSMES,27/11/13,15:55:52.975,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0041.6,
-$TSMES,27/11/13,15:56:16.404,BLCAR, 0,R0483,1,001,EUTR-GUR,0,VAT,0008.4,
-$TSMES,27/11/13,15:57:44.638,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.2,
-$TSMES,27/11/13,15:58:03.736,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.4,
-$TSMES,27/11/13,15:59:20.147,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.1,
-$TSMES,27/11/13,15:59:42.581,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0038.5,
-$TSMES,27/11/13,16:00:05.526,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0038.5,
-$TSMES,27/11/13,16:01:05.295,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.2,
-$TSMES,27/11/13,16:01:38.199,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.2,
-$TSMES,27/11/13,16:02:43.037,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.8,
-$TSMES,27/11/13,16:03:48.080,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.5,
-$TSMES,27/11/13,16:04:19.938,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.8,
-$TSMES,27/11/13,16:04:44.532,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0039.0,
-$TSMES,27/11/13,16:05:05.076,BLCAR, 0,R0483,1,002,TRIS-ESM,0,VAT,0041.1,
-$TSMES,27/11/13,16:05:28.231,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.5,
-$TSMES,27/11/13,16:05:46.924,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.7,
-$TSMES,27/11/13,16:06:11.887,BLCAR, 0,R0483,1,002,MELA-AEG,G,VAT,0037.8,
-$TSMES,27/11/13,16:06:29.181,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0038.5,
-$TSMES,27/11/13,16:06:52.290,BLCAR, 0,R0483,1,002,SCYL-CAN,0,VAT,0032.9,
-$TSMES,27/11/13,16:07:14.568,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0039.6,
-$TSMES,27/11/13,16:07:31.751,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0039.8,
-$TSMES,27/11/13,16:08:04.245,BLCAR, 0,R0483,1,002,LOPH-PIS,0,VAT,0030.9,
-$TSMES,27/11/13,16:08:33.424,BLCAR, 0,R0483,1,002,CONG-CON,0,VAT,0023.2,
-$TSMES,27/11/13,16:08:57.169,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.8,
-$TSMES,27/11/13,16:09:30.997,BLCAR, 0,R0483,1,002,LEPI-WHI,0,VAT,0024.9,
-$TSMES,27/11/13,16:10:05.148,BLCAR, 0,R0483,1,002,SCOM-SCO,0,VAT,0020.7,
-$TSMES,27/11/13,16:10:39.324,BLCAR, 0,R0483,1,001,MICR-KIT,0,VAT,0000.8,
-$TSMES,27/11/13,16:11:07.157,BLCAR, 0,R0483,1,002,MERL-MCC,0,VAT,0031.9,
-$TSMES,27/11/13,16:11:35.229,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.3,
-$TSMES,27/11/13,16:12:26.292,BLCAR, 0,R0483,1,002,TRIS-ESM,0,VAT,0031.0,
-$TSMES,27/11/13,16:13:21.182,BLCAR, 0,R0483,1,001,GLYP-CYN,0,VAT,0001.0,
-$TSMES,27/11/13,16:13:47.758,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0027.2,
-$TSMES,27/11/13,16:14:10.075,BLCAR, 0,R0483,1,002,LOLI-FOR,0,VAT,0022.6,
-$TSMES,27/11/13,16:14:35.253,BLCAR, 0,R0483,1,001,EUTR-GUR,0,VAT,0005.6,
-$TSMES,27/11/13,16:15:22.151,BLCAR, 0,R0483,1,001,MICR-POU,0,VAT,0001.1,
-$TSMES,27/11/13,16:16:14.956,BLCAR, 0,R0483,1,001,HIPP-PLA,0,VAT,0000.2,
-$TSMES,27/11/13,16:16:52.305,BLCAR, 0,R0483,1,001,TRAC-TRU,0,VAT,0000.4,
-$TSMES,27/11/13,16:17:13.456,BLCAR, 0,R0483,1,001,SPRA-SPR,0,VAT,0000.6,
-$TSMES,27/11/13,16:17:37.593,BLCAR, 0,R0483,1,001,ARGE-SPH,0,VAT,0000.8,
-$TSMES,27/11/13,16:18:08.358,BLCAR, 0,R0483,1,001,SEPI-OLZ,0,VAT,0000.1,
-$TSMES,27/11/13,16:18:44.478,BLCAR, 0,R0483,1,001,LOLI-FOR,P,VAT,0000.3,
-$TSMES,27/11/13,16:19:19.836,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.1,
-$TSMES,27/11/13,16:19:44.016,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0043.0,
-$TSMES,27/11/13,16:20:12.751,BLCAR, 0,R0483,1,001,TODA-EBL,0,VAT,0000.6,
-$TSMES,27/11/13,16:21:02.469,BLCAR, 0,R0483,1,001,CALL-LYR,0,VAT,0000.2,
-$TSMES,27/11/13,16:21:25.949,BLCAR, 0,R0483,1,001,CALL-MAC,0,VAT,0000.2,
-$TSMES,27/11/13,16:21:55.232,BLCAR, 0,R0483,1,002,MERL-MNG,P,VAT,0028.0,
-$TSMES,27/11/13,16:22:21.965,BLCAR, 0,R0483,1,001,ELED-CIR,0,VAT,0001.4,
-$TSMES,27/11/13,16:22:51.628,BLCAR, 0,R0483,1,001,TRIS-MIN,0,VAT,0003.6,
-$TSMES,27/11/13,18:49:59.855,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0019.8,
-$TSMES,27/11/13,18:50:19.448,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0016.8,
-$TSMES,27/11/13,18:55:48.008,BLCAR, 0,R0484,1,001,EUTR-GUR,0,VAT,0007.6,
-$TSMES,27/11/13,18:56:34.603,BLCAR, 0,R0484,1,002,EUTR-GUR,0,VAT,0011.7,
-$TSMES,27/11/13,18:58:57.070,BLCAR, 0,R0484,1,001,EUTR-GUR,0,VAT,0007.6,
-$TSMES,27/11/13,18:59:34.603,BLCAR, 0,R0484,1,002,MELA-NGE,0,VAT,0016.4,
-$TSMES,27/11/13,19:00:53.047,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0020.9,
-$TSMES,27/11/13,19:01:17.629,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0020.0,
-$TSMES,27/11/13,19:02:01.189,BLCAR, 0,R0484,1,002,EUTR-GUR,0,VAT,0008.5,
-$TSMES,27/11/13,19:02:23.329,BLCAR, 0,R0484,1,002,MELA-NGE,0,VAT,0016.1,
-$TSMES,27/11/13,19:04:11.551,BLCAR, 0,R0484,1,002,MERL-MNG,p,VAT,0020.9,
-$TSMES,27/11/13,19:04:54.312,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0017.9,
-$TSMES,27/11/13,19:05:31.029,BLCAR, 0,R0484,1,002,MELA-NGE,0,VAT,0016.0,
-$TSMES,27/11/13,19:06:32.679,BLCAR, 0,R0484,1,002,EUTR-GUR,0,VAT,0011.3,
-$TSMES,27/11/13,19:06:59.485,BLCAR, 0,R0484,1,001,EUTR-GUR,0,VAT,0007.3,
-$TSMES,27/11/13,19:10:50.599,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0019.0,
-$TSMES,27/11/13,19:12:32.300,BLCAR, 0,R0484,1,001,EUTR-GUR,0,VAT,0008.4,
-$TSMES,27/11/13,19:13:11.765,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0020.6,
-$TSMES,27/11/13,19:13:42.494,BLCAR, 0,R0484,1,002,MERL-MNG,p,VAT,0018.7,
-$TSMES,27/11/13,19:14:34.508,BLCAR, 0,R0484,1,002,MELA-NGE,0,VAT,0015.0,
-$TSMES,27/11/13,19:18:06.846,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0011.6,
-$TSMES,27/11/13,19:19:06.548,BLCAR, 0,R0484,1,001,EUTR-GUR,0,VAT,0008.6,
-$TSMES,27/11/13,19:19:29.730,BLCAR, 0,R0484,1,002,EUTR-GUR,0,VAT,0012.4,
-$TSMES,27/11/13,19:19:53.075,BLCAR, 0,R0484,1,002,MELA-AEG,0,VAT,0005.1,
-$TSMES,27/11/13,19:20:15.873,BLCAR, 0,R0484,1,002,EUTR-GUR,0,VAT,0013.7,
-$TSMES,27/11/13,19:20:42.508,BLCAR, 0,R0484,1,001,HIPP-PLA,0,VAT,0000.5,
-$TSMES,27/11/13,19:21:14.304,BLCAR, 0,R0484,1,001,SCYL-CAN,0,VAT,0000.9,
-$TSMES,27/11/13,19:22:30.586,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0021.2,
-$TSMES,27/11/13,19:22:50.150,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0009.2,
-$TSMES,27/11/13,19:23:12.550,BLCAR, 0,R0484,1,002,CLUP-HAR,0,VAT,0001.6,
-$TSMES,27/11/13,19:23:38.609,BLCAR, 0,R0484,1,002,MELA-NGE,0,VAT,0005.1,
-$TSMES,27/11/13,19:24:07.337,BLCAR, 0,R0484,1,001,MERL-MCC,0,VAT,0000.5,
-$TSMES,27/11/13,19:24:36.607,BLCAR, 0,R0484,1,001,HIPP-PLA,0,VAT,0001.7,
-$TSMES,27/11/13,19:25:36.793,BLCAR, 0,R0484,1,001,MICR-POU,0,VAT,0000.7,
-$TSMES,27/11/13,19:26:04.841,BLCAR, 0,R0484,1,002,MERL-MNG,p,VAT,0005.8,
-$TSMES,27/11/13,19:26:26.140,BLCAR, 0,R0484,1,001,SCOM-SCO,0,VAT,0000.0,
-$TSMES,27/11/13,19:26:47.870,BLCAR, 0,R0484,1,001,GLYP-CYN,0,VAT,0000.2,
-$TSMES,27/11/13,19:27:09.223,BLCAR, 0,R0484,1,001,TRIS-MIN,0,VAT,0000.6,
-$TSMES,27/11/13,19:27:29.741,BLCAR, 0,R0484,1,001,ARGE-SPH,0,VAT,0000.2,
-$TSMES,27/11/13,19:27:54.743,BLCAR, 0,R0484,1,001,TRAC-TRU,0,VAT,0000.2,
-$TSMES,27/11/13,19:28:15.821,BLCAR, 0,R0484,1,002,NEPH-NOR,0,VAT,0004.3,
-$TSMES,27/11/13,19:28:40.581,BLCAR, 0,R0484,1,001,SEPI-OLZ,0,VAT,0000.1,
-$TSMES,27/11/13,19:29:00.043,BLCAR, 0,R0484,1,001,LOLI-FOR,0,VAT,0000.1,
-$TSMES,27/11/13,19:29:34.076,BLCAR, 0,R0484,1,001,ROSS-MAC,0,VAT,0000.1,
-$TSMES,27/11/13,19:30:00.792,BLCAR, 0,R0484,1,001,ELED-CIR,0,VAT,0000.6,
-$TSMES,27/11/13,19:30:27.478,BLCAR, 0,R0484,1,001,TODA-EBL,0,VAT,0000.1,
+$TSMES,27/11/13,13:56:07.647,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0039.5,
+$TSMES,27/11/13,13:56:47.621,BLCAR, 0,R0482,1,001,SEPIOLZ,0,VAT,0000.1,
+$TSMES,27/11/13,13:58:31.048,BLCAR, 0,R0482,1,001,HIPPPLA,0,VAT,0000.0,
+$TSMES,27/11/13,15:04:17.116,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0037.6,
+$TSMES,27/11/13,15:05:36.658,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.3,
+$TSMES,27/11/13,15:07:24.923,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.3,
+$TSMES,27/11/13,15:08:42.057,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.9,
+$TSMES,27/11/13,15:09:01.674,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.5,
+$TSMES,27/11/13,15:10:13.129,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.1,
+$TSMES,27/11/13,15:10:36.121,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0040.2,
+$TSMES,27/11/13,15:11:00.595,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0036.5,
+$TSMES,27/11/13,15:11:53.701,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.9,
+$TSMES,27/11/13,15:14:24.769,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.1,
+$TSMES,27/11/13,15:16:18.478,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0041.0,
+$TSMES,27/11/13,15:16:38.981,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.6,
+$TSMES,27/11/13,15:17:36.780,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0037.6,
+$TSMES,27/11/13,15:17:59.835,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0040.4,
+$TSMES,27/11/13,15:19:19.326,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0037.7,
+$TSMES,27/11/13,15:19:51.956,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.5,
+$TSMES,27/11/13,15:21:07.014,BLCAR, 0,R0483,1,002,TRISESM,0,VAT,0038.8,
+$TSMES,27/11/13,15:21:35.753,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0041.0,
+$TSMES,27/11/13,15:21:57.564,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0037.9,
+$TSMES,27/11/13,15:23:13.595,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0040.8,
+$TSMES,27/11/13,15:23:44.203,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.3,
+$TSMES,27/11/13,15:25:01.382,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0038.5,
+$TSMES,27/11/13,15:25:33.850,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.7,
+$TSMES,27/11/13,15:26:40.348,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.3,
+$TSMES,27/11/13,15:27:25.003,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0041.2,
+$TSMES,27/11/13,15:27:52.244,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0038.6,
+$TSMES,27/11/13,15:29:15.679,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.0,
+$TSMES,27/11/13,15:29:45.429,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0041.7,
+$TSMES,27/11/13,15:31:04.254,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.1,
+$TSMES,27/11/13,15:32:48.975,BLCAR, 0,R0483,1,002,TRISESM,0,VAT,0036.8,
+$TSMES,27/11/13,15:33:13.585,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.6,
+$TSMES,27/11/13,15:33:38.474,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0040.9,
+$TSMES,27/11/13,15:34:25.118,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0036.7,
+$TSMES,27/11/13,15:35:39.285,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.7,
+$TSMES,27/11/13,15:36:06.481,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.3,
+$TSMES,27/11/13,15:36:54.494,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0040.6,
+$TSMES,27/11/13,15:38:37.423,BLCAR, 0,R0483,1,002,MELAAEG,G,VAT,0039.6,
+$TSMES,27/11/13,15:39:06.734,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.4,
+$TSMES,27/11/13,15:39:30.356,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.2,
+$TSMES,27/11/13,15:42:01.949,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.5,
+$TSMES,27/11/13,15:42:32.622,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0040.3,
+$TSMES,27/11/13,15:43:53.560,BLCAR, 0,R0483,1,002,TRISESM,0,VAT,0034.4,
+$TSMES,27/11/13,15:44:53.834,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.7,
+$TSMES,27/11/13,15:45:20.674,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.5,
+$TSMES,27/11/13,15:45:42.151,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.8,
+$TSMES,27/11/13,15:46:36.631,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0038.5,
+$TSMES,27/11/13,15:47:46.081,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0041.1,
+$TSMES,27/11/13,15:48:09.796,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0036.9,
+$TSMES,27/11/13,15:49:07.011,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.1,
+$TSMES,27/11/13,15:50:20.735,BLCAR, 0,R0483,1,001,EUTRGUR,0,VAT,0009.3,
+$TSMES,27/11/13,15:50:46.736,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0037.4,
+$TSMES,27/11/13,15:51:54.878,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0041.3,
+$TSMES,27/11/13,15:52:30.751,BLCAR, 0,R0483,1,002,TRISESM,0,VAT,0035.9,
+$TSMES,27/11/13,15:53:51.579,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.5,
+$TSMES,27/11/13,15:54:27.228,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.8,
+$TSMES,27/11/13,15:55:52.975,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0041.6,
+$TSMES,27/11/13,15:56:16.404,BLCAR, 0,R0483,1,001,EUTRGUR,0,VAT,0008.4,
+$TSMES,27/11/13,15:57:44.638,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.2,
+$TSMES,27/11/13,15:58:03.736,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.4,
+$TSMES,27/11/13,15:59:20.147,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.1,
+$TSMES,27/11/13,15:59:42.581,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0038.5,
+$TSMES,27/11/13,16:00:05.526,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0038.5,
+$TSMES,27/11/13,16:01:05.295,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.2,
+$TSMES,27/11/13,16:01:38.199,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.2,
+$TSMES,27/11/13,16:02:43.037,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.8,
+$TSMES,27/11/13,16:03:48.080,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.5,
+$TSMES,27/11/13,16:04:19.938,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.8,
+$TSMES,27/11/13,16:04:44.532,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0039.0,
+$TSMES,27/11/13,16:05:05.076,BLCAR, 0,R0483,1,002,TRISESM,0,VAT,0041.1,
+$TSMES,27/11/13,16:05:28.231,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.5,
+$TSMES,27/11/13,16:05:46.924,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.7,
+$TSMES,27/11/13,16:06:11.887,BLCAR, 0,R0483,1,002,MELAAEG,G,VAT,0037.8,
+$TSMES,27/11/13,16:06:29.181,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0038.5,
+$TSMES,27/11/13,16:06:52.290,BLCAR, 0,R0483,1,002,SCYLCAN,0,VAT,0032.9,
+$TSMES,27/11/13,16:07:14.568,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0039.6,
+$TSMES,27/11/13,16:07:31.751,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0039.8,
+$TSMES,27/11/13,16:08:04.245,BLCAR, 0,R0483,1,002,LOPHPIS,0,VAT,0030.9,
+$TSMES,27/11/13,16:08:33.424,BLCAR, 0,R0483,1,002,CONGCON,0,VAT,0023.2,
+$TSMES,27/11/13,16:08:57.169,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.8,
+$TSMES,27/11/13,16:09:30.997,BLCAR, 0,R0483,1,002,LEPIWHI,0,VAT,0024.9,
+$TSMES,27/11/13,16:10:05.148,BLCAR, 0,R0483,1,002,SCOMSCO,0,VAT,0020.7,
+$TSMES,27/11/13,16:10:39.324,BLCAR, 0,R0483,1,001,MICRKIT,0,VAT,0000.8,
+$TSMES,27/11/13,16:11:07.157,BLCAR, 0,R0483,1,002,MERLMCC,0,VAT,0031.9,
+$TSMES,27/11/13,16:11:35.229,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.3,
+$TSMES,27/11/13,16:12:26.292,BLCAR, 0,R0483,1,002,TRISESM,0,VAT,0031.0,
+$TSMES,27/11/13,16:13:21.182,BLCAR, 0,R0483,1,001,GLYPCYN,0,VAT,0001.0,
+$TSMES,27/11/13,16:13:47.758,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0027.2,
+$TSMES,27/11/13,16:14:10.075,BLCAR, 0,R0483,1,002,LOLIFOR,0,VAT,0022.6,
+$TSMES,27/11/13,16:14:35.253,BLCAR, 0,R0483,1,001,EUTRGUR,0,VAT,0005.6,
+$TSMES,27/11/13,16:15:22.151,BLCAR, 0,R0483,1,001,MICRPOU,0,VAT,0001.1,
+$TSMES,27/11/13,16:16:14.956,BLCAR, 0,R0483,1,001,HIPPPLA,0,VAT,0000.2,
+$TSMES,27/11/13,16:16:52.305,BLCAR, 0,R0483,1,001,TRACTRU,0,VAT,0000.4,
+$TSMES,27/11/13,16:17:13.456,BLCAR, 0,R0483,1,001,SPRASPR,0,VAT,0000.6,
+$TSMES,27/11/13,16:17:37.593,BLCAR, 0,R0483,1,001,ARGESPH,0,VAT,0000.8,
+$TSMES,27/11/13,16:18:08.358,BLCAR, 0,R0483,1,001,SEPIOLZ,0,VAT,0000.1,
+$TSMES,27/11/13,16:18:44.478,BLCAR, 0,R0483,1,001,LOLIFOR,P,VAT,0000.3,
+$TSMES,27/11/13,16:19:19.836,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.1,
+$TSMES,27/11/13,16:19:44.016,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0043.0,
+$TSMES,27/11/13,16:20:12.751,BLCAR, 0,R0483,1,001,TODAEBL,0,VAT,0000.6,
+$TSMES,27/11/13,16:21:02.469,BLCAR, 0,R0483,1,001,CALLLYR,0,VAT,0000.2,
+$TSMES,27/11/13,16:21:25.949,BLCAR, 0,R0483,1,001,CALLMAC,0,VAT,0000.2,
+$TSMES,27/11/13,16:21:55.232,BLCAR, 0,R0483,1,002,MERLMNG,P,VAT,0028.0,
+$TSMES,27/11/13,16:22:21.965,BLCAR, 0,R0483,1,001,ELEDCIR,0,VAT,0001.4,
+$TSMES,27/11/13,16:22:51.628,BLCAR, 0,R0483,1,001,TRISMIN,0,VAT,0003.6,
+$TSMES,27/11/13,18:49:59.855,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0019.8,
+$TSMES,27/11/13,18:50:19.448,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0016.8,
+$TSMES,27/11/13,18:55:48.008,BLCAR, 0,R0484,1,001,EUTRGUR,0,VAT,0007.6,
+$TSMES,27/11/13,18:56:34.603,BLCAR, 0,R0484,1,002,EUTRGUR,0,VAT,0011.7,
+$TSMES,27/11/13,18:58:57.070,BLCAR, 0,R0484,1,001,EUTRGUR,0,VAT,0007.6,
+$TSMES,27/11/13,18:59:34.603,BLCAR, 0,R0484,1,002,MELANGE,0,VAT,0016.4,
+$TSMES,27/11/13,19:00:53.047,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0020.9,
+$TSMES,27/11/13,19:01:17.629,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0020.0,
+$TSMES,27/11/13,19:02:01.189,BLCAR, 0,R0484,1,002,EUTRGUR,0,VAT,0008.5,
+$TSMES,27/11/13,19:02:23.329,BLCAR, 0,R0484,1,002,MELANGE,0,VAT,0016.1,
+$TSMES,27/11/13,19:04:11.551,BLCAR, 0,R0484,1,002,MERLMNG,p,VAT,0020.9,
+$TSMES,27/11/13,19:04:54.312,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0017.9,
+$TSMES,27/11/13,19:05:31.029,BLCAR, 0,R0484,1,002,MELANGE,0,VAT,0016.0,
+$TSMES,27/11/13,19:06:32.679,BLCAR, 0,R0484,1,002,EUTRGUR,0,VAT,0011.3,
+$TSMES,27/11/13,19:06:59.485,BLCAR, 0,R0484,1,001,EUTRGUR,0,VAT,0007.3,
+$TSMES,27/11/13,19:10:50.599,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0019.0,
+$TSMES,27/11/13,19:12:32.300,BLCAR, 0,R0484,1,001,EUTRGUR,0,VAT,0008.4,
+$TSMES,27/11/13,19:13:11.765,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0020.6,
+$TSMES,27/11/13,19:13:42.494,BLCAR, 0,R0484,1,002,MERLMNG,p,VAT,0018.7,
+$TSMES,27/11/13,19:14:34.508,BLCAR, 0,R0484,1,002,MELANGE,0,VAT,0015.0,
+$TSMES,27/11/13,19:18:06.846,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0011.6,
+$TSMES,27/11/13,19:19:06.548,BLCAR, 0,R0484,1,001,EUTRGUR,0,VAT,0008.6,
+$TSMES,27/11/13,19:19:29.730,BLCAR, 0,R0484,1,002,EUTRGUR,0,VAT,0012.4,
+$TSMES,27/11/13,19:19:53.075,BLCAR, 0,R0484,1,002,MELAAEG,0,VAT,0005.1,
+$TSMES,27/11/13,19:20:15.873,BLCAR, 0,R0484,1,002,EUTRGUR,0,VAT,0013.7,
+$TSMES,27/11/13,19:20:42.508,BLCAR, 0,R0484,1,001,HIPPPLA,0,VAT,0000.5,
+$TSMES,27/11/13,19:21:14.304,BLCAR, 0,R0484,1,001,SCYLCAN,0,VAT,0000.9,
+$TSMES,27/11/13,19:22:30.586,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0021.2,
+$TSMES,27/11/13,19:22:50.150,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0009.2,
+$TSMES,27/11/13,19:23:12.550,BLCAR, 0,R0484,1,002,CLUPHAR,0,VAT,0001.6,
+$TSMES,27/11/13,19:23:38.609,BLCAR, 0,R0484,1,002,MELANGE,0,VAT,0005.1,
+$TSMES,27/11/13,19:24:07.337,BLCAR, 0,R0484,1,001,MERLMCC,0,VAT,0000.5,
+$TSMES,27/11/13,19:24:36.607,BLCAR, 0,R0484,1,001,HIPPPLA,0,VAT,0001.7,
+$TSMES,27/11/13,19:25:36.793,BLCAR, 0,R0484,1,001,MICRPOU,0,VAT,0000.7,
+$TSMES,27/11/13,19:26:04.841,BLCAR, 0,R0484,1,002,MERLMNG,p,VAT,0005.8,
+$TSMES,27/11/13,19:26:26.140,BLCAR, 0,R0484,1,001,SCOMSCO,0,VAT,0000.0,
+$TSMES,27/11/13,19:26:47.870,BLCAR, 0,R0484,1,001,GLYPCYN,0,VAT,0000.2,
+$TSMES,27/11/13,19:27:09.223,BLCAR, 0,R0484,1,001,TRISMIN,0,VAT,0000.6,
+$TSMES,27/11/13,19:27:29.741,BLCAR, 0,R0484,1,001,ARGESPH,0,VAT,0000.2,
+$TSMES,27/11/13,19:27:54.743,BLCAR, 0,R0484,1,001,TRACTRU,0,VAT,0000.2,
+$TSMES,27/11/13,19:28:15.821,BLCAR, 0,R0484,1,002,NEPHNOR,0,VAT,0004.3,
+$TSMES,27/11/13,19:28:40.581,BLCAR, 0,R0484,1,001,SEPIOLZ,0,VAT,0000.1,
+$TSMES,27/11/13,19:29:00.043,BLCAR, 0,R0484,1,001,LOLIFOR,0,VAT,0000.1,
+$TSMES,27/11/13,19:29:34.076,BLCAR, 0,R0484,1,001,ROSSMAC,0,VAT,0000.1,
+$TSMES,27/11/13,19:30:00.792,BLCAR, 0,R0484,1,001,ELEDCIR,0,VAT,0000.6,
+$TSMES,27/11/13,19:30:27.478,BLCAR, 0,R0484,1,001,TODAEBL,0,VAT,0000.1,
Copied: trunk/tutti-service/src/test/resources/pupitri/ano-5032.car (from rev 1747, branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.car)
===================================================================
--- trunk/tutti-service/src/test/resources/pupitri/ano-5032.car (rev 0)
+++ trunk/tutti-service/src/test/resources/pupitri/ano-5032.car 2014-05-05 15:00:37 UTC (rev 1753)
@@ -0,0 +1,8 @@
+$TSMES,27/11/13,09:12:04.612,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0015.6,
+$TSMES,27/11/13,09:13:21.994,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0018.9,
+$TSMES,27/11/13,09:15:12.588,BLCAR, 0,A,1,002,ACAN-PEL,0,VAT,0021.4,
+$TSMES,27/11/13,09:15:58.396,BLCAR, 0,A,1,002,ACANPEL,0,VAT,0017.9,
+$TSMES,27/11/13,09:17:11.714,BLCAR, 0,A,1,002,ACANPAL,0,VAT,0017.2,
+$TSMES,27/11/13,09:17:40.272,BLCAR, 0,A,1,002,ACAN-PAL,0,VAT,0021.1,
+$TSMES,27/11/13,09:18:48.818,BLCAR, 0,A,1,002,ASRNATL,0,VAT,0018.0,
+$TSMES,27/11/13,09:19:33.335,BLCAR, 0,A,1,002,ASRN-ATL,0,VAT,0016.6,
\ No newline at end of file
Copied: trunk/tutti-service/src/test/resources/pupitri/ano-5032.tnk (from rev 1747, branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.tnk)
===================================================================
--- trunk/tutti-service/src/test/resources/pupitri/ano-5032.tnk (rev 0)
+++ trunk/tutti-service/src/test/resources/pupitri/ano-5032.tnk 2014-05-05 15:00:37 UTC (rev 1753)
@@ -0,0 +1,149 @@
+$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,
+$TSMES,27/11/13,12:02:28.762,BLTNK, 0,R0482,1,VAT,0043.5,
+$TSMES,27/11/13,12:04:44.125,BLTNK, 0,R0482,1,VAT,0046.8,
+$TSMES,27/11/13,12:06:40.650,BLTNK, 0,R0482,1,VAT,0043.0,
+$TSMES,27/11/13,12:07:46.288,BLTNK, 0,R0482,1,VAT,0045.0,
+$TSMES,27/11/13,12:09:09.246,BLTNK, 0,R0482,1,VAT,0043.3,
+$TSMES,27/11/13,12:10:12.001,BLTNK, 0,R0482,1,VAT,0042.6,
+$TSMES,27/11/13,12:11:21.956,BLTNK, 0,R0482,1,VAT,0044.0,
+$TSMES,27/11/13,12:13:43.666,BLTNK,-1,R0482,1,VAT,0045.2,
+$TSMES,27/11/13,12:15:11.401,BLTNK,-1,R0482,1,VAT,0043.5,
+$TSMES,27/11/13,12:16:59.327,BLTNK, 0,R0482,1,VAT,0045.3,
+$TSMES,27/11/13,12:23:10.921,BLTNK, 0,R0482,1,VAT,0043.8,
+$TSMES,27/11/13,12:25:31.204,BLTNK, 0,R0482,1,VAT,0046.4,
+$TSMES,27/11/13,12:26:34.685,BLTNK, 0,R0482,1,VAT,0046.1,
+$TSMES,27/11/13,12:28:25.995,BLTNK, 0,R0482,1,VAT,0046.0,
+$TSMES,27/11/13,12:32:28.875,BLTNK, 0,R0482,1,VAT,0046.0,
+$TSMES,27/11/13,12:34:31.332,BLTNK, 0,R0482,1,VAT,0050.7,
+$TSMES,27/11/13,12:37:08.304,BLTNK, 0,R0482,1,VAT,0045.2,
+$TSMES,27/11/13,12:38:45.284,BLTNK, 0,R0482,1,VAT,0043.0,
+$TSMES,27/11/13,12:40:05.862,BLTNK, 0,R0482,1,VAT,0044.6,
+$TSMES,27/11/13,12:41:48.358,BLTNK, 0,R0482,1,VAT,0046.3,
+$TSMES,27/11/13,12:43:25.952,BLTNK, 0,R0482,1,VAT,0046.3,
+$TSMES,27/11/13,12:45:08.656,BLTNK, 0,R0482,1,VAT,0048.0,
+$TSMES,27/11/13,12:47:16.330,BLTNK, 0,R0482,1,VAT,0045.6,
+$TSMES,27/11/13,12:50:11.853,BLTNK,-1,R0482,1,VAT,0046.4,
+$TSMES,27/11/13,12:54:11.280,BLTNK, 0,R0482,1,VAT,0044.6,
+$TSMES,27/11/13,12:56:04.995,BLTNK, 0,R0482,1,VAT,0049.2,
+$TSMES,27/11/13,12:57:07.161,BLTNK, 0,R0482,1,VAT,0040.9,
+$TSMES,27/11/13,12:58:07.564,BLTNK, 0,R0482,1,VAT,0042.8,
+$TSMES,27/11/13,12:59:10.843,BLTNK, 0,R0482,1,VAT,0041.2,
+$TSMES,27/11/13,13:09:10.060,BLTNK, 0,R0482,1,VAT,0043.0,
+$TSMES,27/11/13,13:11:01.570,BLTNK, 0,R0482,1,VAT,0046.8,
+$TSMES,27/11/13,13:12:27.276,BLTNK, 0,R0482,1,VAT,0045.8,
+$TSMES,27/11/13,13:14:58.308,BLTNK, 0,R0482,1,VAT,0043.4,
+$TSMES,27/11/13,13:17:16.558,BLTNK, 0,R0482,1,VAT,0047.4,
+$TSMES,27/11/13,13:18:53.624,BLTNK, 0,R0482,1,VAT,0044.2,
+$TSMES,27/11/13,13:21:47.998,BLTNK, 0,R0482,1,VAT,0050.2,
+$TSMES,27/11/13,13:24:51.176,BLTNK, 0,R0482,1,VAT,0047.4,
+$TSMES,27/11/13,13:27:50.882,BLTNK, 0,R0482,1,VAT,0045.6,
+$TSMES,27/11/13,13:29:07.983,BLTNK, 0,R0482,1,VAT,0044.9,
+$TSMES,27/11/13,13:32:21.819,BLTNK, 0,R0482,1,VAT,0047.2,
+$TSMES,27/11/13,13:34:12.304,BLTNK, 0,R0482,1,VAT,0046.1,
+$TSMES,27/11/13,13:35:59.627,BLTNK, 0,R0482,1,VAT,0009.7,
+$TSMES,27/11/13,15:00:25.110,BLTNK, 0,R0483,1,VAT,0044.8,
+$TSMES,27/11/13,15:02:37.403,BLTNK, 0,R0483,1,VAT,0043.0,
+$TSMES,27/11/13,15:04:24.302,BLTNK, 0,R0483,1,VAT,0045.7,
+$TSMES,27/11/13,15:06:10.284,BLTNK, 0,R0483,1,VAT,0043.5,
+$TSMES,27/11/13,15:07:39.675,BLTNK, 0,R0483,1,VAT,0046.0,
+$TSMES,27/11/13,15:09:12.136,BLTNK, 0,R0483,1,VAT,0046.8,
+$TSMES,27/11/13,15:12:51.981,BLTNK, 0,R0483,1,VAT,0044.7,
+$TSMES,27/11/13,15:14:31.819,BLTNK, 0,R0483,1,VAT,0042.9,
+$TSMES,27/11/13,15:15:30.692,BLTNK, 0,R0483,1,VAT,0044.2,
+$TSMES,27/11/13,15:16:48.616,BLTNK, 0,R0483,1,VAT,0046.5,
+$TSMES,27/11/13,15:18:09.200,BLTNK, 0,R0483,1,VAT,0044.1,
+$TSMES,27/11/13,15:19:57.739,BLTNK, 0,R0483,1,VAT,0045.3,
+$TSMES,27/11/13,15:22:06.859,BLTNK, 0,R0483,1,VAT,0042.8,
+$TSMES,27/11/13,15:23:50.486,BLTNK, 0,R0483,1,VAT,0044.3,
+$TSMES,27/11/13,15:25:40.151,BLTNK, 0,R0483,1,VAT,0042.1,
+$TSMES,27/11/13,15:27:58.998,BLTNK, 0,R0483,1,VAT,0043.2,
+$TSMES,27/11/13,15:29:58.390,BLTNK, 0,R0483,1,VAT,0045.9,
+$TSMES,27/11/13,15:31:36.691,BLTNK, 0,R0483,1,VAT,0045.8,
+$TSMES,27/11/13,15:34:30.965,BLTNK, 0,R0483,1,VAT,0041.5,
+$TSMES,27/11/13,15:37:02.307,BLTNK, 0,R0483,1,VAT,0047.2,
+$TSMES,27/11/13,15:39:44.502,BLTNK, 0,R0483,1,VAT,0047.8,
+$TSMES,27/11/13,15:42:40.825,BLTNK, 0,R0483,1,VAT,0043.4,
+$TSMES,27/11/13,15:43:59.669,BLTNK, 0,R0483,1,VAT,0041.2,
+$TSMES,27/11/13,15:45:48.106,BLTNK, 0,R0483,1,VAT,0045.1,
+$TSMES,27/11/13,15:46:57.635,BLTNK, 0,R0483,1,VAT,0044.1,
+$TSMES,27/11/13,15:48:15.557,BLTNK, 0,R0483,1,VAT,0042.8,
+$TSMES,27/11/13,15:49:27.850,BLTNK, 0,R0483,1,VAT,0043.6,
+$TSMES,27/11/13,15:50:53.655,BLTNK, 0,R0483,1,VAT,0045.9,
+$TSMES,27/11/13,15:52:37.073,BLTNK, 0,R0483,1,VAT,0045.6,
+$TSMES,27/11/13,15:54:32.985,BLTNK, 0,R0483,1,VAT,0045.9,
+$TSMES,27/11/13,15:56:22.345,BLTNK, 0,R0483,1,VAT,0045.1,
+$TSMES,27/11/13,15:58:09.594,BLTNK, 0,R0483,1,VAT,0047.0,
+$TSMES,27/11/13,16:00:11.605,BLTNK, 0,R0483,1,VAT,0049.6,
+$TSMES,27/11/13,16:01:44.993,BLTNK, 0,R0483,1,VAT,0048.7,
+$TSMES,27/11/13,16:02:59.022,BLTNK, 0,R0483,1,VAT,0002.0,
+$TSMES,27/11/13,17:07:25.365,BLTNK, 0,X0001,1,VAT,0004.9,
+$TSMES,27/11/13,17:07:55.368,BLTNK, 0,X0001,1,VAT,0008.1,
+$TSMES,27/11/13,17:08:34.277,BLTNK, 0,X0001,1,VAT,0010.7,
+$TSMES,27/11/13,17:09:20.254,BLTNK, 0,X0001,1,VAT,0010.8,
+$TSMES,27/11/13,17:10:02.032,BLTNK, 0,X0001,1,VAT,0010.1,
+$TSMES,27/11/13,17:24:37.302,BLTNK, 0,X0002,1,VAT,0007.1,
+$TSMES,27/11/13,17:30:28.420,BLTNK, 0,R0484,1,VAT,0046.9,
+$TSMES,27/11/13,17:31:39.582,BLTNK, 0,R0484,1,VNT,0048.7,
+$TSMES,27/11/13,18:25:31.485,BLTNK,-1,R0484,1,VNT,-000.1,
+$TSMES,27/11/13,18:36:52.526,BLTNK, 0,R0484,1,VNT,0050.7,
+$TSMES,27/11/13,18:40:06.918,BLTNK, 0,R0484,1,VAT,0052.3,
+$TSMES,27/11/13,18:41:09.838,BLTNK, 0,R0484,1,VNT,0042.8,
+$TSMES,27/11/13,18:42:25.816,BLTNK, 0,R0484,1,VNT,0041.2,
+$TSMES,27/11/13,18:43:31.552,BLTNK, 0,R0484,1,VNT,0044.4,
+$TSMES,27/11/13,18:44:40.157,BLTNK, 0,R0484,1,VAT,0044.9,
+$TSMES,27/11/13,18:46:01.666,BLTNK, 0,R0484,1,VNT,0055.3,
+$TSMES,27/11/13,18:46:46.412,BLTNK, 0,R0484,1,VNT,0045.8,
+$TSMES,27/11/13,18:47:39.146,BLTNK, 0,R0484,1,VNT,0045.1,
+$TSMES,27/11/13,18:48:38.741,BLTNK, 0,R0484,1,VAT,0045.6,
+$TSMES,27/11/13,18:50:46.533,BLTNK, 0,R0484,1,VNT,0044.5,
+$TSMES,27/11/13,18:51:31.485,BLTNK, 0,R0484,1,VNT,0043.6,
+$TSMES,27/11/13,18:52:15.619,BLTNK, 0,R0484,1,VNT,0045.1,
+$TSMES,27/11/13,18:53:01.588,BLTNK, 0,R0484,1,VAT,0046.7,
+$TSMES,27/11/13,18:54:15.725,BLTNK, 0,R0484,1,VNT,0045.1,
+$TSMES,27/11/13,18:55:55.559,BLTNK, 0,R0484,1,VNT,0045.7,
+$TSMES,27/11/13,18:56:41.434,BLTNK, 0,R0484,1,VNT,0047.9,
+$TSMES,27/11/13,18:59:41.649,BLTNK, 0,R0484,1,VAT,0045.3,
+$TSMES,27/11/13,19:01:24.349,BLTNK, 0,R0484,1,VNT,0047.0,
+$TSMES,27/11/13,19:02:31.112,BLTNK, 0,R0484,1,VNT,0045.2,
+$TSMES,27/11/13,19:04:19.036,BLTNK, 0,R0484,1,VNT,0045.3,
+$TSMES,27/11/13,19:05:39.010,BLTNK, 0,R0484,1,VAT,0048.6,
+$TSMES,27/11/13,19:07:07.066,BLTNK, 0,R0484,1,VNT,0049.1,
+$TSMES,27/11/13,19:07:47.001,BLTNK, 0,R0484,1,VNT,0042.7,
+$TSMES,27/11/13,19:08:31.646,BLTNK, 0,R0484,1,VNT,0046.7,
+$TSMES,27/11/13,19:09:18.030,BLTNK, 0,R0484,1,VAT,0046.4,
+$TSMES,27/11/13,19:10:11.686,BLTNK, 0,R0484,1,VNT,0048.0,
+$TSMES,27/11/13,19:10:57.668,BLTNK, 0,R0484,1,VNT,0045.6,
+$TSMES,27/11/13,19:11:44.968,BLTNK, 0,R0484,1,VNT,0048.1,
+$TSMES,27/11/13,19:15:02.592,BLTNK, 0,R0484,1,VAT,0040.2,
+$TSMES,27/11/13,19:16:20.308,BLTNK, 0,R0484,1,VNT,0003.7,
Added: trunk/tutti-service/src/test/resources/pupitri/ano-5032.tuttiProtocol
===================================================================
--- trunk/tutti-service/src/test/resources/pupitri/ano-5032.tuttiProtocol (rev 0)
+++ trunk/tutti-service/src/test/resources/pupitri/ano-5032.tuttiProtocol 2014-05-05 15:00:37 UTC (rev 1753)
@@ -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
r1752 - trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util
by tchemit@users.forge.codelutin.com May 5, 2014
by tchemit@users.forge.codelutin.com May 5, 2014
May 5, 2014
Author: tchemit
Date: 2014-05-05 16:59:13 +0200 (Mon, 05 May 2014)
New Revision: 1752
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1752
Log:
refs #4958 (fix lazy exception when modifing a catch)
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java 2014-05-05 14:01:03 UTC (rev 1751)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java 2014-05-05 14:59:13 UTC (rev 1752)
@@ -2,6 +2,7 @@
import fr.ifremer.adagio.core.dao.data.batch.Batch;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatch;
+import fr.ifremer.adagio.core.dao.data.batch.CatchBatchImpl;
import fr.ifremer.adagio.core.dao.data.sample.Sample;
import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.FishingTrip;
import fr.ifremer.adagio.core.dao.data.survey.scientificCruise.ScientificCruise;
@@ -11,6 +12,7 @@
import fr.ifremer.tutti.persistence.service.AbstractPersistenceService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.hibernate.LazyInitializationException;
import org.hibernate.type.IntegerType;
import org.hibernate.type.StringType;
import org.springframework.dao.DataIntegrityViolationException;
@@ -49,11 +51,20 @@
public void setDirty(CatchBatch catchBatch) {
String synchronizationStatus = getDirtyValue();
- catchBatch.setSynchronizationStatus(synchronizationStatus);
+
if (log.isInfoEnabled()) {
log.info("SetDirty catchBatch: " + catchBatch.getId());
}
- setDirty(catchBatch.getFishingOperation().getFishingTrip());
+ catchBatch.setSynchronizationStatus(synchronizationStatus);
+
+ try {
+ setDirty(catchBatch.getFishingOperation().getFishingTrip());
+ } catch (LazyInitializationException e) {
+
+ // We need to have a loaded catchBatch, since it can come from a cache, prefer to reload it here
+ CatchBatchImpl loadedCatchBatch = load(CatchBatchImpl.class, catchBatch.getId());
+ loadedCatchBatch.setSynchronizationStatus(synchronizationStatus);
+ }
}
public void setDirty(Sample sample) {
1
0
r1751 - in trunk: tutti-service/src/main/java/fr/ifremer/tutti/service tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util
by tchemit@users.forge.codelutin.com May 5, 2014
by tchemit@users.forge.codelutin.com May 5, 2014
May 5, 2014
Author: tchemit
Date: 2014-05-05 16:01:03 +0200 (Mon, 05 May 2014)
New Revision: 1751
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1751
Log:
merge from refs #5032 (version 3.4.1)
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2014-05-05 13:39:18 UTC (rev 1750)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2014-05-05 14:01:03 UTC (rev 1751)
@@ -63,6 +63,7 @@
public static final String CARACTERISTIC_PARAMETER_ONLY = "parameterOnly";
+ public static final String WITH_SURVEY_CODE = "withSurveyCode";
public static final String FROM_PROTOCOL = "fromProtocol";
public static final String GEAR_WITH_RANK_ORDER = "gearWithrankOrder";
@@ -141,6 +142,7 @@
registerTuttiDecorator(Program.class, ONLY_NAME, "${name}$s", SEPARATOR, " - ");
registerDecorator(new SpeciesDecorator());
+ registerDecorator(WITH_SURVEY_CODE, new SpeciesDecoratorWithSurveyCode());
registerDecorator(FROM_PROTOCOL, new SpeciesFromProtocolDecorator());
registerDecorator(CARACTERISTIC_WITH_UNIT, new SimpleCaracteristicDecorator("${parameterName}$s#${matrixName}$s#${fractionName}$s#${methodName}$s"));
@@ -217,6 +219,31 @@
}
}
+ public static class SpeciesDecoratorWithSurveyCode extends TuttiDecorator<Species> implements Cloneable {
+
+ private static final long serialVersionUID = 1L;
+
+ public SpeciesDecoratorWithSurveyCode() throws IllegalArgumentException, NullPointerException {
+ super(Species.class, "${surveyCode}$s#${name}$s", DecoratorService.SEPARATOR, " - ");
+ }
+
+ @Override
+ protected Object onNullValue(Species bean, String token) {
+ Object result = null;
+ if (Species.PROPERTY_SURVEY_CODE.equals(token)) {
+
+ // try with refTaxCode
+ result = bean.getRefTaxCode();
+
+ if (result ==null) {
+
+ result = t("tutti.propety.no.species.speciesCode");
+ }
+ }
+ return result;
+ }
+ }
+
public static class SimpleCaracteristicDecorator extends TuttiDecorator<Caracteristic> implements Cloneable {
private static final long serialVersionUID = 1L;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2014-05-05 13:39:18 UTC (rev 1750)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2014-05-05 14:01:03 UTC (rev 1751)
@@ -414,7 +414,7 @@
String prefix,
String suffix) {
return buildReminderLabelTitle(
- decorate(species),
+ decorate(species, DecoratorService.WITH_SURVEY_CODE),
categories,
prefix,
suffix);
1
0
The Tutti team is pleased to announce the tutti-3.4.1 release!
Outil de saisie de données d'opérations et de captures au
cours des campagnes halieutiques.
Documentation of the project can be found here:
https://doc.codelutin.com/projects/tutti
Changes
-------
Changes in this version include:
Fixed Bugs:
o [MENSURATION] libellé du bandeau de l'écran : afficher CODE CAMPAGNE - NOM SCIENTIFIQUE et pas CODE RUBI N - NOM SCIENTIFIQUE Issue: 5033. Thanks to Vincent BADTS. Resolved by tchemit.
o [IMPORT PUPITRI] mélange code campagnet code rubin Issue: 5032. Thanks to Vincent BADTS. Resolved by tchemit.
Downloads
---------
For a manual installation, you can download files here:
http://forge.codelutin.com/projects/tutti/files
* tutti-ichtyometer-3.4.1-tools.zip - http://forge.codelutin.com/attachments/download/1797
Maven artifacts
---------------
Artifacts are deployed in nuiton maven repository
http://maven.nuiton.org/other-releases/
Have fun!
-Tutti team
1
0
r1750 - in branches/tutti-3.4.x: . tutti-ichtyometer tutti-persistence tutti-service tutti-ui-swing
by maven-release@users.forge.codelutin.com May 5, 2014
by maven-release@users.forge.codelutin.com May 5, 2014
May 5, 2014
Author: maven-release
Date: 2014-05-05 15:39:18 +0200 (Mon, 05 May 2014)
New Revision: 1750
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1750
Log:
[maven-release-plugin] prepare for next development iteration
Modified:
branches/tutti-3.4.x/pom.xml
branches/tutti-3.4.x/tutti-ichtyometer/pom.xml
branches/tutti-3.4.x/tutti-persistence/pom.xml
branches/tutti-3.4.x/tutti-service/pom.xml
branches/tutti-3.4.x/tutti-ui-swing/pom.xml
Modified: branches/tutti-3.4.x/pom.xml
===================================================================
--- branches/tutti-3.4.x/pom.xml 2014-05-05 13:39:11 UTC (rev 1749)
+++ branches/tutti-3.4.x/pom.xml 2014-05-05 13:39:18 UTC (rev 1750)
@@ -32,7 +32,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.1</version>
+ <version>3.4.2-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Tutti</name>
@@ -99,13 +99,13 @@
<scm>
<url>
- https://forge.codelutin.com/projects/tutti/repository/tags/tutti-3.4.1
+ https://forge.codelutin.com/projects/tutti/repository/branches/tutti-3.4.x
</url>
<connection>
- scm:svn:http://svn.codelutin.com/tutti/tags/tutti-3.4.1
+ scm:svn:http://svn.codelutin.com/tutti/branches/tutti-3.4.x
</connection>
<developerConnection>
- scm:svn:https://svn.codelutin.com/tutti/tags/tutti-3.4.1
+ scm:svn:https://svn.codelutin.com/tutti/branches/tutti-3.4.x
</developerConnection>
</scm>
<distributionManagement>
Modified: branches/tutti-3.4.x/tutti-ichtyometer/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-ichtyometer/pom.xml 2014-05-05 13:39:11 UTC (rev 1749)
+++ branches/tutti-3.4.x/tutti-ichtyometer/pom.xml 2014-05-05 13:39:18 UTC (rev 1750)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.1</version>
+ <version>3.4.2-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: branches/tutti-3.4.x/tutti-persistence/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-persistence/pom.xml 2014-05-05 13:39:11 UTC (rev 1749)
+++ branches/tutti-3.4.x/tutti-persistence/pom.xml 2014-05-05 13:39:18 UTC (rev 1750)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.1</version>
+ <version>3.4.2-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: branches/tutti-3.4.x/tutti-service/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-service/pom.xml 2014-05-05 13:39:11 UTC (rev 1749)
+++ branches/tutti-3.4.x/tutti-service/pom.xml 2014-05-05 13:39:18 UTC (rev 1750)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.1</version>
+ <version>3.4.2-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: branches/tutti-3.4.x/tutti-ui-swing/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-ui-swing/pom.xml 2014-05-05 13:39:11 UTC (rev 1749)
+++ branches/tutti-3.4.x/tutti-ui-swing/pom.xml 2014-05-05 13:39:18 UTC (rev 1750)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.1</version>
+ <version>3.4.2-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
1
0
Author: maven-release
Date: 2014-05-05 15:39:11 +0200 (Mon, 05 May 2014)
New Revision: 1749
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1749
Log:
[maven-release-plugin] copy for tag tutti-3.4.1
Added:
tags/tutti-3.4.1/
1
0
r1748 - in branches/tutti-3.4.x: . tutti-ichtyometer tutti-persistence tutti-service tutti-ui-swing
by maven-release@users.forge.codelutin.com May 5, 2014
by maven-release@users.forge.codelutin.com May 5, 2014
May 5, 2014
Author: maven-release
Date: 2014-05-05 15:39:01 +0200 (Mon, 05 May 2014)
New Revision: 1748
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1748
Log:
[maven-release-plugin] prepare release tutti-3.4.1
Modified:
branches/tutti-3.4.x/pom.xml
branches/tutti-3.4.x/tutti-ichtyometer/pom.xml
branches/tutti-3.4.x/tutti-persistence/pom.xml
branches/tutti-3.4.x/tutti-service/pom.xml
branches/tutti-3.4.x/tutti-ui-swing/pom.xml
Modified: branches/tutti-3.4.x/pom.xml
===================================================================
--- branches/tutti-3.4.x/pom.xml 2014-05-05 13:31:26 UTC (rev 1747)
+++ branches/tutti-3.4.x/pom.xml 2014-05-05 13:39:01 UTC (rev 1748)
@@ -32,7 +32,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.4.1</version>
<packaging>pom</packaging>
<name>Tutti</name>
@@ -99,13 +99,13 @@
<scm>
<url>
- https://forge.codelutin.com/projects/tutti/repository/branches/tutti-3.4.x
+ https://forge.codelutin.com/projects/tutti/repository/tags/tutti-3.4.1
</url>
<connection>
- scm:svn:http://svn.codelutin.com/tutti/branches/tutti-3.4.x
+ scm:svn:http://svn.codelutin.com/tutti/tags/tutti-3.4.1
</connection>
<developerConnection>
- scm:svn:https://svn.codelutin.com/tutti/branches/tutti-3.4.x
+ scm:svn:https://svn.codelutin.com/tutti/tags/tutti-3.4.1
</developerConnection>
</scm>
<distributionManagement>
Modified: branches/tutti-3.4.x/tutti-ichtyometer/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-ichtyometer/pom.xml 2014-05-05 13:31:26 UTC (rev 1747)
+++ branches/tutti-3.4.x/tutti-ichtyometer/pom.xml 2014-05-05 13:39:01 UTC (rev 1748)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.4.1</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: branches/tutti-3.4.x/tutti-persistence/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-persistence/pom.xml 2014-05-05 13:31:26 UTC (rev 1747)
+++ branches/tutti-3.4.x/tutti-persistence/pom.xml 2014-05-05 13:39:01 UTC (rev 1748)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.4.1</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: branches/tutti-3.4.x/tutti-service/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-service/pom.xml 2014-05-05 13:31:26 UTC (rev 1747)
+++ branches/tutti-3.4.x/tutti-service/pom.xml 2014-05-05 13:39:01 UTC (rev 1748)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.4.1</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: branches/tutti-3.4.x/tutti-ui-swing/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-ui-swing/pom.xml 2014-05-05 13:31:26 UTC (rev 1747)
+++ branches/tutti-3.4.x/tutti-ui-swing/pom.xml 2014-05-05 13:39:01 UTC (rev 1748)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.4.1</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
1
0
r1747 - in branches/tutti-3.4.x: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri tutti-service/src/test/resources/pupitri
by tchemit@users.forge.codelutin.com May 5, 2014
by tchemit@users.forge.codelutin.com May 5, 2014
May 5, 2014
Author: tchemit
Date: 2014-05-05 15:31:26 +0200 (Mon, 05 May 2014)
New Revision: 1747
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1747
Log:
fixes #5032
Added:
branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno3898Test.java
branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5032Test.java
branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.car
branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.tnk
branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.tuttiProtocol
Removed:
branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceTest.java
Modified:
branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.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/PupitriImportExportService.java
branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-3898.car
Modified: branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
===================================================================
--- branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2014-05-05 13:17:39 UTC (rev 1746)
+++ branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2014-05-05 13:31:26 UTC (rev 1747)
@@ -650,28 +650,32 @@
Map<String, Species> map = TuttiEntities.splitByTaxonId(allReferentSpecies);
- Iterator<SpeciesProtocol> iterator = protocol.getSpecies().iterator();
- while (iterator.hasNext()) {
- SpeciesProtocol speciesProtocol = iterator.next();
- String taxonId = String.valueOf(speciesProtocol.getSpeciesReferenceTaxonId());
- Species species = map.get(taxonId);
- if (species == null) {
- if (log.isWarnEnabled()) {
- log.warn("Could not find protocol species " + taxonId + " (" + speciesProtocol.getSpeciesSurveyCode() + ") in referential.");
+ if (!protocol.isSpeciesEmpty()) {
+ Iterator<SpeciesProtocol> iterator = protocol.getSpecies().iterator();
+ while (iterator.hasNext()) {
+ SpeciesProtocol speciesProtocol = iterator.next();
+ String taxonId = String.valueOf(speciesProtocol.getSpeciesReferenceTaxonId());
+ Species species = map.get(taxonId);
+ if (species == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("Could not find protocol species " + taxonId + " (" + speciesProtocol.getSpeciesSurveyCode() + ") in referential.");
+ }
+ iterator.remove();
}
- iterator.remove();
}
}
- iterator = protocol.getBenthos().iterator();
- while (iterator.hasNext()) {
- SpeciesProtocol speciesProtocol = iterator.next();
- String taxonId = String.valueOf(speciesProtocol.getSpeciesReferenceTaxonId());
- Species species = map.get(taxonId);
- if (species == null) {
- if (log.isWarnEnabled()) {
- log.warn("Could not find protocol benthos " + taxonId + " (" + speciesProtocol.getSpeciesSurveyCode() + ") in referential.");
+ if (!protocol.isBenthosEmpty()) {
+ Iterator<SpeciesProtocol> iterator = protocol.getBenthos().iterator();
+ while (iterator.hasNext()) {
+ SpeciesProtocol speciesProtocol = iterator.next();
+ String taxonId = String.valueOf(speciesProtocol.getSpeciesReferenceTaxonId());
+ Species species = map.get(taxonId);
+ if (species == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("Could not find protocol benthos " + taxonId + " (" + speciesProtocol.getSpeciesSurveyCode() + ") in referential.");
+ }
+ iterator.remove();
}
- iterator.remove();
}
}
return protocol;
@@ -962,20 +966,24 @@
Map<Integer, String> surveyCodeByTaxonId = Maps.newTreeMap();
- for (SpeciesProtocol speciesProtocol : protocol.getSpecies()) {
- String surveyCode = speciesProtocol.getSpeciesSurveyCode();
- if (StringUtils.isNotBlank(surveyCode)) {
- Integer taxonId =
- speciesProtocol.getSpeciesReferenceTaxonId();
- surveyCodeByTaxonId.put(taxonId, surveyCode);
+ if (!protocol.isSpeciesEmpty()) {
+ for (SpeciesProtocol speciesProtocol : protocol.getSpecies()) {
+ String surveyCode = speciesProtocol.getSpeciesSurveyCode();
+ if (StringUtils.isNotBlank(surveyCode)) {
+ Integer taxonId =
+ speciesProtocol.getSpeciesReferenceTaxonId();
+ surveyCodeByTaxonId.put(taxonId, surveyCode);
+ }
}
}
- for (SpeciesProtocol speciesProtocol : protocol.getBenthos()) {
- String surveyCode = speciesProtocol.getSpeciesSurveyCode();
- if (StringUtils.isNotBlank(surveyCode)) {
- Integer taxonId =
- speciesProtocol.getSpeciesReferenceTaxonId();
- surveyCodeByTaxonId.put(taxonId, surveyCode);
+ if (!protocol.isBenthosEmpty()) {
+ for (SpeciesProtocol speciesProtocol : protocol.getBenthos()) {
+ String surveyCode = speciesProtocol.getSpeciesSurveyCode();
+ if (StringUtils.isNotBlank(surveyCode)) {
+ Integer taxonId =
+ speciesProtocol.getSpeciesReferenceTaxonId();
+ surveyCodeByTaxonId.put(taxonId, surveyCode);
+ }
}
}
for (Species species : speciesList) {
Modified: branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
===================================================================
--- branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2014-05-05 13:17:39 UTC (rev 1746)
+++ branches/tutti-3.4.x/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2014-05-05 13:31:26 UTC (rev 1747)
@@ -147,6 +147,10 @@
return Multimaps.index(list, GET_REF_TAX_CODE);
}
+ public static Multimap<String, Species> splitBySurveyCode(Iterable<Species> list) {
+ return Multimaps.index(list, GET_SURVEY_CODE);
+ }
+
public static final Function<Species, String> GET_TAXON_ID = new Function<Species, String>() {
@Override
public String apply(Species input) {
@@ -161,6 +165,13 @@
}
};
+ public static final Function<Species, String> GET_SURVEY_CODE = new Function<Species, String>() {
+ @Override
+ public String apply(Species input) {
+ return String.valueOf(input.getSurveyCode());
+ }
+ };
+
public static final Function<TuttiEntity, String> GET_ID = new Function<TuttiEntity, String>() {
@Override
public String apply(TuttiEntity input) {
@@ -515,7 +526,7 @@
public static float roundKiloGram(float value) {
BigDecimal sumB = new BigDecimal(value);
float result;
- if (Math.abs(value - sumB.floatValue())< 0.0001f) {
+ if (Math.abs(value - sumB.floatValue()) < 0.0001f) {
result = value;
} else {
result = sumB.abs(MATH_CONTEXT_4_DIGIT).floatValue();
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-05 13:17:39 UTC (rev 1746)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/CarrouselRowModel.java 2014-05-05 13:31:26 UTC (rev 1747)
@@ -25,11 +25,7 @@
*/
import fr.ifremer.tutti.service.TuttiCsvUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.nuiton.csv.ValueParser;
-import java.text.ParseException;
-
/**
* @author kmorin <kmorin(a)codelutin.com>
* @since 1.2
@@ -41,13 +37,7 @@
newMandatoryColumn(CarrouselRow.PROPERTY_OPERATION_CODE);
newMandatoryColumn(CarrouselRow.PROPERTY_RIG_NUMBER);
- newMandatoryColumn(CarrouselRow.PROPERTY_SPECIES_ID, new ValueParser<String>() {
-
- @Override
- public String parse(String string) throws ParseException {
- return StringUtils.remove(string, '-').trim();
- }
- });
+ newMandatoryColumn(CarrouselRow.PROPERTY_SPECIES_ID);
newMandatoryColumn(CarrouselRow.PROPERTY_SIGN);
newMandatoryColumn(CarrouselRow.PROPERTY_DIRECTION,
TuttiCsvUtil.newEnumByNameParserFormatter(Directions.class));
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-05 13:17:39 UTC (rev 1746)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportExportService.java 2014-05-05 13:31:26 UTC (rev 1747)
@@ -30,10 +30,7 @@
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import com.google.common.collect.Multimaps;
import com.google.common.collect.Sets;
-import org.nuiton.jaxx.application.ApplicationIOUtil;
-import org.nuiton.jaxx.application.ApplicationTechnicalException;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
@@ -63,6 +60,8 @@
import org.nuiton.csv.Export;
import org.nuiton.csv.Import;
import org.nuiton.decorator.Decorator;
+import org.nuiton.jaxx.application.ApplicationIOUtil;
+import org.nuiton.jaxx.application.ApplicationTechnicalException;
import java.io.File;
import java.io.IOException;
@@ -74,8 +73,8 @@
import java.util.Map;
import java.util.Set;
+import static org.nuiton.i18n.I18n.n;
import static org.nuiton.i18n.I18n.t;
-import static org.nuiton.i18n.I18n.n;
/**
* @author kmorin <kmorin(a)codelutin.com>
@@ -149,7 +148,7 @@
PupitriImportResult result = new PupitriImportResult(trunkFile,
carrouselFile);
- importPupitriTrunk(result, trunkFile, operation, catchBatch);
+ importPupitriTrunk(result, trunkFile, operation);
importPupitriCarrousel(result, carrouselFile, operation, catchBatch);
if (result.isFishingOperationFound()) {
@@ -203,9 +202,7 @@
persistenceService.createAttachment(attachment, f);
}
- protected void importPupitriTrunk(PupitriImportResult result, File file,
- FishingOperation operation,
- CatchBatch catchBatch) {
+ protected void importPupitriTrunk(PupitriImportResult result, File file, FishingOperation operation) {
if (log.isInfoEnabled()) {
log.info("Will import pupitri operation [" + operation.toString() +
@@ -278,17 +275,20 @@
// get the map of species by survey code
ListMultimap<String, Species> speciesBySurveyCode = ArrayListMultimap.create();
- speciesBySurveyCode.putAll(
- Multimaps.index(dataContext.getReferentSpeciesWithSurveyCode(),
- new Function<Species, String>() {
- @Override
- public String apply(Species input) {
- String surveyCode = String.valueOf(input.getSurveyCode());
- int end = Math.min(surveyCode.length(), 7);
- return surveyCode.substring(0, end);
- }
- })
- );
+// speciesBySurveyCode.putAll(
+// Multimaps.index(dataContext.getReferentSpeciesWithSurveyCode(),
+// new Function<Species, String>() {
+// @Override
+// public String apply(Species input) {
+// String surveyCode = String.valueOf(input.getSurveyCode());
+// int end = Math.min(surveyCode.length(), 7);
+// return surveyCode.substring(0, end);
+// }
+// })
+// );
+// speciesBySurveyCode.putAll(TuttiEntities.splitByRefTaxCode(dataContext.getReferentSpecies()));
+
+ speciesBySurveyCode.putAll(TuttiEntities.splitBySurveyCode(dataContext.getReferentSpeciesWithSurveyCode()));
speciesBySurveyCode.putAll(TuttiEntities.splitByRefTaxCode(dataContext.getReferentSpecies()));
// import the batches
Copied: branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno3898Test.java (from rev 1744, branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceTest.java)
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno3898Test.java (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno3898Test.java 2014-05-05 13:31:26 UTC (rev 1747)
@@ -0,0 +1,137 @@
+package fr.ifremer.tutti.service.pupitri;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+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.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;
+
+/**
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 3.0-rc-2
+ */
+public class PupitriImportServiceAno3898Test {
+
+ @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/ano-3898.tnk", "pupitri.tnk");
+ File carroussel = dbResource.copyClassPathResource("pupitri/ano-3898.car", "pupitri.car");
+ File protocol = dbResource.copyClassPathResource("pupitri/ano-3898.tuttiProtocol", "ano-3898.tuttiProtocol");
+ dbResource.getConfig().getApplicationConfig().setOption(TuttiConfigurationOption.DB_PROTOCOL_DIRECTORY.getKey(), protocol.getParentFile().getAbsolutePath());
+ TuttiProtocol protocol1 = persistenceService.getProtocol("ano-3898");
+ 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(31, rootSpeciesBatchAfter.sizeChildren());
+
+ Decorator<Species> speciesDecorator = decoratorService.getDecoratorByType(Species.class);
+
+ for (SpeciesBatch speciesBatch : rootSpeciesBatchAfter.getChildren()) {
+
+ Integer nbChildren = null;
+ // species 17003 (MELAAEG) has two childs (SMALL - BIG)
+ if (17003 == speciesBatch.getSpecies().getIdAsInt()) {
+ nbChildren = 2;
+ // species 37312 (LOLIFOR) has no childs (in puttitri has some DEFAULT AND SMALL)
+ } else if (37312 == speciesBatch.getSpecies().getIdAsInt()) {
+ nbChildren = 0;
+ // species 17005 (MERNMER) has no childs (in puttitri has some DEFAULT AND SMALL)
+ } else if (17005 == speciesBatch.getSpecies().getIdAsInt()) {
+ nbChildren = 0;
+ }
+
+ if (nbChildren != null) {
+ Assert.assertEquals("SpeciesBatch with species " + speciesDecorator.toString(speciesBatch.getSpecies()) + " should have with " + nbChildren + " but had " + speciesBatch.sizeChildBatchs(), nbChildren.intValue(), speciesBatch.sizeChildBatchs());
+ }
+
+ }
+ }
+}
Added: branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5032Test.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5032Test.java (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5032Test.java 2014-05-05 13:31:26 UTC (rev 1747)
@@ -0,0 +1,152 @@
+package fr.ifremer.tutti.service.pupitri;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL: https://svn.codelutin.com/tutti/branches/3.3.6/tutti-service/src/test/java/… $
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+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;
+
+/**
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 3.0-rc-2
+ */
+public class PupitriImportServiceAno5032Test {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(PupitriImportServiceAno5032Test.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/ano-5032.tnk", "pupitri.tnk");
+ File carroussel = dbResource.copyClassPathResource("pupitri/ano-5032.car", "pupitri.car");
+ File protocol = dbResource.copyClassPathResource("pupitri/ano-5032.tuttiProtocol", "ano-5032.tuttiProtocol");
+ dbResource.getConfig().getApplicationConfig().setOption(TuttiConfigurationOption.DB_PROTOCOL_DIRECTORY.getKey(), protocol.getParentFile().getAbsolutePath());
+ TuttiProtocol protocol1 = persistenceService.getProtocol("ano-5032");
+ 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(4, nbNotAdded);
+ BatchContainer<SpeciesBatch> rootSpeciesBatchAfter = persistenceService.getRootSpeciesBatch(operation.getId(), null);
+ Assert.assertEquals(4, rootSpeciesBatchAfter.sizeChildren());
+
+ Set<Integer> unexpectedSpecies = Sets.newHashSet(
+ );
+ Set<Integer> expectedSpecies = Sets.newHashSet(
+ 17005, // MERNMER
+ 17186, // ACATPAL
+ 16328, // ACAPPEL
+ 20788 // ASRNATL
+ );
+
+ 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/PupitriImportServiceAno5032Test.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Deleted: branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceTest.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceTest.java 2014-05-05 13:17:39 UTC (rev 1746)
+++ branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceTest.java 2014-05-05 13:31:26 UTC (rev 1747)
@@ -1,138 +0,0 @@
-package fr.ifremer.tutti.service.pupitri;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-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.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;
-
-/**
- * @author tchemit <chemit(a)codelutin.com>
- * @since 3.0-rc-2
- */
-public class PupitriImportServiceTest {
-
- @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 importPupitriANO3898() throws IOException {
-
- File trunk = dbResource.copyClassPathResource("pupitri/ano-3898.tnk", "pupitri.tnk");
- File carroussel = dbResource.copyClassPathResource("pupitri/ano-3898.car", "pupitri.car");
- File protocol = dbResource.copyClassPathResource("pupitri/ano-3898.tuttiProtocol", "ano-3898.tuttiProtocol");
- dbResource.getConfig().getApplicationConfig().setOption(TuttiConfigurationOption.DB_PROTOCOL_DIRECTORY.getKey(), protocol.getParentFile().getAbsolutePath());
- TuttiProtocol protocol1 = persistenceService.getProtocol("ano-3898");
- 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(31, rootSpeciesBatchAfter.sizeChildren());
-
- Decorator<Species> speciesDecorator = decoratorService.getDecoratorByType(Species.class);
-
-// int index = 0;
- for (SpeciesBatch speciesBatch : rootSpeciesBatchAfter.getChildren()) {
-
- Integer nbChildren = null;
- // species 17003 (MELAAEG) has two childs (SMALL - BIG)
- if (17003 == speciesBatch.getSpecies().getIdAsInt()) {
- nbChildren = 2;
- // species 37312 (LOLIFOR) has no childs (in puttitri has some DEFAULT AND SMALL)
- } else if (37312 == speciesBatch.getSpecies().getIdAsInt()) {
- nbChildren = 0;
- // species 17005 (MERNMER) has no childs (in puttitri has some DEFAULT AND SMALL)
- }else if (17005== speciesBatch.getSpecies().getIdAsInt()) {
- nbChildren = 0;
- }
-
- if (nbChildren != null) {
- Assert.assertEquals("SpeciesBatch with species " + speciesDecorator.toString(speciesBatch.getSpecies()) + " should have with " + nbChildren + " but had " + speciesBatch.sizeChildBatchs(), nbChildren.intValue(), speciesBatch.sizeChildBatchs());
- }
-
- }
- }
-}
Modified: branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-3898.car
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-3898.car 2014-05-05 13:17:39 UTC (rev 1746)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-3898.car 2014-05-05 13:31:26 UTC (rev 1747)
@@ -1,381 +1,381 @@
-$TSMES,27/11/13,09:12:04.612,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0015.6,
-$TSMES,27/11/13,09:13:21.994,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0018.9,
-$TSMES,27/11/13,09:15:12.588,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0021.4,
-$TSMES,27/11/13,09:15:58.396,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0017.9,
-$TSMES,27/11/13,09:17:11.714,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0017.2,
-$TSMES,27/11/13,09:17:40.272,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0021.1,
-$TSMES,27/11/13,09:18:48.818,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0018.0,
-$TSMES,27/11/13,09:19:33.335,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0016.6,
-$TSMES,27/11/13,09:21:16.442,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0015.8,
-$TSMES,27/11/13,09:21:40.776,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0022.8,
-$TSMES,27/11/13,09:22:45.945,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0016.1,
-$TSMES,27/11/13,09:26:51.656,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0019.1,
-$TSMES,27/11/13,09:27:53.133,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0016.5,
-$TSMES,27/11/13,09:28:17.445,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0018.4,
-$TSMES,27/11/13,09:31:22.362,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0014.6,
-$TSMES,27/11/13,09:31:45.650,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0018.4,
-$TSMES,27/11/13,09:32:05.512,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0023.0,
-$TSMES,27/11/13,09:33:00.869,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0014.2,
-$TSMES,27/11/13,09:33:24.472,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0012.8,
-$TSMES,27/11/13,09:34:25.343,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0015.8,
-$TSMES,27/11/13,09:34:44.541,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0021.0,
-$TSMES,27/11/13,09:36:02.174,BLCAR, 0,A,1,001,NEPH-NOR,0,VAT,0006.3,
-$TSMES,27/11/13,09:36:30.632,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0024.1,
-$TSMES,27/11/13,09:37:25.749,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0017.5,
-$TSMES,27/11/13,09:37:47.056,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0018.3,
-$TSMES,27/11/13,09:38:44.513,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0018.5,
-$TSMES,27/11/13,09:40:34.621,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0015.8,
-$TSMES,27/11/13,09:41:28.855,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0011.3,
-$TSMES,27/11/13,09:42:39.349,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0016.7,
-$TSMES,27/11/13,09:43:01.405,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0020.2,
-$TSMES,27/11/13,09:43:21.779,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0018.7,
-$TSMES,27/11/13,09:44:16.028,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0025.7,
-$TSMES,27/11/13,09:44:39.643,BLCAR, 0,A,1,002,MERL-MCC,0,VAT,0017.6,
-$TSMES,27/11/13,09:45:41.310,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0015.9,
-$TSMES,27/11/13,09:46:04.181,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0018.0,
-$TSMES,27/11/13,09:47:00.822,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0018.1,
-$TSMES,27/11/13,09:47:25.806,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0018.0,
-$TSMES,27/11/13,09:48:25.059,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0013.1,
-$TSMES,27/11/13,09:48:47.779,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0016.4,
-$TSMES,27/11/13,09:50:25.036,BLCAR,-1,A,1,002,CLUP-HAR,0,VAT,-001.8,
-$TSMES,27/11/13,09:51:02.085,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0016.5,
-$TSMES,27/11/13,09:52:08.332,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0016.2,
-$TSMES,27/11/13,09:52:34.644,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0020.6,
-$TSMES,27/11/13,09:52:57.540,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0016.1,
-$TSMES,27/11/13,09:53:31.676,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0018.3,
-$TSMES,27/11/13,09:54:07.781,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0021.0,
-$TSMES,27/11/13,09:55:10.374,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0018.4,
-$TSMES,27/11/13,09:55:35.859,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0018.1,
-$TSMES,27/11/13,09:56:02.545,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0014.2,
-$TSMES,27/11/13,09:57:06.900,BLCAR, 0,A,1,002,EUTR-GUR,0,VAT,0013.5,
-$TSMES,27/11/13,09:57:28.821,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0018.3,
-$TSMES,27/11/13,09:58:35.607,BLCAR, 0,A,1,001,MERL-MNG,0,VAT,0009.9,
-$TSMES,27/11/13,09:59:17.462,BLCAR, 0,A,1,001,EUTR-GUR,0,VAT,0006.9,
-$TSMES,27/11/13,10:00:18.404,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0023.0,
-$TSMES,27/11/13,10:00:45.111,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0014.8,
-$TSMES,27/11/13,10:01:59.945,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0019.3,
-$TSMES,27/11/13,10:02:23.121,BLCAR, 0,A,1,002,NEPH-NOR,0,VAT,0010.2,
-$TSMES,27/11/13,10:03:37.632,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0014.0,
-$TSMES,27/11/13,10:04:06.529,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0015.1,
-$TSMES,27/11/13,10:05:06.144,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0014.0,
-$TSMES,27/11/13,10:05:36.831,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0020.3,
-$TSMES,27/11/13,10:06:02.527,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0012.3,
-$TSMES,27/11/13,10:07:12.015,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0023.7,
-$TSMES,27/11/13,10:07:44.295,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0018.2,
-$TSMES,27/11/13,10:08:22.400,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0017.6,
-$TSMES,27/11/13,10:09:24.404,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0022.5,
-$TSMES,27/11/13,10:09:45.542,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0017.7,
-$TSMES,27/11/13,10:10:07.635,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0021.8,
-$TSMES,27/11/13,10:10:38.750,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0011.2,
-$TSMES,27/11/13,10:11:05.784,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0015.9,
-$TSMES,27/11/13,10:11:34.634,BLCAR, 0,A,1,002,CONG-CON,0,VAT,0001.0,
-$TSMES,27/11/13,10:12:40.011,BLCAR,-1,A,1,002,RAJA-CLA,0,VAT,-000.1,
-$TSMES,27/11/13,10:13:08.077,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0014.8,
-$TSMES,27/11/13,10:13:35.173,BLCAR, 0,A,1,002,TRIS-ESM,0,VAT,0012.2,
-$TSMES,27/11/13,10:13:56.456,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0020.3,
-$TSMES,27/11/13,10:14:43.589,BLCAR, 0,A,1,001,HIPP-PLA,0,VAT,0002.9,
-$TSMES,27/11/13,10:15:33.096,BLCAR, 0,A,1,001,MELA-AEG,P,VAT,0001.4,
-$TSMES,27/11/13,10:15:59.750,BLCAR, 0,A,1,002,MELA-AEG,G,VAT,0007.8,
-$TSMES,27/11/13,10:16:28.073,BLCAR, 0,A,1,001,GADU-MOR,0,VAT,0000.1,
-$TSMES,27/11/13,10:17:04.293,BLCAR, 0,A,1,001,MERL-MNG,0,VAT,0007.1,
-$TSMES,27/11/13,10:17:35.174,BLCAR, 0,A,1,001,TRIS-MIN,0,VAT,0006.0,
-$TSMES,27/11/13,10:18:09.419,BLCAR, 0,A,1,001,MERL-MNG,P,VAT,0007.4,
-$TSMES,27/11/13,10:18:41.202,BLCAR, 0,A,1,001,MERL-MNG,0,VAT,0000.4,
-$TSMES,27/11/13,10:19:05.719,BLCAR, 0,A,1,002,CLUP-HAR,0,VAT,0007.7,
-$TSMES,27/11/13,10:19:50.270,BLCAR, 0,A,1,001,HIPP-PLA,0,VAT,0002.7,
-$TSMES,27/11/13,10:20:20.642,BLCAR, 0,A,1,002,MICR-POU,0,VAT,0010.7,
-$TSMES,27/11/13,10:20:48.724,BLCAR, 0,A,1,001,LOLI-FOR,0,VAT,0002.2,
-$TSMES,27/11/13,10:21:10.768,BLCAR, 0,A,1,001,EUTR-GUR,0,VAT,0004.7,
-$TSMES,27/11/13,10:21:41.022,BLCAR, 0,A,1,001,NEPH-NOR,0,VAT,0006.3,
-$TSMES,27/11/13,10:22:42.411,BLCAR, 0,A,1,001,ARGE-SPH,0,VAT,0000.1,
-$TSMES,27/11/13,10:23:25.537,BLCAR, 0,A,1,001,TRAC-TRU,0,VAT,0000.1,
-$TSMES,27/11/13,10:24:06.077,BLCAR, 0,A,1,001,SCOM-SCO,0,VAT,0000.4,
-$TSMES,27/11/13,10:24:34.127,BLCAR, 0,A,1,001,MAUR-MUE,0,VAT,0000.1,
-$TSMES,27/11/13,10:25:23.660,BLCAR, 0,A,1,001,LEPI-WHI,0,VAT,0003.1,
-$TSMES,27/11/13,10:25:47.598,BLCAR, 0,A,1,002,SCYL-CAN,0,VAT,0005.3,
-$TSMES,27/11/13,10:26:12.602,BLCAR, 0,A,1,002,LOPH-PIS,0,VAT,0012.0,
-$TSMES,27/11/13,10:26:33.530,BLCAR, 0,A,1,003,ELED-CIR,0,VAT,0001.4,
-$TSMES,27/11/13,10:27:34.508,BLCAR, 0,A,1,003,ROSS-MAC,0,VAT,0000.1,
-$TSMES,27/11/13,10:28:17.554,BLCAR, 0,A,1,001,ENCH-CIM,0,VAT,0000.8,
-$TSMES,27/11/13,10:28:57.935,BLCAR, 0,A,1,001,LIMA-LIM,0,VAT,0000.2,
-$TSMES,27/11/13,10:29:42.251,BLCAR, 0,A,1,001,CALL-MAC,0,VAT,0000.2,
-$TSMES,27/11/13,10:30:09.536,BLCAR, 0,A,1,001,CALL-LYR,0,VAT,0000.8,
-$TSMES,27/11/13,10:30:59.437,BLCAR, 0,A,1,001,MICR-VAR,0,VAT,0000.2,
-$TSMES,27/11/13,10:31:32.624,BLCAR, 0,A,1,001,SEPI-OLZ,0,VAT,0000.2,
-$TSMES,27/11/13,10:31:59.713,BLCAR, 0,A,1,003,LOLI-FOR,P,VAT,0000.1,
-$TSMES,27/11/13,10:32:34.851,BLCAR, 0,A,1,003,TODA-EBL,0,VAT,0000.2,
-$TSMES,27/11/13,10:33:02.175,BLCAR, 0,A,1,002,MERL-MCC,0,VAT,0013.8,
-$TSMES,27/11/13,10:35:38.377,BLCAR, 0,A,1,001,GLYP-CYN,0,VAT,0000.3,
-$TSMES,27/11/13,12:04:35.575,BLCAR, 0,R0482,1,001,MERL-MNG,0,VAT,0020.0,
-$TSMES,27/11/13,12:06:30.634,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.9,
-$TSMES,27/11/13,12:08:42.036,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.3,
-$TSMES,27/11/13,12:09:02.786,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0019.2,
-$TSMES,27/11/13,12:12:30.199,BLCAR, 0,R0482,1,002,MELA-AEG,0,VAT,0021.9,
-$TSMES,27/11/13,12:13:14.543,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0000.0,
-$TSMES,27/11/13,12:13:35.465,BLCAR,-1,R0482,1,002,MELA-AEG,0,VAT,-001.4,
-$TSMES,27/11/13,12:14:42.156,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0000.9,
-$TSMES,27/11/13,12:15:05.319,BLCAR,-1,R0482,1,002,CLUP-HAR,0,VAT,-002.9,
-$TSMES,27/11/13,12:16:11.874,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0007.1,
-$TSMES,27/11/13,12:16:53.113,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0000.3,
-$TSMES,27/11/13,12:19:51.787,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0000.4,
-$TSMES,27/11/13,12:20:45.974,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.5,
-$TSMES,27/11/13,12:21:08.178,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.2,
-$TSMES,27/11/13,12:21:41.969,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0021.3,
-$TSMES,27/11/13,12:22:09.619,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0015.2,
-$TSMES,27/11/13,12:23:05.053,BLCAR, 0,R0482,1,002,MERL-MNG,P,VAT,0014.7,
-$TSMES,27/11/13,12:24:17.176,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0016.4,
-$TSMES,27/11/13,12:25:25.163,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.8,
-$TSMES,27/11/13,12:27:27.892,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0017.8,
-$TSMES,27/11/13,12:27:49.775,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0017.7,
-$TSMES,27/11/13,12:28:15.701,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0007.3,
-$TSMES,27/11/13,12:32:10.843,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0018.7,
-$TSMES,27/11/13,12:34:21.824,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.6,
-$TSMES,27/11/13,12:35:28.244,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.9,
-$TSMES,27/11/13,12:35:55.232,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0018.6,
-$TSMES,27/11/13,12:36:27.381,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.9,
-$TSMES,27/11/13,12:37:02.445,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0021.9,
-$TSMES,27/11/13,12:38:17.102,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0020.9,
-$TSMES,27/11/13,12:38:39.197,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0020.5,
-$TSMES,27/11/13,12:39:55.258,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0008.8,
-$TSMES,27/11/13,12:41:15.892,BLCAR, 0,R0482,1,001,MELA-AEG,P,VAT,0008.7,
-$TSMES,27/11/13,12:41:42.452,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0019.1,
-$TSMES,27/11/13,12:43:19.486,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0018.1,
-$TSMES,27/11/13,12:44:34.765,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0018.3,
-$TSMES,27/11/13,12:45:02.744,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0018.4,
-$TSMES,27/11/13,12:46:42.493,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0020.0,
-$TSMES,27/11/13,12:47:10.163,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0021.0,
-$TSMES,27/11/13,12:49:31.763,BLCAR,-1,R0482,1,002,MERL-MNG,P,VAT,-002.4,
-$TSMES,27/11/13,12:50:05.748,BLCAR,-1,R0482,1,002,MELA-AEG,G,VAT,-000.1,
-$TSMES,27/11/13,12:52:27.719,BLCAR,-1,R0482,1,002,MERL-MNG,0,VAT,-000.2,
-$TSMES,27/11/13,12:53:38.590,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0006.6,
-$TSMES,27/11/13,12:54:05.175,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0034.3,
-$TSMES,27/11/13,12:54:57.849,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0039.3,
-$TSMES,27/11/13,12:55:38.978,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0005.0,
-$TSMES,27/11/13,12:55:58.875,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0038.0,
-$TSMES,27/11/13,12:56:58.719,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0039.8,
-$TSMES,27/11/13,12:58:00.192,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0040.2,
-$TSMES,27/11/13,12:58:59.709,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.0,
-$TSMES,27/11/13,13:00:07.669,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0042.2,
-$TSMES,27/11/13,13:00:30.038,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0040.7,
-$TSMES,27/11/13,13:00:56.621,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0042.0,
-$TSMES,27/11/13,13:01:46.953,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0039.7,
-$TSMES,27/11/13,13:02:16.623,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0042.7,
-$TSMES,27/11/13,13:03:14.387,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0008.3,
-$TSMES,27/11/13,13:03:53.935,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0041.8,
-$TSMES,27/11/13,13:04:18.682,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.8,
-$TSMES,27/11/13,13:04:44.747,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.8,
-$TSMES,27/11/13,13:06:33.303,BLCAR, 0,R0482,1,002,TRIS-ESM,0,VAT,0037.5,
-$TSMES,27/11/13,13:07:10.083,BLCAR, 0,R0482,1,001,MERL-MNG,0,VAT,0011.8,
-$TSMES,27/11/13,13:12:04.520,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0042.3,
-$TSMES,27/11/13,13:13:25.402,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.3,
-$TSMES,27/11/13,13:13:45.372,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0042.0,
-$TSMES,27/11/13,13:14:52.337,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0040.0,
-$TSMES,27/11/13,13:16:04.830,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.4,
-$TSMES,27/11/13,13:16:47.888,BLCAR, 0,R0482,1,002,MERL-MNG,P,VAT,0041.0,
-$TSMES,27/11/13,13:17:10.620,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0045.5,
-$TSMES,27/11/13,13:18:21.177,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0041.8,
-$TSMES,27/11/13,13:18:46.078,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.1,
-$TSMES,27/11/13,13:20:06.454,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0008.4,
-$TSMES,27/11/13,13:20:43.587,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0040.2,
-$TSMES,27/11/13,13:21:13.460,BLCAR, 0,R0482,1,002,TRIS-ESM,0,VAT,0035.1,
-$TSMES,27/11/13,13:21:42.160,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0043.2,
-$TSMES,27/11/13,13:22:43.729,BLCAR, 0,R0482,1,002,EUTR-GUR,0,VAT,0036.9,
-$TSMES,27/11/13,13:23:05.231,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0040.3,
-$TSMES,27/11/13,13:23:34.911,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0040.9,
-$TSMES,27/11/13,13:24:11.619,BLCAR, 0,R0482,1,002,MELA-AEG,0,VAT,0038.0,
-$TSMES,27/11/13,13:24:31.678,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.6,
-$TSMES,27/11/13,13:25:51.665,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0041.5,
-$TSMES,27/11/13,13:26:40.759,BLCAR, 0,R0482,1,002,EUTR-GUR,0,VAT,0034.1,
-$TSMES,27/11/13,13:27:08.325,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0040.0,
-$TSMES,27/11/13,13:27:38.129,BLCAR, 0,R0482,1,002,SCYL-CAN,0,VAT,0036.8,
-$TSMES,27/11/13,13:30:07.410,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0040.1,
-$TSMES,27/11/13,13:31:10.336,BLCAR, 0,R0482,1,001,EUTR-GUR,0,VAT,0008.4,
-$TSMES,27/11/13,13:33:25.697,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0042.7,
-$TSMES,27/11/13,13:35:13.921,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0028.1,
-$TSMES,27/11/13,13:35:34.139,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0040.6,
-$TSMES,27/11/13,13:36:54.752,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0041.0,
-$TSMES,27/11/13,13:37:51.527,BLCAR, 0,R0482,1,002,MELA-AEG,0,VAT,0039.3,
-$TSMES,27/11/13,13:38:19.527,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0041.1,
-$TSMES,27/11/13,13:39:05.751,BLCAR, 0,R0482,1,002,LOPH-PIS,0,VAT,0024.2,
-$TSMES,27/11/13,13:39:33.528,BLCAR, 0,R0482,1,002,SCYL-CAN,0,VAT,0024.4,
-$TSMES,27/11/13,13:39:55.322,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0037.2,
-$TSMES,27/11/13,13:40:29.179,BLCAR, 0,R0482,1,001,MERL-MCC,0,VAT,0004.7,
-$TSMES,27/11/13,13:40:48.783,BLCAR, 0,R0482,1,001,SQUA-ACA,0,VAT,0001.8,
-$TSMES,27/11/13,13:41:11.596,BLCAR, 0,R0482,1,002,EUTR-GUR,0,VAT,0036.8,
-$TSMES,27/11/13,13:41:43.833,BLCAR, 0,R0482,1,002,MELA-AEG,G,VAT,0038.3,
-$TSMES,27/11/13,13:42:28.895,BLCAR, 0,R0482,1,001,MOLV-MOL,0,VAT,0000.7,
-$TSMES,27/11/13,13:42:57.179,BLCAR, 0,R0482,1,001,SCOM-SCO,0,VAT,0000.4,
-$TSMES,27/11/13,13:43:24.662,BLCAR, 0,R0482,1,002,CLUP-HAR,0,VAT,0028.9,
-$TSMES,27/11/13,13:44:00.332,BLCAR, 0,R0482,1,001,ARGE-SPH,0,VAT,0001.4,
-$TSMES,27/11/13,13:44:33.512,BLCAR, 0,R0482,1,001,GLYP-CYN,0,VAT,0000.3,
-$TSMES,27/11/13,13:45:01.228,BLCAR, 0,R0482,1,002,MELA-AEG,P,VAT,0044.2,
-$TSMES,27/11/13,13:45:44.635,BLCAR, 0,R0482,1,001,NEPH-NOR,0,VAT,0000.7,
-$TSMES,27/11/13,13:46:34.572,BLCAR, 0,R0482,1,001,MICR-POU,0,VAT,0001.5,
-$TSMES,27/11/13,13:46:58.845,BLCAR, 0,R0482,1,001,HIPP-PLA,0,VAT,0006.0,
-$TSMES,27/11/13,13:47:30.185,BLCAR, 0,R0482,1,002,TRIS-ESM,0,VAT,0027.9,
-$TSMES,27/11/13,13:48:06.934,BLCAR, 0,R0482,1,001,TRIS-MIN,0,VAT,0008.4,
-$TSMES,27/11/13,13:49:00.114,BLCAR, 0,R0482,1,001,ASPI-CUC,0,VAT,0000.3,
-$TSMES,27/11/13,13:49:22.326,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0034.3,
-$TSMES,27/11/13,13:50:00.587,BLCAR, 0,R0482,1,001,MICR-KIT,0,VAT,0002.0,
-$TSMES,27/11/13,13:50:54.059,BLCAR, 0,R0482,1,001,LIMA-LIM,0,VAT,0000.8,
-$TSMES,27/11/13,13:51:57.928,BLCAR, 0,R0482,1,001,CALL-LYR,0,VAT,0000.7,
-$TSMES,27/11/13,13:53:03.922,BLCAR, 0,R0482,1,001,LEPI-WHI,0,VAT,0005.3,
-$TSMES,27/11/13,13:53:27.565,BLCAR, 0,R0482,1,001,CALL-MAC,0,VAT,0000.2,
-$TSMES,27/11/13,13:53:57.947,BLCAR, 0,R0482,1,001,PLEU-PLA,0,VAT,0000.8,
-$TSMES,27/11/13,13:54:15.343,BLCAR, 0,R0482,1,001,TODA-EBL,0,VAT,0000.2,
-$TSMES,27/11/13,13:54:35.664,BLCAR, 0,R0482,1,001,ELED-CIR,0,VAT,0000.3,
-$TSMES,27/11/13,13:55:04.135,BLCAR, 0,R0482,1,001,TRAC-TRU,0,VAT,0000.7,
+$TSMES,27/11/13,09:12:04.612,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0015.6,
+$TSMES,27/11/13,09:13:21.994,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0018.9,
+$TSMES,27/11/13,09:15:12.588,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0021.4,
+$TSMES,27/11/13,09:15:58.396,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0017.9,
+$TSMES,27/11/13,09:17:11.714,BLCAR, 0,A,1,002,TRISESM,0,VAT,0017.2,
+$TSMES,27/11/13,09:17:40.272,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0021.1,
+$TSMES,27/11/13,09:18:48.818,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0018.0,
+$TSMES,27/11/13,09:19:33.335,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0016.6,
+$TSMES,27/11/13,09:21:16.442,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0015.8,
+$TSMES,27/11/13,09:21:40.776,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0022.8,
+$TSMES,27/11/13,09:22:45.945,BLCAR, 0,A,1,002,TRISESM,0,VAT,0016.1,
+$TSMES,27/11/13,09:26:51.656,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0019.1,
+$TSMES,27/11/13,09:27:53.133,BLCAR, 0,A,1,002,TRISESM,0,VAT,0016.5,
+$TSMES,27/11/13,09:28:17.445,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0018.4,
+$TSMES,27/11/13,09:31:22.362,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0014.6,
+$TSMES,27/11/13,09:31:45.650,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0018.4,
+$TSMES,27/11/13,09:32:05.512,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0023.0,
+$TSMES,27/11/13,09:33:00.869,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0014.2,
+$TSMES,27/11/13,09:33:24.472,BLCAR, 0,A,1,002,TRISESM,0,VAT,0012.8,
+$TSMES,27/11/13,09:34:25.343,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0015.8,
+$TSMES,27/11/13,09:34:44.541,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0021.0,
+$TSMES,27/11/13,09:36:02.174,BLCAR, 0,A,1,001,NEPHNOR,0,VAT,0006.3,
+$TSMES,27/11/13,09:36:30.632,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0024.1,
+$TSMES,27/11/13,09:37:25.749,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0017.5,
+$TSMES,27/11/13,09:37:47.056,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0018.3,
+$TSMES,27/11/13,09:38:44.513,BLCAR, 0,A,1,002,TRISESM,0,VAT,0018.5,
+$TSMES,27/11/13,09:40:34.621,BLCAR, 0,A,1,002,TRISESM,0,VAT,0015.8,
+$TSMES,27/11/13,09:41:28.855,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0011.3,
+$TSMES,27/11/13,09:42:39.349,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0016.7,
+$TSMES,27/11/13,09:43:01.405,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0020.2,
+$TSMES,27/11/13,09:43:21.779,BLCAR, 0,A,1,002,TRISESM,0,VAT,0018.7,
+$TSMES,27/11/13,09:44:16.028,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0025.7,
+$TSMES,27/11/13,09:44:39.643,BLCAR, 0,A,1,002,MERLMCC,0,VAT,0017.6,
+$TSMES,27/11/13,09:45:41.310,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0015.9,
+$TSMES,27/11/13,09:46:04.181,BLCAR, 0,A,1,002,TRISESM,0,VAT,0018.0,
+$TSMES,27/11/13,09:47:00.822,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0018.1,
+$TSMES,27/11/13,09:47:25.806,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0018.0,
+$TSMES,27/11/13,09:48:25.059,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0013.1,
+$TSMES,27/11/13,09:48:47.779,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0016.4,
+$TSMES,27/11/13,09:50:25.036,BLCAR,-1,A,1,002,CLUPHAR,0,VAT,-001.8,
+$TSMES,27/11/13,09:51:02.085,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0016.5,
+$TSMES,27/11/13,09:52:08.332,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0016.2,
+$TSMES,27/11/13,09:52:34.644,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0020.6,
+$TSMES,27/11/13,09:52:57.540,BLCAR, 0,A,1,002,TRISESM,0,VAT,0016.1,
+$TSMES,27/11/13,09:53:31.676,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0018.3,
+$TSMES,27/11/13,09:54:07.781,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0021.0,
+$TSMES,27/11/13,09:55:10.374,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0018.4,
+$TSMES,27/11/13,09:55:35.859,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0018.1,
+$TSMES,27/11/13,09:56:02.545,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0014.2,
+$TSMES,27/11/13,09:57:06.900,BLCAR, 0,A,1,002,EUTRGUR,0,VAT,0013.5,
+$TSMES,27/11/13,09:57:28.821,BLCAR, 0,A,1,002,TRISESM,0,VAT,0018.3,
+$TSMES,27/11/13,09:58:35.607,BLCAR, 0,A,1,001,MERLMNG,0,VAT,0009.9,
+$TSMES,27/11/13,09:59:17.462,BLCAR, 0,A,1,001,EUTRGUR,0,VAT,0006.9,
+$TSMES,27/11/13,10:00:18.404,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0023.0,
+$TSMES,27/11/13,10:00:45.111,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0014.8,
+$TSMES,27/11/13,10:01:59.945,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0019.3,
+$TSMES,27/11/13,10:02:23.121,BLCAR, 0,A,1,002,NEPHNOR,0,VAT,0010.2,
+$TSMES,27/11/13,10:03:37.632,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0014.0,
+$TSMES,27/11/13,10:04:06.529,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0015.1,
+$TSMES,27/11/13,10:05:06.144,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0014.0,
+$TSMES,27/11/13,10:05:36.831,BLCAR, 0,A,1,002,TRISESM,0,VAT,0020.3,
+$TSMES,27/11/13,10:06:02.527,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0012.3,
+$TSMES,27/11/13,10:07:12.015,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0023.7,
+$TSMES,27/11/13,10:07:44.295,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0018.2,
+$TSMES,27/11/13,10:08:22.400,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0017.6,
+$TSMES,27/11/13,10:09:24.404,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0022.5,
+$TSMES,27/11/13,10:09:45.542,BLCAR, 0,A,1,002,TRISESM,0,VAT,0017.7,
+$TSMES,27/11/13,10:10:07.635,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0021.8,
+$TSMES,27/11/13,10:10:38.750,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0011.2,
+$TSMES,27/11/13,10:11:05.784,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0015.9,
+$TSMES,27/11/13,10:11:34.634,BLCAR, 0,A,1,002,CONGCON,0,VAT,0001.0,
+$TSMES,27/11/13,10:12:40.011,BLCAR,-1,A,1,002,RAJACLA,0,VAT,-000.1,
+$TSMES,27/11/13,10:13:08.077,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0014.8,
+$TSMES,27/11/13,10:13:35.173,BLCAR, 0,A,1,002,TRISESM,0,VAT,0012.2,
+$TSMES,27/11/13,10:13:56.456,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0020.3,
+$TSMES,27/11/13,10:14:43.589,BLCAR, 0,A,1,001,HIPPPLA,0,VAT,0002.9,
+$TSMES,27/11/13,10:15:33.096,BLCAR, 0,A,1,001,MELAAEG,P,VAT,0001.4,
+$TSMES,27/11/13,10:15:59.750,BLCAR, 0,A,1,002,MELAAEG,G,VAT,0007.8,
+$TSMES,27/11/13,10:16:28.073,BLCAR, 0,A,1,001,GADUMOR,0,VAT,0000.1,
+$TSMES,27/11/13,10:17:04.293,BLCAR, 0,A,1,001,MERLMNG,0,VAT,0007.1,
+$TSMES,27/11/13,10:17:35.174,BLCAR, 0,A,1,001,TRISMIN,0,VAT,0006.0,
+$TSMES,27/11/13,10:18:09.419,BLCAR, 0,A,1,001,MERLMNG,P,VAT,0007.4,
+$TSMES,27/11/13,10:18:41.202,BLCAR, 0,A,1,001,MERLMNG,0,VAT,0000.4,
+$TSMES,27/11/13,10:19:05.719,BLCAR, 0,A,1,002,CLUPHAR,0,VAT,0007.7,
+$TSMES,27/11/13,10:19:50.270,BLCAR, 0,A,1,001,HIPPPLA,0,VAT,0002.7,
+$TSMES,27/11/13,10:20:20.642,BLCAR, 0,A,1,002,MICRPOU,0,VAT,0010.7,
+$TSMES,27/11/13,10:20:48.724,BLCAR, 0,A,1,001,LOLIFOR,0,VAT,0002.2,
+$TSMES,27/11/13,10:21:10.768,BLCAR, 0,A,1,001,EUTRGUR,0,VAT,0004.7,
+$TSMES,27/11/13,10:21:41.022,BLCAR, 0,A,1,001,NEPHNOR,0,VAT,0006.3,
+$TSMES,27/11/13,10:22:42.411,BLCAR, 0,A,1,001,ARGESPH,0,VAT,0000.1,
+$TSMES,27/11/13,10:23:25.537,BLCAR, 0,A,1,001,TRACTRU,0,VAT,0000.1,
+$TSMES,27/11/13,10:24:06.077,BLCAR, 0,A,1,001,SCOMSCO,0,VAT,0000.4,
+$TSMES,27/11/13,10:24:34.127,BLCAR, 0,A,1,001,MAURMUE,0,VAT,0000.1,
+$TSMES,27/11/13,10:25:23.660,BLCAR, 0,A,1,001,LEPIWHI,0,VAT,0003.1,
+$TSMES,27/11/13,10:25:47.598,BLCAR, 0,A,1,002,SCYLCAN,0,VAT,0005.3,
+$TSMES,27/11/13,10:26:12.602,BLCAR, 0,A,1,002,LOPHPIS,0,VAT,0012.0,
+$TSMES,27/11/13,10:26:33.530,BLCAR, 0,A,1,003,ELEDCIR,0,VAT,0001.4,
+$TSMES,27/11/13,10:27:34.508,BLCAR, 0,A,1,003,ROSSMAC,0,VAT,0000.1,
+$TSMES,27/11/13,10:28:17.554,BLCAR, 0,A,1,001,ENCHCIM,0,VAT,0000.8,
+$TSMES,27/11/13,10:28:57.935,BLCAR, 0,A,1,001,LIMALIM,0,VAT,0000.2,
+$TSMES,27/11/13,10:29:42.251,BLCAR, 0,A,1,001,CALLMAC,0,VAT,0000.2,
+$TSMES,27/11/13,10:30:09.536,BLCAR, 0,A,1,001,CALLLYR,0,VAT,0000.8,
+$TSMES,27/11/13,10:30:59.437,BLCAR, 0,A,1,001,MICRVAR,0,VAT,0000.2,
+$TSMES,27/11/13,10:31:32.624,BLCAR, 0,A,1,001,SEPIOLZ,0,VAT,0000.2,
+$TSMES,27/11/13,10:31:59.713,BLCAR, 0,A,1,003,LOLIFOR,P,VAT,0000.1,
+$TSMES,27/11/13,10:32:34.851,BLCAR, 0,A,1,003,TODAEBL,0,VAT,0000.2,
+$TSMES,27/11/13,10:33:02.175,BLCAR, 0,A,1,002,MERLMCC,0,VAT,0013.8,
+$TSMES,27/11/13,10:35:38.377,BLCAR, 0,A,1,001,GLYPCYN,0,VAT,0000.3,
+$TSMES,27/11/13,12:04:35.575,BLCAR, 0,R0482,1,001,MERLMNG,0,VAT,0020.0,
+$TSMES,27/11/13,12:06:30.634,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.9,
+$TSMES,27/11/13,12:08:42.036,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.3,
+$TSMES,27/11/13,12:09:02.786,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0019.2,
+$TSMES,27/11/13,12:12:30.199,BLCAR, 0,R0482,1,002,MELAAEG,0,VAT,0021.9,
+$TSMES,27/11/13,12:13:14.543,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0000.0,
+$TSMES,27/11/13,12:13:35.465,BLCAR,-1,R0482,1,002,MELAAEG,0,VAT,-001.4,
+$TSMES,27/11/13,12:14:42.156,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0000.9,
+$TSMES,27/11/13,12:15:05.319,BLCAR,-1,R0482,1,002,CLUPHAR,0,VAT,-002.9,
+$TSMES,27/11/13,12:16:11.874,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0007.1,
+$TSMES,27/11/13,12:16:53.113,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0000.3,
+$TSMES,27/11/13,12:19:51.787,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0000.4,
+$TSMES,27/11/13,12:20:45.974,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.5,
+$TSMES,27/11/13,12:21:08.178,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.2,
+$TSMES,27/11/13,12:21:41.969,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0021.3,
+$TSMES,27/11/13,12:22:09.619,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0015.2,
+$TSMES,27/11/13,12:23:05.053,BLCAR, 0,R0482,1,002,MERLMNG,P,VAT,0014.7,
+$TSMES,27/11/13,12:24:17.176,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0016.4,
+$TSMES,27/11/13,12:25:25.163,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.8,
+$TSMES,27/11/13,12:27:27.892,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0017.8,
+$TSMES,27/11/13,12:27:49.775,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0017.7,
+$TSMES,27/11/13,12:28:15.701,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0007.3,
+$TSMES,27/11/13,12:32:10.843,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0018.7,
+$TSMES,27/11/13,12:34:21.824,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.6,
+$TSMES,27/11/13,12:35:28.244,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.9,
+$TSMES,27/11/13,12:35:55.232,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0018.6,
+$TSMES,27/11/13,12:36:27.381,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.9,
+$TSMES,27/11/13,12:37:02.445,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0021.9,
+$TSMES,27/11/13,12:38:17.102,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0020.9,
+$TSMES,27/11/13,12:38:39.197,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0020.5,
+$TSMES,27/11/13,12:39:55.258,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0008.8,
+$TSMES,27/11/13,12:41:15.892,BLCAR, 0,R0482,1,001,MELAAEG,P,VAT,0008.7,
+$TSMES,27/11/13,12:41:42.452,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0019.1,
+$TSMES,27/11/13,12:43:19.486,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0018.1,
+$TSMES,27/11/13,12:44:34.765,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0018.3,
+$TSMES,27/11/13,12:45:02.744,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0018.4,
+$TSMES,27/11/13,12:46:42.493,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0020.0,
+$TSMES,27/11/13,12:47:10.163,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0021.0,
+$TSMES,27/11/13,12:49:31.763,BLCAR,-1,R0482,1,002,MERLMNG,P,VAT,-002.4,
+$TSMES,27/11/13,12:50:05.748,BLCAR,-1,R0482,1,002,MELAAEG,G,VAT,-000.1,
+$TSMES,27/11/13,12:52:27.719,BLCAR,-1,R0482,1,002,MERLMNG,0,VAT,-000.2,
+$TSMES,27/11/13,12:53:38.590,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0006.6,
+$TSMES,27/11/13,12:54:05.175,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0034.3,
+$TSMES,27/11/13,12:54:57.849,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0039.3,
+$TSMES,27/11/13,12:55:38.978,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0005.0,
+$TSMES,27/11/13,12:55:58.875,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0038.0,
+$TSMES,27/11/13,12:56:58.719,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0039.8,
+$TSMES,27/11/13,12:58:00.192,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0040.2,
+$TSMES,27/11/13,12:58:59.709,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.0,
+$TSMES,27/11/13,13:00:07.669,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0042.2,
+$TSMES,27/11/13,13:00:30.038,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0040.7,
+$TSMES,27/11/13,13:00:56.621,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0042.0,
+$TSMES,27/11/13,13:01:46.953,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0039.7,
+$TSMES,27/11/13,13:02:16.623,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0042.7,
+$TSMES,27/11/13,13:03:14.387,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0008.3,
+$TSMES,27/11/13,13:03:53.935,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0041.8,
+$TSMES,27/11/13,13:04:18.682,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.8,
+$TSMES,27/11/13,13:04:44.747,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.8,
+$TSMES,27/11/13,13:06:33.303,BLCAR, 0,R0482,1,002,TRISESM,0,VAT,0037.5,
+$TSMES,27/11/13,13:07:10.083,BLCAR, 0,R0482,1,001,MERLMNG,0,VAT,0011.8,
+$TSMES,27/11/13,13:12:04.520,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0042.3,
+$TSMES,27/11/13,13:13:25.402,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.3,
+$TSMES,27/11/13,13:13:45.372,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0042.0,
+$TSMES,27/11/13,13:14:52.337,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0040.0,
+$TSMES,27/11/13,13:16:04.830,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.4,
+$TSMES,27/11/13,13:16:47.888,BLCAR, 0,R0482,1,002,MERLMNG,P,VAT,0041.0,
+$TSMES,27/11/13,13:17:10.620,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0045.5,
+$TSMES,27/11/13,13:18:21.177,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0041.8,
+$TSMES,27/11/13,13:18:46.078,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.1,
+$TSMES,27/11/13,13:20:06.454,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0008.4,
+$TSMES,27/11/13,13:20:43.587,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0040.2,
+$TSMES,27/11/13,13:21:13.460,BLCAR, 0,R0482,1,002,TRISESM,0,VAT,0035.1,
+$TSMES,27/11/13,13:21:42.160,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0043.2,
+$TSMES,27/11/13,13:22:43.729,BLCAR, 0,R0482,1,002,EUTRGUR,0,VAT,0036.9,
+$TSMES,27/11/13,13:23:05.231,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0040.3,
+$TSMES,27/11/13,13:23:34.911,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0040.9,
+$TSMES,27/11/13,13:24:11.619,BLCAR, 0,R0482,1,002,MELAAEG,0,VAT,0038.0,
+$TSMES,27/11/13,13:24:31.678,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.6,
+$TSMES,27/11/13,13:25:51.665,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0041.5,
+$TSMES,27/11/13,13:26:40.759,BLCAR, 0,R0482,1,002,EUTRGUR,0,VAT,0034.1,
+$TSMES,27/11/13,13:27:08.325,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0040.0,
+$TSMES,27/11/13,13:27:38.129,BLCAR, 0,R0482,1,002,SCYLCAN,0,VAT,0036.8,
+$TSMES,27/11/13,13:30:07.410,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0040.1,
+$TSMES,27/11/13,13:31:10.336,BLCAR, 0,R0482,1,001,EUTRGUR,0,VAT,0008.4,
+$TSMES,27/11/13,13:33:25.697,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0042.7,
+$TSMES,27/11/13,13:35:13.921,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0028.1,
+$TSMES,27/11/13,13:35:34.139,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0040.6,
+$TSMES,27/11/13,13:36:54.752,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0041.0,
+$TSMES,27/11/13,13:37:51.527,BLCAR, 0,R0482,1,002,MELAAEG,0,VAT,0039.3,
+$TSMES,27/11/13,13:38:19.527,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0041.1,
+$TSMES,27/11/13,13:39:05.751,BLCAR, 0,R0482,1,002,LOPHPIS,0,VAT,0024.2,
+$TSMES,27/11/13,13:39:33.528,BLCAR, 0,R0482,1,002,SCYLCAN,0,VAT,0024.4,
+$TSMES,27/11/13,13:39:55.322,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0037.2,
+$TSMES,27/11/13,13:40:29.179,BLCAR, 0,R0482,1,001,MERLMCC,0,VAT,0004.7,
+$TSMES,27/11/13,13:40:48.783,BLCAR, 0,R0482,1,001,SQUAACA,0,VAT,0001.8,
+$TSMES,27/11/13,13:41:11.596,BLCAR, 0,R0482,1,002,EUTRGUR,0,VAT,0036.8,
+$TSMES,27/11/13,13:41:43.833,BLCAR, 0,R0482,1,002,MELAAEG,G,VAT,0038.3,
+$TSMES,27/11/13,13:42:28.895,BLCAR, 0,R0482,1,001,MOLVMOL,0,VAT,0000.7,
+$TSMES,27/11/13,13:42:57.179,BLCAR, 0,R0482,1,001,SCOMSCO,0,VAT,0000.4,
+$TSMES,27/11/13,13:43:24.662,BLCAR, 0,R0482,1,002,CLUPHAR,0,VAT,0028.9,
+$TSMES,27/11/13,13:44:00.332,BLCAR, 0,R0482,1,001,ARGESPH,0,VAT,0001.4,
+$TSMES,27/11/13,13:44:33.512,BLCAR, 0,R0482,1,001,GLYPCYN,0,VAT,0000.3,
+$TSMES,27/11/13,13:45:01.228,BLCAR, 0,R0482,1,002,MELAAEG,P,VAT,0044.2,
+$TSMES,27/11/13,13:45:44.635,BLCAR, 0,R0482,1,001,NEPHNOR,0,VAT,0000.7,
+$TSMES,27/11/13,13:46:34.572,BLCAR, 0,R0482,1,001,MICRPOU,0,VAT,0001.5,
+$TSMES,27/11/13,13:46:58.845,BLCAR, 0,R0482,1,001,HIPPPLA,0,VAT,0006.0,
+$TSMES,27/11/13,13:47:30.185,BLCAR, 0,R0482,1,002,TRISESM,0,VAT,0027.9,
+$TSMES,27/11/13,13:48:06.934,BLCAR, 0,R0482,1,001,TRISMIN,0,VAT,0008.4,
+$TSMES,27/11/13,13:49:00.114,BLCAR, 0,R0482,1,001,ASPICUC,0,VAT,0000.3,
+$TSMES,27/11/13,13:49:22.326,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0034.3,
+$TSMES,27/11/13,13:50:00.587,BLCAR, 0,R0482,1,001,MICRKIT,0,VAT,0002.0,
+$TSMES,27/11/13,13:50:54.059,BLCAR, 0,R0482,1,001,LIMALIM,0,VAT,0000.8,
+$TSMES,27/11/13,13:51:57.928,BLCAR, 0,R0482,1,001,CALLLYR,0,VAT,0000.7,
+$TSMES,27/11/13,13:53:03.922,BLCAR, 0,R0482,1,001,LEPIWHI,0,VAT,0005.3,
+$TSMES,27/11/13,13:53:27.565,BLCAR, 0,R0482,1,001,CALLMAC,0,VAT,0000.2,
+$TSMES,27/11/13,13:53:57.947,BLCAR, 0,R0482,1,001,PLEUPLA,0,VAT,0000.8,
+$TSMES,27/11/13,13:54:15.343,BLCAR, 0,R0482,1,001,TODAEBL,0,VAT,0000.2,
+$TSMES,27/11/13,13:54:35.664,BLCAR, 0,R0482,1,001,ELEDCIR,0,VAT,0000.3,
+$TSMES,27/11/13,13:55:04.135,BLCAR, 0,R0482,1,001,TRACTRU,0,VAT,0000.7,
$TSMES,27/11/13,13:55:28.772,BLCAR, 0,R0482,1,001,LOLI-FOR,0,VAT,0001.1,
-$TSMES,27/11/13,13:56:07.647,BLCAR, 0,R0482,1,002,MERL-MNG,0,VAT,0039.5,
-$TSMES,27/11/13,13:56:47.621,BLCAR, 0,R0482,1,001,SEPI-OLZ,0,VAT,0000.1,
-$TSMES,27/11/13,13:58:31.048,BLCAR, 0,R0482,1,001,HIPP-PLA,0,VAT,0000.0,
-$TSMES,27/11/13,15:04:17.116,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0037.6,
-$TSMES,27/11/13,15:05:36.658,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.3,
-$TSMES,27/11/13,15:07:24.923,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.3,
-$TSMES,27/11/13,15:08:42.057,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.9,
-$TSMES,27/11/13,15:09:01.674,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.5,
-$TSMES,27/11/13,15:10:13.129,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.1,
-$TSMES,27/11/13,15:10:36.121,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0040.2,
-$TSMES,27/11/13,15:11:00.595,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0036.5,
-$TSMES,27/11/13,15:11:53.701,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.9,
-$TSMES,27/11/13,15:14:24.769,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.1,
-$TSMES,27/11/13,15:16:18.478,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0041.0,
-$TSMES,27/11/13,15:16:38.981,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.6,
-$TSMES,27/11/13,15:17:36.780,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0037.6,
-$TSMES,27/11/13,15:17:59.835,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0040.4,
-$TSMES,27/11/13,15:19:19.326,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0037.7,
-$TSMES,27/11/13,15:19:51.956,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.5,
-$TSMES,27/11/13,15:21:07.014,BLCAR, 0,R0483,1,002,TRIS-ESM,0,VAT,0038.8,
-$TSMES,27/11/13,15:21:35.753,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0041.0,
-$TSMES,27/11/13,15:21:57.564,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0037.9,
-$TSMES,27/11/13,15:23:13.595,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0040.8,
-$TSMES,27/11/13,15:23:44.203,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.3,
-$TSMES,27/11/13,15:25:01.382,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0038.5,
-$TSMES,27/11/13,15:25:33.850,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.7,
-$TSMES,27/11/13,15:26:40.348,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.3,
-$TSMES,27/11/13,15:27:25.003,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0041.2,
-$TSMES,27/11/13,15:27:52.244,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0038.6,
-$TSMES,27/11/13,15:29:15.679,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.0,
-$TSMES,27/11/13,15:29:45.429,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0041.7,
-$TSMES,27/11/13,15:31:04.254,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.1,
-$TSMES,27/11/13,15:32:48.975,BLCAR, 0,R0483,1,002,TRIS-ESM,0,VAT,0036.8,
-$TSMES,27/11/13,15:33:13.585,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.6,
-$TSMES,27/11/13,15:33:38.474,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0040.9,
-$TSMES,27/11/13,15:34:25.118,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0036.7,
-$TSMES,27/11/13,15:35:39.285,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.7,
-$TSMES,27/11/13,15:36:06.481,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.3,
-$TSMES,27/11/13,15:36:54.494,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0040.6,
-$TSMES,27/11/13,15:38:37.423,BLCAR, 0,R0483,1,002,MELA-AEG,G,VAT,0039.6,
-$TSMES,27/11/13,15:39:06.734,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.4,
-$TSMES,27/11/13,15:39:30.356,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.2,
-$TSMES,27/11/13,15:42:01.949,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.5,
-$TSMES,27/11/13,15:42:32.622,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0040.3,
-$TSMES,27/11/13,15:43:53.560,BLCAR, 0,R0483,1,002,TRIS-ESM,0,VAT,0034.4,
-$TSMES,27/11/13,15:44:53.834,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.7,
-$TSMES,27/11/13,15:45:20.674,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.5,
-$TSMES,27/11/13,15:45:42.151,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.8,
-$TSMES,27/11/13,15:46:36.631,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0038.5,
-$TSMES,27/11/13,15:47:46.081,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0041.1,
-$TSMES,27/11/13,15:48:09.796,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0036.9,
-$TSMES,27/11/13,15:49:07.011,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.1,
-$TSMES,27/11/13,15:50:20.735,BLCAR, 0,R0483,1,001,EUTR-GUR,0,VAT,0009.3,
-$TSMES,27/11/13,15:50:46.736,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0037.4,
-$TSMES,27/11/13,15:51:54.878,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0041.3,
-$TSMES,27/11/13,15:52:30.751,BLCAR, 0,R0483,1,002,TRIS-ESM,0,VAT,0035.9,
-$TSMES,27/11/13,15:53:51.579,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.5,
-$TSMES,27/11/13,15:54:27.228,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.8,
-$TSMES,27/11/13,15:55:52.975,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0041.6,
-$TSMES,27/11/13,15:56:16.404,BLCAR, 0,R0483,1,001,EUTR-GUR,0,VAT,0008.4,
-$TSMES,27/11/13,15:57:44.638,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.2,
-$TSMES,27/11/13,15:58:03.736,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.4,
-$TSMES,27/11/13,15:59:20.147,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.1,
-$TSMES,27/11/13,15:59:42.581,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0038.5,
-$TSMES,27/11/13,16:00:05.526,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0038.5,
-$TSMES,27/11/13,16:01:05.295,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.2,
-$TSMES,27/11/13,16:01:38.199,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.2,
-$TSMES,27/11/13,16:02:43.037,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.8,
-$TSMES,27/11/13,16:03:48.080,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.5,
-$TSMES,27/11/13,16:04:19.938,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.8,
-$TSMES,27/11/13,16:04:44.532,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0039.0,
-$TSMES,27/11/13,16:05:05.076,BLCAR, 0,R0483,1,002,TRIS-ESM,0,VAT,0041.1,
-$TSMES,27/11/13,16:05:28.231,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0040.5,
-$TSMES,27/11/13,16:05:46.924,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.7,
-$TSMES,27/11/13,16:06:11.887,BLCAR, 0,R0483,1,002,MELA-AEG,G,VAT,0037.8,
-$TSMES,27/11/13,16:06:29.181,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0038.5,
-$TSMES,27/11/13,16:06:52.290,BLCAR, 0,R0483,1,002,SCYL-CAN,0,VAT,0032.9,
-$TSMES,27/11/13,16:07:14.568,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0039.6,
-$TSMES,27/11/13,16:07:31.751,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0039.8,
-$TSMES,27/11/13,16:08:04.245,BLCAR, 0,R0483,1,002,LOPH-PIS,0,VAT,0030.9,
-$TSMES,27/11/13,16:08:33.424,BLCAR, 0,R0483,1,002,CONG-CON,0,VAT,0023.2,
-$TSMES,27/11/13,16:08:57.169,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0039.8,
-$TSMES,27/11/13,16:09:30.997,BLCAR, 0,R0483,1,002,LEPI-WHI,0,VAT,0024.9,
-$TSMES,27/11/13,16:10:05.148,BLCAR, 0,R0483,1,002,SCOM-SCO,0,VAT,0020.7,
-$TSMES,27/11/13,16:10:39.324,BLCAR, 0,R0483,1,001,MICR-KIT,0,VAT,0000.8,
-$TSMES,27/11/13,16:11:07.157,BLCAR, 0,R0483,1,002,MERL-MCC,0,VAT,0031.9,
-$TSMES,27/11/13,16:11:35.229,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0037.3,
-$TSMES,27/11/13,16:12:26.292,BLCAR, 0,R0483,1,002,TRIS-ESM,0,VAT,0031.0,
-$TSMES,27/11/13,16:13:21.182,BLCAR, 0,R0483,1,001,GLYP-CYN,0,VAT,0001.0,
-$TSMES,27/11/13,16:13:47.758,BLCAR, 0,R0483,1,002,CLUP-HAR,0,VAT,0027.2,
-$TSMES,27/11/13,16:14:10.075,BLCAR, 0,R0483,1,002,LOLI-FOR,0,VAT,0022.6,
-$TSMES,27/11/13,16:14:35.253,BLCAR, 0,R0483,1,001,EUTR-GUR,0,VAT,0005.6,
-$TSMES,27/11/13,16:15:22.151,BLCAR, 0,R0483,1,001,MICR-POU,0,VAT,0001.1,
-$TSMES,27/11/13,16:16:14.956,BLCAR, 0,R0483,1,001,HIPP-PLA,0,VAT,0000.2,
-$TSMES,27/11/13,16:16:52.305,BLCAR, 0,R0483,1,001,TRAC-TRU,0,VAT,0000.4,
-$TSMES,27/11/13,16:17:13.456,BLCAR, 0,R0483,1,001,SPRA-SPR,0,VAT,0000.6,
-$TSMES,27/11/13,16:17:37.593,BLCAR, 0,R0483,1,001,ARGE-SPH,0,VAT,0000.8,
-$TSMES,27/11/13,16:18:08.358,BLCAR, 0,R0483,1,001,SEPI-OLZ,0,VAT,0000.1,
-$TSMES,27/11/13,16:18:44.478,BLCAR, 0,R0483,1,001,LOLI-FOR,P,VAT,0000.3,
-$TSMES,27/11/13,16:19:19.836,BLCAR, 0,R0483,1,002,MERL-MNG,0,VAT,0038.1,
-$TSMES,27/11/13,16:19:44.016,BLCAR, 0,R0483,1,002,MELA-AEG,0,VAT,0043.0,
-$TSMES,27/11/13,16:20:12.751,BLCAR, 0,R0483,1,001,TODA-EBL,0,VAT,0000.6,
-$TSMES,27/11/13,16:21:02.469,BLCAR, 0,R0483,1,001,CALL-LYR,0,VAT,0000.2,
-$TSMES,27/11/13,16:21:25.949,BLCAR, 0,R0483,1,001,CALL-MAC,0,VAT,0000.2,
-$TSMES,27/11/13,16:21:55.232,BLCAR, 0,R0483,1,002,MERL-MNG,P,VAT,0028.0,
-$TSMES,27/11/13,16:22:21.965,BLCAR, 0,R0483,1,001,ELED-CIR,0,VAT,0001.4,
-$TSMES,27/11/13,16:22:51.628,BLCAR, 0,R0483,1,001,TRIS-MIN,0,VAT,0003.6,
-$TSMES,27/11/13,18:49:59.855,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0019.8,
-$TSMES,27/11/13,18:50:19.448,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0016.8,
-$TSMES,27/11/13,18:55:48.008,BLCAR, 0,R0484,1,001,EUTR-GUR,0,VAT,0007.6,
-$TSMES,27/11/13,18:56:34.603,BLCAR, 0,R0484,1,002,EUTR-GUR,0,VAT,0011.7,
-$TSMES,27/11/13,18:58:57.070,BLCAR, 0,R0484,1,001,EUTR-GUR,0,VAT,0007.6,
-$TSMES,27/11/13,18:59:34.603,BLCAR, 0,R0484,1,002,MELA-NGE,0,VAT,0016.4,
-$TSMES,27/11/13,19:00:53.047,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0020.9,
-$TSMES,27/11/13,19:01:17.629,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0020.0,
-$TSMES,27/11/13,19:02:01.189,BLCAR, 0,R0484,1,002,EUTR-GUR,0,VAT,0008.5,
-$TSMES,27/11/13,19:02:23.329,BLCAR, 0,R0484,1,002,MELA-NGE,0,VAT,0016.1,
-$TSMES,27/11/13,19:04:11.551,BLCAR, 0,R0484,1,002,MERL-MNG,p,VAT,0020.9,
-$TSMES,27/11/13,19:04:54.312,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0017.9,
-$TSMES,27/11/13,19:05:31.029,BLCAR, 0,R0484,1,002,MELA-NGE,0,VAT,0016.0,
-$TSMES,27/11/13,19:06:32.679,BLCAR, 0,R0484,1,002,EUTR-GUR,0,VAT,0011.3,
-$TSMES,27/11/13,19:06:59.485,BLCAR, 0,R0484,1,001,EUTR-GUR,0,VAT,0007.3,
-$TSMES,27/11/13,19:10:50.599,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0019.0,
-$TSMES,27/11/13,19:12:32.300,BLCAR, 0,R0484,1,001,EUTR-GUR,0,VAT,0008.4,
-$TSMES,27/11/13,19:13:11.765,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0020.6,
-$TSMES,27/11/13,19:13:42.494,BLCAR, 0,R0484,1,002,MERL-MNG,p,VAT,0018.7,
-$TSMES,27/11/13,19:14:34.508,BLCAR, 0,R0484,1,002,MELA-NGE,0,VAT,0015.0,
-$TSMES,27/11/13,19:18:06.846,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0011.6,
-$TSMES,27/11/13,19:19:06.548,BLCAR, 0,R0484,1,001,EUTR-GUR,0,VAT,0008.6,
-$TSMES,27/11/13,19:19:29.730,BLCAR, 0,R0484,1,002,EUTR-GUR,0,VAT,0012.4,
-$TSMES,27/11/13,19:19:53.075,BLCAR, 0,R0484,1,002,MELA-AEG,0,VAT,0005.1,
-$TSMES,27/11/13,19:20:15.873,BLCAR, 0,R0484,1,002,EUTR-GUR,0,VAT,0013.7,
-$TSMES,27/11/13,19:20:42.508,BLCAR, 0,R0484,1,001,HIPP-PLA,0,VAT,0000.5,
-$TSMES,27/11/13,19:21:14.304,BLCAR, 0,R0484,1,001,SCYL-CAN,0,VAT,0000.9,
-$TSMES,27/11/13,19:22:30.586,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0021.2,
-$TSMES,27/11/13,19:22:50.150,BLCAR, 0,R0484,1,002,MERL-MNG,0,VAT,0009.2,
-$TSMES,27/11/13,19:23:12.550,BLCAR, 0,R0484,1,002,CLUP-HAR,0,VAT,0001.6,
-$TSMES,27/11/13,19:23:38.609,BLCAR, 0,R0484,1,002,MELA-NGE,0,VAT,0005.1,
-$TSMES,27/11/13,19:24:07.337,BLCAR, 0,R0484,1,001,MERL-MCC,0,VAT,0000.5,
-$TSMES,27/11/13,19:24:36.607,BLCAR, 0,R0484,1,001,HIPP-PLA,0,VAT,0001.7,
-$TSMES,27/11/13,19:25:36.793,BLCAR, 0,R0484,1,001,MICR-POU,0,VAT,0000.7,
-$TSMES,27/11/13,19:26:04.841,BLCAR, 0,R0484,1,002,MERL-MNG,p,VAT,0005.8,
-$TSMES,27/11/13,19:26:26.140,BLCAR, 0,R0484,1,001,SCOM-SCO,0,VAT,0000.0,
-$TSMES,27/11/13,19:26:47.870,BLCAR, 0,R0484,1,001,GLYP-CYN,0,VAT,0000.2,
-$TSMES,27/11/13,19:27:09.223,BLCAR, 0,R0484,1,001,TRIS-MIN,0,VAT,0000.6,
-$TSMES,27/11/13,19:27:29.741,BLCAR, 0,R0484,1,001,ARGE-SPH,0,VAT,0000.2,
-$TSMES,27/11/13,19:27:54.743,BLCAR, 0,R0484,1,001,TRAC-TRU,0,VAT,0000.2,
-$TSMES,27/11/13,19:28:15.821,BLCAR, 0,R0484,1,002,NEPH-NOR,0,VAT,0004.3,
-$TSMES,27/11/13,19:28:40.581,BLCAR, 0,R0484,1,001,SEPI-OLZ,0,VAT,0000.1,
-$TSMES,27/11/13,19:29:00.043,BLCAR, 0,R0484,1,001,LOLI-FOR,0,VAT,0000.1,
-$TSMES,27/11/13,19:29:34.076,BLCAR, 0,R0484,1,001,ROSS-MAC,0,VAT,0000.1,
-$TSMES,27/11/13,19:30:00.792,BLCAR, 0,R0484,1,001,ELED-CIR,0,VAT,0000.6,
-$TSMES,27/11/13,19:30:27.478,BLCAR, 0,R0484,1,001,TODA-EBL,0,VAT,0000.1,
+$TSMES,27/11/13,13:56:07.647,BLCAR, 0,R0482,1,002,MERLMNG,0,VAT,0039.5,
+$TSMES,27/11/13,13:56:47.621,BLCAR, 0,R0482,1,001,SEPIOLZ,0,VAT,0000.1,
+$TSMES,27/11/13,13:58:31.048,BLCAR, 0,R0482,1,001,HIPPPLA,0,VAT,0000.0,
+$TSMES,27/11/13,15:04:17.116,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0037.6,
+$TSMES,27/11/13,15:05:36.658,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.3,
+$TSMES,27/11/13,15:07:24.923,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.3,
+$TSMES,27/11/13,15:08:42.057,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.9,
+$TSMES,27/11/13,15:09:01.674,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.5,
+$TSMES,27/11/13,15:10:13.129,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.1,
+$TSMES,27/11/13,15:10:36.121,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0040.2,
+$TSMES,27/11/13,15:11:00.595,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0036.5,
+$TSMES,27/11/13,15:11:53.701,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.9,
+$TSMES,27/11/13,15:14:24.769,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.1,
+$TSMES,27/11/13,15:16:18.478,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0041.0,
+$TSMES,27/11/13,15:16:38.981,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.6,
+$TSMES,27/11/13,15:17:36.780,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0037.6,
+$TSMES,27/11/13,15:17:59.835,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0040.4,
+$TSMES,27/11/13,15:19:19.326,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0037.7,
+$TSMES,27/11/13,15:19:51.956,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.5,
+$TSMES,27/11/13,15:21:07.014,BLCAR, 0,R0483,1,002,TRISESM,0,VAT,0038.8,
+$TSMES,27/11/13,15:21:35.753,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0041.0,
+$TSMES,27/11/13,15:21:57.564,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0037.9,
+$TSMES,27/11/13,15:23:13.595,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0040.8,
+$TSMES,27/11/13,15:23:44.203,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.3,
+$TSMES,27/11/13,15:25:01.382,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0038.5,
+$TSMES,27/11/13,15:25:33.850,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.7,
+$TSMES,27/11/13,15:26:40.348,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.3,
+$TSMES,27/11/13,15:27:25.003,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0041.2,
+$TSMES,27/11/13,15:27:52.244,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0038.6,
+$TSMES,27/11/13,15:29:15.679,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.0,
+$TSMES,27/11/13,15:29:45.429,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0041.7,
+$TSMES,27/11/13,15:31:04.254,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.1,
+$TSMES,27/11/13,15:32:48.975,BLCAR, 0,R0483,1,002,TRISESM,0,VAT,0036.8,
+$TSMES,27/11/13,15:33:13.585,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.6,
+$TSMES,27/11/13,15:33:38.474,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0040.9,
+$TSMES,27/11/13,15:34:25.118,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0036.7,
+$TSMES,27/11/13,15:35:39.285,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.7,
+$TSMES,27/11/13,15:36:06.481,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.3,
+$TSMES,27/11/13,15:36:54.494,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0040.6,
+$TSMES,27/11/13,15:38:37.423,BLCAR, 0,R0483,1,002,MELAAEG,G,VAT,0039.6,
+$TSMES,27/11/13,15:39:06.734,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.4,
+$TSMES,27/11/13,15:39:30.356,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.2,
+$TSMES,27/11/13,15:42:01.949,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.5,
+$TSMES,27/11/13,15:42:32.622,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0040.3,
+$TSMES,27/11/13,15:43:53.560,BLCAR, 0,R0483,1,002,TRISESM,0,VAT,0034.4,
+$TSMES,27/11/13,15:44:53.834,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.7,
+$TSMES,27/11/13,15:45:20.674,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.5,
+$TSMES,27/11/13,15:45:42.151,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.8,
+$TSMES,27/11/13,15:46:36.631,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0038.5,
+$TSMES,27/11/13,15:47:46.081,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0041.1,
+$TSMES,27/11/13,15:48:09.796,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0036.9,
+$TSMES,27/11/13,15:49:07.011,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.1,
+$TSMES,27/11/13,15:50:20.735,BLCAR, 0,R0483,1,001,EUTRGUR,0,VAT,0009.3,
+$TSMES,27/11/13,15:50:46.736,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0037.4,
+$TSMES,27/11/13,15:51:54.878,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0041.3,
+$TSMES,27/11/13,15:52:30.751,BLCAR, 0,R0483,1,002,TRISESM,0,VAT,0035.9,
+$TSMES,27/11/13,15:53:51.579,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.5,
+$TSMES,27/11/13,15:54:27.228,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.8,
+$TSMES,27/11/13,15:55:52.975,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0041.6,
+$TSMES,27/11/13,15:56:16.404,BLCAR, 0,R0483,1,001,EUTRGUR,0,VAT,0008.4,
+$TSMES,27/11/13,15:57:44.638,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.2,
+$TSMES,27/11/13,15:58:03.736,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.4,
+$TSMES,27/11/13,15:59:20.147,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.1,
+$TSMES,27/11/13,15:59:42.581,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0038.5,
+$TSMES,27/11/13,16:00:05.526,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0038.5,
+$TSMES,27/11/13,16:01:05.295,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.2,
+$TSMES,27/11/13,16:01:38.199,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.2,
+$TSMES,27/11/13,16:02:43.037,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.8,
+$TSMES,27/11/13,16:03:48.080,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.5,
+$TSMES,27/11/13,16:04:19.938,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.8,
+$TSMES,27/11/13,16:04:44.532,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0039.0,
+$TSMES,27/11/13,16:05:05.076,BLCAR, 0,R0483,1,002,TRISESM,0,VAT,0041.1,
+$TSMES,27/11/13,16:05:28.231,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0040.5,
+$TSMES,27/11/13,16:05:46.924,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.7,
+$TSMES,27/11/13,16:06:11.887,BLCAR, 0,R0483,1,002,MELAAEG,G,VAT,0037.8,
+$TSMES,27/11/13,16:06:29.181,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0038.5,
+$TSMES,27/11/13,16:06:52.290,BLCAR, 0,R0483,1,002,SCYLCAN,0,VAT,0032.9,
+$TSMES,27/11/13,16:07:14.568,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0039.6,
+$TSMES,27/11/13,16:07:31.751,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0039.8,
+$TSMES,27/11/13,16:08:04.245,BLCAR, 0,R0483,1,002,LOPHPIS,0,VAT,0030.9,
+$TSMES,27/11/13,16:08:33.424,BLCAR, 0,R0483,1,002,CONGCON,0,VAT,0023.2,
+$TSMES,27/11/13,16:08:57.169,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0039.8,
+$TSMES,27/11/13,16:09:30.997,BLCAR, 0,R0483,1,002,LEPIWHI,0,VAT,0024.9,
+$TSMES,27/11/13,16:10:05.148,BLCAR, 0,R0483,1,002,SCOMSCO,0,VAT,0020.7,
+$TSMES,27/11/13,16:10:39.324,BLCAR, 0,R0483,1,001,MICRKIT,0,VAT,0000.8,
+$TSMES,27/11/13,16:11:07.157,BLCAR, 0,R0483,1,002,MERLMCC,0,VAT,0031.9,
+$TSMES,27/11/13,16:11:35.229,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0037.3,
+$TSMES,27/11/13,16:12:26.292,BLCAR, 0,R0483,1,002,TRISESM,0,VAT,0031.0,
+$TSMES,27/11/13,16:13:21.182,BLCAR, 0,R0483,1,001,GLYPCYN,0,VAT,0001.0,
+$TSMES,27/11/13,16:13:47.758,BLCAR, 0,R0483,1,002,CLUPHAR,0,VAT,0027.2,
+$TSMES,27/11/13,16:14:10.075,BLCAR, 0,R0483,1,002,LOLIFOR,0,VAT,0022.6,
+$TSMES,27/11/13,16:14:35.253,BLCAR, 0,R0483,1,001,EUTRGUR,0,VAT,0005.6,
+$TSMES,27/11/13,16:15:22.151,BLCAR, 0,R0483,1,001,MICRPOU,0,VAT,0001.1,
+$TSMES,27/11/13,16:16:14.956,BLCAR, 0,R0483,1,001,HIPPPLA,0,VAT,0000.2,
+$TSMES,27/11/13,16:16:52.305,BLCAR, 0,R0483,1,001,TRACTRU,0,VAT,0000.4,
+$TSMES,27/11/13,16:17:13.456,BLCAR, 0,R0483,1,001,SPRASPR,0,VAT,0000.6,
+$TSMES,27/11/13,16:17:37.593,BLCAR, 0,R0483,1,001,ARGESPH,0,VAT,0000.8,
+$TSMES,27/11/13,16:18:08.358,BLCAR, 0,R0483,1,001,SEPIOLZ,0,VAT,0000.1,
+$TSMES,27/11/13,16:18:44.478,BLCAR, 0,R0483,1,001,LOLIFOR,P,VAT,0000.3,
+$TSMES,27/11/13,16:19:19.836,BLCAR, 0,R0483,1,002,MERLMNG,0,VAT,0038.1,
+$TSMES,27/11/13,16:19:44.016,BLCAR, 0,R0483,1,002,MELAAEG,0,VAT,0043.0,
+$TSMES,27/11/13,16:20:12.751,BLCAR, 0,R0483,1,001,TODAEBL,0,VAT,0000.6,
+$TSMES,27/11/13,16:21:02.469,BLCAR, 0,R0483,1,001,CALLLYR,0,VAT,0000.2,
+$TSMES,27/11/13,16:21:25.949,BLCAR, 0,R0483,1,001,CALLMAC,0,VAT,0000.2,
+$TSMES,27/11/13,16:21:55.232,BLCAR, 0,R0483,1,002,MERLMNG,P,VAT,0028.0,
+$TSMES,27/11/13,16:22:21.965,BLCAR, 0,R0483,1,001,ELEDCIR,0,VAT,0001.4,
+$TSMES,27/11/13,16:22:51.628,BLCAR, 0,R0483,1,001,TRISMIN,0,VAT,0003.6,
+$TSMES,27/11/13,18:49:59.855,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0019.8,
+$TSMES,27/11/13,18:50:19.448,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0016.8,
+$TSMES,27/11/13,18:55:48.008,BLCAR, 0,R0484,1,001,EUTRGUR,0,VAT,0007.6,
+$TSMES,27/11/13,18:56:34.603,BLCAR, 0,R0484,1,002,EUTRGUR,0,VAT,0011.7,
+$TSMES,27/11/13,18:58:57.070,BLCAR, 0,R0484,1,001,EUTRGUR,0,VAT,0007.6,
+$TSMES,27/11/13,18:59:34.603,BLCAR, 0,R0484,1,002,MELANGE,0,VAT,0016.4,
+$TSMES,27/11/13,19:00:53.047,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0020.9,
+$TSMES,27/11/13,19:01:17.629,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0020.0,
+$TSMES,27/11/13,19:02:01.189,BLCAR, 0,R0484,1,002,EUTRGUR,0,VAT,0008.5,
+$TSMES,27/11/13,19:02:23.329,BLCAR, 0,R0484,1,002,MELANGE,0,VAT,0016.1,
+$TSMES,27/11/13,19:04:11.551,BLCAR, 0,R0484,1,002,MERLMNG,p,VAT,0020.9,
+$TSMES,27/11/13,19:04:54.312,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0017.9,
+$TSMES,27/11/13,19:05:31.029,BLCAR, 0,R0484,1,002,MELANGE,0,VAT,0016.0,
+$TSMES,27/11/13,19:06:32.679,BLCAR, 0,R0484,1,002,EUTRGUR,0,VAT,0011.3,
+$TSMES,27/11/13,19:06:59.485,BLCAR, 0,R0484,1,001,EUTRGUR,0,VAT,0007.3,
+$TSMES,27/11/13,19:10:50.599,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0019.0,
+$TSMES,27/11/13,19:12:32.300,BLCAR, 0,R0484,1,001,EUTRGUR,0,VAT,0008.4,
+$TSMES,27/11/13,19:13:11.765,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0020.6,
+$TSMES,27/11/13,19:13:42.494,BLCAR, 0,R0484,1,002,MERLMNG,p,VAT,0018.7,
+$TSMES,27/11/13,19:14:34.508,BLCAR, 0,R0484,1,002,MELANGE,0,VAT,0015.0,
+$TSMES,27/11/13,19:18:06.846,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0011.6,
+$TSMES,27/11/13,19:19:06.548,BLCAR, 0,R0484,1,001,EUTRGUR,0,VAT,0008.6,
+$TSMES,27/11/13,19:19:29.730,BLCAR, 0,R0484,1,002,EUTRGUR,0,VAT,0012.4,
+$TSMES,27/11/13,19:19:53.075,BLCAR, 0,R0484,1,002,MELAAEG,0,VAT,0005.1,
+$TSMES,27/11/13,19:20:15.873,BLCAR, 0,R0484,1,002,EUTRGUR,0,VAT,0013.7,
+$TSMES,27/11/13,19:20:42.508,BLCAR, 0,R0484,1,001,HIPPPLA,0,VAT,0000.5,
+$TSMES,27/11/13,19:21:14.304,BLCAR, 0,R0484,1,001,SCYLCAN,0,VAT,0000.9,
+$TSMES,27/11/13,19:22:30.586,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0021.2,
+$TSMES,27/11/13,19:22:50.150,BLCAR, 0,R0484,1,002,MERLMNG,0,VAT,0009.2,
+$TSMES,27/11/13,19:23:12.550,BLCAR, 0,R0484,1,002,CLUPHAR,0,VAT,0001.6,
+$TSMES,27/11/13,19:23:38.609,BLCAR, 0,R0484,1,002,MELANGE,0,VAT,0005.1,
+$TSMES,27/11/13,19:24:07.337,BLCAR, 0,R0484,1,001,MERLMCC,0,VAT,0000.5,
+$TSMES,27/11/13,19:24:36.607,BLCAR, 0,R0484,1,001,HIPPPLA,0,VAT,0001.7,
+$TSMES,27/11/13,19:25:36.793,BLCAR, 0,R0484,1,001,MICRPOU,0,VAT,0000.7,
+$TSMES,27/11/13,19:26:04.841,BLCAR, 0,R0484,1,002,MERLMNG,p,VAT,0005.8,
+$TSMES,27/11/13,19:26:26.140,BLCAR, 0,R0484,1,001,SCOMSCO,0,VAT,0000.0,
+$TSMES,27/11/13,19:26:47.870,BLCAR, 0,R0484,1,001,GLYPCYN,0,VAT,0000.2,
+$TSMES,27/11/13,19:27:09.223,BLCAR, 0,R0484,1,001,TRISMIN,0,VAT,0000.6,
+$TSMES,27/11/13,19:27:29.741,BLCAR, 0,R0484,1,001,ARGESPH,0,VAT,0000.2,
+$TSMES,27/11/13,19:27:54.743,BLCAR, 0,R0484,1,001,TRACTRU,0,VAT,0000.2,
+$TSMES,27/11/13,19:28:15.821,BLCAR, 0,R0484,1,002,NEPHNOR,0,VAT,0004.3,
+$TSMES,27/11/13,19:28:40.581,BLCAR, 0,R0484,1,001,SEPIOLZ,0,VAT,0000.1,
+$TSMES,27/11/13,19:29:00.043,BLCAR, 0,R0484,1,001,LOLIFOR,0,VAT,0000.1,
+$TSMES,27/11/13,19:29:34.076,BLCAR, 0,R0484,1,001,ROSSMAC,0,VAT,0000.1,
+$TSMES,27/11/13,19:30:00.792,BLCAR, 0,R0484,1,001,ELEDCIR,0,VAT,0000.6,
+$TSMES,27/11/13,19:30:27.478,BLCAR, 0,R0484,1,001,TODAEBL,0,VAT,0000.1,
Added: branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.car
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.car (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.car 2014-05-05 13:31:26 UTC (rev 1747)
@@ -0,0 +1,8 @@
+$TSMES,27/11/13,09:12:04.612,BLCAR, 0,A,1,002,MERL-MNG,0,VAT,0015.6,
+$TSMES,27/11/13,09:13:21.994,BLCAR, 0,A,1,002,MERLMNG,0,VAT,0018.9,
+$TSMES,27/11/13,09:15:12.588,BLCAR, 0,A,1,002,ACAN-PEL,0,VAT,0021.4,
+$TSMES,27/11/13,09:15:58.396,BLCAR, 0,A,1,002,ACANPEL,0,VAT,0017.9,
+$TSMES,27/11/13,09:17:11.714,BLCAR, 0,A,1,002,ACANPAL,0,VAT,0017.2,
+$TSMES,27/11/13,09:17:40.272,BLCAR, 0,A,1,002,ACAN-PAL,0,VAT,0021.1,
+$TSMES,27/11/13,09:18:48.818,BLCAR, 0,A,1,002,ASRNATL,0,VAT,0018.0,
+$TSMES,27/11/13,09:19:33.335,BLCAR, 0,A,1,002,ASRN-ATL,0,VAT,0016.6,
\ No newline at end of file
Added: branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.tnk
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.tnk (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.tnk 2014-05-05 13:31:26 UTC (rev 1747)
@@ -0,0 +1,149 @@
+$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,
+$TSMES,27/11/13,12:02:28.762,BLTNK, 0,R0482,1,VAT,0043.5,
+$TSMES,27/11/13,12:04:44.125,BLTNK, 0,R0482,1,VAT,0046.8,
+$TSMES,27/11/13,12:06:40.650,BLTNK, 0,R0482,1,VAT,0043.0,
+$TSMES,27/11/13,12:07:46.288,BLTNK, 0,R0482,1,VAT,0045.0,
+$TSMES,27/11/13,12:09:09.246,BLTNK, 0,R0482,1,VAT,0043.3,
+$TSMES,27/11/13,12:10:12.001,BLTNK, 0,R0482,1,VAT,0042.6,
+$TSMES,27/11/13,12:11:21.956,BLTNK, 0,R0482,1,VAT,0044.0,
+$TSMES,27/11/13,12:13:43.666,BLTNK,-1,R0482,1,VAT,0045.2,
+$TSMES,27/11/13,12:15:11.401,BLTNK,-1,R0482,1,VAT,0043.5,
+$TSMES,27/11/13,12:16:59.327,BLTNK, 0,R0482,1,VAT,0045.3,
+$TSMES,27/11/13,12:23:10.921,BLTNK, 0,R0482,1,VAT,0043.8,
+$TSMES,27/11/13,12:25:31.204,BLTNK, 0,R0482,1,VAT,0046.4,
+$TSMES,27/11/13,12:26:34.685,BLTNK, 0,R0482,1,VAT,0046.1,
+$TSMES,27/11/13,12:28:25.995,BLTNK, 0,R0482,1,VAT,0046.0,
+$TSMES,27/11/13,12:32:28.875,BLTNK, 0,R0482,1,VAT,0046.0,
+$TSMES,27/11/13,12:34:31.332,BLTNK, 0,R0482,1,VAT,0050.7,
+$TSMES,27/11/13,12:37:08.304,BLTNK, 0,R0482,1,VAT,0045.2,
+$TSMES,27/11/13,12:38:45.284,BLTNK, 0,R0482,1,VAT,0043.0,
+$TSMES,27/11/13,12:40:05.862,BLTNK, 0,R0482,1,VAT,0044.6,
+$TSMES,27/11/13,12:41:48.358,BLTNK, 0,R0482,1,VAT,0046.3,
+$TSMES,27/11/13,12:43:25.952,BLTNK, 0,R0482,1,VAT,0046.3,
+$TSMES,27/11/13,12:45:08.656,BLTNK, 0,R0482,1,VAT,0048.0,
+$TSMES,27/11/13,12:47:16.330,BLTNK, 0,R0482,1,VAT,0045.6,
+$TSMES,27/11/13,12:50:11.853,BLTNK,-1,R0482,1,VAT,0046.4,
+$TSMES,27/11/13,12:54:11.280,BLTNK, 0,R0482,1,VAT,0044.6,
+$TSMES,27/11/13,12:56:04.995,BLTNK, 0,R0482,1,VAT,0049.2,
+$TSMES,27/11/13,12:57:07.161,BLTNK, 0,R0482,1,VAT,0040.9,
+$TSMES,27/11/13,12:58:07.564,BLTNK, 0,R0482,1,VAT,0042.8,
+$TSMES,27/11/13,12:59:10.843,BLTNK, 0,R0482,1,VAT,0041.2,
+$TSMES,27/11/13,13:09:10.060,BLTNK, 0,R0482,1,VAT,0043.0,
+$TSMES,27/11/13,13:11:01.570,BLTNK, 0,R0482,1,VAT,0046.8,
+$TSMES,27/11/13,13:12:27.276,BLTNK, 0,R0482,1,VAT,0045.8,
+$TSMES,27/11/13,13:14:58.308,BLTNK, 0,R0482,1,VAT,0043.4,
+$TSMES,27/11/13,13:17:16.558,BLTNK, 0,R0482,1,VAT,0047.4,
+$TSMES,27/11/13,13:18:53.624,BLTNK, 0,R0482,1,VAT,0044.2,
+$TSMES,27/11/13,13:21:47.998,BLTNK, 0,R0482,1,VAT,0050.2,
+$TSMES,27/11/13,13:24:51.176,BLTNK, 0,R0482,1,VAT,0047.4,
+$TSMES,27/11/13,13:27:50.882,BLTNK, 0,R0482,1,VAT,0045.6,
+$TSMES,27/11/13,13:29:07.983,BLTNK, 0,R0482,1,VAT,0044.9,
+$TSMES,27/11/13,13:32:21.819,BLTNK, 0,R0482,1,VAT,0047.2,
+$TSMES,27/11/13,13:34:12.304,BLTNK, 0,R0482,1,VAT,0046.1,
+$TSMES,27/11/13,13:35:59.627,BLTNK, 0,R0482,1,VAT,0009.7,
+$TSMES,27/11/13,15:00:25.110,BLTNK, 0,R0483,1,VAT,0044.8,
+$TSMES,27/11/13,15:02:37.403,BLTNK, 0,R0483,1,VAT,0043.0,
+$TSMES,27/11/13,15:04:24.302,BLTNK, 0,R0483,1,VAT,0045.7,
+$TSMES,27/11/13,15:06:10.284,BLTNK, 0,R0483,1,VAT,0043.5,
+$TSMES,27/11/13,15:07:39.675,BLTNK, 0,R0483,1,VAT,0046.0,
+$TSMES,27/11/13,15:09:12.136,BLTNK, 0,R0483,1,VAT,0046.8,
+$TSMES,27/11/13,15:12:51.981,BLTNK, 0,R0483,1,VAT,0044.7,
+$TSMES,27/11/13,15:14:31.819,BLTNK, 0,R0483,1,VAT,0042.9,
+$TSMES,27/11/13,15:15:30.692,BLTNK, 0,R0483,1,VAT,0044.2,
+$TSMES,27/11/13,15:16:48.616,BLTNK, 0,R0483,1,VAT,0046.5,
+$TSMES,27/11/13,15:18:09.200,BLTNK, 0,R0483,1,VAT,0044.1,
+$TSMES,27/11/13,15:19:57.739,BLTNK, 0,R0483,1,VAT,0045.3,
+$TSMES,27/11/13,15:22:06.859,BLTNK, 0,R0483,1,VAT,0042.8,
+$TSMES,27/11/13,15:23:50.486,BLTNK, 0,R0483,1,VAT,0044.3,
+$TSMES,27/11/13,15:25:40.151,BLTNK, 0,R0483,1,VAT,0042.1,
+$TSMES,27/11/13,15:27:58.998,BLTNK, 0,R0483,1,VAT,0043.2,
+$TSMES,27/11/13,15:29:58.390,BLTNK, 0,R0483,1,VAT,0045.9,
+$TSMES,27/11/13,15:31:36.691,BLTNK, 0,R0483,1,VAT,0045.8,
+$TSMES,27/11/13,15:34:30.965,BLTNK, 0,R0483,1,VAT,0041.5,
+$TSMES,27/11/13,15:37:02.307,BLTNK, 0,R0483,1,VAT,0047.2,
+$TSMES,27/11/13,15:39:44.502,BLTNK, 0,R0483,1,VAT,0047.8,
+$TSMES,27/11/13,15:42:40.825,BLTNK, 0,R0483,1,VAT,0043.4,
+$TSMES,27/11/13,15:43:59.669,BLTNK, 0,R0483,1,VAT,0041.2,
+$TSMES,27/11/13,15:45:48.106,BLTNK, 0,R0483,1,VAT,0045.1,
+$TSMES,27/11/13,15:46:57.635,BLTNK, 0,R0483,1,VAT,0044.1,
+$TSMES,27/11/13,15:48:15.557,BLTNK, 0,R0483,1,VAT,0042.8,
+$TSMES,27/11/13,15:49:27.850,BLTNK, 0,R0483,1,VAT,0043.6,
+$TSMES,27/11/13,15:50:53.655,BLTNK, 0,R0483,1,VAT,0045.9,
+$TSMES,27/11/13,15:52:37.073,BLTNK, 0,R0483,1,VAT,0045.6,
+$TSMES,27/11/13,15:54:32.985,BLTNK, 0,R0483,1,VAT,0045.9,
+$TSMES,27/11/13,15:56:22.345,BLTNK, 0,R0483,1,VAT,0045.1,
+$TSMES,27/11/13,15:58:09.594,BLTNK, 0,R0483,1,VAT,0047.0,
+$TSMES,27/11/13,16:00:11.605,BLTNK, 0,R0483,1,VAT,0049.6,
+$TSMES,27/11/13,16:01:44.993,BLTNK, 0,R0483,1,VAT,0048.7,
+$TSMES,27/11/13,16:02:59.022,BLTNK, 0,R0483,1,VAT,0002.0,
+$TSMES,27/11/13,17:07:25.365,BLTNK, 0,X0001,1,VAT,0004.9,
+$TSMES,27/11/13,17:07:55.368,BLTNK, 0,X0001,1,VAT,0008.1,
+$TSMES,27/11/13,17:08:34.277,BLTNK, 0,X0001,1,VAT,0010.7,
+$TSMES,27/11/13,17:09:20.254,BLTNK, 0,X0001,1,VAT,0010.8,
+$TSMES,27/11/13,17:10:02.032,BLTNK, 0,X0001,1,VAT,0010.1,
+$TSMES,27/11/13,17:24:37.302,BLTNK, 0,X0002,1,VAT,0007.1,
+$TSMES,27/11/13,17:30:28.420,BLTNK, 0,R0484,1,VAT,0046.9,
+$TSMES,27/11/13,17:31:39.582,BLTNK, 0,R0484,1,VNT,0048.7,
+$TSMES,27/11/13,18:25:31.485,BLTNK,-1,R0484,1,VNT,-000.1,
+$TSMES,27/11/13,18:36:52.526,BLTNK, 0,R0484,1,VNT,0050.7,
+$TSMES,27/11/13,18:40:06.918,BLTNK, 0,R0484,1,VAT,0052.3,
+$TSMES,27/11/13,18:41:09.838,BLTNK, 0,R0484,1,VNT,0042.8,
+$TSMES,27/11/13,18:42:25.816,BLTNK, 0,R0484,1,VNT,0041.2,
+$TSMES,27/11/13,18:43:31.552,BLTNK, 0,R0484,1,VNT,0044.4,
+$TSMES,27/11/13,18:44:40.157,BLTNK, 0,R0484,1,VAT,0044.9,
+$TSMES,27/11/13,18:46:01.666,BLTNK, 0,R0484,1,VNT,0055.3,
+$TSMES,27/11/13,18:46:46.412,BLTNK, 0,R0484,1,VNT,0045.8,
+$TSMES,27/11/13,18:47:39.146,BLTNK, 0,R0484,1,VNT,0045.1,
+$TSMES,27/11/13,18:48:38.741,BLTNK, 0,R0484,1,VAT,0045.6,
+$TSMES,27/11/13,18:50:46.533,BLTNK, 0,R0484,1,VNT,0044.5,
+$TSMES,27/11/13,18:51:31.485,BLTNK, 0,R0484,1,VNT,0043.6,
+$TSMES,27/11/13,18:52:15.619,BLTNK, 0,R0484,1,VNT,0045.1,
+$TSMES,27/11/13,18:53:01.588,BLTNK, 0,R0484,1,VAT,0046.7,
+$TSMES,27/11/13,18:54:15.725,BLTNK, 0,R0484,1,VNT,0045.1,
+$TSMES,27/11/13,18:55:55.559,BLTNK, 0,R0484,1,VNT,0045.7,
+$TSMES,27/11/13,18:56:41.434,BLTNK, 0,R0484,1,VNT,0047.9,
+$TSMES,27/11/13,18:59:41.649,BLTNK, 0,R0484,1,VAT,0045.3,
+$TSMES,27/11/13,19:01:24.349,BLTNK, 0,R0484,1,VNT,0047.0,
+$TSMES,27/11/13,19:02:31.112,BLTNK, 0,R0484,1,VNT,0045.2,
+$TSMES,27/11/13,19:04:19.036,BLTNK, 0,R0484,1,VNT,0045.3,
+$TSMES,27/11/13,19:05:39.010,BLTNK, 0,R0484,1,VAT,0048.6,
+$TSMES,27/11/13,19:07:07.066,BLTNK, 0,R0484,1,VNT,0049.1,
+$TSMES,27/11/13,19:07:47.001,BLTNK, 0,R0484,1,VNT,0042.7,
+$TSMES,27/11/13,19:08:31.646,BLTNK, 0,R0484,1,VNT,0046.7,
+$TSMES,27/11/13,19:09:18.030,BLTNK, 0,R0484,1,VAT,0046.4,
+$TSMES,27/11/13,19:10:11.686,BLTNK, 0,R0484,1,VNT,0048.0,
+$TSMES,27/11/13,19:10:57.668,BLTNK, 0,R0484,1,VNT,0045.6,
+$TSMES,27/11/13,19:11:44.968,BLTNK, 0,R0484,1,VNT,0048.1,
+$TSMES,27/11/13,19:15:02.592,BLTNK, 0,R0484,1,VAT,0040.2,
+$TSMES,27/11/13,19:16:20.308,BLTNK, 0,R0484,1,VNT,0003.7,
Added: 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/ano-5032.tuttiProtocol (rev 0)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/pupitri/ano-5032.tuttiProtocol 2014-05-05 13:31:26 UTC (rev 1747)
@@ -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