Project

General

Profile

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

    
3
import java.util.Arrays;
4
import java.util.Collection;
5
import java.util.HashSet;
6
import java.util.List;
7
import java.util.Set;
8
import java.util.UUID;
9

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

    
13
import eu.etaxonomy.cdm.model.common.TermType;
14
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
15
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
16
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
17
import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
18
import eu.etaxonomy.cdm.vaadin.util.DistributionEditorUtil;
19
import eu.etaxonomy.cdm.vaadin.util.TermCacher;
20

    
21
public class PresenceAbsenceTermContainer extends BeanItemContainer<PresenceAbsenceTerm> {
22

    
23
	private static final long serialVersionUID = -7891310979870159325L;
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 = getDistributionStatusList(TERMS_INIT_STRATEGY);
37

    
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
    public static List<PresenceAbsenceTerm> getDistributionStatusList(List<String> propertyPath){
64
        CdmPreference statusPref = CdmSpringContextHelper.getPreferenceService().findVaadin(PreferencePredicate.AvailableDistributionStatus);
65
        if (statusPref != null){
66
            List<UUID> uuidList = statusPref.getValueUuidList();
67
            return (List)CdmSpringContextHelper.getTermService().load(uuidList, propertyPath);
68
        }else{
69
            return CdmSpringContextHelper.getTermService().listByTermType(
70
                    TermType.PresenceAbsenceTerm, null, null, null, propertyPath);
71
        }
72
    }
73

    
74
    protected static final List<String> TERMS_INIT_STRATEGY = Arrays.asList(new String []{
75
            "$",
76
            "representations",
77
    });
78

    
79
}
(6-6/7)