Project

General

Profile

Download (6.45 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
package eu.etaxonomy.taxeditor.ui.section.description.detail;
10

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

    
15
import org.apache.commons.lang3.StringUtils;
16

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

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

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

    
50
	private TextWithLabelElement taxonOfDistribtion;
51

    
52

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

    
66
	}
67

    
68
	/** {@inheritDoc} */
69
	@Override
70
	protected void createControls(ICdmFormElement formElement,
71
			Distribution entity, int style) {
72

    
73
	    if (AbstractUtility.getActivePart() instanceof IDistributionEditorPart){
74
	        String nameCache = null;
75
	        nameCache = ((IDistributionEditorPart)AbstractUtility.getActivePart()).getEditor().getActualNameCache();
76
	        taxonOfDistribtion = formFactory.createTextWithLabelElement(formElement, "Taxon", nameCache, style);
77
	        taxonOfDistribtion.setEnabled(false);
78
	    }
79

    
80
	    if (PreferencesUtil.getBooleanValue(PreferencePredicate.NamedAreaWithIdInVoc.getKey())) {
81
            selection_namedArea = formFactory.createSelectionElementWithIdInVocabulary(NamedArea.class,
82
            		formElement, "Area",
83
            		entity.getArea(), EntitySelectionElement.NOTHING, style);
84
        }else{
85
            selection_namedArea = formFactory.createSelectionElement(NamedArea.class,
86
                    formElement, "Area",
87
                    entity.getArea(), EntitySelectionElement.NOTHING, style);
88
        }
89

    
90
		ICdmFormElement parent = this.getParentElement();
91
		NamedArea area = entity.getArea();
92
		List<DefinedTermBase> inputList = getStatusListForArea(area);
93
        combo_presenceAbsence = formFactory.createDefinedTermComboElement(inputList, this, "Distribution Status", entity.getStatus(), style);
94
        createTimePeriod(formElement, entity, style);
95
        if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
96
            createModifier(formElement, entity, style);
97
        }else{
98
            createFreetextModifier(formElement, entity, style);
99
        }
100
	}
101

    
102
    public List<DefinedTermBase> getStatusListForArea(NamedArea area) {
103
        PrefKey key;
104
		if (area!= null){
105
		    key = CdmPreference.NewKey(PreferenceSubject.NewInstance(PreferenceSubject.ROOT+"NamedArea["+area.getUuid().toString() + "]"+PreferenceSubject.ROOT), PreferencePredicate.AvailableDistributionStatus);
106
		}else{
107
		    key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionStatus);
108
		}
109
        CdmPreference pref = CdmPreferenceCache.instance().get(key);
110
        // if there is no preference for the area, look for the general
111
        if (pref == null || pref.isAllowOverride()){
112
            pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, PreferencesUtil.getStringValue(PreferencePredicate.AvailableDistributionStatus.getKey()));
113
        }
114

    
115
        String [] statusArray = null;
116
        List<UUID> uuidList = new ArrayList<>();
117
        if (pref.getValue() != null){
118
            statusArray = pref.getValue().split(";");
119
            for (String status: statusArray){
120
                if (StringUtils.isNotBlank(status)){
121
                	uuidList.add(UUID.fromString(status));
122
                }
123
            }
124
        }
125

    
126

    
127

    
128
        List<DefinedTermBase> inputList = CdmStore.getTermManager().getTerms(uuidList, PresenceAbsenceTerm.class);
129
        return inputList;
130
    }
131

    
132
	/** {@inheritDoc} */
133
	@Override
134
	public void handleEvent(Object eventSource) {
135
	    super.handleEvent(eventSource);
136
	    if(eventSource == selection_namedArea){
137
			getEntity().setArea(selection_namedArea.getEntity());
138

    
139
	        if (selection_namedArea.getEntity()!= null){
140
	            List<DefinedTermBase> inputList = getStatusListForArea(selection_namedArea.getEntity());
141
	            DefinedTermBase selectedTerm = combo_presenceAbsence.getSelection();
142
	            if (!inputList.equals(combo_presenceAbsence.getTerms())){
143
	                combo_presenceAbsence.setTerms(inputList);
144
	                if (inputList.contains(selectedTerm)){
145
	                    combo_presenceAbsence.setSelection(selectedTerm);
146
	                }
147
	            }
148
	        }
149

    
150
		}else if(eventSource == combo_presenceAbsence){
151
			getEntity().setStatus((PresenceAbsenceTerm)combo_presenceAbsence.getSelection());
152
		}
153
	}
154

    
155
	public void setName(String nameCache){
156
	    taxonOfDistribtion.setText(nameCache);
157
	}
158

    
159
}
(4-4/9)