bee0847cd56eaaefea0b08d133f697e140ed80f9
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / derivate / DerivateContentProvider.java
1 package eu.etaxonomy.taxeditor.editor.view.derivate;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.List;
6 import java.util.Set;
7
8 import org.eclipse.jface.viewers.ITreeContentProvider;
9 import org.eclipse.jface.viewers.Viewer;
10
11 import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
12 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
13 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
14 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
15 import eu.etaxonomy.taxeditor.editor.EditorUtil;
16
17 public class DerivateContentProvider implements ITreeContentProvider {
18
19 @Override
20 public void dispose() {
21 // TODO Auto-generated method stub
22
23 }
24
25 @Override
26 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
27 }
28
29 @Override
30 public Object[] getElements(Object inputElement) {
31 FieldUnit fieldUnit = null;
32 if(inputElement instanceof DerivateViewEditorInput){
33 fieldUnit = ((DerivateViewEditorInput) inputElement).getFieldUnit();
34 }
35 // return the parent FieldUnit if element is a DerivedUnit
36 else if(inputElement instanceof DerivedUnit){
37 fieldUnit = EditorUtil.getFieldUnit((DerivedUnit)inputElement);
38 }
39 else if(inputElement instanceof FieldUnit){
40 fieldUnit = (FieldUnit) inputElement;
41 // fieldUnit.getTitleCache();
42 }
43 if(fieldUnit!=null){
44 return Collections.singleton(fieldUnit).toArray();
45 }
46 else {
47 return Collections.EMPTY_LIST.toArray();
48 }
49 }
50
51 @Override
52 public Object[] getChildren(Object parentElement) {
53 if(parentElement instanceof DerivateViewEditorInput){
54 parentElement = ((DerivateViewEditorInput) parentElement).getFieldUnit();
55 }
56 if(parentElement instanceof SpecimenOrObservationBase){
57 return getDerivates((SpecimenOrObservationBase) parentElement).toArray();
58 }
59 return null;
60 }
61
62 @Override
63 public Object getParent(Object element) {
64 if(element instanceof DerivateViewEditorInput){
65 element = ((DerivateViewEditorInput) element).getFieldUnit();
66 }
67 if(element instanceof DerivedUnit){
68 DerivedUnit derivedUnit = (DerivedUnit)element;
69 return derivedUnit.getOriginalUnit();
70 }
71 return null;
72 }
73
74 @Override
75 public boolean hasChildren(Object element) {
76 if(element instanceof DerivateViewEditorInput){
77 element = ((DerivateViewEditorInput) element).getFieldUnit();
78 }
79 if(element instanceof SpecimenOrObservationBase){
80 SpecimenOrObservationBase specimenOrObservation = (SpecimenOrObservationBase)element;
81 for(DerivationEvent event:(Set<DerivationEvent>)specimenOrObservation.getDerivationEvents()){
82 if(!event.getDerivatives().isEmpty()){
83 return true;
84 }
85 }
86 }
87 return false;
88 }
89
90 private List<DerivedUnit> getDerivates(SpecimenOrObservationBase specimenOrObservation){
91 List<DerivedUnit> derivates = new ArrayList<DerivedUnit>();
92 for(DerivationEvent derivationEvent:(Set<DerivationEvent>)specimenOrObservation.getDerivationEvents()){
93 derivates.addAll(derivationEvent.getDerivatives());
94 }
95 return derivates;
96 }
97
98 }