Merge branch 'develop' of https://dev.e-taxonomy.eu/git/taxeditor into develop
authorKatja Luther <k.luther@bgbm.org>
Thu, 19 Nov 2015 10:16:26 +0000 (11:16 +0100)
committerKatja Luther <k.luther@bgbm.org>
Thu, 19 Nov 2015 10:16:26 +0000 (11:16 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/ListenToSelectionChangeContextMenu.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/SearchManager.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java

index d2006a41fbc349f0c76eaab763f9719d21da9e09..8783a5b65349e66bd8ca154020de15ef0374bd05 100644 (file)
@@ -1060,4 +1060,13 @@ public class TransientOccurenceService implements IOccurrenceService {
         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);
+    }
+
 }
index ba2b3168117fa00724603b78ea2823dda7670a34..95d3b939215a3751ee4284f09775142d35c8c6fe 100644 (file)
@@ -52,6 +52,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 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;
@@ -462,23 +463,28 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
         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());
         }
     }
 
index c68c8e5da2652c1ead735f597b2dcd6c32c17f7b..15fa005f198a9d33a78a4ba52b657ca0a4110706 100644 (file)
@@ -13,6 +13,7 @@ import org.eclipse.ui.PlatformUI;
 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.
@@ -37,6 +38,7 @@ public class ListenToSelectionChangeContextMenu extends CompoundContributionItem
                             else{
                                 item.setText("Link with taxon selection");
                             }
+                            item.setImage(ImageResources.getImage(ImageResources.SYNCED));
                             item.addSelectionListener(new SelectionAdapterExtension(derivateView));
                         }
                     }
index 66f714a87147fcdd77112130eec42e3f64b3cf35..e44c05689af1ea40601e1b3517d1c70985f8fb3d 100644 (file)
@@ -118,6 +118,8 @@ public class ImageResources {
        /** 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";
 
@@ -335,6 +337,8 @@ public class ImageResources {
                                "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,
index 8d4bf0e08bb2ba91867cc4cfc3e7d6dad551f0aa..2103ba8e8e05f54d66e752037b9223b688bdb754 100644 (file)
@@ -162,14 +162,6 @@ public class SearchManager {
         */
        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",
@@ -178,22 +170,8 @@ public class SearchManager {
                        "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);
index ad1ec3cf1198e5ad65c0372b6fdbb11960bd8355..3a7c48b0c54d2fae1242a5301fa0c2a6a81467c3 100644 (file)
@@ -37,6 +37,7 @@ import eu.etaxonomy.cdm.model.molecular.SingleRead;
 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;
@@ -60,6 +61,8 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
 
     private static Set<SingleRead> multiLinkSingleReads;
 
+    private static Map<DerivedUnit, List<DeterminationEvent>> determinationEvents;
+
     private static Map<DerivedUnit, List<SpecimenTypeDesignation>> typeDesignations;
 
     private ConversationHolder conversation;
@@ -235,6 +238,12 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
                         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();
@@ -257,9 +266,9 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
                 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;
@@ -270,6 +279,21 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
                         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
@@ -421,6 +445,16 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
             }
         }
         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){