This is an automated email from the git hooks/post-receive script. New commit to branch feature/7017 in repository observe. See http://git.codelutin.com/observe.git commit 9f63563968c237bd5b58eb5eb0c6a5c893eb7b26 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 29 11:22:11 2015 +0200 ajout des binders (longline model) dans le binder service (refs #7017) --- .../main/java/fr/ird/observe/BinderService.java | 543 ++++++++++++++++++++- .../observe/services/AbstractObserveService.java | 20 + .../ird/observe/ui/content/ContentUIHandler.java | 16 + 3 files changed, 575 insertions(+), 4 deletions(-) diff --git a/observe-business/src/main/java/fr/ird/observe/BinderService.java b/observe-business/src/main/java/fr/ird/observe/BinderService.java index ec23806..30579ea 100644 --- a/observe-business/src/main/java/fr/ird/observe/BinderService.java +++ b/observe-business/src/main/java/fr/ird/observe/BinderService.java @@ -21,9 +21,25 @@ */ package fr.ird.observe; +import fr.ird.observe.entities.longline.ActivityLongline; +import fr.ird.observe.entities.longline.BaitsComposition; +import fr.ird.observe.entities.longline.Branchline; +import fr.ird.observe.entities.longline.BranchlinesComposition; +import fr.ird.observe.entities.longline.CatchLongline; +import fr.ird.observe.entities.longline.Encounter; +import fr.ird.observe.entities.longline.FloatlinesComposition; +import fr.ird.observe.entities.longline.GearUseFeaturesLongline; +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline; +import fr.ird.observe.entities.longline.HooksComposition; +import fr.ird.observe.entities.longline.SensorUsed; +import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.entities.longline.Tdr; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.entities.seine.TripSeine; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.util.TopiaEntityBinder; import org.nuiton.topia.persistence.util.TopiaEntityHelper; +import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderModelBuilder; /** @@ -34,7 +50,526 @@ import org.nuiton.util.beans.BinderModelBuilder; */ public class BinderService { - public <E extends TopiaEntity> BinderModelBuilder<E, E> newBinderBuilder(Class<E> type, String... properties) { + public static final String DISPLAY = "display"; + + public static final String EDIT = "edit"; + + public static final String EDIT_BAITS_COMPOSITION = "editBaitsComposition"; + + public static final String EDIT_CATCH_LONGLINE = "editCatchLongline"; + + public static final String EDIT_BRANCHLINES_COMPOSITION = "editBranchlinesComposition"; + + public static final String EDIT_ENCOUNTER = "editEncounter"; + + public static final String EDIT_FLOATLINES_COMPOSITION = "editFloatlinesComposition"; + + public static final String EDIT_GEAR_USE_FEATURES_LONGLINE = "editGearUseFeaturesLongline"; + + public static final String EDIT_HOOKS_COMPOSITION = "editHooksComposition"; + + public static final String EDIT_SENSOR_USED = "editSensorUsed"; + + public static final String EDIT_TDR = "editTdr"; + + + static { + + registerBinders(); + + } + + private static void registerBinders() { + + { + + BinderModelBuilder<ActivityLongline, ActivityLongline> builder = newBinderBuilder( + ActivityLongline.class, + ActivityLongline.PROPERTY_QUADRANT, + ActivityLongline.PROPERTY_LATITUDE, + ActivityLongline.PROPERTY_LONGITUDE, + ActivityLongline.PROPERTY_TIME_STAMP, + ActivityLongline.PROPERTY_SEA_SURFACE_TEMPERATURE, + ActivityLongline.PROPERTY_COMMENT, + ActivityLongline.PROPERTY_SET_LONGLINE, + ActivityLongline.PROPERTY_VESSEL_ACTIVITY_LONGLINE, + ActivityLongline.PROPERTY_FPA_ZONE, + ActivityLongline.PROPERTY_OPEN, + ActivityLongline.PROPERTY_ENCOUNTER, + ActivityLongline.PROPERTY_SENSOR_USED); + + builder.addCollectionStrategy(Binder.CollectionStrategy.duplicate, ActivityLongline.PROPERTY_ENCOUNTER); + + builder.addCollectionStrategy(Binder.CollectionStrategy.duplicate, ActivityLongline.PROPERTY_SENSOR_USED); + + registerTopiaBinder(ActivityLongline.class, builder, EDIT); + + } + + { + + BinderModelBuilder<SetLongline, SetLongline> builder = newBinderBuilder( + SetLongline.class, + SetLongline.PROPERTY_BAITS_COMPOSITION); + + registerTopiaBinder(SetLongline.class, builder, EDIT_BAITS_COMPOSITION); + + } + + { + + BinderModelBuilder<BaitsComposition, BaitsComposition> builder = newBinderBuilder( + BaitsComposition.class, + BaitsComposition.PROPERTY_BAIT_TYPE, + BaitsComposition.PROPERTY_BAIT_SETTING_STATUS, + BaitsComposition.PROPERTY_INDIVIDUAL_SIZE, + BaitsComposition.PROPERTY_INDIVIDUAL_WEIGHT, + BaitsComposition.PROPERTY_PROPORTION); + + registerTopiaBinder(BaitsComposition.class, builder, EDIT); + + } + + { + + BinderModelBuilder<SetLongline, SetLongline> builder = newBinderBuilder( + SetLongline.class, + SetLongline.PROPERTY_BRANCHLINES_COMPOSITION); + + registerTopiaBinder(SetLongline.class, builder, EDIT_BRANCHLINES_COMPOSITION); + + } + + { + + BinderModelBuilder<BranchlinesComposition, BranchlinesComposition> builder = newBinderBuilder( + BranchlinesComposition.class, + BranchlinesComposition.PROPERTY_TOP_TYPE, + BranchlinesComposition.PROPERTY_TRACELINE_TYPE, + BranchlinesComposition.PROPERTY_LENGTH, + BranchlinesComposition.PROPERTY_PROPORTION); + + registerTopiaBinder(BranchlinesComposition.class, builder, EDIT); + + } + + { + + BinderModelBuilder<SetLongline, SetLongline> builder = newBinderBuilder( + SetLongline.class, + SetLongline.PROPERTY_CATCH_LONGLINE); + + registerTopiaBinder(SetLongline.class, builder, EDIT_CATCH_LONGLINE); + + } + + + { + + BinderModelBuilder<CatchLongline, CatchLongline> builder = newBinderBuilder( + CatchLongline.class, + CatchLongline.PROPERTY_SPECIES_CATCH, + CatchLongline.PROPERTY_ACQUISITION_MODE, + CatchLongline.PROPERTY_COUNT, + CatchLongline.PROPERTY_CATCH_HEALTHNESS, + CatchLongline.PROPERTY_CATCH_FATE_LONGLINE, + CatchLongline.PROPERTY_DISCARD_HEALTHNESS, + CatchLongline.PROPERTY_DEPREDATED, + CatchLongline.PROPERTY_NUMBER, + CatchLongline.PROPERTY_HOME_ID, + CatchLongline.PROPERTY_HOOK_POSITION, + CatchLongline.PROPERTY_HOOK_WHEN_DISCARDED, + CatchLongline.PROPERTY_MATURITY_STATUS, + CatchLongline.PROPERTY_PHOTO_REFERENCES, + CatchLongline.PROPERTY_SEX, + CatchLongline.PROPERTY_PREDATOR, + CatchLongline.PROPERTY_STOMAC_FULLNESS, + CatchLongline.PROPERTY_TOTAL_WEIGHT, + CatchLongline.PROPERTY_BEAT_DIAMETER, + CatchLongline.PROPERTY_GONADE_WEIGHT, + CatchLongline.PROPERTY_SECTION, + CatchLongline.PROPERTY_BASKET, + CatchLongline.PROPERTY_BRANCHLINE, + CatchLongline.PROPERTY_COMMENT); + + builder.addCollectionStrategy(Binder.CollectionStrategy.duplicate, CatchLongline.PROPERTY_PREDATOR); + + registerTopiaBinder(CatchLongline.class, builder, EDIT); + + } + + { + + BinderModelBuilder<Branchline, Branchline> builder = newBinderBuilder(Branchline.class, + Branchline.PROPERTY_DEPTH_RECORDER, + Branchline.PROPERTY_HOOK_LOST, + Branchline.PROPERTY_TRACE_CUT_OFF, + Branchline.PROPERTY_TIMER, + Branchline.PROPERTY_TIME_SINCE_CONTACT, + Branchline.PROPERTY_TIMER_TIME_ON_BOARD, + Branchline.PROPERTY_BAIT_HAULING_STATUS); + + registerTopiaBinder(Branchline.class, builder, EDIT_CATCH_LONGLINE); + + } + + { + + BinderModelBuilder<ActivityLongline, ActivityLongline> builder = newBinderBuilder( + ActivityLongline.class, + ActivityLongline.PROPERTY_COMMENT, + ActivityLongline.PROPERTY_ENCOUNTER); + + registerTopiaBinder(ActivityLongline.class, builder, EDIT_ENCOUNTER); + + } + + { + + BinderModelBuilder<Encounter, Encounter> builder = newBinderBuilder( + Encounter.class, + Encounter.PROPERTY_SPECIES, + Encounter.PROPERTY_DISTANCE, + Encounter.PROPERTY_COUNT, + Encounter.PROPERTY_ENCOUNTER_TYPE); + + registerTopiaBinder(Encounter.class, builder, EDIT); + + } + + { + + BinderModelBuilder<SetLongline, SetLongline> builder = newBinderBuilder( + SetLongline.class, + SetLongline.PROPERTY_FLOATLINES_COMPOSITION); + + registerTopiaBinder(SetLongline.class, builder, EDIT_FLOATLINES_COMPOSITION); + + } + + { + + BinderModelBuilder<FloatlinesComposition, FloatlinesComposition> builder = newBinderBuilder( + FloatlinesComposition.class, + FloatlinesComposition.PROPERTY_LINE_TYPE, + FloatlinesComposition.PROPERTY_LENGTH, + FloatlinesComposition.PROPERTY_PROPORTION); + + + registerTopiaBinder(FloatlinesComposition.class, builder, EDIT); + + } + + { + + BinderModelBuilder<TripLongline, TripLongline> builder = newBinderBuilder( + TripLongline.class, + TripLongline.PROPERTY_GEAR_USE_FEATURES_LONGLINE); + + registerTopiaBinder(TripLongline.class, builder, EDIT_GEAR_USE_FEATURES_LONGLINE); + + } + + { + + BinderModelBuilder<GearUseFeaturesLongline, GearUseFeaturesLongline> builder = newBinderBuilder( + GearUseFeaturesLongline.class, + GearUseFeaturesLongline.PROPERTY_COMMENT, + GearUseFeaturesLongline.PROPERTY_GEAR, + GearUseFeaturesLongline.PROPERTY_NUMBER, + GearUseFeaturesLongline.PROPERTY_USED_IN_TRIP); + + registerTopiaBinder(GearUseFeaturesLongline.class, builder, EDIT); + + } + + { + + BinderModelBuilder<GearUseFeaturesMeasurementLongline, GearUseFeaturesMeasurementLongline> builder = + newBinderBuilder(GearUseFeaturesMeasurementLongline.class, + GearUseFeaturesMeasurementLongline.PROPERTY_GEAR_CARACTERISTIC, + GearUseFeaturesMeasurementLongline.PROPERTY_MEASUREMENT_VALUE); + + registerTopiaBinder(GearUseFeaturesMeasurementLongline.class, builder, EDIT); + + } + + { + + BinderModelBuilder<SetLongline, SetLongline> builder = newBinderBuilder( + SetLongline.class, + SetLongline.PROPERTY_HOOKS_COMPOSITION); + + registerTopiaBinder(SetLongline.class, builder, EDIT_HOOKS_COMPOSITION); + + } + + { + + BinderModelBuilder<HooksComposition, HooksComposition> builder = newBinderBuilder( + HooksComposition.class, + HooksComposition.PROPERTY_HOOK_TYPE, + HooksComposition.PROPERTY_HOOK_SIZE, + HooksComposition.PROPERTY_HOOK_OFFSET, + HooksComposition.PROPERTY_PROPORTION); + + registerTopiaBinder(HooksComposition.class, builder, EDIT); + + } + + { + + BinderModelBuilder<ActivityLongline, ActivityLongline> builder = newBinderBuilder( + ActivityLongline.class, + ActivityLongline.PROPERTY_SENSOR_USED, ActivityLongline.PROPERTY_COMMENT); + + registerTopiaBinder(ActivityLongline.class, builder, EDIT_SENSOR_USED); + + } + + { + + BinderModelBuilder<SensorUsed, SensorUsed> builder = newBinderBuilder( + SensorUsed.class, + SensorUsed.PROPERTY_DATA, + SensorUsed.PROPERTY_DATA_FILENAME, + SensorUsed.PROPERTY_DATA_LOCATION, + SensorUsed.PROPERTY_SENSOR_SERIAL_NO, + SensorUsed.PROPERTY_SENSOR_TYPE, + SensorUsed.PROPERTY_SENSOR_BRAND, + SensorUsed.PROPERTY_SENSOR_DATA_FORMAT); + + registerTopiaBinder(SensorUsed.class, builder, EDIT); + + } + + { + + BinderModelBuilder<SetLongline, SetLongline> builder = newBinderBuilder( + SetLongline.class, + SetLongline.PROPERTY_COMMENT, + + // setting tab + SetLongline.PROPERTY_HOME_ID, + SetLongline.PROPERTY_NUMBER, + + SetLongline.PROPERTY_SETTING_START_TIME_STAMP, + SetLongline.PROPERTY_SETTING_START_QUADRANT, + SetLongline.PROPERTY_SETTING_START_LATITUDE, + SetLongline.PROPERTY_SETTING_START_LONGITUDE, + + SetLongline.PROPERTY_SETTING_END_TIME_STAMP, + SetLongline.PROPERTY_SETTING_END_QUADRANT, + SetLongline.PROPERTY_SETTING_END_LATITUDE, + SetLongline.PROPERTY_SETTING_END_LONGITUDE, + + // setting caracteristics tab + SetLongline.PROPERTY_SETTING_SHAPE, + SetLongline.PROPERTY_LINE_TYPE, + SetLongline.PROPERTY_LIGHTSTICKS_TYPE, + SetLongline.PROPERTY_LIGHTSTICKS_COLOR, + SetLongline.PROPERTY_SETTING_VESSEL_SPEED, + SetLongline.PROPERTY_MAX_DEPTH_TARGETED, + SetLongline.PROPERTY_SHOOTER_USED, + SetLongline.PROPERTY_SHOOTER_SPEED, + SetLongline.PROPERTY_WEIGHTED_SWIVEL, + SetLongline.PROPERTY_SWIVEL_WEIGHT, + SetLongline.PROPERTY_WEIGHTED_SNAP, + SetLongline.PROPERTY_SNAP_WEIGHT, + SetLongline.PROPERTY_MONITORED, + SetLongline.PROPERTY_TIME_BETWEEN_HOOKS, + SetLongline.PROPERTY_BASKETS_PER_SECTION_COUNT, + SetLongline.PROPERTY_BRANCHLINES_PER_BASKET_COUNT, + SetLongline.PROPERTY_LIGHTSTICKS_PER_BASKET_COUNT, + SetLongline.PROPERTY_TOTAL_SECTIONS_COUNT, + SetLongline.PROPERTY_TOTAL_BASKETS_COUNT, + SetLongline.PROPERTY_TOTAL_HOOKS_COUNT, + + // hauling tab + SetLongline.PROPERTY_HAULING_DIRECTION_SAME_AS_SETTING, + + SetLongline.PROPERTY_HAULING_START_QUADRANT, + SetLongline.PROPERTY_HAULING_START_LATITUDE, + SetLongline.PROPERTY_HAULING_START_LONGITUDE, + SetLongline.PROPERTY_HAULING_START_TIME_STAMP, + + SetLongline.PROPERTY_HAULING_END_QUADRANT, + SetLongline.PROPERTY_HAULING_END_LATITUDE, + SetLongline.PROPERTY_HAULING_END_LONGITUDE, + SetLongline.PROPERTY_HAULING_END_TIME_STAMP, + + SetLongline.PROPERTY_HAULING_BREAKS); + + // on ajoute la recopie de l'association route + builder.addCollectionStrategy(Binder.CollectionStrategy.duplicate, TripSeine.PROPERTY_ROUTE); + + registerTopiaBinder(SetLongline.class, builder, EDIT); + + } + + { + + BinderModelBuilder<SetLongline, SetLongline> builder = newBinderBuilder( + SetLongline.class, + SetLongline.PROPERTY_TDR, + SetLongline.PROPERTY_SETTING_START_TIME_STAMP, + SetLongline.PROPERTY_SETTING_END_TIME_STAMP, + SetLongline.PROPERTY_HAULING_START_TIME_STAMP, + SetLongline.PROPERTY_HAULING_END_TIME_STAMP); + + registerTopiaBinder(SetLongline.class, builder, EDIT_TDR); + + } + + { + + BinderModelBuilder<Tdr, Tdr> builder = newBinderBuilder( + Tdr.class, + // caracteristics tab + Tdr.PROPERTY_HOME_ID, + Tdr.PROPERTY_SERIAL_NO, + Tdr.PROPERTY_SENSOR_BRAND, + Tdr.PROPERTY_DATA, + Tdr.PROPERTY_DATA_FILENAME, + Tdr.PROPERTY_DATA_LOCATION, + + // localisation tab + Tdr.PROPERTY_SECTION, + Tdr.PROPERTY_BASKET, + Tdr.PROPERTY_BRANCHLINE, + Tdr.PROPERTY_ITEM_HORIZONTAL_POSITION, + Tdr.PROPERTY_ITEM_VERTICAL_POSITION, + Tdr.PROPERTY_FLOATLINE1_LENGTH, + Tdr.PROPERTY_FLOATLINE2_LENGTH, + + // timestamp tab + Tdr.PROPERTY_DEPLOYEMENT_START, + Tdr.PROPERTY_DEPLOYEMENT_START_DATE, + Tdr.PROPERTY_DEPLOYEMENT_START_TIME, + Tdr.PROPERTY_DEPLOYEMENT_END, + Tdr.PROPERTY_DEPLOYEMENT_END_DATE, + Tdr.PROPERTY_DEPLOYEMENT_END_TIME, + Tdr.PROPERTY_FISHING_START, + Tdr.PROPERTY_FISHING_START_DATE, + Tdr.PROPERTY_FISHING_START_TIME, + Tdr.PROPERTY_FISHING_END, + Tdr.PROPERTY_FISHING_END_DATE, + Tdr.PROPERTY_FISHING_END_TIME, + + // key data tab + Tdr.PROPERTY_FISHING_START_DEPTH, + Tdr.PROPERTY_FISHING_END_DEPTH, + Tdr.PROPERTY_MEAN_DEPLOYEMENT_DEPTH, + Tdr.PROPERTY_MEDIAN_DEPLOYEMENT_DEPTH, + Tdr.PROPERTY_MEAN_FISHING_DEPTH, + Tdr.PROPERTY_MEDIAN_FISHING_DEPTH, + Tdr.PROPERTY_MIN_FISHING_DEPTH, + Tdr.PROPERTY_MAX_FISHING_DEPTH, + + // species tab + Tdr.PROPERTY_SPECIES); + + registerTopiaBinder(Tdr.class, builder, EDIT); + + } + + { + + BinderModelBuilder<TripLongline, TripLongline> builder = newBinderBuilder( + TripLongline.class, + TripLongline.PROPERTY_START_DATE, + TripLongline.PROPERTY_END_DATE, + TripLongline.PROPERTY_TRIP_TYPE, + TripLongline.PROPERTY_HOME_ID, + TripLongline.PROPERTY_COMMENT, + TripLongline.PROPERTY_VESSEL, + TripLongline.PROPERTY_OBSERVER, + TripLongline.PROPERTY_CAPTAIN, + TripLongline.PROPERTY_DATA_ENTRY_OPERATOR, + TripLongline.PROPERTY_TOTAL_FISHING_OPERATIONS_NUMBER, + TripLongline.PROPERTY_OCEAN, + TripLongline.PROPERTY_DEPARTURE_HARBOUR, + TripLongline.PROPERTY_LANDING_HARBOUR, + TripLongline.PROPERTY_PROGRAM, + TripLongline.PROPERTY_ACTIVITY_LONGLINE, + TripLongline.PROPERTY_OPEN); + + // on ajoute la recopie de l'association route + builder.addCollectionStrategy(Binder.CollectionStrategy.duplicate, TripLongline.PROPERTY_ACTIVITY_LONGLINE); + + registerTopiaBinder(TripLongline.class, builder, EDIT); + + } + + { + + BinderModelBuilder<TripLongline, TripLongline> builder = newBinderBuilder( + TripLongline.class, + TripLongline.PROPERTY_START_DATE, + TripLongline.PROPERTY_END_DATE, + TripLongline.PROPERTY_OPEN, + TripLongline.PROPERTY_OBSERVER, + TripLongline.PROPERTY_VESSEL, + TripLongline.PROPERTY_PROGRAM); + + registerTopiaBinder(TripLongline.class, builder, DISPLAY); + + } + + { + + } + + { + + } + + { + + } + + { + + } + + { + + } + + } + + public <E extends TopiaEntity> void copy(Class<E> type, String context, E source, E target) { + + copy(type, context, source, target, true); + + } + + public <E extends TopiaEntity> void copyExcluding(Class<E> type, String context, E source, E target, String... propertyNames) { + + TopiaEntityBinder<E> binder = getBinder(type, context); + + binder.copyExcluding(source, target, propertyNames); + + } + + public <E extends TopiaEntity> void copy(Class<E> type, String context, E source, E target, boolean bindTechnical) { + + TopiaEntityBinder<E> binder = getBinder(type, context); + + binder.load(source, target, bindTechnical); + + } + + public <E extends TopiaEntity> TopiaEntityBinder<E> getBinder(Class<E> type, String context) { + TopiaEntityBinder<E> binder = getTopiaBinder(type, context); + if (binder == null) { + throw new IllegalArgumentException("Could not find binder for " + type.getName() + "::" + context); + } + return binder; + } + + + public static <E extends TopiaEntity> BinderModelBuilder<E, E> newBinderBuilder(Class<E> type, String... properties) { BinderModelBuilder<E, E> builder = BinderModelBuilder.newEmptyBuilder(type); builder.addSimpleProperties(properties); return builder; @@ -50,9 +585,9 @@ public class BinderService { return (TopiaEntityBinder<E>) ObserveBinderHelper.newBinder(entityClass, entityClass, contextName, TopiaEntityBinder.class); } - public <E extends TopiaEntity> TopiaEntityBinder<E> registerTopiaBinder(Class<E> entityClass, - BinderModelBuilder<E, E> builder, - String contextName) { + public static <E extends TopiaEntity> TopiaEntityBinder<E> registerTopiaBinder(Class<E> entityClass, + BinderModelBuilder<E, E> builder, + String contextName) { return ObserveBinderHelper.registerTopiaBinder(entityClass, builder, contextName); } diff --git a/observe-services/src/main/java/fr/ird/observe/services/AbstractObserveService.java b/observe-services/src/main/java/fr/ird/observe/services/AbstractObserveService.java index c887367..ed7492b 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/AbstractObserveService.java +++ b/observe-services/src/main/java/fr/ird/observe/services/AbstractObserveService.java @@ -129,6 +129,26 @@ public abstract class AbstractObserveService implements ObserveService { return serviceContext.now(); } + public BinderService getBinderService() { + return serviceContext.getBinderService(); + } + + public <E extends TopiaEntity> void copy(Class<E> type, String context, E source, E target) { + getBinderService().copy(type, context, source, target); + } + + public <E extends TopiaEntity> void copyExcluding(Class<E> type, String context, E source, E target, String... propertyNames) { + getBinderService().copyExcluding(type, context, source, target, propertyNames); + } + + public <E extends TopiaEntity> void copy(Class<E> type, String context, E source, E target, boolean bindTechnical) { + getBinderService().copy(type, context, source, target, bindTechnical); + } + + public <E extends TopiaEntity> TopiaEntityBinder<E> getBinder(Class<E> entityClass, String contextName) { + return getBinderService().getBinder(entityClass, contextName); + } + protected <E extends TopiaEntity> TopiaDAO<E> getDao(Class<E> entityType) { return serviceContext.getDataSource().getDAO(getTransaction(), entityType); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java index 3fcbcca..1354ecd 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java @@ -353,6 +353,22 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { return ObserveContext.get().getBinderService(); } + public <E extends TopiaEntity> void copy(Class<E> type, String context, E source, E target) { + getBinderService().copy(type, context, source, target); + } + + public <E extends TopiaEntity> void copyExcluding(Class<E> type, String context, E source, E target, String... propertyNames) { + getBinderService().copyExcluding(type, context, source, target, propertyNames); + } + + public <E extends TopiaEntity> void copy(Class<E> type, String context, E source, E target, boolean bindTechnical) { + getBinderService().copy(type, context, source, target, bindTechnical); + } + + public <E extends TopiaEntity> TopiaEntityBinder<E> getBinder(Class<E> type, String context) { + return getBinderService().getBinder(type, context); + } + protected DataSource getDataSource() { return ui.getDataSource(); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.