Project

General

Profile

Download (2.39 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.vaadin.container;
2

    
3
import java.util.Collection;
4
import java.util.HashMap;
5
import java.util.Map;
6

    
7
import com.vaadin.data.Item;
8
import com.vaadin.data.util.HierarchicalContainer;
9

    
10
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
11
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
12
import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
13

    
14
public class TaxonNodeContainer extends HierarchicalContainer {
15

    
16
	private static final long serialVersionUID = 102401340698963360L;
17

    
18
	public static final String LABEL = "titleCache";
19

    
20
	private Map<Object, Object> itemCache = new HashMap<>();
21

    
22
	/**
23
     * Creates a new taxon node container
24
	 * @param roots the root elements of the table
25
	 */
26
	public TaxonNodeContainer(Collection<UuidAndTitleCache<TaxonNode>> roots) {
27
	    addContainerProperty(LABEL, String.class, "[no taxon]");
28
	    for (UuidAndTitleCache<TaxonNode> root: roots) {
29
	        addItem(root);
30
	        addChildItems(root);
31
        }
32
	}
33

    
34
	/**
35
	 * {@inheritDoc}
36
	 */
37
	@Override
38
	public Item addItem(Object itemId) {
39
	    if(itemId instanceof UuidAndTitleCache){
40
	        UuidAndTitleCache<TaxonNode> uuidAndTitleCache = (UuidAndTitleCache<TaxonNode>) itemId;
41
	        Item item = super.addItem(itemId);
42
	        item.getItemProperty(TaxonNodeContainer.LABEL).setValue(uuidAndTitleCache.getTitleCache());
43
	        itemCache.put(((UuidAndTitleCache<TaxonNode>) itemId).getId(), false);
44
	        return item;
45
        }
46
	    return null;
47
	}
48

    
49
    /**
50
     * @param parent
51
     */
52
    public void addChildItems(UuidAndTitleCache<TaxonNode> parent) {
53
        if(itemCache.get(parent.getId()).equals(Boolean.FALSE)){
54
            Collection<UuidAndTitleCache<TaxonNode>> children = CdmSpringContextHelper.getTaxonNodeService().listChildNodesAsUuidAndTitleCache(parent);
55
            setChildrenAllowed(parent, !children.isEmpty());
56
            for (UuidAndTitleCache<TaxonNode> child : children) {
57
                Item childItem = addItem(child);
58
                if(childItem!=null){
59
                    setParent(child, parent);
60
                    addChildItems(child);
61
                }
62
                   /*
63
                Collection<UuidAndTitleCache<TaxonNode>> grandChildren = CdmSpringContextHelper.getTaxonNodeService().listChildNodesAsUuidAndTitleCache(child);
64
                setChildrenAllowed(child, !grandChildren.isEmpty());*/
65
            }
66
            itemCache.put(parent.getId(), true);
67
        }
68
    }
69

    
70
}
(7-7/7)