/** * ************************************************************************* The command has been * executed, so extract extract the needed information from the application context. * ************************************************************************ */ public CommandResult execute(ExecutionEvent event) throws ExecutionException { IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); IRuntimeSettings runtime = (IRuntimeSettings) ServiceManager.get(IRuntimeSettings.class); String instanceId = (String) runtime.getRuntimeProperty(RuntimeProperty.ID_PROCEDURE_SELECTION); try { IProcedureManager mgr = (IProcedureManager) ServiceManager.get(IProcedureManager.class); IProcedure proc = null; if (mgr.isLocallyLoaded(instanceId)) { proc = mgr.getProcedure(instanceId); } else { proc = mgr.getRemoteProcedure(instanceId); } List<AsRunFile> toExport = new LinkedList<AsRunFile>(); ExportAsRunFileJob job = new ExportAsRunFileJob(proc); CommandHelper.executeInProgress(job, true, true); if (job.result.equals(CommandResult.SUCCESS)) { toExport.add(job.asrunFile); if (!job.asrunFile.getChildren().isEmpty()) { boolean alsoChildren = MessageDialog.openQuestion( window.getShell(), "Export children ASRUN files", "This procedure has executed sub-procedures.\n\nDo you want to export these ASRUN files as well?"); if (alsoChildren) { gatherChildAsRunFiles(job.asrunFile, toExport); } } } DirectoryDialog dialog = new DirectoryDialog(window.getShell(), SWT.SAVE); dialog.setMessage( "Select directory to export ASRUN file(s) for '" + proc.getProcName() + "'"); dialog.setText("Export ASRUN"); String destination = dialog.open(); if (destination != null && !destination.isEmpty()) { SaveAsRunFileJob saveJob = new SaveAsRunFileJob(destination, toExport); CommandHelper.executeInProgress(saveJob, true, true); return saveJob.result; } else { return CommandResult.NO_EFFECT; } } catch (Exception ex) { ex.printStackTrace(); return CommandResult.FAILED; } }
/** * ************************************************************************* The command has been * executed, so extract extract the needed information from the application context. * ************************************************************************ */ public CommandResult execute(ExecutionEvent event) throws ExecutionException { IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); IServerProxy proxy = (IServerProxy) ServiceManager.get(IServerProxy.class); ServerRole role = proxy.getCurrentServer().getRole(); if (role != ServerRole.COMMANDING) { MessageDialog.openError( window.getShell(), "Cannot open", "Cannot schedule procedures on the current server,\n" + "the role is monitoring"); return CommandResult.NO_EFFECT; } IRuntimeSettings runtime = (IRuntimeSettings) ServiceManager.get(IRuntimeSettings.class); String procId = (String) runtime.getRuntimeProperty(RuntimeProperty.ID_NAVIGATION_VIEW_SELECTION); if (procId != null) { ConditionDialog dlg = new ConditionDialog(window.getShell()); dlg.open(); String condition = dlg.getCondition(); if (condition != null) { ScheduleProcedureJob job = new ScheduleProcedureJob(procId, condition); CommandHelper.executeInProgress(job, true, true); if (job.result != CommandResult.SUCCESS) { MessageDialog.openError(window.getShell(), "Schedule error", job.message); } return job.result; } else { return CommandResult.NO_EFFECT; } } else { return CommandResult.NO_EFFECT; } }
/** * ************************************************************************* Iterate over all * ASRUN files for children * ************************************************************************ */ private void gatherChildAsRunFiles(AsRunFile parent, List<AsRunFile> list) { Logger.debug("Fetching child ASRUN files for " + parent.getProcId(), Level.PROC, this); for (String childFile : parent.getChildren()) { Logger.debug(" - Get child ASRUN file: " + childFile, Level.PROC, this); ExportAsRunFileJob childJob = new ExportAsRunFileJob(childFile); CommandHelper.executeInProgress(childJob, true, true); if (childJob.result.equals(CommandResult.SUCCESS)) { list.add(childJob.asrunFile); Logger.debug( " - ASRUN file has children: " + childJob.asrunFile.getChildren().size(), Level.PROC, this); if (!childJob.asrunFile.getChildren().isEmpty()) { gatherChildAsRunFiles(childJob.asrunFile, list); } } } }