4 package eu
.etaxonomy
.taxeditor
.newWizard
;
6 import java
.util
.HashSet
;
10 import org
.apache
.commons
.lang
.StringUtils
;
12 import eu
.etaxonomy
.cdm
.api
.application
.CdmApplicationState
;
13 import eu
.etaxonomy
.cdm
.api
.application
.CdmChangeEvent
;
14 import eu
.etaxonomy
.cdm
.api
.application
.CdmChangeEvent
.Action
;
15 import eu
.etaxonomy
.cdm
.api
.service
.IClassificationService
;
16 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonNodeService
;
17 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
18 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
19 import eu
.etaxonomy
.cdm
.model
.taxon
.ITaxonTreeNode
;
20 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
21 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
22 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
23 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
24 import eu
.etaxonomy
.taxeditor
.ui
.section
.classification
.TaxonNodeWizardPage
;
27 * <p>NewTaxonNodeWizard class.</p>
30 * @created Sep 15, 2009
33 public class NewTaxonNodeWizard
extends AbstractNewEntityWizard
<ITaxonTreeNode
>{
35 private TaxonNodeWizardPage taxonNodePage
;
36 private boolean openEmptyEditor
;
37 private UUID generatedTaxonNodeUuid
;
38 private IWizardPageListener wizardPageListener
;
41 public void addPages() {
42 taxonNodePage
= new TaxonNodeWizardPage(formFactory
, getConversationHolder(), getEntity(), wizardPageListener
);
43 addPage(taxonNodePage
);
47 protected void saveEntity() {
48 if(taxonNodePage
.getTaxon() == null || StringUtils
.isEmpty(taxonNodePage
.getTaxon().getName().getFullTitleCache())){
49 openEmptyEditor
= true;
51 getConversationHolder().bind();
52 ITaxonTreeNode parent
= getParentTreeNode();
53 Taxon taxon
= taxonNodePage
.getTaxon();
55 TaxonNode taxonNode
= parent
.addChildTaxon(taxon
, parent
.getReference(), parent
.getMicroReference());
56 generatedTaxonNodeUuid
= CdmStore
.getService(ITaxonNodeService
.class).saveOrUpdate(taxonNode
);
57 // generatedTaxonNodeUuid = taxonNode.getUuid();
58 Set
<CdmBase
> affectedObjects
= new HashSet
<CdmBase
>();
59 //FIXME:Remoting Hack for now - need to generalise this
60 // by making the affected objects a set of ICdmBase
61 // Also, this needs to be moved to the new operations
64 TaxonNode parentNode
= taxonNode
.getParent();
65 if(parentNode
.getParent() == null) {
66 affectedObjects
.add(taxonNode
.getClassification());
69 if(parentNode
instanceof TaxonNode
) {
70 affectedObjects
.add(parentNode
);
73 if(CdmStore
.getCurrentSessionManager().isRemoting()) {
74 CdmApplicationState
.getCurrentDataChangeService()
75 .fireChangeEvent(new CdmChangeEvent(Action
.Create
, affectedObjects
, NewTaxonNodeWizard
.class), true);
77 }catch(IllegalArgumentException e
){
78 MessagingUtils
.warningDialog("Taxon already exists in classfication", getClass(), e
.getMessage());
84 protected ITaxonTreeNode
createNewEntity() {
85 if(getSelection() != null){
86 Object selectedObject
= getSelection().getFirstElement();
87 if(selectedObject
instanceof ITaxonTreeNode
){
88 ITaxonTreeNode treeNode
= (ITaxonTreeNode
) selectedObject
;
90 if(treeNode
instanceof Classification
){
91 return CdmStore
.getService(IClassificationService
.class).load(treeNode
.getUuid());
93 else if(treeNode
instanceof TaxonNode
){
94 return CdmStore
.getService(ITaxonNodeService
.class).load(treeNode
.getUuid());
103 * <p>openInEditor</p>
107 public boolean openInEditor(){
108 return taxonNodePage
.openInEditor();
116 public boolean openEmpty(){
117 return openInEditor() && openEmptyEditor
;
121 * <p>getTaxonNode</p>
123 * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
125 public TaxonNode
getTaxonNode(){
126 if(generatedTaxonNodeUuid
!= null){
127 return CdmStore
.getService(ITaxonNodeService
.class).load(generatedTaxonNodeUuid
);
132 public ITaxonTreeNode
getParentTreeNode(){
133 return taxonNodePage
.getParentTreeNode();
137 protected String
getEntityName() {
141 public void addWizardPageListener(IWizardPageListener wizardPageListener
){
142 this.wizardPageListener
= wizardPageListener
;