/**
- *
- */
+* 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.HashSet;
-import java.util.Set;
+import java.util.Map;
import java.util.UUID;
-import org.apache.commons.lang.StringUtils;
+import javax.inject.Inject;
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.IClassificationService;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.model.taxon.Classification;
+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.TaxonNodeDto;
+import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
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<ITaxonTreeNode>{
+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;
+
+ @Inject
+ public NewTaxonNodeWizard(){
+ setWindowTitle(Messages.TaxonNodeWizardPage_new);
+ }
@Override
public void addPages() {
- taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity(), wizardPageListener);
+ taxonNodePage = new TaxonNodeWizardPage(formFactory, getParentEntity(), wizardPageListener, true);
addPage(taxonNodePage);
}
@Override
protected void saveEntity() {
- if(taxonNodePage.getTaxon() == null || StringUtils.isEmpty(taxonNodePage.getTaxon().getName().getFullTitleCache())){
+ CreateTaxonDTO taxon = taxonNodePage.createTaxon();
+ if(taxon == null ){
openEmptyEditor = true;
}else{
- getConversationHolder().bind();
- ITaxonTreeNode parent = getParentTreeNode();
- Taxon taxon = taxonNodePage.getTaxon();
- Reference sec = taxon.getSec();
- taxon.setSec(null);
- try{
-<<<<<<< HEAD
- UpdateResult result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parent.getUuid(), taxon, parent.getReference(), parent.getMicroReference());
-
-=======
- UUID parentNodeUuid;
- if(parent instanceof Classification){
- parentNodeUuid = ((Classification) parent).getRootNode().getUuid();
- }
- else{
- parentNodeUuid = parent.getUuid();
- }
- UpdateResult result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parentNodeUuid, taxon, parent.getReference(), parent.getMicroReference());
-
->>>>>>> hotfix/3.12.4
- //TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference());
-
- /* if(CdmStore.getCurrentSessionManager().isRemoting()) {
- taxonNode = CdmStore.getService(ITaxonNodeService.class).merge(taxonNode);
- } else {
- taxonNode = CdmStore.getService(ITaxonNodeService.class).save(taxonNode);
- }*/
- generatedTaxonNodeUuid = result.getCdmEntity().getUuid();
- TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
- taxonNode.getTaxon().setSec(sec);
-<<<<<<< HEAD
- CdmStore.getService(ITaxonNodeService.class).merge(taxonNode);
-=======
- CdmStore.getService(ITaxonNodeService.class).merge(taxonNode, true);
->>>>>>> hotfix/3.12.4
- Set<CdmBase> affectedObjects = new HashSet<CdmBase>();
- if (result.getUpdatedObjects().iterator().hasNext()){
- TaxonNode parentNode = (TaxonNode)result.getUpdatedObjects().iterator().next();
- if(parentNode.getParent() == null) {
- affectedObjects.add(taxonNode.getClassification());
- }
- if(parentNode instanceof TaxonNode) {
- affectedObjects.add(parentNode);
- }
- }
-<<<<<<< HEAD
-
-
-
-=======
-
-
-
->>>>>>> hotfix/3.12.4
-
- if(CdmStore.getCurrentSessionManager().isRemoting()) {
+ try{
+ 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, affectedObjects, NewTaxonNodeWizard.class), true);
- }
- }catch(IllegalArgumentException e){
+ .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){
MessagingUtils.warningDialog("Taxon already exists in classfication", getClass(), e.getMessage());
}
}
}
- @Override
- protected ITaxonTreeNode createNewEntity() {
- if(getSelection() != null){
- Object selectedObject = getSelection().getFirstElement();
- if(selectedObject instanceof ITaxonTreeNode){
- ITaxonTreeNode treeNode = (ITaxonTreeNode) selectedObject;
-
- if(treeNode instanceof Classification){
- return CdmStore.getService(IClassificationService.class).load(treeNode.getUuid());
- }
- else if(treeNode instanceof TaxonNode){
- return CdmStore.getService(ITaxonNodeService.class).load(treeNode.getUuid());
- }
- }
- }
-
- return null;
+ public boolean openInEditor() {
+ return isOpenInEditor ;
}
- /**
- * <p>openInEditor</p>
- *
- * @return a boolean.
- */
- public boolean openInEditor(){
- return taxonNodePage.openInEditor();
+ public void setOpenInEditor(boolean 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