use of org.eclipse.core.runtime.jobs.ISchedulingRule in project tdi-studio-se by Talend.
the class SaveAsProcessWizard method update.
private void update(final ProcessType processType) {
RepositoryWorkUnit<Object> rwu = new RepositoryWorkUnit<Object>("Save job") {
@Override
protected void run() throws LoginException, PersistenceException {
IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
@Override
public void run(final IProgressMonitor monitor) throws CoreException {
try {
oldProcessItem.setProcess(processType);
assginValues(oldProperty, property);
RelationshipItemBuilder.getInstance().addOrUpdateItem(oldProcessItem);
repositoryFactory.save(oldProcessItem);
// assign value
processItem = oldProcessItem;
} catch (PersistenceException pe) {
throw new CoreException(new Status(IStatus.ERROR, FrameworkUtil.getBundle(this.getClass()).getSymbolicName(), "persistance error", //$NON-NLS-1$
pe));
}
}
};
IWorkspace workspace = ResourcesPlugin.getWorkspace();
try {
ISchedulingRule schedulingRule = workspace.getRoot();
// the update the project files need to be done in the workspace runnable to avoid all notification
// of changes before the end of the modifications.
workspace.run(runnable, schedulingRule, IWorkspace.AVOID_UPDATE, null);
} catch (CoreException e) {
MessageBoxExceptionHandler.process(e.getCause());
}
}
};
rwu.setAvoidUnloadResources(true);
rwu.setAvoidSvnUpdate(true);
repositoryFactory.executeRepositoryWorkUnit(rwu);
}
use of org.eclipse.core.runtime.jobs.ISchedulingRule in project tdi-studio-se by Talend.
the class GenericConnWizard method createOrUpdateConnectionItem.
private void createOrUpdateConnectionItem() throws CoreException {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
final IProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance();
IWorkspaceRunnable operation = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
try {
Form form = wizPage.getForm();
if (form.isCallAfterFormFinish()) {
if (creation) {
factory.create(connectionItem, pathToSave);
}
compService.afterFormFinish(form.getName(), form.getProperties());
}
updateConnectionItem(factory);
} catch (Throwable e) {
throw new CoreException(new Status(IStatus.ERROR, IGenericConstants.REPOSITORY_PLUGIN_ID, "Error when saving the connection", e));
}
}
};
ISchedulingRule schedulingRule = workspace.getRoot();
// the update the project files need to be done in the workspace runnable to avoid all
// notification of changes before the end of the modifications.
workspace.run(operation, schedulingRule, IWorkspace.AVOID_UPDATE, new NullProgressMonitor());
// Move it from WorkspaceRunnable to avoid the conflicting rules with other jobs.
if (!creation) {
GenericUpdateManager.updateGenericConnection(connectionItem, oldMetadataTable);
}
}
use of org.eclipse.core.runtime.jobs.ISchedulingRule in project tdi-studio-se by Talend.
the class StandAloneTalendJavaEditor method refreshJobAndSave.
private void refreshJobAndSave(final IProxyRepositoryFactory repFactory) throws PersistenceException {
final IWorkspaceRunnable op = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
try {
repFactory.save(item);
} catch (PersistenceException e) {
throw new CoreException(new Status(IStatus.ERROR, DesignerPlugin.ID, "Save Routine failed!", e));
}
}
;
};
IRunnableWithProgress iRunnableWithProgress = new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
try {
ISchedulingRule schedulingRule = workspace.getRoot();
// the update the project files need to be done in the workspace runnable to avoid all
// notification
// of changes before the end of the modifications.
workspace.run(op, schedulingRule, IWorkspace.AVOID_UPDATE, monitor);
} catch (CoreException e) {
throw new InvocationTargetException(e);
}
}
};
try {
PlatformUI.getWorkbench().getProgressService().run(false, false, iRunnableWithProgress);
} catch (InvocationTargetException e) {
throw new PersistenceException(e);
} catch (InterruptedException e) {
throw new PersistenceException(e);
}
setTitleImage(getTitleImage());
}
use of org.eclipse.core.runtime.jobs.ISchedulingRule in project erlide_eclipse by erlang.
the class RunDialyzerHandler method execute.
@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
final ISelection selection = HandlerUtil.getCurrentSelection(event);
final Set<IErlModule> modules = collectModulesFromSelection(selection);
final Set<IErlProject> projects = collectProjectsFromModules(modules);
// build
final WorkspaceJob buildJob = new BuildOperation("Building projects", projects);
buildJob.setUser(true);
buildJob.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule());
buildJob.schedule();
// run dialyzer
final Job job = new DialyzeOperation("Running Dialyzer", modules, projects);
final ISchedulingRule rule = createRuleForModules(modules);
job.setRule(rule);
job.setUser(true);
job.schedule();
return null;
}
use of org.eclipse.core.runtime.jobs.ISchedulingRule in project tmdm-studio-se by Talend.
the class RemovePhysicallyFromRepositoryAction method doRun.
@Override
protected void doRun() {
final IWorkspaceRunnable op = new IWorkspaceRunnable() {
public void run(IProgressMonitor monitor) throws CoreException {
int size = getSelectedObject().size();
if (size > 0) {
if (!MessageDialog.openConfirm(getShell(), Messages.RemoveFromRepositoryAction_Title, Messages.bind(Messages.RemoveFromRepositoryAction_confirm, size, size > 1 ? Messages.RemoveFromRepositoryAction_instances : Messages.RemoveFromRepositoryAction_instance))) {
return;
}
}
List<IRepositoryViewObject> viewObjs = new ArrayList<IRepositoryViewObject>();
for (Object obj : getSelectedObject()) {
if (obj instanceof IRepositoryViewObject) {
IRepositoryViewObject viewObj = (IRepositoryViewObject) obj;
viewObjs.add(viewObj);
}
}
removeViewObjects(viewObjs);
}
};
//
IRunnableWithProgress iRunnableWithProgress = new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
try {
ISchedulingRule schedulingRule = workspace.getRoot();
workspace.run(op, schedulingRule, IWorkspace.AVOID_UPDATE, monitor);
} catch (CoreException e) {
throw new InvocationTargetException(e);
}
}
};
try {
PlatformUI.getWorkbench().getProgressService().run(false, false, iRunnableWithProgress);
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
Aggregations