InspectSessionsDialog : added filtering
[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.HashSet;
7 import java.util.Set;
8 import java.util.UUID;
9
10 import org.apache.commons.lang.StringUtils;
11
12 import eu.etaxonomy.cdm.api.service.IClassificationService;
13 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
14 import eu.etaxonomy.cdm.model.common.CdmBase;
15 import eu.etaxonomy.cdm.model.taxon.Classification;
16 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
17 import eu.etaxonomy.cdm.model.taxon.Taxon;
18 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
19 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent.EventType;
20 import eu.etaxonomy.taxeditor.model.MessagingUtils;
21 import eu.etaxonomy.taxeditor.store.CdmStore;
22 import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeWizardPage;
23
24 /**
25 * <p>NewTaxonNodeWizard class.</p>
26 *
27 * @author n.hoffmann
28 * @created Sep 15, 2009
29 * @version 1.0
30 */
31 public class NewTaxonNodeWizard extends AbstractNewEntityWizard<ITaxonTreeNode>{
32
33 private TaxonNodeWizardPage taxonNodePage;
34 private boolean openEmptyEditor;
35 private UUID generatedTaxonNodeUuid;
36
37 @Override
38 public void addPages() {
39 taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity());
40 addPage(taxonNodePage);
41 }
42
43 @Override
44 protected void saveEntity() {
45 if(taxonNodePage.getTaxon() == null || StringUtils.isEmpty(taxonNodePage.getTaxon().getName().getFullTitleCache())){
46 openEmptyEditor = true;
47 }else{
48 getConversationHolder().bind();
49 ITaxonTreeNode parent = getParentTreeNode();
50 Taxon taxon = taxonNodePage.getTaxon();
51 try{
52 TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference());
53 taxonNode = CdmStore.getService(ITaxonNodeService.class).merge(taxonNode);
54 generatedTaxonNodeUuid = taxonNode.getUuid();
55 Set<CdmBase> affectedObjects = new HashSet<CdmBase>();
56 affectedObjects.add((TaxonNode)parent);
57 CdmStore.getCurrentSessionManager().getActiveSession().addEvent(taxonNode, affectedObjects, EventType.INSERT);
58 CdmStore.getCurrentSessionManager().getActiveSession().fireNotifications();
59 }catch(IllegalArgumentException e){
60 MessagingUtils.warningDialog("Taxon already exists in classfication", getClass(), e.getMessage());
61 }
62 }
63 }
64
65 @Override
66 protected ITaxonTreeNode createNewEntity() {
67 if(getSelection() != null){
68 Object selectedObject = getSelection().getFirstElement();
69 if(selectedObject instanceof ITaxonTreeNode){
70 ITaxonTreeNode treeNode = (ITaxonTreeNode) selectedObject;
71
72 if(treeNode instanceof Classification){
73 return CdmStore.getService(IClassificationService.class).load(treeNode.getUuid());
74 }
75 else if(treeNode instanceof TaxonNode){
76 return CdmStore.getService(ITaxonNodeService.class).load(treeNode.getUuid());
77 }
78 }
79 }
80
81 return null;
82 }
83
84 /**
85 * <p>openInEditor</p>
86 *
87 * @return a boolean.
88 */
89 public boolean openInEditor(){
90 return taxonNodePage.openInEditor();
91 }
92
93 /**
94 * <p>openEmpty</p>
95 *
96 * @return a boolean.
97 */
98 public boolean openEmpty(){
99 return openInEditor() && openEmptyEditor;
100 }
101
102 /**
103 * <p>getTaxonNode</p>
104 *
105 * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
106 */
107 public TaxonNode getTaxonNode(){
108 if(generatedTaxonNodeUuid != null){
109 return CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
110 }
111 return null;
112 }
113
114 public ITaxonTreeNode getParentTreeNode(){
115 return taxonNodePage.getParentTreeNode();
116 }
117
118 @Override
119 protected String getEntityName() {
120 return "Taxon";
121 }
122
123 }