2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.taxeditor
.newWizard
;
12 import java
.util
.UUID
;
14 import javax
.inject
.Inject
;
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
.MergeResult
;
29 import eu
.etaxonomy
.cdm
.persistence
.dto
.TaxonNodeDto
;
30 import eu
.etaxonomy
.taxeditor
.l10n
.Messages
;
31 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
32 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
33 import eu
.etaxonomy
.taxeditor
.ui
.section
.classification
.TaxonNodeDetailElement
;
34 import eu
.etaxonomy
.taxeditor
.ui
.section
.classification
.TaxonNodeWizardPage
;
37 * NewTaxonNodeWizard class.
40 * @created Sep 15, 2009
42 public class NewTaxonNodeWizard
extends AbstractNewEntityWizardParentChild
<TaxonNode
>{
44 private TaxonNodeWizardPage taxonNodePage
;
45 private boolean openEmptyEditor
;
46 private UUID generatedTaxonNodeUuid
;
47 private IWizardPageListener wizardPageListener
;
48 private boolean isOpenInEditor
= false;
49 private boolean success
= true;
52 public NewTaxonNodeWizard(){
53 setWindowTitle(Messages
.TaxonNodeWizardPage_new
);
57 public void addPages() {
58 taxonNodePage
= new TaxonNodeWizardPage(formFactory
, getConversationHolder(), getParentEntity(), wizardPageListener
, true);
59 addPage(taxonNodePage
);
63 protected void saveEntity() {
64 CreateTaxonDTO taxon
= taxonNodePage
.createTaxon();
66 openEmptyEditor
= true;
68 getConversationHolder().bind();
71 TaxonNode parent
= getParentEntity();
73 Map
<Language
, LanguageString
> notes
= ((TaxonNodeDetailElement
)taxonNodePage
.getDetailElement()).getMultiLanguageTextExcludedNotes();
74 DescriptionElementSource source
= parent
.getSource().checkEmpty()?
null: parent
.getSource();
77 TaxonNodeStatus status
= ((TaxonNodeDetailElement
)taxonNodePage
.getDetailElement()).getTaxonNodeStatus();
82 result
= CdmStore
.getService(ITaxonNodeService
.class).createNewTaxonNode(parent
.getUuid(), taxon
, source
, parent
.getMicroReference(),
87 this.setEntity((TaxonNode
)result
.getCdmEntity());
88 CdmApplicationState
.getCurrentDataChangeService()
89 .fireChangeEvent(new CdmChangeEvent(Action
.Create
, result
.getUpdatedObjects(), NewTaxonNodeWizard
.class), true);
94 if (!result
.getExceptions().isEmpty()){
95 MessagingUtils
.error(getClass(), "Taxon could not be created", result
.getExceptions().iterator().next());
97 MessagingUtils
.warn(getClass(), "Taxon could not be created");
102 }catch(IllegalArgumentException e
){
103 MessagingUtils
.warningDialog("Taxon already exists in classfication", getClass(), e
.getMessage());
108 public boolean openInEditor() {
109 return isOpenInEditor
;
112 public void setOpenInEditor(boolean isOpenInEditor
) {
113 this.isOpenInEditor
= isOpenInEditor
;
116 public boolean openEmpty(){
117 return openInEditor() && openEmptyEditor
;
120 public TaxonNode
getTaxonNode(){
121 if(generatedTaxonNodeUuid
!= null){
122 return CdmStore
.getService(ITaxonNodeService
.class).load(generatedTaxonNodeUuid
);
127 public ITaxonTreeNode
getParentTreeNode(){
128 return taxonNodePage
.getParentTreeNode();
132 protected String
getEntityName() {
136 public void addWizardPageListener(IWizardPageListener wizardPageListener
){
137 this.wizardPageListener
= wizardPageListener
;
140 public boolean isSuccess() {
144 public void setSuccess(boolean success
) {
145 this.success
= success
;
149 public void createParentEntity() {
150 Object selectedObject
= getSelection().getFirstElement();
151 if(selectedObject
instanceof TaxonNodeDto
){
152 if(selectedObject
instanceof TaxonNodeDto
){
153 TaxonNodeDto taxonNodeDto
= (TaxonNodeDto
) selectedObject
;
154 setParentEntity(CdmStore
.getService(ITaxonNodeService
.class).load(taxonNodeDto
.getUuid()));