From: Patrick Plitzner Date: Tue, 1 Dec 2015 17:19:41 +0000 (+0100) Subject: Tweak performance for typeDesignation cache in label provider X-Git-Tag: 3.12.0^2~38 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/0847fd7468dc76911c81b6ae30a2afa5a154022d Tweak performance for typeDesignation cache in label provider --- 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 40481a91f..d859b70db 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 @@ -927,12 +927,6 @@ public class TransientOccurenceService implements IOccurrenceService { return defaultService.listIndividualsAssociations(specimen, limit, start, orderHints, propertyPaths); } - @Override - public Collection listTypeDesignations(SpecimenOrObservationBase specimen, - Integer limit, Integer start, List orderHints, List propertyPaths) { - return defaultService.listTypeDesignations(specimen, limit, start, orderHints, propertyPaths); - } - @Override public Collection> listDescriptionsWithDescriptionSpecimen( SpecimenOrObservationBase specimen, Integer limit, Integer start, List orderHints, @@ -1081,12 +1075,6 @@ public class TransientOccurenceService implements IOccurrenceService { return defaultService.listIndividualsAssociationTaxa(arg0, arg1, arg2, arg3, arg4); } - @Override - public Collection> listTypeDesignationTaxa(SpecimenOrObservationBase arg0, Integer arg1, - Integer arg2, List arg3, List arg4) { - return defaultService.listTypeDesignationTaxa(arg0, arg1, arg2, arg3, arg4); - } - /** * {@inheritDoc} */ @@ -1095,4 +1083,23 @@ public class TransientOccurenceService implements IOccurrenceService { return defaultService.load(arg0, arg1); } + @Override + public Collection> listTypeDesignationTaxa(DerivedUnit arg0, Integer arg1, Integer arg2, + List arg3, List arg4) { + return defaultService.listTypeDesignationTaxa(arg0, arg1, arg2, arg3, arg4); + } + + @Override + public Map> listTypeDesignations(Collection arg0, + Integer arg1, Integer arg2, List arg3, List arg4) { + return defaultService.listTypeDesignations(arg0, arg1, arg2, arg3, arg4); + } + + @Override + public Collection listTypeDesignations(DerivedUnit arg0, Integer arg1, Integer arg2, + List arg3, List arg4) { + return defaultService.listTypeDesignations(arg0, arg1, arg2, arg3, arg4); + } + + } 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 811c1e334..25ebd89bd 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,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa derivates = CdmStore.getService(IOccurrenceService.class).load(new ArrayList(derivativeUuids), SPECIMEN_INIT_STRATEGY); } updateRootEntities(derivates); - refreshTree(false); + labelProvider.initCache(derivates); previousCdmEntitySession.bind(); } } @@ -390,22 +390,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa * Refreshes the derivate hierarchy tree */ public void refreshTree(){ - refreshTree(true); - } - - /** - * Refreshes the derivate hierarchy tree - * @param refreshViewer if true then also the - * viewer will be refreshed. This was implemented due to - * performance reasons. If passing false - * does what was expected use false preferably. - */ - public void refreshTree(boolean refreshViewer){ - //refresh typedesignations - labelProvider.refresh(); - if(refreshViewer){ - viewer.refresh(); - } + viewer.refresh(); } //FIXME:Remoting hack to make this work for remoting 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 888a18ed3..d7cbfdddc 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 @@ -61,7 +61,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider { private static Set multiLinkSingleReads; - private static Map> typeDesignations; + private static Map> typeDesignations; private ConversationHolder conversation; @@ -421,22 +421,8 @@ public class DerivateLabelProvider extends ColumnLabelProvider { return null; } - /** - * Refreshes cached label extensions - * @param multiLinkSingleReads - */ - public void refresh() { - DerivateLabelProvider.multiLinkSingleReads = new HashSet(); - for(Entry> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){ - if(entry.getValue().size()>1){ - multiLinkSingleReads.add(entry.getKey()); - } - } - DerivateLabelProvider.typeDesignations = new HashMap>(); - } - private static void addTypeDesignation(DerivedUnit derivedUnit, SpecimenTypeDesignation typeDesignation){ - List list = typeDesignations.get(derivedUnit); + Collection list = typeDesignations.get(derivedUnit); if(list==null){ list = new ArrayList(); } @@ -448,4 +434,21 @@ public class DerivateLabelProvider extends ColumnLabelProvider { return multiLinkSingleReads; } + public void initCache(List derivates) { + DerivateLabelProvider.multiLinkSingleReads = new HashSet(); + DerivateLabelProvider.typeDesignations = new HashMap>(); + for(Entry> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){ + if(entry.getValue().size()>1){ + multiLinkSingleReads.add(entry.getKey()); + } + } + Collection derivedUnits = new ArrayList(); + for (SpecimenOrObservationBase specimenOrObservationBase : derivates) { + if(specimenOrObservationBase.isInstanceOf(DerivedUnit.class)){ + derivedUnits.add(HibernateProxyHelper.deproxy(specimenOrObservationBase, DerivedUnit.class)); + } + } + typeDesignations = CdmStore.getService(IOccurrenceService.class).listTypeDesignations(derivedUnits, null, null, null, null); + } + }