From 8bdc427578cd0cc7eeaa4e845ced15a0b926d2f2 Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Wed, 2 Dec 2015 08:30:37 +0100 Subject: [PATCH] Refactoring type designation gathering according to model change --- .../TransientOccurenceService.java | 5 +++++ .../editor/view/derivate/DerivateView.java | 3 ++- .../derivateSearch/DerivateLabelProvider.java | 17 ++++++++++------- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java index d859b70db..9d43c0087 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java @@ -1101,5 +1101,10 @@ public class TransientOccurenceService implements IOccurrenceService { return defaultService.listTypeDesignations(arg0, arg1, arg2, arg3, arg4); } + @Override + public List getAllChildDerivatives(UUID arg0) { + return defaultService.getAllChildDerivatives(arg0); + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java index 25ebd89bd..106d180e4 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java @@ -238,7 +238,6 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa derivates = CdmStore.getService(IOccurrenceService.class).load(new ArrayList(derivativeUuids), SPECIMEN_INIT_STRATEGY); } updateRootEntities(derivates); - labelProvider.initCache(derivates); previousCdmEntitySession.bind(); } } @@ -268,6 +267,8 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa rootElements.add(specimen); } } + //FIXME: only init cache when elements have changed + labelProvider.initCache(rootElements); viewer.setInput(rootElements); } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java index d7cbfdddc..3579eff6f 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java @@ -354,7 +354,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider { boolean isType = false; //type designation extension - if(typeDesignations.get(derivedUnit)!=null){ + if(typeDesignations.get(derivedUnit)!=null && !typeDesignations.get(derivedUnit).isEmpty()){ isType = true; } if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.FieldUnit){ @@ -434,7 +434,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider { return multiLinkSingleReads; } - public void initCache(List derivates) { + public void initCache(Collection> rootElements) { DerivateLabelProvider.multiLinkSingleReads = new HashSet(); DerivateLabelProvider.typeDesignations = new HashMap>(); for(Entry> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){ @@ -442,13 +442,16 @@ public class DerivateLabelProvider extends ColumnLabelProvider { multiLinkSingleReads.add(entry.getKey()); } } - Collection derivedUnits = new ArrayList(); - for (SpecimenOrObservationBase specimenOrObservationBase : derivates) { - if(specimenOrObservationBase.isInstanceOf(DerivedUnit.class)){ - derivedUnits.add(HibernateProxyHelper.deproxy(specimenOrObservationBase, DerivedUnit.class)); + if(rootElements!=null){ + Collection derivedUnits = new ArrayList(); + for (SpecimenOrObservationBase specimenOrObservationBase : rootElements) { + derivedUnits.addAll(CdmStore.getService(IOccurrenceService.class).getAllChildDerivatives(specimenOrObservationBase.getUuid())); + if(specimenOrObservationBase.isInstanceOf(DerivedUnit.class)){ + derivedUnits.add(HibernateProxyHelper.deproxy(specimenOrObservationBase, DerivedUnit.class)); + } } + typeDesignations = CdmStore.getService(IOccurrenceService.class).listTypeDesignations(derivedUnits, null, null, null, null); } - typeDesignations = CdmStore.getService(IOccurrenceService.class).listTypeDesignations(derivedUnits, null, null, null, null); } } -- 2.34.1