branch develop updated (1372d97 -> 07a06d9)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See http://git.codelutin.com/tutti.git from 1372d97 fixes #6108: [CAPTURE] autocompléter le champ .car dès que le champ .tnk est renseigné new 07a06d9 review referential import services The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 07a06d9cf3c2321809395ea38207cfa2f286f0c0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 16 21:31:53 2014 +0100 review referential import services Summary of changes: .../tutti/persistence/TuttiPersistenceImpl.java | 42 +- .../persistence/TuttiPersistenceNoDbImpl.java | 14 +- .../tutti/persistence/entities/TuttiEntities.java | 12 +- .../entities/protocol/TuttiProtocols.java | 41 +- .../persistence/entities/referential/Gears.java | 8 + .../persistence/entities/referential/Persons.java | 11 + .../persistence/entities/referential/Speciess.java | 7 + .../persistence/entities/referential/Vessels.java | 8 + .../referential/GearPersistenceService.java | 2 +- .../referential/GearPersistenceServiceImpl.java | 2 +- .../referential/PersonPersistenceService.java | 2 +- .../referential/PersonPersistenceServiceImpl.java | 2 +- .../referential/SpeciesPersistenceService.java | 24 +- .../referential/SpeciesPersistenceServiceImpl.java | 28 +- .../referential/VesselPersistenceService.java | 2 +- .../referential/VesselPersistenceServiceImpl.java | 2 +- .../GearPersistenceServiceWriteTest.java | 8 +- .../PersonPersistenceServiceWriteTest.java | 8 +- .../SpeciesPersistenceServiceWriteTest.java | 8 +- .../VesselPersistenceServiceWriteTest.java | 8 +- .../ifremer/tutti/service/PersistenceService.java | 40 +- .../tutti/service/referential/GearModel.java | 6 - .../ifremer/tutti/service/referential/GearRow.java | 71 +- .../service/referential/ImportRequestResult.java | 95 +++ .../tutti/service/referential/PersonModel.java | 5 - .../tutti/service/referential/PersonRow.java | 58 +- .../referential/ReferentialExportService.java | 375 ---------- .../referential/ReferentialImportService.java | 832 ++++++++++----------- .../ReferentialTemporaryGearService.java | 249 ++++++ .../ReferentialTemporaryPersonService.java | 244 ++++++ .../ReferentialTemporarySpeciesService.java | 239 ++++++ .../ReferentialTemporaryVesselService.java | 255 +++++++ .../tutti/service/referential/SpeciesModel.java | 10 - .../tutti/service/referential/SpeciesRow.java | 45 +- .../tutti/service/referential/VesselModel.java | 1 - .../tutti/service/referential/VesselRow.java | 73 +- .../pupitri/PupitriImportServiceAno5079Test.java | 7 +- .../referential/ReferentialImportServiceTest.java | 464 ------------ ... => ReferentialTemporaryExportServiceTest.java} | 71 +- .../ReferentialTemporaryGearServiceTest.java | 148 ++++ .../ReferentialTemporaryPersonServiceTest.java | 98 +++ .../ReferentialTemporarySpeciesServiceTest.java | 183 +++++ .../ReferentialTemporaryVesselServiceTest.java | 113 +++ .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 22 +- .../action/ExportExistingTemporaryGearAction.java | 5 +- .../ExportExistingTemporaryPersonAction.java | 4 +- .../ExportExistingTemporarySpeciesAction.java | 4 +- .../ExportExistingTemporaryVesselAction.java | 4 +- .../action/ExportTemporaryGearExampleAction.java | 5 +- .../action/ExportTemporaryPersonExampleAction.java | 5 +- .../ExportTemporarySpeciesExampleAction.java | 5 +- .../action/ExportTemporaryVesselExampleAction.java | 5 +- .../ui/swing/action/ImportTemporaryGearAction.java | 4 +- .../swing/action/ImportTemporaryPersonAction.java | 4 +- .../swing/action/ImportTemporarySpeciesAction.java | 6 +- .../swing/action/ImportTemporaryVesselAction.java | 6 +- .../action/ReplaceTemporarySpeciesAction.java | 1 + 57 files changed, 2546 insertions(+), 1455 deletions(-) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ImportRequestResult.java delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialExportService.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java delete mode 100644 tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialImportServiceTest.java rename tutti-service/src/test/java/fr/ifremer/tutti/service/referential/{ReferentialExportServiceTest.java => ReferentialTemporaryExportServiceTest.java} (79%) create mode 100644 tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearServiceTest.java create mode 100644 tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonServiceTest.java create mode 100644 tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesServiceTest.java create mode 100644 tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselServiceTest.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 07a06d9cf3c2321809395ea38207cfa2f286f0c0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 16 21:31:53 2014 +0100 review referential import services --- .../tutti/persistence/TuttiPersistenceImpl.java | 42 +- .../persistence/TuttiPersistenceNoDbImpl.java | 14 +- .../tutti/persistence/entities/TuttiEntities.java | 12 +- .../entities/protocol/TuttiProtocols.java | 41 +- .../persistence/entities/referential/Gears.java | 8 + .../persistence/entities/referential/Persons.java | 11 + .../persistence/entities/referential/Speciess.java | 7 + .../persistence/entities/referential/Vessels.java | 8 + .../referential/GearPersistenceService.java | 2 +- .../referential/GearPersistenceServiceImpl.java | 2 +- .../referential/PersonPersistenceService.java | 2 +- .../referential/PersonPersistenceServiceImpl.java | 2 +- .../referential/SpeciesPersistenceService.java | 24 +- .../referential/SpeciesPersistenceServiceImpl.java | 28 +- .../referential/VesselPersistenceService.java | 2 +- .../referential/VesselPersistenceServiceImpl.java | 2 +- .../GearPersistenceServiceWriteTest.java | 8 +- .../PersonPersistenceServiceWriteTest.java | 8 +- .../SpeciesPersistenceServiceWriteTest.java | 8 +- .../VesselPersistenceServiceWriteTest.java | 8 +- .../ifremer/tutti/service/PersistenceService.java | 40 +- .../tutti/service/referential/GearModel.java | 6 - .../ifremer/tutti/service/referential/GearRow.java | 71 +- .../service/referential/ImportRequestResult.java | 95 +++ .../tutti/service/referential/PersonModel.java | 5 - .../tutti/service/referential/PersonRow.java | 58 +- .../referential/ReferentialExportService.java | 375 ---------- .../referential/ReferentialImportService.java | 832 ++++++++++----------- .../ReferentialTemporaryGearService.java | 249 ++++++ .../ReferentialTemporaryPersonService.java | 244 ++++++ .../ReferentialTemporarySpeciesService.java | 239 ++++++ .../ReferentialTemporaryVesselService.java | 255 +++++++ .../tutti/service/referential/SpeciesModel.java | 10 - .../tutti/service/referential/SpeciesRow.java | 45 +- .../tutti/service/referential/VesselModel.java | 1 - .../tutti/service/referential/VesselRow.java | 73 +- .../pupitri/PupitriImportServiceAno5079Test.java | 7 +- .../referential/ReferentialImportServiceTest.java | 464 ------------ ... => ReferentialTemporaryExportServiceTest.java} | 71 +- .../ReferentialTemporaryGearServiceTest.java | 148 ++++ .../ReferentialTemporaryPersonServiceTest.java | 98 +++ .../ReferentialTemporarySpeciesServiceTest.java | 183 +++++ .../ReferentialTemporaryVesselServiceTest.java | 113 +++ .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 22 +- .../action/ExportExistingTemporaryGearAction.java | 5 +- .../ExportExistingTemporaryPersonAction.java | 4 +- .../ExportExistingTemporarySpeciesAction.java | 4 +- .../ExportExistingTemporaryVesselAction.java | 4 +- .../action/ExportTemporaryGearExampleAction.java | 5 +- .../action/ExportTemporaryPersonExampleAction.java | 5 +- .../ExportTemporarySpeciesExampleAction.java | 5 +- .../action/ExportTemporaryVesselExampleAction.java | 5 +- .../ui/swing/action/ImportTemporaryGearAction.java | 4 +- .../swing/action/ImportTemporaryPersonAction.java | 4 +- .../swing/action/ImportTemporarySpeciesAction.java | 6 +- .../swing/action/ImportTemporaryVesselAction.java | 6 +- .../action/ReplaceTemporarySpeciesAction.java | 1 + 57 files changed, 2546 insertions(+), 1455 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java index 905ece3..d4920e8 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java @@ -43,6 +43,7 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.ObjectType; @@ -460,7 +461,7 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public List<Gear> importTemporaryGear(List<Gear> gears) { + public Collection<Gear> importTemporaryGear(Collection<Gear> gears) { return gearService.importTemporaryGear(gears); } @@ -508,12 +509,33 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public boolean isTemporarySpeciesUsed(Integer id) { - return speciesService.isTemporarySpeciesUsed(id); + public boolean isTemporarySpeciesUsed(Integer referenceTaxonId) { + + TuttiProtocol protocol = getProtocol(); + + if (protocol != null) { + + // check first if species is used in protocol + + SpeciesProtocol speciesProtocol = TuttiProtocols.getSpeciesProtocol(protocol, referenceTaxonId); + if (speciesProtocol != null) { + + // used in species protocol + return true; + } + SpeciesProtocol benthosProtocol = TuttiProtocols.getBenthosProtocol(protocol, referenceTaxonId); + if (benthosProtocol != null) { + + // use in benthos protocol + return true; + } + + } + return speciesService.isTemporarySpeciesUsed(referenceTaxonId); } @Override - public List<Species> importTemporarySpecies(List<Species> species) { + public Collection<Species> importTemporarySpecies(Collection<Species> species) { return speciesService.importTemporarySpecies(species); } @@ -523,13 +545,13 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public void deleteTemporarySpecies(Integer id, boolean checkIfUsed) { - speciesService.deleteTemporarySpecies(id, checkIfUsed); + public void deleteTemporarySpecies(Integer referenceTaxonId, boolean checkIfUsed) { + speciesService.deleteTemporarySpecies(referenceTaxonId, checkIfUsed); } @Override - public void deleteTemporarySpecies(Collection<Integer> ids, boolean checkIfUsed) { - speciesService.deleteTemporarySpecies(ids, checkIfUsed); + public void deleteTemporarySpecies(Collection<Integer> referenceTaxonIds, boolean checkIfUsed) { + speciesService.deleteTemporarySpecies(referenceTaxonIds, checkIfUsed); } //------------------------------------------------------------------------// @@ -552,7 +574,7 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public List<Person> importTemporaryPerson(List<Person> persons) { + public Collection<Person> importTemporaryPerson(Collection<Person> persons) { return personService.importTemporaryPerson(persons); } @@ -596,7 +618,7 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public List<Vessel> importTemporaryVessel(List<Vessel> vessels) { + public Collection<Vessel> importTemporaryVessel(Collection<Vessel> vessels) { return vesselService.importTemporaryVessel(vessels); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java index c851bd7..b935f6a 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java @@ -306,22 +306,22 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override - public List<Species> importTemporarySpecies(List<Species> species) { + public Collection<Species> importTemporarySpecies(Collection<Species> species) { throw notImplemented(); } @Override - public List<Vessel> importTemporaryVessel(List<Vessel> vessels) { + public Collection<Vessel> importTemporaryVessel(Collection<Vessel> vessels) { throw notImplemented(); } @Override - public List<Person> importTemporaryPerson(List<Person> persons) { + public Collection<Person> importTemporaryPerson(Collection<Person> persons) { throw notImplemented(); } @Override - public List<Gear> importTemporaryGear(List<Gear> gears) { + public Collection<Gear> importTemporaryGear(Collection<Gear> gears) { throw notImplemented(); } @@ -766,12 +766,12 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override - public void deleteTemporarySpecies(Integer id, boolean checkIfUsed) { + public void deleteTemporarySpecies(Integer referenceTaxonId, boolean checkIfUsed) { throw notImplemented(); } @Override - public void deleteTemporarySpecies(Collection<Integer> ids, boolean checkIfUsed) { + public void deleteTemporarySpecies(Collection<Integer> referenceTaxonIds, boolean checkIfUsed) { throw notImplemented(); } @@ -801,7 +801,7 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override - public boolean isTemporarySpeciesUsed(Integer id) { + public boolean isTemporarySpeciesUsed(Integer referenceTaxonId) { throw notImplemented(); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java index 5d2cbd8..96186e3 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java @@ -71,14 +71,22 @@ public class TuttiEntities { return bean.getId() == null; } - protected static final Function<TuttiEntity, String> GET_ID = new Function<TuttiEntity, String>() { + public static final Function<TuttiEntity, String> GET_ID = new Function<TuttiEntity, String>() { @Override public String apply(TuttiEntity input) { return input.getId(); } }; - protected static final Function<TuttiEntity, Integer> GET_ID_AS_INT = new Function<TuttiEntity, Integer>() { + public static <E extends TuttiEntity> Function<E, String> newIdFunction() { + return (Function<E, String>) GET_ID; + } + + public static <E extends TuttiEntity> Function<E, Integer> newIdAstIntFunction() { + return (Function<E, Integer>) GET_ID_AS_INT; + } + + public static final Function<TuttiEntity, Integer> GET_ID_AS_INT = new Function<TuttiEntity, Integer>() { @Override public Integer apply(TuttiEntity input) { return input.getIdAsInt(); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java index 1ee7ef4..17fd573 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java @@ -317,19 +317,31 @@ public class TuttiProtocols extends AbstractTuttiProtocols { } /** - * Return the speciesProtocol corresponding to the species of the given protocol. + * Return the species Protocol corresponding to the species of the given protocol. * - * @param protocol protocol to scan - * @param species species filter + * @param protocol protocol to scan + * @param speciesReferenceTaxonId species referenceTaxonId filter * @return the species protocol for the given species * @since 2.5 */ - public static SpeciesProtocol getSpeciesProtocol(TuttiProtocol protocol, Species species) { - return getSpeciesProtocol(species, protocol.getSpecies()); + public static SpeciesProtocol getSpeciesProtocol(TuttiProtocol protocol, Integer speciesReferenceTaxonId) { + return getSpeciesProtocol(speciesReferenceTaxonId, protocol.getSpecies()); } /** - * Return the speciesProtocol corresponding to the species of the species protocols. + * Return the benthos Protocol corresponding to the species of the given protocol. + * + * @param protocol protocol to scan + * @param speciesReferenceTaxonId species referenceTaxonId filter + * @return the benthos protocol for the given species + * @since 3.9 + */ + public static SpeciesProtocol getBenthosProtocol(TuttiProtocol protocol, Integer speciesReferenceTaxonId) { + return getSpeciesProtocol(speciesReferenceTaxonId, protocol.getBenthos()); + } + + /** + * Return the speciesProtocol row corresponding to the species of the species protocols. * * @param speciesProtocols species protocols to scan * @param species species filter @@ -337,9 +349,22 @@ public class TuttiProtocols extends AbstractTuttiProtocols { */ public static SpeciesProtocol getSpeciesProtocol(Species species, List<SpeciesProtocol> speciesProtocols) { + + return getSpeciesProtocol(species.getReferenceTaxonId(), speciesProtocols); + + } + + /** + * Return the speciesProtocol row corresponding to the species of the species protocols. + * + * @param speciesProtocols species protocols to scan + * @param speciesReferenceTaxonId speciesReferenceTaxonId filter + * @return the species protocol for the given species + */ + public static SpeciesProtocol getSpeciesProtocol(Integer speciesReferenceTaxonId, + List<SpeciesProtocol> speciesProtocols) { for (SpeciesProtocol speciesProtocol : speciesProtocols) { - if (species.getReferenceTaxonId().equals( - speciesProtocol.getSpeciesReferenceTaxonId())) { + if (speciesReferenceTaxonId.equals(speciesProtocol.getSpeciesReferenceTaxonId())) { return speciesProtocol; } } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java index 4fd0d36..9382d1e 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java @@ -25,6 +25,7 @@ package fr.ifremer.tutti.persistence.entities.referential; */ +import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; @@ -52,6 +53,13 @@ public class Gears extends AbstractGears { } }; + public static final Function<Gear, String> GET_NAME = new Function<Gear, String>() { + @Override + public String apply(Gear input) { + return input.getName(); + } + }; + /** * Is the given {@code gear} a temporary data ? * diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Persons.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Persons.java index b25ae47..68abb6e 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Persons.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Persons.java @@ -24,8 +24,10 @@ package fr.ifremer.tutti.persistence.entities.referential; * #L% */ +import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; +import org.apache.commons.lang3.StringUtils; public class Persons extends AbstractPersons { @@ -51,4 +53,13 @@ public class Persons extends AbstractPersons { return Persons.isTemporary(input); } }; + + public static final Function<Person, String> GET_FULL_NAME = new Function<Person, String>() { + @Override + public String apply(Person input) { + return StringUtils.lowerCase( + StringUtils.trimToEmpty(input.getFirstName()) + + StringUtils.trimToEmpty(input.getLastName())); + } + }; } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java index e378151..4c21a37 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java @@ -99,6 +99,13 @@ public class Speciess extends AbstractSpeciess { } }; + public static final Function<Species, String> GET_NAME= new Function<Species, String>() { + @Override + public String apply(Species input) { + return input.getName(); + } + }; + public static Map<String, Species> splitByTaxonId(Iterable<Species> list) { return Maps.uniqueIndex(list, GET_TAXON_ID); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Vessels.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Vessels.java index 86276ef..be0feb0 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Vessels.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Vessels.java @@ -24,6 +24,7 @@ package fr.ifremer.tutti.persistence.entities.referential; * #L% */ +import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import fr.ifremer.adagio.core.dao.technical.hibernate.TemporaryDataHelper; @@ -37,6 +38,13 @@ public class Vessels extends AbstractVessels { } }; + public static final Function<Vessel, String> GET_INTERNAL_REGISTRATION_CODE = new Function<Vessel, String>() { + @Override + public String apply(Vessel input) { + return input.getInternationalRegistrationCode(); + } + }; + /** * Is the given {@code vessel} a temporary data ? * diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceService.java index 2c052c8..79d9b8d 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceService.java @@ -63,7 +63,7 @@ public interface GearPersistenceService extends TuttiPersistenceServiceImplement */ @Transactional(readOnly = false) @CacheEvict(value = "gears", allEntries = true) - List<Gear> importTemporaryGear(List<Gear> gears); + Collection<Gear> importTemporaryGear(Collection<Gear> gears); /** * Replace the {@code source} gear by diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceImpl.java index 98e8f2d..3e719e1 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceImpl.java @@ -111,7 +111,7 @@ public class GearPersistenceServiceImpl extends ReferentialPersistenceServiceSup } @Override - public List<Gear> importTemporaryGear(List<Gear> gears) { + public Collection<Gear> importTemporaryGear(Collection<Gear> gears) { List<Gear> result = Lists.newArrayList(); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceService.java index f121654..cdc75f2 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceService.java @@ -64,7 +64,7 @@ public interface PersonPersistenceService extends TuttiPersistenceServiceImpleme */ @Transactional(readOnly = false) @CacheEvict(value = {"persons", "personById"}, allEntries = true) - List<Person> importTemporaryPerson(List<Person> persons); + Collection<Person> importTemporaryPerson(Collection<Person> persons); /** * Replace the {@code source} person by diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceImpl.java index 7fa213f..fce34fc 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceImpl.java @@ -113,7 +113,7 @@ public class PersonPersistenceServiceImpl extends ReferentialPersistenceServiceS } @Override - public List<Person> importTemporaryPerson(List<Person> persons) { + public Collection<Person> importTemporaryPerson(Collection<Person> persons) { List<Person> result = Lists.newArrayList(); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceService.java index 56f31c9..173c5f4 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceService.java @@ -84,12 +84,12 @@ public interface SpeciesPersistenceService extends TuttiPersistenceServiceImplem Species getSpeciesByReferenceTaxonIdWithVernacularCode(Integer referenceTaxonId); /** - * Check if the temporary species with the given {@code id} is used. + * Check if the temporary species with the given {@code referenceTaxonId} is used. * - * @param id id of the species to check + * @param referenceTaxonId referenceTaxonId of the species to check * @since 3.8 */ - boolean isTemporarySpeciesUsed(Integer id); + boolean isTemporarySpeciesUsed(Integer referenceTaxonId); /** * Import given temporary species. @@ -99,7 +99,7 @@ public interface SpeciesPersistenceService extends TuttiPersistenceServiceImplem */ @Transactional(readOnly = false) @CacheEvict(value = {"species", "referentSpecies", "referentSpeciesById", "referentSpeciesByIdVernacular"}, allEntries = true) - List<Species> importTemporarySpecies(List<Species> species); + Collection<Species> importTemporarySpecies(Collection<Species> species); /** * Replace the {@code source} species by @@ -117,25 +117,25 @@ public interface SpeciesPersistenceService extends TuttiPersistenceServiceImplem void replaceSpecies(Species source, Species target, boolean delete); /** - * Delete the temporary species with the given {@code ids}. + * Delete the temporary species with the given {@code referenceTaxonId}. * - * @param ids ids of the species to remove - * @param checkIfUsed to check if species is used before trying to delete it + * @param referenceTaxonIds referenceTaxonId of the species to remove + * @param checkIfUsed to check if species is used before trying to delete it * @since 3.8 */ @Transactional(readOnly = false) @CacheEvict(value = {"species", "referentSpecies", "referentSpeciesById", "referentSpeciesByIdVernacular"}, allEntries = true) - void deleteTemporarySpecies(Collection<Integer> ids, boolean checkIfUsed); + void deleteTemporarySpecies(Collection<Integer> referenceTaxonIds, boolean checkIfUsed); /** - * Delete the temporary species with the given {@code id}. + * Delete the temporary species with the given {@code referenceTaxonId}. * - * @param id id of the species to remove - * @param checkIfUsed to check if species is used before trying to delete it + * @param referenceTaxonId reference taxonId of the species to remove + * @param checkIfUsed to check if species is used before trying to delete it * @since 3.8 */ @Transactional(readOnly = false) @CacheEvict(value = {"species", "referentSpecies", "referentSpeciesById", "referentSpeciesByIdVernacular"}, allEntries = true) - void deleteTemporarySpecies(Integer id, boolean checkIfUsed); + void deleteTemporarySpecies(Integer referenceTaxonId, boolean checkIfUsed); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceImpl.java index fbe6d8a..a2b294e 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceImpl.java @@ -154,13 +154,13 @@ public class SpeciesPersistenceServiceImpl extends ReferentialPersistenceService } @Override - public boolean isTemporarySpeciesUsed(Integer id) { + public boolean isTemporarySpeciesUsed(Integer referenceTaxonId) { - Long count = queryUniqueTyped("countReferenceTaxonInSortingBatch", "id", IntegerType.INSTANCE, id); + Long count = queryUniqueTyped("countReferenceTaxonInSortingBatch", "id", IntegerType.INSTANCE, referenceTaxonId); boolean result = count > 0; if (!result) { - count = queryUniqueTyped("countReferenceTaxonInSample", "id", IntegerType.INSTANCE, id); + count = queryUniqueTyped("countReferenceTaxonInSample", "id", IntegerType.INSTANCE, referenceTaxonId); result = count > 0; } return result; @@ -168,7 +168,7 @@ public class SpeciesPersistenceServiceImpl extends ReferentialPersistenceService } @Override - public List<Species> importTemporarySpecies(List<Species> species) { + public Collection<Species> importTemporarySpecies(Collection<Species> species) { List<Species> result = Lists.newArrayList(); for (Species source : species) { @@ -209,31 +209,31 @@ public class SpeciesPersistenceServiceImpl extends ReferentialPersistenceService } @Override - public void deleteTemporarySpecies(Collection<Integer> ids, boolean checkIfUsed) { + public void deleteTemporarySpecies(Collection<Integer> referenceTaxonIds, boolean checkIfUsed) { - for (Integer id : ids) { + for (Integer id : referenceTaxonIds) { deleteTemporarySpecies(id, checkIfUsed); } } @Override - public void deleteTemporarySpecies(Integer id, boolean checkIfUsed) { + public void deleteTemporarySpecies(Integer referenceTaxonId, boolean checkIfUsed) { - Preconditions.checkNotNull(id); - if (id > 0) { - throw new ApplicationBusinessException(String.format("Can't delete a Species with a positive id %d.", id)); + Preconditions.checkNotNull(referenceTaxonId); + if (referenceTaxonId > 0) { + throw new ApplicationBusinessException(String.format("Can't delete a Species with a positive id %d.", referenceTaxonId)); } - Species species = getSpeciesByReferenceTaxonId(id); + Species species = getSpeciesByReferenceTaxonId(referenceTaxonId); if (species == null) { - throw new ApplicationBusinessException(String.format("Species with id %d does not exists", id)); + throw new ApplicationBusinessException(String.format("Species with id %d does not exists", referenceTaxonId)); } if (checkIfUsed) { - isTemporarySpeciesUsed(id); + isTemporarySpeciesUsed(referenceTaxonId); } - taxonNameDao.remove(id); + taxonNameDao.remove(species.getIdAsInt()); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceService.java index a29a8a9..adb6e13 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceService.java @@ -84,7 +84,7 @@ public interface VesselPersistenceService extends TuttiPersistenceServiceImpleme */ @Transactional(readOnly = false) @CacheEvict(value = {"fishingVessels", "vesselByCode"}, allEntries = true) - List<Vessel> importTemporaryVessel(List<Vessel> vessels); + Collection<Vessel> importTemporaryVessel(Collection<Vessel> vessels); /** * Replace the {@code source} vessel by diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceImpl.java index ddf2b58..df29132 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceImpl.java @@ -190,7 +190,7 @@ public class VesselPersistenceServiceImpl extends ReferentialPersistenceServiceS } @Override - public List<Vessel> importTemporaryVessel(List<Vessel> vessels) { + public Collection<Vessel> importTemporaryVessel(Collection<Vessel> vessels) { List<Vessel> result = Lists.newArrayList(); diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceWriteTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceWriteTest.java index 2968a27..2de94cf 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceWriteTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/GearPersistenceServiceWriteTest.java @@ -24,6 +24,7 @@ package fr.ifremer.tutti.persistence.service.referential; * #L% */ +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Gears; @@ -32,6 +33,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.util.Collection; import java.util.List; /** @@ -74,12 +76,12 @@ public class GearPersistenceServiceWriteTest extends ReferentialPersistenceServi gears.add(g2); - List<Gear> gearList = service.importTemporaryGear(gears); + Collection<Gear> gearList = service.importTemporaryGear(gears); List<Gear> allScientificGear = service.getAllScientificGear(); List<Gear> allFishingGear = service.getAllFishingGear(); - Gear createdG1 = gearList.get(0); + Gear createdG1 = Iterables.get(gearList, 0); Assert.assertNotNull(createdG1); Assert.assertEquals(g1.getName(), createdG1.getName()); Assert.assertEquals(g1.getLabel(), createdG1.getLabel()); @@ -90,7 +92,7 @@ public class GearPersistenceServiceWriteTest extends ReferentialPersistenceServi Assert.assertTrue(allScientificGear.contains(createdG1)); Assert.assertFalse(allFishingGear.contains(createdG1)); - Gear createdG2 = gearList.get(1); + Gear createdG2 = Iterables.get(gearList, 1); Assert.assertNotNull(createdG2); Assert.assertEquals(g2.getName(), createdG2.getName()); Assert.assertEquals(g2.getLabel(), createdG2.getLabel()); diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceWriteTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceWriteTest.java index 175d33f..7f9f140 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceWriteTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/PersonPersistenceServiceWriteTest.java @@ -24,6 +24,7 @@ package fr.ifremer.tutti.persistence.service.referential; * #L% */ +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Persons; @@ -32,6 +33,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.util.Collection; import java.util.List; /** @@ -73,12 +75,12 @@ public class PersonPersistenceServiceWriteTest extends ReferentialPersistenceSer p2.setDepartment("Don't care" + timestamp2); persons.add(p2); - List<Person> personList = service.importTemporaryPerson(persons); + Collection<Person> personList = service.importTemporaryPerson(persons); Assert.assertNotNull(personList); Assert.assertEquals(2, personList.size()); - Person createdP1 = personList.get(0); + Person createdP1 = Iterables.get(personList, 0); Assert.assertNotNull(createdP1); Assert.assertEquals(p1.getFirstName(), createdP1.getFirstName()); Assert.assertEquals(p1.getLastName(), createdP1.getLastName()); @@ -93,7 +95,7 @@ public class PersonPersistenceServiceWriteTest extends ReferentialPersistenceSer Assert.assertEquals(createdP1, service.getPerson(Integer.valueOf(createdP1.getId()))); - Person createdP2 = personList.get(1); + Person createdP2 = Iterables.get(personList, 1); Assert.assertNotNull(createdP2); Assert.assertEquals(p2.getFirstName(), createdP2.getFirstName()); Assert.assertEquals(p2.getLastName(), createdP2.getLastName()); diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceWriteTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceWriteTest.java index b42ebc1..fb4846e 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceWriteTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceWriteTest.java @@ -24,6 +24,7 @@ package fr.ifremer.tutti.persistence.service.referential; * #L% */ +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Speciess; @@ -32,6 +33,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.util.Collection; import java.util.List; /** @@ -74,11 +76,11 @@ public class SpeciesPersistenceServiceWriteTest extends ReferentialPersistenceSe Assert.assertNull(service.getSpeciesByReferenceTaxonId(sp1.getReferenceTaxonId())); //Assert.assertNull(service.getSpecies(sp2.getId())); - List<Species> speciesList = service.importTemporarySpecies(species); + Collection<Species> speciesList = service.importTemporarySpecies(species); Assert.assertNotNull(speciesList); Assert.assertEquals(2, speciesList.size()); - Species createdSp1 = speciesList.get(0); + Species createdSp1 = Iterables.get(speciesList, 0); Assert.assertNotNull(createdSp1); 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 ? @@ -90,7 +92,7 @@ public class SpeciesPersistenceServiceWriteTest extends ReferentialPersistenceSe Assert.assertNotSame(sp1.getId(), createdSp1.getId()); Assert.assertEquals(createdSp1, service.getSpeciesByReferenceTaxonId(createdSp1.getReferenceTaxonId())); - Species createdSp2 = speciesList.get(1); + Species createdSp2 = Iterables.get(speciesList, 1); Assert.assertNotNull(createdSp2); Assert.assertEquals(sp2.getName(), createdSp2.getName()); Assert.assertTrue(createdSp2.isReferenceTaxon()); diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceWriteTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceWriteTest.java index 087b6ad..5ba2705 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceWriteTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/VesselPersistenceServiceWriteTest.java @@ -24,6 +24,7 @@ package fr.ifremer.tutti.persistence.service.referential; * #L% */ +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.entities.referential.Vessels; @@ -32,6 +33,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.util.Collection; import java.util.List; /** @@ -74,7 +76,7 @@ public class VesselPersistenceServiceWriteTest extends ReferentialPersistenceSer Assert.assertNull(service.getVessel(v1.getId())); Assert.assertNull(service.getVessel(v2.getId())); - List<Vessel> vesselList = service.importTemporaryVessel(vessels); + Collection<Vessel> vesselList = service.importTemporaryVessel(vessels); Assert.assertNotNull(vesselList); Assert.assertEquals(2, vesselList.size()); @@ -82,7 +84,7 @@ public class VesselPersistenceServiceWriteTest extends ReferentialPersistenceSer List<Vessel> allScientificVessel = service.getAllScientificVessel(); List<Vessel> allFishingVessel = service.getAllFishingVessel(); - Vessel createdV1 = vesselList.get(0); + Vessel createdV1 = Iterables.get(vesselList, 0); Assert.assertNotNull(createdV1); Assert.assertEquals(v1.getName(), createdV1.getName()); Assert.assertEquals(v1.getInternationalRegistrationCode(), createdV1.getInternationalRegistrationCode()); @@ -93,7 +95,7 @@ public class VesselPersistenceServiceWriteTest extends ReferentialPersistenceSer Assert.assertTrue(allScientificVessel.contains(createdV1)); Assert.assertFalse(allFishingVessel.contains(createdV1)); - Vessel createdV2 = vesselList.get(1); + Vessel createdV2 = Iterables.get(vesselList, 1); Assert.assertNotNull(createdV2); Assert.assertEquals(v2.getName(), createdV2.getName()); Assert.assertEquals(v2.getInternationalRegistrationCode(), createdV2.getInternationalRegistrationCode()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index 2d999f3..e28ce9a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -980,22 +980,22 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override - public List<Species> importTemporarySpecies(List<Species> species) { + public Collection<Species> importTemporarySpecies(Collection<Species> species) { return driver.importTemporarySpecies(species); } @Override - public List<Vessel> importTemporaryVessel(List<Vessel> vessels) { + public Collection<Vessel> importTemporaryVessel(Collection<Vessel> vessels) { return driver.importTemporaryVessel(vessels); } @Override - public List<Person> importTemporaryPerson(List<Person> persons) { + public Collection<Person> importTemporaryPerson(Collection<Person> persons) { return driver.importTemporaryPerson(persons); } @Override - public List<Gear> importTemporaryGear(List<Gear> gears) { + public Collection<Gear> importTemporaryGear(Collection<Gear> gears) { return driver.importTemporaryGear(gears); } @@ -1030,13 +1030,13 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override - public void deleteTemporarySpecies(Integer id, boolean checkIfUsed) { - driver.deleteTemporarySpecies(id, checkIfUsed); + public void deleteTemporarySpecies(Integer referenceTaxonId, boolean checkIfUsed) { + driver.deleteTemporarySpecies(referenceTaxonId, checkIfUsed); } @Override - public void deleteTemporarySpecies(Collection<Integer> ids, boolean checkIfUsed) { - driver.deleteTemporarySpecies(ids, checkIfUsed); + public void deleteTemporarySpecies(Collection<Integer> referenceTaxonIds, boolean checkIfUsed) { + driver.deleteTemporarySpecies(referenceTaxonIds, checkIfUsed); } @Override @@ -1059,34 +1059,14 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer driver.deleteTemporaryVessels(codes, checkIfUsed); } -// @Override -// public boolean isTemporary(Gear gear) { -// return driver.isTemporary(gear); -// } - -// @Override -// public boolean isTemporary(Person person) { -// return driver.isTemporary(person); -// } - -// @Override -// public boolean isTemporary(Species species) { -// return driver.isTemporary(species); -// } - -// @Override -// public boolean isTemporary(Vessel vessel) { -// return driver.isTemporary(vessel); -// } - @Override public boolean isTemporaryPersonUsed(Integer id) { return driver.isTemporaryPersonUsed(id); } @Override - public boolean isTemporarySpeciesUsed(Integer id) { - return driver.isTemporarySpeciesUsed(id); + public boolean isTemporarySpeciesUsed(Integer referenceTaxonId) { + return driver.isTemporarySpeciesUsed(referenceTaxonId); } @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearModel.java index 6574232..9ef9c6b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearModel.java @@ -23,16 +23,10 @@ package fr.ifremer.tutti.service.referential; */ import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Gears; -import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.TuttiCsvUtil; import org.nuiton.csv.Common; -import java.text.ParseException; -import java.util.Set; - import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.t; /** * Model to import / export {@link Gear} in csv format. diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearRow.java index 5bce4f6..0a709bc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/GearRow.java @@ -26,16 +26,32 @@ package fr.ifremer.tutti.service.referential; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.GearBean; +import fr.ifremer.tutti.persistence.entities.referential.Gears; /** * @author Kevin Morin (Code Lutin) * @since 3.8 */ -public class GearRow extends GearBean { +public class GearRow { + + public static final String PROPERTY_ID = "id"; + + public static final String PROPERTY_NAME = "name"; public static final String PROPERTY_TO_DELETE = "toDelete"; + public static final String PROPERTY_LABEL = "label"; + + public static final String PROPERTY_SCIENTIFIC_GEAR = "scientificGear"; + + protected String id; + + protected String name; + + protected String label; + + protected boolean scientificGear; + protected Boolean toDelete; public GearRow() { @@ -51,6 +67,38 @@ public class GearRow extends GearBean { setScientificGear(gear.isScientificGear()); } + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public boolean isScientificGear() { + return scientificGear; + } + + public void setScientificGear(boolean scientificGear) { + this.scientificGear = scientificGear; + } + public Boolean getToDelete() { return toDelete; } @@ -58,4 +106,23 @@ public class GearRow extends GearBean { public void setToDelete(Boolean toDelete) { this.toDelete = toDelete; } + + public Gear toEntity() { + + Gear gear = Gears.newGear(); + gear.setId(getId()); + gear.setName(getName()); + gear.setLabel(getLabel()); + gear.setScientificGear(isScientificGear()); + return gear; + + } + + public Integer getIdAsInt() { + Integer idAsInt = null; + if (id != null) { + idAsInt = Integer.valueOf(id); + } + return idAsInt; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ImportRequestResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ImportRequestResult.java new file mode 100644 index 0000000..8abc642 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ImportRequestResult.java @@ -0,0 +1,95 @@ +package fr.ifremer.tutti.service.referential; + +import com.google.common.base.Function; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity; + +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * Created on 11/16/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.10 + */ +public class ImportRequestResult<E extends TuttiReferentialEntity, K> { + + private final List<E> toAdd = Lists.newArrayList(); + + private final List<E> toUpdate = Lists.newArrayList(); + + private final List<K> toDelete = Lists.newArrayList(); + + private final Map<K, E> existingEntitiesById; + + private final Set<K> existingIds; + + private final Set<String> existingNaturalIds; + + public ImportRequestResult(List<E> existingEntities, Function<E, K> entityToIdFunction, Function<E, String> naturalIdFunction) { + + this.existingEntitiesById = Maps.uniqueIndex(existingEntities, entityToIdFunction); + this.existingIds = new HashSet<>(existingEntitiesById.keySet()); + this.existingNaturalIds = Sets.newHashSet(Iterables.transform(existingEntities, naturalIdFunction)); + + } + + public void addEntityToAdd(E entityToAdd) { + toAdd.add(entityToAdd); + } + + public void addEntityToUpdate(E entityToUpdate) { + toUpdate.add(entityToUpdate); + } + + public void addIdToDelete(K entityToDelete) { + toDelete.add(entityToDelete); + } + + public boolean withToAdd() { + return !toAdd.isEmpty(); + } + + public boolean withToupdate() { + return !toUpdate.isEmpty(); + } + + public boolean withToDelete() { + return !toDelete.isEmpty(); + } + + public Collection<K> getIdsToDelete() { + return Lists.newArrayList(toDelete); + } + + public Collection<E> getEntitiesToAdd() { + return Lists.newArrayList(toAdd); + } + + public Collection<E> getEntitiesToUpdate() { + return Lists.newArrayList(toUpdate); + } + + public E getExistingEntityById(K id) { + return existingEntitiesById.get(id); + } + + public boolean addExistingEntityId(K id) { + return existingIds.add(id); + } + + public boolean addExistingNaturalId(String naturalId) { + return existingNaturalIds.add(naturalId); + } + + public void removeExistingNaturalId(String naturalId) { + existingNaturalIds.remove(naturalId); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonModel.java index 1fcd1c5..bb11c1e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonModel.java @@ -23,14 +23,9 @@ package fr.ifremer.tutti.service.referential; */ import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.Persons; import fr.ifremer.tutti.service.TuttiCsvUtil; -import org.nuiton.csv.Common; - -import java.text.ParseException; import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.t; /** * Model to import / export {@link Person} in csv format. diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonRow.java index 3a0b108..8326aa7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/PersonRow.java @@ -26,16 +26,28 @@ package fr.ifremer.tutti.service.referential; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.PersonBean; +import fr.ifremer.tutti.persistence.entities.referential.Persons; /** * @author Kevin Morin (Code Lutin) * @since 3.8 */ -public class PersonRow extends PersonBean { +public class PersonRow { + + public static final String PROPERTY_ID = "id"; + + public static final String PROPERTY_FIRST_NAME = "firstName"; + + public static final String PROPERTY_LAST_NAME = "lastName"; public static final String PROPERTY_TO_DELETE = "toDelete"; + protected String id; + + protected String firstName; + + protected String lastName; + protected Boolean toDelete; public PersonRow() { @@ -50,6 +62,30 @@ public class PersonRow extends PersonBean { setLastName(person.getLastName()); } + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + public Boolean getToDelete() { return toDelete; } @@ -57,4 +93,22 @@ public class PersonRow extends PersonBean { public void setToDelete(Boolean toDelete) { this.toDelete = toDelete; } + + public Person toEntity() { + + Person person = Persons.newPerson(); + person.setId(getId()); + person.setFirstName(getFirstName()); + person.setLastName(getLastName()); + return person; + + } + + public Integer getIdAsInt() { + Integer idAsInt = null; + if (id != null) { + idAsInt = Integer.valueOf(id); + } + return idAsInt; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialExportService.java deleted file mode 100644 index be34c35..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialExportService.java +++ /dev/null @@ -1,375 +0,0 @@ -package fr.ifremer.tutti.service.referential; - -/* - * #%L - * Tutti :: Service - * %% - * Copyright (C) 2012 - 2014 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.base.Charsets; -import com.google.common.base.Function; -import com.google.common.collect.Lists; -import com.google.common.io.Files; -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Gears; -import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.Persons; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Speciess; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Vessels; -import fr.ifremer.tutti.service.AbstractTuttiService; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.TuttiServiceContext; -import org.apache.commons.io.IOUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Export; -import org.nuiton.jaxx.application.ApplicationTechnicalException; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.IOException; -import java.util.List; - -import static org.nuiton.i18n.I18n.t; - -/** - * Service to export temporary referential. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public class ReferentialExportService extends AbstractTuttiService { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ReferentialExportService.class); - - protected PersistenceService persistenceService; - - @Override - public void setServiceContext(TuttiServiceContext context) { - super.setServiceContext(context); - persistenceService = getService(PersistenceService.class); - } - - public void exportExistingTemporarySpecies(File file) throws IOException { - - if (log.isInfoEnabled()) { - log.info("Getting all species from database"); - } - List<Species> targetList = Lists.newArrayList(persistenceService.getAllReferentSpecies()); - - if (log.isInfoEnabled()) { - log.info("Got " + targetList.size() + " species"); - } - List<Species> toExport = persistenceService.retainTemporarySpeciesList(targetList); - if (log.isInfoEnabled()) { - log.info("Got " + toExport.size() + " temporary species"); - } - exportTemporarySpecies(file, toExport); - - } - - public void exportTemporarySpeciesExample(File file) throws IOException { - - List<Species> toExport = Lists.newArrayList(); - - { - Species s = Speciess.newSpecies(); - s.setName("Temporary Species name 1"); - toExport.add(s); - } - { - Species s = Speciess.newSpecies(); - s.setName("Temporary Species name 2"); - toExport.add(s); - } - { - Species s = Speciess.newSpecies(); - s.setName("Temporary Species name 3"); - toExport.add(s); - } - exportTemporarySpecies(file, toExport); - - } - - protected void exportTemporarySpecies(File file, List<Species> toExport) throws IOException { - - SpeciesModel csvModel = new SpeciesModel(getCsvSeparator()); - - BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); - - List<SpeciesRow> toExportRows = Lists.transform(toExport, new Function<Species, SpeciesRow>() { - @Override - public SpeciesRow apply(Species species) { - return new SpeciesRow(species); - } - }); - - try { - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); - writer.close(); - } catch (IOException e) { - throw e; - } catch (Exception e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.export.species.error", file), e); - } finally { - IOUtils.closeQuietly(writer); - } - - } - - public void exportExistingTemporaryVessel(File file) throws IOException { - - if (log.isInfoEnabled()) { - log.info("Getting all vessels from database"); - } - List<Vessel> targetList = Lists.newArrayList(persistenceService.getAllFishingVessel()); - targetList.addAll(persistenceService.getAllScientificVessel()); - if (log.isInfoEnabled()) { - log.info("Got " + targetList.size() + " vessels"); - } - List<Vessel> toExport = persistenceService.retainTemporaryVesselList(targetList); - - if (log.isInfoEnabled()) { - log.info("Got " + toExport.size() + " temporary vessels"); - } - exportTemporaryVessel(file, toExport); - - } - - public void exportTemporaryVesselExample(File file) throws IOException { - - List<Vessel> toExport = Lists.newArrayList(); - - { - Vessel v = Vessels.newVessel(); - v.setRegistrationCode("RegCode1"); - v.setName("Temporary fishing vessel name 1"); - v.setInternationalRegistrationCode("International registration code F1"); - v.setScientificVessel(false); - toExport.add(v); - } - { - Vessel v = Vessels.newVessel(); - v.setRegistrationCode("RegCode2"); - v.setName("Temporary fishing vessel name 2"); - v.setInternationalRegistrationCode("International registration code F2"); - v.setScientificVessel(false); - toExport.add(v); - } - { - Vessel v = Vessels.newVessel(); - v.setRegistrationCode("RegCode3"); - v.setName("Temporary scientific vessel name 3"); - v.setInternationalRegistrationCode("International registration code S3"); - v.setScientificVessel(true); - toExport.add(v); - } - { - Vessel v = Vessels.newVessel(); - v.setRegistrationCode("RegCode4"); - v.setName("Temporary scientific vessel name 4"); - v.setInternationalRegistrationCode("International registration code S4"); - v.setScientificVessel(true); - toExport.add(v); - } - exportTemporaryVessel(file, toExport); - - } - - protected void exportTemporaryVessel(File file, List<Vessel> toExport) throws IOException { - - VesselModel csvModel = new VesselModel(getCsvSeparator()); - - BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); - - List<VesselRow> toExportRows = Lists.transform(toExport, new Function<Vessel, VesselRow>() { - @Override - public VesselRow apply(Vessel vessel) { - return new VesselRow(vessel); - } - }); - - try { - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); - writer.close(); - } catch (IOException e) { - throw e; - } catch (Exception e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.export.vessel.error", file), e); - } finally { - IOUtils.closeQuietly(writer); - } - } - - public void exportExistingTemporaryPerson(File file) throws IOException { - - if (log.isInfoEnabled()) { - log.info("Getting all persons from database"); - } - List<Person> targetList = Lists.newArrayList(persistenceService.getAllPerson()); - if (log.isInfoEnabled()) { - log.info("Got " + targetList.size() + " persons"); - } - List<Person> toExport = persistenceService.retainTemporaryPersonList(targetList); - if (log.isInfoEnabled()) { - log.info("Got " + toExport.size() + " temporary persons"); - } - exportTemporaryPerson(file, toExport); - - } - - public void exportTemporaryPersonExample(File file) throws IOException { - - List<Person> toExport = Lists.newArrayList(); - - Person p; - - p = Persons.newPerson(); - p.setFirstName("First name 1"); - p.setLastName("Last name 1"); - toExport.add(p); - - p = Persons.newPerson(); - p.setFirstName("First name 2"); - p.setLastName("Last name 2"); - toExport.add(p); - - p = Persons.newPerson(); - p.setFirstName("First name 3"); - p.setLastName("Last name 3"); - toExport.add(p); - - exportTemporaryPerson(file, toExport); - - } - - protected void exportTemporaryPerson(File file, List<Person> toExport) throws IOException { - - PersonModel csvModel = new PersonModel(getCsvSeparator()); - - BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); - - List<PersonRow> toExportRows = Lists.transform(toExport, new Function<Person, PersonRow>() { - @Override - public PersonRow apply(Person person) { - return new PersonRow(person); - } - }); - - try { - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); - writer.close(); - } catch (IOException e) { - throw e; - } catch (Exception e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.export.person.error", file), e); - } finally { - IOUtils.closeQuietly(writer); - } - } - - public void exportExistingTemporaryGear(File file) throws IOException { - - if (log.isInfoEnabled()) { - log.info("Getting all gears from database"); - } - - List<Gear> targetList = Lists.newArrayList(persistenceService.getAllFishingGear()); - targetList.addAll(persistenceService.getAllScientificGear()); - if (log.isInfoEnabled()) { - log.info("Got " + targetList.size() + " gears"); - } - List<Gear> toExport = persistenceService.retainTemporaryGearList(targetList); - if (log.isInfoEnabled()) { - log.info("Got " + toExport.size() + " temporary gears"); - } - exportTemporaryGear(file, toExport); - - } - - public void exportTemporaryGearExample(File file) throws IOException { - - List<Gear> toExport = Lists.newArrayList(); - - { - Gear g = Gears.newGear(); - g.setName("Gear fishing name 1"); - g.setLabel("Gear fishing label 1"); - toExport.add(g); - } - { - Gear g = Gears.newGear(); - g.setName("Gear fishing name 2"); - g.setLabel("Gear fishing label 2"); - toExport.add(g); - } - { - Gear g = Gears.newGear(); - g.setName("Gear scientific name 3"); - g.setLabel("Gear scientific label 3"); - g.setScientificGear(true); - toExport.add(g); - } - { - Gear g = Gears.newGear(); - g.setName("Gear scientific name 4"); - g.setLabel("Gear scientific label 4"); - g.setScientificGear(true); - toExport.add(g); - } - exportTemporaryGear(file, toExport); - - } - - protected void exportTemporaryGear(File file, List<Gear> toExport) throws IOException { - - GearModel csvModel = new GearModel(getCsvSeparator()); - - BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); - - List<GearRow> toExportRows = Lists.transform(toExport, new Function<Gear, GearRow>() { - @Override - public GearRow apply(Gear gear) { - return new GearRow(gear); - } - }); - - try { - Export export = Export.newExport(csvModel, toExportRows); - export.write(writer); - writer.close(); - } catch (IOException e) { - throw e; - } catch (Exception e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.export.gear.error", file), e); - } finally { - IOUtils.closeQuietly(writer); - } - } - - protected char getCsvSeparator() { - return context.getConfig().getCsvSeparator(); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportService.java index 24962ee..ea953fb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportService.java @@ -82,422 +82,422 @@ public class ReferentialImportService extends AbstractTuttiService { persistenceService = getService(PersistenceService.class); } - public ReferentialImportResult<Species> importTemporarySpecies(File file) throws IOException { - - ReferentialImportResult<Species> result = new ReferentialImportResult<>(); - - if (log.isInfoEnabled()) { - log.info("Will import species from file: " + file); - } - - List<Species> allSpecies = persistenceService.getAllSpecies(); - - // get all species names - Set<String> existingSpeciesNames = Sets.newHashSet(Iterables.transform(allSpecies, new Function<Species, String>() { - @Override - public String apply(Species input) { - return input.getName(); - } - })); - Map<Integer, Species> existingSpeciesById = TuttiEntities.splitByIdAsInt(allSpecies); - Set<Integer> existingSpeciesIds = new HashSet<>(existingSpeciesById.keySet()); - - List<Species> toAdd = Lists.newArrayList(); - List<Species> toUpdate = Lists.newArrayList(); - List<Integer> toDelete = Lists.newArrayList(); - - Reader reader = Files.newReader(file, Charsets.UTF_8); - SpeciesModel csvModel = new SpeciesModel(getCsvSeparator()); - try { - Import<SpeciesRow> importer = Import.newImport(csvModel, reader); - - try { - - for (SpeciesRow bean : importer) { - - Integer id = bean.getIdAsInt(); - String name = bean.getName(); - Species species = existingSpeciesById.get(id); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - - if (id != null && existingSpeciesIds.add(id)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.species.notExistingId.error", id)); - } - if (StringUtils.isBlank(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.species.noName.error", id)); - } - if (!delete && !existingSpeciesNames.add(name) && - (id == null || species != null && !species.getName().equals(name))) { - throw new IllegalArgumentException(t("tutti.service.referential.import.species.existingName.error", name)); - } - - if (delete) { - if (id == null) { - throw new IllegalArgumentException(t("tutti.service.referential.import.species.cannotDeleteWithoutId.error")); - } - if (persistenceService.isTemporarySpeciesUsed(id)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.species.used.error", id)); - } - toDelete.add(species.getReferenceTaxonId()); - existingSpeciesNames.remove(name); - - } else { - if (bean.getId() == null) { - toAdd.add(bean); - - } else { - bean.setReferenceTaxonId(species.getReferenceTaxonId()); - toUpdate.add(bean); - } - } - } - importer.close(); - - } finally { - IOUtils.closeQuietly(importer); - } - reader.close(); - - } catch (IOException e) { - throw new IOException(t("tutti.service.referential.import.species.error", file), e); - - } catch (ImportRuntimeException e) { - String message; - if (e.getCause() != null) { - message = e.getCause().getMessage(); - } else { - message = e.getMessage(); - } - throw new ApplicationTechnicalException(message, e); - - } finally { - - IOUtils.closeQuietly(reader); - } - - persistenceService.deleteTemporarySpecies(toDelete, true); - result.setNbRefDeleted(toDelete.size()); - - result.addAllRefsAdded(persistenceService.importTemporarySpecies(toAdd)); - result.addAllRefsUpdated(persistenceService.importTemporarySpecies(toUpdate)); - - return result; - } - - public ReferentialImportResult<Vessel> importTemporaryVessel(File file) throws IOException { - - ReferentialImportResult<Vessel> result = new ReferentialImportResult<>(); - - if (log.isInfoEnabled()) { - log.info("Will import vessels from file: " + file); - } - - // get all vessels - List<Vessel> existingVessels = Lists.newArrayList(persistenceService.getAllFishingVessel()); - existingVessels.addAll(persistenceService.getAllScientificVessel()); - - Set<String> existingVesselInternationalRegistrationCodes = - Sets.newHashSet(Iterables.transform(existingVessels, new Function<Vessel, String>() { - @Override - public String apply(Vessel input) { - return input.getInternationalRegistrationCode(); - } - })); - Map<String, Vessel> existingVesselsById = TuttiEntities.splitById(existingVessels); - Set<String> existingVesselIds = new HashSet<>(existingVesselsById.keySet()); - - List<Vessel> toAdd = Lists.newArrayList(); - List<Vessel> toUpdate = Lists.newArrayList(); - List<String> toDelete = Lists.newArrayList(); - - Reader reader = Files.newReader(file, Charsets.UTF_8); - VesselModel csvModel = new VesselModel(getCsvSeparator()); - try { - Import<VesselRow> importer = Import.newImport(csvModel, reader); - - try { - - for (final VesselRow bean : importer) { - - String id = StringUtils.trimToNull(bean.getId()); - String internationalRegistrationCode = bean.getInternationalRegistrationCode(); - Vessel vessel = existingVesselsById.get(id); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - - if (id != null && existingVesselIds.add(id)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.notExistingId.error", id)); - } - if (StringUtils.isBlank(internationalRegistrationCode)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.noInternationalRegistrationCode.error", id)); - } - if (!delete && !existingVesselInternationalRegistrationCodes.add(internationalRegistrationCode) && - (id == null || vessel != null && !vessel.getRegistrationCode().equals(internationalRegistrationCode))) { - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.existingInternationalRegistrationCode.error", - internationalRegistrationCode)); - } - - if (delete) { - if (id == null) { - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.cannotDeleteWithoutId.error")); - } - if (persistenceService.isTemporaryVesselUsed(id)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.used.error", id)); - } - toDelete.add(id); - existingVesselInternationalRegistrationCodes.remove(internationalRegistrationCode); - - } else { - if (id == null) { - toAdd.add(bean); - - } else { - toUpdate.add(bean); - } - } - } - importer.close(); - - } finally { - IOUtils.closeQuietly(importer); - } - reader.close(); - - } catch (IOException e) { - throw new IOException(t("tutti.service.referential.import.vessels.error", file), e); - - } catch (ImportRuntimeException e) { - String message; - if (e.getCause() != null) { - message = e.getCause().getMessage(); - } else { - message = e.getMessage(); - } - throw new ApplicationTechnicalException(message, e); - - } finally { - - IOUtils.closeQuietly(reader); - } - - persistenceService.deleteTemporaryVessels(toDelete, true); - result.setNbRefDeleted(toDelete.size()); - - result.addAllRefsAdded(persistenceService.importTemporaryVessel(toAdd)); - result.addAllRefsUpdated(persistenceService.importTemporaryVessel(toUpdate)); - - return result; - } - - public ReferentialImportResult<Person> importTemporaryPerson(File file) throws IOException { - - ReferentialImportResult<Person> result = new ReferentialImportResult<>(); - - if (log.isInfoEnabled()) { - log.info("Will import persons from file: " + file); - } - - List<Person> allPersons = persistenceService.getAllPerson(); - - // get all species names - Set<String> existingPersonFullNames = Sets.newHashSet(Iterables.transform(allPersons, new Function<Person, String>() { - @Override - public String apply(Person input) { - return getPersonFullName(input); - } - })); - Map<Integer, Person> existingPersonsById = TuttiEntities.splitByIdAsInt(allPersons); - - Set<Integer> existingPersonIds = new HashSet<>(existingPersonsById.keySet()); - - List<Person> toAdd = Lists.newArrayList(); - List<Person> toUpdate = Lists.newArrayList(); - List<Integer> toDelete = Lists.newArrayList(); - - Reader reader = Files.newReader(file, Charsets.UTF_8); - PersonModel csvModel = new PersonModel(getCsvSeparator()); - try { - Import<PersonRow> importer = Import.newImport(csvModel, reader); - - try { - - for (PersonRow bean : importer) { - - Integer id = bean.getIdAsInt(); - Person person = existingPersonsById.get(id); - String name = getPersonFullName(bean); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - - if (id != null && existingPersonIds.add(id)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.person.notExistingId.error", id)); - } - if (StringUtils.isBlank(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.person.noName.error", id)); - } - if (!delete && !existingPersonFullNames.add(name) && - (id == null || person != null && !person.getName().equals(name))) { - throw new IllegalArgumentException(t("tutti.service.referential.import.person.existingName.error", name)); - } - - if (delete) { - if (id == null) { - throw new IllegalArgumentException(t("tutti.service.referential.import.person.cannotDeleteWithoutId.error")); - } - if (persistenceService.isTemporaryPersonUsed(id)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.person.used.error", id)); - } - toDelete.add(id); - existingPersonFullNames.remove(name); - - } else { - if (bean.getId() == null) { - toAdd.add(bean); - - } else { - toUpdate.add(bean); - } - } - } - importer.close(); - - } finally { - IOUtils.closeQuietly(importer); - } - reader.close(); - - } catch (IOException e) { - throw new IOException(t("tutti.service.referential.import.persons.error", file), e); - - } catch (ImportRuntimeException e) { - String message; - if (e.getCause() != null) { - message = e.getCause().getMessage(); - } else { - message = e.getMessage(); - } - throw new ApplicationTechnicalException(message, e); - - } finally { - - IOUtils.closeQuietly(reader); - } - - persistenceService.deleteTemporaryPersons(toDelete, true); - result.setNbRefDeleted(toDelete.size()); - - result.addAllRefsAdded(persistenceService.importTemporaryPerson(toAdd)); - result.addAllRefsUpdated(persistenceService.importTemporaryPerson(toUpdate)); - - return result; - } - - protected String getPersonFullName(Person person) { - return StringUtils.lowerCase( - StringUtils.trimToEmpty(person.getFirstName()) + - StringUtils.trimToEmpty(person.getLastName())); - } - - public ReferentialImportResult<Gear> importTemporaryGear(File file) throws IOException { - - ReferentialImportResult<Gear> result = new ReferentialImportResult<>(); - - if (log.isInfoEnabled()) { - log.info("Will import gears from file: " + file); - } - - // get all vessel names - List<Gear> allGears = new ArrayList<>(persistenceService.getAllFishingGear()); - allGears.addAll(persistenceService.getAllScientificGear()); - - Set<String> existingGearNames = Sets.newHashSet(Iterables.transform(allGears, new Function<Gear, String>() { - @Override - public String apply(Gear input) { - return input.getName(); - } - })); - - Map<Integer, Gear> existingGearsById = TuttiEntities.splitByIdAsInt(allGears); - Set<Integer> existingGearIds = new HashSet<>(existingGearsById.keySet()); - - List<Gear> toAdd = Lists.newArrayList(); - List<Gear> toUpdate = Lists.newArrayList(); - List<Integer> toDelete = Lists.newArrayList(); - - Reader reader = Files.newReader(file, Charsets.UTF_8); - GearModel csvModel = new GearModel(getCsvSeparator()); - try { - Import<GearRow> importer = Import.newImport(csvModel, reader); - - try { - - for (GearRow bean : importer) { - - Integer id = bean.getIdAsInt(); - Gear gear = existingGearsById.get(id); - String name = bean.getName(); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - - if (id != null && existingGearIds.add(id)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.gear.notExistingId.error", id)); - } - if (StringUtils.isBlank(name)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.gear.noName.error", id)); - } - if (!delete && !existingGearNames.add(name) && - (id == null || gear != null && !gear.getName().equals(name))) { - throw new IllegalArgumentException(t("tutti.service.referential.import.gear.existingName.error", name)); - } - - if (delete) { - if (id == null) { - throw new IllegalArgumentException(t("tutti.service.referential.import.gear.cannotDeleteWithoutId.error")); - } - if (persistenceService.isTemporaryGearUsed(id)) { - throw new IllegalArgumentException(t("tutti.service.referential.import.gear.used.error", id)); - } - toDelete.add(id); - existingGearNames.remove(name); - - } else { - if (bean.getId() == null) { - toAdd.add(bean); - - } else { - toUpdate.add(bean); - } - } - } - importer.close(); - - } finally { - IOUtils.closeQuietly(importer); - } - reader.close(); - - } catch (IOException e) { - throw new IOException(t("tutti.service.referential.import.gears.error", file), e); - - } catch (ImportRuntimeException e) { - String message; - if (e.getCause() != null) { - message = e.getCause().getMessage(); - } else { - message = e.getMessage(); - } - throw new ApplicationTechnicalException(message, e); - - } finally { - - IOUtils.closeQuietly(reader); - } - - persistenceService.deleteTemporaryGears(toDelete, true); - result.setNbRefDeleted(toDelete.size()); - - result.addAllRefsAdded(persistenceService.importTemporaryGear(toAdd)); - result.addAllRefsUpdated(persistenceService.importTemporaryGear(toUpdate)); - - return result; - } +// public ReferentialImportResult<Species> importTemporarySpecies(File file) throws IOException { +// +// ReferentialImportResult<Species> result = new ReferentialImportResult<>(); +// +// if (log.isInfoEnabled()) { +// log.info("Will import species from file: " + file); +// } +// +// List<Species> allSpecies = persistenceService.getAllSpecies(); +// +// // get all species names +// Set<String> existingSpeciesNames = Sets.newHashSet(Iterables.transform(allSpecies, new Function<Species, String>() { +// @Override +// public String apply(Species input) { +// return input.getName(); +// } +// })); +// Map<Integer, Species> existingSpeciesById = TuttiEntities.splitByIdAsInt(allSpecies); +// Set<Integer> existingSpeciesIds = new HashSet<>(existingSpeciesById.keySet()); +// +// List<Species> toAdd = Lists.newArrayList(); +// List<Species> toUpdate = Lists.newArrayList(); +// List<Integer> toDelete = Lists.newArrayList(); +// +// Reader reader = Files.newReader(file, Charsets.UTF_8); +// SpeciesModel csvModel = new SpeciesModel(getCsvSeparator()); +// try { +// Import<SpeciesRow> importer = Import.newImport(csvModel, reader); +// +// try { +// +// for (SpeciesRow bean : importer) { +// +// Integer id = bean.getIdAsInt(); +// String name = bean.getName(); +// Species species = existingSpeciesById.get(id); +// boolean delete = BooleanUtils.isTrue(bean.getToDelete()); +// +// if (id != null && existingSpeciesIds.add(id)) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.species.notExistingId.error", id)); +// } +// if (StringUtils.isBlank(name)) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.species.noName.error", id)); +// } +// if (!delete && !existingSpeciesNames.add(name) && +// (id == null || species != null && !species.getName().equals(name))) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.species.existingName.error", name)); +// } +// +// if (delete) { +// if (id == null) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.species.cannotDeleteWithoutId.error")); +// } +// if (persistenceService.isTemporarySpeciesUsed(id)) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.species.used.error", id)); +// } +// toDelete.add(species.getReferenceTaxonId()); +// existingSpeciesNames.remove(name); +// +// } else { +// if (bean.getId() == null) { +// toAdd.add(bean); +// +// } else { +// bean.setReferenceTaxonId(species.getReferenceTaxonId()); +// toUpdate.add(bean); +// } +// } +// } +// importer.close(); +// +// } finally { +// IOUtils.closeQuietly(importer); +// } +// reader.close(); +// +// } catch (IOException e) { +// throw new IOException(t("tutti.service.referential.import.species.error", file), e); +// +// } catch (ImportRuntimeException e) { +// String message; +// if (e.getCause() != null) { +// message = e.getCause().getMessage(); +// } else { +// message = e.getMessage(); +// } +// throw new ApplicationTechnicalException(message, e); +// +// } finally { +// +// IOUtils.closeQuietly(reader); +// } +// +// persistenceService.deleteTemporarySpecies(toDelete, true); +// result.setNbRefDeleted(toDelete.size()); +// +// result.addAllRefsAdded(persistenceService.importTemporarySpecies(toAdd)); +// result.addAllRefsUpdated(persistenceService.importTemporarySpecies(toUpdate)); +// +// return result; +// } +// +// public ReferentialImportResult<Vessel> importTemporaryVessel(File file) throws IOException { +// +// ReferentialImportResult<Vessel> result = new ReferentialImportResult<>(); +// +// if (log.isInfoEnabled()) { +// log.info("Will import vessels from file: " + file); +// } +// +// // get all vessels +// List<Vessel> existingVessels = Lists.newArrayList(persistenceService.getAllFishingVessel()); +// existingVessels.addAll(persistenceService.getAllScientificVessel()); +// +// Set<String> existingVesselInternationalRegistrationCodes = +// Sets.newHashSet(Iterables.transform(existingVessels, new Function<Vessel, String>() { +// @Override +// public String apply(Vessel input) { +// return input.getInternationalRegistrationCode(); +// } +// })); +// Map<String, Vessel> existingVesselsById = TuttiEntities.splitById(existingVessels); +// Set<String> existingVesselIds = new HashSet<>(existingVesselsById.keySet()); +// +// List<Vessel> toAdd = Lists.newArrayList(); +// List<Vessel> toUpdate = Lists.newArrayList(); +// List<String> toDelete = Lists.newArrayList(); +// +// Reader reader = Files.newReader(file, Charsets.UTF_8); +// VesselModel csvModel = new VesselModel(getCsvSeparator()); +// try { +// Import<VesselRow> importer = Import.newImport(csvModel, reader); +// +// try { +// +// for (final VesselRow bean : importer) { +// +// String id = StringUtils.trimToNull(bean.getId()); +// String internationalRegistrationCode = bean.getInternationalRegistrationCode(); +// Vessel vessel = existingVesselsById.get(id); +// boolean delete = BooleanUtils.isTrue(bean.getToDelete()); +// +// if (id != null && existingVesselIds.add(id)) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.notExistingId.error", id)); +// } +// if (StringUtils.isBlank(internationalRegistrationCode)) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.noInternationalRegistrationCode.error", id)); +// } +// if (!delete && !existingVesselInternationalRegistrationCodes.add(internationalRegistrationCode) && +// (id == null || vessel != null && !vessel.getRegistrationCode().equals(internationalRegistrationCode))) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.existingInternationalRegistrationCode.error", +// internationalRegistrationCode)); +// } +// +// if (delete) { +// if (id == null) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.cannotDeleteWithoutId.error")); +// } +// if (persistenceService.isTemporaryVesselUsed(id)) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.used.error", id)); +// } +// toDelete.add(id); +// existingVesselInternationalRegistrationCodes.remove(internationalRegistrationCode); +// +// } else { +// if (id == null) { +// toAdd.add(bean); +// +// } else { +// toUpdate.add(bean); +// } +// } +// } +// importer.close(); +// +// } finally { +// IOUtils.closeQuietly(importer); +// } +// reader.close(); +// +// } catch (IOException e) { +// throw new IOException(t("tutti.service.referential.import.vessels.error", file), e); +// +// } catch (ImportRuntimeException e) { +// String message; +// if (e.getCause() != null) { +// message = e.getCause().getMessage(); +// } else { +// message = e.getMessage(); +// } +// throw new ApplicationTechnicalException(message, e); +// +// } finally { +// +// IOUtils.closeQuietly(reader); +// } +// +// persistenceService.deleteTemporaryVessels(toDelete, true); +// result.setNbRefDeleted(toDelete.size()); +// +// result.addAllRefsAdded(persistenceService.importTemporaryVessel(toAdd)); +// result.addAllRefsUpdated(persistenceService.importTemporaryVessel(toUpdate)); +// +// return result; +// } +// +// public ReferentialImportResult<Person> importTemporaryPerson(File file) throws IOException { +// +// ReferentialImportResult<Person> result = new ReferentialImportResult<>(); +// +// if (log.isInfoEnabled()) { +// log.info("Will import persons from file: " + file); +// } +// +// List<Person> allPersons = persistenceService.getAllPerson(); +// +// // get all species names +// Set<String> existingPersonFullNames = Sets.newHashSet(Iterables.transform(allPersons, new Function<Person, String>() { +// @Override +// public String apply(Person input) { +// return getPersonFullName(input); +// } +// })); +// Map<Integer, Person> existingPersonsById = TuttiEntities.splitByIdAsInt(allPersons); +// +// Set<Integer> existingPersonIds = new HashSet<>(existingPersonsById.keySet()); +// +// List<Person> toAdd = Lists.newArrayList(); +// List<Person> toUpdate = Lists.newArrayList(); +// List<Integer> toDelete = Lists.newArrayList(); +// +// Reader reader = Files.newReader(file, Charsets.UTF_8); +// PersonModel csvModel = new PersonModel(getCsvSeparator()); +// try { +// Import<PersonRow> importer = Import.newImport(csvModel, reader); +// +// try { +// +// for (PersonRow bean : importer) { +// +// Integer id = bean.getIdAsInt(); +// Person person = existingPersonsById.get(id); +// String name = getPersonFullName(bean); +// boolean delete = BooleanUtils.isTrue(bean.getToDelete()); +// +// if (id != null && existingPersonIds.add(id)) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.person.notExistingId.error", id)); +// } +// if (StringUtils.isBlank(name)) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.person.noName.error", id)); +// } +// if (!delete && !existingPersonFullNames.add(name) && +// (id == null || person != null && !person.getName().equals(name))) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.person.existingName.error", name)); +// } +// +// if (delete) { +// if (id == null) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.person.cannotDeleteWithoutId.error")); +// } +// if (persistenceService.isTemporaryPersonUsed(id)) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.person.used.error", id)); +// } +// toDelete.add(id); +// existingPersonFullNames.remove(name); +// +// } else { +// if (bean.getId() == null) { +// toAdd.add(bean); +// +// } else { +// toUpdate.add(bean); +// } +// } +// } +// importer.close(); +// +// } finally { +// IOUtils.closeQuietly(importer); +// } +// reader.close(); +// +// } catch (IOException e) { +// throw new IOException(t("tutti.service.referential.import.persons.error", file), e); +// +// } catch (ImportRuntimeException e) { +// String message; +// if (e.getCause() != null) { +// message = e.getCause().getMessage(); +// } else { +// message = e.getMessage(); +// } +// throw new ApplicationTechnicalException(message, e); +// +// } finally { +// +// IOUtils.closeQuietly(reader); +// } +// +// persistenceService.deleteTemporaryPersons(toDelete, true); +// result.setNbRefDeleted(toDelete.size()); +// +// result.addAllRefsAdded(persistenceService.importTemporaryPerson(toAdd)); +// result.addAllRefsUpdated(persistenceService.importTemporaryPerson(toUpdate)); +// +// return result; +// } +// +// protected String getPersonFullName(Person person) { +// return StringUtils.lowerCase( +// StringUtils.trimToEmpty(person.getFirstName()) + +// StringUtils.trimToEmpty(person.getLastName())); +// } +// +// public ReferentialImportResult<Gear> importTemporaryGear(File file) throws IOException { +// +// ReferentialImportResult<Gear> result = new ReferentialImportResult<>(); +// +// if (log.isInfoEnabled()) { +// log.info("Will import gears from file: " + file); +// } +// +// // get all vessel names +// List<Gear> allGears = new ArrayList<>(persistenceService.getAllFishingGear()); +// allGears.addAll(persistenceService.getAllScientificGear()); +// +// Set<String> existingGearNames = Sets.newHashSet(Iterables.transform(allGears, new Function<Gear, String>() { +// @Override +// public String apply(Gear input) { +// return input.getName(); +// } +// })); +// +// Map<Integer, Gear> existingGearsById = TuttiEntities.splitByIdAsInt(allGears); +// Set<Integer> existingGearIds = new HashSet<>(existingGearsById.keySet()); +// +// List<Gear> toAdd = Lists.newArrayList(); +// List<Gear> toUpdate = Lists.newArrayList(); +// List<Integer> toDelete = Lists.newArrayList(); +// +// Reader reader = Files.newReader(file, Charsets.UTF_8); +// GearModel csvModel = new GearModel(getCsvSeparator()); +// try { +// Import<GearRow> importer = Import.newImport(csvModel, reader); +// +// try { +// +// for (GearRow bean : importer) { +// +// Integer id = bean.getIdAsInt(); +// Gear gear = existingGearsById.get(id); +// String name = bean.getName(); +// boolean delete = BooleanUtils.isTrue(bean.getToDelete()); +// +// if (id != null && existingGearIds.add(id)) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.gear.notExistingId.error", id)); +// } +// if (StringUtils.isBlank(name)) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.gear.noName.error", id)); +// } +// if (!delete && !existingGearNames.add(name) && +// (id == null || gear != null && !gear.getName().equals(name))) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.gear.existingName.error", name)); +// } +// +// if (delete) { +// if (id == null) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.gear.cannotDeleteWithoutId.error")); +// } +// if (persistenceService.isTemporaryGearUsed(id)) { +// throw new IllegalArgumentException(t("tutti.service.referential.import.gear.used.error", id)); +// } +// toDelete.add(id); +// existingGearNames.remove(name); +// +// } else { +// if (bean.getId() == null) { +// toAdd.add(bean); +// +// } else { +// toUpdate.add(bean); +// } +// } +// } +// importer.close(); +// +// } finally { +// IOUtils.closeQuietly(importer); +// } +// reader.close(); +// +// } catch (IOException e) { +// throw new IOException(t("tutti.service.referential.import.gears.error", file), e); +// +// } catch (ImportRuntimeException e) { +// String message; +// if (e.getCause() != null) { +// message = e.getCause().getMessage(); +// } else { +// message = e.getMessage(); +// } +// throw new ApplicationTechnicalException(message, e); +// +// } finally { +// +// IOUtils.closeQuietly(reader); +// } +// +// persistenceService.deleteTemporaryGears(toDelete, true); +// result.setNbRefDeleted(toDelete.size()); +// +// result.addAllRefsAdded(persistenceService.importTemporaryGear(toAdd)); +// result.addAllRefsUpdated(persistenceService.importTemporaryGear(toUpdate)); +// +// return result; +// } public void exportExistingTemporarySpecies(File file) throws IOException { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java new file mode 100644 index 0000000..c2a0646 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java @@ -0,0 +1,249 @@ +package fr.ifremer.tutti.service.referential; + +import com.google.common.base.Charsets; +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import com.google.common.io.Files; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Gears; +import fr.ifremer.tutti.service.AbstractTuttiService; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.TuttiServiceContext; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Export; +import org.nuiton.csv.Import; +import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 11/16/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.10 + */ +public class ReferentialTemporaryGearService extends AbstractTuttiService { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(ReferentialTemporaryGearService.class); + + protected PersistenceService persistenceService; + + @Override + public void setServiceContext(TuttiServiceContext context) { + super.setServiceContext(context); + persistenceService = getService(PersistenceService.class); + } + + public ReferentialImportResult<Gear> importTemporaryGear(File file) throws IOException { + + if (log.isInfoEnabled()) { + log.info("Will import gears from file: " + file); + } + + // get all vessel names + List<Gear> allGears = new ArrayList<>(persistenceService.getAllFishingGear()); + allGears.addAll(persistenceService.getAllScientificGear()); + + ImportRequestResult<Gear, Integer> requestResult = processImportFile(file, allGears); + + ReferentialImportResult<Gear> result = new ReferentialImportResult<>(); + + if (requestResult.withToDelete()) { + + Collection<Integer> idsToDelete = requestResult.getIdsToDelete(); + persistenceService.deleteTemporaryGears(idsToDelete, true); + result.setNbRefDeleted(idsToDelete.size()); + + } + + if (requestResult.withToAdd()) { + + Collection<Gear> entitiesToAdd = requestResult.getEntitiesToAdd(); + Collection<Gear> entitiesAdded = persistenceService.importTemporaryGear(entitiesToAdd); + result.addAllRefsAdded(entitiesAdded); + + } + + if (requestResult.withToupdate()) { + + Collection<Gear> entitiesToUpdate = requestResult.getEntitiesToUpdate(); + Collection<Gear> entitiesUpdated = persistenceService.importTemporaryGear(entitiesToUpdate); + result.addAllRefsUpdated(entitiesUpdated); + + } + + return result; + } + + public void exportExistingTemporaryGear(File file) throws IOException { + + if (log.isInfoEnabled()) { + log.info("Getting all gears from database"); + } + + List<Gear> targetList = Lists.newArrayList(persistenceService.getAllFishingGear()); + targetList.addAll(persistenceService.getAllScientificGear()); + if (log.isInfoEnabled()) { + log.info("Got " + targetList.size() + " gears"); + } + List<Gear> toExport = persistenceService.retainTemporaryGearList(targetList); + if (log.isInfoEnabled()) { + log.info("Got " + toExport.size() + " temporary gears"); + } + exportTemporaryGear(file, toExport); + + } + + public void exportTemporaryGearExample(File file) throws IOException { + + List<Gear> toExport = Lists.newArrayList(); + + { + Gear g = Gears.newGear(); + g.setName("Gear fishing name 1"); + g.setLabel("Gear fishing label 1"); + toExport.add(g); + } + { + Gear g = Gears.newGear(); + g.setName("Gear fishing name 2"); + g.setLabel("Gear fishing label 2"); + toExport.add(g); + } + { + Gear g = Gears.newGear(); + g.setName("Gear scientific name 3"); + g.setLabel("Gear scientific label 3"); + g.setScientificGear(true); + toExport.add(g); + } + { + Gear g = Gears.newGear(); + g.setName("Gear scientific name 4"); + g.setLabel("Gear scientific label 4"); + g.setScientificGear(true); + toExport.add(g); + } + exportTemporaryGear(file, toExport); + + } + + protected ImportRequestResult<Gear, Integer> processImportFile(File file, List<Gear> existingEntities) { + + ImportRequestResult<Gear, Integer> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Gear>newIdAstIntFunction(), Gears.GET_NAME); + + try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { + + GearModel csvModel = new GearModel(getCsvSeparator()); + try (Import<GearRow> importer = Import.newImport(csvModel, reader)) { + + for (GearRow bean : importer) { + + importGear(bean, requestResult); + + } + + } + + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.vessels.error", file), e); + + } catch (ImportRuntimeException e) { + String message; + if (e.getCause() != null) { + message = e.getCause().getMessage(); + } else { + message = e.getMessage(); + } + throw new ApplicationTechnicalException(message, e); + + } + + return requestResult; + + } + + private void importGear(GearRow bean, ImportRequestResult<Gear, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + Gear gear = requestResult.getExistingEntityById(id); + String name = bean.getName(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (id != null && requestResult.addExistingEntityId(id)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.gear.notExistingId.error", id)); + } + if (StringUtils.isBlank(name)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.gear.noName.error", id)); + } + if (!delete && !requestResult.addExistingNaturalId(name) && + (id == null || gear != null && !gear.getName().equals(name))) { + throw new IllegalArgumentException(t("tutti.service.referential.import.gear.existingName.error", name)); + } + + if (delete) { + if (id == null) { + throw new IllegalArgumentException(t("tutti.service.referential.import.gear.cannotDeleteWithoutId.error")); + } + if (persistenceService.isTemporaryGearUsed(id)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.gear.used.error", id)); + } + requestResult.addIdToDelete(id); + requestResult.removeExistingNaturalId(name); + + } else { + if (bean.getId() == null) { + requestResult.addEntityToAdd(bean.toEntity()); + + } else { + requestResult.addEntityToUpdate(bean.toEntity()); + } + } + } + + protected void exportTemporaryGear(File file, List<Gear> toExport) throws IOException { + + GearModel csvModel = new GearModel(getCsvSeparator()); + + BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); + + List<GearRow> toExportRows = Lists.transform(toExport, new Function<Gear, GearRow>() { + @Override + public GearRow apply(Gear gear) { + return new GearRow(gear); + } + }); + + try { + Export export = Export.newExport(csvModel, toExportRows); + export.write(writer); + writer.close(); + } catch (IOException e) { + throw e; + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.export.gear.error", file), e); + } finally { + IOUtils.closeQuietly(writer); + } + } + + protected char getCsvSeparator() { + return context.getConfig().getCsvSeparator(); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java new file mode 100644 index 0000000..1fa0e0a --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java @@ -0,0 +1,244 @@ +package fr.ifremer.tutti.service.referential; + +import com.google.common.base.Charsets; +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import com.google.common.io.Files; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Persons; +import fr.ifremer.tutti.service.AbstractTuttiService; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.TuttiServiceContext; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Export; +import org.nuiton.csv.Import; +import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.util.Collection; +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 11/16/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.10 + */ +public class ReferentialTemporaryPersonService extends AbstractTuttiService { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(ReferentialTemporaryPersonService.class); + + protected PersistenceService persistenceService; + + @Override + public void setServiceContext(TuttiServiceContext context) { + super.setServiceContext(context); + persistenceService = getService(PersistenceService.class); + } + + public ReferentialImportResult<Person> importTemporaryPerson(File file) throws IOException { + + if (log.isInfoEnabled()) { + log.info("Will import persons from file: " + file); + } + + List<Person> allPersons = persistenceService.getAllPerson(); + + ImportRequestResult<Person, Integer> requestResult = processImportFile(file, allPersons); + + ReferentialImportResult<Person> result = new ReferentialImportResult<>(); + + if (requestResult.withToDelete()) { + + Collection<Integer> idsToDelete = requestResult.getIdsToDelete(); + + persistenceService.deleteTemporaryPersons(idsToDelete, true); + result.setNbRefDeleted(idsToDelete.size()); + + } + + if (requestResult.withToAdd()) { + + Collection<Person> entitiesToAdd = requestResult.getEntitiesToAdd(); + + Collection<Person> entitiesAdded = persistenceService.importTemporaryPerson(entitiesToAdd); + result.addAllRefsAdded(entitiesAdded); + } + + if (requestResult.withToupdate()) { + + Collection<Person> entitiesToUpdate = requestResult.getEntitiesToUpdate(); + Collection<Person> entitiesUpdated = persistenceService.importTemporaryPerson(entitiesToUpdate); + result.addAllRefsUpdated(entitiesUpdated); + + } + + return result; + } + + public void exportExistingTemporaryPerson(File file) throws IOException { + + if (log.isInfoEnabled()) { + log.info("Getting all persons from database"); + } + List<Person> targetList = Lists.newArrayList(persistenceService.getAllPerson()); + if (log.isInfoEnabled()) { + log.info("Got " + targetList.size() + " persons"); + } + List<Person> toExport = persistenceService.retainTemporaryPersonList(targetList); + if (log.isInfoEnabled()) { + log.info("Got " + toExport.size() + " temporary persons"); + } + exportTemporaryPerson(file, toExport); + + } + + public void exportTemporaryPersonExample(File file) throws IOException { + + List<Person> toExport = Lists.newArrayList(); + + Person p; + + p = Persons.newPerson(); + p.setFirstName("First name 1"); + p.setLastName("Last name 1"); + toExport.add(p); + + p = Persons.newPerson(); + p.setFirstName("First name 2"); + p.setLastName("Last name 2"); + toExport.add(p); + + p = Persons.newPerson(); + p.setFirstName("First name 3"); + p.setLastName("Last name 3"); + toExport.add(p); + + exportTemporaryPerson(file, toExport); + + } + + protected ImportRequestResult<Person, Integer> processImportFile(File file, List<Person> existingEntities) { + + ImportRequestResult<Person, Integer> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Person>newIdAstIntFunction(), Persons.GET_FULL_NAME); + + try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { + + PersonModel csvModel = new PersonModel(getCsvSeparator()); + try (Import<PersonRow> importer = Import.newImport(csvModel, reader)) { + + for (PersonRow bean : importer) { + + importPerson(bean, requestResult); + + } + + } + + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.persons.error", file), e); + + } catch (ImportRuntimeException e) { + String message; + if (e.getCause() != null) { + message = e.getCause().getMessage(); + } else { + message = e.getMessage(); + } + throw new ApplicationTechnicalException(message, e); + + } + + return requestResult; + + } + + private void importPerson(PersonRow bean, ImportRequestResult<Person, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + Person person = requestResult.getExistingEntityById(id); + String name = Persons.GET_FULL_NAME.apply(bean.toEntity()); + + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (id != null && requestResult.addExistingEntityId(id)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.person.notExistingId.error", id)); + } + if (StringUtils.isBlank(name)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.person.noName.error", id)); + } + if (!delete && !requestResult.addExistingNaturalId(name) && + (id == null || person != null && !person.getName().equals(name))) { + throw new IllegalArgumentException(t("tutti.service.referential.import.person.existingName.error", name)); + } + + if (delete) { + if (id == null) { + throw new IllegalArgumentException(t("tutti.service.referential.import.person.cannotDeleteWithoutId.error")); + } + if (persistenceService.isTemporaryPersonUsed(id)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.person.used.error", id)); + } + requestResult.addIdToDelete(id); + requestResult.removeExistingNaturalId(name); + + } else { + if (bean.getId() == null) { + requestResult.addEntityToAdd(bean.toEntity()); + + } else { + requestResult.addEntityToUpdate(bean.toEntity()); + } + } + + } + +// protected String getPersonFullName(Person person) { +// return StringUtils.lowerCase( +// StringUtils.trimToEmpty(person.getFirstName()) + +// StringUtils.trimToEmpty(person.getLastName())); +// } + + protected void exportTemporaryPerson(File file, List<Person> toExport) throws IOException { + + PersonModel csvModel = new PersonModel(getCsvSeparator()); + + BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); + + List<PersonRow> toExportRows = Lists.transform(toExport, new Function<Person, PersonRow>() { + @Override + public PersonRow apply(Person person) { + return new PersonRow(person); + } + }); + + try { + Export export = Export.newExport(csvModel, toExportRows); + export.write(writer); + writer.close(); + } catch (IOException e) { + throw e; + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.export.person.error", file), e); + } finally { + IOUtils.closeQuietly(writer); + } + } + + protected char getCsvSeparator() { + return context.getConfig().getCsvSeparator(); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java new file mode 100644 index 0000000..0b76233 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java @@ -0,0 +1,239 @@ +package fr.ifremer.tutti.service.referential; + +import com.google.common.base.Charsets; +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import com.google.common.io.Files; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Speciess; +import fr.ifremer.tutti.service.AbstractTuttiService; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.TuttiServiceContext; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Export; +import org.nuiton.csv.Import; +import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.util.Collection; +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 11/16/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.10 + */ +public class ReferentialTemporarySpeciesService extends AbstractTuttiService { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(ReferentialTemporarySpeciesService.class); + + protected PersistenceService persistenceService; + + @Override + public void setServiceContext(TuttiServiceContext context) { + super.setServiceContext(context); + persistenceService = getService(PersistenceService.class); + } + + public ReferentialImportResult<Species> importTemporarySpecies(File file) { + + if (log.isInfoEnabled()) { + log.info("Will import species from file: " + file); + } + + List<Species> allSpecies = persistenceService.getAllSpecies(); + + ImportRequestResult<Species, Integer> requestResult = processImportFile(file, allSpecies); + + ReferentialImportResult<Species> result = new ReferentialImportResult<>(); + + if (requestResult.withToDelete()) { + + Collection<Integer> idsToDelete = requestResult.getIdsToDelete(); + persistenceService.deleteTemporarySpecies(idsToDelete, true); + result.setNbRefDeleted(idsToDelete.size()); + + } + + if (requestResult.withToAdd()) { + + Collection<Species> entitiesToAdd = requestResult.getEntitiesToAdd(); + Collection<Species> entitiesAdded = persistenceService.importTemporarySpecies(entitiesToAdd); + result.addAllRefsAdded(entitiesAdded); + } + + if (requestResult.withToupdate()) { + + Collection<Species> entitiesToUpdate = requestResult.getEntitiesToUpdate(); + Collection<Species> entitiesUpdated = persistenceService.importTemporarySpecies(entitiesToUpdate); + result.addAllRefsUpdated(entitiesUpdated); + + } + + return result; + } + + public void exportExistingTemporarySpecies(File file) throws IOException { + + if (log.isInfoEnabled()) { + log.info("Getting all species from database"); + } + List<Species> targetList = Lists.newArrayList(persistenceService.getAllReferentSpecies()); + + if (log.isInfoEnabled()) { + log.info("Got " + targetList.size() + " species"); + } + List<Species> toExport = persistenceService.retainTemporarySpeciesList(targetList); + if (log.isInfoEnabled()) { + log.info("Got " + toExport.size() + " temporary species"); + } + exportTemporarySpecies(file, toExport); + + } + + public void exportTemporarySpeciesExample(File file) throws IOException { + + List<Species> toExport = Lists.newArrayList(); + + { + Species s = Speciess.newSpecies(); + s.setName("Temporary Species name 1"); + toExport.add(s); + } + { + Species s = Speciess.newSpecies(); + s.setName("Temporary Species name 2"); + toExport.add(s); + } + { + Species s = Speciess.newSpecies(); + s.setName("Temporary Species name 3"); + toExport.add(s); + } + exportTemporarySpecies(file, toExport); + + } + + protected ImportRequestResult<Species, Integer> processImportFile(File file, List<Species> existingEntities) { + + ImportRequestResult<Species, Integer> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Species>newIdAstIntFunction(), Speciess.GET_NAME); + + try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { + + SpeciesModel csvModel = new SpeciesModel(getCsvSeparator()); + try (Import<SpeciesRow> importer = Import.newImport(csvModel, reader)) { + + for (SpeciesRow bean : importer) { + + importSpecies(bean, requestResult); + + } + + } + + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.species.error", file), e); + + } catch (ImportRuntimeException e) { + String message; + if (e.getCause() != null) { + message = e.getCause().getMessage(); + } else { + message = e.getMessage(); + } + throw new ApplicationTechnicalException(message, e); + + } + + return requestResult; + + } + + protected void exportTemporarySpecies(File file, List<Species> toExport) throws IOException { + + SpeciesModel csvModel = new SpeciesModel(getCsvSeparator()); + + BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); + + List<SpeciesRow> toExportRows = Lists.transform(toExport, new Function<Species, SpeciesRow>() { + @Override + public SpeciesRow apply(Species species) { + return new SpeciesRow(species); + } + }); + + try { + Export export = Export.newExport(csvModel, toExportRows); + export.write(writer); + writer.close(); + } catch (IOException e) { + throw e; + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.export.species.error", file), e); + } finally { + IOUtils.closeQuietly(writer); + } + + } + + protected void importSpecies(SpeciesRow bean, ImportRequestResult<Species, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getName(); + Species species = requestResult.getExistingEntityById(id); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (id != null && requestResult.addExistingEntityId(id)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.species.notExistingId.error", id)); + } + if (StringUtils.isBlank(name)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.species.noName.error", id)); + } + if (!delete && !requestResult.addExistingNaturalId(name) && + (id == null || species != null && !species.getName().equals(name))) { + throw new IllegalArgumentException(t("tutti.service.referential.import.species.existingName.error", name)); + } + + if (delete) { + if (id == null) { + throw new IllegalArgumentException(t("tutti.service.referential.import.species.cannotDeleteWithoutId.error")); + } + if (persistenceService.isTemporarySpeciesUsed(id)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.species.used.error", id)); + } + requestResult.addIdToDelete(species.getReferenceTaxonId()); + requestResult.removeExistingNaturalId(name); + + } else { + if (bean.getId() == null) { + + requestResult.addEntityToAdd(bean.toEntity(null)); + + } else { + + requestResult.addEntityToUpdate(bean.toEntity(species.getReferenceTaxonId())); + + } + } + + } + + protected char getCsvSeparator() { + return context.getConfig().getCsvSeparator(); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java new file mode 100644 index 0000000..f5cef17 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java @@ -0,0 +1,255 @@ +package fr.ifremer.tutti.service.referential; + +import com.google.common.base.Charsets; +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import com.google.common.io.Files; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.persistence.entities.referential.Vessels; +import fr.ifremer.tutti.service.AbstractTuttiService; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.TuttiServiceContext; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Export; +import org.nuiton.csv.Import; +import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.util.Collection; +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 11/16/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.10 + */ +public class ReferentialTemporaryVesselService extends AbstractTuttiService { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(ReferentialTemporaryVesselService.class); + + protected PersistenceService persistenceService; + + @Override + public void setServiceContext(TuttiServiceContext context) { + super.setServiceContext(context); + persistenceService = getService(PersistenceService.class); + } + + public ReferentialImportResult<Vessel> importTemporaryVessel(File file) throws IOException { + + if (log.isInfoEnabled()) { + log.info("Will import vessels from file: " + file); + } + + // get all vessels + List<Vessel> existingVessels = Lists.newArrayList(persistenceService.getAllFishingVessel()); + existingVessels.addAll(persistenceService.getAllScientificVessel()); + + ImportRequestResult<Vessel, String> requestResult = processImportFile(file, existingVessels); + + ReferentialImportResult<Vessel> result = new ReferentialImportResult<>(); + + if (requestResult.withToDelete()) { + + Collection<String> idsToDelete = requestResult.getIdsToDelete(); + persistenceService.deleteTemporaryVessels(idsToDelete, true); + result.setNbRefDeleted(idsToDelete.size()); + + } + + if (requestResult.withToAdd()) { + + Collection<Vessel> entitiesToAdd = requestResult.getEntitiesToAdd(); + Collection<Vessel> entitiesAdded = persistenceService.importTemporaryVessel(entitiesToAdd); + result.addAllRefsAdded(entitiesAdded); + } + + if (requestResult.withToupdate()) { + + Collection<Vessel> entitiesToUpdate = requestResult.getEntitiesToUpdate(); + Collection<Vessel> entitiesUpdated = persistenceService.importTemporaryVessel(entitiesToUpdate); + result.addAllRefsUpdated(entitiesUpdated); + + } + + return result; + } + + public void exportExistingTemporaryVessel(File file) throws IOException { + + if (log.isInfoEnabled()) { + log.info("Getting all vessels from database"); + } + List<Vessel> targetList = Lists.newArrayList(persistenceService.getAllFishingVessel()); + targetList.addAll(persistenceService.getAllScientificVessel()); + if (log.isInfoEnabled()) { + log.info("Got " + targetList.size() + " vessels"); + } + List<Vessel> toExport = persistenceService.retainTemporaryVesselList(targetList); + + if (log.isInfoEnabled()) { + log.info("Got " + toExport.size() + " temporary vessels"); + } + exportTemporaryVessel(file, toExport); + + } + + public void exportTemporaryVesselExample(File file) throws IOException { + + List<Vessel> toExport = Lists.newArrayList(); + + { + Vessel v = Vessels.newVessel(); + v.setRegistrationCode("RegCode1"); + v.setName("Temporary fishing vessel name 1"); + v.setInternationalRegistrationCode("International registration code F1"); + v.setScientificVessel(false); + toExport.add(v); + } + { + Vessel v = Vessels.newVessel(); + v.setRegistrationCode("RegCode2"); + v.setName("Temporary fishing vessel name 2"); + v.setInternationalRegistrationCode("International registration code F2"); + v.setScientificVessel(false); + toExport.add(v); + } + { + Vessel v = Vessels.newVessel(); + v.setRegistrationCode("RegCode3"); + v.setName("Temporary scientific vessel name 3"); + v.setInternationalRegistrationCode("International registration code S3"); + v.setScientificVessel(true); + toExport.add(v); + } + { + Vessel v = Vessels.newVessel(); + v.setRegistrationCode("RegCode4"); + v.setName("Temporary scientific vessel name 4"); + v.setInternationalRegistrationCode("International registration code S4"); + v.setScientificVessel(true); + toExport.add(v); + } + exportTemporaryVessel(file, toExport); + + } + + protected ImportRequestResult<Vessel, String> processImportFile(File file, List<Vessel> existingEntities) { + + ImportRequestResult<Vessel, String> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Vessel>newIdFunction(), Vessels.GET_INTERNAL_REGISTRATION_CODE); + + try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { + + VesselModel csvModel = new VesselModel(getCsvSeparator()); + try (Import<VesselRow> importer = Import.newImport(csvModel, reader)) { + + for (VesselRow bean : importer) { + + importVessel(bean, requestResult); + + } + + } + + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.vessels.error", file), e); + + } catch (ImportRuntimeException e) { + String message; + if (e.getCause() != null) { + message = e.getCause().getMessage(); + } else { + message = e.getMessage(); + } + throw new ApplicationTechnicalException(message, e); + + } + + return requestResult; + + } + + private void importVessel(VesselRow bean, ImportRequestResult<Vessel, String> requestResult) { + + String id = StringUtils.trimToNull(bean.getId()); + String internationalRegistrationCode = bean.getInternationalRegistrationCode(); + Vessel vessel = requestResult.getExistingEntityById(id); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (id != null && requestResult.addExistingEntityId(id)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.notExistingId.error", id)); + } + if (StringUtils.isBlank(internationalRegistrationCode)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.noInternationalRegistrationCode.error", id)); + } + if (!delete && !requestResult.addExistingNaturalId(internationalRegistrationCode) && + (id == null || vessel != null && !vessel.getRegistrationCode().equals(internationalRegistrationCode))) { + throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.existingInternationalRegistrationCode.error", + internationalRegistrationCode)); + } + + if (delete) { + if (id == null) { + throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.cannotDeleteWithoutId.error")); + } + if (persistenceService.isTemporaryVesselUsed(id)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.used.error", id)); + } + requestResult.addIdToDelete(id); + requestResult.removeExistingNaturalId(internationalRegistrationCode); + + } else { + if (id == null) { + requestResult.addEntityToAdd(bean.toEntity()); + + } else { + requestResult.addEntityToUpdate(bean.toEntity()); + } + } + } + + protected void exportTemporaryVessel(File file, List<Vessel> toExport) throws IOException { + + VesselModel csvModel = new VesselModel(getCsvSeparator()); + + BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); + + List<VesselRow> toExportRows = Lists.transform(toExport, new Function<Vessel, VesselRow>() { + @Override + public VesselRow apply(Vessel vessel) { + return new VesselRow(vessel); + } + }); + + try { + Export export = Export.newExport(csvModel, toExportRows); + export.write(writer); + writer.close(); + } catch (IOException e) { + throw e; + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.export.vessel.error", file), e); + } finally { + IOUtils.closeQuietly(writer); + } + } + + + protected char getCsvSeparator() { + return context.getConfig().getCsvSeparator(); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesModel.java index 3de629f..ebfe0db 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesModel.java @@ -22,20 +22,10 @@ package fr.ifremer.tutti.service.referential; * #L% */ -import com.google.common.base.Function; -import com.google.common.collect.Iterables; -import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Speciess; import fr.ifremer.tutti.service.TuttiCsvUtil; -import org.nuiton.csv.Common; - -import java.text.ParseException; -import java.util.Collection; -import java.util.Set; import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.t; /** * Model to import / export {@link Species} in csv format. diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesRow.java index f6ed807..ffd1511 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/SpeciesRow.java @@ -26,16 +26,24 @@ package fr.ifremer.tutti.service.referential; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.SpeciesBean; +import fr.ifremer.tutti.persistence.entities.referential.Speciess; /** * @author Kevin Morin (Code Lutin) * @since 3.8 */ -public class SpeciesRow extends SpeciesBean { +public class SpeciesRow { + + public static final String PROPERTY_ID = "id"; + + public static final String PROPERTY_NAME = "name"; public static final String PROPERTY_TO_DELETE = "toDelete"; + protected String id; + + protected String name; + protected Boolean toDelete; public SpeciesRow() { @@ -49,6 +57,22 @@ public class SpeciesRow extends SpeciesBean { setName(species.getName()); } + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + public Boolean getToDelete() { return toDelete; } @@ -56,4 +80,21 @@ public class SpeciesRow extends SpeciesBean { public void setToDelete(Boolean toDelete) { this.toDelete = toDelete; } + + public Species toEntity(Integer referenceTaxonId) { + Species species = Speciess.newSpecies(); + species.setId(getId()); + species.setName(getName()); + species.setReferenceTaxonId(referenceTaxonId); + return species; + } + + public Integer getIdAsInt() { + Integer idAsInt = null; + if (id != null) { + idAsInt = Integer.valueOf(id); + } + return idAsInt; + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselModel.java index b39b6c6..5c14ed9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselModel.java @@ -24,7 +24,6 @@ package fr.ifremer.tutti.service.referential; import fr.ifremer.adagio.core.dao.technical.hibernate.TemporaryDataHelper; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Vessels; import fr.ifremer.tutti.service.TuttiCsvUtil; import org.apache.commons.lang3.StringUtils; import org.nuiton.csv.Common; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselRow.java index 0863607..e6d6908 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselRow.java @@ -26,16 +26,32 @@ package fr.ifremer.tutti.service.referential; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.VesselBean; +import fr.ifremer.tutti.persistence.entities.referential.Vessels; /** * @author Kevin Morin (Code Lutin) * @since 3.8 */ -public class VesselRow extends VesselBean { +public class VesselRow { + + public static final String PROPERTY_ID = "id"; + + public static final String PROPERTY_NAME = "name"; + + public static final String PROPERTY_SCIENTIFIC_VESSEL = "scientificVessel"; + + public static final String PROPERTY_INTERNATIONAL_REGISTRATION_CODE = "internationalRegistrationCode"; public static final String PROPERTY_TO_DELETE = "toDelete"; + protected String id; + + protected String name; + + protected boolean scientificVessel; + + protected String internationalRegistrationCode; + protected Boolean toDelete; public VesselRow() { @@ -46,12 +62,44 @@ public class VesselRow extends VesselBean { super(); Preconditions.checkNotNull(vessel); setId(vessel.getId()); - setRegistrationCode(vessel.getRegistrationCode()); +// setRegistrationCode(vessel.getRegistrationCode()); setName(vessel.getName()); setInternationalRegistrationCode(vessel.getInternationalRegistrationCode()); setScientificVessel(vessel.isScientificVessel()); } + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isScientificVessel() { + return scientificVessel; + } + + public void setScientificVessel(boolean scientificVessel) { + this.scientificVessel = scientificVessel; + } + + public String getInternationalRegistrationCode() { + return internationalRegistrationCode; + } + + public void setInternationalRegistrationCode(String internationalRegistrationCode) { + this.internationalRegistrationCode = internationalRegistrationCode; + } + public Boolean getToDelete() { return toDelete; } @@ -59,4 +107,23 @@ public class VesselRow extends VesselBean { public void setToDelete(Boolean toDelete) { this.toDelete = toDelete; } + + public Vessel toEntity() { + + Vessel vessel = Vessels.newVessel(); + vessel.setId(getId()); + vessel.setName(getName()); + vessel.setScientificVessel(isScientificVessel()); + vessel.setInternationalRegistrationCode(getInternationalRegistrationCode()); + return vessel; + + } + + public Integer getIdAsInt() { + Integer idAsInt = null; + if (id != null) { + idAsInt = Integer.valueOf(id); + } + return idAsInt; + } } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5079Test.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5079Test.java index e53c9f0..b51c1d8 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5079Test.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceAno5079Test.java @@ -22,6 +22,7 @@ package fr.ifremer.tutti.service.pupitri; * #L% */ +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import fr.ifremer.tutti.TuttiConfigurationOption; @@ -46,7 +47,7 @@ import org.nuiton.decorator.Decorator; import java.io.File; import java.io.IOException; -import java.util.List; +import java.util.Collection; import java.util.Set; /** @@ -105,8 +106,8 @@ public class PupitriImportServiceAno5079Test { // Import MELA-NGE species SpeciesBean melagSpecies = new SpeciesBean(); melagSpecies.setName("MELA-NGE"); - List<Species> specieses = persistenceService.importTemporarySpecies(Lists.<Species>newArrayList(melagSpecies)); - specieses.get(0).setRefTaxCode(melagSpecies.getName()); + Collection<Species> specieses = persistenceService.importTemporarySpecies(Lists.<Species>newArrayList(melagSpecies)); + Iterables.get(specieses, 0).setRefTaxCode(melagSpecies.getName()); File trunk = dbResource.copyClassPathResource("pupitri/ano-5079.tnk", "pupitri.tnk"); File carroussel = dbResource.copyClassPathResource("pupitri/ano-5079.car", "pupitri.car"); diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialImportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialImportServiceTest.java deleted file mode 100644 index a8b8bab..0000000 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialImportServiceTest.java +++ /dev/null @@ -1,464 +0,0 @@ -package fr.ifremer.tutti.service.referential; - -/* - * #%L - * Tutti :: Service - * %% - * Copyright (C) 2012 - 2014 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.base.Charsets; -import com.google.common.io.Files; -import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId; -import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueId; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Cruises; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.FishingOperations; -import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; -import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchs; -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -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.jaxx.application.ApplicationTechnicalException; - -import java.io.File; -import java.util.List; - -/** - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public class ReferentialImportServiceTest { - - @ClassRule - public static final ServiceDbResource dbResource = ServiceDbResource.writeDb("dbCGFS"); - - protected File dataDirectory; - - // SPECIES FILES - - private static final String SPECIES_FILE_CONTENT = - "id;name;toDelete\n" + - ";Temporary Species name 1;\n" + - ";Temporary Species name 2;\n" + - ";Temporary Species name 3;"; - - private static final String SPECIES_DUPLICATE_NAME_FILE_CONTENT = - "id;name;toDelete\n" + - ";Temporary Species name 1;\n" + - ";Temporary Species name 1;"; - - private static final String SPECIES_BLANK_NAME_FILE_CONTENT = - "id;name;toDelete\n" + - "; ;"; - - private static final String SPECIES_UPDATE_FILE_CONTENT = - "id;name;toDelete\n" + - "-1;Temporary Species name 11;N\n" + - "-2;Temporary Species name 2;Y"; - - private static final String SPECIES_DELETE_USED_FILE_CONTENT = - "id;name;toDelete\n" + - "-1;Temporary Species name 11;Y"; - - // GEAR FILES - - private static final String GEAR_FILE_CONTENT = - "id;name;label;scientificGear;toDelete\n" + - ";Gear fishing name 1;Gear fishing label 1;N;\n" + - ";Gear fishing name 2;Gear fishing label 2;N;\n" + - ";Gear scientific name 3;Gear scientific label 3;Y;\n" + - ";Gear scientific name 4;Gear scientific label 4;Y;"; - - private static final String GEAR_DUPLICATE_NAME_FILE_CONTENT = - "id;name;label;scientificGear;toDelete\n" + - ";Temporary Gear name 1;;;\n" + - ";Temporary Gear name 1;;;"; - - private static final String GEAR_BLANK_NAME_FILE_CONTENT = - "id;name;label;scientificGear;toDelete\n" + - "; ;;;"; - - private static final String GEAR_UPDATE_FILE_CONTENT = - "id;name;label;scientificGear;toDelete\n" + - "-1;Temporary Gear name 11;;N;N\n" + - "-2;Temporary Gear name 2;;;Y"; - - private static final String GEAR_DELETE_USED_FILE_CONTENT = - "id;name;label;scientificGear;toDelete\n" + - "-1;Temporary Gear name 11;;;Y"; - - // PERSON FILES - - private static final String PERSON_FILE_CONTENT = - "id;firstName;lastName;toDelete\n" + - ";First name 1;Last name 1;\n" + - ";First name 2;Last name 2;\n" + - ";First name 3;Last name 3;"; - - private static final String PERSON_UPDATE_FILE_CONTENT = - "id;firstName;lastName;toDelete\n" + - "-1;First name 11;Last name 11;N\n" + - "-2;;;Y"; - - private static final String PERSON_DELETE_USED_FILE_CONTENT = - "id;firstName;lastName;toDelete\n" + - "-1;First name 11;Last name 11;Y"; - - // VESSEL FILES - - private static final String VESSEL_FILE_CONTENT = - "id;name;internationalRegistrationCode;scientificVessel;toDelete\n" + - ";Temporary fishing vessel name 1;International registration code F1;N;\n" + - ";Temporary fishing vessel name 2;International registration code F2;N;\n" + - ";Temporary scientific vessel name 3;International registration code S3;Y;\n" + - ";Temporary scientific vessel name 4;International registration code S4;Y;"; - - private static final String DUPLICATE_VESSEL_FILE_CONTENT = - "id;name;internationalRegistrationCode;scientificVessel;toDelete\n" + - ";Temporary fishing vessel name 1;International registration code F1;N;\n" + - ";Temporary fishing vessel name 1;International registration code F1;N;\n" + - ";Temporary fishing vessel name 2;International registration code F2;N;\n" + - ";Temporary scientific vessel name 3;International registration code S3;Y;\n" + - ";Temporary scientific vessel name 4;International registration code S4;Y;"; - - protected ReferentialImportService service; - - protected PersistenceService persistenceService; - - public static final String OPERATION_1_ID = "100108"; - - @Before - public void setUp() throws Exception { - - dataDirectory = dbResource.getConfig().getDataDirectory(); - - TuttiServiceContext serviceContext = dbResource.getServiceContext(); - - serviceContext.getConfig().setCsvSeparator(';'); - - service = serviceContext.getService(ReferentialImportService.class); - - persistenceService = serviceContext.getService(PersistenceService.class); - - } - - @Test - public void importTemporarySpecies() throws Exception { - - File file = new File(dataDirectory, "importSpecies.csv"); - - Files.createParentDirs(file); - - // successful import - Files.write(SPECIES_FILE_CONTENT, file, Charsets.UTF_8); - - ReferentialImportResult<Species> result = service.importTemporarySpecies(file); - List<Species> addedSpecies = result.getRefAdded(); - - Assert.assertNotNull(result); - Assert.assertEquals(3, addedSpecies.size()); - for (int i = 1; i <= 3; i++) { - Species actual = addedSpecies.get(i - 1); - Assert.assertNotNull(actual); - Assert.assertEquals("-" + i, actual.getId()); - Assert.assertEquals("Temporary Species name " + i, actual.getName()); - } - // try to reimport them - try { - service.importTemporarySpecies(file); - Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { - Assert.assertTrue(true); - } - - // try to update species with id -1 and remove id -2 - Assert.assertNotNull(persistenceService.getSpeciesByReferenceTaxonId(-1)); - Assert.assertNotNull(persistenceService.getSpeciesByReferenceTaxonId(-2)); - - Files.write(SPECIES_UPDATE_FILE_CONTENT, file, Charsets.UTF_8); - result = service.importTemporarySpecies(file); - List<Species> updatedSpecies = result.getRefUpdated(); - Assert.assertNotNull(result); - Assert.assertEquals(1, updatedSpecies.size()); - Species actual = updatedSpecies.get(0); - Assert.assertNotNull(actual); - Assert.assertEquals("-1", actual.getId()); - Assert.assertEquals("Temporary Species name 11", actual.getName()); - - Assert.assertNull(persistenceService.getSpeciesByReferenceTaxonId(-2)); - - // try to delete used species - SpeciesBatch batch = persistenceService.getRootSpeciesBatch(OPERATION_1_ID, false).getChildren().get(0); - batch.setFishingOperation(persistenceService.getFishingOperation(OPERATION_1_ID)); - batch.setSpecies(persistenceService.getSpeciesByReferenceTaxonId(-1)); - persistenceService.saveSpeciesBatch(batch); - - Files.write(SPECIES_DELETE_USED_FILE_CONTENT, file, Charsets.UTF_8); - try { - service.importTemporarySpecies(file); - Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { - Assert.assertTrue(true); - } - - } - - @Test - public void importNotExistingIdTemporarySpecies() throws Exception { - - File file = new File(dataDirectory, "importSpecies.csv"); - - Files.createParentDirs(file); - - // try to import not existing id - Files.write(SPECIES_UPDATE_FILE_CONTENT, file, Charsets.UTF_8); - try { - service.importTemporarySpecies(file); - Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { - Assert.assertTrue(true); - } - } - - @Test - public void importBlankNameTemporarySpecies() throws Exception { - - File file = new File(dataDirectory, "importSpecies.csv"); - - Files.createParentDirs(file); - // try to import blank name - Files.write(SPECIES_BLANK_NAME_FILE_CONTENT, file, Charsets.UTF_8); - try { - service.importTemporarySpecies(file); - Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { - Assert.assertTrue(true); - } - } - - @Test - public void importDuplicateTemporarySpecies() throws Exception { - - File file = new File(dataDirectory, "importSpecies.csv"); - - Files.createParentDirs(file); - - // try to import duplicate names - Files.write(SPECIES_DUPLICATE_NAME_FILE_CONTENT, file, Charsets.UTF_8); - try { - service.importTemporarySpecies(file); - Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { - Assert.assertTrue(true); - } - } - - @Test - public void importTemporaryVessel() throws Exception { - File file = new File(dataDirectory, "importVessel.csv"); - - Files.createParentDirs(file); - - Files.write(VESSEL_FILE_CONTENT, file, Charsets.UTF_8); - - ReferentialImportResult<Vessel> result = service.importTemporaryVessel(file); - List<Vessel> addedVessels = result.getRefAdded(); - - Assert.assertNotNull(result); - Assert.assertEquals(4, addedVessels.size()); - for (int i = 1; i <= 2; i++) { - Vessel actual = addedVessels.get(i - 1); - Assert.assertNotNull(actual); - Assert.assertEquals("#TEMP¿" + actual.getInternationalRegistrationCode(), actual.getId()); - Assert.assertEquals("Temporary fishing vessel name " + i, actual.getName()); - Assert.assertEquals("International registration code F" + i, actual.getInternationalRegistrationCode()); - Assert.assertFalse(actual.isScientificVessel()); - } - for (int i = 3; i <= 4; i++) { - Vessel actual = addedVessels.get(i - 1); - Assert.assertNotNull(actual); - Assert.assertEquals("#TEMP¿" + actual.getInternationalRegistrationCode(), actual.getId()); - Assert.assertEquals("Temporary scientific vessel name " + i, actual.getName()); - Assert.assertEquals("International registration code S" + i, actual.getInternationalRegistrationCode()); - Assert.assertTrue(actual.isScientificVessel()); - } - - // try to reimport them - try { - service.importTemporaryVessel(file); - Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { - Assert.assertTrue(true); - } - - // TODO test to replace a used vessel - } - - @Test - public void importDuplicateTemporaryVessel() throws Exception { - File file = new File(dataDirectory, "importVessel.csv"); - - Files.createParentDirs(file); - - Files.write(DUPLICATE_VESSEL_FILE_CONTENT, file, Charsets.UTF_8); - - try { - service.importTemporaryVessel(file); - Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { - // good duplicate vessel - } - } - - @Test - public void importTemporaryPerson() throws Exception { - File file = new File(dataDirectory, "importPerson.csv"); - - Files.createParentDirs(file); - - Files.write(PERSON_FILE_CONTENT, file, Charsets.UTF_8); - - // successful import - ReferentialImportResult<Person> result = service.importTemporaryPerson(file); - List<Person> addedPersons = result.getRefAdded(); - - Assert.assertNotNull(result); - Assert.assertEquals(3, addedPersons.size()); - for (int i = 1; i <= 3; i++) { - Person actual = addedPersons.get(i - 1); - Assert.assertNotNull(actual); - Assert.assertEquals("-" + i, actual.getId()); - Assert.assertEquals("First name " + i, actual.getFirstName()); - Assert.assertEquals("Last name " + i, actual.getLastName()); - } - - // TODO test to replace a used person - } - - @Test - public void importNotExistingIdTemporaryPerson() throws Exception { - - File file = new File(dataDirectory, "importPerson.csv"); - - Files.createParentDirs(file); - - // try to import not existing id - Files.write(PERSON_UPDATE_FILE_CONTENT, file, Charsets.UTF_8); - try { - service.importTemporaryPerson(file); - Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { - Assert.assertTrue(true); - } - } - - @Test - public void importTemporaryGear() throws Exception { - File file = new File(dataDirectory, "importGear.csv"); - - Files.createParentDirs(file); - - Files.write(GEAR_FILE_CONTENT, file, Charsets.UTF_8); - - ReferentialImportResult<Gear> result = service.importTemporaryGear(file); - List<Gear> addedGears = result.getRefAdded(); - - Assert.assertNotNull(result); - Assert.assertEquals(4, addedGears.size()); - for (int i = 1; i <= 2; i++) { - Gear actual = addedGears.get(i - 1); - Assert.assertNotNull(actual); - Assert.assertTrue(actual.getId().startsWith("-")); - Assert.assertEquals("Gear fishing name " + i, actual.getName()); - Assert.assertEquals("Gear fishing label " + i, actual.getLabel()); - Assert.assertFalse(actual.isScientificGear()); - } - for (int i = 3; i <= 4; i++) { - Gear actual = addedGears.get(i - 1); - Assert.assertNotNull(actual); - Assert.assertTrue(actual.getId().startsWith("-")); - Assert.assertEquals("Gear scientific name " + i, actual.getName()); - Assert.assertEquals("Gear scientific label " + i, actual.getLabel()); - Assert.assertTrue(actual.isScientificGear()); - } - - // TODO test to replace a used gear - } - - @Test - public void importNotExistingIdTemporaryGear() throws Exception { - - File file = new File(dataDirectory, "importGear.csv"); - - Files.createParentDirs(file); - - // try to import not existing id - Files.write(GEAR_UPDATE_FILE_CONTENT, file, Charsets.UTF_8); - try { - service.importTemporaryGear(file); - Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { - Assert.assertTrue(true); - } - } - - @Test - public void importBlankNameTemporaryGear() throws Exception { - - File file = new File(dataDirectory, "importGear.csv"); - - Files.createParentDirs(file); - // try to import blank name - Files.write(GEAR_BLANK_NAME_FILE_CONTENT, file, Charsets.UTF_8); - try { - service.importTemporaryGear(file); - Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { - Assert.assertTrue(true); - } - } - - @Test - public void importDuplicateTemporaryGear() throws Exception { - - File file = new File(dataDirectory, "importGear.csv"); - - Files.createParentDirs(file); - - // try to import duplicate names - Files.write(GEAR_DUPLICATE_NAME_FILE_CONTENT, file, Charsets.UTF_8); - try { - service.importTemporaryGear(file); - Assert.fail(); - } catch (IllegalArgumentException | ApplicationTechnicalException e) { - Assert.assertTrue(true); - } - } - -} diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialExportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryExportServiceTest.java similarity index 79% rename from tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialExportServiceTest.java rename to tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryExportServiceTest.java index 4861779..62b65ca 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialExportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryExportServiceTest.java @@ -37,42 +37,40 @@ import java.io.File; * @author tchemit <chemit@codelutin.com> * @since 1.0 */ -public class ReferentialExportServiceTest { +public class ReferentialTemporaryExportServiceTest { @ClassRule public static final ServiceDbResource dbResource = - ServiceDbResource.writeDb("dbCGFS"); + ServiceDbResource.readDb("dbCGFS"); protected File dataDirectory; - private static final String SPECIES_FILE_CONTENT = + private static final String SPECIES_FILE_CONTENT = "id;name;toDelete\n" + ";Temporary Species name 1;\n" + ";Temporary Species name 2;\n" + ";Temporary Species name 3;"; - private static final String GEAR_FILE_CONTENT = + private static final String GEAR_FILE_CONTENT = "id;name;label;scientificGear;toDelete\n" + ";Gear fishing name 1;Gear fishing label 1;N;\n" + ";Gear fishing name 2;Gear fishing label 2;N;\n" + ";Gear scientific name 3;Gear scientific label 3;Y;\n" + ";Gear scientific name 4;Gear scientific label 4;Y;"; - private static final String PERSON_FILE_CONTENT = + private static final String PERSON_FILE_CONTENT = "id;firstName;lastName;toDelete\n" + ";First name 1;Last name 1;\n" + ";First name 2;Last name 2;\n" + ";First name 3;Last name 3;"; - private static final String VESSEL_FILE_CONTENT = + private static final String VESSEL_FILE_CONTENT = "id;name;internationalRegistrationCode;scientificVessel;toDelete\n" + ";Temporary fishing vessel name 1;International registration code F1;N;\n" + ";Temporary fishing vessel name 2;International registration code F2;N;\n" + ";Temporary scientific vessel name 3;International registration code S3;Y;\n" + ";Temporary scientific vessel name 4;International registration code S4;Y;"; - protected ReferentialImportService service; - @Before public void setUp() throws Exception { @@ -81,33 +79,25 @@ public class ReferentialExportServiceTest { TuttiServiceContext serviceContext = dbResource.getServiceContext(); serviceContext.getConfig().setCsvSeparator(';'); - - service = serviceContext.getService(ReferentialImportService.class); } + @Test - public void exportTemporarySpeciesExample() throws Exception { + public void exportTemporaryGearExample() throws Exception { - File file = new File(dataDirectory, "exportSpecies.csv"); + File file = new File(dataDirectory, "exportGear.csv"); Assert.assertFalse(file.exists()); - service.exportTemporarySpeciesExample(file); - Assert.assertTrue(file.exists()); - String exportFileToString = Files.toString(file, Charsets.UTF_8).trim(); - Assert.assertEquals(SPECIES_FILE_CONTENT, exportFileToString); - } + TuttiServiceContext serviceContext = dbResource.getServiceContext(); + ReferentialTemporaryGearService service = serviceContext.getService(ReferentialTemporaryGearService.class); - @Test - public void exportTemporaryVesselExample() throws Exception { - File file = new File(dataDirectory, "exportVessel.csv"); + service.exportTemporaryGearExample(file); - Assert.assertFalse(file.exists()); - service.exportTemporaryVesselExample(file); Assert.assertTrue(file.exists()); String exportFileToString = Files.toString(file, Charsets.UTF_8).trim(); - Assert.assertEquals(VESSEL_FILE_CONTENT, exportFileToString); + Assert.assertEquals(GEAR_FILE_CONTENT, exportFileToString); } @Test @@ -116,7 +106,12 @@ public class ReferentialExportServiceTest { File file = new File(dataDirectory, "exportPerson.csv"); Assert.assertFalse(file.exists()); + + TuttiServiceContext serviceContext = dbResource.getServiceContext(); + ReferentialTemporaryPersonService service = serviceContext.getService(ReferentialTemporaryPersonService.class); + service.exportTemporaryPersonExample(file); + Assert.assertTrue(file.exists()); String exportFileToString = Files.toString(file, Charsets.UTF_8).trim(); @@ -124,16 +119,38 @@ public class ReferentialExportServiceTest { } @Test - public void exportTemporaryGearExample() throws Exception { + public void exportTemporarySpeciesExample() throws Exception { - File file = new File(dataDirectory, "exportGear.csv"); + File file = new File(dataDirectory, "exportSpecies.csv"); Assert.assertFalse(file.exists()); - service.exportTemporaryGearExample(file); + + TuttiServiceContext serviceContext = dbResource.getServiceContext(); + ReferentialTemporarySpeciesService service = serviceContext.getService(ReferentialTemporarySpeciesService.class); + + service.exportTemporarySpeciesExample(file); + Assert.assertTrue(file.exists()); String exportFileToString = Files.toString(file, Charsets.UTF_8).trim(); - Assert.assertEquals(GEAR_FILE_CONTENT, exportFileToString); + Assert.assertEquals(SPECIES_FILE_CONTENT, exportFileToString); + } + + @Test + public void exportTemporaryVesselExample() throws Exception { + File file = new File(dataDirectory, "exportVessel.csv"); + + Assert.assertFalse(file.exists()); + + TuttiServiceContext serviceContext = dbResource.getServiceContext(); + ReferentialTemporaryVesselService service = serviceContext.getService(ReferentialTemporaryVesselService.class); + + service.exportTemporaryVesselExample(file); + + Assert.assertTrue(file.exists()); + + String exportFileToString = Files.toString(file, Charsets.UTF_8).trim(); + Assert.assertEquals(VESSEL_FILE_CONTENT, exportFileToString); } } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearServiceTest.java new file mode 100644 index 0000000..7084ceb --- /dev/null +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearServiceTest.java @@ -0,0 +1,148 @@ +package fr.ifremer.tutti.service.referential; + +import com.google.common.base.Charsets; +import com.google.common.io.Files; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +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.jaxx.application.ApplicationTechnicalException; + +import java.io.File; +import java.util.List; + +public class ReferentialTemporaryGearServiceTest { + + @ClassRule + public static final ServiceDbResource dbResource = ServiceDbResource.writeDb("dbCGFS"); + + protected File dataDirectory; + + protected ReferentialTemporaryGearService service; + + private static final String GEAR_FILE_CONTENT = + "id;name;label;scientificGear;toDelete\n" + + ";Gear fishing name 1;Gear fishing label 1;N;\n" + + ";Gear fishing name 2;Gear fishing label 2;N;\n" + + ";Gear scientific name 3;Gear scientific label 3;Y;\n" + + ";Gear scientific name 4;Gear scientific label 4;Y;"; + + private static final String GEAR_DUPLICATE_NAME_FILE_CONTENT = + "id;name;label;scientificGear;toDelete\n" + + ";Temporary Gear name 1;;;\n" + + ";Temporary Gear name 1;;;"; + + private static final String GEAR_BLANK_NAME_FILE_CONTENT = + "id;name;label;scientificGear;toDelete\n" + + "; ;;;"; + + private static final String GEAR_UPDATE_FILE_CONTENT = + "id;name;label;scientificGear;toDelete\n" + + "-1;Temporary Gear name 11;;N;N\n" + + "-2;Temporary Gear name 2;;;Y"; + + private static final String GEAR_DELETE_USED_FILE_CONTENT = + "id;name;label;scientificGear;toDelete\n" + + "-1;Temporary Gear name 11;;;Y"; + + + @Before + public void setUp() throws Exception { + + dataDirectory = dbResource.getConfig().getDataDirectory(); + + TuttiServiceContext serviceContext = dbResource.getServiceContext(); + + serviceContext.getConfig().setCsvSeparator(';'); + + service = serviceContext.getService(ReferentialTemporaryGearService.class); + + } + + @Test + public void importTemporaryGear() throws Exception { + File file = new File(dataDirectory, "importGear.csv"); + + Files.createParentDirs(file); + + Files.write(GEAR_FILE_CONTENT, file, Charsets.UTF_8); + + ReferentialImportResult<Gear> result = service.importTemporaryGear(file); + List<Gear> addedGears = result.getRefAdded(); + + Assert.assertNotNull(result); + Assert.assertEquals(4, addedGears.size()); + for (int i = 1; i <= 2; i++) { + Gear actual = addedGears.get(i - 1); + Assert.assertNotNull(actual); + Assert.assertTrue(actual.getId().startsWith("-")); + Assert.assertEquals("Gear fishing name " + i, actual.getName()); + Assert.assertEquals("Gear fishing label " + i, actual.getLabel()); + Assert.assertFalse(actual.isScientificGear()); + } + for (int i = 3; i <= 4; i++) { + Gear actual = addedGears.get(i - 1); + Assert.assertNotNull(actual); + Assert.assertTrue(actual.getId().startsWith("-")); + Assert.assertEquals("Gear scientific name " + i, actual.getName()); + Assert.assertEquals("Gear scientific label " + i, actual.getLabel()); + Assert.assertTrue(actual.isScientificGear()); + } + + // TODO test to replace a used gear + } + + @Test + public void importNotExistingIdTemporaryGear() throws Exception { + + File file = new File(dataDirectory, "importGear.csv"); + + Files.createParentDirs(file); + + // try to import not existing id + Files.write(GEAR_UPDATE_FILE_CONTENT, file, Charsets.UTF_8); + try { + service.importTemporaryGear(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + Assert.assertTrue(true); + } + } + + @Test + public void importBlankNameTemporaryGear() throws Exception { + + File file = new File(dataDirectory, "importGear.csv"); + + Files.createParentDirs(file); + // try to import blank name + Files.write(GEAR_BLANK_NAME_FILE_CONTENT, file, Charsets.UTF_8); + try { + service.importTemporaryGear(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + Assert.assertTrue(true); + } + } + + @Test + public void importDuplicateTemporaryGear() throws Exception { + + File file = new File(dataDirectory, "importGear.csv"); + + Files.createParentDirs(file); + + // try to import duplicate names + Files.write(GEAR_DUPLICATE_NAME_FILE_CONTENT, file, Charsets.UTF_8); + try { + service.importTemporaryGear(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + Assert.assertTrue(true); + } + } + +} \ No newline at end of file diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonServiceTest.java new file mode 100644 index 0000000..fd56385 --- /dev/null +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonServiceTest.java @@ -0,0 +1,98 @@ +package fr.ifremer.tutti.service.referential; + +import com.google.common.base.Charsets; +import com.google.common.io.Files; +import fr.ifremer.tutti.persistence.entities.referential.Person; +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.jaxx.application.ApplicationTechnicalException; + +import java.io.File; +import java.util.List; + +public class ReferentialTemporaryPersonServiceTest { + + @ClassRule + public static final ServiceDbResource dbResource = ServiceDbResource.writeDb("dbCGFS"); + + protected File dataDirectory; + + protected ReferentialTemporaryPersonService service; + + private static final String PERSON_FILE_CONTENT = + "id;firstName;lastName;toDelete\n" + + ";First name 1;Last name 1;\n" + + ";First name 2;Last name 2;\n" + + ";First name 3;Last name 3;"; + + private static final String PERSON_UPDATE_FILE_CONTENT = + "id;firstName;lastName;toDelete\n" + + "-1;First name 11;Last name 11;N\n" + + "-2;;;Y"; + + private static final String PERSON_DELETE_USED_FILE_CONTENT = + "id;firstName;lastName;toDelete\n" + + "-1;First name 11;Last name 11;Y"; + + + @Before + public void setUp() throws Exception { + + dataDirectory = dbResource.getConfig().getDataDirectory(); + + TuttiServiceContext serviceContext = dbResource.getServiceContext(); + + serviceContext.getConfig().setCsvSeparator(';'); + + service = serviceContext.getService(ReferentialTemporaryPersonService.class); + + } + + @Test + public void importTemporaryPerson() throws Exception { + File file = new File(dataDirectory, "importPerson.csv"); + + Files.createParentDirs(file); + + Files.write(PERSON_FILE_CONTENT, file, Charsets.UTF_8); + + // successful import + ReferentialImportResult<Person> result = service.importTemporaryPerson(file); + List<Person> addedPersons = result.getRefAdded(); + + Assert.assertNotNull(result); + Assert.assertEquals(3, addedPersons.size()); + for (int i = 1; i <= 3; i++) { + Person actual = addedPersons.get(i - 1); + Assert.assertNotNull(actual); + Assert.assertEquals("-" + i, actual.getId()); + Assert.assertEquals("First name " + i, actual.getFirstName()); + Assert.assertEquals("Last name " + i, actual.getLastName()); + } + + // TODO test to replace a used person + } + + @Test + public void importNotExistingIdTemporaryPerson() throws Exception { + + File file = new File(dataDirectory, "importPerson.csv"); + + Files.createParentDirs(file); + + // try to import not existing id + Files.write(PERSON_UPDATE_FILE_CONTENT, file, Charsets.UTF_8); + try { + service.importTemporaryPerson(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + Assert.assertTrue(true); + } + } + + +} \ No newline at end of file diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesServiceTest.java new file mode 100644 index 0000000..4a244ef --- /dev/null +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesServiceTest.java @@ -0,0 +1,183 @@ +package fr.ifremer.tutti.service.referential; + +import com.google.common.base.Charsets; +import com.google.common.io.Files; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.persistence.entities.referential.Species; +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.jaxx.application.ApplicationTechnicalException; + +import java.io.File; +import java.util.List; + +public class ReferentialTemporarySpeciesServiceTest { + + private static final String SPECIES_FILE_CONTENT = + "id;name;toDelete\n" + + ";Temporary Species name 1;\n" + + ";Temporary Species name 2;\n" + + ";Temporary Species name 3;"; + + private static final String SPECIES_DUPLICATE_NAME_FILE_CONTENT = + "id;name;toDelete\n" + + ";Temporary Species name 1;\n" + + ";Temporary Species name 1;"; + + private static final String SPECIES_BLANK_NAME_FILE_CONTENT = + "id;name;toDelete\n" + + "; ;"; + + private static final String SPECIES_UPDATE_FILE_CONTENT = + "id;name;toDelete\n" + + "-1;Temporary Species name 11;N\n" + + "-2;Temporary Species name 2;Y"; + + private static final String SPECIES_DELETE_USED_FILE_CONTENT = + "id;name;toDelete\n" + + "-1;Temporary Species name 11;Y"; + + @ClassRule + public static final ServiceDbResource dbResource = ServiceDbResource.writeDb("dbCGFS"); + + protected File dataDirectory; + + + protected ReferentialTemporarySpeciesService service; + + protected PersistenceService persistenceService; + + public static final String OPERATION_1_ID = "100108"; + + @Before + public void setUp() throws Exception { + + dataDirectory = dbResource.getConfig().getDataDirectory(); + + TuttiServiceContext serviceContext = dbResource.getServiceContext(); + + serviceContext.getConfig().setCsvSeparator(';'); + + service = serviceContext.getService(ReferentialTemporarySpeciesService.class); + + persistenceService = serviceContext.getService(PersistenceService.class); + + } + + @Test + public void importTemporarySpecies() throws Exception { + + File file = new File(dataDirectory, "importSpecies.csv"); + + Files.createParentDirs(file); + + // successful import + Files.write(SPECIES_FILE_CONTENT, file, Charsets.UTF_8); + + ReferentialImportResult<Species> result = service.importTemporarySpecies(file); + List<Species> addedSpecies = result.getRefAdded(); + + Assert.assertNotNull(result); + Assert.assertEquals(3, addedSpecies.size()); + for (int i = 1; i <= 3; i++) { + Species actual = addedSpecies.get(i - 1); + Assert.assertNotNull(actual); + Assert.assertEquals("-" + i, actual.getId()); + Assert.assertEquals("Temporary Species name " + i, actual.getName()); + } + // try to reimport them + try { + service.importTemporarySpecies(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + Assert.assertTrue(true); + } + + // try to update species with id -1 and remove id -2 + Assert.assertNotNull(persistenceService.getSpeciesByReferenceTaxonId(-1)); + Assert.assertNotNull(persistenceService.getSpeciesByReferenceTaxonId(-2)); + + Files.write(SPECIES_UPDATE_FILE_CONTENT, file, Charsets.UTF_8); + result = service.importTemporarySpecies(file); + List<Species> updatedSpecies = result.getRefUpdated(); + Assert.assertNotNull(result); + Assert.assertEquals(1, updatedSpecies.size()); + Species actual = updatedSpecies.get(0); + Assert.assertNotNull(actual); + Assert.assertEquals("-1", actual.getId()); + Assert.assertEquals("Temporary Species name 11", actual.getName()); + + Assert.assertNull(persistenceService.getSpeciesByReferenceTaxonId(-2)); + + // try to delete used species + SpeciesBatch batch = persistenceService.getRootSpeciesBatch(OPERATION_1_ID, false).getChildren().get(0); + batch.setFishingOperation(persistenceService.getFishingOperation(OPERATION_1_ID)); + batch.setSpecies(persistenceService.getSpeciesByReferenceTaxonId(-1)); + persistenceService.saveSpeciesBatch(batch); + + Files.write(SPECIES_DELETE_USED_FILE_CONTENT, file, Charsets.UTF_8); + try { + service.importTemporarySpecies(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + Assert.assertTrue(true); + } + + } + + @Test + public void importNotExistingIdTemporarySpecies() throws Exception { + + File file = new File(dataDirectory, "importSpecies.csv"); + + Files.createParentDirs(file); + + // try to import not existing id + Files.write(SPECIES_UPDATE_FILE_CONTENT, file, Charsets.UTF_8); + try { + service.importTemporarySpecies(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + Assert.assertTrue(true); + } + } + + @Test + public void importBlankNameTemporarySpecies() throws Exception { + + File file = new File(dataDirectory, "importSpecies.csv"); + + Files.createParentDirs(file); + // try to import blank name + Files.write(SPECIES_BLANK_NAME_FILE_CONTENT, file, Charsets.UTF_8); + try { + service.importTemporarySpecies(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + Assert.assertTrue(true); + } + } + + @Test + public void importDuplicateTemporarySpecies() throws Exception { + + File file = new File(dataDirectory, "importSpecies.csv"); + + Files.createParentDirs(file); + + // try to import duplicate names + Files.write(SPECIES_DUPLICATE_NAME_FILE_CONTENT, file, Charsets.UTF_8); + try { + service.importTemporarySpecies(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + Assert.assertTrue(true); + } + } + +} \ No newline at end of file diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselServiceTest.java new file mode 100644 index 0000000..91da354 --- /dev/null +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselServiceTest.java @@ -0,0 +1,113 @@ +package fr.ifremer.tutti.service.referential; + +import com.google.common.base.Charsets; +import com.google.common.io.Files; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +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.jaxx.application.ApplicationTechnicalException; + +import java.io.File; +import java.util.List; + +public class ReferentialTemporaryVesselServiceTest { + + @ClassRule + public static final ServiceDbResource dbResource = ServiceDbResource.writeDb("dbCGFS"); + + protected File dataDirectory; + + protected ReferentialTemporaryVesselService service; + + private static final String VESSEL_FILE_CONTENT = + "id;name;internationalRegistrationCode;scientificVessel;toDelete\n" + + ";Temporary fishing vessel name 1;International registration code F1;N;\n" + + ";Temporary fishing vessel name 2;International registration code F2;N;\n" + + ";Temporary scientific vessel name 3;International registration code S3;Y;\n" + + ";Temporary scientific vessel name 4;International registration code S4;Y;"; + + private static final String DUPLICATE_VESSEL_FILE_CONTENT = + "id;name;internationalRegistrationCode;scientificVessel;toDelete\n" + + ";Temporary fishing vessel name 1;International registration code F1;N;\n" + + ";Temporary fishing vessel name 1;International registration code F1;N;\n" + + ";Temporary fishing vessel name 2;International registration code F2;N;\n" + + ";Temporary scientific vessel name 3;International registration code S3;Y;\n" + + ";Temporary scientific vessel name 4;International registration code S4;Y;"; + + + @Before + public void setUp() throws Exception { + + dataDirectory = dbResource.getConfig().getDataDirectory(); + + TuttiServiceContext serviceContext = dbResource.getServiceContext(); + + serviceContext.getConfig().setCsvSeparator(';'); + + service = serviceContext.getService(ReferentialTemporaryVesselService.class); + + } + + @Test + public void importTemporaryVessel() throws Exception { + File file = new File(dataDirectory, "importVessel.csv"); + + Files.createParentDirs(file); + + Files.write(VESSEL_FILE_CONTENT, file, Charsets.UTF_8); + + ReferentialImportResult<Vessel> result = service.importTemporaryVessel(file); + List<Vessel> addedVessels = result.getRefAdded(); + + Assert.assertNotNull(result); + Assert.assertEquals(4, addedVessels.size()); + for (int i = 1; i <= 2; i++) { + Vessel actual = addedVessels.get(i - 1); + Assert.assertNotNull(actual); + Assert.assertEquals("#TEMP¿" + actual.getInternationalRegistrationCode(), actual.getId()); + Assert.assertEquals("Temporary fishing vessel name " + i, actual.getName()); + Assert.assertEquals("International registration code F" + i, actual.getInternationalRegistrationCode()); + Assert.assertFalse(actual.isScientificVessel()); + } + for (int i = 3; i <= 4; i++) { + Vessel actual = addedVessels.get(i - 1); + Assert.assertNotNull(actual); + Assert.assertEquals("#TEMP¿" + actual.getInternationalRegistrationCode(), actual.getId()); + Assert.assertEquals("Temporary scientific vessel name " + i, actual.getName()); + Assert.assertEquals("International registration code S" + i, actual.getInternationalRegistrationCode()); + Assert.assertTrue(actual.isScientificVessel()); + } + + // try to reimport them + try { + service.importTemporaryVessel(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + Assert.assertTrue(true); + } + + // TODO test to replace a used vessel + } + + @Test + public void importDuplicateTemporaryVessel() throws Exception { + File file = new File(dataDirectory, "importVessel.csv"); + + Files.createParentDirs(file); + + Files.write(DUPLICATE_VESSEL_FILE_CONTENT, file, Charsets.UTF_8); + + try { + service.importTemporaryVessel(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + // good duplicate vessel + } + } + + +} \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java index b2309b7..3a0e46b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java @@ -45,8 +45,10 @@ import fr.ifremer.tutti.service.export.sumatra.CatchesSumatraExportService; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; import fr.ifremer.tutti.service.psionimport.PsionImportService; import fr.ifremer.tutti.service.pupitri.PupitriImportExportService; -import fr.ifremer.tutti.service.referential.ReferentialExportService; -import fr.ifremer.tutti.service.referential.ReferentialImportService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; +import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; import fr.ifremer.tutti.service.referential.TuttiReferentialSynchronizeService; import fr.ifremer.tutti.service.report.ReportService; import fr.ifremer.tutti.ui.swing.content.MainUI; @@ -677,12 +679,20 @@ public class TuttiUIContext extends AbstractBean implements Closeable, UIMessage return serviceContext.getService(BigfinImportService.class); } - public ReferentialImportService getTuttiReferentialImportService() { - return serviceContext.getService(ReferentialImportService.class); + public ReferentialTemporaryGearService getReferentialTemporaryGearService() { + return serviceContext.getService(ReferentialTemporaryGearService.class); } - public ReferentialExportService getTuttiReferentialExportService() { - return serviceContext.getService(ReferentialExportService.class); + public ReferentialTemporaryPersonService getReferentialTemporaryPersonService() { + return serviceContext.getService(ReferentialTemporaryPersonService.class); + } + + public ReferentialTemporarySpeciesService getReferentialTemporarySpeciesService() { + return serviceContext.getService(ReferentialTemporarySpeciesService.class); + } + + public ReferentialTemporaryVesselService getReferentialTemporaryVesselService() { + return serviceContext.getService(ReferentialTemporaryVesselService.class); } public WeightComputingService getWeightComputingService() { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryGearAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryGearAction.java index b6dedec..b7294ef 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryGearAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryGearAction.java @@ -23,8 +23,7 @@ package fr.ifremer.tutti.ui.swing.action; */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.service.referential.ReferentialExportService; -import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; @@ -87,7 +86,7 @@ public class ExportExistingTemporaryGearAction extends AbstractTuttiAction<Manag "referential to file: " + file); } - ReferentialExportService service = getContext().getTuttiReferentialExportService(); + ReferentialTemporaryGearService service = getContext().getReferentialTemporaryGearService(); service.exportExistingTemporaryGear(file); getHandler().resetExportGearsAction(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryPersonAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryPersonAction.java index 48fc2d9..eb0a26f 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryPersonAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryPersonAction.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.ui.swing.action; */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.service.referential.ReferentialExportService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; @@ -87,7 +87,7 @@ public class ExportExistingTemporaryPersonAction extends AbstractTuttiAction<Man "referential to file: " + file); } - ReferentialExportService service = getContext().getTuttiReferentialExportService(); + ReferentialTemporaryPersonService service = getContext().getReferentialTemporaryPersonService(); service.exportExistingTemporaryPerson(file); getHandler().resetExportPersonAction(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporarySpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporarySpeciesAction.java index bd307fb..5894d87 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporarySpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporarySpeciesAction.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.ui.swing.action; */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.service.referential.ReferentialExportService; +import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; @@ -86,7 +86,7 @@ public class ExportExistingTemporarySpeciesAction extends AbstractTuttiAction<Ma "referential to file: " + file); } - ReferentialExportService service = getContext().getTuttiReferentialExportService(); + ReferentialTemporarySpeciesService service = getContext().getReferentialTemporarySpeciesService(); service.exportExistingTemporarySpecies(file); getHandler().resetExportSpeciesAction(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryVesselAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryVesselAction.java index b0d58dc..9b8184c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryVesselAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryVesselAction.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.ui.swing.action; */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.service.referential.ReferentialExportService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; @@ -86,7 +86,7 @@ public class ExportExistingTemporaryVesselAction extends AbstractTuttiAction<Man "referential to file: " + file); } - ReferentialExportService service = getContext().getTuttiReferentialExportService(); + ReferentialTemporaryVesselService service = getContext().getReferentialTemporaryVesselService(); service.exportExistingTemporaryVessel(file); getHandler().resetExportVesselsAction(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporaryGearExampleAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporaryGearExampleAction.java index 7b3c5ff..4a094cd 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporaryGearExampleAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporaryGearExampleAction.java @@ -23,8 +23,7 @@ package fr.ifremer.tutti.ui.swing.action; */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.service.referential.ReferentialExportService; -import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; @@ -87,7 +86,7 @@ public class ExportTemporaryGearExampleAction extends AbstractTuttiAction<Manage "referential to file: " + file); } - ReferentialExportService service = getContext().getTuttiReferentialExportService(); + ReferentialTemporaryGearService service = getContext().getReferentialTemporaryGearService(); service.exportTemporaryGearExample(file); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporaryPersonExampleAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporaryPersonExampleAction.java index f3d8ad3..b65f11a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporaryPersonExampleAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporaryPersonExampleAction.java @@ -23,8 +23,7 @@ package fr.ifremer.tutti.ui.swing.action; */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.service.referential.ReferentialExportService; -import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; @@ -88,7 +87,7 @@ public class ExportTemporaryPersonExampleAction extends AbstractTuttiAction<Mana "referential to file: " + file); } - ReferentialExportService service = getContext().getTuttiReferentialExportService(); + ReferentialTemporaryPersonService service = getContext().getReferentialTemporaryPersonService(); service.exportTemporaryPersonExample(file); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporarySpeciesExampleAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporarySpeciesExampleAction.java index 0f54d44..c56eb4b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporarySpeciesExampleAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporarySpeciesExampleAction.java @@ -23,8 +23,7 @@ package fr.ifremer.tutti.ui.swing.action; */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.service.referential.ReferentialExportService; -import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; @@ -87,7 +86,7 @@ public class ExportTemporarySpeciesExampleAction extends AbstractTuttiAction<Man "referential to file: " + file); } - ReferentialExportService service = getContext().getTuttiReferentialExportService(); + ReferentialTemporarySpeciesService service = getContext().getReferentialTemporarySpeciesService(); service.exportTemporarySpeciesExample(file); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporaryVesselExampleAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporaryVesselExampleAction.java index ada1dc4..8a32639 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporaryVesselExampleAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportTemporaryVesselExampleAction.java @@ -23,8 +23,7 @@ package fr.ifremer.tutti.ui.swing.action; */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.service.referential.ReferentialExportService; -import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; @@ -87,7 +86,7 @@ public class ExportTemporaryVesselExampleAction extends AbstractTuttiAction<Mana "referential to file: " + file); } - ReferentialExportService service = getContext().getTuttiReferentialExportService(); + ReferentialTemporaryVesselService service = getContext().getReferentialTemporaryVesselService(); service.exportTemporaryVesselExample(file); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryGearAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryGearAction.java index f832ad3..5a6422e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryGearAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryGearAction.java @@ -26,6 +26,7 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.referential.ReferentialImportResult; import fr.ifremer.tutti.service.referential.ReferentialImportService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; @@ -88,8 +89,9 @@ public class ImportTemporaryGearAction extends AbstractTuttiAction<ManageTempora "referential from file: " + file); } - ReferentialImportService service = getContext().getTuttiReferentialImportService(); + ReferentialTemporaryGearService service = getContext().getReferentialTemporaryGearService(); result = service.importTemporaryGear(file); + int nbRef = getModel().getNbTemporaryGears(); getModel().setNbTemporaryGears(nbRef + result.getNbRefAdded() - result.getNbRefDeleted()); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryPersonAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryPersonAction.java index 24530c5..1f0196f 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryPersonAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryPersonAction.java @@ -26,6 +26,7 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.service.referential.ReferentialImportResult; import fr.ifremer.tutti.service.referential.ReferentialImportService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; @@ -88,8 +89,7 @@ public class ImportTemporaryPersonAction extends AbstractTuttiAction<ManageTempo "referential from file: " + file); } - ReferentialImportService service = - getContext().getTuttiReferentialImportService(); + ReferentialTemporaryPersonService service = getContext().getReferentialTemporaryPersonService(); result = service.importTemporaryPerson(file); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporarySpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporarySpeciesAction.java index 0322b8a..10a4d7c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporarySpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporarySpeciesAction.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.ui.swing.action; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.referential.ReferentialImportResult; -import fr.ifremer.tutti.service.referential.ReferentialImportService; +import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; @@ -87,9 +87,7 @@ public class ImportTemporarySpeciesAction extends AbstractTuttiAction<ManageTemp "referential from file: " + file); } - ReferentialImportService service = - getContext().getTuttiReferentialImportService(); - + ReferentialTemporarySpeciesService service = getContext().getReferentialTemporarySpeciesService(); result = service.importTemporarySpecies(file); int nbRef = getModel().getNbTemporarySpecies(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryVesselAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryVesselAction.java index 74c310e..d08c32d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryVesselAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryVesselAction.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.ui.swing.action; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.service.referential.ReferentialImportResult; -import fr.ifremer.tutti.service.referential.ReferentialImportService; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; @@ -87,9 +87,7 @@ public class ImportTemporaryVesselAction extends AbstractTuttiAction<ManageTempo "referential from file: " + file); } - ReferentialImportService service = - getContext().getTuttiReferentialImportService(); - + ReferentialTemporaryVesselService service = getContext().getReferentialTemporaryVesselService(); result = service.importTemporaryVessel(file); int nbRef = getModel().getNbTemporaryVessels(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ReplaceTemporarySpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ReplaceTemporarySpeciesAction.java index cf8c07d..2034105 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ReplaceTemporarySpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ReplaceTemporarySpeciesAction.java @@ -60,6 +60,7 @@ public class ReplaceTemporarySpeciesAction extends AbstractReplaceTemporaryUIAct protected void replaceReferentialEntity(PersistenceService persistenceService, Species source, Species target, boolean delete) { persistenceService.replaceSpecies(source, target, delete); + } } \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm