Project

General

Profile

Download (2.89 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.ITreeNode;
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<ITreeNode>{
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
			ITreeNode parent = getParentTreeNode();
46
			Taxon taxon = taxonNodePage.getTaxon();
47
			try{
48
				TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference(), null);
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 ITreeNode createNewEntity() {		
58
		if(getSelection() != null){
59
			Object selectedObject = getSelection().getFirstElement();
60
			if(selectedObject instanceof ITreeNode){
61
				ITreeNode treeNode = (ITreeNode) 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 ITreeNode getParentTreeNode(){
106
		return taxonNodePage.getParentTreeNode();
107
	}
108
	
109
}
(13-13/16)