-package org.simantics.structural.synchronization;\r
-\r
-import java.util.concurrent.ConcurrentMap;\r
-\r
-import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.core.runtime.Status;\r
-import org.eclipse.core.runtime.jobs.Job;\r
-import org.simantics.DatabaseJob;\r
-import org.simantics.Simantics;\r
-import org.simantics.simulation.experiment.ExperimentState;\r
-import org.simantics.simulation.experiment.IExperiment;\r
-\r
-public class ContinuousSynchronizationJob extends DatabaseJob {\r
- \r
- public static final String FAMILY = "ContinuousSynchronizationJob";\r
-\r
- final private ConcurrentMap<IExperiment, Job> currentSyncJobs;\r
- \r
- IExperiment experiment;\r
-\r
- public ContinuousSynchronizationJob(IExperiment experiment, ConcurrentMap<IExperiment, Job> currentSyncJobs) {\r
- super("Synchronization");\r
- this.experiment = experiment;\r
- this.currentSyncJobs = currentSyncJobs;\r
- setPriority(SHORT);\r
- setSystem(false);\r
- }\r
- \r
- @Override\r
- public boolean belongsTo(Object family) {\r
- if (FAMILY == family) return true;\r
- return super.belongsTo(family);\r
- }\r
-\r
- @Override\r
- public boolean shouldRun() {\r
- return currentSyncJobs.remove(experiment, this);\r
- }\r
-\r
- @Override\r
- protected IStatus run(IProgressMonitor monitor) {\r
- try {\r
- //System.out.println("SYNC #" + (++syncCounter));\r
- monitor.beginTask("", IProgressMonitor.UNKNOWN);\r
- if (experiment.getState() != ExperimentState.DISPOSED)\r
- experiment.refresh(Simantics.getSession());\r
- return Status.OK_STATUS;\r
- } catch (Throwable t) {\r
- return new Status(IStatus.ERROR, "org.simantics.structural.synchronization.client", "Failed to refresh experiment "\r
- + experiment + " with ID " + experiment.getIdentifier(), t);\r
- } finally {\r
- monitor.done();\r
- }\r
- }\r
-\r
+package org.simantics.structural.synchronization;
+
+import java.util.concurrent.ConcurrentMap;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.simantics.DatabaseJob;
+import org.simantics.Simantics;
+import org.simantics.simulation.experiment.ExperimentState;
+import org.simantics.simulation.experiment.IExperiment;
+
+public class ContinuousSynchronizationJob extends DatabaseJob {
+
+ public static final String FAMILY = "ContinuousSynchronizationJob";
+
+ final private ConcurrentMap<IExperiment, Job> currentSyncJobs;
+
+ IExperiment experiment;
+
+ public ContinuousSynchronizationJob(IExperiment experiment, ConcurrentMap<IExperiment, Job> currentSyncJobs) {
+ super("Synchronization");
+ this.experiment = experiment;
+ this.currentSyncJobs = currentSyncJobs;
+ setPriority(SHORT);
+ setSystem(false);
+ }
+
+ @Override
+ public boolean belongsTo(Object family) {
+ if (FAMILY == family) return true;
+ return super.belongsTo(family);
+ }
+
+ @Override
+ public boolean shouldRun() {
+ return currentSyncJobs.remove(experiment, this);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ //System.out.println("SYNC #" + (++syncCounter));
+ monitor.beginTask("", IProgressMonitor.UNKNOWN);
+ if (experiment.getState() != ExperimentState.DISPOSED)
+ experiment.refresh(Simantics.getSession());
+ return Status.OK_STATUS;
+ } catch (Throwable t) {
+ return new Status(IStatus.ERROR, "org.simantics.structural.synchronization.client", "Failed to refresh experiment "
+ + experiment + " with ID " + experiment.getIdentifier(), t);
+ } finally {
+ monitor.done();
+ }
+ }
+
}
\ No newline at end of file