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 42c1b4988c7ed310c38dd341ae6113324f4fa54d Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Thu Apr 30 18:19:57 2015 +0200 correction sauvegarde équipement, sauvegarde composition --- .../observe/services/AbstractObserveService.java | 26 +++++++++++++++ .../GearUseFeaturesLonglineServiceImpl.java | 2 +- .../longline/LonglineGlobalCompositionService.java | 15 +++++++++ .../LonglineGlobalCompositionServiceImpl.java | 39 ++++++++++++++++++++++ .../LonglineGlobalCompositionUIHandler.java | 28 +++++++++------- .../longline/GearUseFeaturesLonglineUIHandler.java | 2 +- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 2 +- .../EditableTableWithCacheTableModelSupport.java | 11 ++++++ 8 files changed, 110 insertions(+), 15 deletions(-) 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 37c7307..d9f5bf5 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 @@ -7,9 +7,11 @@ import fr.ird.observe.BinderService; import fr.ird.observe.IObserveConfig; import fr.ird.observe.ObserveEntityEnum; import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.ObserveTechnicalException; import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.EntityMap; import fr.ird.observe.entities.constants.ReferenceLocale; +import org.apache.commons.lang3.reflect.ConstructorUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; @@ -449,6 +451,30 @@ public abstract class AbstractObserveService implements ObserveService { TopiaEntityHelper.checkNotNullAndExistingEntity(variableName, entity); } + protected <S extends ObserveService> S newService(Class<S> serviceType) { + + Class<S> serviceImpl; + try { + //FIXME Cela devrait dépendre de la datasource ? + serviceImpl = (Class<S>) Class.forName(serviceType.getName() + "Impl"); + } catch (ClassNotFoundException e) { + throw new IllegalStateException("Could not find implementation class for " + serviceType); + } + + try { + + // Instanciate concrete service + S service = ConstructorUtils.invokeConstructor(serviceImpl); + service.setServiceContext(serviceContext); + + return service; + + } catch (Exception e) { + throw new ObserveTechnicalException("Could not create service: " + serviceType, e); + } + + } + diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineServiceImpl.java index 920d654..b089a8e 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineServiceImpl.java @@ -140,7 +140,7 @@ public class GearUseFeaturesLonglineServiceImpl extends AbstractObserveService i GearUseFeaturesMeasurementLongline measurementSaved; if (measurementToSave.getTopiaId() == null) { - + measurementSaved = dao.create(GearUseFeaturesMeasurementLongline.PROPERTY_GEAR_CARACTERISTIC, measurementToSave.getGearCaracteristic()); measurementBinder.load(measurementToSave, measurementSaved, false); diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineGlobalCompositionService.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineGlobalCompositionService.java new file mode 100644 index 0000000..41fe50e --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineGlobalCompositionService.java @@ -0,0 +1,15 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.ObserveService; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public interface LonglineGlobalCompositionService extends ObserveService{ + + @Commit + String save(SetLongline bean); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineGlobalCompositionServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineGlobalCompositionServiceImpl.java new file mode 100644 index 0000000..2ffef64 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineGlobalCompositionServiceImpl.java @@ -0,0 +1,39 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.BinderService; +import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.entities.referentiel.longline.MitigationType; +import fr.ird.observe.services.AbstractObserveService; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class LonglineGlobalCompositionServiceImpl extends AbstractObserveService implements LonglineGlobalCompositionService { + + @Override + public String save(SetLongline toSave) { + + SetLongline saved = findByTopiaId(SetLongline.class, toSave.getTopiaId()); + + copyExcluding(SetLongline.class, BinderService.EDIT_GLOBAL_COMPOSITION, toSave, saved, SetLongline.PROPERTY_MITIGATION_TYPE); + + saved.clearMitigationType(); + + for (MitigationType mitigationTypeToSave : toSave.getMitigationType()) { + + MitigationType mitigationTypeSaved = findByTopiaId(MitigationType.class, mitigationTypeToSave.getTopiaId()); + + saved.addMitigationType(mitigationTypeSaved); + + } + + getDao(SetLongline.class).update(saved); + + newService(FloatlinesCompositionService.class).save(toSave); + newService(BranchlinesCompositionService.class).save(toSave); + newService(HooksCompositionService.class).save(toSave); + newService(BaitsCompositionService.class).save(toSave); + + return saved.getTopiaId(); + } +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUIHandler.java index d176a38..821f821 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUIHandler.java @@ -22,12 +22,14 @@ package fr.ird.observe.ui.content.impl.longline; * #L% */ +import fr.ird.observe.BinderService; import fr.ird.observe.DataService; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.entities.longline.ActivityLongline; import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.services.data.longline.LonglineGlobalCompositionService; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; import fr.ird.observe.ui.content.table.impl.longline.BaitsCompositionUI; @@ -36,8 +38,6 @@ import fr.ird.observe.ui.content.table.impl.longline.FloatlinesCompositionUI; import fr.ird.observe.ui.content.table.impl.longline.HooksCompositionUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.util.TopiaEntityBinder; import org.nuiton.validator.NuitonValidatorScope; @@ -196,19 +196,16 @@ public class LonglineGlobalCompositionUIHandler extends ContentUIHandler<SetLong } @Override - protected SetLongline onUpdate(TopiaContext tx, Object parentBean, SetLongline beanToSave) throws TopiaException { + protected boolean doSave(SetLongline bean) throws Exception { - beanToSave.setComment(getBean().getComment()); - beanToSave.clearMitigationType(); - beanToSave.addAllMitigationType(getBean().getMitigationType()); + copy(SetLongline.class, BinderService.EDIT_FLOATLINES_COMPOSITION, getUi().getFloatlinesCompositionUI().getBean(), bean); + copy(SetLongline.class, BinderService.EDIT_BRANCHLINES_COMPOSITION, getUi().getBranchlinesCompositionUI().getBean(), bean); + copy(SetLongline.class, BinderService.EDIT_HOOKS_COMPOSITION, getUi().getHooksCompositionUI().getBean(), bean); + copy(SetLongline.class, BinderService.EDIT_BAITS_COMPOSITION, getUi().getBaitsCompositionUI().getBean(), bean); - //FIXME -// getUi().getFloatlinesCompositionUI().getHandler().onUpdate(tx, parentBean, beanToSave); -// getUi().getBranchlinesCompositionUI().getHandler().onUpdate(tx, parentBean, beanToSave); -// getUi().getHooksCompositionUI().getHandler().onUpdate(tx, parentBean, beanToSave); -// getUi().getBaitsCompositionUI().getHandler().onUpdate(tx, parentBean, beanToSave); + getService(LonglineGlobalCompositionService.class).save(bean); - return beanToSave; + return true; } @Override @@ -220,4 +217,11 @@ public class LonglineGlobalCompositionUIHandler extends ContentUIHandler<SetLong getUi().getHooksCompositionUI().getHandler().afterSave(refresh); getUi().getBaitsCompositionUI().getHandler().afterSave(refresh); } + + //TODO Supprimer saveUI et mettre saveUI2 a la place + @Override + public final void saveUI(boolean refresh) { + saveUI2(refresh); + } + } \ No newline at end of file diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java index c36fd99..6d1421f 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java @@ -147,7 +147,7 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip GearUseFeaturesLongline gearUseFeaturesLongline = gearUseFeatures.get(row); - List<GearUseFeaturesMeasurementLongline> measurements = measurementsTableModel.getCacheForRow(row); + List<GearUseFeaturesMeasurementLongline> measurements = measurementsTableModel.getCacheForRowNotEmpty(row); gearUseFeaturesLongline.clearGearUseFeaturesMeasurement(); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java index 64c854b..9416c2f 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java @@ -398,7 +398,7 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei GearUseFeaturesSeine gearUseFeaturesSeine = gearUseFeatures.get(row); - List<GearUseFeaturesMeasurementSeine> measurements = measurementsTableModel.getCacheForRow(row); + List<GearUseFeaturesMeasurementSeine> measurements = measurementsTableModel.getCacheForRowNotEmpty(row); gearUseFeaturesSeine.clearGearUseFeaturesMeasurement(); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/table/EditableTableWithCacheTableModelSupport.java b/observe-swing/src/main/java/fr/ird/observe/ui/util/table/EditableTableWithCacheTableModelSupport.java index 54f2cc1..705d16a 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/util/table/EditableTableWithCacheTableModelSupport.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/table/EditableTableWithCacheTableModelSupport.java @@ -71,6 +71,17 @@ public abstract class EditableTableWithCacheTableModelSupport<E extends TopiaEnt return measures == null ? null : measures.getData(); } + public List<E> getCacheForRowNotEmpty(int rowIndex) { + List<E> measures = Lists.newArrayList(); + for (E measure : getCacheForRow(rowIndex)) { + if (isRowNotEmpty(measure)) { + measures.add(measure); + } + } + + return measures; + } + public void initCacheForRow(int editingRow, List<E> data) { EditableList<E> editableList = cacheByRow.get(editingRow); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.