Project

General

Profile

Download (2.39 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.remote.dto.assembler;
2

    
3
import java.util.ArrayList;
4
import java.util.Collection;
5
import java.util.Collections;
6
import java.util.HashMap;
7
import java.util.List;
8
import java.util.Map;
9
import java.util.Set;
10
import java.util.UUID;
11

    
12
import org.springframework.beans.factory.annotation.Autowired;
13
import org.springframework.stereotype.Component;
14

    
15
import eu.etaxonomy.cdm.model.taxon.Taxon;
16
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
17
import eu.etaxonomy.cdm.remote.dto.TaxonSTO;
18
import eu.etaxonomy.cdm.remote.dto.TaxonTO;
19
import eu.etaxonomy.cdm.remote.dto.TreeNode;
20

    
21
@Component
22
public class TaxonAssembler extends AssemblerBase{
23
	
24
	@Autowired
25
	private NameAssembler nameAssembler;
26
	@Autowired
27
	private ReferenceAssembler refAssembler;
28
	
29
	public TaxonSTO getSTO(TaxonBase tb){		
30
		TaxonSTO t = null;
31
		if (tb!=null){
32
			t = new TaxonSTO();
33
			setIdentifiableEntity(tb, t);
34
			t.setName(nameAssembler.getSTO(tb.getName()));
35
			t.setSecUuid(tb.getSec().getUuid().toString());
36
			if (Taxon.class.isInstance(tb)){
37
				t.setAccepted(true);
38
			}else{
39
				t.setAccepted(false);
40
			}
41
			//TODO: add more mapppings
42
		}
43
		return t;
44
	}
45
	public TaxonTO getTO(TaxonBase tb){
46
		TaxonTO t = null;
47
		if(tb!=null){
48
			t = new TaxonTO();
49
			setIdentifiableEntity(tb, t);
50
			t.setName(nameAssembler.getSTO(tb.getName()));
51
			t.setSec(refAssembler.getTO(tb.getSec()));
52
			//TODO: add more mapppings
53
		}
54
		return t;
55
	}
56
	public TreeNode getTreeNode(Taxon t){
57
		TreeNode tn = null;
58
		if(t!=null){
59
			tn = new TreeNode();
60
			setIdentifiableEntity(t, tn);
61
			tn.setFullname(t.getName().getTitleCache());
62
			tn.setHasChildren(t.getTaxonomicChildren().size());
63
			tn.setTaggedName(nameAssembler.getTaggedName(t.getName()));
64
		}
65
		return tn;
66
	}
67
	public List<TreeNode> getTreeNodeList(Taxon[] taxa){
68
		ArrayList<TreeNode> result = new ArrayList<TreeNode>();
69
		for (Taxon t : taxa){
70
			result.add(this.getTreeNode(t));
71
		}
72
		return result;
73
	}
74

    
75
	public List<TreeNode> getTreeNodeListSortedByName(Iterable<Taxon> taxa){
76
		Map<String, TreeNode> nameMap = new HashMap<String, TreeNode>();
77
		for (Taxon t : taxa){
78
			nameMap.put(t.getTitleCache()+"  "+t.getUuid().toString(), this.getTreeNode(t));
79
		}
80
		ArrayList<TreeNode> treeNodeList = new ArrayList<TreeNode>();
81
		ArrayList<String> keys = new ArrayList<String>(nameMap.keySet());
82
		Collections.sort(keys);
83
		for (String name : keys){
84
			treeNodeList.add(nameMap.get(name));
85
		}
86
		return treeNodeList;
87
	}
88

    
89
}
(4-4/4)