merge-update from trunk
[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.ITaxonTreeNode;
14 import eu.etaxonomy.cdm.model.taxon.Taxon;
15 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
16 import eu.etaxonomy.taxeditor.model.MessagingUtils;
17 import eu.etaxonomy.taxeditor.store.CdmStore;
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 private IWizardPageListener wizardPageListener;
33
34 @Override
35 public void addPages() {
36 taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity(), wizardPageListener);
37 addPage(taxonNodePage);
38 }
39
40 @Override
41 protected void saveEntity() {
42 if(taxonNodePage.getTaxon() == null || StringUtils.isEmpty(taxonNodePage.getTaxon().getName().getFullTitleCache())){
43 openEmptyEditor = true;
44 }else{
45 getConversationHolder().bind();
46 ITaxonTreeNode parent = getParentTreeNode();
47 Taxon taxon = taxonNodePage.getTaxon();
48 try{
49 TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference());
50 generatedTaxonNodeUuid = CdmStore.getService(ITaxonNodeService.class).saveOrUpdate(taxonNode);
51 }catch(IllegalArgumentException e){
52 MessagingUtils.warningDialog("Taxon already exists in classfication", getClass(), e.getMessage());
53 }
54 }
55 }
56
57 @Override
58 protected ITaxonTreeNode createNewEntity() {
59 if(getSelection() != null){
60 Object selectedObject = getSelection().getFirstElement();
61 if(selectedObject instanceof ITaxonTreeNode){
62 ITaxonTreeNode treeNode = (ITaxonTreeNode) selectedObject;
63
64 if(treeNode instanceof Classification){
65 return CdmStore.getService(IClassificationService.class).load(treeNode.getUuid());
66 }
67 else if(treeNode instanceof TaxonNode){
68 return CdmStore.getService(ITaxonNodeService.class).load(treeNode.getUuid());
69 }
70 }
71 }
72
73 return null;
74 }
75
76 /**
77 * <p>openInEditor</p>
78 *
79 * @return a boolean.
80 */
81 public boolean openInEditor(){
82 return taxonNodePage.openInEditor();
83 }
84
85 /**
86 * <p>openEmpty</p>
87 *
88 * @return a boolean.
89 */
90 public boolean openEmpty(){
91 return openInEditor() && openEmptyEditor;
92 }
93
94 /**
95 * <p>getTaxonNode</p>
96 *
97 * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
98 */
99 public TaxonNode getTaxonNode(){
100 if(generatedTaxonNodeUuid != null){
101 return CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
102 }
103 return null;
104 }
105
106 public ITaxonTreeNode getParentTreeNode(){
107 return taxonNodePage.getParentTreeNode();
108 }
109
110 @Override
111 protected String getEntityName() {
112 return "Taxon";
113 }
114
115 public void addWizardPageListener(IWizardPageListener wizardPageListener){
116 this.wizardPageListener = wizardPageListener;
117 }
118
119 }