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 7354d7a266975f64deb74a9001a5713d7c6c98ab Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat May 2 19:01:14 2015 +0200 reorganisation des controleurs des ecrans de type tableaux + correction des sauvegardes des echantillons seine --- .../observe/services/AbstractObserveService.java | 42 ++- .../data/longline/CatchLonglineServiceImpl.java | 18 +- .../GearUseFeaturesLonglineServiceImpl.java | 8 +- .../data/longline/TripLonglineServiceImpl.java | 2 +- .../seine/GearUseFeaturesSeineServiceImpl.java | 11 +- .../data/seine/NonTargetCatchServiceImpl.java | 10 +- .../data/seine/NonTargetLengthService.java | 17 - .../data/seine/NonTargetLengthServiceImpl.java | 77 ---- .../data/seine/NonTargetSampleService.java | 6 +- .../data/seine/NonTargetSampleServiceImpl.java | 66 +++- .../data/seine/TargetCatchServiceImpl.java | 6 +- .../services/data/seine/TargetLengthService.java | 17 - .../data/seine/TargetLengthServiceImpl.java | 96 ----- .../services/data/seine/TargetSampleService.java | 4 +- .../data/seine/TargetSampleServiceImpl.java | 91 ++++- .../services/data/seine/TripSeineServiceImpl.java | 2 +- .../impl/longline/BaitsCompositionUIHandler.java | 66 ++-- .../longline/BranchlinesCompositionUIHandler.java | 27 +- .../impl/longline/CatchLonglineUIHandler.java | 420 ++++++++++----------- .../table/impl/longline/EncounterUIHandler.java | 65 ++-- .../longline/FloatlinesCompositionUIHandler.java | 64 ++-- .../longline/GearUseFeaturesLonglineUIHandler.java | 300 +++++++-------- .../impl/longline/HooksCompositionUIHandler.java | 69 ++-- .../table/impl/longline/SensorUsedUIHandler.java | 62 +-- .../content/table/impl/longline/TdrUIHandler.java | 188 ++++----- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 305 ++++++++------- .../table/impl/seine/NonTargetCatchUIHandler.java | 51 ++- .../table/impl/seine/NonTargetSampleUIHandler.java | 163 ++++---- .../impl/seine/ObjectObservedSpeciesUIHandler.java | 50 +-- .../impl/seine/ObjectSchoolEstimateUIHandler.java | 51 +-- .../table/impl/seine/SchoolEstimateUIHandler.java | 85 +++-- .../table/impl/seine/TargetCatchUIHandler.java | 100 ++--- .../impl/seine/TargetDiscardCatchUIHandler.java | 130 +++---- .../table/impl/seine/TargetSampleUIHandler.java | 250 ++++++------ 34 files changed, 1429 insertions(+), 1490 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 9fa8dc1..127fd89 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 @@ -264,7 +264,8 @@ public abstract class AbstractObserveService implements ObserveService { public abstract E onCreate(P parent, E toCreate); - public abstract E onUpdate(P parentBean, E toSave, E beanToSave); + public abstract E onUpdate(P parent, E toSave, E beanToSave); + } public <P extends TopiaEntity, E extends TopiaEntity> void doDelete(String parentId, String idToDelete, DeleteAction<P, E> deleteAction) { @@ -315,9 +316,7 @@ public abstract class AbstractObserveService implements ObserveService { saveCollectionAction.prepareSave(parentToSave, childrenToSave); - P parentSaved = getDao(saveCollectionAction.parentClass).findByTopiaId(parentToSave.getTopiaId()); - - saveCollectionAction.onUpdateParent(parentToSave, parentSaved); + P parentSaved = saveCollectionAction.onUpdateParent(parentToSave); List<E> oldChilds = new ArrayList<E>(saveCollectionAction.listUpdator.getChilds(parentSaved)); @@ -340,11 +339,11 @@ public abstract class AbstractObserveService implements ObserveService { } saveCollectionAction.listUpdator.addToList(parentSaved, childSaved); + } // on donne la main aux implantations pour faire des traitements supplémentaires - saveCollectionAction.onUpdateFinalize(parentToSave, oldChilds); - + saveCollectionAction.onUpdateFinalize(parentSaved, oldChilds); } @@ -361,8 +360,11 @@ public abstract class AbstractObserveService implements ObserveService { protected final TopiaEntityBinder<E> childBinder; - public SaveCollectionAction(Class<P> parentClass, Class<E> entityClass, EntityListUpdator<P, E> listUpdator, - TopiaEntityBinder<P> parentBinder, TopiaEntityBinder<E> childBinder) { + public SaveCollectionAction(Class<P> parentClass, + Class<E> entityClass, + EntityListUpdator<P, E> listUpdator, + TopiaEntityBinder<P> parentBinder, + TopiaEntityBinder<E> childBinder) { this.parentClass = parentClass; this.entityClass = entityClass; this.listUpdator = listUpdator; @@ -370,18 +372,22 @@ public abstract class AbstractObserveService implements ObserveService { this.childBinder = childBinder; } - public void prepareSave(P parent, Collection<E> toSaves) { + public void prepareSave(P parentToSave, Collection<E> toSaves) { // par defaut, rien de specifique a faire avant de faire la sauvegarde } - public void onUpdateFinalize(P parent, Collection<E> oldChilds) throws TopiaException { + public void onUpdateFinalize(P parentSaved, Collection<E> oldChilds) throws TopiaException { // par défaut, rien à faire après la sauvegarde de la liste } - public P onUpdateParent(P parentToSave, P parentSaved) { + public P onUpdateParent(P parentToSave) { + TopiaDAO<P> dao = getDao(parentClass); + + P parentSaved = dao.findByTopiaId(parentToSave.getTopiaId()); parentBinder.copyExcluding(parentToSave, parentSaved, listUpdator.getPropertyName()); - parentSaved = getDao(parentClass).update(parentSaved); + parentSaved = dao.update(parentSaved); + return parentSaved; } @@ -390,20 +396,20 @@ public abstract class AbstractObserveService implements ObserveService { E childCreated = getDao(entityClass).create(); childBinder.load(childToCreate, childCreated, false); + return childCreated; } - public E onUpdateChild(E childToSave) { + public E onUpdateChild(E childToUpdate) { TopiaDAO<E> dao = getDao(entityClass); - E childSaved = dao.findByTopiaId(childToSave.getTopiaId()); - - childBinder.load(childToSave, childSaved, true); - childSaved = dao.update(childSaved); + E childUpdated = dao.findByTopiaId(childToUpdate.getTopiaId()); + childBinder.load(childToUpdate, childUpdated, true); + childUpdated = dao.update(childUpdated); - return childSaved; + return childUpdated; } diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineServiceImpl.java index 2f0c60a..361700e 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineServiceImpl.java @@ -94,20 +94,20 @@ public class CatchLonglineServiceImpl extends AbstractObserveService implements @Override public CatchLongline onCreateChild(CatchLongline childToCreate) { - CatchLongline createdChild = super.onCreateChild(childToCreate); - saveSizeMeasures(childToCreate.getSizeMeasure(), createdChild); - saveWeightMeasures(childToCreate.getWeightMeasure(), createdChild); - return createdChild; + CatchLongline childCreated = super.onCreateChild(childToCreate); + saveSizeMeasures(childToCreate.getSizeMeasure(), childCreated); + saveWeightMeasures(childToCreate.getWeightMeasure(), childCreated); + return childCreated; } @Override - public CatchLongline onUpdateChild(CatchLongline childToSave) { + public CatchLongline onUpdateChild(CatchLongline childToUpdate) { - CatchLongline childSaved = super.onUpdateChild(childToSave); - saveSizeMeasures(childToSave.getSizeMeasure(), childSaved); - saveWeightMeasures(childToSave.getWeightMeasure(), childSaved); - return childSaved; + CatchLongline childUpdated = super.onUpdateChild(childToUpdate); + saveSizeMeasures(childToUpdate.getSizeMeasure(), childUpdated); + saveWeightMeasures(childToUpdate.getWeightMeasure(), childUpdated); + return childUpdated; } 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 541605d..9013750 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 @@ -153,10 +153,10 @@ public class GearUseFeaturesLonglineServiceImpl extends AbstractObserveService i } @Override - public GearUseFeaturesLongline onUpdateChild(GearUseFeaturesLongline childToSave) { - GearUseFeaturesLongline childSaved = super.onUpdateChild(childToSave); - saveMeasurement(childToSave.getGearUseFeaturesMeasurement(), childSaved); - return childSaved; + public GearUseFeaturesLongline onUpdateChild(GearUseFeaturesLongline childToUpdate) { + GearUseFeaturesLongline childUpdated = super.onUpdateChild(childToUpdate); + saveMeasurement(childToUpdate.getGearUseFeaturesMeasurement(), childUpdated); + return childUpdated; } protected void saveMeasurement(List<GearUseFeaturesMeasurementLongline> measurementsToSave, GearUseFeaturesLongline childSaved) { diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineServiceImpl.java index 69f9044..6b6df6e 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineServiceImpl.java @@ -107,7 +107,7 @@ public class TripLonglineServiceImpl extends AbstractObserveService implements T } @Override - public TripLongline onUpdate(Program parentBean, TripLongline toUpdate, TripLongline updated) { + public TripLongline onUpdate(Program parent, TripLongline toUpdate, TripLongline updated) { copyExcluding(TripLongline.class, BinderService.EDIT, toUpdate, updated, TripLongline.PROPERTY_ACTIVITY_LONGLINE); return updated; } diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineServiceImpl.java index 49d0f1c..6118209 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineServiceImpl.java @@ -142,6 +142,7 @@ public class GearUseFeaturesSeineServiceImpl extends AbstractObserveService impl @Override public GearUseFeaturesSeine onCreateChild(GearUseFeaturesSeine childToCreate) { + GearUseFeaturesSeine childCreated = getDao(entityClass).create( GearUseFeaturesSeine.PROPERTY_GEAR, childToCreate.getGear(), GearUseFeaturesSeine.PROPERTY_NUMBER, childToCreate.getNumber()); @@ -152,10 +153,12 @@ public class GearUseFeaturesSeineServiceImpl extends AbstractObserveService impl } @Override - public GearUseFeaturesSeine onUpdateChild(GearUseFeaturesSeine childToSave) { - GearUseFeaturesSeine childSaved = super.onUpdateChild(childToSave); - saveMeasurement(childToSave.getGearUseFeaturesMeasurement(), childSaved); - return childSaved; + public GearUseFeaturesSeine onUpdateChild(GearUseFeaturesSeine childToUpdate) { + + GearUseFeaturesSeine childUpdated = super.onUpdateChild(childToUpdate); + saveMeasurement(childToUpdate.getGearUseFeaturesMeasurement(), childUpdated); + return childUpdated; + } protected void saveMeasurement(List<GearUseFeaturesMeasurementSeine> measurementsToSave, GearUseFeaturesSeine childSaved) { diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchServiceImpl.java index 51d5711..b77ea2f 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchServiceImpl.java @@ -65,7 +65,7 @@ public class NonTargetCatchServiceImpl extends AbstractObserveService implements SetSeine.class, NonTargetCatch.class, getListUpdator(), parentBinder, childbinder) { @Override - public void prepareSave(SetSeine parent, Collection<NonTargetCatch> toSaves) { + public void prepareSave(SetSeine parentToSave, Collection<NonTargetCatch> toSaves) { // mise a jour de la propriete nonTargetDiscarded @@ -77,11 +77,13 @@ public class NonTargetCatchServiceImpl extends AbstractObserveService implements break; } } - parent.setNonTargetDiscarded(hasRejet); + + parentToSave.setNonTargetDiscarded(hasRejet); + } @Override - public void onUpdateFinalize(SetSeine parent, Collection<NonTargetCatch> oldChilds) throws TopiaException { + public void onUpdateFinalize(SetSeine parentSaved, Collection<NonTargetCatch> oldChilds) throws TopiaException { if (CollectionUtils.isNotEmpty(nonTargetLengthsToDelete)) { @@ -91,7 +93,7 @@ public class NonTargetCatchServiceImpl extends AbstractObserveService implements log.info("Will remove " + nonTargetLengthsToDelete.size() + " obsolete nonTargetSample(s)."); } - NonTargetSample echantillon = parent.getNonTargetSample().get(0); + NonTargetSample echantillon = parentSaved.getNonTargetSample().get(0); // on supprime les echantillons obsoletes echantillon.getNonTargetLength().removeAll(nonTargetLengthsToDelete); diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetLengthService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetLengthService.java deleted file mode 100644 index 1423c61..0000000 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetLengthService.java +++ /dev/null @@ -1,17 +0,0 @@ -package fr.ird.observe.services.data.seine; - -import fr.ird.observe.entities.seine.NonTargetSample; -import fr.ird.observe.services.Commit; -import fr.ird.observe.services.ObserveService; - -/** - * @author Sylvain Bavencoff - bavencoff@codelutin.com - */ -public interface NonTargetLengthService extends ObserveService { - - NonTargetSample loadForEdit(String setId); - - @Commit - void save(NonTargetSample parent); - -} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetLengthServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetLengthServiceImpl.java deleted file mode 100644 index a70b69e..0000000 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetLengthServiceImpl.java +++ /dev/null @@ -1,77 +0,0 @@ -package fr.ird.observe.services.data.seine; - -import fr.ird.observe.BinderService; -import fr.ird.observe.entities.seine.NonTargetLength; -import fr.ird.observe.entities.seine.NonTargetSample; -import fr.ird.observe.entities.seine.SetSeine; -import fr.ird.observe.services.AbstractObserveService; -import org.nuiton.topia.persistence.TopiaDAO; -import org.nuiton.topia.persistence.util.EntityListUpdator; -import org.nuiton.topia.persistence.util.TopiaEntityBinder; - -import java.util.List; - -/** - * @author Sylvain Bavencoff - bavencoff@codelutin.com - */ -public class NonTargetLengthServiceImpl extends AbstractObserveService implements NonTargetLengthService { - - @Override - public NonTargetSample loadForEdit(String setId) { - - SetSeine setSeine = findByTopiaId(SetSeine.class, setId); - - NonTargetSample toLoad; - - if (setSeine.isNonTargetSampleEmpty()) { - - toLoad = null; - - } else { - - List<NonTargetSample> nonTargetSamples = setSeine.getNonTargetSample(); - toLoad = nonTargetSamples.get(0); - - } - - NonTargetSample loaded = getDao(NonTargetSample.class).newInstance(); - - if (toLoad != null) { - - copyExcluding(NonTargetSample.class, BinderService.EDIT_NON_TARGET_LENGTH, toLoad, loaded, NonTargetSample.PROPERTY_NON_TARGET_LENGTH); - - if (!toLoad.isNonTargetLengthEmpty()) { - - TopiaDAO<NonTargetLength> dao = getDao(NonTargetLength.class); - TopiaEntityBinder<NonTargetLength> binder = getBinder(NonTargetLength.class, BinderService.EDIT); - - for (NonTargetLength childToLoad : toLoad.getNonTargetLength()) { - - NonTargetLength childLoaded = dao.newInstance(); - binder.load(childToLoad, childLoaded, true); - loaded.addNonTargetLength(childLoaded); - - } - } - } - - return loaded; - } - - @Override - public void save(NonTargetSample parent) { - - TopiaEntityBinder<NonTargetSample> parentBinder = getBinder(NonTargetSample.class, BinderService.EDIT_NON_TARGET_LENGTH); - TopiaEntityBinder<NonTargetLength> childbinder = getBinder(NonTargetLength.class, BinderService.EDIT); - - doSaveList(parent, new SaveCollectionAction<NonTargetSample, NonTargetLength>( - NonTargetSample.class, NonTargetLength.class, getListUpdator(), parentBinder, childbinder)); - } - - protected EntityListUpdator<NonTargetSample, NonTargetLength> getListUpdator() { - return EntityListUpdator.newEntityListUpdator( - NonTargetSample.class, - NonTargetLength.class, - NonTargetSample.PROPERTY_NON_TARGET_LENGTH); - } -} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java index e433ab6..077c23c 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java @@ -19,16 +19,16 @@ public interface NonTargetSampleService extends ObserveService { List<Species> getAvailableSpeciesForNonTargetSample(String setSeineId); - NonTargetSample getNonTargetSample(String setSeineId); + NonTargetSample loadForEdit(String setSeineId); boolean canUseNonTargetSample(String setSeineId); List<NonTargetLength> getObsoleteNonTargetLengths(String setSeineId, Set<String> speciesIdsUsed); @Commit - String save(String setId, NonTargetSample editBean); + String save(String setSeineId, NonTargetSample nonTargetSampleToSave); @Commit - void delete(String setId, NonTargetSample editBean); + void delete(String setSeineId, NonTargetSample nonTargetSampleToDelete); } diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleServiceImpl.java index d7a0983..caec214 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleServiceImpl.java @@ -1,6 +1,8 @@ package fr.ird.observe.services.data.seine; +import com.google.common.collect.Lists; import fr.ird.observe.BinderService; +import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.seine.NonTargetCatch; import fr.ird.observe.entities.seine.NonTargetLength; @@ -8,6 +10,7 @@ import fr.ird.observe.entities.seine.NonTargetSample; import fr.ird.observe.entities.seine.NonTargetSampleDAO; import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.services.AbstractObserveService; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaDAO; @@ -59,7 +62,7 @@ public class NonTargetSampleServiceImpl extends AbstractObserveService implement } @Override - public NonTargetSample getNonTargetSample(String setSeineId) { + public NonTargetSample loadForEdit(String setSeineId) { SetSeine setSeine = findByTopiaId(SetSeine.class, setSeineId); @@ -76,7 +79,7 @@ public class NonTargetSampleServiceImpl extends AbstractObserveService implement } - NonTargetSample loaded = getDao().newInstance(); + NonTargetSample loaded = getDao(NonTargetSample.class).newInstance(); if (toLoad != null) { @@ -97,9 +100,7 @@ public class NonTargetSampleServiceImpl extends AbstractObserveService implement } } - return loaded; - } @Override @@ -111,7 +112,7 @@ public class NonTargetSampleServiceImpl extends AbstractObserveService implement } @Override - public List<NonTargetLength> getObsoleteNonTargetLengths(String setSeineId, Set<String> speciessUsed) { + public List<NonTargetLength> getObsoleteNonTargetLengths(String setSeineId, Set<String> speciesIdsUsed) { SetSeine setSeine = findByTopiaId(SetSeine.class, setSeineId); @@ -126,7 +127,7 @@ public class NonTargetSampleServiceImpl extends AbstractObserveService implement for (NonTargetLength taille : nonTargetSample.getNonTargetLength()) { Species species = taille.getSpecies(); - if (!speciessUsed.contains(species.getTopiaId())) { + if (!speciesIdsUsed.contains(species.getTopiaId())) { // l'espèce n'existe plus dans les rejet faune, on doit le supprimer nonTargetLengthsToDelete.add(taille); @@ -147,9 +148,9 @@ public class NonTargetSampleServiceImpl extends AbstractObserveService implement } @Override - public String save(String setSeineId, NonTargetSample toSave) { + public String save(String setSeineId, NonTargetSample nonTargetSampleToSave) { - String savedId = doSave(setSeineId, toSave, new SaveAction<SetSeine, NonTargetSample>(SetSeine.class, NonTargetSample.class) { + String savedId = doSave(setSeineId, nonTargetSampleToSave, new SaveAction<SetSeine, NonTargetSample>(SetSeine.class, NonTargetSample.class) { @Override public NonTargetSample onCreate(SetSeine parent, NonTargetSample toCreate) { @@ -158,19 +159,62 @@ public class NonTargetSampleServiceImpl extends AbstractObserveService implement NonTargetSample created = dao.create(); copyExcluding(NonTargetSample.class, BinderService.EDIT, toCreate, created, NonTargetSample.PROPERTY_NON_TARGET_LENGTH); parent.addNonTargetSample(created); + + saveTargetLengths(toCreate.getNonTargetLength(), created); + dao.update(created); return created; } @Override - public NonTargetSample onUpdate(SetSeine parentBean, NonTargetSample toUpdate, NonTargetSample updated) { + public NonTargetSample onUpdate(SetSeine parent, NonTargetSample toUpdate, NonTargetSample updated) { copyExcluding(NonTargetSample.class, BinderService.EDIT, toUpdate, updated, NonTargetSample.PROPERTY_NON_TARGET_LENGTH); + + saveTargetLengths(toUpdate.getNonTargetLength(), updated); + getDao().update(updated); return updated; } + + protected void saveTargetLengths(Collection<NonTargetLength> nonTargetLengthsToSave, NonTargetSample childSaved) { + + List<NonTargetLength> nonTargetLengthsSaved = Lists.newArrayList(); + + if (CollectionUtils.isNotEmpty(nonTargetLengthsToSave)) { + + TopiaDAO<NonTargetLength> dao = getDao(NonTargetLength.class); + TopiaEntityBinder<NonTargetLength> binder = getBinder(NonTargetLength.class, BinderService.EDIT); + + for (NonTargetLength nonTargetLengthToSave : nonTargetLengthsToSave) { + + NonTargetLength nonTargetLengthSaved; + + if (Entities.isNew(nonTargetLengthToSave)) { + + nonTargetLengthSaved = dao.create(); + binder.load(nonTargetLengthToSave, nonTargetLengthSaved, false); + + } else { + + nonTargetLengthSaved = dao.findByTopiaId(nonTargetLengthToSave.getTopiaId()); + binder.load(nonTargetLengthToSave, nonTargetLengthSaved, true); + + } + + nonTargetLengthsSaved.add(nonTargetLengthSaved); + + } + + } + + childSaved.clearNonTargetLength(); + childSaved.addAllNonTargetLength(nonTargetLengthsSaved); + + } + }); return savedId; @@ -178,9 +222,9 @@ public class NonTargetSampleServiceImpl extends AbstractObserveService implement } @Override - public void delete(String setId, NonTargetSample toDelete) { + public void delete(String setSeineId, NonTargetSample nonTargetSampleToDelete) { - doDelete(setId, toDelete.getTopiaId(), new DeleteAction<SetSeine, NonTargetSample>(SetSeine.class, NonTargetSample.class) { + doDelete(setSeineId, nonTargetSampleToDelete.getTopiaId(), new DeleteAction<SetSeine, NonTargetSample>(SetSeine.class, NonTargetSample.class) { @Override public void onDelete(SetSeine parent, NonTargetSample toDelete) { diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetCatchServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetCatchServiceImpl.java index e2155d1..f8d00ee 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetCatchServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetCatchServiceImpl.java @@ -114,7 +114,7 @@ public class TargetCatchServiceImpl extends AbstractObserveService implements Ta SetSeine.class, TargetCatch.class, getListUpdator(), parentBinder, childBinder) { @Override - public void onUpdateFinalize(SetSeine parent, Collection<TargetCatch> oldChilds) throws TopiaException { + public void onUpdateFinalize(SetSeine parentSaved, Collection<TargetCatch> oldChilds) throws TopiaException { if (CollectionUtils.isNotEmpty(oldChilds)) { @@ -131,7 +131,7 @@ public class TargetCatchServiceImpl extends AbstractObserveService implements Ta } - parent.addAllTargetCatch(targetCatchesToReinject); + parentSaved.addAllTargetCatch(targetCatchesToReinject); } @@ -143,7 +143,7 @@ public class TargetCatchServiceImpl extends AbstractObserveService implements Ta log.info("Will remove " + targetLengthsToDelete.size() + " obsolete targetLength(s)."); } - TargetSample targetSample = parent.getTargetSample().get(0); + TargetSample targetSample = parentSaved.getTargetSample().get(0); // on supprime les echantillons obsoletes targetSample.getTargetLength().removeAll(targetLengthsToDelete); diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetLengthService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetLengthService.java deleted file mode 100644 index 4201f7f..0000000 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetLengthService.java +++ /dev/null @@ -1,17 +0,0 @@ -package fr.ird.observe.services.data.seine; - -import fr.ird.observe.entities.seine.TargetSample; -import fr.ird.observe.services.Commit; -import fr.ird.observe.services.ObserveService; - -/** - * @author Sylvain Bavencoff - bavencoff@codelutin.com - */ -public interface TargetLengthService extends ObserveService { - - TargetSample loadForEdit(String setId, boolean discarded); - - @Commit - void save(TargetSample parent); - -} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetLengthServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetLengthServiceImpl.java deleted file mode 100644 index e6fa067..0000000 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetLengthServiceImpl.java +++ /dev/null @@ -1,96 +0,0 @@ -package fr.ird.observe.services.data.seine; - -import fr.ird.observe.BinderService; -import fr.ird.observe.entities.seine.SetSeine; -import fr.ird.observe.entities.seine.TargetLength; -import fr.ird.observe.entities.seine.TargetSample; -import fr.ird.observe.services.AbstractObserveService; -import org.nuiton.topia.persistence.TopiaDAO; -import org.nuiton.topia.persistence.util.EntityListUpdator; -import org.nuiton.topia.persistence.util.TopiaEntityBinder; - -import java.util.Collection; -import java.util.List; - -/** - * @author Sylvain Bavencoff - bavencoff@codelutin.com - */ -public class TargetLengthServiceImpl extends AbstractObserveService implements TargetLengthService { - - @Override - public TargetSample loadForEdit(String setId, boolean discarded) { - - SetSeine setSeine = findByTopiaId(SetSeine.class, setId); - - TargetSample toLoad = null; - - if (!setSeine.isNonTargetSampleEmpty()) { - - List<TargetSample> targetSamples = setSeine.getTargetSample(); - for (TargetSample targetSample : targetSamples) { - - Boolean isDiscarded = targetSample.getDiscarded(); - - if (discarded == (isDiscarded != null && isDiscarded)) { - toLoad = targetSample; - } - - } - - } - - TargetSample loaded = getDao(TargetSample.class).newInstance(); - - if (toLoad != null) { - - copyExcluding(TargetSample.class, BinderService.EDIT_TARGET_LENGTH, toLoad, loaded, TargetSample.PROPERTY_TARGET_LENGTH); - - - if (!toLoad.isTargetLengthEmpty()) { - - TopiaEntityBinder<TargetLength> binder = getBinder(TargetLength.class, BinderService.EDIT); - TopiaDAO<TargetLength> dao = getDao(TargetLength.class); - - for (TargetLength childToLoad : toLoad.getTargetLength()) { - - TargetLength childLoaded = dao.newInstance(); - binder.load(childToLoad, childLoaded, true); - loaded.addTargetLength(childLoaded); - - } - } - } - - - return loaded; - } - - @Override - public void save(TargetSample parent) { - - TopiaEntityBinder<TargetSample> parentBinder = getBinder(TargetSample.class, BinderService.EDIT_TARGET_LENGTH); - TopiaEntityBinder<TargetLength> childbinder = getBinder(TargetLength.class, BinderService.EDIT); - - doSaveList(parent, new SaveCollectionAction<TargetSample, TargetLength>( - TargetSample.class, TargetLength.class, getListUpdator(), parentBinder, childbinder) { - - @Override - public void prepareSave(TargetSample parent, Collection<TargetLength> tosaves) { - - for (TargetLength targetLength : tosaves) { - - // on attache a l'echantillon - targetLength.setTargetSample(parent); - } - - } - }); - } - - protected EntityListUpdator<TargetSample, TargetLength> getListUpdator() { - return EntityListUpdator.newEntityListUpdator( - TargetSample.class, - TargetLength.class, - TargetSample.PROPERTY_TARGET_LENGTH); - } -} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java index c1b2d32..40bfd62 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java @@ -21,7 +21,7 @@ public interface TargetSampleService extends ObserveService { List<TargetLength> getObsoleteTargetLengths(String setSeineId, Set<String> speciesIdsUsed, boolean discarded); - TargetSample getTargetSample(String setSeineId, boolean discarded); + TargetSample loadForEdit(String setSeineId, boolean discarded); boolean canUseTargetSample(String setSeineId, boolean discarded); @@ -29,6 +29,6 @@ public interface TargetSampleService extends ObserveService { String save(String setSeineId, TargetSample toSave); @Commit - void delete(String setId, TargetSample bean); + void delete(String setSeineId, TargetSample bean); } diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleServiceImpl.java index 8735b1b..67953b1 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleServiceImpl.java @@ -1,6 +1,8 @@ package fr.ird.observe.services.data.seine; +import com.google.common.collect.Lists; import fr.ird.observe.BinderService; +import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.entities.seine.TargetCatch; @@ -9,8 +11,11 @@ import fr.ird.observe.entities.seine.TargetLengthDAO; import fr.ird.observe.entities.seine.TargetSample; import fr.ird.observe.entities.seine.TargetSampleDAO; import fr.ird.observe.services.AbstractObserveService; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaDAO; +import org.nuiton.topia.persistence.util.EntityListUpdator; import org.nuiton.topia.persistence.util.TopiaEntityBinder; import java.util.ArrayList; @@ -29,14 +34,6 @@ public class TargetSampleServiceImpl extends AbstractObserveService implements T /** Logger. */ private static final Log log = LogFactory.getLog(TargetSampleServiceImpl.class); - protected TargetSampleDAO getDao() { - return (TargetSampleDAO) getDao(TargetSample.class); - } - - protected TargetLengthDAO getChildDao() { - return (TargetLengthDAO) getDao(TargetLength.class); - } - @Override public List<Species> getAvailableSpeciesForTargetSample(String setSeineId, boolean discarded) { @@ -79,9 +76,8 @@ public class TargetSampleServiceImpl extends AbstractObserveService implements T } - @Override - public TargetSample getTargetSample(String setSeineId, boolean discarded) { + public TargetSample loadForEdit(String setSeineId, boolean discarded) { SetSeine setSeine = findByTopiaId(SetSeine.class, setSeineId); @@ -108,14 +104,15 @@ public class TargetSampleServiceImpl extends AbstractObserveService implements T copyExcluding(TargetSample.class, BinderService.EDIT_TARGET_LENGTH, toLoad, loaded, TargetSample.PROPERTY_TARGET_LENGTH); + if (!toLoad.isTargetLengthEmpty()) { - TargetLengthDAO childDao = getChildDao(); TopiaEntityBinder<TargetLength> binder = getBinder(TargetLength.class, BinderService.EDIT); + TopiaDAO<TargetLength> dao = getDao(TargetLength.class); for (TargetLength childToLoad : toLoad.getTargetLength()) { - TargetLength childLoaded = childDao.newInstance(); + TargetLength childLoaded = dao.newInstance(); binder.load(childToLoad, childLoaded, true); loaded.addTargetLength(childLoaded); @@ -125,7 +122,6 @@ public class TargetSampleServiceImpl extends AbstractObserveService implements T return loaded; - } @Override @@ -180,18 +176,63 @@ public class TargetSampleServiceImpl extends AbstractObserveService implements T TargetSample created = getDao().create(); copyExcluding(TargetSample.class, BinderService.EDIT, toCreate, created, TargetSample.PROPERTY_TARGET_LENGTH); parent.addTargetSample(created); + + saveTargetLengths(toCreate.getTargetLength(), created); + getDao().update(created); return created; + } @Override - public TargetSample onUpdate(SetSeine parentBean, TargetSample toUpdate, TargetSample updated) { + public TargetSample onUpdate(SetSeine parent, TargetSample toUpdate, TargetSample updated) { copyExcluding(TargetSample.class, BinderService.EDIT, toUpdate, updated, TargetSample.PROPERTY_TARGET_LENGTH); + + saveTargetLengths(toUpdate.getTargetLength(), updated); + getDao().update(updated); return updated; } + + protected void saveTargetLengths(Collection<TargetLength> targetLengthsToSave, TargetSample childSaved) { + + List<TargetLength> targetLengthsSaved = Lists.newArrayList(); + + if (CollectionUtils.isNotEmpty(targetLengthsToSave)) { + + TopiaDAO<TargetLength> dao = getDao(TargetLength.class); + TopiaEntityBinder<TargetLength> binder = getBinder(TargetLength.class, BinderService.EDIT); + + for (TargetLength targetLengthToSave : targetLengthsToSave) { + + TargetLength targetLengthSaved; + + if (Entities.isNew(targetLengthToSave)) { + + targetLengthSaved = dao.create(); + binder.load(targetLengthToSave, targetLengthSaved, false); + + } else { + + targetLengthSaved = dao.findByTopiaId(targetLengthToSave.getTopiaId()); + binder.load(targetLengthToSave, targetLengthSaved, true); + + } + + targetLengthsSaved.add(targetLengthSaved); + + } + + } + + childSaved.clearTargetLength(); + childSaved.addAllTargetLength(targetLengthsSaved); + + } + + }); return savedId; @@ -199,15 +240,33 @@ public class TargetSampleServiceImpl extends AbstractObserveService implements T } @Override - public void delete(String setId, TargetSample bean) { - doDelete(setId, bean.getTopiaId(), new DeleteAction<SetSeine, TargetSample>(SetSeine.class, TargetSample.class) { + public void delete(String setSeineId, TargetSample bean) { + + doDelete(setSeineId, bean.getTopiaId(), new DeleteAction<SetSeine, TargetSample>(SetSeine.class, TargetSample.class) { @Override public void onDelete(SetSeine parent, TargetSample toDelete) { + super.onDelete(parent, toDelete); parent.removeTargetSample(toDelete); + } }); } + protected TargetSampleDAO getDao() { + return (TargetSampleDAO) getDao(TargetSample.class); + } + + protected TargetLengthDAO getChildDao() { + return (TargetLengthDAO) getDao(TargetLength.class); + } + + protected EntityListUpdator<TargetSample, TargetLength> getListUpdator() { + return EntityListUpdator.newEntityListUpdator( + TargetSample.class, + TargetLength.class, + TargetSample.PROPERTY_TARGET_LENGTH); + } + } diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineServiceImpl.java index f910d1f..4f59498 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineServiceImpl.java @@ -110,7 +110,7 @@ public class TripSeineServiceImpl extends AbstractObserveService implements Trip } @Override - public TripSeine onUpdate(Program parentBean, TripSeine toUpdate, TripSeine updated) { + public TripSeine onUpdate(Program parent, TripSeine toUpdate, TripSeine updated) { copyExcluding(TripSeine.class, BinderService.EDIT, toUpdate, updated, TripSeine.PROPERTY_ROUTE); return updated; } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/BaitsCompositionUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/BaitsCompositionUIHandler.java index f25ad5d..0112839 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/BaitsCompositionUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/BaitsCompositionUIHandler.java @@ -63,39 +63,6 @@ public class BaitsCompositionUIHandler extends ContentTableUIHandler<SetLongline } @Override - protected void onOpenUI(ContentMode mode) { - - String setLonglineId = getDataContext().getSelectedSetId(); - - BaitsCompositionService service = getService(BaitsCompositionService.class); - - SetLongline loaded = service.loadForEdit(setLonglineId); - - copy(SetLongline.class, BinderService.EDIT_BAITS_COMPOSITION, loaded, getBean()); - - } - - @Override - protected void doPersist(SetLongline editBean) { - - BaitsCompositionService service = getService(BaitsCompositionService.class); - service.save(editBean); - - } - - @Override - protected void onSelectedRowChanged(int editingRow, BaitsComposition bean, boolean create) { - - if (getTableModel().isEditable()) { - if (log.isDebugEnabled()) { - log.debug("Row has changed to " + editingRow); - } - getUi().getBaitType().requestFocus(); - } - - } - - @Override protected void initTableUI(DefaultTableCellRenderer renderer) { JTable table = getUi().getTable(); @@ -131,6 +98,39 @@ public class BaitsCompositionUIHandler extends ContentTableUIHandler<SetLongline } @Override + protected void onOpenUI(ContentMode mode) { + + String setLonglineId = getDataContext().getSelectedSetId(); + + BaitsCompositionService service = getService(BaitsCompositionService.class); + + SetLongline loaded = service.loadForEdit(setLonglineId); + + copy(SetLongline.class, BinderService.EDIT_BAITS_COMPOSITION, loaded, getBean()); + + } + + @Override + protected void onSelectedRowChanged(int editingRow, BaitsComposition bean, boolean create) { + + if (getTableModel().isEditable()) { + if (log.isDebugEnabled()) { + log.debug("Row has changed to " + editingRow); + } + getUi().getBaitType().requestFocus(); + } + + } + + @Override + protected void doPersist(SetLongline editBean) { + + BaitsCompositionService service = getService(BaitsCompositionService.class); + service.save(editBean); + + } + + @Override public void afterSave(boolean refresh) { super.afterSave(refresh); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/BranchlinesCompositionUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/BranchlinesCompositionUIHandler.java index 8911e36..c65d4bb 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/BranchlinesCompositionUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/BranchlinesCompositionUIHandler.java @@ -63,18 +63,6 @@ public class BranchlinesCompositionUIHandler extends ContentTableUIHandler<SetLo } @Override - protected void onSelectedRowChanged(int editingRow, BranchlinesComposition bean, boolean create) { - - if (getTableModel().isEditable()) { - if (log.isDebugEnabled()) { - log.debug("Row has changed to " + editingRow); - } - getUi().getTopType().requestFocus(); - } - - } - - @Override protected void initTableUI(DefaultTableCellRenderer renderer) { JTable table = getUi().getTable(); @@ -120,6 +108,21 @@ public class BranchlinesCompositionUIHandler extends ContentTableUIHandler<SetLo } @Override + protected void onSelectedRowChanged(int editingRow, BranchlinesComposition bean, boolean create) { + + if (log.isDebugEnabled()) { + log.debug("Row has changed to " + editingRow); + } + + if (getTableModel().isEditable()) { + + getUi().getTopType().requestFocus(); + + } + + } + + @Override protected void doPersist(SetLongline editBean) { BranchlinesCompositionService service = getService(BranchlinesCompositionService.class); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java index 030c1fe..62818c6 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java @@ -148,86 +148,212 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C } @Override - protected void onOpenUI(ContentMode mode) { + protected CatchLonglineTableModel getTableModel() { + return (CatchLonglineTableModel) super.getTableModel(); + } - String setLonglineId = getDataContext().getSelectedSetId(); + @Override + public void initUI() throws Exception { - CatchLonglineService service = getService(CatchLonglineService.class); + // add a listPredicate to get only species from the correct configured speciesList + ObserveConfig config = getUi().getContextValue(ObserveConfig.class); - SetLongline loaded = service.loadForEdit(setLonglineId); + { + String speciesListId = config.getSpeciesListLonglineCatchId(); + prepareSpeciesList(speciesListId, getUi().getSpeciesCatch(), n("observe.error.speciesList.longline.catch.notFound")); + } - copy(SetLongline.class, BinderService.EDIT_CATCH_LONGLINE, loaded, getBean()); + { + String speciesListId = config.getSpeciesListLonglineDepredatorId(); + prepareSpeciesList(speciesListId, getUi().getPredator(), n("observe.error.speciesList.longline.depredator.notFound")); + } - // reset size measures - getModel().getSizeMeasuresTableModel().clear(); + CatchLonglineContentTableUIInitializer uiInitializer = new CatchLonglineContentTableUIInitializer(getUi()); + uiInitializer.initUI(ObserveContext.get().getServices()); - // reset weight measures - getModel().getWeightMeasuresTableModel().clear(); + getModel().addPropertyChangeListener(CatchLonglineUIModel.PROPERTY_SHOW_INDIVIDUAL_TABS, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Boolean newValue = (Boolean) evt.getNewValue(); + showIndividualTabs(newValue); + } + }); - // load sections (and baskets and branchlines) - SetLonglineService setLonglineService = getService(SetLonglineService.class); - List<Section> sections = setLonglineService.getSections(setLonglineId); + getModel().addPropertyChangeListener(CatchLonglineUIModel.PROPERTY_EDITABLE, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Boolean newValue = (Boolean) evt.getNewValue(); + setTableModelEditable(newValue); + } + }); - LonglinePositionHelper<CatchLongline> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); - positionHelper.initSections(sections, getTableModel().getData()); + setTableModelEditable(getModel().isEditable()); + + LonglinePositionHelper<CatchLongline> positionHelper = new LonglinePositionHelper<CatchLongline>( + getUi().getSection(), + getUi().getBasket(), + getUi().getBranchline(), + getTableEditBean()); + + POSITION_HELPER_ENTRY.setContextValue(getUi(), positionHelper); } @Override - protected void doPersist(SetLongline editBean) { - - List<CatchLongline> catchLonglines = editBean.getCatchLongline(); + protected void initTableUI(DefaultTableCellRenderer renderer) { { - SizeMeasuresTableModel tableModel = getModel().getSizeMeasuresTableModel(); + // init main table - Set<Integer> rowsChanged = tableModel.getCacheRowsChanged(); + JTable table = getUi().getTable(); - for (Integer row : rowsChanged) { + UIHelper.setI18nTableHeaderRenderer( + table, + n("observe.catchlongline.table.sectionHaulingId"), + n("observe.catchlongline.table.sectionHaulingId.tip"), + n("observe.catchlongline.table.basketHaulingId"), + n("observe.catchlongline.table.basketHaulingId.tip"), + n("observe.catchlongline.table.branchlineHaulingId"), + n("observe.catchlongline.table.branchlineHaulingId.tip"), - CatchLongline catchLongline = catchLonglines.get(row); + n("observe.catchlongline.table.speciesCatch"), + n("observe.catchlongline.table.speciesCatch.tip"), + n("observe.catchlongline.table.acquisitionMode"), + n("observe.catchlongline.table.acquisitionMode.tip"), + n("observe.catchlongline.table.count"), + n("observe.catchlongline.table.count.tip"), + n("observe.catchlongline.table.catchHealthness"), + n("observe.catchlongline.table.catchHealthness.tip"), + n("observe.catchlongline.table.catchFateLongline"), + n("observe.catchlongline.table.catchFateLongline.tip"), + n("observe.catchlongline.table.discardHealthness"), + n("observe.catchlongline.table.discardHealthness.tip"), + n("observe.catchlongline.table.depredated"), + n("observe.catchlongline.table.depredated.tip"), + n("observe.catchlongline.table.comment"), + n("observe.catchlongline.table.comment.tip")); - List<SizeMeasure> measurements = tableModel.getCacheForRowNotEmpty(row); - catchLongline.clearSizeMeasure(); - catchLongline.addAllSizeMeasure(measurements); + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, Section.class, DecoratorService.HAULING_IDENTIFIER)); + UIHelper.setTableColumnRenderer(table, 1, UIHelper.newDecorateTableCellRenderer(renderer, Basket.class, DecoratorService.HAULING_IDENTIFIER)); + UIHelper.setTableColumnRenderer(table, 2, UIHelper.newDecorateTableCellRenderer(renderer, Branchline.class, DecoratorService.HAULING_IDENTIFIER)); + + UIHelper.setTableColumnRenderer(table, 3, UIHelper.newDecorateTableCellRenderer(renderer, Species.class)); + UIHelper.setTableColumnRenderer(table, 4, UIHelper.newEnumTableCellRenderer(renderer, CatchAcquisitionModeEnum.class)); + UIHelper.setTableColumnRenderer(table, 5, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 6, UIHelper.newDecorateTableCellRenderer(renderer, Healthness.class)); + UIHelper.setTableColumnRenderer(table, 7, UIHelper.newDecorateTableCellRenderer(renderer, CatchFateLongline.class)); + UIHelper.setTableColumnRenderer(table, 8, UIHelper.newDecorateTableCellRenderer(renderer, Healthness.class)); + UIHelper.setTableColumnRenderer(table, 9, UIHelper.newBooleanTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 10, UIHelper.newStringTableCellRenderer(renderer, 10, true)); - } } + ReferentialService service = getService(ReferentialService.class); { - WeightMeasuresTableModel tableModel = getModel().getWeightMeasuresTableModel(); + // init size measures table + JTable table = getUi().getSizeMeasuresTable(); - Set<Integer> rowsChanged = tableModel.getCacheRowsChanged(); + UIHelper.setI18nTableHeaderRenderer(table, + n("observe.catchlongline.table.sizeMeasureType"), + n("observe.catchlongline.table.sizeMeasureType.tip"), + n("observe.catchlongline.table.size"), + n("observe.catchlongline.table.size.tip")); - for (Integer row : rowsChanged) { + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, SizeMeasureType.class)); + UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - CatchLongline catchLongline = catchLonglines.get(row); + Decorator<SizeMeasureType> decorator = ObserveContext.get().getDecorator(SizeMeasureType.class); - List<WeightMeasure> measurements = tableModel.getCacheForRowNotEmpty(row); - catchLongline.clearWeightMeasure(); - catchLongline.addAllWeightMeasure(measurements); + List<SizeMeasureType> list = service.loadAndDecorateList(SizeMeasureType.class); + UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); + UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor(table)); + + SizeMeasuresTableModel tableModel = getModel().getSizeMeasuresTableModel(); + tableModel.installTableKeyListener(getUi().getSizeMeasuresTable()); + tableModel.addPropertyChangeListener(SizeMeasuresTableModel.MODIFIED_PROPERTY, sizeTableModelModified); - } } - CatchLonglineService service = getService(CatchLonglineService.class); - service.save(editBean); + { + // init weight measures table + JTable table = getUi().getWeightMeasuresTable(); + + UIHelper.setI18nTableHeaderRenderer(table, + n("observe.catchlongline.table.weightMeasureType"), + n("observe.catchlongline.table.weightMeasureType.tip"), + n("observe.catchlongline.table.weight"), + n("observe.catchlongline.table.weight.tip")); + + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, WeightMeasureType.class)); + UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + + Decorator<WeightMeasureType> decorator = ObserveContext.get().getDecorator(WeightMeasureType.class); + List<WeightMeasureType> list = service.loadAndDecorateList(WeightMeasureType.class); + UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); + UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor(table)); + + WeightMeasuresTableModel tableModel = getModel().getWeightMeasuresTableModel(); + tableModel.installTableKeyListener(getUi().getWeightMeasuresTable()); + tableModel.addPropertyChangeListener(WeightMeasuresTableModel.MODIFIED_PROPERTY, weightTableModelModified); + + } + + getTableModel().addPropertyChangeListener(ContentTableModel.CREATE_PROPERTY, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Boolean oldValue = (Boolean) evt.getOldValue(); + Boolean newValue = (Boolean) evt.getNewValue(); + setTableModelCreate(oldValue, newValue); + } + }); } - public void saveBranchline() { + @Override + public void openUI() throws Exception { if (log.isInfoEnabled()) { - log.info("Saved modified branchline"); + log.info("OpenUI: " + getModel()); } - Branchline branchline = getTableEditBean().getBranchline(); + super.openUI(); + + // Reset all sections + LonglinePositionHelper<CatchLongline> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); + getUi().getSection().setData(positionHelper.getSectionUniverse()); + + SwingValidatorMessageTableModel errorTableModel = getUi().getErrorTableModel(); + + // listen messages to see if required to add + reloadTableModelListener(errorTableModel, computeTabValidStateListener); + + computeTabValidState(errorTableModel); + + } + + @Override + protected void onOpenUI(ContentMode mode) { + + String setLonglineId = getDataContext().getSelectedSetId(); CatchLonglineService service = getService(CatchLonglineService.class); - Branchline beanSaved = service.saveBranchline(branchline); - getTableEditBean().setBranchline(beanSaved); - getUi().getBranchlineValidator().setChanged(false); + SetLongline loaded = service.loadForEdit(setLonglineId); + + copy(SetLongline.class, BinderService.EDIT_CATCH_LONGLINE, loaded, getBean()); + + // reset size measures + getModel().getSizeMeasuresTableModel().clear(); + + // reset weight measures + getModel().getWeightMeasuresTableModel().clear(); + + // load sections (and baskets and branchlines) + SetLonglineService setLonglineService = getService(SetLonglineService.class); + List<Section> sections = setLonglineService.getSections(setLonglineId); + + LonglinePositionHelper<CatchLongline> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); + positionHelper.initSections(sections, getTableModel().getData()); } @@ -386,208 +512,87 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C } @Override - protected void initTableUI(DefaultTableCellRenderer renderer) { - - { - // init main table - - JTable table = getUi().getTable(); - - UIHelper.setI18nTableHeaderRenderer( - table, - n("observe.catchlongline.table.sectionHaulingId"), - n("observe.catchlongline.table.sectionHaulingId.tip"), - n("observe.catchlongline.table.basketHaulingId"), - n("observe.catchlongline.table.basketHaulingId.tip"), - n("observe.catchlongline.table.branchlineHaulingId"), - n("observe.catchlongline.table.branchlineHaulingId.tip"), - - n("observe.catchlongline.table.speciesCatch"), - n("observe.catchlongline.table.speciesCatch.tip"), - n("observe.catchlongline.table.acquisitionMode"), - n("observe.catchlongline.table.acquisitionMode.tip"), - n("observe.catchlongline.table.count"), - n("observe.catchlongline.table.count.tip"), - n("observe.catchlongline.table.catchHealthness"), - n("observe.catchlongline.table.catchHealthness.tip"), - n("observe.catchlongline.table.catchFateLongline"), - n("observe.catchlongline.table.catchFateLongline.tip"), - n("observe.catchlongline.table.discardHealthness"), - n("observe.catchlongline.table.discardHealthness.tip"), - n("observe.catchlongline.table.depredated"), - n("observe.catchlongline.table.depredated.tip"), - n("observe.catchlongline.table.comment"), - n("observe.catchlongline.table.comment.tip")); - - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, Section.class, DecoratorService.HAULING_IDENTIFIER)); - UIHelper.setTableColumnRenderer(table, 1, UIHelper.newDecorateTableCellRenderer(renderer, Basket.class, DecoratorService.HAULING_IDENTIFIER)); - UIHelper.setTableColumnRenderer(table, 2, UIHelper.newDecorateTableCellRenderer(renderer, Branchline.class, DecoratorService.HAULING_IDENTIFIER)); - - UIHelper.setTableColumnRenderer(table, 3, UIHelper.newDecorateTableCellRenderer(renderer, Species.class)); - UIHelper.setTableColumnRenderer(table, 4, UIHelper.newEnumTableCellRenderer(renderer, CatchAcquisitionModeEnum.class)); - UIHelper.setTableColumnRenderer(table, 5, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 6, UIHelper.newDecorateTableCellRenderer(renderer, Healthness.class)); - UIHelper.setTableColumnRenderer(table, 7, UIHelper.newDecorateTableCellRenderer(renderer, CatchFateLongline.class)); - UIHelper.setTableColumnRenderer(table, 8, UIHelper.newDecorateTableCellRenderer(renderer, Healthness.class)); - UIHelper.setTableColumnRenderer(table, 9, UIHelper.newBooleanTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 10, UIHelper.newStringTableCellRenderer(renderer, 10, true)); - - } - - ReferentialService service = getService(ReferentialService.class); - { - // init size measures table - JTable table = getUi().getSizeMeasuresTable(); - - UIHelper.setI18nTableHeaderRenderer(table, - n("observe.catchlongline.table.sizeMeasureType"), - n("observe.catchlongline.table.sizeMeasureType.tip"), - n("observe.catchlongline.table.size"), - n("observe.catchlongline.table.size.tip")); - - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, SizeMeasureType.class)); - UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - - Decorator<SizeMeasureType> decorator = ObserveContext.get().getDecorator(SizeMeasureType.class); - - List<SizeMeasureType> list = service.loadAndDecorateList(SizeMeasureType.class); - UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); - UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor(table)); - - SizeMeasuresTableModel tableModel = getModel().getSizeMeasuresTableModel(); - tableModel.installTableKeyListener(getUi().getSizeMeasuresTable()); - tableModel.addPropertyChangeListener(SizeMeasuresTableModel.MODIFIED_PROPERTY, sizeTableModelModified); + protected void closeSafeUI() { + if (log.isInfoEnabled()) { + log.info("CloseUI: " + getModel()); } + super.closeSafeUI(); - { - // init weight measures table - JTable table = getUi().getWeightMeasuresTable(); + // remove listener + getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener); - UIHelper.setI18nTableHeaderRenderer(table, - n("observe.catchlongline.table.weightMeasureType"), - n("observe.catchlongline.table.weightMeasureType.tip"), - n("observe.catchlongline.table.weight"), - n("observe.catchlongline.table.weight.tip")); + } - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, WeightMeasureType.class)); - UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + @Override + protected void resetEditBean() { - Decorator<WeightMeasureType> decorator = ObserveContext.get().getDecorator(WeightMeasureType.class); + UIHelper.stopEditing(getUi().getSizeMeasuresTable()); + UIHelper.stopEditing(getUi().getWeightMeasuresTable()); - List<WeightMeasureType> list = service.loadAndDecorateList(WeightMeasureType.class); - UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); - UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor(table)); + onBranchlineChanged(null); - WeightMeasuresTableModel tableModel = getModel().getWeightMeasuresTableModel(); - tableModel.installTableKeyListener(getUi().getWeightMeasuresTable()); - tableModel.addPropertyChangeListener(WeightMeasuresTableModel.MODIFIED_PROPERTY, weightTableModelModified); + super.resetEditBean(); - } + onBranchlineChanged(getTableEditBean().getBranchline()); - getTableModel().addPropertyChangeListener(ContentTableModel.CREATE_PROPERTY, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - Boolean oldValue = (Boolean) evt.getOldValue(); - Boolean newValue = (Boolean) evt.getNewValue(); - setTableModelCreate(oldValue, newValue); - } - }); } @Override - public void initUI() throws Exception { + protected void doPersist(SetLongline editBean) { - // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + List<CatchLongline> catchLonglines = editBean.getCatchLongline(); { - String speciesListId = config.getSpeciesListLonglineCatchId(); - prepareSpeciesList(speciesListId, getUi().getSpeciesCatch(), n("observe.error.speciesList.longline.catch.notFound")); - } + SizeMeasuresTableModel tableModel = getModel().getSizeMeasuresTableModel(); - { - String speciesListId = config.getSpeciesListLonglineDepredatorId(); - prepareSpeciesList(speciesListId, getUi().getPredator(), n("observe.error.speciesList.longline.depredator.notFound")); - } + Set<Integer> rowsChanged = tableModel.getCacheRowsChanged(); - CatchLonglineContentTableUIInitializer uiInitializer = new CatchLonglineContentTableUIInitializer(getUi()); - uiInitializer.initUI(ObserveContext.get().getServices()); + for (Integer row : rowsChanged) { - getModel().addPropertyChangeListener(CatchLonglineUIModel.PROPERTY_SHOW_INDIVIDUAL_TABS, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - Boolean newValue = (Boolean) evt.getNewValue(); - showIndividualTabs(newValue); - } - }); + CatchLongline catchLongline = catchLonglines.get(row); + + List<SizeMeasure> measurements = tableModel.getCacheForRowNotEmpty(row); + catchLongline.clearSizeMeasure(); + catchLongline.addAllSizeMeasure(measurements); - getModel().addPropertyChangeListener(CatchLonglineUIModel.PROPERTY_EDITABLE, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - Boolean newValue = (Boolean) evt.getNewValue(); - setTableModelEditable(newValue); } - }); + } - setTableModelEditable(getModel().isEditable()); + { + WeightMeasuresTableModel tableModel = getModel().getWeightMeasuresTableModel(); - LonglinePositionHelper<CatchLongline> positionHelper = new LonglinePositionHelper<CatchLongline>( - getUi().getSection(), - getUi().getBasket(), - getUi().getBranchline(), - getTableEditBean()); + Set<Integer> rowsChanged = tableModel.getCacheRowsChanged(); - POSITION_HELPER_ENTRY.setContextValue(getUi(), positionHelper); + for (Integer row : rowsChanged) { - } + CatchLongline catchLongline = catchLonglines.get(row); - @Override - public void openUI() throws Exception { + List<WeightMeasure> measurements = tableModel.getCacheForRowNotEmpty(row); + catchLongline.clearWeightMeasure(); + catchLongline.addAllWeightMeasure(measurements); - if (log.isInfoEnabled()) { - log.info("OpenUI: " + getModel()); + } } - super.openUI(); - - // Reset all sections - LonglinePositionHelper<CatchLongline> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); - getUi().getSection().setData(positionHelper.getSectionUniverse()); - - SwingValidatorMessageTableModel errorTableModel = getUi().getErrorTableModel(); - - // listen messages to see if required to add - reloadTableModelListener(errorTableModel, computeTabValidStateListener); - - computeTabValidState(errorTableModel); + CatchLonglineService service = getService(CatchLonglineService.class); + service.save(editBean); } - @Override - protected void closeSafeUI() { + public void saveBranchline() { if (log.isInfoEnabled()) { - log.info("CloseUI: " + getModel()); + log.info("Saved modified branchline"); } - super.closeSafeUI(); - - // remove listener - getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener); - - } - - @Override - protected void resetEditBean() { - - UIHelper.stopEditing(getUi().getSizeMeasuresTable()); - UIHelper.stopEditing(getUi().getWeightMeasuresTable()); - onBranchlineChanged(null); + Branchline branchline = getTableEditBean().getBranchline(); - super.resetEditBean(); + CatchLonglineService service = getService(CatchLonglineService.class); - onBranchlineChanged(getTableEditBean().getBranchline()); + Branchline beanSaved = service.saveBranchline(branchline); + getTableEditBean().setBranchline(beanSaved); + getUi().getBranchlineValidator().setChanged(false); } @@ -842,9 +847,4 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C } - @Override - protected CatchLonglineTableModel getTableModel() { - return (CatchLonglineTableModel) super.getTableModel(); - } - } \ No newline at end of file diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/EncounterUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/EncounterUIHandler.java index 7d335cb..9652fa7 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/EncounterUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/EncounterUIHandler.java @@ -62,34 +62,15 @@ public class EncounterUIHandler extends ContentTableUIHandler<ActivityLongline, } @Override - protected void onOpenUI(ContentMode mode) { - - String activityLonglineId = getDataContext().getSelectedActivityId(); - - EncounterService service = getService(EncounterService.class); - - ActivityLongline loaded = service.loadForEdit(activityLonglineId); - - copy(ActivityLongline.class, BinderService.EDIT_ENCOUNTER, loaded, getBean()); - - } - - @Override - protected void doPersist(ActivityLongline editBean) { + public void initUI() throws Exception { - EncounterService service = getService(EncounterService.class); - service.save(editBean); + // add a listPredicate to get only species from the correct configured speciesList + ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + String speciesListId = config.getSpeciesListLonglineEncounterId(); + prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.longline.encounter.notFound")); - } + super.initUI(); - @Override - protected void onSelectedRowChanged(int editingRow, Encounter bean, boolean create) { - if (getTableModel().isEditable()) { - if (log.isDebugEnabled()) { - log.debug("Row has changed to " + editingRow); - } - getUi().getEncounterType().requestFocus(); - } } @Override @@ -113,14 +94,36 @@ public class EncounterUIHandler extends ContentTableUIHandler<ActivityLongline, } @Override - public void initUI() throws Exception { + protected void onOpenUI(ContentMode mode) { - // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); - String speciesListId = config.getSpeciesListLonglineEncounterId(); - prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.longline.encounter.notFound")); + String activityLonglineId = getDataContext().getSelectedActivityId(); - super.initUI(); + EncounterService service = getService(EncounterService.class); + + ActivityLongline loaded = service.loadForEdit(activityLonglineId); + + copy(ActivityLongline.class, BinderService.EDIT_ENCOUNTER, loaded, getBean()); + + } + + @Override + protected void onSelectedRowChanged(int editingRow, Encounter bean, boolean create) { + + if (log.isDebugEnabled()) { + log.debug("Row has changed to " + editingRow); + } + + if (getTableModel().isEditable()) { + getUi().getEncounterType().requestFocus(); + } + + } + + @Override + protected void doPersist(ActivityLongline editBean) { + + EncounterService service = getService(EncounterService.class); + service.save(editBean); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/FloatlinesCompositionUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/FloatlinesCompositionUIHandler.java index 48926bd..bfc9366 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/FloatlinesCompositionUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/FloatlinesCompositionUIHandler.java @@ -62,23 +62,45 @@ public class FloatlinesCompositionUIHandler extends ContentTableUIHandler<SetLon } @Override - protected void onOpenUI(ContentMode mode) { + protected void initTableUI(DefaultTableCellRenderer renderer) { - String setLonglineId = getDataContext().getSelectedSetId(); + JTable table = getUi().getTable(); - FloatlinesCompositionService service = getService(FloatlinesCompositionService.class); + UIHelper.setI18nTableHeaderRenderer( + table, + n("observe.floatlinesComposition.table.lineType"), + n("observe.floatlinesComposition.table.lineType.tip"), + n("observe.floatlinesComposition.table.length"), + n("observe.floatlinesComposition.table.length.tip"), + n("observe.floatlinesComposition.table.proportion"), + n("observe.floatlinesComposition.table.proportion.tip")); - SetLongline loaded = service.loadForEdit(setLonglineId); + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, LineType.class)); + UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 2, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - copy(SetLongline.class, BinderService.EDIT_FLOATLINES_COMPOSITION, loaded, getBean()); + // when model change in table, let's recompute the proportion sum + table.getModel().addTableModelListener(new TableModelListener() { + @Override + public void tableChanged(TableModelEvent e) { + + int proportionSum = getBean().getFloatlinesCompositionProportionSum(); + getBean().setFloatlinesCompositionProportionSum(proportionSum); + } + }); } @Override - protected void doPersist(SetLongline editBean) { + protected void onOpenUI(ContentMode mode) { + + String setLonglineId = getDataContext().getSelectedSetId(); FloatlinesCompositionService service = getService(FloatlinesCompositionService.class); - service.save(editBean); + + SetLongline loaded = service.loadForEdit(setLonglineId); + + copy(SetLongline.class, BinderService.EDIT_FLOATLINES_COMPOSITION, loaded, getBean()); } @@ -95,32 +117,10 @@ public class FloatlinesCompositionUIHandler extends ContentTableUIHandler<SetLon } @Override - protected void initTableUI(DefaultTableCellRenderer renderer) { - - JTable table = getUi().getTable(); - - UIHelper.setI18nTableHeaderRenderer( - table, - n("observe.floatlinesComposition.table.lineType"), - n("observe.floatlinesComposition.table.lineType.tip"), - n("observe.floatlinesComposition.table.length"), - n("observe.floatlinesComposition.table.length.tip"), - n("observe.floatlinesComposition.table.proportion"), - n("observe.floatlinesComposition.table.proportion.tip")); - - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, LineType.class)); - UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 2, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - - // when model change in table, let's recompute the proportion sum - table.getModel().addTableModelListener(new TableModelListener() { - @Override - public void tableChanged(TableModelEvent e) { + protected void doPersist(SetLongline editBean) { - int proportionSum = getBean().getFloatlinesCompositionProportionSum(); - getBean().setFloatlinesCompositionProportionSum(proportionSum); - } - }); + FloatlinesCompositionService service = getService(FloatlinesCompositionService.class); + service.save(editBean); } 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 89cde36..001e0a2 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 @@ -116,6 +116,115 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip } @Override + protected GearUseFeaturesLonglineTableModel getTableModel() { + return (GearUseFeaturesLonglineTableModel) super.getTableModel(); + } + + @Override + public void initUI() throws Exception { + + super.initUI(); + + getModel().addPropertyChangeListener(GearUseFeaturesLonglineUIModel.PROPERTY_EDITABLE, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Boolean newValue = (Boolean) evt.getNewValue(); + setTableModelEditable(newValue); + } + }); + + setTableModelEditable(getModel().isEditable()); + + getTableModel().setGearUseFeaturesLonglineUIHandler(this); + + } + + @Override + protected void initTableUI(DefaultTableCellRenderer renderer) { + + { + JTable table = getUi().getTable(); + + UIHelper.setI18nTableHeaderRenderer(table, + n("observe.gearUseFeaturesLongline.table.gear"), + n("observe.gearUseFeaturesLongline.table.gear.tip"), + n("observe.gearUseFeaturesLongline.table.number"), + n("observe.gearUseFeaturesLongline.table.number.tip"), + n("observe.gearUseFeaturesLongline.table.usedInTrip"), + n("observe.gearUseFeaturesLongline.table.usedInTrip.tip"), + n("observe.gearUseFeaturesLongline.table.comment"), + n("observe.gearUseFeaturesLongline.table.comment.tip")); + + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, Gear.class)); + UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 2, UIHelper.newBooleanTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 3, UIHelper.newStringTableCellRenderer(renderer, 10, true)); + } + + { + // init measurements table + JTable table = getUi().getMeasurementsTable(); + + UIHelper.setI18nTableHeaderRenderer(table, + n("observe.gearUseFeaturesLongline.table.gearCaracteristic"), + n("observe.gearUseFeaturesLongline.table.gearCaracteristic.tip"), + n("observe.gearUseFeaturesLongline.table.value"), + n("observe.gearUseFeaturesLongline.table.value.tip")); + + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, GearCaracteristic.class)); + UIHelper.setTableColumnRenderer(table, 1, new GearUseFeatureMeasurementCellRenderer(0, renderer)); + + table.getTableHeader().setReorderingAllowed(false); + + Decorator<GearCaracteristic> decorator = ObserveContext.get().getDecorator(GearCaracteristic.class); + + GearUseFeaturesLonglineService service = getService(GearUseFeaturesLonglineService.class); + List<GearCaracteristic> list = service.getList(GearCaracteristic.class); + UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); + UIHelper.setTableColumnEditor(table, 1, new GearUseFeatureMeasurementCellEditor(0)); + + GearUseFeaturesMeasurementLonglinesTableModel tableModel = getModel().getMeasurementsTableModel(); + tableModel.installTableKeyListener(getUi().getMeasurementsTable()); + tableModel.addPropertyChangeListener(GearUseFeaturesMeasurementLonglinesTableModel.MODIFIED_PROPERTY, measurementsTableModelModified); + + ListSelectionModel selectionModel = table.getSelectionModel(); + selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + tableModel.installSelectionListener(table); + + new SectionTemplatesAutotSelectRowAndShowPopupAction(getUi(), getUi().getMeasurementsScrollPane(), table, getUi().getMeasurementsTablePopup()); + + } + + // Adapt layout to let more place for the editor + + getUi().getShowForm().remove(1); + getUi().getShowForm().add(SwingUtil.boxComponentWithJxLayer(getUi().getEditor()), new GridBagConstraints(0, 1, 1, 1, 1.0, 0.3, 10, 1, new Insets(0, 0, 0, 0), 0, 0), 1); + getUi().getEditor().remove(0); + getUi().getEditor().add(SwingUtil.boxComponentWithJxLayer(getUi().getEditorPanel()), new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, 10, 1, new Insets(0, 0, 0, 0), 0, 0), 0); + + + } + + @Override + public void openUI() throws Exception { + + if (log.isInfoEnabled()) { + log.info("OpenUI: " + getModel()); + } + + super.openUI(); + + // To be sure always remove listener (could prevent some leaks) + getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener); + // listen messages to see if required to add + getUi().getErrorTableModel().addTableModelListener(computeTabValidStateListener); + + SwingValidatorMessageTableModel errorTableModel = getUi().getErrorTableModel(); + computeTabValidState(errorTableModel); + + } + + @Override protected void onOpenUI(ContentMode mode) { String activityLonglineId = getDataContext().getSelectedTripLonglineId(); @@ -132,31 +241,32 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip } @Override - protected void doPersist(TripLongline editBean) { + protected ContentMode getContentMode(DataContext dataContext) { - List<GearUseFeaturesLongline> gearUseFeatures = editBean.getGearUseFeaturesLongline(); + // par defaut, on suppose qu'on peut afficher les données + getModel().setShowData(true); - GearUseFeaturesLonglineUIModel model = getModel(); + String selectedTripId = dataContext.getSelectedTripId(); - GearUseFeaturesMeasurementLonglinesTableModel measurementsTableModel = model.getMeasurementsTableModel(); + if (selectedTripId.equals(dataContext.getOpenTripId())) { - Set<Integer> rowsChanged = measurementsTableModel.getCacheRowsChanged(); + // mode mise a jour + return ContentMode.UPDATE; + } - for (Integer row : rowsChanged) { + // mode lecture - GearUseFeaturesLongline gearUseFeaturesLongline = gearUseFeatures.get(row); + if (dataContext.isSelectedTripLongline()) { - List<GearUseFeaturesMeasurementLongline> measurements = measurementsTableModel.getCacheForRowNotEmpty(row); + addInfoMessage(t("observe.tripLongline.message.not.open")); - gearUseFeaturesLongline.clearGearUseFeaturesMeasurement(); + } else { - gearUseFeaturesLongline.addAllGearUseFeaturesMeasurement(measurements); + addInfoMessage(t("observe.tripLongline.message.not.open")); } - GearUseFeaturesLonglineService service = getService(GearUseFeaturesLonglineService.class); - service.save(editBean); - + return ContentMode.READ; } @Override @@ -247,128 +357,61 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip } @Override - protected void initTableUI(DefaultTableCellRenderer renderer) { - - { - JTable table = getUi().getTable(); - - UIHelper.setI18nTableHeaderRenderer(table, - n("observe.gearUseFeaturesLongline.table.gear"), - n("observe.gearUseFeaturesLongline.table.gear.tip"), - n("observe.gearUseFeaturesLongline.table.number"), - n("observe.gearUseFeaturesLongline.table.number.tip"), - n("observe.gearUseFeaturesLongline.table.usedInTrip"), - n("observe.gearUseFeaturesLongline.table.usedInTrip.tip"), - n("observe.gearUseFeaturesLongline.table.comment"), - n("observe.gearUseFeaturesLongline.table.comment.tip")); + protected void closeSafeUI() { - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, Gear.class)); - UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 2, UIHelper.newBooleanTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 3, UIHelper.newStringTableCellRenderer(renderer, 10, true)); + if (log.isInfoEnabled()) { + log.info("CloseUI: " + getModel()); } + super.closeSafeUI(); - { - // init measurements table - JTable table = getUi().getMeasurementsTable(); - - UIHelper.setI18nTableHeaderRenderer(table, - n("observe.gearUseFeaturesLongline.table.gearCaracteristic"), - n("observe.gearUseFeaturesLongline.table.gearCaracteristic.tip"), - n("observe.gearUseFeaturesLongline.table.value"), - n("observe.gearUseFeaturesLongline.table.value.tip")); - - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, GearCaracteristic.class)); - UIHelper.setTableColumnRenderer(table, 1, new GearUseFeatureMeasurementCellRenderer(0, renderer)); - - table.getTableHeader().setReorderingAllowed(false); - - Decorator<GearCaracteristic> decorator = ObserveContext.get().getDecorator(GearCaracteristic.class); - - GearUseFeaturesLonglineService service = getService(GearUseFeaturesLonglineService.class); - List<GearCaracteristic> list = service.getList(GearCaracteristic.class); - UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); - UIHelper.setTableColumnEditor(table, 1, new GearUseFeatureMeasurementCellEditor(0)); - - GearUseFeaturesMeasurementLonglinesTableModel tableModel = getModel().getMeasurementsTableModel(); - tableModel.installTableKeyListener(getUi().getMeasurementsTable()); - tableModel.addPropertyChangeListener(GearUseFeaturesMeasurementLonglinesTableModel.MODIFIED_PROPERTY, measurementsTableModelModified); - - ListSelectionModel selectionModel = table.getSelectionModel(); - selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - tableModel.installSelectionListener(table); - - new SectionTemplatesAutotSelectRowAndShowPopupAction(getUi(), getUi().getMeasurementsScrollPane(), table, getUi().getMeasurementsTablePopup()); + // remove listener + getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener); - } + } - // Adapt layout to let more place for the editor + @Override + public void startEditUI(String... binding) { - getUi().getShowForm().remove(1); - getUi().getShowForm().add(SwingUtil.boxComponentWithJxLayer(getUi().getEditor()), new GridBagConstraints(0, 1, 1, 1, 1.0, 0.3, 10, 1, new Insets(0, 0, 0, 0), 0, 0), 1); - getUi().getEditor().remove(0); - getUi().getEditor().add(SwingUtil.boxComponentWithJxLayer(getUi().getEditorPanel()), new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, 10, 1, new Insets(0, 0, 0, 0), 0, 0), 0); + getModel().getMeasurementsTableModel().setEditable(true); + super.startEditUI(binding); } @Override - public void initUI() throws Exception { - - super.initUI(); - - getModel().addPropertyChangeListener(GearUseFeaturesLonglineUIModel.PROPERTY_EDITABLE, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - Boolean newValue = (Boolean) evt.getNewValue(); - setTableModelEditable(newValue); - } - }); + protected void resetEditBean() { - setTableModelEditable(getModel().isEditable()); + UIHelper.stopEditing(getUi().getMeasurementsTable()); - getTableModel().setGearUseFeaturesLonglineUIHandler(this); + super.resetEditBean(); } @Override - public void openUI() throws Exception { - - if (log.isInfoEnabled()) { - log.info("OpenUI: " + getModel()); - } + protected void doPersist(TripLongline editBean) { - super.openUI(); + List<GearUseFeaturesLongline> gearUseFeatures = editBean.getGearUseFeaturesLongline(); - // To be sure always remove listener (could prevent some leaks) - getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener); - // listen messages to see if required to add - getUi().getErrorTableModel().addTableModelListener(computeTabValidStateListener); + GearUseFeaturesLonglineUIModel model = getModel(); - SwingValidatorMessageTableModel errorTableModel = getUi().getErrorTableModel(); - computeTabValidState(errorTableModel); + GearUseFeaturesMeasurementLonglinesTableModel measurementsTableModel = model.getMeasurementsTableModel(); - } + Set<Integer> rowsChanged = measurementsTableModel.getCacheRowsChanged(); - @Override - protected void closeSafeUI() { + for (Integer row : rowsChanged) { - if (log.isInfoEnabled()) { - log.info("CloseUI: " + getModel()); - } - super.closeSafeUI(); + GearUseFeaturesLongline gearUseFeaturesLongline = gearUseFeatures.get(row); - // remove listener - getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener); + List<GearUseFeaturesMeasurementLongline> measurements = measurementsTableModel.getCacheForRowNotEmpty(row); - } + gearUseFeaturesLongline.clearGearUseFeaturesMeasurement(); - @Override - public void startEditUI(String... binding) { + gearUseFeaturesLongline.addAllGearUseFeaturesMeasurement(measurements); - getModel().getMeasurementsTableModel().setEditable(true); + } - super.startEditUI(binding); + GearUseFeaturesLonglineService service = getService(GearUseFeaturesLonglineService.class); + service.save(editBean); } @@ -407,49 +450,6 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip } - @Override - protected void resetEditBean() { - - UIHelper.stopEditing(getUi().getMeasurementsTable()); - - super.resetEditBean(); - - } - - @Override - protected ContentMode getContentMode(DataContext dataContext) { - - // par defaut, on suppose qu'on peut afficher les données - getModel().setShowData(true); - - String selectedTripId = dataContext.getSelectedTripId(); - - if (selectedTripId.equals(dataContext.getOpenTripId())) { - - // mode mise a jour - return ContentMode.UPDATE; - } - - // mode lecture - - if (dataContext.isSelectedTripLongline()) { - - addInfoMessage(t("observe.tripLongline.message.not.open")); - - } else { - - addInfoMessage(t("observe.tripLongline.message.not.open")); - - } - - return ContentMode.READ; - } - - @Override - protected GearUseFeaturesLonglineTableModel getTableModel() { - return (GearUseFeaturesLonglineTableModel) super.getTableModel(); - } - protected void setTableModelEditable(Boolean newValue) { getModel().getMeasurementsTableModel().setEditable(newValue); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/HooksCompositionUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/HooksCompositionUIHandler.java index ca49581..d29cfc2 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/HooksCompositionUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/HooksCompositionUIHandler.java @@ -63,39 +63,6 @@ public class HooksCompositionUIHandler extends ContentTableUIHandler<SetLongline } @Override - protected void onOpenUI(ContentMode mode) { - - String setLonglineId = getDataContext().getSelectedSetId(); - - HooksCompositionService service = getService(HooksCompositionService.class); - - SetLongline loaded = service.loadForEdit(setLonglineId); - - copy(SetLongline.class, BinderService.EDIT_HOOKS_COMPOSITION, loaded, getBean()); - - } - - @Override - protected void doPersist(SetLongline editBean) { - - HooksCompositionService service = getService(HooksCompositionService.class); - service.save(editBean); - - } - - @Override - protected void onSelectedRowChanged(int editingRow, HooksComposition bean, boolean create) { - - if (getTableModel().isEditable()) { - if (log.isDebugEnabled()) { - log.debug("Row has changed to " + editingRow); - } - getUi().getHookType().requestFocus(); - } - - } - - @Override protected void initTableUI(DefaultTableCellRenderer renderer) { JTable table = getUi().getTable(); @@ -128,6 +95,42 @@ public class HooksCompositionUIHandler extends ContentTableUIHandler<SetLongline } @Override + protected void onOpenUI(ContentMode mode) { + + String setLonglineId = getDataContext().getSelectedSetId(); + + HooksCompositionService service = getService(HooksCompositionService.class); + + SetLongline loaded = service.loadForEdit(setLonglineId); + + copy(SetLongline.class, BinderService.EDIT_HOOKS_COMPOSITION, loaded, getBean()); + + } + + @Override + protected void onSelectedRowChanged(int editingRow, HooksComposition bean, boolean create) { + + if (log.isDebugEnabled()) { + log.debug("Row has changed to " + editingRow); + } + + if (getTableModel().isEditable()) { + + getUi().getHookType().requestFocus(); + + } + + } + + @Override + protected void doPersist(SetLongline editBean) { + + HooksCompositionService service = getService(HooksCompositionService.class); + service.save(editBean); + + } + + @Override public void afterSave(boolean refresh) { super.afterSave(refresh); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java index dd46581..a074cf4 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java @@ -80,37 +80,6 @@ public class SensorUsedUIHandler extends ContentTableUIHandler<ActivityLongline, } @Override - protected void onOpenUI(ContentMode mode) { - - String activityLonglineId = getDataContext().getSelectedActivityId(); - - SensorUsedService service = getService(SensorUsedService.class); - - ActivityLongline loaded = service.loadForEdit(activityLonglineId); - - copy(ActivityLongline.class, BinderService.EDIT_SENSOR_USED, loaded, getBean()); - - } - - @Override - protected void doPersist(ActivityLongline editBean) { - - SensorUsedService service = getService(SensorUsedService.class); - service.save(editBean); - - } - - @Override - protected void onSelectedRowChanged(int editingRow, SensorUsed bean, boolean create) { - if (getTableModel().isEditable()) { - if (log.isDebugEnabled()) { - log.debug("Row has changed to " + editingRow); - } - getUi().getSensorType().requestFocus(); - } - } - - @Override protected void initTableUI(DefaultTableCellRenderer renderer) { JTable table = getUi().getTable(); @@ -141,6 +110,37 @@ public class SensorUsedUIHandler extends ContentTableUIHandler<ActivityLongline, UIHelper.setTableColumnRenderer(table, 5, UIHelper.newStringTableCellRenderer(renderer, 10, true)); } + @Override + protected void onOpenUI(ContentMode mode) { + + String activityLonglineId = getDataContext().getSelectedActivityId(); + + SensorUsedService service = getService(SensorUsedService.class); + + ActivityLongline loaded = service.loadForEdit(activityLonglineId); + + copy(ActivityLongline.class, BinderService.EDIT_SENSOR_USED, loaded, getBean()); + + } + + @Override + protected void onSelectedRowChanged(int editingRow, SensorUsed bean, boolean create) { + if (getTableModel().isEditable()) { + if (log.isDebugEnabled()) { + log.debug("Row has changed to " + editingRow); + } + getUi().getSensorType().requestFocus(); + } + } + + @Override + protected void doPersist(ActivityLongline editBean) { + + SensorUsedService service = getService(SensorUsedService.class); + service.save(editBean); + + } + public void importData() { File file = UIHelper.chooseFile((Component) ui, diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java index ac05514..016e344 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java @@ -121,80 +121,27 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLongline, Tdr> { } @Override - protected void onOpenUI(ContentMode mode) { - - String setLonglineId = getDataContext().getSelectedSetId(); - - TdrService service = getService(TdrService.class); - - SetLongline loaded = service.loadForEdit(setLonglineId); - - copy(SetLongline.class, BinderService.EDIT_TDR, loaded, getBean()); - - // load sections (and baskets and branchlines) - SetLonglineService setLonglineService = getService(SetLonglineService.class); - List<Section> sections = setLonglineService.getSections(setLonglineId); - - LonglinePositionHelper<Tdr> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); - positionHelper.initSections(sections, getTableModel().getData()); - - } - - @Override - protected void doPersist(SetLongline editBean) { - - TdrService service = getService(TdrService.class); - service.save(editBean); - - } - - @Override - protected void onSelectedRowChanged(int editingRow, Tdr bean, boolean create) { - - ContentTableModel<SetLongline, Tdr> model = getTableModel(); - - TdrUI ui = getUi(); - - boolean withTimestamp = bean.getFishingStart() != null; - ui.getEnableTimestamp().setSelected(withTimestamp); - - if (!model.isEditable()) { - return; - } - - String homeId = bean.getHomeId(); - - if (log.isDebugEnabled()) { - log.debug("selected tdr " + homeId); - } - JComponent requestFocus = ui.getHomeId(); - - if (create) { - - // set date - time - - SetLongline setLongline = getBean(); - - Date settingStartTimeStamp = setLongline.getSettingStartTimeStamp(); - setTimestamp(bean, settingStartTimeStamp); - - // go back to first tab - ui.getEditTabPane().setSelectedIndex(0); - - // enable timestamps - ui.getEnableTimestamp().setSelected(true); + public void initUI() throws Exception { - } else if (!withTimestamp) { + // add a listPredicate to get only species from the correct configured speciesList + ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + String speciesListId = config.getSpeciesListLonglineCatchId(); + prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.longline.catch.notFound")); - // clean timestamps - setTimestamp(bean, null); + super.initUI(); - } + LonglinePositionHelper<Tdr> positionHelper = new LonglinePositionHelper<Tdr>( + getUi().getSection(), + getUi().getBasket(), + getUi().getBranchline(), + getTableEditBean()); - LonglinePositionHelper<Tdr> positionHelper = POSITION_HELPER_ENTRY.getContextValue(ui); - positionHelper.resetPosition(bean); + POSITION_HELPER_ENTRY.setContextValue(getUi(), positionHelper); - requestFocus.requestFocus(); + getUi().getDeployementStart().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener); + getUi().getDeployementEnd().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener); + getUi().getFishingStart().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener); + getUi().getFishingEnd().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener); } @@ -226,31 +173,6 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLongline, Tdr> { } @Override - public void initUI() throws Exception { - - // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); - String speciesListId = config.getSpeciesListLonglineCatchId(); - prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.longline.catch.notFound")); - - super.initUI(); - - LonglinePositionHelper<Tdr> positionHelper = new LonglinePositionHelper<Tdr>( - getUi().getSection(), - getUi().getBasket(), - getUi().getBranchline(), - getTableEditBean()); - - POSITION_HELPER_ENTRY.setContextValue(getUi(), positionHelper); - - getUi().getDeployementStart().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener); - getUi().getDeployementEnd().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener); - getUi().getFishingStart().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener); - getUi().getFishingEnd().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener); - - } - - @Override public void openUI() throws Exception { if (log.isInfoEnabled()) { @@ -272,6 +194,76 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLongline, Tdr> { } @Override + protected void onOpenUI(ContentMode mode) { + + String setLonglineId = getDataContext().getSelectedSetId(); + + TdrService service = getService(TdrService.class); + + SetLongline loaded = service.loadForEdit(setLonglineId); + + copy(SetLongline.class, BinderService.EDIT_TDR, loaded, getBean()); + + // load sections (and baskets and branchlines) + SetLonglineService setLonglineService = getService(SetLonglineService.class); + List<Section> sections = setLonglineService.getSections(setLonglineId); + + LonglinePositionHelper<Tdr> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); + positionHelper.initSections(sections, getTableModel().getData()); + + } + + @Override + protected void onSelectedRowChanged(int editingRow, Tdr bean, boolean create) { + + ContentTableModel<SetLongline, Tdr> model = getTableModel(); + + TdrUI ui = getUi(); + + boolean withTimestamp = bean.getFishingStart() != null; + ui.getEnableTimestamp().setSelected(withTimestamp); + + if (model.isEditable()) { + + String homeId = bean.getHomeId(); + + if (log.isDebugEnabled()) { + log.debug("selected tdr " + homeId); + } + JComponent requestFocus = ui.getHomeId(); + + if (create) { + + // set date - time + + SetLongline setLongline = getBean(); + + Date settingStartTimeStamp = setLongline.getSettingStartTimeStamp(); + setTimestamp(bean, settingStartTimeStamp); + + // go back to first tab + ui.getEditTabPane().setSelectedIndex(0); + + // enable timestamps + ui.getEnableTimestamp().setSelected(true); + + } else if (!withTimestamp) { + + // clean timestamps + setTimestamp(bean, null); + + } + + LonglinePositionHelper<Tdr> positionHelper = POSITION_HELPER_ENTRY.getContextValue(ui); + positionHelper.resetPosition(bean); + + requestFocus.requestFocus(); + + } + + } + + @Override protected void closeSafeUI() { if (log.isInfoEnabled()) { log.info("CloseUI: " + getModel()); @@ -284,6 +276,14 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLongline, Tdr> { } @Override + protected void doPersist(SetLongline editBean) { + + TdrService service = getService(TdrService.class); + service.save(editBean); + + } + + @Override protected void resetEditBean() { super.resetEditBean(); 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 ad6c5b1..1bb029c 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 @@ -114,88 +114,26 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei } @Override - protected void onSelectedRowChanged(int editingRow, GearUseFeaturesSeine bean, boolean create) { - - if (log.isInfoEnabled()) { - log.info("Selected row changed: " + editingRow + ", create? " + create); - } - - GearUseFeaturesSeineUI ui = getUi(); - - UIHelper.stopEditing(ui.getMeasurementsTable()); - - GearUseFeaturesSeineTableModel tableModel = getTableModel(); - GearUseFeaturesSeineUIModel model = getModel(); - - boolean emptySelection = editingRow == -1; - - // load size measures - - GearUseFeaturesMeasurementSeinesTableModel measurementsTableModel = model.getMeasurementsTableModel(); - List<GearUseFeaturesMeasurementSeine> measurements = emptySelection ? Collections.<GearUseFeaturesMeasurementSeine>emptyList() : measurementsTableModel.getCacheForRow(editingRow); - if (measurements == null) { - - if (log.isInfoEnabled()) { - log.info("init measurements for row " + editingRow); - } - - // first time coming on this row - - if (tableModel.isCreate()) { - - // create mode: just init with empty list - measurements = Collections.emptyList(); - - if (log.isInfoEnabled()) { - log.info("create mode, use an empty list"); - } - - } else { - - // updating mode: loading from db - GearUseFeaturesSeineService service = getService(GearUseFeaturesSeineService.class); - measurements = service.loadGearUseFeaturesMeasurementSeineForEdit(bean.getTopiaId()); - if (log.isInfoEnabled()) { - log.info("Loaded measurements (" + bean.getTopiaId() + "): " + measurements.size()); - } - - } + protected GearUseFeaturesSeineTableModel getTableModel() { + return (GearUseFeaturesSeineTableModel) super.getTableModel(); + } - // init measurements - measurementsTableModel.initCacheForRow(editingRow, measurements); + @Override + public void initUI() throws Exception { - } else { + super.initUI(); - if (log.isInfoEnabled()) { - log.info("Using existing measurements for row " + editingRow + " : " + measurements.size()); + getModel().addPropertyChangeListener(GearUseFeaturesSeineUIModel.PROPERTY_EDITABLE, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Boolean newValue = (Boolean) evt.getNewValue(); + setTableModelEditable(newValue); } - } - - measurementsTableModel.setData(measurements); - - measurementsTableModel.setModified(false); - measurementsTableModel.setEditable(tableModel.isEditable()); - - if (!tableModel.isEditable()) { - return; - } - - JComponent requestFocus; - - if (tableModel.isCreate()) { - - // go back to first pane - ui.getGearUseFeaturesTabPane().setSelectedIndex(0); - - requestFocus = ui.getGear(); - - } else { - - requestFocus = ui.getGear(); + }); - } + setTableModelEditable(getModel().isEditable()); - requestFocus.requestFocus(); + getTableModel().setGearUseFeaturesSeineUIHandler(this); } @@ -266,25 +204,6 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei } @Override - public void initUI() throws Exception { - - super.initUI(); - - getModel().addPropertyChangeListener(GearUseFeaturesSeineUIModel.PROPERTY_EDITABLE, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - Boolean newValue = (Boolean) evt.getNewValue(); - setTableModelEditable(newValue); - } - }); - - setTableModelEditable(getModel().isEditable()); - - getTableModel().setGearUseFeaturesSeineUIHandler(this); - - } - - @Override public void openUI() throws Exception { if (log.isInfoEnabled()) { @@ -297,7 +216,7 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei // listen messages to see to compute tab valid states reloadTableModelListener(errorTableModel, computeTabValidStateListener); - + computeTabValidState(errorTableModel); } @@ -317,62 +236,148 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei } @Override - protected void closeSafeUI() { + protected ContentMode getContentMode(DataContext dataContext) { - if (log.isInfoEnabled()) { - log.info("CloseUI: " + getModel()); + // par defaut, on suppose qu'on peut afficher les données + getModel().setShowData(true); + + String selectedTripId = dataContext.getSelectedTripId(); + + if (selectedTripId.equals(dataContext.getOpenTripId())) { + + // mode mise a jour + return ContentMode.UPDATE; } - super.closeSafeUI(); - // remove listener - getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener); + // mode lecture - } + if (dataContext.isSelectedTripLongline()) { - @Override - public void startEditUI(String... binding) { + addInfoMessage(t("observe.tripLongline.message.not.open")); - getModel().getMeasurementsTableModel().setEditable(true); + } else { - super.startEditUI(binding); + addInfoMessage(t("observe.tripSeine.message.not.open")); + + } + return ContentMode.READ; } - public void deleteSelectedMeasurement() { + @Override + protected void onSelectedRowChanged(int editingRow, GearUseFeaturesSeine bean, boolean create) { - GearUseFeaturesMeasurementSeinesTableModel tableModel = getUi().getMeasurementsTableModel(); + if (log.isInfoEnabled()) { + log.info("Selected row changed: " + editingRow + ", create? " + create); + } - boolean selectionEmpty = tableModel.isSelectionEmpty(); + GearUseFeaturesSeineUI ui = getUi(); - if (!selectionEmpty) { + UIHelper.stopEditing(ui.getMeasurementsTable()); - GearUseFeaturesMeasurementSeine data = tableModel.getSelectedRow(); + GearUseFeaturesSeineTableModel tableModel = getTableModel(); + GearUseFeaturesSeineUIModel model = getModel(); + + boolean emptySelection = editingRow == -1; + + // load size measures + + GearUseFeaturesMeasurementSeinesTableModel measurementsTableModel = model.getMeasurementsTableModel(); + List<GearUseFeaturesMeasurementSeine> measurements = emptySelection ? Collections.<GearUseFeaturesMeasurementSeine>emptyList() : measurementsTableModel.getCacheForRow(editingRow); + if (measurements == null) { if (log.isInfoEnabled()) { - log.info("Delete: " + data); + log.info("init measurements for row " + editingRow); } - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); - int response = UIHelper.askUser(mainUI, - t("observe.title.delete"), - t("observe.measurement.delete.message"), - JOptionPane.WARNING_MESSAGE, - new Object[]{t("observe.choice.confirm.delete"), - t("observe.choice.cancel")}, - 1); + // first time coming on this row - if (response != 0) { + if (tableModel.isCreate()) { + + // create mode: just init with empty list + measurements = Collections.emptyList(); + + if (log.isInfoEnabled()) { + log.info("create mode, use an empty list"); + } + + } else { + + // updating mode: loading from db + GearUseFeaturesSeineService service = getService(GearUseFeaturesSeineService.class); + measurements = service.loadGearUseFeaturesMeasurementSeineForEdit(bean.getTopiaId()); + if (log.isInfoEnabled()) { + log.info("Loaded measurements (" + bean.getTopiaId() + "): " + measurements.size()); + } - // user cancel - return; } - tableModel.removeSelectedRow(); + // init measurements + measurementsTableModel.initCacheForRow(editingRow, measurements); + + } else { + + if (log.isInfoEnabled()) { + log.info("Using existing measurements for row " + editingRow + " : " + measurements.size()); + } + } + + measurementsTableModel.setData(measurements); + + measurementsTableModel.setModified(false); + measurementsTableModel.setEditable(tableModel.isEditable()); + + if (!tableModel.isEditable()) { + return; + } + + JComponent requestFocus; + + if (tableModel.isCreate()) { + + // go back to first pane + ui.getGearUseFeaturesTabPane().setSelectedIndex(0); + + requestFocus = ui.getGear(); + + } else { + + requestFocus = ui.getGear(); + + } + + requestFocus.requestFocus(); + } + + @Override + protected void closeSafeUI() { + + if (log.isInfoEnabled()) { + log.info("CloseUI: " + getModel()); } + super.closeSafeUI(); + + // remove listener + getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener); + + } + + @Override + public void startEditUI(String... binding) { + + getModel().getMeasurementsTableModel().setEditable(true); + super.startEditUI(binding); } + @Override + protected void resetEditBean() { + + UIHelper.stopEditing(getUi().getMeasurementsTable()); + super.resetEditBean(); + + } @Override protected void doPersist(TripSeine editBean) { @@ -401,47 +406,39 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei } - @Override - protected void resetEditBean() { - - UIHelper.stopEditing(getUi().getMeasurementsTable()); - - super.resetEditBean(); - - } - - @Override - protected ContentMode getContentMode(DataContext dataContext) { + public void deleteSelectedMeasurement() { - // par defaut, on suppose qu'on peut afficher les données - getModel().setShowData(true); + GearUseFeaturesMeasurementSeinesTableModel tableModel = getUi().getMeasurementsTableModel(); - String selectedTripId = dataContext.getSelectedTripId(); + boolean selectionEmpty = tableModel.isSelectionEmpty(); - if (selectedTripId.equals(dataContext.getOpenTripId())) { + if (!selectionEmpty) { - // mode mise a jour - return ContentMode.UPDATE; - } + GearUseFeaturesMeasurementSeine data = tableModel.getSelectedRow(); - // mode lecture + if (log.isInfoEnabled()) { + log.info("Delete: " + data); + } - if (dataContext.isSelectedTripLongline()) { + ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + int response = UIHelper.askUser(mainUI, + t("observe.title.delete"), + t("observe.measurement.delete.message"), + JOptionPane.WARNING_MESSAGE, + new Object[]{t("observe.choice.confirm.delete"), + t("observe.choice.cancel")}, + 1); - addInfoMessage(t("observe.tripLongline.message.not.open")); + if (response != 0) { - } else { + // user cancel + return; + } - addInfoMessage(t("observe.tripSeine.message.not.open")); + tableModel.removeSelectedRow(); } - return ContentMode.READ; - } - - @Override - protected GearUseFeaturesSeineTableModel getTableModel() { - return (GearUseFeaturesSeineTableModel) super.getTableModel(); } protected void setTableModelEditable(Boolean newValue) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java index 482db1f..9ed6a04 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java @@ -43,6 +43,7 @@ import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; import jaxx.runtime.context.JAXXContextEntryDef; +import jaxx.runtime.swing.editor.bean.BeanComboBox; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; @@ -74,7 +75,7 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Non /** * L'entrée dans le contexte pour récupérer la liste complete des espèces. */ - protected final JAXXContextEntryDef<List<Species>> ALL_ESPECES_ENTRY = + protected final JAXXContextEntryDef<List<Species>> ALL_SPECIES_ENTRY = UIHelper.newListContextEntryDef("NonTargetCatchUI-all-speciess"); /** @@ -219,7 +220,7 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Non speciesList = new ArrayList<Species>(); } - ALL_ESPECES_ENTRY.setContextValue(getUi(), speciesList); + ALL_SPECIES_ENTRY.setContextValue(getUi(), speciesList); if (log.isDebugEnabled()) { log.debug("speciesList = " + speciesList.size()); } @@ -235,40 +236,38 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Non @Override protected void onSelectedRowChanged(int editingRow, NonTargetCatch bean, boolean create) { - NonTargetCatchUI ui = getUi(); - ContentTableModel<SetSeine, NonTargetCatch> model = getTableModel(); if (!model.isEditable()) { - // rien a faire - return; - } + List<Species> availableSpecies; + JComponent requestFocus; - List<Species> availableSpecies; - JComponent requestFocus; + BeanComboBox<Species> speciesComboBox = getUi().getSpecies(); - if (create) { + if (create) { - availableSpecies = new ArrayList<Species>(ALL_ESPECES_ENTRY.getContextValue(ui)); - requestFocus = ui.getSpecies(); + availableSpecies = new ArrayList<Species>(ALL_SPECIES_ENTRY.getContextValue(ui)); + requestFocus = speciesComboBox; - } else { + } else { - Species species = bean.getSpecies(); - availableSpecies = Collections.singletonList(species); - requestFocus = ui.getTable(); + Species species = bean.getSpecies(); + availableSpecies = Collections.singletonList(species); + requestFocus = getUi().getTable(); - } + } + + speciesComboBox.setData(availableSpecies); + requestFocus.requestFocus(); - ui.getSpecies().setData(availableSpecies); - requestFocus.requestFocus(); + NonTargetCatch tableEditBean = getTableEditBean(); + reloadPropertyChangeListener(tableEditBean, NonTargetCatch.PROPERTY_TOTAL_COUNT, totalCountChanged); + reloadPropertyChangeListener(tableEditBean, NonTargetCatch.PROPERTY_CATCH_WEIGHT, catchWeightChanged); + reloadPropertyChangeListener(tableEditBean, NonTargetCatch.PROPERTY_MEAN_WEIGHT, meanWeightChanged); + reloadPropertyChangeListener(tableEditBean, NonTargetCatch.PROPERTY_MEAN_LENGTH, meanLengthChanged); - NonTargetCatch tableEditBean = getTableEditBean(); - reloadPropertyChangeListener(tableEditBean, NonTargetCatch.PROPERTY_TOTAL_COUNT, totalCountChanged); - reloadPropertyChangeListener(tableEditBean, NonTargetCatch.PROPERTY_CATCH_WEIGHT, catchWeightChanged); - reloadPropertyChangeListener(tableEditBean, NonTargetCatch.PROPERTY_MEAN_WEIGHT, meanWeightChanged); - reloadPropertyChangeListener(tableEditBean, NonTargetCatch.PROPERTY_MEAN_LENGTH, meanLengthChanged); + } } @@ -339,12 +338,12 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Non @Override protected void doPersist(SetSeine editBean) { - List<NonTargetLength> tailleToDelete = ALL_NON_TARGET_LENGTH_TO_DELETE_ENTRY.getContextValue(getUi()); + List<NonTargetLength> lengthsToDelete = ALL_NON_TARGET_LENGTH_TO_DELETE_ENTRY.getContextValue(getUi()); try { NonTargetCatchService service = getService(NonTargetCatchService.class); - service.save(editBean, tailleToDelete); + service.save(editBean, lengthsToDelete); } finally { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java index 58f949c..5d15a06 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java @@ -24,19 +24,21 @@ package fr.ird.observe.ui.content.table.impl.seine; import fr.ird.observe.BinderService; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.constants.DataContextType; +import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.referentiel.Sex; import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.seine.NonTargetLength; import fr.ird.observe.entities.seine.NonTargetSample; import fr.ird.observe.entities.seine.SetSeine; -import fr.ird.observe.services.data.seine.NonTargetLengthService; import fr.ird.observe.services.data.seine.NonTargetSampleService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; import jaxx.runtime.context.JAXXContextEntryDef; +import jaxx.runtime.swing.JAXXButtonGroup; import jaxx.runtime.swing.editor.NumberEditor; +import jaxx.runtime.swing.editor.bean.BeanComboBox; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.validator.NuitonValidatorScope; @@ -141,58 +143,43 @@ public class NonTargetSampleUIHandler extends ContentTableUIHandler<NonTargetSam String setId = getDataContext().getSelectedSetId(); - NonTargetSample nonTargetSample = getService(NonTargetLengthService.class).loadForEdit(setId); + NonTargetSampleService service = getService(NonTargetSampleService.class); + NonTargetSample nonTargetSample = service.loadForEdit(setId); copy(NonTargetSample.class, BinderService.EDIT_NON_TARGET_LENGTH, nonTargetSample, getBean()); - List<Species> speciesList; - if (ContentMode.UPDATE == mode) { - NonTargetSampleService service = getService(NonTargetSampleService.class); - speciesList = service.getAvailableSpeciesForNonTargetSample(setId); - + List<Species> speciesList = service.getAvailableSpeciesForNonTargetSample(setId); ALL_SPECIES_ENTRY.setContextValue(getUi(), speciesList); + } } @Override - protected void doPersist(NonTargetSample editBean) { + protected ContentMode getContentMode(DataContext dataContext) { - String setId = getDataContext().getSelectedSetId(); + ContentMode mode = super.getContentMode(dataContext); + String setId = getDataContext().getSelectedSetId(); NonTargetSampleService service = getService(NonTargetSampleService.class); + boolean showData = service.canUseNonTargetSample(setId); - if (editBean.getTopiaId() != null && editBean.isNonTargetLengthEmpty()) { - - // remove orphan target sample - if (log.isInfoEnabled()) { - log.info("Remove obsolete nonTargetSample " + editBean.getTopiaId() + " from Set: " + setId); - } - - //FIXME Non, la sauvegarde doit être faite par un seul appel au service (sinon fait dans 2 transactions) - service.delete(setId, editBean); + getUi().getModel().setShowData(showData); - } else { + if (ContentMode.UPDATE == mode && !showData) { - //FIXME Non, la sauvegarde doit être faite par un seul appel au service (sinon fait dans 2 transactions) - String savedId = service.save(setId, editBean); - editBean.setTopiaId(savedId); + // on repasse en mode resteint car on ne peut pas éditer l'écran + mode = ContentMode.READ; - getService(NonTargetLengthService.class).save(editBean); + addMessage(getUi(), + NuitonValidatorScope.INFO, + getEntityLabel(SetSeine.class), + t("observe.setSeine.message.no.nonTargetDiscarded")); } - } - - public void resetWeightSource() { - getTableEditBean().setWeightSource(false); - getUi().getWeight().grabFocus(); - } - - public void resetLengthSource() { - getTableEditBean().setLengthSource(false); - getUi().getLength().grabFocus(); + return mode; } @Override @@ -200,78 +187,90 @@ public class NonTargetSampleUIHandler extends ContentTableUIHandler<NonTargetSam ContentTableModel<NonTargetSample, NonTargetLength> model = getTableModel(); - if (!model.isEditable()) { - return; - } + if (model.isEditable()) { - Species species = bean.getSpecies(); - NonTargetSampleUI ui = getUi(); - if (log.isDebugEnabled()) { - log.debug("selected species " + species); - } - List<Species> availableEspeces; - JComponent requestFocus; + Species species = bean.getSpecies(); + if (log.isDebugEnabled()) { + log.debug("selected species " + species); + } - if (create) { + NonTargetSampleUI ui = getUi(); - if (model.isCreate()) { + JAXXButtonGroup acquisitionModeGroup = ui.getAcquisitionModeGroup(); + BeanComboBox<Species> speciesComboBox = ui.getSpecies(); - // on passe le mode de saisie en count - ui.getAcquisitionModeGroup().setSelectedValue(null); - ui.getAcquisitionModeGroup().setSelectedValue(ModeSaisieEchantillonEnum.byEffectif); - } + List<Species> availableSpecies; + JComponent requestFocus; - availableEspeces = new ArrayList<Species>(ALL_SPECIES_ENTRY.getContextValue(ui)); - requestFocus = ui.getSpecies(); + if (create) { - } else { + if (model.isCreate()) { - // on passe le mode de saisie - int acquisitionMode = bean.getAcquisitionMode(); - ModeSaisieEchantillonEnum enumValue = - ModeSaisieEchantillonEnum.valueOf(acquisitionMode); - ui.getAcquisitionModeGroup().setSelectedValue(null); - ui.getAcquisitionModeGroup().setSelectedValue(enumValue); + // on passe le mode de saisie en count + acquisitionModeGroup.setSelectedValue(null); + acquisitionModeGroup.setSelectedValue(ModeSaisieEchantillonEnum.byEffectif); + } - availableEspeces = Collections.singletonList(species); - requestFocus = ui.getCount(); + availableSpecies = new ArrayList<Species>(ALL_SPECIES_ENTRY.getContextValue(ui)); + requestFocus = speciesComboBox; - } + } else { + + // on passe le mode de saisie + int acquisitionMode = bean.getAcquisitionMode(); + ModeSaisieEchantillonEnum enumValue = ModeSaisieEchantillonEnum.valueOf(acquisitionMode); - ui.getSpecies().setData(availableEspeces); - requestFocus.requestFocus(); + acquisitionModeGroup.setSelectedValue(null); + acquisitionModeGroup.setSelectedValue(enumValue); + + availableSpecies = Collections.singletonList(species); + requestFocus = ui.getCount(); + + } - NonTargetLength tableEditBean = getTableEditBean(); - tableEditBean.removePropertyChangeListener(NonTargetLength.PROPERTY_WEIGHT, weightChanged); - tableEditBean.addPropertyChangeListener(NonTargetLength.PROPERTY_WEIGHT, weightChanged); + speciesComboBox.setData(availableSpecies); + requestFocus.requestFocus(); - tableEditBean.removePropertyChangeListener(NonTargetLength.PROPERTY_LENGTH, lengthChanged); - tableEditBean.addPropertyChangeListener(NonTargetLength.PROPERTY_LENGTH, lengthChanged); + NonTargetLength tableEditBean = getTableEditBean(); + reloadPropertyChangeListener(tableEditBean, NonTargetLength.PROPERTY_WEIGHT, weightChanged); + reloadPropertyChangeListener(tableEditBean, NonTargetLength.PROPERTY_LENGTH, lengthChanged); + + } } @Override - protected ContentMode getContentMode(DataContext dataContext) { - - ContentMode mode = super.getContentMode(dataContext); + protected void doPersist(NonTargetSample editBean) { String setId = getDataContext().getSelectedSetId(); + NonTargetSampleService service = getService(NonTargetSampleService.class); - boolean showData = service.canUseNonTargetSample(setId); - getUi().getModel().setShowData(showData); + if (!Entities.isNew(editBean) && editBean.isNonTargetLengthEmpty()) { - if (mode == ContentMode.UPDATE && !showData) { + // remove orphan target sample + if (log.isInfoEnabled()) { + log.info("Remove obsolete nonTargetSample " + editBean.getTopiaId() + " from Set: " + setId); + } - // on repasse en mode resteint car on ne peut pas éditer l'écran - mode = ContentMode.READ; + service.delete(setId, editBean); + + } else { + + String savedId = service.save(setId, editBean); + editBean.setTopiaId(savedId); - addMessage(getUi(), - NuitonValidatorScope.INFO, - getEntityLabel(SetSeine.class), - t("observe.setSeine.message.no.nonTargetDiscarded")); } - return mode; + } + + public void resetWeightSource() { + getTableEditBean().setWeightSource(false); + getUi().getWeight().grabFocus(); + } + + public void resetLengthSource() { + getTableEditBean().setLengthSource(false); + getUi().getLength().grabFocus(); } /** @@ -313,6 +312,7 @@ public class NonTargetSampleUIHandler extends ContentTableUIHandler<NonTargetSam editBean.setWeight(null); // on supprime aussi l'count (pour forcer la saisie) editBean.setCount(null); + } break; @@ -328,6 +328,7 @@ public class NonTargetSampleUIHandler extends ContentTableUIHandler<NonTargetSam // on positionne l'count à 1 (seule valeur possible) editBean.setCount(1); + } break; } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java index b1369e3..cf5fe8f 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java @@ -59,30 +59,20 @@ public class ObjectObservedSpeciesUIHandler extends ContentTableUIHandler<Floati } @Override - protected void onOpenUI(ContentMode mode) { - - String floatingObjectId = getDataContext().getSelectedFloatingObjectId(); - - ObjectObservedSpeciesService service = getService(ObjectObservedSpeciesService.class); - - FloatingObject loaded = service.loadForEdit(floatingObjectId); + public void initUI() throws Exception { - copy(FloatingObject.class, BinderService.EDIT_OBJECT_OBSERVED_SPECIES, loaded, getBean()); + // add a listPredicate to get only species from the correct configured speciesList + ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + String speciesListId = config.getSpeciesListSeineObjectObservedSpeciesId(); + prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.seine.objectObservedSpecies.notFound")); - } + super.initUI(); - @Override - protected void onSelectedRowChanged(int editingRow, ObjectObservedSpecies bean, boolean create) { - if (log.isDebugEnabled()) { - log.debug("Row has changed to " + editingRow); - } - if (getTableModel().isEditable()) { - getUi().getSpecies().requestFocus(); - } } @Override protected void initTableUI(DefaultTableCellRenderer renderer) { + JTable table = getUi().getTable(); UIHelper.setI18nTableHeaderRenderer(table, @@ -96,17 +86,31 @@ public class ObjectObservedSpeciesUIHandler extends ContentTableUIHandler<Floati UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, Species.class)); UIHelper.setTableColumnRenderer(table, 1, UIHelper.newDecorateTableCellRenderer(renderer, SpeciesStatus.class)); UIHelper.setTableColumnRenderer(table, 2, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + } @Override - public void initUI() throws Exception { + protected void onOpenUI(ContentMode mode) { - // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); - String speciesListId = config.getSpeciesListSeineObjectObservedSpeciesId(); - prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.seine.objectObservedSpecies.notFound")); + String floatingObjectId = getDataContext().getSelectedFloatingObjectId(); - super.initUI(); + ObjectObservedSpeciesService service = getService(ObjectObservedSpeciesService.class); + + FloatingObject loaded = service.loadForEdit(floatingObjectId); + + copy(FloatingObject.class, BinderService.EDIT_OBJECT_OBSERVED_SPECIES, loaded, getBean()); + + } + + @Override + protected void onSelectedRowChanged(int editingRow, ObjectObservedSpecies bean, boolean create) { + + if (log.isDebugEnabled()) { + log.debug("Row has changed to " + editingRow); + } + if (getTableModel().isEditable()) { + getUi().getSpecies().requestFocus(); + } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java index 8c6b3b8..63d2f59 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java @@ -57,32 +57,21 @@ public class ObjectSchoolEstimateUIHandler extends ContentTableUIHandler<Floatin return (ObjectSchoolEstimateUI) super.getUi(); } - @Override - protected void onOpenUI(ContentMode mode) { - - String floatingObjectId = getDataContext().getSelectedFloatingObjectId(); - - ObjectSchoolEstimateService service = getService(ObjectSchoolEstimateService.class); - - FloatingObject loaded = service.loadForEdit(floatingObjectId); + public void initUI() throws Exception { - copy(FloatingObject.class, BinderService.EDIT_OBJECT_SCHOOL_ESTIMATE, loaded, getBean()); + // add a listPredicate to get only species from the correct configured speciesList + ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + String speciesListId = config.getSpeciesListSeineObjectSchoolEstimateId(); + prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.seine.objectSchoolEstimate.notFound")); - } + super.initUI(); - @Override - protected void onSelectedRowChanged(int editingRow, ObjectSchoolEstimate bean, boolean create) { - if (getTableModel().isEditable()) { - if (log.isDebugEnabled()) { - log.debug("Row has changed to " + editingRow); - } - getUi().getSpecies().requestFocus(); - } } @Override protected void initTableUI(DefaultTableCellRenderer renderer) { + JTable table = getUi().getTable(); UIHelper.setI18nTableHeaderRenderer(table, @@ -93,17 +82,31 @@ public class ObjectSchoolEstimateUIHandler extends ContentTableUIHandler<Floatin UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, Species.class)); UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + } @Override - public void initUI() throws Exception { + protected void onOpenUI(ContentMode mode) { - // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); - String speciesListId = config.getSpeciesListSeineObjectSchoolEstimateId(); - prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.seine.objectSchoolEstimate.notFound")); + String floatingObjectId = getDataContext().getSelectedFloatingObjectId(); - super.initUI(); + ObjectSchoolEstimateService service = getService(ObjectSchoolEstimateService.class); + + FloatingObject loaded = service.loadForEdit(floatingObjectId); + + copy(FloatingObject.class, BinderService.EDIT_OBJECT_SCHOOL_ESTIMATE, loaded, getBean()); + + } + + @Override + protected void onSelectedRowChanged(int editingRow, ObjectSchoolEstimate bean, boolean create) { + + if (log.isDebugEnabled()) { + log.debug("Row has changed to " + editingRow); + } + if (getTableModel().isEditable()) { + getUi().getSpecies().requestFocus(); + } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java index 663544d..ec76626 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java @@ -38,6 +38,7 @@ import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; import jaxx.runtime.context.JAXXContextEntryDef; +import jaxx.runtime.swing.editor.bean.BeanComboBox; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -45,7 +46,7 @@ import javax.swing.JComponent; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.util.ArrayList; -import java.util.Arrays; +import java.util.Collections; import java.util.List; import static org.nuiton.i18n.I18n.n; @@ -72,6 +73,26 @@ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeine, Sch } @Override + protected void initTableUI(DefaultTableCellRenderer renderer) { + + JTable table = getUi().getTable(); + + UIHelper.setI18nTableHeaderRenderer( + table, + n("observe.schoolEstimate.table.speciesThon"), + n("observe.schoolEstimate.table.speciesThon.tip"), + n("observe.schoolEstimate.table.weight"), + n("observe.schoolEstimate.table.weight.tip"), + n("observe.schoolEstimate.table.meanWeight"), + n("observe.schoolEstimate.table.meanWeight.tip")); + + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, Species.class)); + UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 2, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + + } + + @Override protected void onOpenUI(ContentMode mode) { String setSeineId = getDataContext().getSelectedSetId(); @@ -118,55 +139,43 @@ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeine, Sch ContentTableModel<SetSeine, SchoolEstimate> model = getTableModel(); - if (!model.isEditable()) { + if (model.isEditable()) { - // rien a faire - return; - } + BeanComboBox<Species> speciesComboBox = getUi().getSpecies(); - SchoolEstimateUI ui = getUi(); - List<Species> availableEspeces; - JComponent requestFocus; + List<Species> availableSpecies; + JComponent requestFocus; - if (create) { - availableEspeces = new ArrayList<Species>( - ALL_SPECIES_ENTRY.getContextValue(ui)); + if (create) { - List<Species> list = model.getColumnValues(0); - availableEspeces.removeAll(list); - list.clear(); + availableSpecies = new ArrayList<Species>(ALL_SPECIES_ENTRY.getContextValue(ui)); - requestFocus = ui.getSpecies(); - } else { - Species species = bean.getSpecies(); - availableEspeces = Arrays.asList(species); - requestFocus = ui.getTotalWeight(); - } - ui.getSpecies().setData(availableEspeces); - requestFocus.requestFocus(); - } + List<Species> list = model.getColumnValues(0); + availableSpecies.removeAll(list); + list.clear(); + requestFocus = speciesComboBox; - @Override - protected void initTableUI(DefaultTableCellRenderer renderer) { - JTable table = getUi().getTable(); + } else { - UIHelper.setI18nTableHeaderRenderer( - table, - n("observe.schoolEstimate.table.speciesThon"), - n("observe.schoolEstimate.table.speciesThon.tip"), - n("observe.schoolEstimate.table.weight"), - n("observe.schoolEstimate.table.weight.tip"), - n("observe.schoolEstimate.table.meanWeight"), - n("observe.schoolEstimate.table.meanWeight.tip")); + Species species = bean.getSpecies(); + availableSpecies= Collections.singletonList(species); + requestFocus = getUi().getTotalWeight(); + + } + + speciesComboBox.setData(availableSpecies); + requestFocus.requestFocus(); + + } - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, Species.class)); - UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 2, UIHelper.newEmptyNumberTableCellRenderer(renderer)); } @Override protected void doPersist(SetSeine editBean) { - getService(SchoolEstimateService.class).save(editBean); + + SchoolEstimateService service = getService(SchoolEstimateService.class); + service.save(editBean); + } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java index 39a8e98..9e89625 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java @@ -211,6 +211,54 @@ public class TargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Target } @Override + protected void onSelectedRowChanged(int editingRow, TargetCatch bean, boolean create) { + + TargetCatchUI ui = getUi(); + + WeightCategory weightCategory = bean.getWeightCategory(); + Species species = weightCategory == null ? null : weightCategory.getSpecies(); + + BeanComboBox<Species> speciesComboBox = ui.getSpecies(); + BeanComboBox<WeightCategory> weightCategoryComboBox = ui.getWeightCategory(); + + JComponent requestFocus; + if (create) { + + // on reinitilise toujours l'espèce (pour reinitialiser la liste des categories) + speciesComboBox.setSelectedItem(null); + + if (!getTableModel().isCreate()) { + // on repositionne l'espèce (cela reconstruira la liste des categories) + speciesComboBox.setSelectedItem(species); + // on repositionne la categorie + weightCategoryComboBox.setSelectedItem(weightCategory); + } + + requestFocus = speciesComboBox; + + } else { + + // en mode mise a jour, on restreint la liste des categories + // au singleton de sa valeur correspondante dans le bean + // puisque dans ce mode, pas possibilite de modifier de cette + // valeur (clef metier) + speciesComboBox.setSelectedItem(species); + weightCategoryComboBox.setData(Collections.singletonList(weightCategory)); + weightCategoryComboBox.setSelectedItem(weightCategory); + + requestFocus = ui.getCatchWeight(); + + } + + if (log.isDebugEnabled()) { + log.debug("selected categoriePoid " + weightCategory); + log.debug("selected species " + species); + } + requestFocus.requestFocus(); + + } + + @Override protected boolean prepareSave(SetSeine bean, List<TargetCatch> objets) { // on recupere les espèces acceptables pour des echantillonnages @@ -289,12 +337,12 @@ public class TargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Target @Override protected void doPersist(SetSeine editBean) { - List<TargetLength> tailleToDelete = ALL_TARGET_LENGTH_TO_DELETE_ENTRY.getContextValue(getUi()); + List<TargetLength> targetLengthsToDelete = ALL_TARGET_LENGTH_TO_DELETE_ENTRY.getContextValue(getUi()); try { TargetCatchService service = getService(TargetCatchService.class); - service.save(editBean, tailleToDelete); + service.save(editBean, targetLengthsToDelete); } finally { @@ -305,54 +353,6 @@ public class TargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Target } - @Override - protected void onSelectedRowChanged(int editingRow, TargetCatch bean, boolean create) { - - TargetCatchUI ui = getUi(); - - WeightCategory weightCategory = bean.getWeightCategory(); - Species species = weightCategory == null ? null : weightCategory.getSpecies(); - - BeanComboBox<Species> speciesComboBox = ui.getSpecies(); - BeanComboBox<WeightCategory> weightCategoryComboBox = ui.getWeightCategory(); - - JComponent requestFocus; - if (create) { - - // on reinitilise toujours l'espèce (pour reinitialiser la liste des categories) - speciesComboBox.setSelectedItem(null); - - if (!getTableModel().isCreate()) { - // on repositionne l'espèce (cela reconstruira la liste des categories) - speciesComboBox.setSelectedItem(species); - // on repositionne la categorie - weightCategoryComboBox.setSelectedItem(weightCategory); - } - - requestFocus = speciesComboBox; - - } else { - - // en mode mise a jour, on restreint la liste des categories - // au singleton de sa valeur correspondante dans le bean - // puisque dans ce mode, pas possibilite de modifier de cette - // valeur (clef metier) - speciesComboBox.setSelectedItem(species); - weightCategoryComboBox.setData(Collections.singletonList(weightCategory)); - weightCategoryComboBox.setSelectedItem(weightCategory); - - requestFocus = ui.getCatchWeight(); - - } - - if (log.isDebugEnabled()) { - log.debug("selected categoriePoid " + weightCategory); - log.debug("selected species " + species); - } - requestFocus.requestFocus(); - - } - @SuppressWarnings("unchecked") protected void onSpeciesChanged(Species species) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java index 739fcc5..22333ea 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java @@ -247,6 +247,73 @@ public class TargetDiscardCatchUIHandler extends ContentTableUIHandler<SetSeine, } @Override + protected void onSelectedRowChanged(int editingRow, TargetCatch bean, boolean create) { + + WeightCategory beanWeightCategory = bean.getWeightCategory(); + Species beanEspece = beanWeightCategory == null ? null : beanWeightCategory.getSpecies(); + ReasonForDiscard beanReasonForDiscard = bean.getReasonForDiscard(); + + if (log.isDebugEnabled()) { + log.debug("selected categoriePoid " + beanWeightCategory); + log.debug("selected species " + beanEspece); + log.debug("selected reasonForDiscard " + beanReasonForDiscard); + } + + TargetDiscardCatchUI ui = getUi(); + + BeanComboBox<Species> speciesComboBox = ui.getSpecies(); + BeanComboBox<WeightCategory> weightCategoryComboBox = ui.getWeightCategory(); + BeanComboBox<ReasonForDiscard> reasonForDiscardComboBox = ui.getReasonForDiscard(); + + JComponent requestFocus; + if (create) { + + ContentTableModel<SetSeine, TargetCatch> model = getTableModel(); + if (model.isCreate()) { + // par défaut, on considère que l'espèce a été monté sur le pont + // c'est le cas le plus fréquent. + bean.setBroughtOnDeck(true); + } + + // on recalcule la liste des speciess disponibles + List<Species> availableEspeces = buildSpeciesList(beanEspece, beanWeightCategory); + speciesComboBox.setData(availableEspeces); + + // on reinitilise toujours la liste des espèces (pour reinitialiser la liste des categories) + speciesComboBox.setSelectedItem(null); + + if (!model.isCreate()) { + // on repositionne l'species (cela reconstruira la liste + // des categories) + speciesComboBox.setSelectedItem(beanEspece); + // on repositionne la categorie + weightCategoryComboBox.setSelectedItem(beanWeightCategory); + reasonForDiscardComboBox.setSelectedItem(beanReasonForDiscard); + } + + requestFocus = speciesComboBox; + + } else { + + // en mode mise a jour, on restreint la liste des categories + // au singleton de sa valeur correspondante dans le bean + // puisque dans ce mode, pas possibilite de modifier de cette + // valeur (clef metier) + speciesComboBox.setSelectedItem(beanEspece); + weightCategoryComboBox.setData(Collections.singletonList(beanWeightCategory)); + weightCategoryComboBox.setSelectedItem(beanWeightCategory); + reasonForDiscardComboBox.setData(Collections.singletonList(beanReasonForDiscard)); + reasonForDiscardComboBox.setSelectedItem(beanReasonForDiscard); + + requestFocus = ui.getCatchWeight(); + + } + + requestFocus.requestFocus(); + + } + + @Override protected boolean prepareSave(SetSeine editBean, List<TargetCatch> objets) { // on recupere les espèces acceptables pour des echantillonnages @@ -346,69 +413,6 @@ public class TargetDiscardCatchUIHandler extends ContentTableUIHandler<SetSeine, } - @Override - protected void onSelectedRowChanged(int editingRow, TargetCatch bean, boolean create) { - - TargetDiscardCatchUI ui = getUi(); - - WeightCategory beanWeightCategory = bean.getWeightCategory(); - Species beanEspece = beanWeightCategory == null ? null : beanWeightCategory.getSpecies(); - ReasonForDiscard beanReasonForDiscard = bean.getReasonForDiscard(); - if (log.isDebugEnabled()) { - log.debug("selected categoriePoid " + beanWeightCategory); - log.debug("selected species " + beanEspece); - log.debug("selected reasonForDiscard " + beanReasonForDiscard); - } - - BeanComboBox<Species> speciesComboBox = ui.getSpecies(); - - JComponent requestFocus; - if (create) { - - ContentTableModel<SetSeine, TargetCatch> model = getTableModel(); - if (model.isCreate()) { - // par défaut, on considère que l'espèce a été monté sur le pont - // c'est le cas le plus fréquent. - bean.setBroughtOnDeck(true); - } - - // on recalcule la liste des speciess disponibles - List<Species> availableEspeces = buildSpeciesList(beanEspece, beanWeightCategory); - speciesComboBox.setData(availableEspeces); - - // on reinitilise toujours la liste des espèces (pour reinitialiser la liste des categories) - speciesComboBox.setSelectedItem(null); - - if (!model.isCreate()) { - // on repositionne l'species (cela reconstruira la liste - // des categories) - speciesComboBox.setSelectedItem(beanEspece); - // on repositionne la categorie - ui.getWeightCategory().setSelectedItem(beanWeightCategory); - ui.getReasonForDiscard().setSelectedItem(beanReasonForDiscard); - } - - requestFocus = speciesComboBox; - - } else { - - // en mode mise a jour, on restreint la liste des categories - // au singleton de sa valeur correspondante dans le bean - // puisque dans ce mode, pas possibilite de modifier de cette - // valeur (clef metier) - speciesComboBox.setSelectedItem(beanEspece); - ui.getWeightCategory().setData(Collections.singletonList(beanWeightCategory)); - ui.getWeightCategory().setSelectedItem(beanWeightCategory); - ui.getReasonForDiscard().setData(Collections.singletonList(beanReasonForDiscard)); - ui.getReasonForDiscard().setSelectedItem(beanReasonForDiscard); - - requestFocus = ui.getCatchWeight(); - - } - - requestFocus.requestFocus(); - } - protected void onSpeciesChanged(TargetCatch bean, Species species) { WeightCategory weightCategory = null; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java index 0cfa053..adae963 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java @@ -29,13 +29,15 @@ import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.entities.seine.TargetLength; import fr.ird.observe.entities.seine.TargetSample; -import fr.ird.observe.services.data.seine.TargetLengthService; import fr.ird.observe.services.data.seine.TargetSampleService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUI; import fr.ird.observe.ui.content.table.ContentTableUIHandler; +import jaxx.runtime.swing.JAXXButtonGroup; +import jaxx.runtime.swing.editor.EnumEditor; +import jaxx.runtime.swing.editor.bean.BeanComboBox; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.validator.NuitonValidatorScope; @@ -60,8 +62,7 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSample, T static private Log log = LogFactory.getLog(TargetSampleUIHandler.class); /** - * Pour différencier positionner l'invariant de l'écran - * {@link TargetSample#getDiscarded()}. + * Pour différencier positionner l'invariant de l'écran {@link TargetSample#getDiscarded()}. * * @since 1.5 */ @@ -69,8 +70,7 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSample, T /** * Ecoute les modifications de la propriété {@link TargetLength#getWeight()}, - * et repasser alors le flag {@link TargetLength#isWeightSource()} à - * {@code false}. + * et repasser alors le flag {@link TargetLength#isWeightSource()} à {@code false}. * * @since 3.0 */ @@ -84,8 +84,7 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSample, T /** * Ecoute les modifications de la propriété {@link TargetLength#getLength()}, - * et repasser alors le flag {@link TargetLength#isLengthSource()} à - * {@code false}. + * et repasser alors le flag {@link TargetLength#isLengthSource()} à {@code false}. * * @since 3.0 */ @@ -97,8 +96,7 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSample, T } }; - public TargetSampleUIHandler(ContentTableUI<TargetSample, TargetLength> ui, - boolean discarded) { + public TargetSampleUIHandler(ContentTableUI<TargetSample, TargetLength> ui, boolean discarded) { super(ui, DataContextType.SetSeine); this.discarded = discarded; } @@ -108,14 +106,33 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSample, T return (TargetSampleUI) super.getUi(); } - public void resetWeightSource() { - getTableEditBean().setWeightSource(false); - getUi().getWeight().grabFocus(); - } + @Override + protected void initTableUI(DefaultTableCellRenderer renderer) { + + JTable table = getUi().getTable(); + + UIHelper.setI18nTableHeaderRenderer( + table, + n("observe.targetSample.table.speciesThon"), + n("observe.targetSample.table.speciesThon.tip"), + n("observe.targetSample.table.measureType"), + n("observe.targetSample.table.measureType.tip"), + n("observe.targetSample.table.length"), + n("observe.targetSample.table.length.tip"), + n("observe.targetSample.table.meanWeight"), + n("observe.targetSample.table.meanWeight.tip"), + n("observe.targetSample.table.count"), + n("observe.targetSample.table.count.tip"), + n("observe.targetSample.table.totalWeight"), + n("observe.targetSample.table.totalWeight.tip")); + + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, Species.class)); + UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEnumTableCellRenderer(renderer, CodeMesureEnum.class)); + UIHelper.setTableColumnRenderer(table, 2, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 3, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 4, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 5, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - public void resetLengthSource() { - getTableEditBean().setLengthSource(false); - getUi().getLength().grabFocus(); } @Override @@ -123,170 +140,157 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSample, T String setId = getDataContext().getSelectedSetId(); - TargetSample targetSample = getService(TargetLengthService.class).loadForEdit(setId, discarded); + TargetSampleService service = getService(TargetSampleService.class); + + TargetSample targetSample = service.loadForEdit(setId, discarded); copy(TargetSample.class, BinderService.EDIT_TARGET_LENGTH, targetSample, getBean()); if (ContentMode.UPDATE == mode) { - // on ne charge les speciess uniquement si on est en mode édition - List<Species> speciesList = getService(TargetSampleService.class).getAvailableSpeciesForTargetSample(setId, discarded); - + // on charge les espèces uniquement si on est en mode édition + List<Species> speciesList = service.getAvailableSpeciesForTargetSample(setId, discarded); getUi().getSpecies().setData(speciesList); } - getModel().setMode(mode); - - - // initialisation du modèle du tableau - getUi().getTableModel().attachModel(); - } @Override - protected void doPersist(TargetSample editBean) { + protected ContentMode getContentMode(DataContext dataContext) { - String setId = getDataContext().getSelectedSetId(); + ContentMode mode = super.getContentMode(dataContext); + String setId = getDataContext().getSelectedSetId(); TargetSampleService service = getService(TargetSampleService.class); + boolean showData = service.canUseTargetSample(setId, discarded); - if (!Entities.isNew(editBean) && editBean.isTargetLengthEmpty()) { - - // remove orphan target sample - if (log.isInfoEnabled()) { - log.info("Remove obsolete targetSample " + editBean.getTopiaId() + " from Set: " + setId); - } + getModel().setShowData(showData); - //FIXME Non, la sauvegarde doit être faite par un seul appel au service (sinon fait dans 2 transactions) - service.delete(setId, editBean); + if (mode == ContentMode.UPDATE && !showData) { - } else { + mode = ContentMode.READ; - String savedId = service.save(setId, editBean); - editBean.setTopiaId(savedId); - //FIXME Non, la sauvegarde doit être faite par un seul appel au service (sinon fait dans 2 transactions) - getService(TargetLengthService.class).save(editBean); + addMessage(getUi(), + NuitonValidatorScope.INFO, + getEntityLabel(SetSeine.class), + discarded ? + t("observe.setSeine.message.no.targetCatch") : + t("observe.setSeine.message.no.targetDiscarded")); } + + return mode; + } @Override protected void onSelectedRowChanged(int editingRow, TargetLength bean, boolean create) { ContentTableModel<TargetSample, TargetLength> model = getTableModel(); - TargetSampleUI ui = getUi(); - if (!model.isEditable()) { - return; - } - Species species = bean.getSpecies(); - JComponent requestFocus; + if (model.isEditable()) { - if (create) { + Species species = bean.getSpecies(); -// if (model.isCreate() && editingRow > 0) { - if (model.isCreate()) { + TargetSampleUI ui = getUi(); + JAXXButtonGroup acquisitionModeGroup = ui.getAcquisitionModeGroup(); + BeanComboBox<Species> speciesComboBox = ui.getSpecies(); - if (editingRow > 0) { - // on recupere l'species de la ligne precedente - TargetLength editBean = model.getValueAt(editingRow - 1); - species = editBean.getSpecies(); - } + JComponent requestFocus; - // on passe le mode de saisie en count - ui.getAcquisitionModeGroup().setSelectedValue(null); - ui.getAcquisitionModeGroup().setSelectedValue(ModeSaisieEchantillonEnum.byEffectif); + if (create) { - // on utilise par défaut le code mesure lf - ui.getMeasureType().setSelectedItem(null); - ui.getMeasureType().setSelectedItem(CodeMesureEnum.lf); - } + if (model.isCreate()) { - requestFocus = ui.getSpecies(); + if (editingRow > 0) { - } else { + // on recupere l'espèce de la ligne precedente + TargetLength editBean = model.getValueAt(editingRow - 1); + species = editBean.getSpecies(); - requestFocus = ui.getCount(); + } - // on passe le mode de saisie - int acquisitionMode = bean.getAcquisitionMode(); - ModeSaisieEchantillonEnum enumValue = - ModeSaisieEchantillonEnum.valueOf(acquisitionMode); - ui.getAcquisitionModeGroup().setSelectedValue(null); - ui.getAcquisitionModeGroup().setSelectedValue(enumValue); - } + // on passe le mode de saisie en count + acquisitionModeGroup.setSelectedValue(null); + acquisitionModeGroup.setSelectedValue(ModeSaisieEchantillonEnum.byEffectif); - // on met a jour l'espce - ui.getSpecies().setSelectedItem(null); + // on utilise par défaut le code mesure lf + EnumEditor measureType = ui.getMeasureType(); + measureType.setSelectedItem(null); + measureType.setSelectedItem(CodeMesureEnum.lf); + + } + + requestFocus = speciesComboBox; + + } else { + + requestFocus = ui.getCount(); + + // on passe le mode de saisie + int acquisitionMode = bean.getAcquisitionMode(); + ModeSaisieEchantillonEnum enumValue = ModeSaisieEchantillonEnum.valueOf(acquisitionMode); + acquisitionModeGroup.setSelectedValue(null); + acquisitionModeGroup.setSelectedValue(enumValue); - if (species != null) { - if (log.isDebugEnabled()) { - log.debug("species to use " + species); } - ui.getSpecies().setSelectedItem(species); - } - requestFocus.requestFocus(); - TargetLength tableEditBean = getTableEditBean(); - reloadPropertyChangeListener(tableEditBean, TargetLength.PROPERTY_WEIGHT, weightChanged); - reloadPropertyChangeListener(tableEditBean, TargetLength.PROPERTY_LENGTH, lengthChanged); + // on met a jour l'espèce + speciesComboBox.setSelectedItem(null); - } + if (species != null) { - @Override - protected void initTableUI(DefaultTableCellRenderer renderer) { + if (log.isDebugEnabled()) { + log.debug("species to use " + species); + } + speciesComboBox.setSelectedItem(species); - JTable table = getUi().getTable(); + } - UIHelper.setI18nTableHeaderRenderer( - table, - n("observe.targetSample.table.speciesThon"), - n("observe.targetSample.table.speciesThon.tip"), - n("observe.targetSample.table.measureType"), - n("observe.targetSample.table.measureType.tip"), - n("observe.targetSample.table.length"), - n("observe.targetSample.table.length.tip"), - n("observe.targetSample.table.meanWeight"), - n("observe.targetSample.table.meanWeight.tip"), - n("observe.targetSample.table.count"), - n("observe.targetSample.table.count.tip"), - n("observe.targetSample.table.totalWeight"), - n("observe.targetSample.table.totalWeight.tip")); + requestFocus.requestFocus(); + + TargetLength tableEditBean = getTableEditBean(); + reloadPropertyChangeListener(tableEditBean, TargetLength.PROPERTY_WEIGHT, weightChanged); + reloadPropertyChangeListener(tableEditBean, TargetLength.PROPERTY_LENGTH, lengthChanged); + + } - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, Species.class)); - UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEnumTableCellRenderer(renderer, CodeMesureEnum.class)); - UIHelper.setTableColumnRenderer(table, 2, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 3, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 4, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 5, UIHelper.newEmptyNumberTableCellRenderer(renderer)); } @Override - protected ContentMode getContentMode(DataContext dataContext) { - ContentMode mode = super.getContentMode(dataContext); - + protected void doPersist(TargetSample editBean) { String setId = getDataContext().getSelectedSetId(); + TargetSampleService service = getService(TargetSampleService.class); - boolean showData = service.canUseTargetSample(setId, discarded); - getModel().setShowData(showData); + if (!Entities.isNew(editBean) && editBean.isTargetLengthEmpty()) { - if (mode == ContentMode.UPDATE && !showData) { + // remove orphan target sample + if (log.isInfoEnabled()) { + log.info("Remove obsolete targetSample " + editBean.getTopiaId() + " from Set: " + setId); + } - mode = ContentMode.READ; + service.delete(setId, editBean); + + } else { + + String savedId = service.save(setId, editBean); + editBean.setTopiaId(savedId); - addMessage(getUi(), - NuitonValidatorScope.INFO, - getEntityLabel(SetSeine.class), - discarded ? - t("observe.setSeine.message.no.targetCatch") : - t("observe.setSeine.message.no.targetDiscarded") - ); } - return mode; + } + + public void resetWeightSource() { + getTableEditBean().setWeightSource(false); + getUi().getWeight().grabFocus(); + } + + public void resetLengthSource() { + getTableEditBean().setLengthSource(false); + getUi().getLength().grabFocus(); } /** @@ -351,6 +355,8 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSample, T // on propage le mode de saisie dans le bean editBean.setAcquisitionMode(newMode.ordinal()); + } + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.