Partial fix of Ticket #4728
[taxeditor.git] / eu.etaxonomy.taxeditor.navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / handler / CreateClassificationHierarchyHandler.java
@@ -10,14 +10,17 @@ import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
 import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;
+import eu.etaxonomy.taxeditor.navigation.operation.CreateNewTaxonHierarchyOperation;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
 
-public class FixClassificationHierarchyHandler extends AbstractHandler {
+public class CreateClassificationHierarchyHandler extends AbstractHandler {
 
-    private static final Logger logger = Logger.getLogger(FixClassificationHierarchyHandler.class);
+    private static final Logger logger = Logger.getLogger(CreateClassificationHierarchyHandler.class);
 
     TaxonNavigator taxonNavigator = (TaxonNavigator)NavigationUtil.showView(TaxonNavigator.ID);
     /*
@@ -36,19 +39,30 @@ public class FixClassificationHierarchyHandler extends AbstractHandler {
 
                 Classification classification = (Classification) selectedElement;
                 try {
-                    IClassificationService service = CdmStore.getService(IClassificationService.class);
+//                    IClassificationService service = CdmStore.getService(IClassificationService.class);
 
                     // Map<String, List<TaxonNode>> sortedGenusList =
                     // service.getSortedGenusList(classification.getAllNodes());
 
-                    Classification newClassification = service.createHierarchyInClassification(classification, null);
 
-                    MessagingUtils.messageDialog("Fix Hierarchy successful",
-                            FixClassificationHierarchyHandler.class, "Operation 'Fix Hierarchy' was successful. New classification is " + newClassification.getTitleCache());
+                    CreateNewTaxonHierarchyOperation operation = new CreateNewTaxonHierarchyOperation("Create Taxon Hierarchy", StoreUtil.getUndoContext(),classification,NavigationUtil.getNavigator(false), NavigationUtil.getNavigator(false) );
+
+                    AbstractUtility.executeOperation(operation);
+//                    UpdateResult result = service.createHierarchyInClassification(classification, null);
+//
+//                    Classification classification2 = CdmBase.deproxy(result.getCdmEntity(), Classification.class);
+//
+//                    Set<CdmBase> updatedObjects = result.getUpdatedObjects();
+//
+//                    Shell activeShell = HandlerUtil.getActiveShell(event);
+
+//                    MessagingUtils.messageDialog("Add Hierarchy successful",
+//                            FixClassificationHierarchyHandler.class, "Operation 'Fix Hierarchy' was successful. New classification is "
+//                    + classification2.getTitleCache() + "\nUpdated Objects: " + updatedObjects.size());
                     //Success
                     taxonNavigator.refresh();
                 } catch (Exception e) {
-                    MessagingUtils.messageDialog("Failed to open Editor", FixClassificationHierarchyHandler.class,
+                    MessagingUtils.messageDialog("Failed to open Editor", CreateClassificationHierarchyHandler.class,
                             "Could not open ChecklistView. The hierarchy is corrupted!", e);
                 }
             }