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;
private static Set<SingleRead> multiLinkSingleReads;
private static Map<DerivedUnit, Collection<SpecimenTypeDesignation>> typeDesignations;
+
+ private static Map<Class<? extends Object>, ICdmFormatter> formatterMap = new HashMap<>();
private ConversationHolder conversation;
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,
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} */
}
public void updateLabelCache(Collection<SpecimenOrObservationBase<?>> rootElements) {
- DerivateLabelProvider.multiLinkSingleReads = new HashSet<SingleRead>();
- DerivateLabelProvider.typeDesignations = new HashMap<DerivedUnit, Collection<SpecimenTypeDesignation>>();
+ multiLinkSingleReads = new HashSet<SingleRead>();
+ typeDesignations = new HashMap<DerivedUnit, Collection<SpecimenTypeDesignation>>();
for(Entry<SingleRead, Collection<Sequence>> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){
if(entry.getValue().size()>1){
multiLinkSingleReads.add(entry.getKey());