4 package eu
.etaxonomy
.taxeditor
.newWizard
;
6 import java
.util
.HashSet
;
10 import org
.apache
.commons
.lang
.StringUtils
;
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
;
25 * <p>NewTaxonNodeWizard class.</p>
28 * @created Sep 15, 2009
31 public class NewTaxonNodeWizard
extends AbstractNewEntityWizard
<ITaxonTreeNode
>{
33 private TaxonNodeWizardPage taxonNodePage
;
34 private boolean openEmptyEditor
;
35 private UUID generatedTaxonNodeUuid
;
38 public void addPages() {
39 taxonNodePage
= new TaxonNodeWizardPage(formFactory
, getConversationHolder(), getEntity());
40 addPage(taxonNodePage
);
44 protected void saveEntity() {
45 if(taxonNodePage
.getTaxon() == null || StringUtils
.isEmpty(taxonNodePage
.getTaxon().getName().getFullTitleCache())){
46 openEmptyEditor
= true;
48 getConversationHolder().bind();
49 ITaxonTreeNode parent
= getParentTreeNode();
50 Taxon taxon
= taxonNodePage
.getTaxon();
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());
66 protected ITaxonTreeNode
createNewEntity() {
67 if(getSelection() != null){
68 Object selectedObject
= getSelection().getFirstElement();
69 if(selectedObject
instanceof ITaxonTreeNode
){
70 ITaxonTreeNode treeNode
= (ITaxonTreeNode
) selectedObject
;
72 if(treeNode
instanceof Classification
){
73 return CdmStore
.getService(IClassificationService
.class).load(treeNode
.getUuid());
75 else if(treeNode
instanceof TaxonNode
){
76 return CdmStore
.getService(ITaxonNodeService
.class).load(treeNode
.getUuid());
89 public boolean openInEditor(){
90 return taxonNodePage
.openInEditor();
98 public boolean openEmpty(){
99 return openInEditor() && openEmptyEditor
;
103 * <p>getTaxonNode</p>
105 * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
107 public TaxonNode
getTaxonNode(){
108 if(generatedTaxonNodeUuid
!= null){
109 return CdmStore
.getService(ITaxonNodeService
.class).load(generatedTaxonNodeUuid
);
114 public ITaxonTreeNode
getParentTreeNode(){
115 return taxonNodePage
.getParentTreeNode();
119 protected String
getEntityName() {