use of org.talend.core.model.process.IContext in project tdi-studio-se by Talend.
the class UpdateContextParameterCommand method doExecute.
private void doExecute() {
if (result == null) {
return;
}
Object job = result.getJob();
if (job == null) {
return;
}
if (job instanceof IProcess2) {
IProcess2 process = (IProcess2) job;
ContextParameterMap deleteParameters = new ContextParameterMap();
Object updateObject = result.getUpdateObject();
List<IContext> listContext = process.getContextManager().getListContext();
if (updateObject instanceof Set) {
Set<String> names = (Set<String>) updateObject;
if (result.getResultType() == EUpdateResult.ADD && result.isChecked()) {
// check parameters that have been added to repository context group
checkNewRepositoryParameters(process, names);
return;
}
for (IContext context : listContext) {
for (IContextParameter param : context.getContextParameterList()) {
ContextItem item = null;
if (names != null && names.contains(param.getName())) {
switch(result.getResultType()) {
case DELETE:
item = (ContextItem) result.getParameter();
if (item != null && item.getProperty().getId().equals(param.getSource()) && result.isChecked()) {
// delete it later
deleteParameters.addParameter(context, param);
} else {
param.setSource(IContextParameter.BUILT_IN);
}
break;
case UPDATE:
item = (ContextItem) result.getParameter();
if (item != null && item.getProperty().getId().equals(param.getSource()) && result.isChecked()) {
ContextUtils.updateParameterFromRepository(item, param, context.getName());
} else {
param.setSource(IContextParameter.BUILT_IN);
}
break;
case RENAME:
List<Object> parameter = (List<Object>) result.getParameter();
if (parameter.size() >= 3) {
item = (ContextItem) parameter.get(0);
String sourceId = item.getProperty().getId();
String oldName = (String) parameter.get(1);
String newName = (String) parameter.get(2);
if (oldName.equals(param.getName()) && sourceId.equals(param.getSource())) {
if (newName != null) {
param.setName(newName);
ContextUtils.updateParameterFromRepository(item, param, context.getName());
}
}
}
break;
// built-in
case BUIL_IN:
default:
param.setSource(IContextParameter.BUILT_IN);
break;
}
}
}
}
}
if (updateObject instanceof JobContext) {
if (result.getResultType() == EUpdateResult.ADD && result.getUpdateType() == EUpdateItemType.CONTEXT_GROUP && result.isChecked()) {
IContext context = (IContext) updateObject;
String name = context.getName();
if (!listContext.contains(context) && result.getParameter() instanceof ContextItem) {
ContextItem item = (ContextItem) result.getParameter();
JobContext newContext = new JobContext(name);
List<IContextParameter> newParamList = new ArrayList<IContextParameter>();
newContext.setContextParameterList(newParamList);
JobContextParameter param = null;
// add other context params to the new group
for (IContextParameter contextParam : process.getContextManager().getDefaultContext().getContextParameterList()) {
boolean exist = false;
for (IContextParameter existParam : context.getContextParameterList()) {
if (contextParam.getName().equals(existParam.getName())) {
exist = true;
}
}
if (exist) {
continue;
}
param = (JobContextParameter) contextParam.clone();
param.setContext(newContext);
newParamList.add(param);
}
// current context params for the new group
for (int i = 0; i < context.getContextParameterList().size(); i++) {
IContextParameter oldParam = context.getContextParameterList().get(i);
param = (JobContextParameter) oldParam.clone();
param.setSource(item.getProperty().getId());
param.setContext(newContext);
newParamList.add(param);
}
listContext.add(newContext);
}
} else if (result.getResultType() == EUpdateResult.DELETE && result.getUpdateType() == EUpdateItemType.CONTEXT_GROUP && result.isChecked()) {
IContext context = (IContext) updateObject;
if (result.getParameter() instanceof ContextItem) {
ContextItem item = (ContextItem) result.getParameter();
List<IContext> listC = new ArrayList<IContext>(listContext);
for (IContext con : listC) {
if (con.getName().equals(context.getName())) {
for (IContextParameter oldParam : con.getContextParameterList()) {
if (item.getProperty().getId().equals(oldParam.getSource())) {
listContext.remove(con);
}
}
}
}
}
return;
} else if (result.getResultType() == EUpdateResult.RENAME && result.getUpdateType() == EUpdateItemType.CONTEXT_GROUP && result.isChecked()) {
IContext context = (IContext) updateObject;
IContextManager contextManager = process.getContextManager();
Map<IContext, String> renameGroupContext = ((JobContextManager) contextManager).getRenameGroupContext();
String oldName = renameGroupContext.get(context);
if (result.getParameter() instanceof ContextItem) {
ContextItem item = (ContextItem) result.getParameter();
for (IContext con : listContext) {
if (con.getName().equals(oldName)) {
for (IContextParameter oldParam : con.getContextParameterList()) {
if (item.getProperty().getId().equals(oldParam.getSource())) {
con.setName(context.getName());
}
}
}
}
}
}
return;
}
// delete parameters
deleteParameters.removeFromContext();
// update parameters
if (result.getResultType() == EUpdateResult.RENAME) {
List<Object> parameter = (List<Object>) result.getParameter();
if (parameter.size() >= 3) {
String oldName = (String) parameter.get(1);
String newName = (String) parameter.get(2);
UpdateContextVariablesHelper.updateProcessForRenamed(process, oldName, newName);
// tRunJob parameters rename
IEditorReference[] reference = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences();
List<IProcess2> processes = RepositoryPlugin.getDefault().getDesignerCoreService().getOpenedProcess(reference);
Map<String, String> renamedMap = new HashMap<String, String>();
renamedMap.put(newName, oldName);
UpdateRunJobComponentContextHelper.updateOpenedJobRunJobComponentReference(processes, renamedMap, process.getId(), null);
try {
// perhaps, need optimize.
UpdateRunJobComponentContextHelper.updateItemRunJobComponentReference(DesignerPlugin.getDefault().getProxyRepositoryFactory(), renamedMap, process.getId(), null);
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
}
}
}
}
use of org.talend.core.model.process.IContext in project tdi-studio-se by Talend.
the class DebugProcessTosComposite method debug.
@Override
public void debug() {
if (manager.getClearBeforeExec()) {
processContext.clearMessages();
}
setHideconsoleLine(false);
if ((processContext.getProcess()) instanceof org.talend.designer.core.ui.editor.process.Process) {
((org.talend.designer.core.ui.editor.process.Process) processContext.getProcess()).checkDifferenceWithRepository();
}
// final IPreferenceStore preferenceStore = DebugUIPlugin.getDefault().getPreferenceStore();
final IPreferenceStore preferenceStore = DebugUITools.getPreferenceStore();
final boolean oldValueConsoleOnOut = preferenceStore.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT);
final boolean oldValueConsoleOnErr = preferenceStore.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT, false);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR, false);
// java debug to collect when tos
int num = RunProcessPlugin.getDefault().getPreferenceStore().getInt(RunProcessTokenCollector.TOS_COUNT_DEBUG_RUNS.getPrefKey());
RunProcessPlugin.getDefault().getPreferenceStore().setValue(RunProcessTokenCollector.TOS_COUNT_DEBUG_RUNS.getPrefKey(), num + 1);
checkSaveBeforeRunSelection();
if (contextComposite.promptConfirmLauch()) {
setRunnable(false);
final IContext context = contextComposite.getSelectedContext();
IRunnableWithProgress worker = new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) {
IProcessor processor = ProcessorUtilities.getProcessor(processContext.getProcess(), processContext.getProcess().getProperty(), context);
//$NON-NLS-1$
monitor.beginTask("Launching debugger", IProgressMonitor.UNKNOWN);
try {
// use this function to generate childrens also.
ProcessorUtilities.generateCode(processContext.getProcess(), context, false, false, true, monitor);
ILaunchConfiguration config = ((Processor) processor).getDebugConfiguration(processContext.getStatisticsPort(), processContext.getTracesPort(), null);
// code is correct before launching
if (!JobErrorsChecker.hasErrors(DebugProcessTosComposite.this.getShell())) {
if (config != null) {
// PlatformUI.getWorkbench().
// getActiveWorkbenchWindow
// ().addPerspectiveListener(new
// DebugInNewWindowListener());
DebugUITools.launch(config, ILaunchManager.DEBUG_MODE);
} else {
//$NON-NLS-1$
MessageDialog.openInformation(//$NON-NLS-1$
getShell(), //$NON-NLS-1$
Messages.getString("ProcessDebugDialog.debugBtn"), //$NON-NLS-1$
Messages.getString("ProcessDebugDialog.errortext"));
}
}
} catch (ProcessorException e) {
IStatus status = new Status(IStatus.ERROR, RunProcessPlugin.PLUGIN_ID, IStatus.OK, "Debug launch failed.", //$NON-NLS-1$
e);
RunProcessPlugin.getDefault().getLog().log(status);
//$NON-NLS-1$ //$NON-NLS-2$
MessageDialog.openError(getShell(), Messages.getString("ProcessDebugDialog.debugBtn"), "");
} finally {
monitor.done();
}
}
};
IProgressService progressService = PlatformUI.getWorkbench().getProgressService();
try {
progressService.runInUI(PlatformUI.getWorkbench().getProgressService(), worker, ResourcesPlugin.getWorkspace().getRoot());
} catch (InvocationTargetException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
} catch (InterruptedException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
}
debugMode = true;
try {
Thread thread = new Thread() {
@Override
public void run() {
while (debugMode) {
final IProcess process = DebugUITools.getCurrentProcess();
if (process != null && process.isTerminated()) {
Display dis = Display.getCurrent();
if (dis == null) {
dis = Display.getDefault();
}
dis.asyncExec(new Runnable() {
@Override
public void run() {
setRunnable(true);
if (!killBtn.isDisposed() && killBtn != null) {
killBtn.setEnabled(false);
}
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT, oldValueConsoleOnOut);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR, oldValueConsoleOnErr);
if (isAddedStreamListener) {
process.getStreamsProxy().getOutputStreamMonitor().removeListener(streamListener);
isAddedStreamListener = false;
if (processContext.isRunning()) {
//$NON-NLS-1$
final String endingPattern = Messages.getString("ProcessComposite.endPattern");
MessageFormat mf = new MessageFormat(endingPattern);
String byeMsg;
try {
byeMsg = //$NON-NLS-1$
"\n" + mf.format(new Object[] { processContext.getProcess().getName(), new Date(), new Integer(process.getExitValue()) });
processContext.addDebugResultToConsole(new ProcessMessage(MsgType.CORE_OUT, byeMsg));
} catch (DebugException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
processContext.setRunning(false);
}
}
debugMode = false;
}
});
} else {
if (process != null) {
// (one at leat) process
// still running
Display dis = Display.getCurrent();
if (dis == null) {
dis = Display.getDefault();
}
dis.asyncExec(new Runnable() {
@Override
public void run() {
setRunnable(false);
if (!killBtn.isDisposed() && killBtn != null) {
killBtn.setEnabled(true);
}
processContext.setRunning(true);
processContext.setDebugProcess(process);
if (!isAddedStreamListener) {
process.getStreamsProxy().getOutputStreamMonitor().addListener(streamListener);
// if (clearBeforeExec.getSelection()) {
// processContext.clearMessages();
// }
// if (watchBtn.getSelection()) {
// processContext.switchTime();
// }
ClearPerformanceAction clearPerfAction = new ClearPerformanceAction();
clearPerfAction.setProcess(processContext.getProcess());
clearPerfAction.run();
ClearTraceAction clearTraceAction = new ClearTraceAction();
clearTraceAction.setProcess(processContext.getProcess());
clearTraceAction.run();
isAddedStreamListener = true;
//$NON-NLS-1$
final String startingPattern = Messages.getString("ProcessComposite.startPattern");
MessageFormat mf = new MessageFormat(startingPattern);
String welcomeMsg = mf.format(new Object[] { processContext.getProcess().getName(), new Date() });
processContext.addDebugResultToConsole(new ProcessMessage(MsgType.CORE_OUT, //$NON-NLS-1$
welcomeMsg + "\r\n"));
}
}
});
} else {
// no process running
Display dis = Display.getCurrent();
if (dis == null) {
dis = Display.getDefault();
}
dis.asyncExec(new Runnable() {
@Override
public void run() {
setRunnable(true);
if (!killBtn.isDisposed() && killBtn != null) {
killBtn.setEnabled(false);
}
}
});
}
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
}
}
};
thread.start();
} catch (Exception e) {
ExceptionHandler.process(e);
processContext.addErrorMessage(e);
kill();
}
}
use of org.talend.core.model.process.IContext in project tdi-studio-se by Talend.
the class ShadowProcess method run.
public CsvArray run() throws ProcessorException {
IProcess talendProcess = buildProcess();
IProcessor processor = ProcessorUtilities.getProcessor(talendProcess, null);
processor.setProxyParameters(getProxyParameters());
// try {
// Delete previous Perl generated file
File previousFile = outPath.toFile();
if (previousFile.exists()) {
previousFile.delete();
}
// Process ps = processor.run(process.getContextManager().getDefaultContext(), Processor.NO_STATISTICS,
// Processor.NO_TRACES,Processor.WATCH_ALLOWED);//Old
IContext context = talendProcess.getContextManager().getDefaultContext();
processor.setContext(context);
process = processor.run(IProcessor.NO_STATISTICS, IProcessor.NO_TRACES, null);
ProcessStreamTrashReader.readAndForget(process);
if (!outPath.toFile().exists()) {
//$NON-NLS-1$
throw new ProcessorException(Messages.getString("ShadowProcess.notGeneratedOutputException"));
}
try {
CsvArray array = new CsvArray();
array = array.createFrom(outPath.toFile(), currentProcessEncoding);
return array;
} catch (IOException ioe) {
throw new ProcessorException(ioe);
}
}
use of org.talend.core.model.process.IContext in project tdi-studio-se by Talend.
the class ProcessComposite method debug.
public void debug() {
setHideconsoleLine(false);
if ((processContext.getProcess()) instanceof org.talend.designer.core.ui.editor.process.Process) {
((org.talend.designer.core.ui.editor.process.Process) processContext.getProcess()).checkDifferenceWithRepository();
}
// final IPreferenceStore preferenceStore = DebugUIPlugin.getDefault().getPreferenceStore();
final IPreferenceStore preferenceStore = DebugUITools.getPreferenceStore();
final boolean oldValueConsoleOnOut = preferenceStore.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT);
final boolean oldValueConsoleOnErr = preferenceStore.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT, false);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR, false);
checkSaveBeforeRunSelection();
if (contextComposite.promptConfirmLauch()) {
setRunnable(false);
final IContext context = contextComposite.getSelectedContext();
IRunnableWithProgress worker = new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) {
IProcessor processor = ProcessorUtilities.getProcessor(processContext.getProcess(), processContext.getProcess().getProperty(), context);
//$NON-NLS-1$
monitor.beginTask("Launching debugger", IProgressMonitor.UNKNOWN);
try {
// use this function to generate childrens also.
ProcessorUtilities.generateCode(processContext.getProcess(), context, false, false, true, monitor);
ILaunchConfiguration config = ((Processor) processor).getDebugConfiguration(processContext.getStatisticsPort(), processContext.getTracesPort(), null);
// code is correct before launching
if (!JobErrorsChecker.hasErrors(ProcessComposite.this.getShell())) {
if (config != null) {
// PlatformUI.getWorkbench().
// getActiveWorkbenchWindow
// ().addPerspectiveListener(new
// DebugInNewWindowListener());
DebugUITools.launch(config, ILaunchManager.DEBUG_MODE);
} else {
//$NON-NLS-1$
MessageDialog.openInformation(//$NON-NLS-1$
getShell(), //$NON-NLS-1$
Messages.getString("ProcessDebugDialog.debugBtn"), //$NON-NLS-1$
Messages.getString("ProcessDebugDialog.errortext"));
}
}
} catch (ProcessorException e) {
IStatus status = new Status(IStatus.ERROR, RunProcessPlugin.PLUGIN_ID, IStatus.OK, "Debug launch failed.", //$NON-NLS-1$
e);
RunProcessPlugin.getDefault().getLog().log(status);
//$NON-NLS-1$ //$NON-NLS-2$
MessageDialog.openError(getShell(), Messages.getString("ProcessDebugDialog.debugBtn"), "");
} finally {
monitor.done();
}
}
};
IProgressService progressService = PlatformUI.getWorkbench().getProgressService();
try {
progressService.runInUI(PlatformUI.getWorkbench().getProgressService(), worker, ResourcesPlugin.getWorkspace().getRoot());
} catch (InvocationTargetException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
} catch (InterruptedException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
}
debugMode = true;
try {
Thread thread = new Thread() {
@Override
public void run() {
while (debugMode) {
final IProcess process = DebugUITools.getCurrentProcess();
if (process != null && process.isTerminated()) {
getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
setRunnable(true);
killBtn.setEnabled(false);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT, oldValueConsoleOnOut);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR, oldValueConsoleOnErr);
if (isAddedStreamListener) {
process.getStreamsProxy().getOutputStreamMonitor().removeListener(streamListener);
isAddedStreamListener = false;
if (processContext.isRunning()) {
//$NON-NLS-1$
final String endingPattern = Messages.getString("ProcessComposite.endPattern");
MessageFormat mf = new MessageFormat(endingPattern);
String byeMsg;
try {
byeMsg = //$NON-NLS-1$
"\n" + mf.format(new Object[] { processContext.getProcess().getName(), new Date(), new Integer(process.getExitValue()) });
processContext.addDebugResultToConsole(new ProcessMessage(MsgType.CORE_OUT, byeMsg));
} catch (DebugException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
processContext.setRunning(false);
}
}
debugMode = false;
}
});
} else {
if (process != null) {
// (one at leat) process
// still running
getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
setRunnable(false);
killBtn.setEnabled(true);
processContext.setRunning(true);
processContext.setDebugProcess(process);
if (!isAddedStreamListener) {
process.getStreamsProxy().getOutputStreamMonitor().addListener(streamListener);
// if (clearBeforeExec.getSelection()) {
// processContext.clearMessages();
// }
// if (watchBtn.getSelection()) {
// processContext.switchTime();
// }
ClearPerformanceAction clearPerfAction = new ClearPerformanceAction();
clearPerfAction.setProcess(processContext.getProcess());
clearPerfAction.run();
ClearTraceAction clearTraceAction = new ClearTraceAction();
clearTraceAction.setProcess(processContext.getProcess());
clearTraceAction.run();
isAddedStreamListener = true;
//$NON-NLS-1$
final String startingPattern = Messages.getString("ProcessComposite.startPattern");
MessageFormat mf = new MessageFormat(startingPattern);
String welcomeMsg = mf.format(new Object[] { processContext.getProcess().getName(), new Date() });
processContext.addDebugResultToConsole(new ProcessMessage(MsgType.CORE_OUT, //$NON-NLS-1$
welcomeMsg + "\r\n"));
}
}
});
} else {
// no process running
getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
setRunnable(true);
killBtn.setEnabled(false);
}
});
}
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
}
}
};
thread.start();
} catch (Exception e) {
ExceptionHandler.process(e);
processContext.addErrorMessage(e);
kill();
}
}
use of org.talend.core.model.process.IContext in project tdi-studio-se by Talend.
the class ProcessContextComposite method runSelectionChange.
/**
* zwxue Comment method "runSelectionChange".
* for memory run can call this method.
*/
public void runSelectionChange(final SelectionChangedEvent event) {
Object input = null;
if (!event.getSelection().isEmpty()) {
IContext selectedContext = (IContext) ((IStructuredSelection) event.getSelection()).getFirstElement();
input = selectedContext.getContextParameterList();
process.setLastRunContext(selectedContext);
rubjobManager.setSelectContext(selectedContext);
// see bug 0003924
processNeedGenCode(process);
}
contextTableViewer.setInput(input);
}
Aggregations