Merge branch 'master' into develop
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / derivateSearch / DerivateContentProvider.java
index 7c3c5e282c54d7469f27ebbc3597448b5731d0c8..65efef6d075eeec5e9cadf4f655ef02734a5e546 100644 (file)
@@ -4,13 +4,11 @@ import java.util.ArrayList;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.UUID;
 
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.TreeNode;
 import org.eclipse.jface.viewers.Viewer;
 
-import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
 import eu.etaxonomy.cdm.model.molecular.SingleRead;
@@ -18,35 +16,46 @@ import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
-import eu.etaxonomy.taxeditor.store.CdmStore;
 
 public class DerivateContentProvider implements ITreeContentProvider {
 
+    List<TreeNode> rootNodes;
+
        @Override
        public void dispose() {
                // TODO Auto-generated method stub
 
        }
 
+       public List<SpecimenOrObservationBase> getRootElements() {
+           List<SpecimenOrObservationBase> elements = new ArrayList<SpecimenOrObservationBase>();
+
+           if(rootNodes != null) {
+               for(TreeNode node : rootNodes) {
+                   elements.add((SpecimenOrObservationBase)node.getValue());
+               }
+           }
+           return elements;
+       }
+
        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
 
        @Override
        public Object[] getElements(Object inputElement) {
-           List<TreeNode> rootElements = new ArrayList<TreeNode>();
+           rootNodes = new ArrayList<TreeNode>();
            if(inputElement instanceof Set){
                for (Object o: (Set)inputElement) {
-                   if(o instanceof UUID){
-                       UUID uuid = (UUID)o;
-                       SpecimenOrObservationBase<?> rootElement = CdmStore.getService(IOccurrenceService.class).load(uuid);
+                   if(o instanceof SpecimenOrObservationBase){
+                       SpecimenOrObservationBase<?> rootElement = (SpecimenOrObservationBase<?>)o;
                        if(rootElement!=null){
-                           rootElements.add(new TreeNode(rootElement));
+                           rootNodes.add(new TreeNode(rootElement));
                        }
                    }
             }
            }
-           return rootElements.toArray();
+           return rootNodes.toArray();
        }
 
        @Override
@@ -66,7 +75,6 @@ public class DerivateContentProvider implements ITreeContentProvider {
                 node.setParent(currentnode);
                 children.add(node);
             }
-            return children.toArray();
         }
         else if(value instanceof Sequence){
             Set<SingleRead> singleReads = ((Sequence) value).getSingleReads();
@@ -77,7 +85,8 @@ public class DerivateContentProvider implements ITreeContentProvider {
             }
             return children.toArray();
         }
-        else if(value instanceof SpecimenOrObservationBase){
+
+        if(value instanceof SpecimenOrObservationBase){
                List<DerivedUnit> derivates = getDerivates((SpecimenOrObservationBase<?>) value);
                for (DerivedUnit derivedUnit:derivates) {
                 TreeNode node = new TreeNode(derivedUnit);
@@ -112,7 +121,8 @@ public class DerivateContentProvider implements ITreeContentProvider {
         else if(element instanceof Sequence){
             return !((Sequence)element).getSingleReads().isEmpty();
         }
-        else if(element instanceof SpecimenOrObservationBase){
+
+        if(element instanceof SpecimenOrObservationBase){
                SpecimenOrObservationBase<?> specimenOrObservation = (SpecimenOrObservationBase<?>)element;
                for(DerivationEvent event:specimenOrObservation.getDerivationEvents()){
                    if(!event.getDerivatives().isEmpty()){