Updated version in pom / project files to taxeditor version : 5.19.0 and cdmlib versi...
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / newWizard / NewTaxonNodeWizard.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.taxeditor.newWizard;
10
11 import java.util.Map;
12 import java.util.UUID;
13
14 import javax.inject.Inject;
15
16 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
17 import eu.etaxonomy.cdm.api.application.CdmChangeEvent;
18 import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
19 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
20 import eu.etaxonomy.cdm.api.service.UpdateResult;
21 import eu.etaxonomy.cdm.api.service.dto.CreateTaxonDTO;
22 import eu.etaxonomy.cdm.model.common.Language;
23 import eu.etaxonomy.cdm.model.common.LanguageString;
24 import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
25 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
26 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
27 import eu.etaxonomy.cdm.model.taxon.TaxonNodeStatus;
28 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
29 import eu.etaxonomy.taxeditor.l10n.Messages;
30 import eu.etaxonomy.taxeditor.model.MessagingUtils;
31 import eu.etaxonomy.taxeditor.store.CdmStore;
32 import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeDetailElement;
33 import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeWizardPage;
34
35 /**
36 * NewTaxonNodeWizard class.
37 *
38 * @author n.hoffmann
39 * @created Sep 15, 2009
40 */
41 public class NewTaxonNodeWizard extends AbstractNewEntityWizardParentChild<TaxonNode>{
42
43 private TaxonNodeWizardPage taxonNodePage;
44 private boolean openEmptyEditor;
45 private UUID generatedTaxonNodeUuid;
46 private IWizardPageListener wizardPageListener;
47 private boolean isOpenInEditor = false;
48 private boolean success = true;
49
50 @Inject
51 public NewTaxonNodeWizard(){
52 setWindowTitle(Messages.TaxonNodeWizardPage_new);
53 }
54
55 @Override
56 public void addPages() {
57 taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getParentEntity(), wizardPageListener, true);
58 addPage(taxonNodePage);
59 }
60
61 @Override
62 protected void saveEntity() {
63 CreateTaxonDTO taxon = taxonNodePage.createTaxon();
64 if(taxon == null ){
65 openEmptyEditor = true;
66 }else{
67 getConversationHolder().bind();
68 try{
69 UpdateResult result;
70 TaxonNode parent = getParentEntity();
71
72 Map<Language, LanguageString> notes = ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).getMultiLanguageTextExcludedNotes();
73 DescriptionElementSource source = parent.getSource().checkEmpty()? null: parent.getSource();
74
75
76 TaxonNodeStatus status = ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).getTaxonNodeStatus();
77 if (status == null){
78 notes = null;
79 }
80
81 result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parent.getUuid(), taxon, source, parent.getMicroReference(),
82 status, notes);
83
84
85 if (result.isOk()){
86 this.setEntity((TaxonNode)result.getCdmEntity());
87 CdmApplicationState.getCurrentDataChangeService()
88 .fireChangeEvent(new CdmChangeEvent(Action.Create, result.getUpdatedObjects(), NewTaxonNodeWizard.class), true);
89
90 }else{
91 setSuccess(false);
92 if (!result.isOk()){
93 if (!result.getExceptions().isEmpty()){
94 MessagingUtils.error(getClass(), "Taxon could not be created", result.getExceptions().iterator().next());
95 }else{
96 MessagingUtils.warn(getClass(), "Taxon could not be created");
97 }
98
99 }
100 }
101 }catch(IllegalArgumentException e){
102 MessagingUtils.warningDialog("Taxon already exists in classfication", getClass(), e.getMessage());
103 }
104 }
105 }
106
107 public boolean openInEditor() {
108 return isOpenInEditor ;
109 }
110
111 public void setOpenInEditor(boolean isOpenInEditor) {
112 this.isOpenInEditor = isOpenInEditor;
113 }
114
115 public boolean openEmpty(){
116 return openInEditor() && openEmptyEditor;
117 }
118
119 public TaxonNode getTaxonNode(){
120 if(generatedTaxonNodeUuid != null){
121 return CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
122 }
123 return null;
124 }
125
126 public ITaxonTreeNode getParentTreeNode(){
127 return taxonNodePage.getParentTreeNode();
128 }
129
130 @Override
131 protected String getEntityName() {
132 return "Taxon";
133 }
134
135 public void addWizardPageListener(IWizardPageListener wizardPageListener){
136 this.wizardPageListener = wizardPageListener;
137 }
138
139 public boolean isSuccess() {
140 return success;
141 }
142
143 public void setSuccess(boolean success) {
144 this.success = success;
145 }
146
147 @Override
148 public void createParentEntity() {
149 Object selectedObject = getSelection().getFirstElement();
150 if(selectedObject instanceof TaxonNodeDto){
151 if(selectedObject instanceof TaxonNodeDto){
152 TaxonNodeDto taxonNodeDto = (TaxonNodeDto) selectedObject;
153 setParentEntity(CdmStore.getService(ITaxonNodeService.class).load(taxonNodeDto.getUuid()));
154 }
155 }
156 }
157 }