Project

General

Profile

Download (3.28 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

    
16
public class DerivateContentProvider implements ITreeContentProvider {
17

    
18
	@Override
19
	public void dispose() {
20
		// TODO Auto-generated method stub
21

    
22
	}
23

    
24
	@Override
25
	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
26
	}
27

    
28
	@Override
29
	public Object[] getElements(Object inputElement) {
30
	    if(inputElement instanceof DerivateViewEditorInput){
31
	        inputElement = ((DerivateViewEditorInput) inputElement).getDerivate();
32
	    }
33
	    // return the parent FieldUnit if element is a DerivedUnit
34
	    if(inputElement instanceof DerivedUnit){
35
	        DerivedUnit derivedUnit = (DerivedUnit)inputElement;
36
	        for(SpecimenOrObservationBase original:derivedUnit.getOriginals()){
37
	          if(original instanceof FieldUnit){
38
	              return Collections.singletonList(original).toArray();
39
	          }
40
	          else{
41
	              return getElements(original);
42
	          }
43
	        }
44
	    }
45
	    else if(inputElement instanceof FieldUnit){
46
	        FieldUnit fieldUnit = (FieldUnit) inputElement;
47
	        fieldUnit.getTitleCache();
48
	        return Collections.singleton(fieldUnit).toArray();
49
	    }
50
		return Collections.EMPTY_LIST.toArray();
51
	}
52

    
53
	@Override
54
	public Object[] getChildren(Object parentElement) {
55
        if(parentElement instanceof DerivateViewEditorInput){
56
            parentElement = ((DerivateViewEditorInput) parentElement).getDerivate();
57
	    }
58
	    if(parentElement instanceof SpecimenOrObservationBase){
59
	        return getDerivates((SpecimenOrObservationBase) parentElement).toArray();
60
	    }
61
	    return null;
62
	}
63

    
64
	@Override
65
	public Object getParent(Object element) {
66
        if(element instanceof DerivateViewEditorInput){
67
            element = ((DerivateViewEditorInput) element).getDerivate();
68
	    }
69
	    if(element instanceof DerivedUnit){
70
	        DerivedUnit derivedUnit = (DerivedUnit)element;
71
	        return derivedUnit.getOriginalUnit();
72
	    }
73
		return null;
74
	}
75

    
76
	@Override
77
	public boolean hasChildren(Object element) {
78
        if(element instanceof DerivateViewEditorInput){
79
            element = ((DerivateViewEditorInput) element).getDerivate();
80
	    }
81
	    if(element instanceof SpecimenOrObservationBase){
82
	        SpecimenOrObservationBase specimenOrObservation = (SpecimenOrObservationBase)element;
83
	        for(DerivationEvent event:(Set<DerivationEvent>)specimenOrObservation.getDerivationEvents()){
84
	            if(!event.getDerivatives().isEmpty()){
85
	                return true;
86
	            }
87
	        }
88
	    }
89
		return false;
90
	}
91

    
92
	private List<DerivedUnit> getDerivates(SpecimenOrObservationBase specimenOrObservation){
93
	    List<DerivedUnit> derivates = new ArrayList<DerivedUnit>();
94
	    for(DerivationEvent derivationEvent:(Set<DerivationEvent>)specimenOrObservation.getDerivationEvents()){
95
	        derivates.addAll(derivationEvent.getDerivatives());
96
	    }
97
	    return derivates;
98
	}
99

    
100
}
(2-2/6)