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());