Revision 0847fd74
Added by Patrick Plitzner almost 8 years ago
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java | ||
---|---|---|
927 | 927 |
return defaultService.listIndividualsAssociations(specimen, limit, start, orderHints, propertyPaths); |
928 | 928 |
} |
929 | 929 |
|
930 |
@Override |
|
931 |
public Collection<SpecimenTypeDesignation> listTypeDesignations(SpecimenOrObservationBase<?> specimen, |
|
932 |
Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) { |
|
933 |
return defaultService.listTypeDesignations(specimen, limit, start, orderHints, propertyPaths); |
|
934 |
} |
|
935 |
|
|
936 | 930 |
@Override |
937 | 931 |
public Collection<DescriptionBase<?>> listDescriptionsWithDescriptionSpecimen( |
938 | 932 |
SpecimenOrObservationBase<?> specimen, Integer limit, Integer start, List<OrderHint> orderHints, |
... | ... | |
1081 | 1075 |
return defaultService.listIndividualsAssociationTaxa(arg0, arg1, arg2, arg3, arg4); |
1082 | 1076 |
} |
1083 | 1077 |
|
1084 |
@Override |
|
1085 |
public Collection<TaxonBase<?>> listTypeDesignationTaxa(SpecimenOrObservationBase<?> arg0, Integer arg1, |
|
1086 |
Integer arg2, List<OrderHint> arg3, List<String> arg4) { |
|
1087 |
return defaultService.listTypeDesignationTaxa(arg0, arg1, arg2, arg3, arg4); |
|
1088 |
} |
|
1089 |
|
|
1090 | 1078 |
/** |
1091 | 1079 |
* {@inheritDoc} |
1092 | 1080 |
*/ |
... | ... | |
1095 | 1083 |
return defaultService.load(arg0, arg1); |
1096 | 1084 |
} |
1097 | 1085 |
|
1086 |
@Override |
|
1087 |
public Collection<TaxonBase<?>> listTypeDesignationTaxa(DerivedUnit arg0, Integer arg1, Integer arg2, |
|
1088 |
List<OrderHint> arg3, List<String> arg4) { |
|
1089 |
return defaultService.listTypeDesignationTaxa(arg0, arg1, arg2, arg3, arg4); |
|
1090 |
} |
|
1091 |
|
|
1092 |
@Override |
|
1093 |
public Map<DerivedUnit, Collection<SpecimenTypeDesignation>> listTypeDesignations(Collection<DerivedUnit> arg0, |
|
1094 |
Integer arg1, Integer arg2, List<OrderHint> arg3, List<String> arg4) { |
|
1095 |
return defaultService.listTypeDesignations(arg0, arg1, arg2, arg3, arg4); |
|
1096 |
} |
|
1097 |
|
|
1098 |
@Override |
|
1099 |
public Collection<SpecimenTypeDesignation> listTypeDesignations(DerivedUnit arg0, Integer arg1, Integer arg2, |
|
1100 |
List<OrderHint> arg3, List<String> arg4) { |
|
1101 |
return defaultService.listTypeDesignations(arg0, arg1, arg2, arg3, arg4); |
|
1102 |
} |
|
1103 |
|
|
1104 |
|
|
1098 | 1105 |
} |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java | ||
---|---|---|
238 | 238 |
derivates = CdmStore.getService(IOccurrenceService.class).load(new ArrayList(derivativeUuids), SPECIMEN_INIT_STRATEGY); |
239 | 239 |
} |
240 | 240 |
updateRootEntities(derivates); |
241 |
refreshTree(false);
|
|
241 |
labelProvider.initCache(derivates);
|
|
242 | 242 |
previousCdmEntitySession.bind(); |
243 | 243 |
} |
244 | 244 |
} |
... | ... | |
390 | 390 |
* Refreshes the derivate hierarchy tree |
391 | 391 |
*/ |
392 | 392 |
public void refreshTree(){ |
393 |
refreshTree(true); |
|
394 |
} |
|
395 |
|
|
396 |
/** |
|
397 |
* Refreshes the derivate hierarchy tree |
|
398 |
* @param refreshViewer if <code>true</code> then also the |
|
399 |
* viewer will be refreshed. This was implemented due to |
|
400 |
* performance reasons. If passing <code>false</code> |
|
401 |
* does what was expected use <code>false</code> preferably. |
|
402 |
*/ |
|
403 |
public void refreshTree(boolean refreshViewer){ |
|
404 |
//refresh typedesignations |
|
405 |
labelProvider.refresh(); |
|
406 |
if(refreshViewer){ |
|
407 |
viewer.refresh(); |
|
408 |
} |
|
393 |
viewer.refresh(); |
|
409 | 394 |
} |
410 | 395 |
|
411 | 396 |
//FIXME:Remoting hack to make this work for remoting |
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java | ||
---|---|---|
61 | 61 |
|
62 | 62 |
private static Set<SingleRead> multiLinkSingleReads; |
63 | 63 |
|
64 |
private static Map<DerivedUnit, List<SpecimenTypeDesignation>> typeDesignations;
|
|
64 |
private static Map<DerivedUnit, Collection<SpecimenTypeDesignation>> typeDesignations;
|
|
65 | 65 |
|
66 | 66 |
private ConversationHolder conversation; |
67 | 67 |
|
... | ... | |
421 | 421 |
return null; |
422 | 422 |
} |
423 | 423 |
|
424 |
/** |
|
425 |
* Refreshes cached label extensions |
|
426 |
* @param multiLinkSingleReads |
|
427 |
*/ |
|
428 |
public void refresh() { |
|
429 |
DerivateLabelProvider.multiLinkSingleReads = new HashSet<SingleRead>(); |
|
430 |
for(Entry<SingleRead, Collection<Sequence>> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){ |
|
431 |
if(entry.getValue().size()>1){ |
|
432 |
multiLinkSingleReads.add(entry.getKey()); |
|
433 |
} |
|
434 |
} |
|
435 |
DerivateLabelProvider.typeDesignations = new HashMap<DerivedUnit, List<SpecimenTypeDesignation>>(); |
|
436 |
} |
|
437 |
|
|
438 | 424 |
private static void addTypeDesignation(DerivedUnit derivedUnit, SpecimenTypeDesignation typeDesignation){ |
439 |
List<SpecimenTypeDesignation> list = typeDesignations.get(derivedUnit);
|
|
425 |
Collection<SpecimenTypeDesignation> list = typeDesignations.get(derivedUnit);
|
|
440 | 426 |
if(list==null){ |
441 | 427 |
list = new ArrayList<SpecimenTypeDesignation>(); |
442 | 428 |
} |
... | ... | |
448 | 434 |
return multiLinkSingleReads; |
449 | 435 |
} |
450 | 436 |
|
437 |
public void initCache(List<SpecimenOrObservationBase> derivates) { |
|
438 |
DerivateLabelProvider.multiLinkSingleReads = new HashSet<SingleRead>(); |
|
439 |
DerivateLabelProvider.typeDesignations = new HashMap<DerivedUnit, Collection<SpecimenTypeDesignation>>(); |
|
440 |
for(Entry<SingleRead, Collection<Sequence>> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){ |
|
441 |
if(entry.getValue().size()>1){ |
|
442 |
multiLinkSingleReads.add(entry.getKey()); |
|
443 |
} |
|
444 |
} |
|
445 |
Collection<DerivedUnit> derivedUnits = new ArrayList<DerivedUnit>(); |
|
446 |
for (SpecimenOrObservationBase specimenOrObservationBase : derivates) { |
|
447 |
if(specimenOrObservationBase.isInstanceOf(DerivedUnit.class)){ |
|
448 |
derivedUnits.add(HibernateProxyHelper.deproxy(specimenOrObservationBase, DerivedUnit.class)); |
|
449 |
} |
|
450 |
} |
|
451 |
typeDesignations = CdmStore.getService(IOccurrenceService.class).listTypeDesignations(derivedUnits, null, null, null, null); |
|
452 |
} |
|
453 |
|
|
451 | 454 |
} |
Also available in: Unified diff
Tweak performance for typeDesignation cache in label provider