Correctly handle UuidAndTitleCache type in SearchResultView #5700
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 13 Apr 2016 12:28:16 +0000 (14:28 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 13 Apr 2016 12:28:25 +0000 (14:28 +0200)
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/NavigationUtil.java

index 0995da311773c6e75f4774bf9693d94c35353c31..47d63d05bcf014099f9e4d58b06bd5d226398a2c 100644 (file)
@@ -25,6 +25,9 @@ import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.navigator.CommonViewer;
 
+import eu.etaxonomy.cdm.api.service.IClassificationService;
+import eu.etaxonomy.cdm.api.service.INameService;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
@@ -62,13 +65,28 @@ public class NavigationUtil extends AbstractUtility{
         * @param selectedObject a {@link eu.etaxonomy.cdm.model.common.CdmBase} object.
         */
        public static void openEditor(UuidAndTitleCache uuidAndTitleCache){
-           TaxonBase taxonBase = CdmStore.getService(ITaxonService.class).load(uuidAndTitleCache.getUuid());
-           if(taxonBase==null){
-               MessagingUtils.warn(NavigationUtil.class, "No taxon stored with UUID "+uuidAndTitleCache.getUuid());
-               return;
+           Class type = uuidAndTitleCache.getType();
+           if(type.equals(Classification.class)){
+               Classification classification = CdmStore.getService(IClassificationService.class).load(uuidAndTitleCache.getUuid());
+               openEditor(classification);
+           }
+           else if(type.equals(TaxonNode.class)){
+               TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(uuidAndTitleCache.getUuid());
+               openEditor(taxonNode);
+           }
+           else if(type.equals(TaxonBase.class)){
+               TaxonBase taxonBase = CdmStore.getService(ITaxonService.class).load(uuidAndTitleCache.getUuid());
+               openEditor(taxonBase);
+           }
+           else if(type.equals(TaxonNameBase.class)){
+               TaxonNameBase nameBase = CdmStore.getService(INameService.class).load(uuidAndTitleCache.getUuid());
+               openEditor(nameBase);
+           }
+           else{
+               MessagingUtils.warningDialog("Unknown type", NavigationUtil.class, "There is no editor available to open this object.");
            }
-           openEditor(taxonBase);
        }
+
        public static void openEditor(ICdmBase selectedObject){
                UUID entityUuid = selectedObject.getUuid();
                try {