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
.api
.service
.UpdateResult
;
18 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
19 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
20 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
21 import eu
.etaxonomy
.cdm
.model
.taxon
.ITaxonTreeNode
;
22 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
23 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
24 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
25 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
26 import eu
.etaxonomy
.taxeditor
.ui
.section
.classification
.TaxonNodeWizardPage
;
29 * <p>NewTaxonNodeWizard class.</p>
32 * @created Sep 15, 2009
35 public class NewTaxonNodeWizard
extends AbstractNewEntityWizard
<ITaxonTreeNode
>{
37 private TaxonNodeWizardPage taxonNodePage
;
38 private boolean openEmptyEditor
;
39 private UUID generatedTaxonNodeUuid
;
40 private IWizardPageListener wizardPageListener
;
43 public void addPages() {
44 taxonNodePage
= new TaxonNodeWizardPage(formFactory
, getConversationHolder(), getEntity(), wizardPageListener
);
45 addPage(taxonNodePage
);
49 protected void saveEntity() {
50 if(taxonNodePage
.getTaxon() == null || StringUtils
.isEmpty(taxonNodePage
.getTaxon().getName().getFullTitleCache())){
51 openEmptyEditor
= true;
53 getConversationHolder().bind();
54 ITaxonTreeNode parent
= getParentTreeNode();
55 Taxon taxon
= taxonNodePage
.getTaxon();
56 Reference sec
= taxon
.getSec();
60 UpdateResult result
= CdmStore
.getService(ITaxonNodeService
.class).createNewTaxonNode(parent
.getUuid(), taxon
, parent
.getReference(), parent
.getMicroReference());
64 if(parent
instanceof Classification
){
65 parentNodeUuid
= ((Classification
) parent
).getRootNode().getUuid();
68 parentNodeUuid
= parent
.getUuid();
70 UpdateResult result
= CdmStore
.getService(ITaxonNodeService
.class).createNewTaxonNode(parentNodeUuid
, taxon
, parent
.getReference(), parent
.getMicroReference());
73 //TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference());
75 /* if(CdmStore.getCurrentSessionManager().isRemoting()) {
76 taxonNode = CdmStore.getService(ITaxonNodeService.class).merge(taxonNode);
78 taxonNode = CdmStore.getService(ITaxonNodeService.class).save(taxonNode);
80 generatedTaxonNodeUuid
= result
.getCdmEntity().getUuid();
81 TaxonNode taxonNode
= CdmStore
.getService(ITaxonNodeService
.class).load(generatedTaxonNodeUuid
);
82 taxonNode
.getTaxon().setSec(sec
);
84 CdmStore
.getService(ITaxonNodeService
.class).merge(taxonNode
);
86 CdmStore
.getService(ITaxonNodeService
.class).merge(taxonNode
, true);
88 Set
<CdmBase
> affectedObjects
= new HashSet
<CdmBase
>();
89 if (result
.getUpdatedObjects().iterator().hasNext()){
90 TaxonNode parentNode
= (TaxonNode
)result
.getUpdatedObjects().iterator().next();
91 if(parentNode
.getParent() == null) {
92 affectedObjects
.add(taxonNode
.getClassification());
94 if(parentNode
instanceof TaxonNode
) {
95 affectedObjects
.add(parentNode
);
106 >>>>>>> hotfix
/3.12.4
108 if(CdmStore
.getCurrentSessionManager().isRemoting()) {
109 CdmApplicationState
.getCurrentDataChangeService()
110 .fireChangeEvent(new CdmChangeEvent(Action
.Create
, affectedObjects
, NewTaxonNodeWizard
.class), true);
112 }catch(IllegalArgumentException e
){
113 MessagingUtils
.warningDialog("Taxon already exists in classfication", getClass(), e
.getMessage());
119 protected ITaxonTreeNode
createNewEntity() {
120 if(getSelection() != null){
121 Object selectedObject
= getSelection().getFirstElement();
122 if(selectedObject
instanceof ITaxonTreeNode
){
123 ITaxonTreeNode treeNode
= (ITaxonTreeNode
) selectedObject
;
125 if(treeNode
instanceof Classification
){
126 return CdmStore
.getService(IClassificationService
.class).load(treeNode
.getUuid());
128 else if(treeNode
instanceof TaxonNode
){
129 return CdmStore
.getService(ITaxonNodeService
.class).load(treeNode
.getUuid());
138 * <p>openInEditor</p>
142 public boolean openInEditor(){
143 return taxonNodePage
.openInEditor();
151 public boolean openEmpty(){
152 return openInEditor() && openEmptyEditor
;
156 * <p>getTaxonNode</p>
158 * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
160 public TaxonNode
getTaxonNode(){
161 if(generatedTaxonNodeUuid
!= null){
162 return CdmStore
.getService(ITaxonNodeService
.class).load(generatedTaxonNodeUuid
);
167 public ITaxonTreeNode
getParentTreeNode(){
168 return taxonNodePage
.getParentTreeNode();
172 protected String
getEntityName() {
176 public void addWizardPageListener(IWizardPageListener wizardPageListener
){
177 this.wizardPageListener
= wizardPageListener
;