Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 5ff975a9 by tchemit at 2019-06-07T13:06:37Z Les objets en édition ne sont pas bien restitués lors d'un redémarrage de l'application - Closes #1311 - - - - - 5 changed files: - client-core/src/main/java/fr/ird/observe/client/ui/admin/consolidate/ConsolidateUIHandler.java - dto/src/main/java/fr/ird/observe/spi/DtoModelClasses.java - persistence/src/main/java/fr/ird/observe/entities/ObserveTopiaPersistenceContext.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/NavigationServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/TripManagementServiceLocal.java Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/consolidate/ConsolidateUIHandler.java ===================================== @@ -27,14 +27,14 @@ import fr.ird.observe.client.db.ObserveSwingDataSource; import fr.ird.observe.client.ui.ObserveKeyStrokes; import fr.ird.observe.client.ui.admin.AdminTabUIHandler; import fr.ird.observe.client.ui.util.ProgressModel; +import fr.ird.observe.dto.data.ps.common.TripSeineReference; import fr.ird.observe.dto.reference.DataDtoReference; import fr.ird.observe.services.service.actions.consolidate.ConsolidateDataService; import fr.ird.observe.services.service.actions.consolidate.ConsolidateTripSeineDataRequest; import fr.ird.observe.services.service.actions.consolidate.ConsolidateTripSeineDataResult; import fr.ird.observe.services.service.actions.consolidate.set.ConsolidateActivitySeineDataResult; -import fr.ird.observe.spi.DtoModelClasses; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.spi.UIHandler; import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardState; @@ -81,7 +81,7 @@ public class ConsolidateUIHandler extends AdminTabUIHandler<ConsolidateUI> imple Set<DataDtoReference<?, ?>> trips = getModel().getSelectDataModel().getSelectionDataModel().getSelectedData(); ImmutableSet<String> tripIds = ImmutableSet.copyOf(trips.stream() - .filter(input -> DtoModelClasses.isTripSeineId(input.getId())) + .filter(input -> input instanceof TripSeineReference) .map(DataDtoReference::getId) .collect(Collectors.toSet())); ===================================== dto/src/main/java/fr/ird/observe/spi/DtoModelClasses.java ===================================== @@ -23,36 +23,37 @@ package fr.ird.observe.spi; */ import com.google.common.collect.ImmutableSet; -import fr.ird.observe.dto.IdDto; import fr.ird.observe.dto.data.DataDto; +import fr.ird.observe.dto.data.ll.common.GearUseFeaturesLonglineDto; +import fr.ird.observe.dto.data.ll.common.GearUseFeaturesMeasurementLonglineDto; +import fr.ird.observe.dto.data.ll.common.TripLonglineDto; +import fr.ird.observe.dto.data.ll.common.TripLonglineGearUseDto; +import fr.ird.observe.dto.data.ll.landing.LandingLonglineDto; +import fr.ird.observe.dto.data.ll.landing.LandingPartLonglineDto; import fr.ird.observe.dto.data.ll.logbook.ActivityLonglineLogbookDto; +import fr.ird.observe.dto.data.ll.logbook.BaitsCompositionLogbookDto; +import fr.ird.observe.dto.data.ll.logbook.BranchlinesCompositionLogbookDto; +import fr.ird.observe.dto.data.ll.logbook.CatchLonglineLogbookDto; +import fr.ird.observe.dto.data.ll.logbook.FloatlinesCompositionLogbookDto; +import fr.ird.observe.dto.data.ll.logbook.HooksCompositionLogbookDto; +import fr.ird.observe.dto.data.ll.logbook.SampleLogbookDto; +import fr.ird.observe.dto.data.ll.logbook.SamplePartLogbookDto; +import fr.ird.observe.dto.data.ll.logbook.SetLonglineLogbookCatchDto; +import fr.ird.observe.dto.data.ll.logbook.SetLonglineLogbookDto; +import fr.ird.observe.dto.data.ll.logbook.SetLonglineLogbookGlobalCompositionDto; import fr.ird.observe.dto.data.ll.observation.ActivityLonglineObsDto; import fr.ird.observe.dto.data.ll.observation.ActivityLonglineObsEncounterDto; import fr.ird.observe.dto.data.ll.observation.ActivityLonglineObsSensorUsedDto; -import fr.ird.observe.dto.data.ll.logbook.BaitsCompositionLogbookDto; import fr.ird.observe.dto.data.ll.observation.BaitsCompositionObsDto; import fr.ird.observe.dto.data.ll.observation.BasketObsDto; import fr.ird.observe.dto.data.ll.observation.BranchlineObsDto; -import fr.ird.observe.dto.data.ll.logbook.BranchlinesCompositionLogbookDto; import fr.ird.observe.dto.data.ll.observation.BranchlinesCompositionObsDto; -import fr.ird.observe.dto.data.ll.logbook.CatchLonglineLogbookDto; import fr.ird.observe.dto.data.ll.observation.CatchLonglineObsDto; import fr.ird.observe.dto.data.ll.observation.EncounterObsDto; -import fr.ird.observe.dto.data.ll.logbook.FloatlinesCompositionLogbookDto; import fr.ird.observe.dto.data.ll.observation.FloatlinesCompositionObsDto; -import fr.ird.observe.dto.data.ll.common.GearUseFeaturesLonglineDto; -import fr.ird.observe.dto.data.ll.common.GearUseFeaturesMeasurementLonglineDto; -import fr.ird.observe.dto.data.ll.logbook.HooksCompositionLogbookDto; import fr.ird.observe.dto.data.ll.observation.HooksCompositionObsDto; -import fr.ird.observe.dto.data.ll.landing.LandingLonglineDto; -import fr.ird.observe.dto.data.ll.landing.LandingPartLonglineDto; -import fr.ird.observe.dto.data.ll.logbook.SampleLogbookDto; -import fr.ird.observe.dto.data.ll.logbook.SamplePartLogbookDto; import fr.ird.observe.dto.data.ll.observation.SectionObsDto; import fr.ird.observe.dto.data.ll.observation.SensorUsedObsDto; -import fr.ird.observe.dto.data.ll.logbook.SetLonglineLogbookCatchDto; -import fr.ird.observe.dto.data.ll.logbook.SetLonglineLogbookDto; -import fr.ird.observe.dto.data.ll.logbook.SetLonglineLogbookGlobalCompositionDto; import fr.ird.observe.dto.data.ll.observation.SetLonglineObsCatchDto; import fr.ird.observe.dto.data.ll.observation.SetLonglineObsDetailCompositionDto; import fr.ird.observe.dto.data.ll.observation.SetLonglineObsDto; @@ -61,8 +62,6 @@ import fr.ird.observe.dto.data.ll.observation.SetLonglineObsTdrDto; import fr.ird.observe.dto.data.ll.observation.SizeMeasureObsDto; import fr.ird.observe.dto.data.ll.observation.TdrObsDto; import fr.ird.observe.dto.data.ll.observation.TripLonglineActivityObsDto; -import fr.ird.observe.dto.data.ll.common.TripLonglineDto; -import fr.ird.observe.dto.data.ll.common.TripLonglineGearUseDto; import fr.ird.observe.dto.data.ll.observation.WeightMeasureObsDto; import fr.ird.observe.dto.data.ps.common.GearUseFeaturesMeasurementSeineDto; import fr.ird.observe.dto.data.ps.common.GearUseFeaturesSeineDto; @@ -91,9 +90,7 @@ import fr.ird.observe.dto.data.ps.observation.TargetCatchDto; import fr.ird.observe.dto.data.ps.observation.TargetLengthDto; import fr.ird.observe.dto.data.ps.observation.TargetSampleDto; import fr.ird.observe.dto.data.ps.observation.TransmittingBuoyDto; -import fr.ird.observe.dto.reference.DtoReference; import fr.ird.observe.dto.referential.ReferentialDto; -import fr.ird.observe.dto.referential.ll.landing.CompagniesDto; import fr.ird.observe.dto.referential.common.CountryDto; import fr.ird.observe.dto.referential.common.DataQualityDto; import fr.ird.observe.dto.referential.common.FpaZoneDto; @@ -121,38 +118,40 @@ import fr.ird.observe.dto.referential.common.VesselTypeDto; import fr.ird.observe.dto.referential.common.WeightMeasureMethodDto; import fr.ird.observe.dto.referential.common.WeightMeasureTypeDto; import fr.ird.observe.dto.referential.common.WindDto; -import fr.ird.observe.dto.referential.ll.observation.BaitHaulingStatusDto; import fr.ird.observe.dto.referential.ll.common.BaitSettingStatusDto; import fr.ird.observe.dto.referential.ll.common.BaitTypeDto; import fr.ird.observe.dto.referential.ll.common.CatchFateLonglineDto; -import fr.ird.observe.dto.referential.ll.landing.ConservationDto; -import fr.ird.observe.dto.referential.ll.landing.DataSourceDto; -import fr.ird.observe.dto.referential.ll.observation.EncounterTypeDto; import fr.ird.observe.dto.referential.ll.common.HealthnessDto; -import fr.ird.observe.dto.referential.ll.observation.HookPositionDto; import fr.ird.observe.dto.referential.ll.common.HookSizeDto; import fr.ird.observe.dto.referential.ll.common.HookTypeDto; -import fr.ird.observe.dto.referential.ll.observation.ItemHorizontalPositionDto; -import fr.ird.observe.dto.referential.ll.observation.ItemVerticalPositionDto; import fr.ird.observe.dto.referential.ll.common.LightsticksColorDto; import fr.ird.observe.dto.referential.ll.common.LightsticksTypeDto; import fr.ird.observe.dto.referential.ll.common.LineTypeDto; -import fr.ird.observe.dto.referential.ll.observation.MaturityStatusDto; import fr.ird.observe.dto.referential.ll.common.MitigationTypeDto; import fr.ird.observe.dto.referential.ll.common.ObservationMethodDto; import fr.ird.observe.dto.referential.ll.common.OnBoardProcessingDto; -import fr.ird.observe.dto.referential.ll.observation.SensorBrandDto; -import fr.ird.observe.dto.referential.ll.observation.SensorDataFormatDto; -import fr.ird.observe.dto.referential.ll.observation.SensorTypeDto; import fr.ird.observe.dto.referential.ll.common.SettingShapeDto; -import fr.ird.observe.dto.referential.ll.observation.StomacFullnessDto; import fr.ird.observe.dto.referential.ll.common.TripTypeDto; import fr.ird.observe.dto.referential.ll.common.VesselActivityLonglineDto; import fr.ird.observe.dto.referential.ll.common.WeightCategoryLonglineDto; import fr.ird.observe.dto.referential.ll.common.WeightDeterminationMethodDto; +import fr.ird.observe.dto.referential.ll.landing.CompagniesDto; +import fr.ird.observe.dto.referential.ll.landing.ConservationDto; +import fr.ird.observe.dto.referential.ll.landing.DataSourceDto; +import fr.ird.observe.dto.referential.ll.observation.BaitHaulingStatusDto; +import fr.ird.observe.dto.referential.ll.observation.EncounterTypeDto; +import fr.ird.observe.dto.referential.ll.observation.HookPositionDto; +import fr.ird.observe.dto.referential.ll.observation.ItemHorizontalPositionDto; +import fr.ird.observe.dto.referential.ll.observation.ItemVerticalPositionDto; +import fr.ird.observe.dto.referential.ll.observation.MaturityStatusDto; +import fr.ird.observe.dto.referential.ll.observation.SensorBrandDto; +import fr.ird.observe.dto.referential.ll.observation.SensorDataFormatDto; +import fr.ird.observe.dto.referential.ll.observation.SensorTypeDto; +import fr.ird.observe.dto.referential.ll.observation.StomacFullnessDto; import fr.ird.observe.dto.referential.ps.common.SpeciesFateDto; import fr.ird.observe.dto.referential.ps.common.TransmittingBuoyOperationDto; import fr.ird.observe.dto.referential.ps.common.TransmittingBuoyTypeDto; +import fr.ird.observe.dto.referential.ps.common.VesselActivitySeineDto; import fr.ird.observe.dto.referential.ps.observation.DetectionModeDto; import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseConformityDto; import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseStatusDto; @@ -166,7 +165,6 @@ import fr.ird.observe.dto.referential.ps.observation.ReasonForNoFishingDto; import fr.ird.observe.dto.referential.ps.observation.ReasonForNullSetDto; import fr.ird.observe.dto.referential.ps.observation.SpeciesStatusDto; import fr.ird.observe.dto.referential.ps.observation.SurroundingActivityDto; -import fr.ird.observe.dto.referential.ps.common.VesselActivitySeineDto; import fr.ird.observe.dto.referential.ps.observation.WeightCategorySeineDto; /** @@ -385,91 +383,11 @@ public class DtoModelClasses { .addAll(ENTITY_DATA_WITH_NO_BINDER_TYPES) .build(); - public static boolean isProgramId(String id) { - return id.contains("Program"); - } - - public static boolean isTrip(IdDto dto) { - return isTripSeineId(dto.getId()) || isTripLonglineId(dto.getId()); - } - - public static boolean isTrip(DtoReference dto) { - return isTripSeineId(dto.getId()) || isTripLonglineId(dto.getId()); - } - - public static boolean isTripLonglineId(String id) { - return id.contains("TripLongline"); - } - - public static boolean isTripSeineId(String id) { - return id.contains("TripSeine"); - } - - public static boolean isRouteId(String id) { - return id.contains("Route"); - } - - public static boolean isActivitySeine(IdDto dto) { - return isActivitySeineId(dto.getId()); - } - - public static boolean isActivitySeineId(String id) { - return id.contains("ActivitySeine"); - } - - public static boolean isActivityLonglineObs(IdDto dto) { - return isActivityLonglineObsId(dto.getId()); - } - - public static boolean isActivityLonglineLogbook(IdDto dto) { - return isActivityLonglineLogbookId(dto.getId()); - } - - public static boolean isActivityLonglineObsId(String id) { - return id.contains("ActivityLonglineObs"); - } - - public static boolean isActivityLonglineLogbookId(String id) { - return id.contains("ActivityLonglineLogbook"); - } - - public static boolean isSetSeine(IdDto dto) { - return isSetSeineId(dto.getId()); - } - - public static boolean isSetSeineId(String id) { - return id.contains("SetSeine"); - } - - public static boolean isSetLonglineObs(IdDto dto) { - return isSetLonglineObsId(dto.getId()); - } - - public static boolean isSetLonglineObsId(String id) { - return id.contains("SetLonglineObs"); - } - - public static boolean isSetLonglineLogbook(IdDto dto) { - return isSetLonglineLogbookId(dto.getId()); - } - - public static boolean isSetLonglineLogbookId(String id) { - return id.contains("SetLonglineLogbook"); - } - - public static boolean isFloatingObject(IdDto dto) { - return isFloatingObjectId(dto.getId()); - } - - public static boolean isFloatingObjectId(String id) { - return id.contains("FloatingObject"); - } - public static boolean isSeineId(String id) { - return id.contains("Seine"); + return id.contains(".ps."); } public static boolean isLonglineId(String id) { - return id.contains("Longline"); + return id.contains(".ll."); } } ===================================== persistence/src/main/java/fr/ird/observe/entities/ObserveTopiaPersistenceContext.java ===================================== @@ -28,6 +28,7 @@ import fr.ird.observe.spi.DbModelHelper; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.nuiton.topia.persistence.TopiaDao; +import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityEnumProvider; import org.nuiton.topia.persistence.internal.AbstractTopiaPersistenceContextConstructorParameter; import org.nuiton.topia.persistence.internal.support.TopiaUsageSupportImpl; @@ -140,6 +141,13 @@ public class ObserveTopiaPersistenceContext extends AbstractObserveTopiaPersiste return showSql; } + public boolean exists(String topiaId) { + checkNotClosed(); + Class<? extends TopiaEntity> entityClass = getTopiaIdFactory().getClassName(topiaId); + TopiaDao<?> dao = getDao(entityClass); + return dao.forTopiaIdEquals(topiaId).exists(); + } + public <E extends ObserveEntity> E newEntity(Class<E> entityType) { TopiaDao<E> dao = getDao(entityType); return dao.newInstance(); ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/NavigationServiceLocal.java ===================================== @@ -40,7 +40,6 @@ import fr.ird.observe.services.service.data.NavigationService; import fr.ird.observe.services.service.data.ll.common.TripLonglineService; import fr.ird.observe.services.service.data.ps.common.TripSeineService; import fr.ird.observe.services.service.referential.ReferentialService; -import fr.ird.observe.spi.DtoModelClasses; import java.util.Set; @@ -120,30 +119,7 @@ public class NavigationServiceLocal extends ObserveServiceLocal implements Navig ObserveTopiaPersistenceContext topiaPersistenceContext = serviceContext.getTopiaPersistenceContext(); for (String id : ids) { - boolean exists; - if (DtoModelClasses.isProgramId(id)) { - exists = topiaPersistenceContext.getProgramDao().forTopiaIdEquals(id).exists(); - } else if (DtoModelClasses.isTripSeineId(id)) { - exists = topiaPersistenceContext.getTripSeineDao().forTopiaIdEquals(id).exists(); - } else if (DtoModelClasses.isRouteId(id)) { - exists = topiaPersistenceContext.getRouteDao().forTopiaIdEquals(id).exists(); - } else if (DtoModelClasses.isActivitySeineId(id)) { - exists = topiaPersistenceContext.getActivitySeineDao().forTopiaIdEquals(id).exists(); - } else if (DtoModelClasses.isSetSeineId(id)) { - exists = topiaPersistenceContext.getSetSeineDao().forTopiaIdEquals(id).exists(); - } else if (DtoModelClasses.isFloatingObjectId(id)) { - exists = topiaPersistenceContext.getFloatingObjectDao().forTopiaIdEquals(id).exists(); - } else if (DtoModelClasses.isTripLonglineId(id)) { - exists = topiaPersistenceContext.getTripLonglineDao().forTopiaIdEquals(id).exists(); - } else if (DtoModelClasses.isActivityLonglineObsId(id)) { - exists = topiaPersistenceContext.getActivityLonglineObsDao().forTopiaIdEquals(id).exists(); - } else if (DtoModelClasses.isSetLonglineObsId(id)) { - exists = DtoModelClasses.isSetLonglineObsId(id) && topiaPersistenceContext.getSetLonglineObsDao().forTopiaIdEquals(id).exists(); - } else if (DtoModelClasses.isActivityLonglineLogbookId(id)) { - exists = topiaPersistenceContext.getActivityLonglineLogbookDao().forTopiaIdEquals(id).exists(); - } else { - exists = DtoModelClasses.isSetLonglineLogbookId(id) && topiaPersistenceContext.getSetLonglineLogbookDao().forTopiaIdEquals(id).exists(); - } + boolean exists = topiaPersistenceContext.exists(id); if (exists) { result.add(id); } ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/TripManagementServiceLocal.java ===================================== @@ -36,7 +36,6 @@ import fr.ird.observe.services.service.data.TripManagementService; import fr.ird.observe.services.service.sql.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.sql.DeleteSqlScriptProducerRequest; import fr.ird.observe.services.service.sql.SqlScriptProducerService; -import fr.ird.observe.spi.DtoModelClasses; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.nuiton.topia.persistence.script.SqlScriptConsumer; @@ -150,8 +149,7 @@ public class TripManagementServiceLocal extends ObserveServiceLocal implements T long t0 = System.nanoTime(); - boolean isTripSeineId = DtoModelClasses.isTripSeineId(tripId); - boolean deleted = (isTripSeineId && tripSeineIds.contains(tripId)) || tripLonglineIds.contains(tripId); + boolean deleted = tripSeineIds.contains(tripId) || tripLonglineIds.contains(tripId); if (deleted) { log.info("Start delete of trip: " + tripId); @@ -163,12 +161,6 @@ public class TripManagementServiceLocal extends ObserveServiceLocal implements T persistenceContext.getSqlSupport().doSqlWork(SqlScriptConsumer.of(sqlScript)); log.info("Delete of trip: " + tripId + " done in " + StringUtil.convertTime(t0, System.nanoTime())); - - if (isTripSeineId) { - tripSeineIds.remove(tripId); - } else { - tripLonglineIds.remove(tripId); - } persistenceContext.commit(); } return deleted; View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/5ff975a91dcc8a4c77acf1a0afd2... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/5ff975a91dcc8a4c77acf1a0afd2... You're receiving this email because of your account on gitlab.com.