Project

General

Profile

Download (2.97 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 *
3
 */
4
package eu.etaxonomy.taxeditor.newWizard;
5

    
6
import java.util.UUID;
7

    
8
import org.apache.commons.lang.StringUtils;
9

    
10
import eu.etaxonomy.cdm.api.service.IClassificationService;
11
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
12
import eu.etaxonomy.cdm.model.taxon.Classification;
13
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
14
import eu.etaxonomy.cdm.model.taxon.Taxon;
15
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
16
import eu.etaxonomy.taxeditor.store.CdmStore;
17
import eu.etaxonomy.taxeditor.store.StoreUtil;
18
import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeWizardPage;
19

    
20
/**
21
 * <p>NewTaxonNodeWizard class.</p>
22
 *
23
 * @author n.hoffmann
24
 * @created Sep 15, 2009
25
 * @version 1.0
26
 */
27
public class NewTaxonNodeWizard extends AbstractNewEntityWizard<ITaxonTreeNode>{
28

    
29
	private TaxonNodeWizardPage taxonNodePage;
30
	private boolean openEmptyEditor;
31
	private UUID generatedTaxonNodeUuid;
32

    
33
	@Override
34
	public void addPages() {
35
		taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity());
36
		addPage(taxonNodePage);
37
	}
38

    
39
	@Override
40
	protected void saveEntity() {
41
		if(taxonNodePage.getTaxon() == null || StringUtils.isEmpty(taxonNodePage.getTaxon().getName().getFullTitleCache())){
42
			openEmptyEditor = true;
43
		}else{
44
			getConversationHolder().bind();
45
			ITaxonTreeNode parent = getParentTreeNode();
46
			Taxon taxon = taxonNodePage.getTaxon();
47
			try{
48
				TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference());
49
				generatedTaxonNodeUuid = CdmStore.getService(ITaxonNodeService.class).saveOrUpdate(taxonNode);
50
			}catch(IllegalArgumentException e){
51
				StoreUtil.warningDialog("Taxon already exists in classfication", getClass(), e.getMessage());
52
			}
53
		}
54
	}
55

    
56
	@Override
57
	protected ITaxonTreeNode createNewEntity() {
58
		if(getSelection() != null){
59
			Object selectedObject = getSelection().getFirstElement();
60
			if(selectedObject instanceof ITaxonTreeNode){
61
			    ITaxonTreeNode treeNode = (ITaxonTreeNode) selectedObject;
62

    
63
				if(treeNode instanceof Classification){
64
					return CdmStore.getService(IClassificationService.class).load(treeNode.getUuid());
65
				}
66
				else if(treeNode instanceof TaxonNode){
67
					return CdmStore.getService(ITaxonNodeService.class).load(treeNode.getUuid());
68
				}
69
			}
70
		}
71

    
72
		return null;
73
	}
74

    
75
	/**
76
	 * <p>openInEditor</p>
77
	 *
78
	 * @return a boolean.
79
	 */
80
	public boolean openInEditor(){
81
		return taxonNodePage.openInEditor();
82
	}
83

    
84
	/**
85
	 * <p>openEmpty</p>
86
	 *
87
	 * @return a boolean.
88
	 */
89
	public boolean openEmpty(){
90
		return openInEditor() && openEmptyEditor;
91
	}
92

    
93
	/**
94
	 * <p>getTaxonNode</p>
95
	 *
96
	 * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
97
	 */
98
	public TaxonNode getTaxonNode(){
99
		if(generatedTaxonNodeUuid != null){
100
			return CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
101
		}
102
		return null;
103
	}
104

    
105
	public ITaxonTreeNode getParentTreeNode(){
106
		return taxonNodePage.getParentTreeNode();
107
	}
108

    
109
	@Override
110
	protected String getEntityName() {
111
		return "Taxon";
112
	}
113

    
114
}
(14-14/17)