Project

General

Profile

Download (3.2 KB) Statistics
| Branch: | Tag: | Revision:
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
	    SpecimenOrObservationBase<?> specimen = null;
32
	    if(inputElement instanceof DerivateViewEditorInput){
33
	        inputElement = ((DerivateViewEditorInput) inputElement).getDerivate();
34
	    }
35

    
36
	    // return the parent FieldUnit if element is a DerivedUnit
37
	    if(inputElement instanceof DerivedUnit){
38
	        specimen = EditorUtil.getFieldUnit((DerivedUnit)inputElement);
39
	    }
40
	    else if(inputElement instanceof FieldUnit){
41
	        specimen = (FieldUnit) inputElement;
42
	    }
43
	    if(specimen!=null){
44
	        return Collections.singleton(specimen).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).getDerivate();
55
	    }
56

    
57
	    if(parentElement instanceof SpecimenOrObservationBase){
58
	        return getDerivates((SpecimenOrObservationBase) parentElement).toArray();
59
	    }
60
	    return null;
61
	}
62

    
63
	@Override
64
	public Object getParent(Object element) {
65
        if(element instanceof DerivateViewEditorInput){
66
            element = ((DerivateViewEditorInput) element).getDerivate();
67
	    }
68

    
69
        if(element instanceof FieldUnit){
70
            return element;
71
        }
72
        else if(element instanceof DerivedUnit){
73
	        DerivedUnit derivedUnit = (DerivedUnit)element;
74
	        return derivedUnit.getOriginalUnit();
75
	    }
76
		return null;
77
	}
78

    
79
	@Override
80
	public boolean hasChildren(Object element) {
81
        if(element instanceof DerivateViewEditorInput){
82
            element = ((DerivateViewEditorInput) element).getDerivate();
83
	    }
84

    
85
	    if(element instanceof SpecimenOrObservationBase){
86
	        SpecimenOrObservationBase specimenOrObservation = (SpecimenOrObservationBase)element;
87
	        for(DerivationEvent event:(Set<DerivationEvent>)specimenOrObservation.getDerivationEvents()){
88
	            if(!event.getDerivatives().isEmpty()){
89
	                return true;
90
	            }
91
	        }
92
	    }
93
		return false;
94
	}
95

    
96
	private List<DerivedUnit> getDerivates(SpecimenOrObservationBase specimenOrObservation){
97
	    List<DerivedUnit> derivates = new ArrayList<DerivedUnit>();
98
	    for(DerivationEvent derivationEvent:(Set<DerivationEvent>)specimenOrObservation.getDerivationEvents()){
99
	        derivates.addAll(derivationEvent.getDerivatives());
100
	    }
101
	    return derivates;
102
	}
103

    
104
}
(2-2/5)