private static Set<SingleRead> multiLinkSingleReads;
- private static Map<DerivedUnit, List<SpecimenTypeDesignation>> typeDesignations;
+ private static Map<DerivedUnit, Collection<SpecimenTypeDesignation>> typeDesignations;
private ConversationHolder conversation;
return null;
}
- /**
- * Refreshes cached label extensions
- * @param multiLinkSingleReads
- */
- public void refresh() {
- DerivateLabelProvider.multiLinkSingleReads = new HashSet<SingleRead>();
- for(Entry<SingleRead, Collection<Sequence>> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){
- if(entry.getValue().size()>1){
- multiLinkSingleReads.add(entry.getKey());
- }
- }
- DerivateLabelProvider.typeDesignations = new HashMap<DerivedUnit, List<SpecimenTypeDesignation>>();
- }
-
private static void addTypeDesignation(DerivedUnit derivedUnit, SpecimenTypeDesignation typeDesignation){
- List<SpecimenTypeDesignation> list = typeDesignations.get(derivedUnit);
+ Collection<SpecimenTypeDesignation> list = typeDesignations.get(derivedUnit);
if(list==null){
list = new ArrayList<SpecimenTypeDesignation>();
}
return multiLinkSingleReads;
}
+ public void initCache(List<SpecimenOrObservationBase> derivates) {
+ DerivateLabelProvider.multiLinkSingleReads = new HashSet<SingleRead>();
+ DerivateLabelProvider.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());
+ }
+ }
+ Collection<DerivedUnit> derivedUnits = new ArrayList<DerivedUnit>();
+ 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);
+ }
+
}