Project

General

Profile

Download (46.5 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;
11

    
12
import java.util.Arrays;
13
import java.util.HashSet;
14
import java.util.List;
15
import java.util.Set;
16
import java.util.UUID;
17

    
18
import org.eclipse.jface.resource.ImageDescriptor;
19
import org.eclipse.ui.IEditorInput;
20
import org.eclipse.ui.IMemento;
21
import org.eclipse.ui.IPersistableElement;
22

    
23
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
24
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
25
import eu.etaxonomy.cdm.api.service.IClassificationService;
26
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
27
import eu.etaxonomy.cdm.api.service.ITaxonService;
28
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
29
import eu.etaxonomy.cdm.model.taxon.ITreeNode;
30
import eu.etaxonomy.cdm.model.taxon.Synonym;
31
import eu.etaxonomy.cdm.model.taxon.Taxon;
32
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
33
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
34
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
35
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
36
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
37
import eu.etaxonomy.taxeditor.model.DataChangeBridge;
38
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
39
import eu.etaxonomy.taxeditor.store.CdmStore;
40

    
41
/**
42
 * <p>TaxonEditorInput class.</p>
43
 *
44
 * @author n.hoffmann
45
 * @created 19.03.2009
46
 * @version 1.0
47
 */
48
public class TaxonEditorInput implements IEditorInput, IConversationEnabled, IPersistableElement {
49
	
50
	private ConversationHolder conversation;
51
	
52
	private TaxonNode taxonNode;
53

    
54
	private TaxonEditorInputDataChangeBehaviour dataChangeBehavior;
55
	
56
	private TaxonBase initiallySelectedTaxonBase;
57

    
58
	private Taxon taxon;
59
	
60
	private TaxonEditorInput(TaxonNode taxonNode, ConversationHolder conversation){
61
		this.conversation = conversation;
62
		this.taxonNode = taxonNode;
63
	}
64
	
65

    
66
	
67
	/**
68
	 * <p>NewInstance</p>
69
	 *
70
	 * @param taxonNodeUuid a {@link java.util.UUID} object.
71
	 * @return a {@link eu.etaxonomy.taxeditor.editor.TaxonEditorInput} object.
72
	 * @throws java.lang.Exception if any.
73
	 */
74
	public static TaxonEditorInput NewInstance(UUID taxonNodeUuid) throws Exception{
75
		try{
76
			ConversationHolder conversation = CdmStore.createConversation();
77
			return NewInstance(taxonNodeUuid, conversation);
78
		}catch(Exception e){
79
			throw e;
80
		}
81
	}
82
	
83
    /**
84
     * 
85
     * @param taxonNodeUuid
86
     * @param conversation
87
     * @return
88
     */
89
    private static TaxonEditorInput NewInstance(UUID taxonNodeUuid, ConversationHolder conversation){
90
 	
91
    	TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(taxonNodeUuid);
92
		
93
		if(taxonNode == null){
94
			EditorUtil.warningDialog("Not yet implemented", TaxonEditorInput.class, "Selected element is not type TaxonBase.");
95
			return null;
96
		}	
97
		
98
    	return new TaxonEditorInput(taxonNode, conversation);
99
    }
100
    
101
    /**
102
     * <p>NewInstanceFromTaxonBase</p>
103
     *
104
     * @param taxonBaseUuid a {@link java.util.UUID} object.
105
     * @return a {@link eu.etaxonomy.taxeditor.editor.TaxonEditorInput} object.
106
     */
107
    public static TaxonEditorInput NewInstanceFromTaxonBase(UUID taxonBaseUuid){
108
    	ConversationHolder conversation = CdmStore.createConversation();
109
    	
110
    	TaxonEditorInput input = null;
111
    	
112
    	TaxonBase taxonBase = CdmStore.getService(ITaxonService.class).find(taxonBaseUuid);
113
    	
114
    	if(taxonBase instanceof Taxon){
115
    		Taxon taxon = (Taxon) taxonBase;
116
    		
117
    		if (taxon.isMisapplication()){
118
    			// TODO get accepted taxon
119
    			EditorUtil.info("trying to open Mispplied Name ");
120
    			
121
    			Set<Taxon> acceptedTaxa = new HashSet<Taxon>();
122
    			Set<TaxonRelationship> relations = taxon.getRelationsFromThisTaxon();
123
    			for(TaxonRelationship relation : relations){
124
    				if(relation.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())){
125
    					acceptedTaxa.add(relation.getToTaxon());
126
    				}
127
    			}
128
    			input =  getInputForMultipleTaxa(conversation, acceptedTaxa);
129
    			
130
    		}else{
131
    			input = getInputForMultipleNodes(conversation, taxon.getTaxonNodes());
132
    		}
133
    	}else if(taxonBase instanceof Synonym){
134
    		Synonym synonym = (Synonym) taxonBase;
135
    		
136
    		Set<Taxon> taxa = synonym.getAcceptedTaxa();
137
    		input = getInputForMultipleTaxa(conversation, taxa);
138
    	}
139
    	
140
    	input.setInitiallySelectedTaxonBase(taxonBase);
141
    	
142
    	return input;
143
    }
144
    
145
	private static TaxonEditorInput getInputForMultipleNodes(ConversationHolder conversation, Set<TaxonNode> taxonNodes){
146
    	if(taxonNodes.size() == 1){
147
    		TaxonNode taxonNode = taxonNodes.iterator().next();
148
    		return NewInstance(taxonNode.getUuid(), conversation);
149
    	}else if(taxonNodes.size() > 1){
150
			TaxonNode taxonNode = ChooseFromMultipleTaxonNodesDialog.choose(taxonNodes);
151
			if(taxonNode != null){
152
				return NewInstance(taxonNode.getUuid(), conversation);			
153
			}
154
		}else if(taxonNodes.size() == 0){
155
			// this is an undesired state
156
			EditorUtil.warningDialog("Incorrect state", TaxonEditorInput.class, "The accepted taxon is not part of any classification. This should not have happened.");
157
		}
158
    	return null;
159
    }
160
    
161
    private static TaxonEditorInput getInputForMultipleTaxa(ConversationHolder conversation, Set<Taxon> taxa){
162
    	if(taxa.size() == 1){
163
    		Taxon taxon = taxa.iterator().next();
164
    		Set<TaxonNode> nodes = taxon.getTaxonNodes();
165
    		return getInputForMultipleNodes(conversation, nodes);
166
    	}else if(taxa.size() > 1){
167
			// FIXME implement a dialog that shows all possible taxa and let the user choose which he wants to open.
168
			EditorUtil.warningDialog("Not implemented yet", TaxonEditorInput.class, "There are multiple accepted taxa for the current selection. We currently do not know which one you want to open." +
169
					" This case is not handled yet by the software.");
170
		}else if(taxa.size() == 0){
171
			// this is an undesired state
172
			EditorUtil.warningDialog("Incorrect state", TaxonEditorInput.class, "Trying to open accepted taxon for a synonym or misapplication but" +
173
					" no accepted taxa are present. This should not have happened.");
174
		}
175
    	return null;
176
    }
177
    
178
    /**
179
     * <p>NewEmptyInstance</p>
180
     *
181
     * @param parentNodeUuid a {@link java.util.UUID} object.
182
     * @return a {@link eu.etaxonomy.taxeditor.editor.TaxonEditorInput} object.
183
     */
184
    public static TaxonEditorInput NewEmptyInstance(UUID parentNodeUuid){
185
    	ConversationHolder conversation = CdmStore.createConversation();
186
		
187
		TaxonNameBase<?, ?> name = PreferencesUtil.getPreferredNomenclaturalCode().getNewTaxonNameInstance(null);
188
		ITreeNode parentNode = CdmStore.getService(IClassificationService.class).getTreeNodeByUuid(parentNodeUuid);
189
		
190
		Taxon newTaxon = Taxon.NewInstance(name, parentNode.getReference());
191
		TaxonNode newTaxonNode = parentNode.addChildTaxon(newTaxon, parentNode.getReference(), parentNode.getMicroReference(), null);
192
		
193
		// add the new taxon to the editors persistence context
194
		UUID newTaxonNodeUuid = CdmStore.getService(ITaxonNodeService.class).save(newTaxonNode);
195
		
196
		return new TaxonEditorInput(newTaxonNode, conversation);
197
    }
198
	
199
	/* (non-Javadoc)
200
	 * @see org.eclipse.ui.IEditorInput#exists()
201
	 */
202
	/**
203
	 * <p>exists</p>
204
	 *
205
	 * @return a boolean.
206
	 */
207
	public boolean exists() {
208
		return taxonNode != null;
209
	}
210

    
211
	/* (non-Javadoc)
212
	 * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
213
	 */
214
	/**
215
	 * <p>getImageDescriptor</p>
216
	 *
217
	 * @return a {@link org.eclipse.jface.resource.ImageDescriptor} object.
218
	 */
219
	public ImageDescriptor getImageDescriptor() {
220
		return null;
221
	}
222

    
223
	/* (non-Javadoc)
224
	 * @see org.eclipse.ui.IEditorInput#getName()
225
	 */
226
	/**
227
	 * <p>getName</p>
228
	 *
229
	 * @return a {@link java.lang.String} object.
230
	 */
231
	public String getName() {
232
		if(getTaxon() == null){
233
			return null;
234
		}
235
		TaxonNameBase<?, ?> name = getTaxon().getName();
236
		if (name == null || name.getTitleCache() == null) {
237
			return "New taxon";
238
		} else {
239
			return name.getTitleCache();
240
		}	
241
	}
242

    
243
	/* (non-Javadoc)
244
	 * @see org.eclipse.ui.IEditorInput#getPersistable()
245
	 */
246
	/**
247
	 * <p>getPersistable</p>
248
	 *
249
	 * @return a {@link org.eclipse.ui.IPersistableElement} object.
250
	 */
251
	public IPersistableElement getPersistable() {
252
//		if(CdmStore.isActive()){
253
//			TaxonNode test = CdmStore.getTaxonTreeService().getTaxonNodeByUuid(taxonNode.getUuid());
254
//			boolean isPersistable = CdmStore.getTaxonTreeService().getTaxonNodeByUuid(taxonNode.getUuid()) != null;
255
//			if (isPersistable) {
256
//				return this;
257
//			}
258
//		}
259
		return null;
260
	}
261

    
262
	/* (non-Javadoc)
263
	 * @see org.eclipse.ui.IEditorInput#getToolTipText()
264
	 */
265
	/**
266
	 * <p>getToolTipText</p>
267
	 *
268
	 * @return a {@link java.lang.String} object.
269
	 */
270
	public String getToolTipText() {
271
		return getName();
272
	}
273

    
274
	/* (non-Javadoc)
275
	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
276
	 */
277
	/** {@inheritDoc} */
278
	public Object getAdapter(Class adapter) {
279

    
280
		if (adapter == Taxon.class) {
281
			return getTaxon();
282
		}
283
		
284
		if (adapter == TaxonNode.class) {
285
			return taxonNode;
286
		}
287
		
288
		return null;
289
	}
290
	
291
	/**
292
	 * {@inheritDoc}
293
	 *
294
	 * Overrides equals to ensure that a taxon can only be edited by
295
	 * one editor at a time.
296
	 */
297
	public boolean equals(Object obj) {
298
		if (TaxonEditorInput.class.equals(obj.getClass()) 
299
				&& getTaxon() != null
300
				&& getTaxon().equals(((TaxonEditorInput) obj).getTaxon())){
301
			if(((TaxonEditorInput) obj).getInitiallySelectedTaxonBase() != null){
302
				setInitiallySelectedTaxonBase(((TaxonEditorInput) obj).getInitiallySelectedTaxonBase());
303
			}
304
			return true;
305
		}
306
		return false;
307
	}
308

    
309
	/**
310
	 * <p>getTaxon</p>
311
	 *
312
	 * @return the taxon
313
	 */
314
	public Taxon getTaxon(){
315
		if(taxon == null){
316
			List<String> TAXON_INIT_STRATEGY = Arrays.asList(new String []{
317
					// CdmBase 					: toOne-> "created, createdBy, uuid"
318
					// VersionableEntity 		: toOne-> "updated, updatedBy"
319
					// AnnotatableEntity 		: toMany-> "annotations, markers"
320
					// IdentifiableEntity		: toMany-> "credits, extensions, rights, sources" 
321
					//							: toOne-> "lsid"
322
					// TaxonBase				: toOne-> "homotypicgroup, name, sec"
323
					// Taxon					: toMany-> "descriptions, heterotypicSynonymyGroups, homotypicSynonymsByHomotypicGroup, homotypicSynonymsByHomotypicRelationship, homotypicSynonymyGroups, misappliedNames, relationsFromThisTaxon, relationsToThisTaxon, synonymNames, synonymRelations, synonyms, synonymsSortedByType, taxonNodes, taxonRelations"
324
					// 							: toOne-> "imageGallery"
325
					"*",
326

    
327
					// CdmBase 					: toOne-> "created, createdBy, uuid"
328
					// VersionableEntity 		: toOne-> "updated, updatedBy"
329
					// AnnotatableEntity 		: toMany-> "" (available: "annotations, markers")
330
					// LanguageStringBase		: toOne-> "language"
331
					// Annotation				: toOne-> "annotatedObj, annotationType, commentator, linkbackUrl
332
					"annotations.$",
333

    
334
					// CdmBase 					: toOne-> "created, createdBy, uuid"
335
					// VersionableEntity 		: toOne-> "updated, updatedBy"
336
					// Marker					: toOne-> "markedObj, markerType"	
337
					"markers.$",
338
					"markers.markerType.$",
339

    
340
					// CdmBase 					: toOne-> "created, createdBy, uuid"
341
					// AnnotatableEntity 		: toMany-> "" (available: "annotations, markers")
342
					// LanguageStringBase		: toOne-> "language"
343
					// Annotation				: toOne-> "annotatedObj, annotationType, commentator, linkbackUrl
344
					// Credit					: toOne-> "agent"	
345
					"credits.$",
346

    
347
					// CdmBase 					: toOne-> "created, createdBy, uuid"
348
					// VersionableEntity 		: toOne-> "updated, updatedBy"
349
					// Extension				: toOne-> "extendedObj, type"	
350
					"extensions.$",
351
					"extensions.type.$",
352

    
353
					// CdmBase 					: toOne-> "created, createdBy, uuid"
354
					// VersionableEntity 		: toOne-> "updated, updatedBy"
355
					// AnnotatableEntity 		: toMany-> "" (available: "annotations, markers")
356
					// LanguageStringBase		: toOne-> "language"
357
					// Rights					: toOne-> "agent, type, uri"	
358
					"rights.$",
359

    
360
					// CdmBase 					: toOne-> "created, createdBy, uuid"
361
					// VersionableEntity 		: toOne-> "updated, updatedBy"
362
					// AnnotatableEntity 		: toMany-> "" (available: "annotations, markers")
363
					// ReferencedEntityBase		: toOne-> "citation" 	
364
					// OriginalSourceBase		: 	
365
					// IdentifiableSource		: toOne-> "sourcedObj"	
366
					"sources.$",
367

    
368
					// CdmBase 					: toOne-> "created, createdBy, uuid"
369
					// AnnotatableEntity 		: toMany-> "" (available: "annotations, markers")
370
					// HomotypicalGroup			: toMany-> "" (available: "basionymAndReplacedSynonymRelations, basionyms, basionymsOrReplacedSynonyms, nameTypeDesignations, newCombinations, replacedSynonym, specimenTypeDesignations, synonymsInGroup, typeDesignations, typifiedNames, unrelatedNames" )  
371
					"homotypicGroup.$",
372

    
373
					// CdmBase 					: toOne-> "created, createdBy, uuid"
374
					// AnnotatableEntity 		: toMany-> "" (available: "annotations, markers")
375
					// TaxonNameBase			: toMany-> "" (available: "basionyms, descriptions, nameRelations, nameTypeDesignations, relationsFromThisName, relationsToThisName, specimenTypeDesignations, specimenTypeDesignationsOfHomotypicalGroup, status, synonyms, taggedName, taxa, taxonBases, typeDesignations" ) 
376
					//							: toOne-> "basionym, citation, homotypicalGroup, nomenclaturalCode, nomenclaturalReference, rank"
377
					// ViralName 
378
					// NonViralName				: toMany->"" (available: "childRelationships, hybridChildRelations, hybridParentRelations, orderedChildRelationships, parentRelationships") 
379
					//							: toOne-> "basionymAuthorTeam, combinationAuthorTeam, exBasionymAuthorTeam, exCombinationAuthorTeam"
380
					"name.$",
381

    
382
					// CdmBase 					: toOne-> "created, createdBy, uuid"
383
					// VersionableEntity 		: toOne-> "updated, updatedBy"
384
					// AnnotatableEntity 		: toMany-> "annotations, markers"
385
					// IdentifiableEntity		: toMany-> "credits, extensions, rights, sources" 
386
					//							: toOne-> "lsid"
387
					// IdentifiableMediaEntity	: toMany->"" (available: "media") 
388
					// Reference				: toOne->"authorTeam, datePublished, inBook, inJournal, inProceedings, inReference, inSeries, institution, school, type, uri" 
389
					"sec.$",
390
					
391
					// CdmBase 					: toOne-> "created, createdBy, uuid"
392
					// AnnotatableEntity 		: toMany-> "annotations, markers"
393
					// IdentifiableEntity		: toMany-> "credits, extensions, rights, sources" 
394
					//							: toOne-> "lsid"
395
					// DescriptionBase			: toMany->"" (available: "describedSpecimenOrObservations, descriptiveSystem, elements, workingSets" )
396
					// TaxonDescription			: toMany->"" (available: "geoScopes, scopes" )
397
					//							: toOne-> "taxon"
398
					"descriptions.$",
399

    
400
					
401
					// CdmBase 					: toOne-> "created, createdBy, uuid"
402
					// VersionableEntity 		: toOne-> "updated, updatedBy"
403
					// AnnotatableEntity 		: toMany-> "annotations, markers"
404
					// ReferencedEntityBase		: toOne-> "citation" 	
405
					// RelationshipBase			: 
406
					// TaxonRelationship		: toOne->"fromTaxon, relatedFrom, relatedTo, toTaxon, type"
407
					"relationsFromThisTaxon.$",
408

    
409
					// CdmBase 					: toOne-> "created, createdBy, uuid"
410
					// VersionableEntity 		: toOne-> "updated, updatedBy"
411
					// AnnotatableEntity 		: toMany-> "annotations, markers"
412
					// ReferencedEntityBase		: toOne-> "citation" 	
413
					// RelationshipBase			: 
414
					// TaxonRelationship		: toOne->"fromTaxon, relatedFrom, relatedTo, toTaxon, type"
415
					"relationsToThisTaxon.$",
416

    
417
					// CdmBase 					: toOne-> "created, createdBy, uuid"
418
					// VersionableEntity 		: toOne-> "updated, updatedBy"
419
					// AnnotatableEntity 		: toMany-> "annotations, markers"
420
					// ReferencedEntityBase		: toOne-> "citation" 	
421
					// RelationshipBase			: 
422
					// SynonymRelationship		: toOne->"acceptedTaxon, relatedFrom, relatedTo, synonym, type"
423
					"synonymRelations.$",
424

    
425
					// CdmBase 					: toOne-> "created, createdBy, uuid"
426
					// VersionableEntity 		: toOne-> "updated, updatedBy"
427
					// AnnotatableEntity 		: toMany-> "annotations, markers"
428
					// IdentifiableEntity		: toMany-> "credits, extensions, rights, sources" 
429
					//							: toOne-> "lsid"
430
					// TaxonBase				: toOne-> "homotypicgroup, name, sec"
431
					// Synonym					: toMany-> "" (available: "acceptedTaxa, relationType, synonymRelations" )
432
					"synonyms.$",
433

    
434

    
435
					"misappliedNames.$",
436
					"misappliedNames.name.extensions.type.$",
437
					"misappliedNames.name.status.$",
438
					"misappliedNames.name.status.type.$",
439
					"misappliedNames.name.descriptions.elements.$",
440
					"misappliedNames.name.typeDesignations.$",
441
					"misappliedNames.name.typeDesignations.typeStatus.$",
442

    
443
//					"relationsFromThisTaxon.fromTaxon.$",
444
//					"relationsFromThisTaxon.fromTaxon.name.status.$",
445
//					"relationsFromThisTaxon.fromTaxon.name.status.type.$",
446
//					"relationsFromThisTaxon.fromTaxon.name.descriptions.elements.$",
447
//					"relationsFromThisTaxon.fromTaxon.name.typeDesignations.typeStatus.$",
448
//					"relationsFromThisTaxon.toTaxon.$",
449
////					"relationsFromThisTaxon.toTaxon.name.extensions.type.$",
450
//					"relationsFromThisTaxon.toTaxon.name.status.$",
451
//					"relationsFromThisTaxon.toTaxon.name.status.type.$",
452
//					"relationsFromThisTaxon.toTaxon.name.descriptions.elements.$",
453
//					"relationsFromThisTaxon.toTaxon.name.typeDesignations.typeStatus.$",
454

    
455
//					"relationsToThisTaxon.fromTaxon.$",
456
//					"relationsToThisTaxon.fromTaxon.name.extensions.type.$",
457
//					"relationsToThisTaxon.fromTaxon.name.status.type.$",
458
//					"relationsToThisTaxon.fromTaxon.name.descriptions.elements.$",
459
//					"relationsToThisTaxon.fromTaxon.name.typeDesignations.typeStatus.$",
460
//					"relationsToThisTaxon.toTaxon.$",
461
//					"relationsToThisTaxon.toTaxon.name.status.type.$",
462
//					"relationsToThisTaxon.toTaxon.name.descriptions.elements.$",
463
//					"relationsToThisTaxon.toTaxon.name.typeDesignations.typeStatus.$",
464

    
465
					// TaxonNameEditor.createOrUpdateNameComposites()
466
					// ContainerFactory.createOrUpdateAcceptedTaxonsHomotypicGroup()
467
					"name.homotypicalGroup.typifiedNames.$",
468
					"name.homotypicalGroup.synonymsInGroup",
469
					"name.synonymRelations",
470
					"name.descriptions.elements.$",
471
					// ContainerFactory.createOrUpdateAcceptedTaxonsHomotypicGroup()
472
					"name.homotypicalGroup.$",
473
					"name.homotypicalGroup.typifiedNames:$",					
474

    
475
					"synonymRelations.synonym.name.$",
476
					"synonymRelations.synonym.name.descriptions.elements.$",
477
					"synonymRelations.synonym.name.homotypicalGroup.$",
478
					"synonymRelations.synonym.name.homotypicalGroup.typifiedNames.$",
479
					"synonymRelations.synonym.name.status.$",
480

    
481
					"synonymRelations.synonym.name.typeDesignations.$",
482
					"synonymRelations.synonym.name.typeDesignations.typifiedNames.$",
483
					"synonymRelations.synonym.name.typeDesignations.typeStatus.$",
484
					"synonymRelations.synonym.name.typeDesignations.typeName.$",
485
					"synonymRelations.synonym.name.typeDesignations.typeSpecimen.$",
486

    
487
					
488
					// CdmBase 					: toOne-> "created, createdBy, uuid"
489
					// VersionableEntity 		: toOne-> "updated, updatedBy"
490
					// AnnotatableEntity 		: toMany-> "annotations, markers"
491
					// DescriptionElementBase	: toMany->"" (available: "media, modifiers, modifyingText, sources" )
492
					//							: toOne-> "feature, inDescription"
493
					// CategoricalData			: toMany->"" (available: "states" )
494
					// CommonTaxaName			: toOne->"area, language"
495
					// Distribution				: toOne->"area, status"
496
					// IndividualsAssociation	: toMany->"" (available: "description" )
497
					//							: toOne-> "associatedSpecimenOrObserviation"
498
					// QuantitativeData			: toMany->"" (available: "statisticalValues" )
499
					//							: toOne-> "unit"
500
					// TaxonInteraction			: toMany->"" (available: "descriptions" )
501
					//							: toOne-> "taxon2"
502
					// TextData					: toMany->"" (available: "multilanguageText" )
503
					//							: toOne-> "format, languageText, preferredLanguageString"
504
					"descriptions.elements.$",
505

    
506
					"descriptions.elements.annotations.$",
507
					"descriptions.elements.markers.markerType.$",
508

    
509
					"descriptions.elements.modifiers.$",
510
					"descriptions.elements.modifyingText.$",
511
					
512
					"descriptions.elements.description.$",
513

    
514
					"descriptions.elements.associatedSpecimenOrObservation.$",
515
					"descriptions.elements.associatedSpecimenOrObservation.annotations.$",
516
					"descriptions.elements.associatedSpecimenOrObservation.annotations.annotationType.$",
517
					"descriptions.elements.associatedSpecimenOrObservation.markers.markerType.$",
518
					"descriptions.elements.associatedSpecimenOrObservation.credits.$",
519
					"descriptions.elements.associatedSpecimenOrObservation.extensions.type.$",
520
					"descriptions.elements.associatedSpecimenOrObservation.rights.$",
521
					"descriptions.elements.associatedSpecimenOrObservation.sources.$",
522
					"descriptions.elements.associatedSpecimenOrObservation.media.$",
523
					"descriptions.elements.associatedSpecimenOrObservation.media.representations.parts.$",
524
					
525
					"descriptions.elements.descriptions.$",
526

    
527
					"descriptions.elements.multilanguageText.$",
528
					
529
					// CdmBase 					: toOne-> "created, createdBy, uuid"
530
					// VersionableEntity 		: toOne-> "updated, updatedBy"
531
					// AnnotatableEntity 		: toMany-> "annotations, markers"
532
					// IdentifiableEntity		: toMany-> "credits, extensions, rights, sources" 
533
					//							: toOne-> "lsid"
534
					// Media					: toMany->"allDescriptions, allTitles, representations"
535
					//							: toOne-> "artist, description, mediaCreated, title"
536
		            "descriptions.elements.media.$",
537
//		            "descriptions.elements.media.allDescriptions.$",
538
					// CdmBase 					: toOne-> "created, createdBy, uuid"
539
					// VersionableEntity 		: toOne-> "updated, updatedBy"
540
		            // MediaRepresentation		: toMany-> "parts"
541
					//							: toOne-> "media"
542
		            // MediaRepresentationPart	: toOne-> "mediaRepresentation, size, uri"
543
		            "descriptions.elements.media.representations.parts.$",
544

    
545
		            "descriptions.elements.media.annotations.$",
546
		            "descriptions.elements.media.annotations.annotationType.$",
547
		            "descriptions.elements.media.credits.$",
548
		            "descriptions.elements.media.extensions.$",
549
		            "descriptions.elements.media.extensions.type.$",
550
		            "descriptions.elements.media.markers.$",
551
		            "descriptions.elements.media.markers.marker.Type.$",
552
		            "descriptions.elements.media.rights.$",
553
		            "descriptions.elements.media.sources.$",
554

    
555
					"descriptions.elements.states.$",
556
					"descriptions.elements.statisticalValues.$",
557
		            
558
		            
559
		            // DescriptiveContentProvider.getContainerTreeForDesription()
560
		            // FeatureNodeContainerTree.getDescriptionsElementsForFeature()		            
561
		            // DescriptionHelper.getElementText()
562

    
563
		            // CdmBase 					: toOne-> "created, createdBy, uuid"
564
					// VersionableEntity 		: toOne-> "updated, updatedBy"
565
					// AnnotatableEntity 		: toMany-> "annotations, markers"
566
					// ReferencedEntityBase		: toOne-> "citation" 	
567
					// DescriptionElementSource	: toOne-> "nameUsedInSource, sourcedObj"
568
					"descriptions.elements.sources.$",
569

    
570
					// NamedArea.labelWithLevel()
571

    
572
		            // CdmBase 					: toOne-> "created, createdBy, uuid"
573
					// VersionableEntity 		: toOne-> "updated, updatedBy"
574
					// AnnotatableEntity 		: toMany-> "annotations, markers"
575
					// ReferencedEntityBase		: toOne-> "citation" 	
576
					// NamedArea				: toMany->"" (available: "allLevelList, generalizationOf, includes, waterbodiesOrCountries" )
577
					//							: toOne-> "hierarchieList, kindOf, level, partOf, pointApproximation, shape, type, validPeriod"
578
					"descriptions.elements.area.$",
579
					
580
					// NameRelationshipDetailSection.createElementComposite()
581
					// NameRelationshipDetailElement.setEntity()
582
					"name.nameRelations.$",
583

    
584
					
585
					"name.extensions.$",
586
					"name.extensions.type.$",
587
					
588
					"name.basionymAuthorTeam.$",					
589
					"name.basionymAuthorTeam.annotations.$",
590
					"name.basionymAuthorTeam.annotations.annotationType.$",
591
					"name.basionymAuthorTeam.markers.markerType.$",
592
					"name.basionymAuthorTeam.credits.$",
593
					"name.basionymAuthorTeam.extensions.type.$",
594
					"name.basionymAuthorTeam.rights.$",
595
					"name.basionymAuthorTeam.sources.$",
596
					"name.basionymAuthorTeam.media.$",
597
					"name.basionymAuthorTeam.media.representations.parts.$",
598
					"name.basionymAuthorTeam.teamMembers.$",
599
					"name.basionymAuthorTeam.teamMembers.annotations.$",
600
					"name.basionymAuthorTeam.teamMembers.annotations.annotationType.$",
601
					"name.basionymAuthorTeam.teamMembers.markers.markerType.$",
602
					"name.basionymAuthorTeam.teamMembers.credits.$",
603
					"name.basionymAuthorTeam.teamMembers.extensions.type.$",
604
					"name.basionymAuthorTeam.teamMembers.rights.$",
605
					"name.basionymAuthorTeam.teamMembers.sources.$",
606
					"name.basionymAuthorTeam.teamMembers.media.$",
607
					"name.basionymAuthorTeam.teamMembers.media.representations.parts.$",
608

    
609
					"name.combinationAuthorTeam.$",					
610
					"name.combinationAuthorTeam.annotations.$",
611
					"name.combinationAuthorTeam.annotations.annotationType.$",
612
					"name.combinationAuthorTeam.markers.markerType.$",
613
					"name.combinationAuthorTeam.credits.$",
614
					"name.combinationAuthorTeam.extensions.type.$",
615
					"name.combinationAuthorTeam.rights.$",
616
					"name.combinationAuthorTeam.sources.$",
617
					"name.combinationAuthorTeam.media.$",
618
					"name.combinationAuthorTeam.media.representations.parts.$",
619
					"name.combinationAuthorTeam.teamMembers.$",
620
					"name.combinationAuthorTeam.teamMembers.annotations.$",
621
					"name.combinationAuthorTeam.teamMembers.annotations.annotationType.$",
622
					"name.combinationAuthorTeam.teamMembers.markers.markerType.$",
623
					"name.combinationAuthorTeam.teamMembers.credits.$",
624
					"name.combinationAuthorTeam.teamMembers.extensions.type.$",
625
					"name.combinationAuthorTeam.teamMembers.rights.$",
626
					"name.combinationAuthorTeam.teamMembers.sources.$",
627
					"name.combinationAuthorTeam.teamMembers.media.$",
628
					"name.combinationAuthorTeam.teamMembers.media.representations.parts.$",
629

    
630
					"name.exBasionymAuthorTeam.$",					
631
					"name.exBasionymAuthorTeam.annotations.$",
632
					"name.exBasionymAuthorTeam.annotations.annotationType.$",
633
					"name.exBasionymAuthorTeam.markers.markerType.$",
634
					"name.exBasionymAuthorTeam.credits.$",
635
					"name.exBasionymAuthorTeam.extensions.type.$",
636
					"name.exBasionymAuthorTeam.rights.$",
637
					"name.exBasionymAuthorTeam.sources.$",
638
					"name.exBasionymAuthorTeam.media.$",
639
					"name.exBasionymAuthorTeam.media.representations.parts.$",
640
					"name.exBasionymAuthorTeam.teamMembers.$",
641
					"name.exBasionymAuthorTeam.teamMembers.annotations.$",
642
					"name.exBasionymAuthorTeam.teamMembers.annotations.annotationType.$",
643
					"name.exBasionymAuthorTeam.teamMembers.markers.markerType.$",
644
					"name.exBasionymAuthorTeam.teamMembers.credits.$",
645
					"name.exBasionymAuthorTeam.teamMembers.extensions.type.$",
646
					"name.exBasionymAuthorTeam.teamMembers.rights.$",
647
					"name.exBasionymAuthorTeam.teamMembers.sources.$",
648
					"name.exBasionymAuthorTeam.teamMembers.media.$",
649
					"name.exBasionymAuthorTeam.teamMembers.media.representations.parts.$",
650

    
651
					"name.exCombinationAuthorTeam.$",					
652
					"name.exCombinationAuthorTeam.annotations.$",
653
					"name.exCombinationAuthorTeam.annotations.annotationType.$",
654
					"name.exCombinationAuthorTeam.markers.markerType.$",
655
					"name.exCombinationAuthorTeam.credits.$",
656
					"name.exCombinationAuthorTeam.extensions.type.$",
657
					"name.exCombinationAuthorTeam.rights.$",
658
					"name.exCombinationAuthorTeam.sources.$",
659
					"name.exCombinationAuthorTeam.media.$",
660
					"name.exCombinationAuthorTeam.media.representations.parts.$",
661
					"name.exCombinationAuthorTeam.teamMembers.$",
662
					"name.exCombinationAuthorTeam.teamMembers.annotations.$",
663
					"name.exCombinationAuthorTeam.teamMembers.annotations.annotationType.$",
664
					"name.exCombinationAuthorTeam.teamMembers.markers.markerType.$",
665
					"name.exCombinationAuthorTeam.teamMembers.credits.$",
666
					"name.exCombinationAuthorTeam.teamMembers.extensions.type.$",
667
					"name.exCombinationAuthorTeam.teamMembers.rights.$",
668
					"name.exCombinationAuthorTeam.teamMembers.sources.$",
669
					"name.exCombinationAuthorTeam.teamMembers.media.$",
670
					"name.exCombinationAuthorTeam.teamMembers.media.representations.parts.$",
671
					
672
					"name.nomenclaturalReference.annotations.$",
673
					"name.nomenclaturalReference.annotations.annotationType.$",
674
					"name.nomenclaturalReference.authorTeam.$",
675
					"name.nomenclaturalReference.authorTeam.media.$",
676
					"name.nomenclaturalReference.authorTeam.media.representations.parts.$",
677
					"name.nomenclaturalReference.markers.markerType.$",
678
					"name.nomenclaturalReference.credits.$",
679
					"name.nomenclaturalReference.extensions.type.$",
680
					"name.nomenclaturalReference.rights.$",
681
					"name.nomenclaturalReference.rights.type.$",
682
					"name.nomenclaturalReference.sources.$",
683
					"name.nomenclaturalReference.media.$",
684
					"name.nomenclaturalReference.media.representations.parts.$",
685
					"name.nomenclaturalReference.inReference.$",
686
					"name.nomenclaturalReference.inReference.annotations.$",
687
					"name.nomenclaturalReference.inReference.annotations.annotationType.$",
688
					"name.nomenclaturalReference.inReference.markers.markerType.$",					
689

    
690
					"name.nomenclaturalReference.inReference.credits.$",
691
					"name.nomenclaturalReference.inReference.extensions.type.$",
692
					"name.nomenclaturalReference.inReference.rights.$",
693
					"name.nomenclaturalReference.inReference.rights.type.$",
694
					"name.nomenclaturalReference.inReference.sources.$",
695
					"name.nomenclaturalReference.inReference.media.$",
696
					"name.nomenclaturalReference.inReference.media.representations.parts.$",
697

    
698
					"name.status.$",
699
					"name.status.annotations.$",
700
					"name.status.annotations.annotationType.$",
701
					"name.status.markers.markerType.$",
702
					"name.status.type.$",
703

    
704
					"name.typeDesignations.$",
705
					"name.typeDesignations.typifiedNames.$",
706
					"name.typeDesignations.typeStatus.$",
707
					"name.typeDesignations.typeName.$",
708
					"name.typeDesignations.typeSpecimen.$",
709

    
710
			});
711
			
712
			taxon = (Taxon) CdmStore.getService(ITaxonService.class).load(taxonNode.getTaxon().getUuid(), TAXON_INIT_STRATEGY);
713
		}
714
		
715
		return taxon;
716
	}
717

    
718
//	public Taxon getTaxon(){
719
//		if(taxon == null){
720
//			List<String> TAXON_INIT_STRATEGY = AbasionymAuthorTeam.$",					
721
//					"*",
722
//					// synonyms
723
//					"synonymRelations.synonym.name.homotypicalGroup.typifiedNames",
724
//					"synonymRelations.synonym.name.status",
725
//					"synonymRelations.synonym.name.relationsToThisName.fromTaxon.name",
726
//					// synonym name
727
//					"synonymRelations.synonym.name.descriptions.elements",
728
//					"synonymRelations.synonym.name.typeDesignations", 
729
//					"synonymRelations.synonym.name.relationsToThisName",
730
//					"synonymRelations.synonym.name.relationsFromThisName",
731
//					"synonymRelations.synonym.name.homotypicalGroup.typifiedNames",
732
//					"synonymRelations.synonym.name.rank.representations",
733
//					"synonymRelations.synonym.name.status.type.representations",
734
//					// snonym name supplemental
735
//					"synonymRelations.synonym.name.annotations",
736
//					"synonymRelations.synonym.name.annotations.annotationType",
737
//					"synonymRelations.synonym.name.annotations.commentator",
738
//					"synonymRelations.synonym.name.markers",
739
//					"synonymRelations.synonym.name.markers.markerType",
740
//					"synonymRelations.synonym.name.credits",
741
//					"synonymRelations.synonym.name.extensions",
742
//					"synonymRelations.synonym.name.rights",
743
//					"synonymRelations.synonym.name.rights.agent",
744
//					"synonymRelations.synonym.name.rights.type",
745
//					"synonymRelations.synonym.name.sources",
746
//					"synonymRelations.synonym.name.sources.citation",
747
//					"synonymRelations.synonym.name.combinationAuthor",
748
//					"synonymRelations.synonym.name.combinationAuthor.contact.addresses",
749
//					"synonymRelations.synonym.name.combinationAuthor.contact.emailAddresses",
750
//					"synonymRelations.synonym.name.combinationAuthor.contact.faxNumbers",
751
//					"synonymRelations.synonym.name.combinationAuthor.contact.phoneNumbers",
752
//					"synonymRelations.synonym.name.combinationAuthor.contact.urls",
753
//					"synonymRelations.synonym.name.combinationAuthor.institutionalMembership",
754
//					"synonymRelations.synonym.name.combinationAuthor.institutionalMembership.types",
755
//					"synonymRelations.synonym.name.exCombinationAuthor",
756
//					"synonymRelations.synonym.name.exCombinationAuthor.contact.addresses",
757
//					"synonymRelations.synonym.name.exCombinationAuthor.contact.emailAddresses",
758
//					"synonymRelations.synonym.name.exCombinationAuthor.contact.faxNumbers",
759
//					"synonymRelations.synonym.name.exCombinationAuthor.contact.phoneNumbers",
760
//					"synonymRelations.synonym.name.exCombinationAuthor.contact.urls",
761
//					"synonymRelations.synonym.name.exCombinationAuthor.institutionalMembership",
762
//					"synonymRelations.synonym.name.exCombinationAuthor.institutionalMembership.types",
763
//					"synonymRelations.synonym.name.basionymAuthor",
764
//					"synonymRelations.synonym.name.basionymAuthor.contact.addresses",
765
//					"synonymRelations.synonym.name.basionymAuthor.contact.emailAddresses",
766
//					"synonymRelations.synonym.name.basionymAuthor.contact.faxNumbers",
767
//					"synonymRelations.synonym.name.basionymAuthor.contact.phoneNumbers",
768
//					"synonymRelations.synonym.name.basionymAuthor.contact.urls",
769
//					"synonymRelations.synonym.name.basionymAuthor.institutionalMembership",
770
//					"synonymRelations.synonym.name.basionymAuthor.institutionalMembership.types",
771
//					"synonymRelations.synonym.name.exBasionymAuthor",
772
//					"synonymRelations.synonym.name.exBasionymAuthor.contact.addresses",
773
//					"synonymRelations.synonym.name.exBasionymAuthor.contact.emailAddresses",
774
//					"synonymRelations.synonym.name.exBasionymAuthor.contact.faxNumbers",
775
//					"synonymRelations.synonym.name.exBasionymAuthor.contact.phoneNumbers",
776
//					"synonymRelations.synonym.name.exBasionymAuthor.contact.urls",
777
//					"synonymRelations.synonym.name.exBasionymAuthor.institutionalMembership",
778
//					"synonymRelations.synonym.name.exBasionymAuthor.institutionalMembership.types",
779
//					"synonymRelations.synonym.name.nomenclaturalReference",
780
//					"synonymRelations.synonym.name.sec",
781
//					"synonymRelations.synonym.sec",
782
//					"synonymRelations.synonym.annotations",
783
//					"synonymRelations.synonym.annotations.annotationType",
784
//					"synonymRelations.synonym.annotations.commentator",
785
//					"synonymRelations.synonym.markers",
786
//					"synonymRelations.synonym.markers.markerType",
787
//					"synonymRelations.synonym.credits",
788
//					"synonymRelations.synonym.extensions",
789
//					"synonymRelations.synonym.rights",
790
//					"synonymRelations.synonym.rights.agent",
791
//					"synonymRelations.synonym.rights.type",
792
//					"synonymRelations.synonym.sources",
793
//					"synonymRelations.synonym.sources.citation",
794
//					//
795
//					"relationsToThisTaxon",
796
//					"relationsFromThisTaxon",
797
//					// taxon relations 
798
//					"relationsToThisName.fromTaxon.name",
799
//					// the name
800
//					"name.nomenclaturalReference",
801
//					"name.descriptions.elements",
802
//					"name.typeDesignations", 
803
//					"name.nameRelations.type",
804
//					"name.homotypicalGroup.typifiedNames",
805
//					"homotypicGroup.synonymsInGroup.synonym.sec",
806
//					"homotypicGroup.synonymsInGroup.synonym.name.nomenclaturalReference",
807
//					"homotypicGroup.synonymsInGroup.synonym.name.annotations",
808
//					"homotypicGroup.synonymsInGroup.synonym.name.annotations.annotationType",
809
//					"homotypicGroup.synonymsInGroup.synonym.name.annotations.commentator",
810
//					"homotypicGroup.synonymsInGroup.synonym.name.combinationAuthor",
811
//					"homotypicGroup.synonymsInGroup.synonym.name.combinationAuthor.contact.addresses",
812
//					"homotypicGroup.synonymsInGroup.synonym.name.combinationAuthor.contact.emailAddresses",
813
//					"homotypicGroup.synonymsInGroup.synonym.name.combinationAuthor.contact.faxNumbers",
814
//					"homotypicGroup.synonymsInGroup.synonym.name.combinationAuthor.contact.phoneNumbers",
815
//					"homotypicGroup.synonymsInGroup.synonym.name.combinationAuthor.contact.urls",
816
//					"homotypicGroup.synonymsInGroup.synonym.name.combinationAuthor.institutionalMembership",
817
//					"homotypicGroup.synonymsInGroup.synonym.name.combinationAuthor.institutionalMembership.types",
818
//					"homotypicGroup.synonymsInGroup.synonym.name.exCombinationAuthor",
819
//					"homotypicGroup.synonymsInGroup.synonym.name.exCombinationAuthor.contact.addresses",
820
//					"homotypicGroup.synonymsInGroup.synonym.name.exCombinationAuthor.contact.emailAddresses",
821
//					"homotypicGroup.synonymsInGroup.synonym.name.exCombinationAuthor.contact.faxNumbers",
822
//					"homotypicGroup.synonymsInGroup.synonym.name.exCombinationAuthor.contact.phoneNumbers",
823
//					"homotypicGroup.synonymsInGroup.synonym.name.exCombinationAuthor.contact.urls",
824
//					"homotypicGroup.synonymsInGroup.synonym.name.exCombinationAuthor.institutionalMembership",
825
//					"homotypicGroup.synonymsInGroup.synonym.name.exCombinationAuthor.institutionalMembership.types",
826
//					"homotypicGroup.synonymsInGroup.synonym.name.basionymAuthor",
827
//					"homotypicGroup.synonymsInGroup.synonym.name.basionymAuthor.contact.addresses",
828
//					"homotypicGroup.synonymsInGroup.synonym.name.basionymAuthor.contact.emailAddresses",
829
//					"homotypicGroup.synonymsInGroup.synonym.name.basionymAuthor.contact.faxNumbers",
830
//					"homotypicGroup.synonymsInGroup.synonym.name.basionymAuthor.contact.phoneNumbers",
831
//					"homotypicGroup.synonymsInGroup.synonym.name.basionymAuthor.contact.urls",
832
//					"homotypicGroup.synonymsInGroup.synonym.name.basionymAuthor.institutionalMembership",
833
//					"homotypicGroup.synonymsInGroup.synonym.name.basionymAuthor.institutionalMembership.types",
834
//					"homotypicGroup.synonymsInGroup.synonym.name.exBasionymAuthor",
835
//					"homotypicGroup.synonymsInGroup.synonym.name.exBasionymAuthor.contact.addresses",
836
//					"homotypicGroup.synonymsInGroup.synonym.name.exBasionymAuthor.contact.emailAddresses",
837
//					"homotypicGroup.synonymsInGroup.synonym.name.exBasionymAuthor.contact.faxNumbers",
838
//					"homotypicGroup.synonymsInGroup.synonym.name.exBasionymAuthor.contact.phoneNumbers",
839
//					"homotypicGroup.synonymsInGroup.synonym.name.exBasionymAuthor.contact.urls",
840
//					"homotypicGroup.synonymsInGroup.synonym.name.exBasionymAuthor.institutionalMembership",
841
//					"homotypicGroup.synonymsInGroup.synonym.name.exBasionymAuthor.institutionalMembership.types",
842
//					"homotypicGroup.synonymsInGroup.synonym.name.rights",
843
//					"homotypicGroup.synonymsInGroup.synonym.name.rights.agent",
844
//					"homotypicGroup.synonymsInGroup.synonym.name.rights.type",
845
//					"homotypicGroup.synonymsInGroup.synonym.annotations.annotationType",
846
//					"homotypicGroup.synonymsInGroup.synonym.annotations.commentator",
847
//					"name.rank.representations",
848
//					"name.status.type.representations",
849
//					// name supplemental
850
//					"name.combinationAuthor",
851
//					"name.combinationAuthor.contact.addresses",
852
//					"name.combinationAuthor.contact.emailAddresses",
853
//					"name.combinationAuthor.contact.faxNumbers",
854
//					"name.combinationAuthor.contact.phoneNumbers",
855
//					"name.combinationAuthor.contact.urls",
856
//					"name.combinationAuthor.institutionalMembership",
857
//					"name.combinationAuthor.institutionalMembership.types",
858
//					"name.exCombinationAuthor",
859
//					"name.exCombinationAuthor.contact.addresses",
860
//					"name.exCombinationAuthor.contact.emailAddresses",
861
//					"name.exCombinationAuthor.contact.faxNumbers",
862
//					"name.exCombinationAuthor.contact.phoneNumbers",
863
//					"name.exCombinationAuthor.contact.urls",
864
//					"name.exCombinationAuthor.institutionalMembership",
865
//					"name.exCombinationAuthor.institutionalMembership.types",
866
//					"name.basionymAuthor",
867
//					"name.basionymAuthor.contact.addresses",
868
//					"name.basionymAuthor.contact.emailAddresses",
869
//					"name.basionymAuthor.contact.faxNumbers",
870
//					"name.basionymAuthor.contact.phoneNumbers",
871
//					"name.basionymAuthor.contact.urls",
872
//					"name.basionymAuthor.institutionalMembership",
873
//					"name.basionymAuthor.institutionalMembership.types",
874
//					"name.exBasionymAuthor",
875
//					"name.exBasionymAuthor.contact.addresses",
876
//					"name.exBasionymAuthor.contact.emailAddresses",
877
//					"name.exBasionymAuthor.contact.faxNumbers",
878
//					"name.exBasionymAuthor.contact.phoneNumbers",
879
//					"name.exBasionymAuthor.contact.urls",
880
//					"name.exBasionymAuthor.institutionalMembership",
881
//					"name.exBasionymAuthor.institutionalMembership.types",
882
//					"name.nomenclaturalReference",
883
//					"name.annotations",
884
//					"name.annotations.annotationType",
885
//					"name.annotations.commentator",
886
//					"name.markers",
887
//					"name.markers.markerType",
888
//					"name.credits",
889
//					"name.extensions",
890
//					"name.rights",
891
//					"name.rights.agent",
892
//					"name.rights.type",
893
//					"name.sources",
894
//					"name.sources.citation",
895
//					"media.annotations",
896
//					"media.annotations.annotationType",
897
//					"media.annotations.commentator",
898
//					"media.markers",
899
//					"media.markers.markerType",
900
//					"media.credits",
901
//					"media.extensions",
902
//					"media.rights",
903
//					"media.rights.type",
904
//					"media.rights.agent",
905
//					"media.sources",
906
//					"media.sources.citation",
907
//					"media.representations",
908
//					"media.representations.parts",
909
//					"media.title",
910
//					"media.allDescriptions",
911
////					"media.representations.mediaRepresentationParts.mediaRepresentation",
912
//					"rights.type",
913
//					"rights.agent",
914
//					// taxon descriptions
915
//					"descriptions.describedSpecimenOrObservations",
916
//					"descriptions.sources",
917
//					"descriptions.sources.citation",
918
//					"descriptions.scopes",
919
//					// taxon description supplemental
920
//					"descriptions.annotations",
921
//					"descriptions.annotations.annotationType",
922
//					"descriptions.annotations.commentator",
923
//					"descriptions.markers",
924
//					"descriptions.markers.markerType",
925
//					"descriptions.credits",
926
//					"descriptions.extensions",
927
//					"descriptions.rights",
928
//					// description elements
929
//					"descriptions.elements.*",
930
//					"descriptions.elements.media",
931
//					"descriptions.elements.media.title",
932
//					"descriptions.elements.media.allDescriptions",
933
//					"descriptions.elements.media.representations",
934
//					"descriptions.elements.media.representations.parts",
935
////					"descriptions.elements.media.representations.mediaRepresentationParts.mediaRepresentation",
936
//					"descriptions.elements.modifiers",
937
//					"descriptions.elements.modifyingText",
938
//					"descriptions.elements.sources",
939
//					"descriptions.elements.sources.citation",
940
//					"descriptions.elements.sources.nameUsedInSource",
941
//					"descriptions.elements.area.$",
942
//					"descriptions.elements.multilanguageText",
943
//					"descriptions.elements.media",
944
//					"descriptions.elements.media.annotations",
945
//					"descriptions.elements.media.annotations.annotationType",
946
//					"descriptions.elements.media.annotations.commentator",
947
//					"descriptions.elements.media.markers",
948
//					"descriptions.elements.media.markers.markerType",
949
//					"descriptions.elements.media.credits",
950
//					"descriptions.elements.media.extensions",
951
//					"descriptions.elements.media.rights",
952
//					"descriptions.elements.media.rights.type",
953
//					"descriptions.elements.media.rights.agent",
954
//					"descriptions.elements.media.sources",
955
//					"descriptions.elements.media.sources.citation",
956
//					// descriptin element supplemental
957
//					"descriptions.elements.annotations",
958
//					"descriptions.elements.annotations.annotationType",
959
//					"descriptions.elements.annotations.commentator",
960
//					"descriptions.elements.markers",
961
//					"descriptions.elements.markers.markerType",
962
//					"descriptions.elements.credits",
963
//					"descriptions.elements.extensions",
964
//					"descriptions.elements.rights",
965
//					"descriptions.elements.sources",
966
//					"descriptions.elements.sources.citation",
967
//					"descriptions.elements.sources.annotations",
968
//					"descriptions.elements.sources.annotations.annotationType",
969
//					"descriptions.elements.sources.markers",
970
//					"descriptions.elements.sources.markers.markerType",
971
//					// supplemental
972
//					"annotations.annotationType",
973
//					"annotations.commentator",
974
//					"markers",
975
//					"markers.markerType",
976
//					"credits",
977
//					"extensions",
978
//					"rights",
979
//					"sources",
980
//					"sources.citation",
981
//					"sec",
982
//					"authorTeam",
983
//					"authorTeam.contact.addresses",
984
//					"authorTeam.contact.emailAddresses",
985
//					"authorTeam.contact.faxNumbers",
986
//					"authorTeam.contact.phoneNumbers",
987
//					"authorTeam.contact.urls",
988
//					"authorTeam.institutionalMembership",
989
//					"authorTeam.institutionalMembership.types",
990
//					"authorTeam.teamMembers",
991
//					"authorTeam.teamMembers.institutionalMembership",
992
//					"authorTeam.teamMembers.institutionalMembership.types",
993
//					"agent",
994
//					"agent.contact.addresses",
995
//					"agent.contact.emailAddresses",
996
//					"agent.contact.faxNumbers",
997
//					"agent.contact.phoneNumbers",
998
//					"agent.contact.urls",
999
//					"agent.institutionalMembership",
1000
//					"agent.institutionalMembership.types",
1001
//					"agent.teamMembers",
1002
//					"agent.teamMembers.institutionalMembership",
1003
//					"agent.teamMembers.institutionalMembership.types"
1004
//					});
1005
//			
1006
//			taxon = (Taxon) CdmStore.getService(ITaxonService.class).load(taxonNode.getTaxon().getUuid(), TAXON_INIT_STRATEGY);
1007
//		}
1008
//		
1009
//		return taxon;
1010
//	}
1011
	
1012
	/**
1013
	 * <p>Getter for the field <code>taxonNode</code>.</p>
1014
	 *
1015
	 * @return the taxonNode
1016
	 */
1017
	public TaxonNode getTaxonNode() {
1018
		return taxonNode;
1019
	}
1020
	
1021
	/*
1022
	 * (non-Javadoc)
1023
	 * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
1024
	 */
1025
	/**
1026
	 * <p>getConversationHolder</p>
1027
	 *
1028
	 * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
1029
	 */
1030
	public ConversationHolder getConversationHolder() {
1031
		return conversation;
1032
	}
1033

    
1034
	/*
1035
	 * (non-Javadoc)
1036
	 * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostCrudObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmCrudEvent)
1037
	 */
1038
	/** {@inheritDoc} */
1039
	public void update(CdmDataChangeMap events) {
1040
		if(dataChangeBehavior == null){
1041
			dataChangeBehavior = new TaxonEditorInputDataChangeBehaviour(this);
1042
		}
1043
		
1044
		DataChangeBridge.handleDataChange(events, dataChangeBehavior);
1045
	}
1046

    
1047
	/* (non-Javadoc)
1048
	 * @see org.eclipse.ui.IPersistableElement#getFactoryId()
1049
	 */
1050
	/**
1051
	 * <p>getFactoryId</p>
1052
	 *
1053
	 * @return a {@link java.lang.String} object.
1054
	 */
1055
	public String getFactoryId() {
1056
		return TaxonEditorInputFactory.getFactoryId();
1057
	}
1058

    
1059
	/* (non-Javadoc)
1060
	 * @see org.eclipse.ui.IPersistable#saveState(org.eclipse.ui.IMemento)
1061
	 */
1062
	/** {@inheritDoc} */
1063
	public void saveState(IMemento memento) {
1064
		TaxonEditorInputFactory.saveState(memento, this);
1065
	}
1066

    
1067
    
1068
    /**
1069
     * <p>Setter for the field <code>initiallySelectedTaxonBase</code>.</p>
1070
     *
1071
     * @param taxonBase a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.
1072
     */
1073
    public void setInitiallySelectedTaxonBase(TaxonBase taxonBase) {
1074
		this.initiallySelectedTaxonBase = taxonBase;
1075
	}
1076

    
1077
	/**
1078
	 * <p>Getter for the field <code>initiallySelectedTaxonBase</code>.</p>
1079
	 *
1080
	 * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.
1081
	 */
1082
	public TaxonBase getInitiallySelectedTaxonBase() {
1083
		return initiallySelectedTaxonBase;
1084
	}
1085
}
(13-13/16)