ref #5691: minor
authorKatja Luther <k.luther@bgbm.org>
Wed, 15 Feb 2017 10:19:00 +0000 (11:19 +0100)
committerKatja Luther <k.luther@bgbm.org>
Wed, 15 Feb 2017 10:25:22 +0000 (11:25 +0100)
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsView.java

index 2ac4a7925ddcf5513d943a1e22280f65b9ef2d8b..2df83a7c972ce4f78d70d54879c817f41c86df6a 100644 (file)
@@ -20,7 +20,10 @@ import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.ICellModifier;
@@ -192,15 +195,17 @@ public class ReferencingObjectsView extends AbstractCdmViewPart {
                        @Override
                        protected IStatus run(IProgressMonitor monitor) {
                                monitor.beginTask("Calculating referencing objects", 100);
-
+                               actualUuid = entityUUID;
+                               System.out.println("starting job... " + entityUUID);
                                monitor.worked(5);
                                referencingObjects = new ArrayList<>();
                                if(monitor.isCanceled()) {
+                                   actualUuid = null;
                     return Status.CANCEL_STATUS;
                 }
                                if (actualMonitor != null){
                                    actualMonitor.setCanceled(true);
-                                   updateView();
+
                                }
                                actualMonitor = monitor;
                                if (entityUUID != null){
@@ -209,18 +214,25 @@ public class ReferencingObjectsView extends AbstractCdmViewPart {
                        referencingObjectsSet = getReferencingObjects(entityUUID, objectClass);
 
                        if(monitor.isCanceled()) {
+                           actualUuid = null;
+                           System.err.println("Job is canceled" + entityUUID);
                            return Status.CANCEL_STATUS;
                        }
                        monitor.worked(30);
                        referencingObjects = sortReferencing();
                        if (referencingObjects == null){
                            if (monitor.isCanceled()){
+                               actualUuid = null;
+                               System.err.println("Job is canceled" + entityUUID);
                                return Status.CANCEL_STATUS;
                            }
                        }
 
                        if(monitor.isCanceled()) {
-
+                           if(previousCdmEntitySession != null) {
+                               previousCdmEntitySession.bind();
+                           }
+                           System.err.println("Job is canceled" + entityUUID);
                            return Status.CANCEL_STATUS;
                        }
                        monitor.worked(80);
@@ -229,29 +241,29 @@ public class ReferencingObjectsView extends AbstractCdmViewPart {
                        if(previousCdmEntitySession != null) {
                            previousCdmEntitySession.bind();
                        }
-                       actualUuid = entityUUID;
+                      // actualUuid = entityUUID;
                                }
                                monitor.done();
 
-
+                               System.out.println("finishing job " + entityUUID);
                                return Status.OK_STATUS;
 
 
                        }
                };
-               //job.setUser(true);
+               job.setUser(true);
 
                job.schedule();
-//             final IJobChangeListener listener;
-//             listener =  new JobChangeAdapter() {
-//            @Override
-//            public void done(IJobChangeEvent event) {
-//                System.err.println("Job is done");
-//                event.getJob().cancel();
-//            }
-//
-//        };
-//        job.addJobChangeListener(listener);
+               final IJobChangeListener listener;
+               listener =  new JobChangeAdapter() {
+            @Override
+            public void done(IJobChangeEvent event) {
+                System.err.println("Job is done" + entityUUID);
+                //event.getJob().cancel();
+            }
+
+        };
+        job.addJobChangeListener(listener);
 
 
 
@@ -399,7 +411,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart {
 
         if(selection instanceof IStructuredSelection){
                referencedObjectTitleCache = null;
-            showViewer(part, (IStructuredSelection) selection);
+               showViewer(part, (IStructuredSelection) selection);
         }
        }
 
@@ -414,6 +426,9 @@ public class ReferencingObjectsView extends AbstractCdmViewPart {
                }
                if(firstElement instanceof CdmBase){
                    CdmBase referencedCdmObject = (CdmBase) firstElement;
+                   if (referencedCdmObject.getUuid() == actualUuid){
+                       return;
+                   }
                    if (referencedCdmObject != null){
                 if(referencedCdmObject.isInstanceOf(IdentifiableEntity.class)){
                     referencedObjectTitleCache = (HibernateProxyHelper.deproxy(referencedCdmObject, IdentifiableEntity.class)).getTitleCache();
@@ -430,7 +445,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart {
                    updateReferencingObjects(referencedCdmObject.getUuid(),firstElement.getClass() );
 
                }
-               else{
+               else if (firstElement != null){
                    updateView();
             setContentDescription("");
                }