Author: blavenier Date: 2013-02-01 17:39:00 +0100 (Fri, 01 Feb 2013) New Revision: 294 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/294 Log: - Fix on SpeciesBatch.sampleCategoryValue : if qualitative value, the UI need a CaracteristicQualitativeValue and not an Integer or a String Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceTest.java Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-02-01 16:37:18 UTC (rev 293) +++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-02-01 16:39:00 UTC (rev 294) @@ -61,7 +61,9 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.service.measure.MeasurementPersistenceHelper; @@ -233,13 +235,15 @@ @Override public List<SpeciesBatchFrequency> getAllSpeciesBatchFrequency( String speciesBatchId) { - return null; + List<SpeciesBatchFrequency> results = Lists.newArrayList(); + // TODO + return results; } @Override public List<SpeciesBatchFrequency> saveSpeciesBatchFrequency( String speciesBatchId, List<SpeciesBatchFrequency> frequencies) { - return null; + return frequencies; } // ------------------------------------------------------------------------// @@ -447,13 +451,12 @@ Integer qvValue = (Integer)source[colIndex++]; Float numValue = (Float)source[colIndex++]; String alphaValue = (String)source[colIndex++]; - Serializable value = (qvValue!=null)?qvValue.toString():((numValue!=null)?numValue:alphaValue); // Species Integer referenceTaxonId = (Integer)source[colIndex++]; if (referenceTaxonId !=null) { - Species species = new Species(); - species.setId(referenceTaxonId.toString()); + // TODO : add cache on getSpecies + Species species = referentialService.getSpecies(referenceTaxonId.toString()); result.setSpecies(species); } @@ -461,19 +464,15 @@ Integer pmfmIdGrandFather = (Integer)source[colIndex++]; Integer qualitativeIdGrandFather = (Integer)source[colIndex++]; - if (pmfmId != null && value != null) { - SampleCategoryEnum sampleCategory = measurementHelper.pmfmId2SampleCategory(pmfmId); - result.setSampleCategoryType(sampleCategory); - result.setSampleCategoryValue(value); + if (pmfmId != null) { + setSampleCategoryQualitative(result, pmfmId, numValue, alphaValue, qvValue); } - // When no sorting measurement found, retrieve the sorted/unsorted from an ancestor batch else { if (referenceTaxonId != null && enumeration.PMFM_ID_SORTED_UNSORTED.equals(pmfmIdGrandFather) && qualitativeIdGrandFather != null){ - result.setSampleCategoryType(SampleCategoryEnum.sortedUnsorted); - result.setSampleCategoryValue(qualitativeIdGrandFather.toString()); + setSampleCategoryQualitative(result, pmfmIdGrandFather, null, null, qualitativeIdGrandFather); } else { // TODO TC : manage this exception in the UI => 'format des captures incompatibles avec tutti...' @@ -529,6 +528,37 @@ } return qualitativeValueId; } + + protected void setSampleCategoryQualitative(SpeciesBatch target, Integer pmfmId, Float numericalvalue, String alphanumericalValue, Integer qualitativeValueId) { + if (pmfmId == null) { + return; + } + SampleCategoryEnum sampleCategory = measurementHelper.pmfmId2SampleCategory(pmfmId); + target.setSampleCategoryType(sampleCategory); + if (numericalvalue != null) { + target.setSampleCategoryValue(numericalvalue); + return; + } + if (alphanumericalValue != null) { + target.setSampleCategoryValue(alphanumericalValue); + return; + } + + Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId); + if (caracteristic == null || caracteristic.getCaracteristicType() != CaracteristicType.QUALITATIVE) { + return; + } + CaracteristicQualitativeValue value = null; + for (Iterator iterator = caracteristic.getQualitativeValue().iterator(); iterator + .hasNext();) { + CaracteristicQualitativeValue qv = (CaracteristicQualitativeValue) iterator.next(); + if (qualitativeValueId.intValue() == Integer.parseInt(qv.getId())) { + value = qv; + break; + } + } + target.setSampleCategoryValue(value); + } protected void removeAllChildrenBatchs(Integer batchId, List<SortingBatch> result) { Iterator<Integer> list = queryListTyped("speciesBatchChildren", Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java =================================================================== --- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java 2013-02-01 16:37:18 UTC (rev 293) +++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java 2013-02-01 16:39:00 UTC (rev 294) @@ -56,6 +56,7 @@ import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType; import fr.ifremer.tutti.persistence.service.AbstractPersistenceService; import fr.ifremer.tutti.persistence.service.ReferentialPersistenceService; @@ -138,9 +139,13 @@ } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) { Integer qvId = null; - if (value instanceof Integer) { + if (value instanceof CaracteristicQualitativeValue) { + qvId = Integer.valueOf(((CaracteristicQualitativeValue)value).getId()); + } + else if (value instanceof Integer) { qvId = (Integer)value; } + // TODO BL : not used ? => to remove else { qvId = Integer.valueOf(value.toString()); } Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceTest.java =================================================================== --- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceTest.java 2013-02-01 16:37:18 UTC (rev 293) +++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceTest.java 2013-02-01 16:39:00 UTC (rev 294) @@ -36,6 +36,7 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; 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.junit.Before; @@ -67,14 +68,14 @@ protected CatchBatch catchBacth; protected List<Species> species; protected Caracteristic sortedUnsortedPMFM; - protected String horsVracQualitativeValueId; - protected String vracQualitativeValueId; + protected CaracteristicQualitativeValue horsVracQualitativeValue; + protected CaracteristicQualitativeValue vracQualitativeValue; protected Caracteristic maturityPMFM; - protected String firstMaturityQualitativeValueId; + protected CaracteristicQualitativeValue firstMaturityQualitativeValue; protected Caracteristic sexPMFM; - protected String maleQualitativeValueId; - protected String femaleQualitativeValueId; - protected String unkQualitativeValueId; + protected CaracteristicQualitativeValue maleQualitativeValue; + protected CaracteristicQualitativeValue femaleQualitativeValue; + protected CaracteristicQualitativeValue unkQualitativeValue; protected String speciesBacthId = null; @@ -123,14 +124,14 @@ assertTrue(species.size() > 2); sortedUnsortedPMFM = referentialService.getSortedUnsortedCaracteristic(); - horsVracQualitativeValueId = sortedUnsortedPMFM.getQualitativeValue(0).getId(); - vracQualitativeValueId = sortedUnsortedPMFM.getQualitativeValue(1).getId(); + horsVracQualitativeValue = sortedUnsortedPMFM.getQualitativeValue(0); + vracQualitativeValue = sortedUnsortedPMFM.getQualitativeValue(1); maturityPMFM = referentialService.getMaturityCaracteristic(); - firstMaturityQualitativeValueId = maturityPMFM.getQualitativeValue(0).getId(); + firstMaturityQualitativeValue = maturityPMFM.getQualitativeValue(0); sexPMFM = referentialService.getSexCaracteristic(); - maleQualitativeValueId = sexPMFM.getQualitativeValue(1).getId(); - femaleQualitativeValueId = sexPMFM.getQualitativeValue(2).getId(); - unkQualitativeValueId = sexPMFM.getQualitativeValue(3).getId(); + maleQualitativeValue = sexPMFM.getQualitativeValue(1); + femaleQualitativeValue = sexPMFM.getQualitativeValue(2); + unkQualitativeValue = sexPMFM.getQualitativeValue(3); } @Test @@ -152,7 +153,7 @@ //batch.setCatchBatch(catchBatch); batch.setSpecies(taxon1); batch.setSampleCategoryType(SampleCategoryEnum.sortedUnsorted); - batch.setSampleCategoryValue(vracQualitativeValueId); + batch.setSampleCategoryValue(vracQualitativeValue); batch.setWeight(5f); assertCreateAndReloadSpeciesBatch(batch, null); @@ -171,7 +172,7 @@ batch.setComment("ESP1 - Vrac/5 Male/2 ss-ech/1 Nombre/7"); batch.setWeight(2f); batch.setSampleCategoryType(SampleCategoryEnum.sex); - batch.setSampleCategoryValue(maleQualitativeValueId); + batch.setSampleCategoryValue(maleQualitativeValue); batch.setSampleCategoryWeight(1f); batch.setNumber(7); @@ -188,7 +189,7 @@ batch.setComment("ESP1 - Vrac/5 Female/3 Nombre/14"); batch.setWeight(3f); batch.setSampleCategoryType(SampleCategoryEnum.sex); - batch.setSampleCategoryValue(femaleQualitativeValueId); + batch.setSampleCategoryValue(femaleQualitativeValue); batch.setSampleCategoryWeight(null); batch.setNumber(14); @@ -205,7 +206,7 @@ //batch.setCatchBatch(catchBatch); batch.setSpecies(taxon2); batch.setSampleCategoryType(SampleCategoryEnum.sortedUnsorted); - batch.setSampleCategoryValue(vracQualitativeValueId); + batch.setSampleCategoryValue(vracQualitativeValue); batch.setWeight(7f); assertCreateAndReloadSpeciesBatch(batch, null); @@ -218,7 +219,7 @@ batch.setSpecies(taxon1); batch.setComment("ESP2 - Vrac/7 UNK/2 ss-ech/1 Nombre/11"); batch.setSampleCategoryType(SampleCategoryEnum.maturity); - batch.setSampleCategoryValue(firstMaturityQualitativeValueId); + batch.setSampleCategoryValue(firstMaturityQualitativeValue); batch.setWeight(2f); batch.setSampleCategoryWeight(1f); batch.setNumber(11); @@ -230,7 +231,7 @@ // ----------------------------------------------------------------------------- // Batch : ESP2 - Vrac/7 UNK/1.75 ss-ech/1.11 Nombre/99 batch.setSampleCategoryType(SampleCategoryEnum.sex); - batch.setSampleCategoryValue(unkQualitativeValueId); + batch.setSampleCategoryValue(unkQualitativeValue); batch.setComment("ESP2 - Vrac/7 UNK/1.75 ss-ech/1.11 Nombre/99"); batch.setWeight(1.75f); batch.setSampleCategoryWeight(1.11f); @@ -299,7 +300,7 @@ batch.setFishingOperation(fishingOperation); batch.setSpecies(taxon1); batch.setSampleCategoryType(SampleCategoryEnum.sortedUnsorted); - batch.setSampleCategoryValue(vracQualitativeValueId); + batch.setSampleCategoryValue(vracQualitativeValue); batch.setWeight(5f); assertCreateAndReloadSpeciesBatch(batch, null); esp1Batch = batch; @@ -310,7 +311,7 @@ batch.setFishingOperation(fishingOperation); batch.setSpecies(taxon1); batch.setSampleCategoryType(SampleCategoryEnum.sex); - batch.setSampleCategoryValue(maleQualitativeValueId); + batch.setSampleCategoryValue(maleQualitativeValue); batch.setWeight(2f); assertCreateAndReloadSpeciesBatch(batch, esp1Batch.getId());