Project

General

Profile

Download (2.18 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.persistence.dto.TaxonNodeDto;
11
import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
12

    
13
public class TaxonNodeContainer extends HierarchicalContainer {
14

    
15
	private static final long serialVersionUID = 102401340698963360L;
16

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

    
19
	private Map<Integer, Boolean> itemCache = new HashMap<>();
20

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

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

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

    
69
}
(7-7/7)