Project

General

Profile

Download (5.87 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 *
3
 */
4
package eu.etaxonomy.taxeditor.newWizard;
5

    
6
import java.util.Map;
7
import java.util.UUID;
8

    
9
import javax.inject.Inject;
10

    
11
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
12
import eu.etaxonomy.cdm.api.application.CdmChangeEvent;
13
import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
14
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
15
import eu.etaxonomy.cdm.api.service.UpdateResult;
16
import eu.etaxonomy.cdm.api.service.dto.CreateTaxonDTO;
17
import eu.etaxonomy.cdm.model.common.Language;
18
import eu.etaxonomy.cdm.model.common.LanguageString;
19
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
20
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
21
import eu.etaxonomy.cdm.model.taxon.TaxonNodeStatus;
22
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
23
import eu.etaxonomy.taxeditor.l10n.Messages;
24
import eu.etaxonomy.taxeditor.model.MessagingUtils;
25
import eu.etaxonomy.taxeditor.store.CdmStore;
26
import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeDetailElement;
27
import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeWizardPage;
28

    
29
/**
30
 * <p>NewTaxonNodeWizard class.</p>
31
 *
32
 * @author n.hoffmann
33
 * @created Sep 15, 2009
34
 */
35
public class NewTaxonNodeWizard extends AbstractNewEntityWizardParentChild<TaxonNode>{
36

    
37
    private TaxonNodeWizardPage taxonNodePage;
38
    private boolean openEmptyEditor;
39
    private UUID generatedTaxonNodeUuid;
40
    private IWizardPageListener wizardPageListener;
41
    private boolean isOpenInEditor = false;
42
    private boolean success = true;
43

    
44
    @Inject
45
    public NewTaxonNodeWizard(){
46
        setWindowTitle(Messages.TaxonNodeWizardPage_new);
47
    }
48

    
49
    @Override
50
    public void addPages() {
51
        taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getParentEntity(), wizardPageListener, true);
52
        addPage(taxonNodePage);
53
    }
54

    
55
    @Override
56
    protected void saveEntity() {
57
        CreateTaxonDTO taxon = taxonNodePage.createTaxon();
58
        if(taxon == null ){
59
            openEmptyEditor = true;
60
        }else{
61
            getConversationHolder().bind();
62
            try{
63
             	UpdateResult result;
64
             	TaxonNode parent = getParentEntity();
65

    
66
             	Map<Language, LanguageString> notes = ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).getMultiLanguageTextExcludedNotes();
67
             	UUID refUuid = parent.getReference() != null? parent.getReference().getUuid(): null;
68

    
69
             	TaxonNodeStatus status = ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).getTaxonNodeStatus();
70
             	if (status == null){
71
             	    notes = null;
72
             	}
73
            	result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parent.getUuid(), taxon, refUuid, parent.getMicroReference(),
74
            	         status, notes);
75

    
76
            	if (result.isOk()){
77
            	    this.setEntity((TaxonNode)result.getCdmEntity());
78
            	    CdmApplicationState.getCurrentDataChangeService()
79
	                         .fireChangeEvent(new CdmChangeEvent(Action.Create, result.getUpdatedObjects(), NewTaxonNodeWizard.class), true);
80

    
81
	             }else{
82
	                 setSuccess(false);
83
	                 if (!result.isOk()){
84
	                     if (!result.getExceptions().isEmpty()){
85
	                         MessagingUtils.error(getClass(), "Taxon could not be created", result.getExceptions().iterator().next());
86
	                     }else{
87
	                         MessagingUtils.warn(getClass(), "Taxon could not be created");
88
	                     }
89

    
90
	                 }
91
	             }
92
          }catch(IllegalArgumentException e){
93
                MessagingUtils.warningDialog("Taxon already exists in classfication", getClass(), e.getMessage());
94
            }
95
        }
96
    }
97

    
98
//    @Override
99
//    protected TaxonNode createNewEntity() {
100
//        if(getSelection() != null){
101
//            Object selectedObject = getSelection().getFirstElement();
102
//            if(selectedObject instanceof TaxonNodeDto){
103
//                TaxonNodeDto taxonNodeDto = (TaxonNodeDto) selectedObject;
104
//            	TaxonNode node =  CdmStore.getService(ITaxonNodeService.class).load(taxonNodeDto.getUuid());
105
//            	Reference sec = node.getTaxon() != null? node.getTaxon().getSec():null;
106
//            	Taxon newTaxon = Taxon.NewInstance(TaxonNameFactory.NewNameInstance(PreferencesUtil.getPreferredNomenclaturalCode(), null), sec);
107
//            	TaxonNode child = node.addChildTaxon(newTaxon, null, null);
108
//
109
//                return child;
110
//
111
//            }
112
//        }
113
//
114
//        return null;
115
//    }
116

    
117
    public boolean openInEditor() {
118
        return isOpenInEditor ;
119
    }
120

    
121
    public void setOpenInEditor(boolean isOpenInEditor) {
122
        this.isOpenInEditor = isOpenInEditor;
123
    }
124

    
125
    public boolean openEmpty(){
126
        return openInEditor() && openEmptyEditor;
127
    }
128

    
129
    public TaxonNode getTaxonNode(){
130
        if(generatedTaxonNodeUuid != null){
131
            return CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
132
        }
133
        return null;
134
    }
135

    
136
    public ITaxonTreeNode getParentTreeNode(){
137
        return taxonNodePage.getParentTreeNode();
138
    }
139

    
140
    @Override
141
    protected String getEntityName() {
142
        return "Taxon";
143
    }
144

    
145
    public void addWizardPageListener(IWizardPageListener wizardPageListener){
146
        this.wizardPageListener = wizardPageListener;
147
    }
148

    
149
    public boolean isSuccess() {
150
        return success;
151
    }
152

    
153
    public void setSuccess(boolean success) {
154
        this.success = success;
155
    }
156

    
157
    @Override
158
    public void createParentEntity() {
159
        Object selectedObject = getSelection().getFirstElement();
160
        if(selectedObject instanceof TaxonNodeDto){
161
            if(selectedObject instanceof TaxonNodeDto){
162
                TaxonNodeDto taxonNodeDto = (TaxonNodeDto) selectedObject;
163
                setParentEntity(CdmStore.getService(ITaxonNodeService.class).load(taxonNodeDto.getUuid()));
164
            }
165
        }
166
    }
167
}
(21-21/28)