branch develop updated (4213fb5 -> 6e9e8f9)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See http://git.codelutin.com/tutti.git from 4213fb5 fixes #6895: [IMPORT GENERIQUE] Revoir la cinématique d'écrasement des données Merge branch 'feature/6895' into develop new 593481d changer l'API de persistence pour pouvoir utiliser le rankOrder fournit ou bien continuer a le calculer new a4903de fixes #6899: [IMPORT GENERIQUE] Tous les lots catégorisés ne sont pas enregistrés Merge branch 'feature/6899' into develop new b6c5af7 refs #6899: suppression d'un log new 3262af7 réusinage des listes d'actions new 6e9e8f9 fixes #6901: [TECH] Uniformisation du comportement des listes d'actions Merge branch 'feature/6901' into develop The 5 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 6e9e8f9eb7221a3d0e1b90a6a978bebc173d7a99 Merge: b6c5af7 3262af7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 4 09:37:26 2015 +0200 fixes #6901: [TECH] Uniformisation du comportement des listes d'actions Merge branch 'feature/6901' into develop commit 3262af72f6acef9e14a9fae5facf50c82abbd0d9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 4 09:37:22 2015 +0200 réusinage des listes d'actions commit b6c5af7a18263207e8823d9c710891694e6c5688 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 4 09:13:22 2015 +0200 refs #6899: suppression d'un log commit a4903def6cf853f4cf3dc154b092e1b999c9f6e3 Merge: 4213fb5 593481d Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 4 08:34:06 2015 +0200 fixes #6899: [IMPORT GENERIQUE] Tous les lots catégorisés ne sont pas enregistrés Merge branch 'feature/6899' into develop commit 593481ddec3d3e5dbc729ce18055eacb68429b9d Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 4 08:33:59 2015 +0200 changer l'API de persistence pour pouvoir utiliser le rankOrder fournit ou bien continuer a le calculer Summary of changes: .../tutti/persistence/TuttiPersistenceImpl.java | 8 +- .../persistence/TuttiPersistenceNoDbImpl.java | 4 +- .../service/BenthosBatchPersistenceService.java | 2 +- .../BenthosBatchPersistenceServiceImpl.java | 169 +----------------- .../MarineLitterBatchPersistenceServiceImpl.java | 15 +- .../service/SpeciesBatchPersistenceService.java | 2 +- .../SpeciesBatchPersistenceServiceImpl.java | 196 +-------------------- .../service/util/BatchPersistenceHelper.java | 71 +++++--- .../BenthosBatchPersistenceServiceWriteTest.java | 2 +- .../SpeciesBatchPersistenceServiceWriteTest.java | 2 +- .../ifremer/tutti/service/PersistenceService.java | 8 +- .../tutti/service/bigfin/BigfinImportService.java | 2 +- .../catches/multipost/MultiPostImportService.java | 4 +- .../GenericformatImportPersistenceHelper.java | 4 +- .../consumer/CsvConsumerForCatch.java | 2 + .../service/genericformat/csv/CatchModel.java | 4 +- .../importactions/ImportCatchAction.java | 3 +- .../service/psionimport/PsionImportService.java | 10 +- .../service/pupitri/PupitriImportService.java | 6 +- .../service/bigfin/BigfinImportService2Test.java | 2 +- .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 15 ++ .../tutti/ui/swing/content/home/SelectCruiseUI.css | 9 +- .../ui/swing/content/home/SelectCruiseUI.jaxx | 17 +- .../swing/content/home/SelectCruiseUIHandler.java | 106 +---------- .../content/home/actions/DeleteProtocolAction.java | 11 +- .../content/home/actions/ExportProtocolAction.java | 5 +- .../catches/benthos/BenthosBatchUIHandler.java | 2 +- .../catches/species/SpeciesBatchUIHandler.java | 2 +- .../referential/ManageTemporaryReferentialUI.css | 12 +- .../referential/ManageTemporaryReferentialUI.jaxx | 23 +-- .../ManageTemporaryReferentialUIHandler.java | 110 ------------ .../actions/ExportExistingTemporaryGearAction.java | 6 +- .../ExportExistingTemporaryPersonAction.java | 6 +- .../ExportExistingTemporarySpeciesAction.java | 4 +- .../ExportExistingTemporaryVesselAction.java | 4 +- .../actions/ImportTemporaryGearAction.java | 2 +- .../actions/ImportTemporaryPersonAction.java | 2 +- .../actions/ImportTemporarySpeciesAction.java | 2 +- .../actions/ImportTemporaryVesselAction.java | 2 +- .../actions/OpenReplaceTemporaryGearUIAction.java | 8 +- .../OpenReplaceTemporaryPersonUIAction.java | 8 +- .../OpenReplaceTemporarySpeciesUIAction.java | 8 +- .../OpenReplaceTemporaryVesselUIAction.java | 8 +- .../ui/swing/util/AbstractTuttiUIHandler.java | 94 ++++++++++ .../util/actions/ShowComboBoxPopupActions.java | 25 +++ 45 files changed, 311 insertions(+), 696 deletions(-) create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/actions/ShowComboBoxPopupActions.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 593481ddec3d3e5dbc729ce18055eacb68429b9d Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 4 08:33:59 2015 +0200 changer l'API de persistence pour pouvoir utiliser le rankOrder fournit ou bien continuer a le calculer --- .../tutti/persistence/TuttiPersistenceImpl.java | 8 +- .../persistence/TuttiPersistenceNoDbImpl.java | 4 +- .../service/BenthosBatchPersistenceService.java | 2 +- .../BenthosBatchPersistenceServiceImpl.java | 169 +----------------- .../MarineLitterBatchPersistenceServiceImpl.java | 15 +- .../service/SpeciesBatchPersistenceService.java | 2 +- .../SpeciesBatchPersistenceServiceImpl.java | 196 +-------------------- .../service/util/BatchPersistenceHelper.java | 71 +++++--- .../BenthosBatchPersistenceServiceWriteTest.java | 2 +- .../SpeciesBatchPersistenceServiceWriteTest.java | 2 +- .../ifremer/tutti/service/PersistenceService.java | 8 +- .../tutti/service/bigfin/BigfinImportService.java | 2 +- .../catches/multipost/MultiPostImportService.java | 4 +- .../GenericformatImportPersistenceHelper.java | 4 +- .../consumer/CsvConsumerForCatch.java | 2 + .../service/genericformat/csv/CatchModel.java | 4 +- .../importactions/ImportCatchAction.java | 6 +- .../service/psionimport/PsionImportService.java | 10 +- .../service/pupitri/PupitriImportService.java | 6 +- .../service/bigfin/BigfinImportService2Test.java | 2 +- .../catches/benthos/BenthosBatchUIHandler.java | 2 +- .../catches/species/SpeciesBatchUIHandler.java | 2 +- 22 files changed, 109 insertions(+), 414 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java index db56413..918ba4f 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java @@ -1078,8 +1078,8 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId) { - return getSpeciesBatchService().createSpeciesBatch(bean, parentBatchId); + public SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId, boolean computeRankOrder) { + return getSpeciesBatchService().createSpeciesBatch(bean, parentBatchId, computeRankOrder); } @Override @@ -1137,8 +1137,8 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId) { - return getBenthosBatchService().createBenthosBatch(bean, parentBatchId); + public BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId, boolean computeRankOrder) { + return getBenthosBatchService().createBenthosBatch(bean, parentBatchId, computeRankOrder); } @Override diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java index bd05c77..22aec96 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java @@ -620,7 +620,7 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override - public SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId) { + public SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId, boolean computeRankOrder) { throw notImplemented(); } @@ -679,7 +679,7 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override - public BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId) { + public BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId, boolean computeRankOrder) { throw notImplemented(); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceService.java index 5ec5858..58634cd 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceService.java @@ -61,7 +61,7 @@ public interface BenthosBatchPersistenceService extends TuttiPersistenceServiceI BatchContainer<BenthosBatch> getRootBenthosBatch(String fishingOperationId, boolean validateTree) throws InvalidBatchModelException; @Transactional(readOnly = false) - BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId); + BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId, boolean computeRankOrder); @Transactional(readOnly = false) Collection<BenthosBatch> createBenthosBatches(String fishingOperationId, Collection<BenthosBatch> beans); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java index dee2116..c8db192 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java @@ -172,7 +172,7 @@ public class BenthosBatchPersistenceServiceImpl extends AbstractPersistenceServi } @Override - public BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId) { + public BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId, boolean computeRankOrder) { Preconditions.checkNotNull(bean); Preconditions.checkArgument(TuttiEntities.isNew(bean)); Preconditions.checkNotNull(bean.getSpecies()); @@ -181,10 +181,7 @@ public class BenthosBatchPersistenceServiceImpl extends AbstractPersistenceServi Preconditions.checkNotNull(bean.getFishingOperation().getId()); CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(bean.getFishingOperation().getId(), false); - BenthosBatch created = createBenthosBatch(bean, parentBatchId, catchBatch); -// SortingBatch batch = SortingBatch.Factory.newInstance(); -// beanToEntity(bean, batch, parentBatchId, catchBatch); -// bean = batchHelper.createSortingBatch(bean, catchBatch, batch); + BenthosBatch created = createBenthosBatch(bean, parentBatchId, catchBatch, computeRankOrder); return created; } @@ -200,7 +197,7 @@ public class BenthosBatchPersistenceServiceImpl extends AbstractPersistenceServi Collection<BenthosBatch> result = new ArrayList<>(); for (BenthosBatch bean : beans) { - BenthosBatch created = createBenthosBatch(bean, null, catchBatch); + BenthosBatch created = createBenthosBatch(bean, null, catchBatch, true); result.add(created); } @@ -208,7 +205,7 @@ public class BenthosBatchPersistenceServiceImpl extends AbstractPersistenceServi } - protected BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId, CatchBatch catchBatch) { + protected BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId, CatchBatch catchBatch, boolean computeRankOrder) { Preconditions.checkNotNull(bean); Preconditions.checkArgument(TuttiEntities.isNew(bean)); @@ -218,7 +215,7 @@ public class BenthosBatchPersistenceServiceImpl extends AbstractPersistenceServi Preconditions.checkNotNull(bean.getFishingOperation().getId()); SortingBatch batch = SortingBatch.Factory.newInstance(); - beanToEntity(bean, batch, parentBatchId, catchBatch); + beanToEntity(bean, batch, parentBatchId, catchBatch, computeRankOrder); bean = batchHelper.createSortingBatch(bean, catchBatch, batch); return bean; @@ -237,7 +234,7 @@ public class BenthosBatchPersistenceServiceImpl extends AbstractPersistenceServi if (bean.getParentBatch() != null) { parentBatchId = bean.getParentBatch().getId(); } - beanToEntity(bean, batch, parentBatchId, catchBatch); + beanToEntity(bean, batch, parentBatchId, catchBatch, true); batchHelper.updateSortingBatch(batch, catchBatch); return bean; @@ -415,91 +412,11 @@ public class BenthosBatchPersistenceServiceImpl extends AbstractPersistenceServi //-- Internal methods --// //------------------------------------------------------------------------// -// protected BenthosBatch entityToBean(SampleCategoryModel sampleCategoryModel, -// SortingBatch source, -// BenthosBatch target) { -// -// Preconditions.checkNotNull(target.getSpecies()); -// -// target.setId(source.getId().toString()); -// -// // Rank order -// target.setRankOrder(Integer.valueOf(source.getRankOrder())); -// -// // Individual count -// target.setNumber(source.getIndividualCount()); -// -// // Convert database weight (and sampling ratio) into UI weight and sampleCategoryWeight -// if (source.getWeight() != null && source.getWeightBeforeSampling() == null) { -// target.setSampleCategoryWeight(source.getWeight()); -// } else { -// target.setWeight(source.getWeight()); -// target.setSampleCategoryWeight(source.getWeightBeforeSampling()); -// } -// -// if (CollectionUtils.isNotEmpty(source.getChildBatchs()) && target.getWeight() != null) { -// -// // can't use this sample weight on a node -// // the weight comes from sampleRatioText, but must NOT be used here -// target.setWeight(null); -// -// } -// -// // Comments -// target.setComment(source.getComments()); -// -// // Sample category type (only one is applied) -// SortingMeasurement sm = null; -// if (source.getSortingMeasurements().size() == 1) { -// sm = source.getSortingMeasurements().iterator().next(); -// } else if (source.getReferenceTaxon() != null && source.getReferenceTaxon().getId() != null) { -// sm = measurementPersistenceHelper.getInheritedSortingMeasurement(source); -// } -// if (sm != null) { -// boolean isSamplingCategory = sampleCategoryModel.containsCategoryId( -// sm.getPmfm().getId()); -// if (isSamplingCategory) { -// Integer qualitativeId = null; -// if (sm.getQualitativeValue() != null) { -// qualitativeId = sm.getQualitativeValue().getId(); -// } -// batchHelper.setSampleCategoryQualitative( -// target, -// sm.getPmfm().getId(), -// sm.getNumericalValue(), -// sm.getAlphanumericalValue(), -// qualitativeId); -// } -// } -// -// if (target.getSampleCategoryId() != null) { -// List<BenthosBatch> targetChilds = Lists.newArrayList(); -// for (Batch batch : source.getChildBatchs()) { -// SortingBatch sourceChild = (SortingBatch) batch; -// BenthosBatch targetChild = BenthosBatchs.newBenthosBatch(); -// targetChild.setSpecies(target.getSpecies()); -// entityToBean(sampleCategoryModel, sourceChild, targetChild); -// if (log.isDebugEnabled()) { -// log.debug("Loaded CatchBatch Hors Vrac > Benthos > " + targetChild.getSpecies().getReferenceTaxonId() + " : " + target.getId()); -// } -// if (targetChild.getSampleCategoryValue() != null) { -// targetChilds.add(targetChild); -// targetChild.setParentBatch(target); -// } -// } -// target.setChildBatchs(targetChilds); -// } -// -// QualityFlag qualityFlag = source.getQualityFlag(); -// target.setSpeciesToConfirm(qualityFlag != null && QualityFlagCode.DOUBTFUL.getValue().equals(qualityFlag.getCode())); -// -// return target; -// } - protected void beanToEntity(BenthosBatch source, SortingBatch target, String parentBatchId, - CatchBatch catchBatch) { + CatchBatch catchBatch, + boolean computeRankOrder) { Preconditions.checkNotNull(source.getFishingOperation()); Preconditions.checkNotNull(source.getFishingOperation().getId()); @@ -516,75 +433,7 @@ public class BenthosBatchPersistenceServiceImpl extends AbstractPersistenceServi catchBatch); } - batchHelper.beanToEntity(parentBatchId, source, target); + batchHelper.beanToEntity(parentBatchId, source, target, computeRankOrder); } -// protected void beanToEntity(BenthosBatchFrequency source, -// SortingBatch target, -// SortingBatch parentBatch, -// short rankOrder) { -// Preconditions.checkNotNull(source.getBatch()); -// Preconditions.checkNotNull(source.getBatch().getId()); -// -// Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements(); -// Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements(); -// -// // Create lists to store all updates, then remove not updated items -// Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet(); -// if (quantificationMeasurements != null) { -// notChangedQuantificationMeasurements.addAll(quantificationMeasurements); -// } -// Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet(); -// if (sortingMeasurements != null) { -// notChangedSortingMeasurements.addAll(sortingMeasurements); -// } -// -// // If parent and root need to be set -// if (target.getId() == null -// || target.getRootBatch() == null -// || (target.getParentBatch() != null && !target.getParentBatch().getId().equals(parentBatch.getId()))) { -// -// target.setParentBatch(parentBatch); -// target.setRootBatch(parentBatch.getRootBatch()); -// } -// -// // RankOrder -// target.setRankOrder(rankOrder); -// -// // Weight or SampleCategoryWeight -// if (source.getWeight() != null) { -// QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement( -// target, -// source.getWeight()); -// notChangedQuantificationMeasurements.remove(quantificationMeasurement); -// } -// -// // Sorting measurement -// if ((source.getLengthStepCaracteristic() != null && source.getLengthStep() != null)) { -// Integer pmfmId = source.getLengthStepCaracteristic().getIdAsInt(); -// SortingMeasurement sortingMeasurement = measurementPersistenceHelper.setSortingMeasurement(target, pmfmId, -// source.getLengthStep()); -// notChangedSortingMeasurements.remove(sortingMeasurement); -// } -// -// // Individual count -// target.setIndividualCount(source.getNumber()); -// -// // Species -// target.setReferenceTaxon(null); -// -// // QualityFlag -// target.setQualityFlag(parentBatch.getQualityFlag()); -// -// // Exhaustive inventory (always true under a species batch) -// target.setExhaustiveInventory(true); -// -// // Removed not changed measurements (in sorting and quantification measurement lists) -// if (quantificationMeasurements != null) { -// quantificationMeasurements.removeAll(notChangedQuantificationMeasurements); -// } -// if (sortingMeasurements != null) { -// sortingMeasurements.removeAll(notChangedSortingMeasurements); -// } -// } } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java index f28acbd..de2728d 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java @@ -242,19 +242,10 @@ public class MarineLitterBatchPersistenceServiceImpl extends AbstractPersistence // RankOrder (initialize once, at creation) if (target.getRankOrder() == null) { - // Start rank order at 1, nothing before it - short rankOrder = (short) 1; - if (target.getParentBatch() != null && target.getParentBatch().getChildBatchs() != null) { - int maxRankOrder = 0; - for (Batch batch : target.getParentBatch().getChildBatchs()) { - Short r = batch.getRankOrder(); - if (r != null && r > maxRankOrder) { - maxRankOrder = r; - } - } - rankOrder += maxRankOrder; - } + + short rankOrder = batchHelper.computeRankOrder(target); target.setRankOrder(rankOrder); + } // Force subgroup count to '1', as Allegro diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java index cb648ec..74c1d11 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java @@ -63,7 +63,7 @@ public interface SpeciesBatchPersistenceService extends TuttiPersistenceServiceI boolean validateTree) throws InvalidBatchModelException; @Transactional(readOnly = false) - SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId); + SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId, boolean computeRankOrder); @Transactional(readOnly = false) Collection<SpeciesBatch> createSpeciesBatches(String fishingOperationId, Collection<SpeciesBatch> beans); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java index b91d021..7479c39 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java @@ -181,7 +181,7 @@ public class SpeciesBatchPersistenceServiceImpl extends AbstractPersistenceServi } @Override - public SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId) { + public SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId, boolean computeRankOrder) { Preconditions.checkNotNull(bean); Preconditions.checkArgument(TuttiEntities.isNew(bean)); Preconditions.checkNotNull(bean.getSpecies()); @@ -191,11 +191,7 @@ public class SpeciesBatchPersistenceServiceImpl extends AbstractPersistenceServi CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(bean.getFishingOperation().getId(), false); - SpeciesBatch created = createSpeciesBatch(bean, parentBatchId, catchBatch); -// -// SortingBatch batch = SortingBatch.Factory.newInstance(); -// beanToEntity(bean, batch, parentBatchId, catchBatch); -// bean = batchHelper.createSortingBatch(bean, catchBatch, batch); + SpeciesBatch created = createSpeciesBatch(bean, parentBatchId, catchBatch, computeRankOrder); return created; } @@ -211,7 +207,7 @@ public class SpeciesBatchPersistenceServiceImpl extends AbstractPersistenceServi Collection<SpeciesBatch> result = new ArrayList<>(); for (SpeciesBatch bean : beans) { - SpeciesBatch created = createSpeciesBatch(bean, null, catchBatch); + SpeciesBatch created = createSpeciesBatch(bean, null, catchBatch, true); result.add(created); } @@ -220,7 +216,7 @@ public class SpeciesBatchPersistenceServiceImpl extends AbstractPersistenceServi } - protected SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId, CatchBatch catchBatch) { + protected SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId, CatchBatch catchBatch, boolean computeRankOrder) { Preconditions.checkNotNull(bean); Preconditions.checkArgument(TuttiEntities.isNew(bean)); @@ -230,7 +226,7 @@ public class SpeciesBatchPersistenceServiceImpl extends AbstractPersistenceServi Preconditions.checkNotNull(bean.getFishingOperation().getId()); SortingBatch batch = SortingBatch.Factory.newInstance(); - beanToEntity(bean, batch, parentBatchId, catchBatch); + beanToEntity(bean, batch, parentBatchId, catchBatch, computeRankOrder); bean = batchHelper.createSortingBatch(bean, catchBatch, batch); return bean; @@ -249,7 +245,7 @@ public class SpeciesBatchPersistenceServiceImpl extends AbstractPersistenceServi if (bean.getParentBatch() != null) { parentBatchId = bean.getParentBatch().getId(); } - beanToEntity(bean, batch, parentBatchId, catchBatch); + beanToEntity(bean, batch, parentBatchId, catchBatch, true); batchHelper.updateSortingBatch(batch, catchBatch); return bean; @@ -454,116 +450,11 @@ public class SpeciesBatchPersistenceServiceImpl extends AbstractPersistenceServi //-- Internal methods --// //------------------------------------------------------------------------// -// protected SpeciesBatch entityToBean(SampleCategoryModel sampleCategoryModel, -// SortingBatch source, -// SpeciesBatch target) { -// -// Preconditions.checkNotNull(target.getSpecies()); -// -// target.setId(source.getId().toString()); -// -// // Rank order -// target.setRankOrder(Integer.valueOf(source.getRankOrder())); -// -// // Individual count -// target.setNumber(source.getIndividualCount()); -// -// // Convert database weight (and sampling ratio) into UI weight and sampleCategoryWeight -// if (source.getWeight() != null && source.getWeightBeforeSampling() == null) { -// target.setSampleCategoryWeight(source.getWeight()); -// } else { -// target.setWeight(source.getWeight()); -// target.setSampleCategoryWeight(source.getWeightBeforeSampling()); -// } -// -//// if (CollectionUtils.isNotEmpty(source.getChildBatchs()) && target.getWeight() != null) { -//// -//// // can't use this sample weight on a node -//// // the weight comes from sampleRatioText, but must NOT be used here -//// target.setWeight(null); -//// -//// } -// -// -// // Comments -// target.setComment(source.getComments()); -// -// // Sample category type (only one is applied) -// SortingMeasurement sm = null; -// if (source.getSortingMeasurements().size() == 1) { -// sm = source.getSortingMeasurements().iterator().next(); -// } else if (source.getReferenceTaxon() != null && source.getReferenceTaxon().getId() != null) { -// sm = measurementPersistenceHelper.getInheritedSortingMeasurement(source); -// } -// if (sm != null) { -// -// boolean isFrequency = batchHelper.isFrequencyBatch(sampleCategoryModel, source); -// -// if (!isFrequency) { -// Integer qualitativeId = null; -// if (sm.getQualitativeValue() != null) { -// qualitativeId = sm.getQualitativeValue().getId(); -// } -// batchHelper.setSampleCategoryQualitative( -// target, -// sm.getPmfm().getId(), -// sm.getNumericalValue(), -// sm.getAlphanumericalValue(), -// qualitativeId); -// } -// } -// -// if (target.getSampleCategoryId() != null) { -// List<SpeciesBatch> targetChilds = Lists.newArrayList(); -// for (Batch batch : source.getChildBatchs()) { -// SortingBatch sourceChild = (SortingBatch) batch; -// SpeciesBatch targetChild = SpeciesBatchs.newSpeciesBatch(); -// targetChild.setSpecies(target.getSpecies()); -// entityToBean(sampleCategoryModel, sourceChild, targetChild); -// if (log.isDebugEnabled()) { -// log.debug("Loaded CatchBatch (Vrac|Hors Vrac) > Species > " + targetChild.getSpecies().getReferenceTaxonId() + " : " + target.getId()); -// } -// if (targetChild.getSampleCategoryValue() != null) { -// targetChilds.add(targetChild); -// targetChild.setParentBatch(target); -// } -// } -// target.setChildBatchs(targetChilds); -// } -// -// //FIXME tchemit-2014-08-29 We can only do this if not an a leaf node (means with no frequencies...) -// //FIXME tchemit-2014-08-29 But need to see if this is really need to do that . -// // see https://forge.codelutin.com/issues/5698 -// -// if (CollectionUtils.isNotEmpty(source.getChildBatchs()) && target.getWeight() != null) { -// -// SortingBatch childBatch = (SortingBatch) Iterables.get(source.getChildBatchs(), 0); -// -// boolean isFrequency = batchHelper.isFrequencyBatch(sampleCategoryModel, childBatch); -// -// if (!isFrequency) { -// -// // can't use this sample weight on a node -// // the weight comes from sampleRatioText, but must NOT be used here -// // but we can only do this if childs are not frequencies -// -// target.setWeight(null); -// -// } -// -// } -// -// -// QualityFlag qualityFlag = source.getQualityFlag(); -// target.setSpeciesToConfirm(qualityFlag != null && QualityFlagCode.DOUBTFUL.getValue().equals(qualityFlag.getCode())); -// -// return target; -// } - protected void beanToEntity(SpeciesBatch source, SortingBatch target, String parentBatchId, - fr.ifremer.adagio.core.dao.data.batch.CatchBatch catchBatch) { + CatchBatch catchBatch, + boolean computeRankOrder) { Preconditions.checkNotNull(source.getFishingOperation()); Preconditions.checkNotNull(source.getFishingOperation().getId()); @@ -582,77 +473,8 @@ public class SpeciesBatchPersistenceServiceImpl extends AbstractPersistenceServi ); } - batchHelper.beanToEntity(parentBatchId, source, target); + batchHelper.beanToEntity(parentBatchId, source, target, computeRankOrder); } -// protected void beanToEntity(SpeciesBatchFrequency source, -// SortingBatch target, -// SortingBatch parentBatch, -// short rankOrder) { -// Preconditions.checkNotNull(source.getBatch()); -// Preconditions.checkNotNull(source.getBatch().getId()); -// -// Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements(); -// Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements(); -// -// // Create lists to store all updates, then remove not updated items -// Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet(); -// if (quantificationMeasurements != null) { -// notChangedQuantificationMeasurements.addAll(quantificationMeasurements); -// } -// Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet(); -// if (sortingMeasurements != null) { -// notChangedSortingMeasurements.addAll(sortingMeasurements); -// } -// -// // If parent and root need to be set -// if (target.getId() == null -// || target.getRootBatch() == null -// || (target.getParentBatch() != null && !target.getParentBatch().getId().equals(parentBatch.getId()))) { -// -// target.setParentBatch(parentBatch); -// target.setRootBatch(parentBatch.getRootBatch()); -// } -// -// // RankOrder -// target.setRankOrder(rankOrder); -// -// // Weight or SampleCategoryWeight -// if (source.getWeight() != null) { -// QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement( -// target, -// source.getWeight()); -// notChangedQuantificationMeasurements.remove(quantificationMeasurement); -// } -// -// // Sorting measurement -// if ((source.getLengthStepCaracteristic() != null && source.getLengthStep() != null)) { -// Integer pmfmId = source.getLengthStepCaracteristic().getIdAsInt(); -// SortingMeasurement sortingMeasurement = measurementPersistenceHelper.setSortingMeasurement(target, pmfmId, -// source.getLengthStep()); -// notChangedSortingMeasurements.remove(sortingMeasurement); -// } -// -// // Individual count -// target.setIndividualCount(source.getNumber()); -// -// // Species -// target.setReferenceTaxon(null); -// -// // QualityFlag -// target.setQualityFlag(parentBatch.getQualityFlag()); -// -// // Exhaustive inventory (always true under a species batch) -// target.setExhaustiveInventory(true); -// -// // Removed not changed measurements (in sorting and quantification measurement lists) -// if (quantificationMeasurements != null) { -// quantificationMeasurements.removeAll(notChangedQuantificationMeasurements); -// } -// if (sortingMeasurements != null) { -// sortingMeasurements.removeAll(notChangedSortingMeasurements); -// } -// } - } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/BatchPersistenceHelper.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/BatchPersistenceHelper.java index 6f69427..e8d5e11 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/BatchPersistenceHelper.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/BatchPersistenceHelper.java @@ -508,35 +508,46 @@ public class BatchPersistenceHelper extends AbstractPersistenceService { public void beanToEntity(String parentBatchId, SpeciesAbleBatch source, - SortingBatch target) { + SortingBatch target, + boolean computeRankOrder) { // --- RankOrder (initialize once, at creation) --- // { if (target.getRankOrder() == null) { - // Start rank order at 1 - short rankOrder = (short) 1; - if (source.getParentBatch() != null && CollectionUtils.isNotEmpty(source.getParentBatch().getChildBatchs())) { - int maxRankOrder = 0; - for (SpeciesAbleBatch batch : source.getParentBatch().getChildBatchs()) { - Integer r = batch.getRankOrder(); - if (r != null && r > maxRankOrder) { - maxRankOrder = r; - } - } - rankOrder += (short) maxRankOrder; - - } else if (target.getParentBatch() != null && CollectionUtils.isNotEmpty(target.getParentBatch().getChildBatchs())) { - short maxRankOrder = 0; - for (Batch batch : target.getParentBatch().getChildBatchs()) { - Short r = batch.getRankOrder(); - if (r != null && r > maxRankOrder) { - maxRankOrder = r; + + short rankOrder; + + if (computeRankOrder) { + + // Start rank order at 1 + rankOrder = (short) 1; + //FIXME : tchemit-2015-04-04 This code can not be used to save multiple batches at the same time, since it will always give the + //FIXME : tchemit-2015-04-04 same values for all batches + if (source.getParentBatch() != null && CollectionUtils.isNotEmpty(source.getParentBatch().getChildBatchs())) { + int maxRankOrder = 0; + for (SpeciesAbleBatch batch : source.getParentBatch().getChildBatchs()) { + Integer r = batch.getRankOrder(); + if (r != null && r > maxRankOrder) { + maxRankOrder = r; + } } + rankOrder += (short) maxRankOrder; + + } else { + + rankOrder = computeRankOrder(target); + } - rankOrder += maxRankOrder; + + } else { + + Preconditions.checkState(source.getRankOrder() != null, "Not using computeRankOrder requires source rankOrder to be not null, but was on batch: " + source); + rankOrder = (short) (int) source.getRankOrder(); + } target.setRankOrder(rankOrder); + } } @@ -606,7 +617,6 @@ public class BatchPersistenceHelper extends AbstractPersistenceService { } - public void beanToEntity(SpeciesAbleBatchFrequency source, SortingBatch target, SortingBatch parentBatch, @@ -661,6 +671,7 @@ public class BatchPersistenceHelper extends AbstractPersistenceService { } + public <B extends SpeciesAbleBatch> B entityToBean(SampleCategoryModel sampleCategoryModel, SortingBatch source, B target) { @@ -777,6 +788,24 @@ public class BatchPersistenceHelper extends AbstractPersistenceService { } + public short computeRankOrder(SortingBatch target) { + + // Start rank order at 1, nothing before it + short rankOrder = (short) 1; + if (target.getParentBatch() != null && target.getParentBatch().getChildBatchs() != null) { + int maxRankOrder = 0; + for (Batch batch : target.getParentBatch().getChildBatchs()) { + Short r = batch.getRankOrder(); + if (r != null && r > maxRankOrder) { + maxRankOrder = r; + } + } + rankOrder += maxRankOrder; + } + return rankOrder; + + } + public Integer convertSampleCategoryValueIntoQualitativeId(Serializable value) { if (value == null) { return null; diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceWriteTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceWriteTest.java index 4fa29e1..06aea07 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceWriteTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceWriteTest.java @@ -421,7 +421,7 @@ public class BenthosBatchPersistenceServiceWriteTest { batch.setFishingOperation(fishingOperationWithEmptyBatch); // Create batch - BenthosBatch createdBatch = service.createBenthosBatch(batch, parentBatchId); + BenthosBatch createdBatch = service.createBenthosBatch(batch, parentBatchId, true); assertBenthosBatch(batch, createdBatch, false); // then reload (for round trip check) diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceWriteTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceWriteTest.java index 442c5f3..eb66f50 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceWriteTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceWriteTest.java @@ -410,7 +410,7 @@ public class SpeciesBatchPersistenceServiceWriteTest { batch.setFishingOperation(fishingOperationWithEmptyBatch); // Create batch - SpeciesBatch createdBatch = service.createSpeciesBatch(batch, parentBatchId); + SpeciesBatch createdBatch = service.createSpeciesBatch(batch, parentBatchId, true); assertSpeciesBatch(batch, createdBatch, false); // then reload (for round trip check) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index 48d68f1..6d25201 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -1288,8 +1288,8 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override - public SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId) { - return driver.createSpeciesBatch(bean, parentBatchId); + public SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId, boolean computeRankOrder) { + return driver.createSpeciesBatch(bean, parentBatchId, computeRankOrder); } @Override @@ -1348,8 +1348,8 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override - public BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId) { - return driver.createBenthosBatch(bean, parentBatchId); + public BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId, boolean computeRankOrder) { + return driver.createBenthosBatch(bean, parentBatchId, computeRankOrder); } @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportService.java index 212a9ef..3b71d00 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportService.java @@ -454,7 +454,7 @@ public class BigfinImportService extends AbstractTuttiService { batch.setSampleCategoryId(categoryId); batch.setSampleCategoryValue(signsToCaracteristicValue.get(signs)); - batch = persistenceService.createSpeciesBatch(batch, parentBatchId); + batch = persistenceService.createSpeciesBatch(batch, parentBatchId, true); return batch; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java index efb9ef3..6838d5d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java @@ -434,7 +434,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult } if (existingBatch == null) { - batch = persistenceService.createSpeciesBatch(batch, parentPersistedId); + batch = persistenceService.createSpeciesBatch(batch, parentPersistedId, true); batches.put(row.getId(), batch); } } @@ -698,7 +698,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult } if (existingBatch == null) { - batch = persistenceService.createBenthosBatch(batch, parentPersistedId); + batch = persistenceService.createBenthosBatch(batch, parentPersistedId, true); batches.put(row.getId(), batch); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java index d8b38be..c64408c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java @@ -170,7 +170,7 @@ public class GenericformatImportPersistenceHelper { } public SpeciesBatch createSpeciesBatch(SpeciesBatch batch, String parentId) { - return persistenceService.createSpeciesBatch(batch, parentId); + return persistenceService.createSpeciesBatch(batch, parentId, false); } public void saveSpeciesBatchFrequency(String batchId, List<SpeciesBatchFrequency> frequencies) { @@ -187,7 +187,7 @@ public class GenericformatImportPersistenceHelper { } public BenthosBatch createBenthosBatch(BenthosBatch batch, String parentId) { - return persistenceService.createBenthosBatch(batch, parentId); + return persistenceService.createBenthosBatch(batch, parentId, false); } public void saveBenthosBatchFrequency(String batchId, List<BenthosBatchFrequency> frequencies) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java index 257b877..bd95840 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java @@ -253,6 +253,7 @@ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { batch.setSampleCategoryId(sampleCategory.getCategoryId()); batch.setSampleCategoryValue(sampleCategory.getCategoryValue()); batch.setSampleCategoryWeight(sampleCategory.getCategoryWeight()); + batch.setRankOrder(sampleCategory.getRankOrder()); result = batch; operationContext.registerBatchObjectId(batch.getIdAsInt(), sampleCategory.getBatchId()); @@ -284,6 +285,7 @@ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { // add a child result = SpeciesAbleBatchs.createNewChild(batch); result.setId(getNextBatchId()); + result.setRankOrder(sampleCategory.getRankOrder()); result.setSampleCategoryId(sampleCategory.getCategoryId()); result.setSampleCategoryValue(sampleCategory.getCategoryValue()); result.setSampleCategoryWeight(sampleCategory.getCategoryWeight()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java index 6e66b56..02bf75a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -98,7 +98,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { int categoryOrder = entry.getOrder(); String collectionName = CatchRow.SAMPLE_CATEGORY; newIndexNullableColumnForExport(headerPrefix, collectionName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); - newIndexNullableColumnForExport("Num_Ordre_" + headerPrefix + "_H2", collectionName, categoryOrder, ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER); + newIndexNullableColumnForExport("Num_Ordre_" + headerPrefix + "_H2", collectionName, categoryOrder, ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.PRIMITIVE_INTEGER); newIndexNullableColumnForExport("Tot_" + headerPrefix, collectionName, categoryOrder, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT, TuttiCsvUtil.FLOAT); newIndexNullableColumnForExport("Ech_" + headerPrefix, collectionName, categoryOrder, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT, TuttiCsvUtil.FLOAT); newIndexNullableColumnForExport("Type_Volume_Poids_" + headerPrefix, collectionName, categoryOrder, ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE); @@ -158,7 +158,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { String headerPrefix = entry.getCode(); newIgnoredColumn(headerPrefix); - newMandatoryColumn("Num_Ordre_" + headerPrefix + "_H2", TuttiCsvUtil.INTEGER, new SampleCategoryValueSetter<Integer>(entry, ExportSampleCategory.PROPERTY_RANK_ORDER)); + newMandatoryColumn("Num_Ordre_" + headerPrefix + "_H2", TuttiCsvUtil.PRIMITIVE_INTEGER, new SampleCategoryValueSetter<Integer>(entry, ExportSampleCategory.PROPERTY_RANK_ORDER)); newMandatoryColumn("Tot_" + headerPrefix, TuttiCsvUtil.FLOAT, new SampleCategoryValueSetter<Float>(entry, ExportSampleCategory.PROPERTY_CATEGORY_WEIGHT)); newMandatoryColumn("Ech_" + headerPrefix, TuttiCsvUtil.FLOAT, new SampleCategoryValueSetter<Float>(entry, ExportSampleCategory.PROPERTY_SAMPLE_WEIGHT)); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java index 61bb3e9..2c4578f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java @@ -85,7 +85,7 @@ public class ImportCatchAction extends ImportActionSupport { importContext.increments(t("tutti.service.genericFormat.skip.import.catches")); if (!(importContext.getImportRequest().isImportSpecies() || - importContext.getImportRequest().isImportBenthos())) { + importContext.getImportRequest().isImportBenthos())) { GenericFormatCsvFileResult importFileResult = importContext.getCatchFileResult(); importFileResult.setSkipped(true); } @@ -179,7 +179,9 @@ public class ImportCatchAction extends ImportActionSupport { // reset temporary id to persist batch batch.setId((Integer) null); SpeciesBatch createdBatch = persistenceHelper.createSpeciesBatch(batch, parentId); - + if (log.isInfoEnabled()) { + log.info("Create species batch: " + batch.getSpecies().getName() + "--" + batch.getSampleCategoryWeight() + " -- original rankOrder: " + batch.getRankOrder() + " -- saved rankOrder: " + createdBatch.getRankOrder()); + } Collection<AttachmentRow> attachmentRows = importContext.popAttachmentRows(ObjectTypeCode.BATCH, batchObjectId); persistenceHelper.persistAttachments(createdBatch.getIdAsInt(), attachmentRows); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java index de78272..3034f26 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java @@ -578,7 +578,7 @@ public class PsionImportService extends AbstractTuttiService { sortedCaracteristic); - batch = persistenceService.createSpeciesBatch(batch, null); + batch = persistenceService.createSpeciesBatch(batch, null, true); persistFrequencies(batch, batchModel); @@ -616,7 +616,7 @@ public class PsionImportService extends AbstractTuttiService { PmfmId.SORTED_UNSORTED.getValue(), sortedCaracteristic); - rootBatch = persistenceService.createSpeciesBatch(rootBatch, null); + rootBatch = persistenceService.createSpeciesBatch(rootBatch, null, true); createCategoryBatches(operation, specy, batchs, rootBatch, sortedBatchWeight != null); @@ -640,7 +640,7 @@ public class PsionImportService extends AbstractTuttiService { PmfmId.SORTED_UNSORTED.getValue(), unsortedCaracteristic); - batch = persistenceService.createSpeciesBatch(batch, null); + batch = persistenceService.createSpeciesBatch(batch, null, true); persistFrequencies(batch, batchModel); @@ -655,7 +655,7 @@ public class PsionImportService extends AbstractTuttiService { PmfmId.SORTED_UNSORTED.getValue(), unsortedCaracteristic); - rootBatch = persistenceService.createSpeciesBatch(rootBatch, null); + rootBatch = persistenceService.createSpeciesBatch(rootBatch, null, true); createCategoryBatches(operation, specy, batchs, rootBatch, false); @@ -734,7 +734,7 @@ public class PsionImportService extends AbstractTuttiService { if (TuttiEntities.isNew(childBatch)) { // persist it - childBatch = persistenceService.createSpeciesBatch(childBatch, parentBatch.getId()); + childBatch = persistenceService.createSpeciesBatch(childBatch, parentBatch.getId(), true); parentBatch.addChildBatchs(childBatch); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportService.java index a5de739..1a73504 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportService.java @@ -463,7 +463,7 @@ public class PupitriImportService extends AbstractTuttiService { PmfmId.SORTED_UNSORTED.getValue(), cqv); - batch = persistenceService.createSpeciesBatch(batch, null); + batch = persistenceService.createSpeciesBatch(batch, null, true); String parentBatchId = batch.getId(); @@ -489,7 +489,7 @@ public class PupitriImportService extends AbstractTuttiService { } } - persistenceService.createSpeciesBatch(childBatch, parentBatchId); + persistenceService.createSpeciesBatch(childBatch, parentBatchId, true); } } else { @@ -515,7 +515,7 @@ public class PupitriImportService extends AbstractTuttiService { batch.setComment(melagComment); } - persistenceService.createSpeciesBatch(batch, null); + persistenceService.createSpeciesBatch(batch, null, true); } } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/bigfin/BigfinImportService2Test.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/bigfin/BigfinImportService2Test.java index b764a0a..9c6d870 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/bigfin/BigfinImportService2Test.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/bigfin/BigfinImportService2Test.java @@ -184,7 +184,7 @@ public class BigfinImportService2Test { CaracteristicQualitativeValue qualitativeValue = CaracteristicQualitativeValues.getQualitativeValue(sortedUnsortedCaracteristic, QualitativeValueId.SORTED_VRAC.getValue()); speciesBatch.setSampleCategoryValue(qualitativeValue); - speciesBatch = persistenceService.createSpeciesBatch(speciesBatch, null); + speciesBatch = persistenceService.createSpeciesBatch(speciesBatch, null, true); { String fileContent = "Study name,ID,Date,LOC,STA,COMMENT,GPS X,GPS Y,SP CODE,SPEC,LENGTH (mm),WEIGHT (g),SEX,SIZE,MT,MS\n" + diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java index 17f65a8..96ba18a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java @@ -1247,7 +1247,7 @@ public class BenthosBatchUIHandler extends AbstractTuttiBatchTableUIHandler<Bent parentBatchId); } entityToSave = getPersistenceService().createBenthosBatch(entityToSave, - parentBatchId); + parentBatchId, true); row.setId(entityToSave.getId()); } else { if (log.isDebugEnabled()) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java index f7390ef..392fd99 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java @@ -1269,7 +1269,7 @@ public class SpeciesBatchUIHandler extends AbstractTuttiBatchTableUIHandler<Spec parentBatchId); } catchBean = getPersistenceService().createSpeciesBatch(catchBean, - parentBatchId); + parentBatchId, true); row.setId(catchBean.getId()); } else { if (log.isDebugEnabled()) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit a4903def6cf853f4cf3dc154b092e1b999c9f6e3 Merge: 4213fb5 593481d Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 4 08:34:06 2015 +0200 fixes #6899: [IMPORT GENERIQUE] Tous les lots catégorisés ne sont pas enregistrés Merge branch 'feature/6899' into develop .../tutti/persistence/TuttiPersistenceImpl.java | 8 +- .../persistence/TuttiPersistenceNoDbImpl.java | 4 +- .../service/BenthosBatchPersistenceService.java | 2 +- .../BenthosBatchPersistenceServiceImpl.java | 169 +----------------- .../MarineLitterBatchPersistenceServiceImpl.java | 15 +- .../service/SpeciesBatchPersistenceService.java | 2 +- .../SpeciesBatchPersistenceServiceImpl.java | 196 +-------------------- .../service/util/BatchPersistenceHelper.java | 71 +++++--- .../BenthosBatchPersistenceServiceWriteTest.java | 2 +- .../SpeciesBatchPersistenceServiceWriteTest.java | 2 +- .../ifremer/tutti/service/PersistenceService.java | 8 +- .../tutti/service/bigfin/BigfinImportService.java | 2 +- .../catches/multipost/MultiPostImportService.java | 4 +- .../GenericformatImportPersistenceHelper.java | 4 +- .../consumer/CsvConsumerForCatch.java | 2 + .../service/genericformat/csv/CatchModel.java | 4 +- .../importactions/ImportCatchAction.java | 6 +- .../service/psionimport/PsionImportService.java | 10 +- .../service/pupitri/PupitriImportService.java | 6 +- .../service/bigfin/BigfinImportService2Test.java | 2 +- .../catches/benthos/BenthosBatchUIHandler.java | 2 +- .../catches/species/SpeciesBatchUIHandler.java | 2 +- 22 files changed, 109 insertions(+), 414 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit b6c5af7a18263207e8823d9c710891694e6c5688 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 4 09:13:22 2015 +0200 refs #6899: suppression d'un log --- .../tutti/service/genericformat/importactions/ImportCatchAction.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java index 2c4578f..e919f66 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java @@ -179,9 +179,6 @@ public class ImportCatchAction extends ImportActionSupport { // reset temporary id to persist batch batch.setId((Integer) null); SpeciesBatch createdBatch = persistenceHelper.createSpeciesBatch(batch, parentId); - if (log.isInfoEnabled()) { - log.info("Create species batch: " + batch.getSpecies().getName() + "--" + batch.getSampleCategoryWeight() + " -- original rankOrder: " + batch.getRankOrder() + " -- saved rankOrder: " + createdBatch.getRankOrder()); - } Collection<AttachmentRow> attachmentRows = importContext.popAttachmentRows(ObjectTypeCode.BATCH, batchObjectId); persistenceHelper.persistAttachments(createdBatch.getIdAsInt(), attachmentRows); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 3262af72f6acef9e14a9fae5facf50c82abbd0d9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 4 09:37:22 2015 +0200 réusinage des listes d'actions --- .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 15 +++ .../tutti/ui/swing/content/home/SelectCruiseUI.css | 9 +- .../ui/swing/content/home/SelectCruiseUI.jaxx | 17 +--- .../swing/content/home/SelectCruiseUIHandler.java | 106 +------------------- .../content/home/actions/DeleteProtocolAction.java | 11 ++- .../content/home/actions/ExportProtocolAction.java | 5 +- .../referential/ManageTemporaryReferentialUI.css | 12 +-- .../referential/ManageTemporaryReferentialUI.jaxx | 23 ++--- .../ManageTemporaryReferentialUIHandler.java | 110 --------------------- .../actions/ExportExistingTemporaryGearAction.java | 6 +- .../ExportExistingTemporaryPersonAction.java | 6 +- .../ExportExistingTemporarySpeciesAction.java | 4 +- .../ExportExistingTemporaryVesselAction.java | 4 +- .../actions/ImportTemporaryGearAction.java | 2 +- .../actions/ImportTemporaryPersonAction.java | 2 +- .../actions/ImportTemporarySpeciesAction.java | 2 +- .../actions/ImportTemporaryVesselAction.java | 2 +- .../actions/OpenReplaceTemporaryGearUIAction.java | 8 +- .../OpenReplaceTemporaryPersonUIAction.java | 8 +- .../OpenReplaceTemporarySpeciesUIAction.java | 8 +- .../OpenReplaceTemporaryVesselUIAction.java | 8 +- .../ui/swing/util/AbstractTuttiUIHandler.java | 94 ++++++++++++++++++ .../util/actions/ShowComboBoxPopupActions.java | 25 +++++ 23 files changed, 205 insertions(+), 282 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java index 89ed791..32f4836 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java @@ -105,6 +105,7 @@ import java.util.Locale; import java.util.Map; import java.util.Properties; import java.util.Set; +import java.util.Timer; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -602,6 +603,11 @@ public class TuttiUIContext extends AbstractBean implements Closeable, UIMessage validationContext = null; IOUtils.closeQuietly(dataContext); + if (timer != null) { + timer.purge(); + timer.cancel(); + } + setScreen(null); IOUtils.closeQuietly(serviceContext); @@ -1220,4 +1226,13 @@ public class TuttiUIContext extends AbstractBean implements Closeable, UIMessage } + private Timer timer; + + public Timer getTimer() { + if (timer == null) { + timer = new Timer("ShowActions::"); + } + return timer; + } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css index 7a1ed57..ec38029 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css @@ -89,9 +89,8 @@ BeanFilterableComboBox { } #editCruiseComboBox { - model: {SwingUtil.newComboModel(editCruiseButton, sendCruiseReportButton, exportCruiseForSumatraButton, speciesToConfirmReportForCruiseButton)}; enabled: {model.isProgramFound() && model.isCruiseFound()}; - renderer: {new ActionListCellRenderer()}; + _comboboxActions: {Arrays.asList(editCruiseButton, sendCruiseReportButton, exportCruiseForSumatraButton, speciesToConfirmReportForCruiseButton)}; } #editCruiseButton { @@ -152,14 +151,12 @@ BeanFilterableComboBox { } #newProtocolComboBox { - model: {SwingUtil.newComboModel(newProtocolButton, importProtocolButton)}; - renderer: {new ActionListCellRenderer()}; + _comboboxActions: {Arrays.asList(newProtocolButton, importProtocolButton)}; } #editProtocolComboBox { - model: {SwingUtil.newComboModel(editProtocolButton, cloneProtocolButton, exportProtocolButton, deleteProtocolButton)}; enabled: {model.isProtocolFound()}; - renderer: {new ActionListCellRenderer()}; + _comboboxActions: {Arrays.asList(editProtocolButton, cloneProtocolButton, exportProtocolButton, deleteProtocolButton)}; } #newProtocolButton { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx index 095a7c3..d621ad6 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx @@ -31,10 +31,10 @@ fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.util.TuttiUIUtil - org.nuiton.jaxx.application.swing.util.ActionListCellRenderer jaxx.runtime.swing.editor.bean.BeanFilterableComboBox + java.util.Arrays static org.nuiton.i18n.I18n.t </import> @@ -104,10 +104,7 @@ </cell> <cell> <JPanel layout='{new GridLayout(1,0)}'> - <JComboBox id='editCruiseComboBox' - onMouseEntered='handler.showActions(editCruiseComboBox, 300)' - onMouseClicked='handler.startComboFirstAction(event)' - onActionPerformed='handler.startEditCruiseAction(event)'/> + <JComboBox id='editCruiseComboBox'/> <JButton id='newCruiseButton'/> </JPanel> </cell> @@ -121,14 +118,8 @@ </cell> <cell> <JPanel layout='{new GridLayout(1,0)}'> - <JComboBox id='editProtocolComboBox' - onMouseEntered='handler.showActions(editProtocolComboBox, 300)' - onMouseClicked='handler.startComboFirstAction(event)' - onActionPerformed='handler.startExistingProtocolAction(event)'/> - <JComboBox id='newProtocolComboBox' - onMouseEntered='handler.showActions(newProtocolComboBox, 300)' - onMouseClicked='handler.startComboFirstAction(event)' - onActionPerformed='handler.startNewProtocolAction(event)'/> + <JComboBox id='editProtocolComboBox'/> + <JComboBox id='newProtocolComboBox'/> </JPanel> </cell> </row> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java index a306968..0ea449d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java @@ -28,24 +28,16 @@ import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.AbstractButton; -import javax.swing.JButton; -import javax.swing.JComboBox; import javax.swing.JComponent; -import java.awt.event.ActionEvent; -import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; -import java.util.Timer; -import java.util.TimerTask; /** * Main ui content to select cruise. @@ -59,8 +51,6 @@ public class SelectCruiseUIHandler extends AbstractTuttiUIHandler<SelectCruiseUI private static final Log log = LogFactory.getLog(SelectCruiseUIHandler.class); - private Timer timer; - @Override public SwingValidator<SelectCruiseUIModel> getValidator() { return ui.getValidator(); @@ -135,25 +125,13 @@ public class SelectCruiseUIHandler extends AbstractTuttiUIHandler<SelectCruiseUI initUI(ui); - timer = new Timer("ShowActions::"); - SelectCruiseUIModel model = getModel(); - initBeanFilterableComboBox(ui.getProgramCombobox(), - model.getPrograms(), - model.getProgram()); - - initBeanFilterableComboBox(ui.getCruiseCombobox(), - model.getCruises(), - model.getCruise()); + initBeanFilterableComboBox(ui.getProgramCombobox(), model.getPrograms(), model.getProgram()); - initBeanFilterableComboBox(ui.getProtocolCombobox(), - model.getProtocols(), - model.getProtocol()); + initBeanFilterableComboBox(ui.getCruiseCombobox(), model.getCruises(), model.getCruise()); - initActionComboBox(ui.getEditCruiseComboBox()); - initActionComboBox(ui.getEditProtocolComboBox()); - initActionComboBox(ui.getNewProtocolComboBox()); + initBeanFilterableComboBox(ui.getProtocolCombobox(), model.getProtocols(), model.getProtocol()); model.addPropertyChangeListener(SelectCruiseUIModel.PROPERTY_PROTOCOLS, new PropertyChangeListener() { @Override @@ -237,31 +215,6 @@ public class SelectCruiseUIHandler extends AbstractTuttiUIHandler<SelectCruiseUI return getUI().getEditCatchesButton(); } - public void showActions(JComboBox comboBox, long delay) { - - if (comboBox.isEnabled()) { - - timer.schedule(new ShowComboBoxPopupActions(comboBox), delay); - - } - - } - - protected boolean resetEditProtocolAction; - - protected boolean resetNewProtocolAction; - - protected boolean resetEditCruiseAction; - - public void resetEditProtolAction() { - resetEditProtocolAction = true; - try { - ui.getEditProtocolComboBox().setSelectedIndex(0); - } finally { - resetEditProtocolAction = false; - } - } - @Override public void onCloseUI() { if (log.isDebugEnabled()) { @@ -272,59 +225,6 @@ public class SelectCruiseUIHandler extends AbstractTuttiUIHandler<SelectCruiseUI getModel().removePropertyChangeListener(listener); } clearValidators(); - timer.purge(); - timer.cancel(); - } - - public void startEditCruiseAction(ActionEvent event) { - startEditAction(!resetEditCruiseAction, event); } - public void startExistingProtocolAction(ActionEvent event) { - startEditAction(!resetEditProtocolAction, event); - } - - public void startNewProtocolAction(ActionEvent event) { - startEditAction(!resetNewProtocolAction, event); - } - - public void startComboFirstAction(MouseEvent event) { - JComboBox combo = (JComboBox) event.getSource(); - if (combo.isEnabled()) { - AbstractButton action = (AbstractButton) combo.getItemAt(0); - getContext().getActionEngine().runAction(action); - } - } - - protected void startEditAction(boolean canEdit, ActionEvent event) { - if (canEdit) { - JComboBox existingCombo = (JComboBox) event.getSource(); - JButton selectedAction = (JButton) existingCombo.getSelectedItem(); - // hide popup before performing the action, otherwise, if the action - // opens a popup, the user must click a first time to hide the combobox - // popup to then interact with the popup opened by the action - // (see http://forge.codelutin.com/issues/2032) - existingCombo.setSelectedIndex(0); - existingCombo.hidePopup(); - getContext().getActionEngine().runAction(selectedAction); - } - } - - protected void initActionComboBox(JComboBox combo) { - combo.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); - combo.addMouseListener(TuttiUIUtil.GRAB_FOCUS_ON_ENTER_LISTENER); - } - - private static class ShowComboBoxPopupActions extends TimerTask { - private final JComboBox comboBox; - - public ShowComboBoxPopupActions(JComboBox comboBox) { - this.comboBox = comboBox; - } - - @Override - public void run() { - comboBox.showPopup(); - } - } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/actions/DeleteProtocolAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/actions/DeleteProtocolAction.java index c6d1ed9..c545cc3 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/actions/DeleteProtocolAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/actions/DeleteProtocolAction.java @@ -25,10 +25,10 @@ package fr.ifremer.tutti.ui.swing.content.home.actions; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIHandler; import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIModel; +import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -93,6 +93,13 @@ public class DeleteProtocolAction extends LongActionSupport<SelectCruiseUIModel, // set new list getModel().setProtocols(protocols); - getHandler().resetEditProtolAction(); + } + + @Override + public void postSuccessAction() { + + getHandler().resetComboBoxAction(getUI().getEditProtocolComboBox()); + super.postSuccessAction(); + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/actions/ExportProtocolAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/actions/ExportProtocolAction.java index 0ee390e..54d1341 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/actions/ExportProtocolAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/actions/ExportProtocolAction.java @@ -97,13 +97,16 @@ public class ExportProtocolAction extends LongActionSupport<SelectCruiseUIModel, getContext().getTuttiProtocolImportExportService(); service.exportProtocol(protocol, file); - getHandler().resetEditProtolAction(); } @Override public void postSuccessAction() { + + getHandler().resetComboBoxAction(getUI().getEditProtocolComboBox()); + super.postSuccessAction(); TuttiProtocol protocol = getModel().getProtocol(); sendMessage(t("tutti.exportProtocol.action.success", protocol.getName(), file.getName())); + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.css index c122a1b..327477b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.css +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.css @@ -36,8 +36,7 @@ } #speciesActionComboBox { - model: {SwingUtil.newComboModel(exportSpeciesExampleButton, exportExistingSpeciesButton, importSpeciesButton, replaceSpeciesButton)}; - renderer: {new ActionListCellRenderer()}; + _comboboxActions: {Arrays.asList(exportSpeciesExampleButton, exportExistingSpeciesButton, importSpeciesButton, replaceSpeciesButton)}; } #exportSpeciesExampleButton { @@ -81,8 +80,7 @@ } #vesselActionComboBox { - model: {SwingUtil.newComboModel(exportVesselExampleButton, exportExistingVesselButton, importVesselButton, replaceVesselButton)}; - renderer: {new ActionListCellRenderer()}; + _comboboxActions: {Arrays.asList(exportVesselExampleButton, exportExistingVesselButton, importVesselButton, replaceVesselButton)}; } #exportVesselExampleButton { @@ -126,8 +124,7 @@ } #gearActionComboBox { - model: {SwingUtil.newComboModel(exportGearExampleButton, exportExistingGearButton, importGearButton, replaceGearButton)}; - renderer: {new ActionListCellRenderer()}; + _comboboxActions: {Arrays.asList(exportGearExampleButton, exportExistingGearButton, importGearButton, replaceGearButton)}; } #exportGearExampleButton { @@ -171,8 +168,7 @@ } #personActionComboBox { - model: {SwingUtil.newComboModel(exportPersonExampleButton, exportExistingPersonButton, importPersonButton, replacePersonButton)}; - renderer: {new ActionListCellRenderer()}; + _comboboxActions: {Arrays.asList(exportPersonExampleButton, exportExistingPersonButton, importPersonButton, replacePersonButton)}; } #exportExistingPersonButton { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.jaxx index 7428d89..ed8530c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.jaxx @@ -29,7 +29,8 @@ fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.util.TuttiUIUtil - org.nuiton.jaxx.application.swing.util.ActionListCellRenderer + + java.util.Arrays static org.nuiton.i18n.I18n.t </import> @@ -70,10 +71,7 @@ <JLabel id='speciesLabel'/> </cell> <cell> - <JComboBox id='speciesActionComboBox' - onMouseEntered='speciesActionComboBox.showPopup()' - onMouseClicked='handler.startExportSpeciesAction(event)' - onActionPerformed='handler.startExportSpeciesAction(event)'/> + <JComboBox id='speciesActionComboBox'/> </cell> </row> @@ -88,10 +86,7 @@ <JLabel id='vesselLabel'/> </cell> <cell> - <JComboBox id='vesselActionComboBox' - onMouseEntered='vesselActionComboBox.showPopup()' - onMouseClicked='handler.startExportVesselsAction(event)' - onActionPerformed='handler.startExportVesselsAction(event)'/> + <JComboBox id='vesselActionComboBox'/> </cell> </row> @@ -106,10 +101,7 @@ <JLabel id='gearLabel'/> </cell> <cell> - <JComboBox id='gearActionComboBox' - onMouseEntered='gearActionComboBox.showPopup()' - onMouseClicked='handler.startExportGearsAction(event)' - onActionPerformed='handler.startExportGearsAction(event)'/> + <JComboBox id='gearActionComboBox'/> </cell> </row> @@ -124,10 +116,7 @@ <JLabel id='personLabel'/> </cell> <cell> - <JComboBox id='personActionComboBox' - onMouseEntered='personActionComboBox.showPopup()' - onMouseClicked='handler.startExportPersonsAction(event)' - onActionPerformed='handler.startExportPersonsAction(event)'/> + <JComboBox id='personActionComboBox'/> </cell> </row> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java index 2c3638b..8884d60 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java @@ -27,17 +27,11 @@ import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.AbstractButton; -import javax.swing.JButton; -import javax.swing.JComboBox; import javax.swing.JComponent; -import java.awt.event.ActionEvent; -import java.awt.event.MouseEvent; import java.util.List; /** @@ -80,10 +74,6 @@ public class ManageTemporaryReferentialUIHandler extends AbstractTuttiUIHandler< initUI(ui); - initActionComboBox(ui.getSpeciesActionComboBox()); - initActionComboBox(ui.getVesselActionComboBox()); - initActionComboBox(ui.getGearActionComboBox()); - initActionComboBox(ui.getPersonActionComboBox()); } @Override @@ -103,104 +93,4 @@ public class ManageTemporaryReferentialUIHandler extends AbstractTuttiUIHandler< return null; } - - protected boolean resetExportSpeciesAction; - - protected boolean resetExportVesselsAction; - - protected boolean resetExportGearsAction; - - protected boolean resetExportPersonsAction; - - public void resetExportSpeciesAction() { - resetExportSpeciesAction = true; - try { - ui.getSpeciesActionComboBox().setSelectedIndex(0); - } finally { - resetExportSpeciesAction = false; - } - } - - public void resetExportVesselsAction() { - resetExportVesselsAction = true; - try { - ui.getVesselActionComboBox().setSelectedIndex(0); - } finally { - resetExportVesselsAction = false; - } - } - - public void resetExportGearsAction() { - resetExportGearsAction = true; - try { - ui.getGearActionComboBox().setSelectedIndex(0); - } finally { - resetExportGearsAction = false; - } - } - - public void resetExportPersonAction() { - resetExportPersonsAction = true; - try { - ui.getPersonActionComboBox().setSelectedIndex(0); - } finally { - resetExportPersonsAction = false; - } - } - - public void startExportSpeciesAction(MouseEvent event) { - startComboFirstAction(event); - } - - public void startExportSpeciesAction(ActionEvent event) { - startEditAction(!resetExportSpeciesAction, event); - } - - public void startExportVesselsAction(MouseEvent event) { - startComboFirstAction(event); - } - - public void startExportVesselsAction(ActionEvent event) { - startEditAction(!resetExportVesselsAction, event); - } - - public void startExportGearsAction(MouseEvent event) { - startComboFirstAction(event); - } - - public void startExportGearsAction(ActionEvent event) { - startEditAction(!resetExportGearsAction, event); - } - - public void startExportPersonsAction(MouseEvent event) { - startComboFirstAction(event); - } - - public void startExportPersonsAction(ActionEvent event) { - startEditAction(!resetExportPersonsAction, event); - } - - protected void startComboFirstAction(MouseEvent event) { - JComboBox combo = (JComboBox) event.getSource(); - getContext().getActionEngine().runAction((AbstractButton) combo.getItemAt(0)); - } - - protected void startEditAction(boolean canEdit, ActionEvent event) { - if (canEdit) { - JComboBox existingCombo = (JComboBox) event.getSource(); - JButton selectedAction = (JButton) existingCombo.getSelectedItem(); - // hide popup before performing the action, otherwise, if the action - // opens a popup, the user must click a first time to hide the combobox - // popup to then interact with the popup opened by the action - // (see http://forge.codelutin.com/issues/2032) - existingCombo.setSelectedIndex(0); - existingCombo.hidePopup(); - getContext().getActionEngine().runAction(selectedAction); - } - } - - protected void initActionComboBox(JComboBox combo) { - combo.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); - combo.addMouseListener(TuttiUIUtil.GRAB_FOCUS_ON_ENTER_LISTENER); - } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporaryGearAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporaryGearAction.java index 8859419..c5d032c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporaryGearAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporaryGearAction.java @@ -24,10 +24,10 @@ package fr.ifremer.tutti.ui.swing.content.referential.actions; import com.google.common.base.Preconditions; import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; +import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -90,12 +90,14 @@ public class ExportExistingTemporaryGearAction extends LongActionSupport<ManageT ReferentialTemporaryGearService service = getContext().getReferentialTemporaryGearService(); service.exportExistingTemporaryGear(file); - getHandler().resetExportGearsAction(); } @Override public void postSuccessAction() { + + getHandler().resetComboBoxAction(getUI().getGearActionComboBox()); super.postSuccessAction(); sendMessage(t("tutti.manageTemporaryReferential.action.chooseExistingReferentialGearFile.export.success", file)); + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporaryPersonAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporaryPersonAction.java index 1f4a30f..c0713c4 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporaryPersonAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporaryPersonAction.java @@ -24,10 +24,10 @@ package fr.ifremer.tutti.ui.swing.content.referential.actions; import com.google.common.base.Preconditions; import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIHandler; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUIModel; +import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -91,12 +91,14 @@ public class ExportExistingTemporaryPersonAction extends LongActionSupport<Manag ReferentialTemporaryPersonService service = getContext().getReferentialTemporaryPersonService(); service.exportExistingTemporaryPerson(file); - getHandler().resetExportPersonAction(); } @Override public void postSuccessAction() { + + getHandler().resetComboBoxAction(getUI().getPersonActionComboBox()); super.postSuccessAction(); sendMessage(t("tutti.manageTemporaryReferential.action.chooseExistingReferentialPersonFile.export.success", file)); + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporarySpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporarySpeciesAction.java index b776dfb..c20a352 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporarySpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporarySpeciesAction.java @@ -90,12 +90,14 @@ public class ExportExistingTemporarySpeciesAction extends LongActionSupport<Mana ReferentialTemporarySpeciesService service = getContext().getReferentialTemporarySpeciesService(); service.exportExistingTemporarySpecies(file); - getHandler().resetExportSpeciesAction(); } @Override public void postSuccessAction() { + + getHandler().resetComboBoxAction(getUI().getSpeciesActionComboBox()); super.postSuccessAction(); sendMessage(t("tutti.manageTemporaryReferential.action.chooseExistingReferentialSpeciesFile.export.success", file)); + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporaryVesselAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporaryVesselAction.java index 7499e3f..a343ac7 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporaryVesselAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ExportExistingTemporaryVesselAction.java @@ -90,12 +90,14 @@ public class ExportExistingTemporaryVesselAction extends LongActionSupport<Manag ReferentialTemporaryVesselService service = getContext().getReferentialTemporaryVesselService(); service.exportExistingTemporaryVessel(file); - getHandler().resetExportVesselsAction(); } @Override public void postSuccessAction() { + + getHandler().resetComboBoxAction(getUI().getVesselActionComboBox()); super.postSuccessAction(); sendMessage(t("tutti.manageTemporaryReferential.action.chooseExistingReferentialVesselFile.export.success", file)); + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporaryGearAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporaryGearAction.java index 2d74181..1a180cf 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporaryGearAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporaryGearAction.java @@ -76,7 +76,7 @@ public class ImportTemporaryGearAction extends ImportTemporaryActionSupport<Gear reloadCruise(); reloadFishingOperation(); - getHandler().resetExportGearsAction(); + getHandler().resetComboBoxAction(getUI().getGearActionComboBox()); String title = t("tutti.manageTemporaryReferential.action.chooseReferentialGearFile.import.dialog.title"); String message = t("tutti.manageTemporaryReferential.action.chooseReferentialGearFile.import.dialog.message", diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporaryPersonAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporaryPersonAction.java index 992f7b5..c134149 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporaryPersonAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporaryPersonAction.java @@ -74,7 +74,7 @@ public class ImportTemporaryPersonAction extends ImportTemporaryActionSupport<Pe reloadCruise(); reloadFishingOperation(); - getHandler().resetExportPersonAction(); + getHandler().resetComboBoxAction(getUI().getPersonActionComboBox()); String title = t("tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.import.dialog.title"); String message = t("tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.import.dialog.message", diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporarySpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporarySpeciesAction.java index e06e89f..f9f0a7b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporarySpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporarySpeciesAction.java @@ -74,7 +74,7 @@ public class ImportTemporarySpeciesAction extends ImportTemporaryActionSupport<S getDataContext().resetSpecies(); reloadFishingOperation(); - getHandler().resetExportSpeciesAction(); + getHandler().resetComboBoxAction(getUI().getSpeciesActionComboBox()); String title = t("tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.import.dialog.title"); String message = t("tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.import.dialog.message", result.getNbRefAdded(), result.getNbRefUpdated(), result.getNbRefDeleted()); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporaryVesselAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporaryVesselAction.java index 035f298..dcfcffc 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporaryVesselAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/ImportTemporaryVesselAction.java @@ -75,7 +75,7 @@ public class ImportTemporaryVesselAction extends ImportTemporaryActionSupport<Ve reloadCruise(); reloadFishingOperation(); - getHandler().resetExportVesselsAction(); + getHandler().resetComboBoxAction(getUI().getVesselActionComboBox()); String title = t("tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.import.dialog.title"); String message = t("tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.import.dialog.message", diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporaryGearUIAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporaryGearUIAction.java index b70d8d0..6d2c283 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporaryGearUIAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporaryGearUIAction.java @@ -81,8 +81,10 @@ public class OpenReplaceTemporaryGearUIAction extends AbstractOpenReplaceTempora } @Override - public void doAction() throws Exception { - super.doAction(); - getHandler().resetExportGearsAction(); + public void postSuccessAction() { + + getHandler().resetComboBoxAction(getUI().getGearActionComboBox()); + super.postSuccessAction(); + } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporaryPersonUIAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporaryPersonUIAction.java index e9d518f..9f8e2cd 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporaryPersonUIAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporaryPersonUIAction.java @@ -81,8 +81,10 @@ public class OpenReplaceTemporaryPersonUIAction extends AbstractOpenReplaceTempo } @Override - public void doAction() throws Exception { - super.doAction(); - getHandler().resetExportPersonAction(); + public void postSuccessAction() { + + getHandler().resetComboBoxAction(getUI().getPersonActionComboBox()); + super.postSuccessAction(); + } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporarySpeciesUIAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporarySpeciesUIAction.java index 9d22467..2645fbc 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporarySpeciesUIAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporarySpeciesUIAction.java @@ -81,8 +81,10 @@ public class OpenReplaceTemporarySpeciesUIAction extends AbstractOpenReplaceTemp } @Override - public void doAction() throws Exception { - super.doAction(); - getHandler().resetExportSpeciesAction(); + public void postSuccessAction() { + + getHandler().resetComboBoxAction(getUI().getSpeciesActionComboBox()); + super.postSuccessAction(); + } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporaryVesselUIAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporaryVesselUIAction.java index 5c2e168..9228c29 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporaryVesselUIAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/actions/OpenReplaceTemporaryVesselUIAction.java @@ -81,8 +81,10 @@ public class OpenReplaceTemporaryVesselUIAction extends AbstractOpenReplaceTempo } @Override - public void doAction() throws Exception { - super.doAction(); - getHandler().resetExportVesselsAction(); + public void postSuccessAction() { + + getHandler().resetComboBoxAction(getUI().getVesselActionComboBox()); + super.postSuccessAction(); + } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java index fbb343e..c91f60c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java @@ -37,6 +37,7 @@ import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.MainUI; import fr.ifremer.tutti.ui.swing.content.MainUIHandler; +import fr.ifremer.tutti.ui.swing.util.actions.ShowComboBoxPopupActions; import fr.ifremer.tutti.ui.swing.util.attachment.ButtonAttachment; import fr.ifremer.tutti.ui.swing.util.computable.ComputableDataEditor; import fr.ifremer.tutti.util.Weights; @@ -58,12 +59,16 @@ import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; import org.nuiton.jaxx.application.swing.action.ApplicationActionUI; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; +import org.nuiton.jaxx.application.swing.util.ActionListCellRenderer; import org.nuiton.jaxx.widgets.number.NumberEditor; import org.nuiton.validator.bean.simple.SimpleBeanValidator; import javax.swing.AbstractButton; import javax.swing.Action; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JButton; import javax.swing.JCheckBox; +import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JMenuItem; @@ -80,10 +85,15 @@ import javax.swing.table.TableColumnModel; import java.awt.Color; import java.awt.Component; import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.text.DecimalFormat; +import java.util.List; import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -316,11 +326,94 @@ public abstract class AbstractTuttiUIHandler<M, UI extends TuttiUI<M, ?>> extend } else if (component instanceof ButtonAttachment) { initButtonAttachment((ButtonAttachment) component); + } else if (component instanceof JComboBox) { + + initComboBox((JComboBox) component); } else { super.initUIComponent(component); } } + private void initComboBox(JComboBox<?> comboBox) { + + super.initUIComponent(comboBox); + List<JButton> comboboxActions = (List<JButton>) comboBox.getClientProperty("comboboxActions"); + if (comboboxActions != null) { + + comboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); + comboBox.addMouseListener(TuttiUIUtil.GRAB_FOCUS_ON_ENTER_LISTENER); + + comboBox.setRenderer(new ActionListCellRenderer()); + comboBox.setModel(new DefaultComboBoxModel(comboboxActions.toArray())); + comboBox.addPropertyChangeListener("enabled", new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + JComboBox source = (JComboBox) evt.getSource(); + source.setFocusable((Boolean) evt.getNewValue()); + } + }); + comboBox.addMouseListener(new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent e) { + + JComboBox source = (JComboBox) e.getSource(); + + if (source.isEnabled()) { + + getContext().getTimer().schedule(new ShowComboBoxPopupActions(source), 300); + + } + + } + + @Override + public void mouseClicked(MouseEvent e) { + + JComboBox source = (JComboBox) e.getSource(); + if (source.isEnabled()) { + + AbstractButton action = (AbstractButton) source.getItemAt(0); + getContext().getActionEngine().runAction(action); + + } + + } + }); + + comboBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + + JComboBox source = (JComboBox) e.getSource(); + Boolean canEdit = (Boolean) source.getClientProperty("_canEdit_"); + if (canEdit == null || canEdit) { + + JButton selectedAction = (JButton) source.getSelectedItem(); + // hide popup before performing the action, otherwise, if the action + // opens a popup, the user must click a first time to hide the combobox + // popup to then interact with the popup opened by the action + // (see http://forge.codelutin.com/issues/2032) + source.setSelectedIndex(0); + source.hidePopup(); + getContext().getActionEngine().runAction(selectedAction); + + } + } + + }); + } + } + + public void resetComboBoxAction(JComboBox source) { + source.putClientProperty("_canEdit_", false); + + try { + source.setSelectedIndex(0); + } finally { + source.putClientProperty("_canEdit_", null); + } + } + protected void initJXTitledPanel(JXTitledPanel jTextField) { // Boolean boldFont = (Boolean) jTextField.getClientProperty("boldFont"); // if (boldFont!= null && boldFont) { @@ -430,6 +523,7 @@ public abstract class AbstractTuttiUIHandler<M, UI extends TuttiUI<M, ?>> extend } } + public String buildReminderLabelTitle(Species species, Iterable<SampleCategory<?>> categories, String prefix, diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/actions/ShowComboBoxPopupActions.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/actions/ShowComboBoxPopupActions.java new file mode 100644 index 0000000..62f3ca7 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/actions/ShowComboBoxPopupActions.java @@ -0,0 +1,25 @@ +package fr.ifremer.tutti.ui.swing.util.actions; + +import javax.swing.JComboBox; +import java.util.TimerTask; + +/** + * Created on 4/4/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.4 + */ +public class ShowComboBoxPopupActions extends TimerTask { + + private final JComboBox comboBox; + + public ShowComboBoxPopupActions(JComboBox comboBox) { + this.comboBox = comboBox; + } + + @Override + public void run() { + comboBox.showPopup(); + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 6e9e8f9eb7221a3d0e1b90a6a978bebc173d7a99 Merge: b6c5af7 3262af7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 4 09:37:26 2015 +0200 fixes #6901: [TECH] Uniformisation du comportement des listes d'actions Merge branch 'feature/6901' into develop .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 15 +++ .../tutti/ui/swing/content/home/SelectCruiseUI.css | 9 +- .../ui/swing/content/home/SelectCruiseUI.jaxx | 17 +--- .../swing/content/home/SelectCruiseUIHandler.java | 106 +------------------- .../content/home/actions/DeleteProtocolAction.java | 11 ++- .../content/home/actions/ExportProtocolAction.java | 5 +- .../referential/ManageTemporaryReferentialUI.css | 12 +-- .../referential/ManageTemporaryReferentialUI.jaxx | 23 ++--- .../ManageTemporaryReferentialUIHandler.java | 110 --------------------- .../actions/ExportExistingTemporaryGearAction.java | 6 +- .../ExportExistingTemporaryPersonAction.java | 6 +- .../ExportExistingTemporarySpeciesAction.java | 4 +- .../ExportExistingTemporaryVesselAction.java | 4 +- .../actions/ImportTemporaryGearAction.java | 2 +- .../actions/ImportTemporaryPersonAction.java | 2 +- .../actions/ImportTemporarySpeciesAction.java | 2 +- .../actions/ImportTemporaryVesselAction.java | 2 +- .../actions/OpenReplaceTemporaryGearUIAction.java | 8 +- .../OpenReplaceTemporaryPersonUIAction.java | 8 +- .../OpenReplaceTemporarySpeciesUIAction.java | 8 +- .../OpenReplaceTemporaryVesselUIAction.java | 8 +- .../ui/swing/util/AbstractTuttiUIHandler.java | 94 ++++++++++++++++++ .../util/actions/ShowComboBoxPopupActions.java | 25 +++++ 23 files changed, 205 insertions(+), 282 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm