Author: tchemit Date: 2013-04-17 18:40:09 +0200 (Wed, 17 Apr 2013) New Revision: 816 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/816 Log: refs #2281: [TECH] - R?\195?\169percution des nouveaut?\195?\169s du mod?\195?\168le adagio (utilisation des transcodage) Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java trunk/tutti-persistence/src/main/resources/applicationContext-service-tutti.xml trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceWriteTest.java Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-04-17 10:20:07 UTC (rev 815) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-04-17 16:40:09 UTC (rev 816) @@ -167,12 +167,28 @@ * @param referenceTaxonId id of the reference taxon of the species to load * @return the species or {@code null} if not found. * @see Species#getReferenceTaxonId() + * @see Species#getRefTaxCode() * @since 0.3 */ @Cacheable(value = "referentSpeciesById", key = "#referenceTaxonId", condition = "#referenceTaxonId != null") Species getSpeciesByReferenceTaxonId(Integer referenceTaxonId); /** + * Obtain a species with external code as vernacular code given his referenceTaxonId. + * <p/> + * <strong>Note:</strong> {@link Species#getRefTaxCode()} will not be + * filled by with method. + * + * @param referenceTaxonId id of the reference taxon of the species to load + * @return the species or {@code null} if not found. + * @see Species#getReferenceTaxonId() + * @see Species#getVernacularCode() + * @since 1.5 + */ + @Cacheable(value = "referentSpeciesByIdVernacular", key = "#referenceTaxonId", condition = "#referenceTaxonId != null") + Species getSpeciesByReferenceTaxonIdWithVernacularCode(Integer referenceTaxonId); + + /** * @return all caracteristics of the system. * @since 1.0 */ @@ -239,7 +255,7 @@ * @since 1.0 */ @Transactional(readOnly = false) - @CacheEvict(value = {"species", "referentSpecies", "referentSpeciesById"}, allEntries = true) + @CacheEvict(value = {"species", "referentSpecies", "referentSpeciesById", "referentSpeciesByIdVernacular"}, allEntries = true) List<Species> importTemporarySpecies(List<Species> species); /** 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-04-17 10:20:07 UTC (rev 815) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-04-17 16:40:09 UTC (rev 816) @@ -32,7 +32,7 @@ import fr.ifremer.adagio.core.dao.referential.gear.FishingGearExtendDao; import fr.ifremer.adagio.core.dao.referential.location.LocationExtendDao; import fr.ifremer.adagio.core.dao.referential.taxon.TaxonNameExtendDao; -import fr.ifremer.adagio.core.dao.referential.taxon.TaxonRefTaxVO; +import fr.ifremer.adagio.core.dao.referential.taxon.TaxonRefVO; import fr.ifremer.adagio.core.service.technical.CacheService; import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -375,12 +375,13 @@ @Override public List<Species> getAllSpecies() { - TaxonRefTaxVO[] sources = taxonNameDao.getAllTaxonNames(true); + TaxonRefVO[] sources = taxonNameDao.getAllTaxonNames( + true, enumeration.TRANSCRIBING_TYPE_ID_REFTAX); List<Species> result = Lists.newArrayListWithCapacity(sources.length); List<Species> referenceTaxonsOnly = Lists.newArrayList(); Cache referentSpeciesByIdCache = cacheService.getCache("referentSpeciesById"); - for (TaxonRefTaxVO source : sources) { + for (TaxonRefVO source : sources) { Species target = loadSpecies(source); if (target.isReferenceTaxon()) { @@ -402,10 +403,11 @@ @Override public List<Species> getAllReferentSpecies() { - TaxonRefTaxVO[] sources = taxonNameDao.getAllTaxonNames(false); + TaxonRefVO[] sources = taxonNameDao.getAllTaxonNames( + false, enumeration.TRANSCRIBING_TYPE_ID_REFTAX); List<Species> result = Lists.newArrayListWithCapacity(sources.length); Cache referentSpeciesByIdCache = cacheService.getCache("referentSpeciesById"); - for (TaxonRefTaxVO source : sources) { + for (TaxonRefVO source : sources) { Species target = loadSpecies(source); // Add to cache : @@ -418,10 +420,28 @@ @Override public Species getSpeciesByReferenceTaxonId(Integer speciesId) { + Species result = getSpeciesByReferenceTaxonId( + speciesId, + enumeration.TRANSCRIBING_TYPE_ID_REFTAX); + return result; + } + + @Override + public Species getSpeciesByReferenceTaxonIdWithVernacularCode(Integer speciesId) { + Species result = getSpeciesByReferenceTaxonId( + speciesId, + enumeration.TRANSCRIBING_TYPE_ID_VERNACULAIRE); + result.setVernacularCode(result.getRefTaxCode()); + result.setRefTaxCode(null); + return result; + } + + protected Species getSpeciesByReferenceTaxonId(Integer speciesId, + Integer transcribingTypeId) { Species target; try { - TaxonRefTaxVO source = taxonNameDao.getTaxonNameReferent( - speciesId); + TaxonRefVO source = taxonNameDao.getTaxonNameReferent( + speciesId, transcribingTypeId); target = loadSpecies(source); } catch (DataRetrievalFailureException drfe) { target = null; @@ -695,7 +715,7 @@ Preconditions.checkNotNull(source); Preconditions.checkNotNull(source.getName()); - TaxonRefTaxVO taxonName = new TaxonRefTaxVO(); + TaxonRefVO taxonName = new TaxonRefVO(); taxonName.setName(source.getName()); taxonName = taxonNameDao.createAsTemporary( taxonName, @@ -800,11 +820,11 @@ return result; } - protected Species loadSpecies(TaxonRefTaxVO source) { + protected Species loadSpecies(TaxonRefVO source) { Species target = TuttiBeanFactory.newSpecies(); target.setId(String.valueOf(source.getTaxonNameId())); target.setName(source.getName()); - target.setRefTaxCode(source.getRefTaxCode()); + target.setRefTaxCode(source.getExternalCode()); target.setReferenceTaxonId(source.getReferenceTaxonId()); target.setReferenceTaxon(source.getIsReference()); fr.ifremer.adagio.core.dao.referential.Status status = statusDao.load(source.getStatus().getValue()); Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-04-17 10:20:07 UTC (rev 815) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-04-17 16:40:09 UTC (rev 816) @@ -272,6 +272,12 @@ @Value("${VesselPersonRoleId.RECORDER_PERSON}") public final Integer VESSEL_PERSON_ROLE_ID_RECORDER_PERSON = null; + @Value("${TranscribingTypeId.TAXINOMIE_REFTAX_MNEMONIQUE}") + public final Integer TRANSCRIBING_TYPE_ID_REFTAX = null; + + @Value("${TranscribingTypeId.TAXINOMIE_COMMUN_NOM_VERNACULAIRE}") + public final Integer TRANSCRIBING_TYPE_ID_VERNACULAIRE = null; + /** * Contract to place on enumeration that must be synched to field inside this class. * <p/> Modified: trunk/tutti-persistence/src/main/resources/applicationContext-service-tutti.xml =================================================================== --- trunk/tutti-persistence/src/main/resources/applicationContext-service-tutti.xml 2013-04-17 10:20:07 UTC (rev 815) +++ trunk/tutti-persistence/src/main/resources/applicationContext-service-tutti.xml 2013-04-17 16:40:09 UTC (rev 816) @@ -130,6 +130,11 @@ <property name="maxElementsInMemory" value="20000"/> <property name="maxElementsOnDisk" value="20000"/> </bean> + <bean id="tuttiReferentSpeciesByIdVenacularCache" parent="tuttiAbstractEternalCache"> + <property name="cacheName" value="referentSpeciesByIdVernacular" /> + <property name="maxElementsInMemory" value="20000"/> + <property name="maxElementsOnDisk" value="20000"/> + </bean> <bean id="tuttiGearsCache" parent="tuttiAbstractEternalCache"> <property name="cacheName" value="gears" /> Modified: trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties =================================================================== --- trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-04-17 10:20:07 UTC (rev 815) +++ trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-04-17 16:40:09 UTC (rev 816) @@ -400,4 +400,7 @@ VesselPersonRoleId.SCIENTIFIC_CRUISE_MANAGER=2 VesselPersonRoleId.SORT_ROOM_MANAGER=3 -VesselPersonRoleId.RECORDER_PERSON=4 \ No newline at end of file +VesselPersonRoleId.RECORDER_PERSON=4 + +TranscribingTypeId.TAXINOMIE_REFTAX_MNEMONIQUE=101 +TranscribingTypeId.TAXINOMIE_COMMUN_NOM_VERNACULAIRE=102 \ No newline at end of file Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo =================================================================== (Binary files differ) 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-04-17 10:20:07 UTC (rev 815) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-04-17 16:40:09 UTC (rev 816) @@ -143,13 +143,21 @@ } public String refSpeciesId() { - return "15461"; + return "15923"; } public Integer refSpeciesTaxonId() { - return 1; + return 467; } + public String refSpeciesRefTaxCode() { + return "SEPIOFF"; + } + + public String refSpeciesVernacularCode() { + return "Seiche"; + } + public Integer refBadSpeciesTaxonId() { return 7632; } 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-04-17 10:20:07 UTC (rev 815) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java 2013-04-17 16:40:09 UTC (rev 816) @@ -225,11 +225,25 @@ Integer taxonId = fixtures.refSpeciesTaxonId(); Species species = service.getSpeciesByReferenceTaxonId(taxonId); Assert.assertNotNull(species); + Assert.assertNull(species.getVernacularCode()); Assert.assertEquals(speciesId, species.getId()); - Assert.assertEquals(fixtures.refSpeciesTaxonId(), species.getReferenceTaxonId()); + Assert.assertEquals(taxonId, species.getReferenceTaxonId()); + Assert.assertEquals(fixtures.refSpeciesRefTaxCode(), species.getRefTaxCode()); } @Test + public void getSpeciesByReferenceTaxonIdWithVernacularCode(/*String speciesReferenceTaxonId*/) { + String speciesId = fixtures.refSpeciesId(); + Integer taxonId = fixtures.refSpeciesTaxonId(); + Species species = service.getSpeciesByReferenceTaxonIdWithVernacularCode(taxonId); + Assert.assertNotNull(species); + Assert.assertNull(species.getRefTaxCode()); + Assert.assertEquals(speciesId, species.getId()); + Assert.assertEquals(taxonId, species.getReferenceTaxonId()); + Assert.assertEquals(fixtures.refSpeciesVernacularCode(), species.getVernacularCode()); + } + + @Test public void getBadSpeciesByReferenceTaxonId(/*String speciesReferenceTaxonId*/) { Integer taxonId = fixtures.refBadSpeciesTaxonId(); service.getSpeciesByReferenceTaxonId(taxonId); Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceWriteTest.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceWriteTest.java 2013-04-17 10:20:07 UTC (rev 815) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceWriteTest.java 2013-04-17 16:40:09 UTC (rev 816) @@ -90,8 +90,8 @@ Assert.assertEquals(sp1.getName(), createdSp1.getName()); // TODO TC :question pour TC pourquoi faire le test suivant NotNull, car tu n'a rien mis en entree de ce code ? // faut-il que le genere ? - //Assert.assertNotNull(createdSp1.getRefTaxCode()); - //Assert.assertNotSame(sp1.getRefTaxCode(), createdSp1.getRefTaxCode()); + //Assert.assertNotNull(createdSp1.getExternalCode()); + //Assert.assertNotSame(sp1.getExternalCode(), createdSp1.getExternalCode()); Assert.assertNull(createdSp1.getSurveyCode()); Assert.assertNotNull(createdSp1.getId()); Assert.assertNotSame(sp1.getId(), createdSp1.getId());