Project

General

Profile

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

    
3
import java.util.Collection;
4
import java.util.HashSet;
5
import java.util.Set;
6

    
7
import org.springframework.beans.factory.annotation.Autowired;
8

    
9
import com.vaadin.data.util.BeanItemContainer;
10
import com.vaadin.server.VaadinSession;
11

    
12
import eu.etaxonomy.cdm.api.service.ITermService;
13
import eu.etaxonomy.cdm.model.common.TermType;
14
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
15
import eu.etaxonomy.cdm.vaadin.util.DistributionEditorUtil;
16
import eu.etaxonomy.cdm.vaadin.util.TermCacher;
17

    
18
public class PresenceAbsenceTermContainer extends BeanItemContainer<PresenceAbsenceTerm> {
19

    
20
	private static final long serialVersionUID = -7891310979870159325L;
21

    
22
	@Autowired
23
	private ITermService termService;
24

    
25
	private static PresenceAbsenceTermContainer instance;
26

    
27
	private static Collection<PresenceAbsenceTerm> defaultDistributionStatus;
28

    
29
	private PresenceAbsenceTermContainer()
30
			throws IllegalArgumentException {
31
		super(PresenceAbsenceTerm.class);
32
		initDataModel();
33
	}
34

    
35
    private void initDataModel() {
36
        Collection<PresenceAbsenceTerm> distributionStatus = new HashSet<>();
37
        distributionStatus = termService.listByTermType(TermType.PresenceAbsenceTerm, null, null, null, null);
38
        defaultDistributionStatus = distributionStatus;
39
		TermCacher termCacher = TermCacher.getInstance();
40
		addAll(distributionStatus);
41
		for (PresenceAbsenceTerm presenceAbsenceTerm : distributionStatus) {
42
			termCacher.addPresenceAbsenceTerm(presenceAbsenceTerm);
43
		}
44
    }
45

    
46
	public static PresenceAbsenceTermContainer getInstance(){
47
	    if(instance==null){
48
	        instance = new PresenceAbsenceTermContainer();
49
	    }
50
        Collection<PresenceAbsenceTerm> distributionStatus = new HashSet<>();
51
        Object attribute = VaadinSession.getCurrent().getAttribute(DistributionEditorUtil.SATTR_DISTRIBUTION_STATUS);
52
        if(attribute!=null){
53
            distributionStatus = (Set<PresenceAbsenceTerm>) attribute;
54
        }
55
        if(!distributionStatus.isEmpty() && !distributionStatus.equals(defaultDistributionStatus)){
56
            instance.removeAllItems();
57
            instance.addAll(distributionStatus);
58
            defaultDistributionStatus = distributionStatus;
59
        }
60
	    return instance;
61
	}
62

    
63
}
(6-6/7)