Project

General

Profile

Download (8.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

    
10
package eu.etaxonomy.taxeditor.editor.name.handler;
11

    
12
import org.eclipse.core.expressions.PropertyTester;
13
import org.eclipse.jface.viewers.IStructuredSelection;
14

    
15
import eu.etaxonomy.cdm.model.common.CdmBase;
16
import eu.etaxonomy.cdm.model.taxon.Synonym;
17
import eu.etaxonomy.cdm.model.taxon.Taxon;
18
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
19
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
20
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
21
import eu.etaxonomy.taxeditor.event.EventUtility;
22
import eu.etaxonomy.taxeditor.store.CdmStore;
23

    
24
/**
25
 * <p>NameEditorMenuPropertyTester class.</p>
26
 *
27
 * @author n.hoffmann
28
 * @created Jun 22, 2010
29
 * @version 1.0
30
 */
31
public class NameEditorMenuPropertyTester extends PropertyTester {
32

    
33
	private static final String ACCEPTED = "isAcceptedTaxon"; //$NON-NLS-1$
34
	private static final String NOT_ACCEPTED = "isNotAcceptedTaxon"; //$NON-NLS-1$
35
	private static final String SYNONYM = "isSynonym"; //$NON-NLS-1$
36
	private static final String NOT_SYNONYM = "isNotSynonym"; //$NON-NLS-1$
37
	private static final String MISAPPLICATION = "isMisapplication"; //$NON-NLS-1$
38
	private static final String NOT_MISAPPLICATION = "isNotMisapplication"; //$NON-NLS-1$
39
	private static final String PROPARTE_SYNONYM = "isProparteSynonym";//$NON-NLS-1$
40
	private static final String NOT_PROPARTE_SYNONYM = "isNotProparteSynonym"; //$NON-NLS-1$
41
	private static final String TAXONBASE = "isTaxonBase"; //$NON-NLS-1$
42
	private static final String CONCEPT = "isConceptRelation"; //$NON-NLS-1$
43
	private static final String EMPTY_NAMES = "hasEmptyNames"; //$NON-NLS-1$
44
	private static final String ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS = "isAcceptedAndHasNoHomotypicSynonyms"; //$NON-NLS-1$
45
	private static final String NOT_HOMOTYPIC_SYNONYM_OF_ACCEPTED = "isNotHomotypicSynonymOfAcceptedTaxon"; //$NON-NLS-1$
46
	private static final String SYNONYM_WITH_HOMOTYPIC_SYNONYMS = "isSynonymInHomotypicalGroupWithMoreSynonyms"; //$NON-NLS-1$
47
	private static final String IS_ORPHANED = "isOrphaned";
48
	private static final String IS_NOT_INVALID_DESIGNATION = "isNotInvalidDesignation";//$NON-NLS-1$
49

    
50
	/**
51
	 * <p>Constructor for NameEditorMenuPropertyTester.</p>
52
	 */
53
	public NameEditorMenuPropertyTester() {
54
	}
55

    
56
	/** {@inheritDoc} */
57
	@Override
58
    public boolean test(Object receiver, String property, Object[] args,
59
			Object expectedValue) {
60

    
61
		if(receiver instanceof IStructuredSelection){
62

    
63
			IStructuredSelection selection = (IStructuredSelection) receiver;
64

    
65
			Object selectedElement = selection.getFirstElement();
66
			if(selectedElement instanceof UuidAndTitleCache){
67
			    UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache<?>)selectedElement;
68
			    CdmBase cdmBase = CdmStore.getCommonService().find(uuidAndTitleCache.getType(), uuidAndTitleCache.getUuid());
69
			    selectedElement = cdmBase;
70
			}
71
			if(NOT_ACCEPTED.equals(property)){
72
                return !isAccepted(selectedElement);
73
            }
74
			if(ACCEPTED.equals(property)){
75
				return isAccepted(selectedElement);
76
			}
77
			else if(SYNONYM.equals(property)){
78
				return isSynonym(selectedElement);
79
			}
80
			else if(NOT_SYNONYM.equals(property)){
81
                return isNotSynonym(selectedElement);
82
            }
83
			else if(MISAPPLICATION.equals(property)){
84
				return isMisapplication(selectedElement);
85
			}
86
			else if(PROPARTE_SYNONYM.equals(property)){
87
                return isProparteSynonym(selectedElement);
88
            }
89
			else if(NOT_PROPARTE_SYNONYM.equals(property)){
90
                return isNotProparteSynonym(selectedElement);
91
            }
92
			else if(NOT_MISAPPLICATION.equals(property)){
93
                return isNotMisapplication(selectedElement);
94
            }
95
			else if(TAXONBASE.equals(property)){
96
				return isTaxonBase(selectedElement);
97
			}
98
			else if(CONCEPT.equals(property)){
99
				return isRelatedConcept(selectedElement);
100
			}
101
			else if(EMPTY_NAMES.equals(property)){
102
				return hasEmptyNames(receiver);
103
			}
104
			else if(ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS.equals(property)){
105
				return isAcceptedAndHasNoHomotypicSynonyms(selectedElement);
106
			}
107
			else if (NOT_HOMOTYPIC_SYNONYM_OF_ACCEPTED.equals(property)){
108
				return isNotHomotypicSynonymOfAcceptedTaxon(selectedElement);
109
			}
110
			else if (SYNONYM_WITH_HOMOTYPIC_SYNONYMS.equals(property)){
111
				return isSynonymInHomotypicalGroupWithMoreSynonyms(selectedElement);
112
			}
113
			else if (IS_ORPHANED.equals(property)){
114
			    return isOrphaned(selectedElement);
115
			}else if (IS_NOT_INVALID_DESIGNATION.equals(property)){
116
                return isNotInvalidDesignation(selectedElement);
117
            }
118

    
119
		}
120

    
121
		return false;
122

    
123
	}
124

    
125
	public static boolean isAcceptedAndHasNoHomotypicSynonyms(Object selectedElement) {
126
		if (isAccepted(selectedElement)){
127
			Taxon taxon = (Taxon) selectedElement;
128
			return taxon.getSynonymsInGroup(taxon.getHomotypicGroup()).isEmpty();
129
		}
130
		return false;
131
	}
132
	public static boolean isNotAcceptedTaxon(Object selectedElement) {
133

    
134
        return !isAccepted(selectedElement);
135
    }
136

    
137
	public static boolean isNotMisapplication(Object selectedElement) {
138

    
139
        return !isMisapplication(selectedElement);
140
    }
141

    
142
	public static boolean isSynonymInHomotypicalGroupWithMoreSynonyms(Object selectedElement) {
143
		if (isSynonym(selectedElement)){
144
			Synonym synonym = (Synonym) selectedElement;
145
			return synonym.getHomotypicGroup().getTypifiedNames().size()>1;
146
		}
147
		return false;
148
	}
149

    
150

    
151
	public static boolean isNotHomotypicSynonymOfAcceptedTaxon(Object selectedElement) {
152
		if (isSynonym(selectedElement)){
153
			Synonym synonym = (Synonym) selectedElement;
154
			Taxon taxon = synonym.getAcceptedTaxon();
155
			if (taxon != null &&
156
					taxon.getHomotypicGroup().equals(synonym.getHomotypicGroup())){
157
				return false;
158
			}
159
		}
160
		return true;
161
	}
162

    
163

    
164
	/**
165
	 * @param receiver
166
	 * @return
167
	 */
168
	public static boolean hasEmptyNames(Object receiver) {
169
		TaxonNameEditorE4 editor = (TaxonNameEditorE4) EventUtility.getTaxonEditor();
170
		return editor == null ? false : editor.checkForEmptyNames();
171
	}
172

    
173
	public static boolean isRelatedConcept(Object selectedElement) {
174
		if(selectedElement instanceof Taxon && ((Taxon) selectedElement).isRelatedConcept()){
175
			return true;
176
		}
177
		return false;
178
	}
179

    
180
	public static boolean isTaxonBase(Object selectedElement) {
181
		return (selectedElement instanceof TaxonBase) ? true : false;
182
	}
183

    
184
	public static boolean isMisapplication(Object selectedElement) {
185
		if(selectedElement instanceof Taxon && ((Taxon) selectedElement).isMisapplication() ){
186
			return true;
187
		}
188
		return false;
189
	}
190

    
191
	public static boolean isProparteSynonym(Object selectedElement) {
192
        if(selectedElement instanceof Taxon && ((Taxon) selectedElement).isProparteSynonym()){
193
            return true;
194
        }
195
        return false;
196
    }
197
	public static boolean isNotProparteSynonym(Object selectedElement) {
198
	    if (selectedElement instanceof Synonym){
199
	        return true;
200
	    }
201
        if(((Taxon) selectedElement).isProparteSynonym() ){
202
            return false;
203
        }
204
        return true;
205
    }
206

    
207
	public static boolean isSynonym(Object selectedElement) {
208
		return (selectedElement instanceof Synonym) ? true : false;
209
	}
210
	public static boolean isNotSynonym(Object selectedElement) {
211
        return !isSynonym(selectedElement);
212
    }
213

    
214
	public static boolean isAccepted(Object selectedElement) {
215
		return (selectedElement instanceof Taxon  && !(((Taxon) selectedElement).isMisapplication()|| ((Taxon) selectedElement).isProparteSynonym() || ((Taxon) selectedElement).isInvalidDesignation())) ? true : false;
216
	}
217

    
218
	public static boolean isOrphaned(Object selectedElement) {
219
	    if(selectedElement instanceof Taxon){
220
	        return ((Taxon) selectedElement).isOrphaned();
221
	    }
222
	    else if(selectedElement instanceof Synonym){
223
	        return ((Synonym) selectedElement).isOrphaned();
224
	    }
225
	    return false;
226
	}
227

    
228
    /**
229
     * @param selectedElement
230
     * @return
231
     */
232
    public static boolean isProParteSynonym(Object selectedElement) {
233
        if(selectedElement instanceof Taxon && ((Taxon) selectedElement).isProparteSynonym()){
234
            return true;
235
        }
236
        return false;
237
    }
238

    
239
    /**
240
     * @param selectedElement
241
     * @return
242
     */
243
    public static boolean isNotInvalidDesignation(Object selectedElement) {
244
        if((selectedElement instanceof Taxon) && ((Taxon) selectedElement).isInvalidDesignation()){
245
            return false;
246
        }
247
        return true;
248
    }
249

    
250
}
    (1-1/1)