X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/4b94c9cfe0df4ec8f83395b88d8420c5791a93b4..ae137b34d1f7334e79c18e2b3677942405caf84c:/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/TaxonEditorInput.java diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/TaxonEditorInput.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/TaxonEditorInput.java index 16257e4a5..6ead06962 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/TaxonEditorInput.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/TaxonEditorInput.java @@ -9,9 +9,11 @@ package eu.etaxonomy.taxeditor.editor; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.UUID; @@ -48,7 +50,9 @@ import eu.etaxonomy.taxeditor.store.CdmStore; * @created 19.03.2009 * @version 1.0 */ -public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorInput, IConversationEnabled, IPersistableElement { +public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorInput, IConversationEnabled, IPersistableElement { + + private static final String INCORRECT_STATE = Messages.TaxonEditorInput_INCORRECT_STATE; private final ConversationHolder conversation; @@ -58,8 +62,6 @@ public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorIn private TaxonBase initiallySelectedTaxonBase; - private final ITaxonNodeService service; - private enum CdmType { TAXON_NODE, TAXON_BASE, @@ -67,8 +69,8 @@ public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorIn } private TaxonEditorInput(UUID uuid, CdmType type) { + super(true); this.conversation = CdmStore.createConversation(); - service = CdmStore.getService(ITaxonNodeService.class); switch(type) { case PARENT_TAXON_NODE: initForParentTaxonNode(uuid); @@ -97,25 +99,24 @@ public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorIn private void initForTaxonNode(UUID taxonNodeUuid) { - TaxonNode taxonNode = getCdmEntitySession().remoteLoad(service,taxonNodeUuid, null); + TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(taxonNodeUuid, getTaxonNodePropertyPaths()); if(taxonNode == null){ - MessagingUtils.warningDialog("Not yet implemented", TaxonEditorInput.class, "Selected element is not type TaxonBase."); + MessagingUtils.warningDialog(Messages.TaxonEditorInput_NOT_IMPLEMENTED, TaxonEditorInput.class, Messages.TaxonEditorInput_NOT_IMPLEMENTED_MESSAGE); } init(taxonNode); } private void initForTaxonBase(UUID taxonBaseUuid) { - - TaxonBase taxonBase = getCdmEntitySession().remoteLoad(CdmStore.getService(ITaxonService.class),taxonBaseUuid); + TaxonBase taxonBase = CdmStore.getService(ITaxonService.class).load(taxonBaseUuid, getTaxonBasePropertyPaths()); if (taxonBase != null){ if(taxonBase.isInstanceOf(Taxon.class)){ Taxon taxon = CdmBase.deproxy(taxonBase, Taxon.class); if (taxon.getTaxonNodes().size() == 0 && taxon.isMisapplication()){ // TODO get accepted taxon - MessagingUtils.info("trying to open Mispplied Name "); + MessagingUtils.info(Messages.TaxonEditorInput_OPEN_MISSAPPLIED_NAME); Set acceptedTaxa = new HashSet(); Set relations = taxon.getRelationsFromThisTaxon(); @@ -132,7 +133,11 @@ public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorIn }else if(taxonBase instanceof Synonym){ Synonym synonym = (Synonym) taxonBase; - Set taxa = synonym.getAcceptedTaxa(); + Set taxa = new HashSet<>(); + Taxon taxon = synonym.getAcceptedTaxon(); + if (taxon != null){ + taxa.add(taxon); + } setInputForMultipleTaxa(conversation, taxa); } } @@ -155,12 +160,14 @@ public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorIn TaxonNode newTaxonNode = parentNode.addChildTaxon(newTaxon, parentNode.getReference(), parentNode.getMicroReference()); // add the new taxon to the editors persistence context - UUID newTaxonNodeUuid = getCdmEntitySession().remoteSave(CdmStore.getService(ITaxonNodeService.class),newTaxonNode); + UUID newTaxonNodeUuid = CdmStore.getService(ITaxonNodeService.class).save(newTaxonNode).getUuid(); initForTaxonNode(newTaxonNodeUuid); } + + private void setInputForMultipleNodes(ConversationHolder conversation, Set taxonNodes){ if(taxonNodes.size() == 1){ TaxonNode taxonNode = taxonNodes.iterator().next(); @@ -170,9 +177,9 @@ public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorIn if(taxonNode != null){ init(taxonNode); } - }else if(taxonNodes.size() == 0){ + } else if (taxonNodes.size() == 0) { // this is an undesired state - MessagingUtils.warningDialog("Incorrect state", TaxonEditorInput.class, "The accepted taxon is not part of any classification. This should not have happened."); + MessagingUtils.warningDialog(INCORRECT_STATE,TaxonEditorInput.class,Messages.TaxonEditorInput_TAXON_NOT_IN_CLASSIFICATION); } } @@ -189,8 +196,7 @@ public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorIn setInputForMultipleNodes(conversation, taxonNodes); }else if(taxa.size() == 0){ // this is an undesired state - MessagingUtils.warningDialog("Incorrect state", TaxonEditorInput.class, "Trying to open accepted taxon for a synonym or misapplication but" + - " no accepted taxa are present. This should not have happened."); + MessagingUtils.warningDialog(INCORRECT_STATE, TaxonEditorInput.class, Messages.TaxonEditorInput_NO_ACCEPTED_TAXON_PRESENT); } } @@ -217,8 +223,6 @@ public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorIn } - - /** *

NewEmptyInstance

* @@ -270,7 +274,7 @@ public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorIn } TaxonNameBase name = getTaxon().getName(); if (name == null || name.getTitleCache() == null) { - return "New taxon"; + return Messages.TaxonEditorInput_NEW_TAXON; } else { return name.getTitleCache(); } @@ -337,8 +341,8 @@ public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorIn public boolean equals(Object obj) { if (TaxonEditorInput.class.equals(obj.getClass()) && getTaxon() != null - && getTaxon().equals(((TaxonEditorInput) obj).getTaxon())){ - if(((TaxonEditorInput) obj).getInitiallySelectedTaxonBase() != null){ + && getTaxon().equals(((TaxonEditorInput) obj).getTaxon())) { + if (((TaxonEditorInput) obj).getInitiallySelectedTaxonBase() != null){ setInitiallySelectedTaxonBase(((TaxonEditorInput) obj).getInitiallySelectedTaxonBase()); } return true; @@ -434,34 +438,78 @@ public class TaxonEditorInput extends CdmEntitySessionInput implements IEditorIn return initiallySelectedTaxonBase; } - @Override - public String toString() { - return String.format("%s[%s]", this.getClass().getSimpleName(), getTaxon()); - } +// @Override +// public String toString() { +// return String.format("%s[%s]", this.getClass().getSimpleName(), getTaxon()); +// } + /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput#getService() + * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities() */ @Override - public ITaxonNodeService getService() { - return service; + public List getRootEntities() { + return Arrays.asList(taxonNode); } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput#getRootEntities() + * @see eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput#merge() */ @Override - public List getRootEntities() { - return Arrays.asList(taxonNode); - } + public void merge() { + CdmStore.getService(ITaxonNodeService.class).merge(taxonNode, true); + } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput#update() - */ @Override - public void update() { - taxonNode = getCdmEntitySession().remoteUpdate(service, taxonNode); + public Map> getPropertyPathsMap() { + return null; } + + private List getTaxonNodePropertyPaths() { + List taxonNodePropertyPaths = new ArrayList(); + for(String propertyPath : getTaxonBasePropertyPaths()) { + taxonNodePropertyPaths.add("taxon." + propertyPath); //$NON-NLS-1$ + } + return taxonNodePropertyPaths; + } + + private List getTaxonBasePropertyPaths() { + List taxonBasePropertyPaths = Arrays.asList(new String[] { + "sec", //$NON-NLS-1$ + "createdBy", //$NON-NLS-1$ + "updatedBy", //$NON-NLS-1$ + "annotations", //$NON-NLS-1$ + "markers", //$NON-NLS-1$ + "credits", //$NON-NLS-1$ + "extensions", //$NON-NLS-1$ + "rights", //$NON-NLS-1$ + "sources", //$NON-NLS-1$ + "descriptions", //$NON-NLS-1$ + "relationsToThisTaxon", //$NON-NLS-1$ + "relationsFromThisTaxon", //$NON-NLS-1$ + "taxonNodes", //$NON-NLS-1$ + "descriptions.descriptionElements.feature", //$NON-NLS-1$ + "descriptions.descriptionElements.area", //$NON-NLS-1$ + "descriptions.descriptionElements.status", //$NON-NLS-1$ + "descriptions.markers", //$NON-NLS-1$ + "name.descriptions", //$NON-NLS-1$ + "name.typeDesignations", //$NON-NLS-1$ + "name.status", //$NON-NLS-1$ + "name.nomenclaturalReference.inReference", //$NON-NLS-1$ + "name.taxonBases.taxonNodes", //$NON-NLS-1$ + "name.relationsFromThisName", //$NON-NLS-1$ + "name.relationsToThisName", //$NON-NLS-1$ + "name.homotypicalGroup.typifiedNames.taxonBases.synonymRelations.synonym.name.status", //$NON-NLS-1$ + "name.homotypicalGroup.typifiedNames.relationsToThisName.fromName", //$NON-NLS-1$ + "synonymRelations.synonym.name.status.type", //$NON-NLS-1$ + "synonymRelations.synonym.name.relationsToThisName.fromName", //$NON-NLS-1$ + "synonymRelations.synonym.name.nomenclaturalReference.inReference.authorship", //$NON-NLS-1$ + "synonymRelations.synonym.name.nomenclaturalReference.authorship", //$NON-NLS-1$ + "synonymRelations.synonym.name.homotypicalGroup.typifiedNames.taxonBases.synonymRelations" //$NON-NLS-1$ + }); + + return taxonBasePropertyPaths; + } + }