- fixed compile error in test
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / newWizard / NewTaxonNodeWizard.java
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());
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 @Override
110 protected String getEntityName() {
111 return "Taxon";
112 }
113
114 }