/**
- *
- */
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
package eu.etaxonomy.taxeditor.newWizard;
+import java.util.Map;
import java.util.UUID;
import javax.inject.Inject;
-import org.apache.commons.lang.StringUtils;
-
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
import eu.etaxonomy.cdm.api.application.CdmChangeEvent;
import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
-import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
-import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.api.service.dto.CreateTaxonDTO;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.cdm.model.reference.NamedSource;
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeStatus;
+import eu.etaxonomy.cdm.persistence.dto.MergeResult;
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeDetailElement;
import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeWizardPage;
/**
- * <p>NewTaxonNodeWizard class.</p>
+ * NewTaxonNodeWizard class.
*
* @author n.hoffmann
* @created Sep 15, 2009
- * @version 1.0
*/
-public class NewTaxonNodeWizard extends AbstractNewEntityWizard<TaxonNode>{
+public class NewTaxonNodeWizard extends AbstractNewEntityWizardParentChild<TaxonNode>{
private TaxonNodeWizardPage taxonNodePage;
private boolean openEmptyEditor;
private UUID generatedTaxonNodeUuid;
private IWizardPageListener wizardPageListener;
private boolean isOpenInEditor = false;
+ private boolean success = true;
- /**
- * <p>Constructor for AbstractNewEntityWizard.</p>
- *
- * @param <T> a T object.
- */
@Inject
public NewTaxonNodeWizard(){
setWindowTitle(Messages.TaxonNodeWizardPage_new);
}
-
@Override
public void addPages() {
- taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity(), wizardPageListener, true);
+ taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getParentEntity(), wizardPageListener, true);
addPage(taxonNodePage);
-
}
@Override
protected void saveEntity() {
- Taxon taxon = taxonNodePage.createTaxon();
- if(taxon == null || StringUtils.isEmpty(taxon.getName().getFullTitleCache())){
+ CreateTaxonDTO taxon = taxonNodePage.createTaxon();
+ if(taxon == null ){
openEmptyEditor = true;
}else{
getConversationHolder().bind();
-// ITaxonTreeNode parent = getParentTreeNode();
try{
- UUID parentNodeUuid;
-// if(parent instanceof Classification){
-// parentNodeUuid = ((Classification) parent).getRootNode().getUuid();
-// }
-// else{
-// parentNodeUuid = parent.getUuid();
-// }
- UpdateResult result;
- result = CdmStore.getService(ITaxonNodeService.class).saveNewTaxonNode(getEntity());
+ UpdateResult result;
+ TaxonNode parent = getParentEntity();
+
+ Map<Language, LanguageString> notes = ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).getMultiLanguageTextExcludedNotes();
+ NamedSource source = parent.getSource().checkEmpty()? null: parent.getSource();
+
+ TaxonNodeStatus status = ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).getTaxonNodeStatus();
+ if (status == null){
+ notes = null;
+ }
+
+ result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parent.getUuid(),
+ taxon, source, parent.getMicroReference(), status, notes);
+
+
if (result.isOk()){
this.setEntity((TaxonNode)result.getCdmEntity());
- CdmApplicationState.getCurrentDataChangeService()
- .fireChangeEvent(new CdmChangeEvent(Action.Create, result.getUpdatedObjects(), NewTaxonNodeWizard.class), true);
+ CdmApplicationState.getCurrentDataChangeService()
+ .fireChangeEvent(new CdmChangeEvent(Action.Create, result.getUpdatedObjects(), NewTaxonNodeWizard.class), true);
}else{
+ setSuccess(false);
if (!result.isOk()){
if (!result.getExceptions().isEmpty()){
MessagingUtils.error(getClass(), "Taxon could not be created", result.getExceptions().iterator().next());
}else{
MessagingUtils.warn(getClass(), "Taxon could not be created");
}
+
}
}
}catch(IllegalArgumentException e){
}
}
- @Override
- protected TaxonNode createNewEntity() {
- if(getSelection() != null){
- Object selectedObject = getSelection().getFirstElement();
- if(selectedObject instanceof TaxonNodeDto){
- TaxonNodeDto taxonNodeDto = (TaxonNodeDto) selectedObject;
- TaxonNode node = CdmStore.getService(ITaxonNodeService.class).load(taxonNodeDto.getUuid());
- Reference sec = node.getTaxon() != null? node.getTaxon().getSec():null;
- Taxon newTaxon = Taxon.NewInstance(TaxonNameFactory.NewNameInstance(PreferencesUtil.getPreferredNomenclaturalCode(), null), sec);
- TaxonNode child = node.addChildTaxon(newTaxon, null, null);
-
- return child;
-
- }
- }
-
- return null;
- }
-
-
- /**
- * <p>
- * openInEditor
- * </p>
- *
- * @return a boolean.
- */
public boolean openInEditor() {
return isOpenInEditor ;
}
this.isOpenInEditor = isOpenInEditor;
}
- /**
- * <p>openEmpty</p>
- *
- * @return a boolean.
- */
public boolean openEmpty(){
return openInEditor() && openEmptyEditor;
}
- /**
- * <p>getTaxonNode</p>
- *
- * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
- */
public TaxonNode getTaxonNode(){
if(generatedTaxonNodeUuid != null){
return CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
this.wizardPageListener = wizardPageListener;
}
+ public boolean isSuccess() {
+ return success;
+ }
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
-}
+ @Override
+ public void createParentEntity() {
+ Object selectedObject = getSelection().getFirstElement();
+ if(selectedObject instanceof TaxonNodeDto){
+ if(selectedObject instanceof TaxonNodeDto){
+ TaxonNodeDto taxonNodeDto = (TaxonNodeDto) selectedObject;
+ setParentEntity(CdmStore.getService(ITaxonNodeService.class).load(taxonNodeDto.getUuid()));
+ }
+ }
+ }
+}
\ No newline at end of file