Project

General

Profile

Download (6.11 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.editor.IDistributionEditorPart;
27
import eu.etaxonomy.taxeditor.model.AbstractUtility;
28
import eu.etaxonomy.taxeditor.preference.CdmPreferenceCache;
29
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
30
import eu.etaxonomy.taxeditor.store.CdmStore;
31
import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
32
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
33
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
34
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
35
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
36

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

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

    
51
	private TextWithLabelElement taxonOfDistribtion;
52

    
53

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

    
67
	}
68

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

    
74
	    if (AbstractUtility.getActivePart() instanceof IDistributionEditorPart){
75
	        String nameCache = null;
76
	        nameCache = ((IDistributionEditorPart)AbstractUtility.getActivePart()).getEditor().getActualNameCache();
77
	        taxonOfDistribtion = formFactory.createTextWithLabelElement(formElement, "Taxon", nameCache, style);
78
	        taxonOfDistribtion.setEnabled(false);
79
	    }
80
		selection_namedArea = formFactory.createSelectionElement(NamedArea.class, //getConversationHolder(),
81
				formElement, "Area",
82
				entity.getArea(), EntitySelectionElement.NOTHING, style);
83

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

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

    
109
        String [] statusArray = null;
110
        List<UUID> uuidList = new ArrayList<>();
111
        if (pref.getValue() != null){
112
            statusArray = pref.getValue().split(";");
113
            for (String status: statusArray){
114
                if (StringUtils.isNotBlank(status)){
115
                	uuidList.add(UUID.fromString(status));
116
                }
117
            }
118
        }
119

    
120

    
121

    
122
        List<DefinedTermBase> inputList = CdmStore.getTermManager().getTerms(uuidList, PresenceAbsenceTerm.class);
123
        return inputList;
124
    }
125

    
126
	/** {@inheritDoc} */
127
	@Override
128
	public void handleEvent(Object eventSource) {
129
	    super.handleEvent(eventSource);
130
	    if(eventSource == selection_namedArea){
131
			getEntity().setArea(selection_namedArea.getEntity());
132

    
133
	        if (selection_namedArea.getEntity()!= null){
134
	            List<DefinedTermBase> inputList = getStatusListForArea(selection_namedArea.getEntity());
135
	            DefinedTermBase selectedTerm = combo_presenceAbsence.getSelection();
136
	            if (!inputList.equals(combo_presenceAbsence.getTerms())){
137
	                combo_presenceAbsence.setTerms(inputList);
138
	                if (inputList.contains(selectedTerm)){
139
	                    combo_presenceAbsence.setSelection(selectedTerm);
140
	                }
141
	            }
142
	        }
143

    
144
		}else if(eventSource == combo_presenceAbsence){
145
			getEntity().setStatus((PresenceAbsenceTerm)combo_presenceAbsence.getSelection());
146
		}
147
	}
148

    
149
	public void setName(String nameCache){
150
	    taxonOfDistribtion.setText(nameCache);
151
	}
152

    
153
}
(4-4/8)