Project

General

Profile

Download (2.91 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 *
3
 */
4
package eu.etaxonomy.taxeditor.editor.view.concept.graph;
5

    
6
import java.util.HashMap;
7
import java.util.Map;
8

    
9
import org.eclipse.jface.viewers.Viewer;
10
import org.eclipse.zest.core.viewers.IGraphContentProvider;
11

    
12
import eu.etaxonomy.cdm.model.taxon.Taxon;
13
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
14
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
15
import eu.etaxonomy.taxeditor.editor.e4.TaxonEditorInput;
16

    
17
/**
18
 * @author andreas
19
 *
20
 */
21
public class ConceptGraphContentProvider implements IGraphContentProvider {
22

    
23
	/* (non-Javadoc)
24
	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
25
	 */
26
	@Override
27
	public void dispose() {
28
		// TODO Auto-generated method stub
29

    
30
	}
31

    
32
	/* (non-Javadoc)
33
	 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
34
	 */
35
	@Override
36
	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
37
		// TODO Auto-generated method stub
38

    
39
	}
40

    
41
	/* (non-Javadoc)
42
	 * @see org.eclipse.zest.core.viewers.IGraphContentProvider#getSource(java.lang.Object)
43
	 */
44
	@Override
45
	public Object getSource(Object taxonRelationship) {
46
		return ((TaxonRelationship)taxonRelationship).getFromTaxon();
47
	}
48

    
49
	/* (non-Javadoc)
50
	 * @see org.eclipse.zest.core.viewers.IGraphContentProvider#getDestination(java.lang.Object)
51
	 */
52
	@Override
53
	public Object getDestination(Object taxonRelationship) {
54
		return ((TaxonRelationship)taxonRelationship).getToTaxon();
55
	}
56

    
57
	/* (non-Javadoc)
58
	 * @see org.eclipse.zest.core.viewers.IGraphContentProvider#getElements(java.lang.Object)
59
	 */
60
	@Override
61
	public Object[] getElements(Object inputElement) {
62
		if(inputElement instanceof TaxonEditorInput){
63
			Taxon taxon = ((TaxonEditorInput) inputElement).getTaxon();
64

    
65
			Map<String, TaxonRelationship> filteredTaxonRelations = new HashMap<String, TaxonRelationship>();
66
			getTaxonRelationshipsRecursive(filteredTaxonRelations, taxon);
67

    
68
			return filteredTaxonRelations.values().toArray();
69
		}
70
		return new Object[0];
71
	}
72

    
73
	private void getTaxonRelationshipsRecursive(Map<String, TaxonRelationship> filteredTaxonRelations, Taxon taxon) {
74
		// TODO extract method into new class TaxonHelper in
75
		// eu.etaxonomy.taxeditor.model;
76
		// see also ConceptContentProvider
77
		for (TaxonRelationship relationship : taxon.getTaxonRelations()) {
78

    
79
			if (!relationship.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())
80
					&& !relationship.getType().equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())) {
81

    
82
				if(!relationship.getToTaxon().equals(taxon)){
83
					continue;
84
				}
85

    
86
				String key = relationship.getFromTaxon().getUuid().toString() + relationship.getType().getUuid();
87
				if(!filteredTaxonRelations.containsKey(key)) {
88
					filteredTaxonRelations.put(key, relationship);
89
					Taxon toTaxon = relationship.getToTaxon();
90
					if(toTaxon != null){
91
						getTaxonRelationshipsRecursive(filteredTaxonRelations, toTaxon);
92

    
93
					}
94
				}
95
			}
96

    
97

    
98
		}
99

    
100

    
101
	}
102

    
103
}
(1-1/2)