Author: tchemit Date: 2013-03-11 09:20:29 +0100 (Mon, 11 Mar 2013) New Revision: 570 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/570 Log: fixes #2113: [REFERENTIEL] Probl?\195?\168me de chargement d'une caract?\195?\169ristique fix some persistence tests (list are not modifiables when coming from service) Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BatchPersistenceServiceWriteTest.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-03-09 17:49:45 UTC (rev 569) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-03-11 08:20:29 UTC (rev 570) @@ -508,13 +508,18 @@ Caracteristic result = thisService.getCaracteristic(pmfmId); // Search the qualitative value to skip - for (CaracteristicQualitativeValue qv : result.getQualitativeValue()) { - if (qv != null && qv.getId() != null - && enumeration.QUALITATIVE_UNSORTED_ID.equals(Integer.valueOf(qv.getId()))) { - result.removeQualitativeValue(qv); + //FIXME-TC How can this works with cache ? result is the cached instance, so we are modifing cache + List<CaracteristicQualitativeValue> qualitativeValue = + Lists.newArrayList(result.getQualitativeValue()); + Iterator<CaracteristicQualitativeValue> iterator = qualitativeValue.iterator(); + while (iterator.hasNext()) { + CaracteristicQualitativeValue qv = iterator.next(); + if (enumeration.QUALITATIVE_UNSORTED_ID.equals(Integer.valueOf(qv.getId()))) { + iterator.remove(); break; } } + result.setQualitativeValue(qualitativeValue); return result; } @@ -758,7 +763,7 @@ setStatus((fr.ifremer.adagio.core.dao.referential.Status) source2[2], target2); values.add(target2); } - result.setQualitativeValue(values); + result.setQualitativeValue(Collections.unmodifiableList(values)); } return result; } @@ -841,23 +846,4 @@ newStatus.setName(status.getName()); entity.setStatus(newStatus); } - -// @Override -// public SampleCategoryEnum getSampleCategoryByPmfmId(Integer pmfmId) { -// -// if (pmfmId == null) return null; -// SampleCategoryEnum sampleCategory = null; -// if (pmfmId.intValue() == enumeration.PMFM_ID_SORTED_UNSORTED.intValue()) { -// sampleCategory = SampleCategoryEnum.sortedUnsorted; -// } else if (enumeration.PMFM_ID_SIZE_CATEGORY.equals(pmfmId)) { -// sampleCategory = SampleCategoryEnum.size; -// } else if (enumeration.PMFM_ID_MATURITY.equals(pmfmId)) { -// sampleCategory = SampleCategoryEnum.maturity; -// } else if (enumeration.PMFM_ID_SEX.equals(pmfmId)) { -// sampleCategory = SampleCategoryEnum.sex; -// } else if (enumeration.PMFM_ID_AGE.equals(pmfmId)) { -// sampleCategory = SampleCategoryEnum.age; -// } -// return sampleCategory; -// } } Modified: trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties =================================================================== --- trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-03-09 17:49:45 UTC (rev 569) +++ trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-03-11 08:20:29 UTC (rev 570) @@ -362,7 +362,7 @@ PmfmId.WEIGHT_MEASURED=220 # TODO A creer (dans les enumerations Allegro) -# PSFM "Vaac/Hors Vrac" - "Organisation des données campagnes" +# PSFM "Vrac/Hors Vrac" - "Organisation des données campagnes" PmfmId.SORTED_UNSORTED=1428 QualitativeValueId.SORTED_VRAC=311 QualitativeValueId.SORTED_HORS_VRAC=310 Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-03-09 17:49:45 UTC (rev 569) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-03-11 08:20:29 UTC (rev 570) @@ -141,4 +141,8 @@ public String objectTypeCode() { return "BATCH"; } + + public Integer caracteristicWithNullQualitativeValue() { + return 114; + } } Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BatchPersistenceServiceWriteTest.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BatchPersistenceServiceWriteTest.java 2013-03-09 17:49:45 UTC (rev 569) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BatchPersistenceServiceWriteTest.java 2013-03-11 08:20:29 UTC (rev 570) @@ -415,7 +415,10 @@ } } // And remove the last item (should be deleted in DB) + // Note: use a new list (everything list coming from service are not modifiable) + createdFrequencies = Lists.newArrayList(createdFrequencies); createdFrequencies.remove(createdFrequencies.size() - 1); + List<SpeciesBatchFrequency> savedFrequencies = service.saveSpeciesBatchFrequency(frequenciesParentBatch.getId(), createdFrequencies); assertBatchFrequencies(createdFrequencies, savedFrequencies, true); } Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java 2013-03-09 17:49:45 UTC (rev 569) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java 2013-03-11 08:20:29 UTC (rev 570) @@ -30,6 +30,7 @@ import fr.ifremer.tutti.persistence.entities.IdAware; 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.Country; import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Gear; @@ -278,6 +279,13 @@ assertCaracteristicQualitative(result, 6); } + @Test(expected = UnsupportedOperationException.class) + public void getCaracteristicWithNullQualitativeValue() { + Caracteristic result = service.getCaracteristic(fixtures.caracteristicWithNullQualitativeValue()); + assertCaracteristicQualitative(result, 2); + result.getQualitativeValue().add(null); + } + @Test @Ignore public void testCaches() { @@ -308,6 +316,9 @@ Assert.assertTrue(TuttiEntities.isQualitativeCaracteristic(result)); Assert.assertNotNull(result.getQualitativeValue()); Assert.assertEquals(nbValues, result.sizeQualitativeValue()); + for (CaracteristicQualitativeValue qualitativeValue : result.getQualitativeValue()) { + Assert.assertNotNull(qualitativeValue); + } } protected void assertCaracteristicSize(Caracteristic incoming,