Project

General

Profile

Download (5.31 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.taxeditor.ui.section.description.detail;
11

    
12
import java.util.ArrayList;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import org.apache.commons.lang.StringUtils;
17

    
18
import eu.etaxonomy.cdm.model.description.Distribution;
19
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
20
import eu.etaxonomy.cdm.model.location.NamedArea;
21
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
22
import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
23
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
24
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
25
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
26
import eu.etaxonomy.taxeditor.preference.CdmPreferenceCache;
27
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
28
import eu.etaxonomy.taxeditor.store.CdmStore;
29
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
30
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
31
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
32
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
33

    
34
/**
35
 * <p>DistributionDetailElement class.</p>
36
 *
37
 * @author n.hoffmann
38
 * @created Jun 10, 2010
39
 * @version 1.0
40
 */
41
public class DistributionDetailElement extends
42
		AbstractDetailedDescriptionDetailElement<Distribution> {
43

    
44
	private EntitySelectionElement<NamedArea> selection_namedArea;
45
	private TermComboElement<DefinedTermBase> combo_presenceAbsence;
46
	private boolean namedAreaEditable = true;
47

    
48

    
49
	/**
50
	 * <p>Constructor for DistributionDetailElement.</p>
51
	 *
52
	 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
53
	 * @param formElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
54
	 * @param entity a {@link eu.etaxonomy.cdm.model.description.Distribution} object.
55
	 * @param style a int.
56
	 */
57
	public DistributionDetailElement(CdmFormFactory formFactory,
58
			ICdmFormElement formElement, Distribution entity, boolean enabled, int style) {
59
		super(formFactory, formElement, entity, style);
60
		setEnabled(enabled);
61

    
62
	}
63

    
64
	/** {@inheritDoc} */
65
	@Override
66
	protected void createControls(ICdmFormElement formElement,
67
			Distribution entity, int style) {
68
		selection_namedArea = formFactory.createSelectionElement(NamedArea.class, //getConversationHolder(),
69
				formElement, "Area",
70
				entity.getArea(), EntitySelectionElement.NOTHING, style);
71

    
72
		ICdmFormElement parent = this.getParentElement();
73
		NamedArea area = entity.getArea();
74
		List<DefinedTermBase> inputList = getStatusListForArea(area);
75
        combo_presenceAbsence = formFactory.createDefinedTermComboElement(inputList, this, "Distribution Status", entity.getStatus(), style);
76

    
77
        //combo_presenceAbsence = formFactory.createTermComboElement(PresenceAbsenceTerm.class, this, "Distribution Status", entity.getStatus(), style);
78
        createTimePeriod(formElement, entity, style);
79
        if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
80
            createModifier(formElement, entity, style);
81
        }else{
82
            createFreetextModifier(formElement, entity, style);
83
        }
84
	}
85

    
86
    public List<DefinedTermBase> getStatusListForArea(NamedArea area) {
87
        PrefKey key;
88
		if (area!= null){
89
		    key = CdmPreference.NewKey(PreferenceSubject.NewInstance(PreferenceSubject.ROOT+"NamedArea["+area.getUuid().toString() + "]"+PreferenceSubject.ROOT), PreferencePredicate.AvailableDistributionStatus);
90
		}else{
91
		    key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionStatus);
92
		}
93
        CdmPreference pref = CdmPreferenceCache.instance().get(key);
94
        // if there is no preference for the area, look for the general
95
        if (pref == null || pref.isAllowOverride()){
96
            pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, PreferencesUtil.getStringValue(PreferencePredicate.AvailableDistributionStatus.getKey()));
97
        }
98

    
99
        String [] statusArray = null;
100
        List<UUID> uuidList = new ArrayList<>();
101
        if (pref.getValue() != null){
102
            statusArray = pref.getValue().split(";");
103
            for (String status: statusArray){
104
                if (StringUtils.isNotEmpty(status)){
105
                	uuidList.add(UUID.fromString(status));
106
                }
107
            }
108
        }
109

    
110

    
111

    
112
        List<DefinedTermBase> inputList = CdmStore.getTermManager().getTerms(uuidList, PresenceAbsenceTerm.class);
113
        return inputList;
114
    }
115

    
116
	/** {@inheritDoc} */
117
	@Override
118
	public void handleEvent(Object eventSource) {
119
	    super.handleEvent(eventSource);
120
	    if(eventSource == selection_namedArea){
121
			getEntity().setArea(selection_namedArea.getEntity());
122

    
123
	        if (selection_namedArea.getEntity()!= null){
124
	            List<DefinedTermBase> inputList = getStatusListForArea(selection_namedArea.getEntity());
125
	            //combo_presenceAbsence.removeElements();
126
	            combo_presenceAbsence.setTerms(inputList);
127
	        }
128

    
129
		}else if(eventSource == combo_presenceAbsence){
130
			getEntity().setStatus((PresenceAbsenceTerm)combo_presenceAbsence.getSelection());
131
		}
132
	}
133

    
134

    
135
}
(4-4/8)