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