e2dcdb6ff825b6448445a5c50087a37fb52f8f9b
[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.cdm.persistence.hibernate.CdmDataChangeEvent.EventType;
17 import eu.etaxonomy.taxeditor.model.MessagingUtils;
18 import eu.etaxonomy.taxeditor.store.CdmStore;
19 import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeWizardPage;
20
21 /**
22 * <p>NewTaxonNodeWizard class.</p>
23 *
24 * @author n.hoffmann
25 * @created Sep 15, 2009
26 * @version 1.0
27 */
28 public class NewTaxonNodeWizard extends AbstractNewEntityWizard<ITaxonTreeNode>{
29
30 private TaxonNodeWizardPage taxonNodePage;
31 private boolean openEmptyEditor;
32 private UUID generatedTaxonNodeUuid;
33
34 @Override
35 public void addPages() {
36 taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity());
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 taxonNode = CdmStore.getService(ITaxonNodeService.class).merge(taxonNode);
51 generatedTaxonNodeUuid = taxonNode.getUuid();
52 CdmStore.getCurrentSessionManager().getActiveSession().addEvent(taxonNode, EventType.INSERT);
53 }catch(IllegalArgumentException e){
54 MessagingUtils.warningDialog("Taxon already exists in classfication", getClass(), e.getMessage());
55 }
56 }
57 }
58
59 @Override
60 protected ITaxonTreeNode createNewEntity() {
61 if(getSelection() != null){
62 Object selectedObject = getSelection().getFirstElement();
63 if(selectedObject instanceof ITaxonTreeNode){
64 ITaxonTreeNode treeNode = (ITaxonTreeNode) selectedObject;
65
66 if(treeNode instanceof Classification){
67 return CdmStore.getService(IClassificationService.class).load(treeNode.getUuid());
68 }
69 else if(treeNode instanceof TaxonNode){
70 return CdmStore.getService(ITaxonNodeService.class).load(treeNode.getUuid());
71 }
72 }
73 }
74
75 return null;
76 }
77
78 /**
79 * <p>openInEditor</p>
80 *
81 * @return a boolean.
82 */
83 public boolean openInEditor(){
84 return taxonNodePage.openInEditor();
85 }
86
87 /**
88 * <p>openEmpty</p>
89 *
90 * @return a boolean.
91 */
92 public boolean openEmpty(){
93 return openInEditor() && openEmptyEditor;
94 }
95
96 /**
97 * <p>getTaxonNode</p>
98 *
99 * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
100 */
101 public TaxonNode getTaxonNode(){
102 if(generatedTaxonNodeUuid != null){
103 return CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
104 }
105 return null;
106 }
107
108 public ITaxonTreeNode getParentTreeNode(){
109 return taxonNodePage.getParentTreeNode();
110 }
111
112 @Override
113 protected String getEntityName() {
114 return "Taxon";
115 }
116
117 }