From: p.plitzner
Date: Mon, 22 Feb 2016 17:07:54 +0000 (+0100)
Subject: Cache cdm formatter in DerivateLabelProvider
X-Git-Tag: 4.0.0^2~133
X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/3f476989906ceba9c5fcf33d1949830871f1197a
Cache cdm formatter in DerivateLabelProvider
---
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 42d538a0c..980a464f3 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
@@ -28,6 +28,7 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
import eu.etaxonomy.cdm.format.CdmFormatterFactory;
+import eu.etaxonomy.cdm.format.ICdmFormatter;
import eu.etaxonomy.cdm.format.ICdmFormatter.FormatKey;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.CdmBase;
@@ -62,6 +63,8 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
private static Set multiLinkSingleReads;
private static Map> typeDesignations;
+
+ private static Map, ICdmFormatter> formatterMap = new HashMap<>();
private ConversationHolder conversation;
@@ -135,7 +138,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
if(element instanceof TreeNode){
element = ((TreeNode) element).getValue();
}
- return CdmFormatterFactory.format(element,
+ FormatKey[] formatKeys = {
FormatKey.GATHERING_COUNTRY, FormatKey.SPACE,
FormatKey.GATHERING_LOCALITY_TEXT, FormatKey.SPACE,
FormatKey.GATHERING_DATE, FormatKey.SPACE,
@@ -150,7 +153,13 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
FormatKey.AMPLIFICATION_LABEL, FormatKey.SPACE,
FormatKey.MEDIA_TITLE, FormatKey.SPACE,
FormatKey.MEDIA_ARTIST, FormatKey.SPACE
- );
+ };
+ ICdmFormatter formatter = formatterMap.get(element.getClass());
+ if(formatter==null){
+ formatter = CdmFormatterFactory.getFormatter(element, formatKeys);
+ formatterMap.put(element.getClass(), formatter);
+ }
+ return formatter.format(element);
}
/** {@inheritDoc} */
@@ -432,8 +441,8 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
}
public void updateLabelCache(Collection> rootElements) {
- DerivateLabelProvider.multiLinkSingleReads = new HashSet();
- DerivateLabelProvider.typeDesignations = new HashMap>();
+ multiLinkSingleReads = new HashSet();
+ typeDesignations = new HashMap>();
for(Entry> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){
if(entry.getValue().size()>1){
multiLinkSingleReads.add(entry.getKey());