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;
@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){
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);
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);
if(selection instanceof IStructuredSelection){
referencedObjectTitleCache = null;
- showViewer(part, (IStructuredSelection) selection);
+ showViewer(part, (IStructuredSelection) selection);
}
}
}
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();
updateReferencingObjects(referencedCdmObject.getUuid(),firstElement.getClass() );
}
- else{
+ else if (firstElement != null){
updateView();
setContentDescription("");
}