return defaultService.list(arg0, arg1, arg2, arg3, arg4, arg5);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Collection<DeterminationEvent> listDeterminationEvents(SpecimenOrObservationBase<?> arg0, Integer arg1,
+ Integer arg2, List<OrderHint> arg3, List<String> arg4) {
+ return defaultService.listDeterminationEvents(arg0, arg1, arg2, arg3, arg4);
+ }
+
}
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.Messages;
+import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
import eu.etaxonomy.taxeditor.editor.view.derivate.searchFilter.DerivateSearchCompositeController;
import eu.etaxonomy.taxeditor.model.IContextListener;
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
if(viewer.getTree().isDisposed()){
return;
}
- if(listenToSelectionChange && selection instanceof IStructuredSelection){
- Object selectedElement = ((IStructuredSelection) selection).getFirstElement();
- if(selectedElement instanceof CdmBase){
- if(((CdmBase) selectedElement).isInstanceOf(TaxonNode.class)){
- selectedTaxon = HibernateProxyHelper.deproxy(selectedElement, TaxonNode.class).getTaxon();
- }
- else if(((CdmBase) selectedElement).isInstanceOf(Taxon.class)){
- selectedTaxon = HibernateProxyHelper.deproxy(selectedElement, Taxon.class);
- }
- Collection<SpecimenOrObservationBase> fieldUnits = CdmStore.getService(IOccurrenceService.class).listFieldUnitsByAssociatedTaxon(selectedTaxon, null, null);
- Collection<UUID> uuids = new HashSet<UUID>();
- for (SpecimenOrObservationBase specimenOrObservationBase : fieldUnits) {
- uuids.add(specimenOrObservationBase.getUuid());
+ if(listenToSelectionChange){
+ if(part instanceof MultiPageTaxonEditor){
+ selectedTaxon = ((MultiPageTaxonEditor) part).getTaxon();
+ }
+ else if(selection instanceof IStructuredSelection){
+ Object selectedElement = ((IStructuredSelection) selection).getFirstElement();
+ if(selectedElement instanceof CdmBase){
+ if(((CdmBase) selectedElement).isInstanceOf(TaxonNode.class)){
+ selectedTaxon = HibernateProxyHelper.deproxy(selectedElement, TaxonNode.class).getTaxon();
+ }
+ else if(((CdmBase) selectedElement).isInstanceOf(Taxon.class)){
+ selectedTaxon = HibernateProxyHelper.deproxy(selectedElement, Taxon.class);
+ }
}
- updateRootEntities(uuids);
- setPartName("Derivative Editor: " + selectedTaxon.getName());
}
+ Collection<SpecimenOrObservationBase> fieldUnits = CdmStore.getService(IOccurrenceService.class).listFieldUnitsByAssociatedTaxon(selectedTaxon, null, null);
+ Collection<UUID> uuids = new HashSet<UUID>();
+ for (SpecimenOrObservationBase specimenOrObservationBase : fieldUnits) {
+ uuids.add(specimenOrObservationBase.getUuid());
+ }
+ updateRootEntities(uuids);
+ setPartName("Derivative Editor: " + selectedTaxon.getName());
}
}
import org.eclipse.ui.actions.CompoundContributionItem;
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.model.ImageResources;
/**
* Context menu for the SingleReads in the derivate hierarchy.
else{
item.setText("Link with taxon selection");
}
+ item.setImage(ImageResources.getImage(ImageResources.SYNCED));
item.addSelectionListener(new SelectionAdapterExtension(derivateView));
}
}
/** Constant <code>LOCK_ICON="locked"</code> */
public static final String LOCK_ICON = "lock";
+ public static final String SYNCED = "synced";
+
/** Constant <code>LOCK_OPEN_ICON="lock_open"</code> */
public static final String LOCK_OPEN_ICON = "lock_open";
"prj_obj.gif");
registerImage(registry, LOCK_ICON,
"lock.png");
+ registerImage(registry, SYNCED,
+ "synced.gif");
registerImage(registry, LOCK_OPEN_ICON,
"lock_open.png");
registerImage(registry, SWITCH_VIEW_TYPE,
*/
public List<SpecimenOrObservationBase> findOccurrences(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator, boolean showFieldUnits){
List<SpecimenOrObservationBase> records = new ArrayList<SpecimenOrObservationBase>();
- if(configurator.getClazz()==null){
- if(showFieldUnits){
- configurator.setClazz(SpecimenOrObservationBase.class);
- }
- else{
- configurator.setClazz(DerivedUnit.class);
- }
- }
final List<String> OCCURRENCE_INIT_STRATEGY = Arrays.asList(new String[] {
"collection",
"descriptions",
"derivedFrom.originals"
});
configurator.setPropertyPaths(OCCURRENCE_INIT_STRATEGY);
- if(configurator.getClazz().equals(SpecimenOrObservationBase.class)){
- //get FieldUnits + DerivedUnits
- configurator.setClazz(DerivedUnit.class);
- int derivedUnitCount = CdmStore.getService(IOccurrenceService.class).countOccurrences(configurator);
- configurator.setClazz(FieldUnit.class);
- int fieldUnitCount = CdmStore.getService(IOccurrenceService.class).countOccurrences(configurator);
-
- if(checkLargeResult(derivedUnitCount+fieldUnitCount)){
- configurator.setClazz(DerivedUnit.class);
- records.addAll(CdmStore.getService(IOccurrenceService.class).findByTitle(configurator).getRecords());
- configurator.setClazz(FieldUnit.class);
- records.addAll(CdmStore.getService(IOccurrenceService.class).findByTitle(configurator).getRecords());
- }
- }
- else if(checkLargeResult(CdmStore.getService(IOccurrenceService.class).countOccurrences(configurator))){
+ if(checkLargeResult(CdmStore.getService(IOccurrenceService.class).countOccurrences(configurator))){
records = CdmStore.getService(IOccurrenceService.class).findByTitle(configurator).getRecords();
}
addUuidSearchResults(records, configurator, IOccurrenceService.class);
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
private static Set<SingleRead> multiLinkSingleReads;
+ private static Map<DerivedUnit, List<DeterminationEvent>> determinationEvents;
+
private static Map<DerivedUnit, List<SpecimenTypeDesignation>> typeDesignations;
private ConversationHolder conversation;
addTypeDesignation(derivedUnit, specimenTypeDesignation);
}
}
+ //check for determination events
+ if(determinationEvents.get(derivedUnit)==null){
+ for (DeterminationEvent determinationEvent : CdmStore.getService(IOccurrenceService.class).listDeterminationEvents(derivedUnit, null, null, null, null)) {
+ addDeterminationEvent(derivedUnit, determinationEvent);
+ }
+ }
//java.util.Collection<FieldUnit> fieldUnits = CdmStore.getService(IOccurrenceService.class).getFieldUnits(derivedUnit.getUuid());
//TODO : This is not generic anymore for performance reasons
Set<SpecimenOrObservationBase> originals = derivedUnit.getOriginals();
String mostSignificantIdentifier = derivedUnit.getMostSignificantIdentifier();
label += mostSignificantIdentifier!=null?mostSignificantIdentifier+separator:emptyString;
//type designation extension
- List<SpecimenTypeDesignation> list = typeDesignations.get(derivedUnit);
- if(list!=null){
- for (SpecimenTypeDesignation specimenTypeDesignation : list) {
+ List<SpecimenTypeDesignation> typeDesignationList = typeDesignations.get(derivedUnit);
+ if(typeDesignationList!=null){
+ for (SpecimenTypeDesignation specimenTypeDesignation : typeDesignationList) {
label += "("+specimenTypeDesignation.getTypeStatus()+" of ";
for (TaxonNameBase taxonNameBase : specimenTypeDesignation.getTypifiedNames()) {
label += taxonNameBase+separator;
label += ")";
}
}
+ //determination event extension
+ List<DeterminationEvent> determinationEventList = determinationEvents.get(derivedUnit);
+ if(determinationEventList!=null){
+ for (DeterminationEvent determinationEvent : determinationEventList) {
+ label += "(";
+ if(determinationEvent.getTaxon()!=null){
+ label += "Determined as "+determinationEvent.getTaxon();
+ }
+
+ if(label.endsWith(separator)){
+ label = label.substring(0, label.length()-separator.length());
+ }
+ label += ")";
+ }
+ }
}
else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.TissueSample){
//TissueSample should only be created by using it's own class
}
}
DerivateLabelProvider.typeDesignations = new HashMap<DerivedUnit, List<SpecimenTypeDesignation>>();
+ DerivateLabelProvider.determinationEvents = new HashMap<DerivedUnit, List<DeterminationEvent>>();
+ }
+
+ private static void addDeterminationEvent(DerivedUnit derivedUnit, DeterminationEvent determinationEvent){
+ List<DeterminationEvent> list = determinationEvents.get(derivedUnit);
+ if(list==null){
+ list = new ArrayList<DeterminationEvent>();
+ }
+ list.add(determinationEvent);
+ determinationEvents.put(derivedUnit, list);
}
private static void addTypeDesignation(DerivedUnit derivedUnit, SpecimenTypeDesignation typeDesignation){