fixes #1357
authorn.hoffmann <n.hoffmann@localhost>
Thu, 7 Jan 2010 10:42:38 +0000 (10:42 +0000)
committern.hoffmann <n.hoffmann@localhost>
Thu, 7 Jan 2010 10:42:38 +0000 (10:42 +0000)
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeConceptRelationshipTypeOperation.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeConceptToSynonymOperation.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeSynonymToConceptOperation.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteConceptRelationOperation.java

index fa4c13b6b0c1f9e6d37bf3381ecbd0b773ca462b..a6abd2165cc0085dd2bc0cecf17ee316c166fcc5 100644 (file)
@@ -9,6 +9,8 @@
 \r
 package eu.etaxonomy.taxeditor.operations;\r
 \r
+import java.util.Set;\r
+\r
 import org.apache.log4j.Logger;\r
 import org.eclipse.core.commands.ExecutionException;\r
 import org.eclipse.core.commands.operations.IUndoContext;\r
@@ -19,7 +21,7 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.taxeditor.model.TaxonHelper;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
 \r
 /**\r
  * @author n.hoffmann\r
@@ -45,7 +47,15 @@ public class ChangeConceptRelationshipTypeOperation extends AbstractPostOperatio
                super(label, undoContext, taxon, postOperationEnabled);\r
                this.relatedTaxon = relatedTaxon;\r
                                \r
-               this.taxonRelationship = TaxonHelper.getRelationshipBetweenTwoTaxa(relatedTaxon, taxon);\r
+               Set<TaxonRelationship> taxonRelationships = taxon.getTaxonRelations(relatedTaxon);\r
+               \r
+               if(taxonRelationships.size() > 1){\r
+                       StoreUtil.warningDialog("Multiple relations between taxa", "There are multiple relations between the " +\r
+                                       "accepted and the related taxon. This case is not handled by the software yet");\r
+                       return;\r
+               }\r
+               \r
+               this.taxonRelationship = taxonRelationships.iterator().next();\r
                this.oldRelationshipType = taxonRelationship.getType();\r
                this.newRelationshipType = type;\r
        }\r
index 1166d3be9aed118367369f2e28cc6a86b5275b24..946f66b39bd7dc7144fadaa65da1753adcb17474 100644 (file)
@@ -9,6 +9,8 @@
 \r
 package eu.etaxonomy.taxeditor.operations;\r
 \r
+import java.util.Set;\r
+\r
 import org.eclipse.core.commands.ExecutionException;\r
 import org.eclipse.core.commands.operations.IUndoContext;\r
 import org.eclipse.core.runtime.IAdaptable;\r
@@ -18,11 +20,12 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.taxeditor.model.TaxonHelper;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -39,13 +42,23 @@ public class ChangeConceptToSynonymOperation extends
 \r
        private TaxonRelationship taxonRelationship;\r
        private TaxonRelationshipType oldRelationshipType;\r
+       \r
+       private SynonymRelationship newSynonymRelationship;\r
 \r
        public ChangeConceptToSynonymOperation(String label,\r
                        IUndoContext undoContext, Taxon taxon, Taxon concept, HomotypicalGroup homotypicalGroup,\r
                        IPostOperationEnabled editor) {\r
                super(label, undoContext, taxon, editor);\r
                \r
-               this.taxonRelationship = TaxonHelper.getRelationshipBetweenTwoTaxa(concept, taxon);\r
+               Set<TaxonRelationship> taxonRelationships = taxon.getTaxonRelations(concept);\r
+               \r
+               if(taxonRelationships.size() > 1){\r
+                       StoreUtil.warningDialog("Multiple relations between taxa", "There are multiple relations between the " +\r
+                                       "accepted and the related taxon. This case is not handled by the software yet");\r
+                       return;\r
+               }\r
+               \r
+               this.taxonRelationship = taxonRelationships.iterator().next();\r
                this.oldRelationshipType = taxonRelationship.getType();\r
                \r
                this.concept = concept;\r
@@ -61,26 +74,17 @@ public class ChangeConceptToSynonymOperation extends
                \r
                // Create new synonym using concept name\r
                TaxonNameBase<?, ?> synonymName = concept.getName();\r
-               Synonym synonym = Synonym.NewInstance(synonymName, taxon.getSec());\r
                \r
                // Remove concept relation from taxon\r
                taxon.removeTaxon(concept, oldRelationshipType);\r
-\r
                \r
-               if(homotypicalGroup != null){\r
-//                     // Add synonym to homotypical group\r
-//                     homotypicalGroup.addTypifiedName(synonymName);\r
-//                     \r
-                       if (homotypicalGroup.equals(taxon.getHomotypicGroup())) {\r
-                                taxon.addHomotypicSynonym(synonym, null, null);\r
-                       } else {\r
-                               taxon.addHeterotypicSynonymName(synonymName, homotypicalGroup, null, null);\r
-                       }\r
-               } else {\r
-                       taxon.addSynonym(synonym, SynonymRelationshipType.SYNONYM_OF());                        \r
-               }\r
+               // Add name to new homotypic group\r
+               HomotypicalGroup.NewInstance().addTypifiedName(synonymName);\r
                \r
-               return postExecute(synonym);\r
+               // Create a new synonym for the taxon\r
+               newSynonymRelationship = taxon.addHeterotypicSynonymName(synonymName);\r
+                               \r
+               return postExecute(newSynonymRelationship.getSynonym());\r
        }\r
 \r
        /* (non-Javadoc)\r
index a0b649a86f66bf768b0da0eb879bf1e655413720..980a913bde0682169ed3f883cdbe52a12cb5057b 100644 (file)
@@ -19,6 +19,7 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -46,17 +47,19 @@ public class ChangeSynonymToConceptOperation extends AbstractPostOperation {
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
                        throws ExecutionException {\r
                \r
-               // Get name from synonym\r
-               TaxonNameBase<?, ?> synonymName = synonym.getName();\r
+//             // Get name from synonym\r
+//             TaxonNameBase<?, ?> synonymName = synonym.getName();\r
+//             \r
+//             // remove synonym from taxon\r
+//             taxon.removeSynonym(synonym);\r
+//             \r
+//             // Create a taxon with synonym name\r
+//             Taxon fromTaxon = Taxon.NewInstance(synonymName, null);\r
+//             \r
+//             // Add taxon relation \r
+//             fromTaxon.addTaxonRelation(taxon, taxonRelationshipType, null, null);\r
                \r
-               // remove synonym from taxon\r
-               taxon.removeSynonym(synonym);\r
-               \r
-               // Create a taxon with synonym name\r
-               Taxon fromTaxon = Taxon.NewInstance(synonymName, null);\r
-               \r
-               // Add taxon relation \r
-               fromTaxon.addTaxonRelation(taxon, taxonRelationshipType, null, null);\r
+               Taxon fromTaxon = CdmStore.getTaxonService().changeSynonymToRelatedTaxon(synonym, taxon, taxonRelationshipType, null, null);\r
                \r
 //             TaxonRelationshipType.\r
 //             logger.warn("Not yet implemented.");\r
index b1b77ab93b8e755bbc86a449c9371942d0e1b93d..abfd39515b6120c5aec0af9dba9087a407f4d199 100644 (file)
@@ -9,6 +9,8 @@
 \r
 package eu.etaxonomy.taxeditor.operations;\r
 \r
+import java.util.Set;\r
+\r
 import org.eclipse.core.commands.ExecutionException;\r
 import org.eclipse.core.commands.operations.IUndoContext;\r
 import org.eclipse.core.runtime.IAdaptable;\r
@@ -19,7 +21,7 @@ import eu.etaxonomy.cdm.model.reference.ReferenceBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.taxeditor.model.TaxonHelper;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
 \r
 /**\r
  * Deletes a relation between two taxa. \r
@@ -38,7 +40,7 @@ public class DeleteConceptRelationOperation extends AbstractPostOperation {
        private TaxonRelationshipType relationshipType;\r
        private ReferenceBase<?> citation;\r
        private String microcitation;\r
-       private TaxonRelationship relationship; \r
+       private TaxonRelationship taxonRelationship;    \r
 \r
        public DeleteConceptRelationOperation(String label,\r
                        IUndoContext undoContext, Taxon taxon, Taxon relatedTaxon,\r
@@ -47,12 +49,20 @@ public class DeleteConceptRelationOperation extends AbstractPostOperation {
                \r
                this.relatedTaxon = relatedTaxon;\r
                \r
-               relationship = TaxonHelper.getRelationshipBetweenTwoTaxa(relatedTaxon, taxon);\r
+               Set<TaxonRelationship> taxonRelationships = taxon.getTaxonRelations(relatedTaxon);\r
+               \r
+               if(taxonRelationships.size() > 1){\r
+                       StoreUtil.warningDialog("Multiple relations between taxa", "There are multiple relations between the " +\r
+                                       "accepted and the related taxon. This case is not handled by the software yet");\r
+                       return;\r
+               }\r
+               \r
+               taxonRelationship = taxonRelationships.iterator().next();\r
 \r
-               relationshipType = relationship.getType();\r
+               relationshipType = taxonRelationship.getType();\r
                \r
-               citation = relationship.getCitation();\r
-               microcitation = relationship.getCitationMicroReference();\r
+               citation = taxonRelationship.getCitation();\r
+               microcitation = taxonRelationship.getCitationMicroReference();\r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -68,12 +78,12 @@ public class DeleteConceptRelationOperation extends AbstractPostOperation {
                                        && relationship.getFromTaxon().equals(relatedTaxon)) {\r
                                citation = relationship.getCitation();\r
                                microcitation = relationship.getCitationMicroReference();\r
-                               this.relationship = relationship; \r
+                               taxonRelationship = relationship; \r
                        }\r
                }\r
                \r
                // Remove relation from taxon\r
-               taxon.removeTaxonRelation(relationship);\r
+               taxon.removeTaxonRelation(taxonRelationship);\r
                                \r
                return postExecute(taxon);\r
        }\r