use of org.talend.core.runtime.process.ITalendProcessJavaProject in project tdi-studio-se by Talend.
the class DefaultRunProcessService method updateLogFiles.
/*
* (non-Javadoc)
*
* @see org.talend.designer.runprocess.IRunProcessService#updateLogFiles(org.eclipse.core.resources.IProject)
*/
@Override
public void updateLogFiles(IProject project, boolean isLogForJob) {
// if directly init or modify log4j,need handle with the log4j under .setting/,if not,means execute or export
// job,need to copy the latest log4j from .setting/ to /java/src
ITalendProcessJavaProject talendJavaProject = JavaProcessorUtilities.getTalendJavaProject();
if (talendJavaProject == null) {
return;
}
try {
// get the .setting folder where we need to keep the log4j file
// IFolder prefSettingFolder = ResourceUtils.getFolder(
// ResourceModelHelper.getProject(ProjectManager.getInstance().getCurrentProject()), ".settings", false);
IFolder resFolder = talendJavaProject.getResourcesFolder();
IFile log4jFile = resFolder.getFile(Log4jPrefsConstants.LOG4J_FILE_NAME);
// create the .prefs file and save log4j.xml and common-logging.properties's content into it
if (!Log4jPrefsSettingManager.getInstance().isLog4jPrefsExist()) {
Log4jPrefsSettingManager.getInstance().createTalendLog4jPrefs(Log4jPrefsConstants.LOG4J_ENABLE_NODE, Log4jUtil.isEnable() ? Boolean.TRUE.toString() : Boolean.FALSE.toString());
Log4jPrefsSettingManager.getInstance().createTalendLog4jPrefs(Log4jPrefsConstants.LOG4J_CONTENT_NODE, getLogTemplate(RESOURCE_LOG_FILE_PATH));
Log4jPrefsSettingManager.getInstance().createTalendLog4jPrefs(Log4jPrefsConstants.COMMON_LOGGING_NODE, getLogTemplate(RESOURCE_COMMONLOG_FILE_PATH));
}
// TUP-3014, update the log4j in .Java always.
// if (isLogForJob) { // when execute or export job need the log4j files under .src folder
String log4jStr = getTemplateStrFromPreferenceStore(Log4jPrefsConstants.LOG4J_CONTENT_NODE);
if (log4jStr != null) {
File ljFile = new File(log4jFile.getLocation().toOSString());
FileOutputStream ljFileOutputStream = null;
try {
ljFile.getParentFile().mkdirs();
ljFileOutputStream = new FileOutputStream(ljFile);
ljFileOutputStream.write(log4jStr.getBytes());
} finally {
if (ljFileOutputStream != null) {
ljFileOutputStream.close();
}
}
resFolder.refreshLocal(IResource.DEPTH_ONE, null);
}
// }
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
use of org.talend.core.runtime.process.ITalendProcessJavaProject in project tdi-studio-se by Talend.
the class DeleteAllJobWhenStartUp method earlyStartup.
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.IStartup#earlyStartup()
*/
@Override
public void earlyStartup() {
if (!GlobalServiceRegister.getDefault().isServiceRegistered(IRunProcessService.class)) {
return;
}
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject codeProject = root.getProject(TalendMavenConstants.PROJECT_NAME);
if (!codeProject.exists() || !codeProject.isAccessible()) {
return;
}
final IWorkspaceRunnable op = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
IRunProcessService processService = (IRunProcessService) GlobalServiceRegister.getDefault().getService(IRunProcessService.class);
ITalendProcessJavaProject talendJavaProject = processService.getTalendProcessJavaProject();
if (talendJavaProject != null) {
IJavaProject jProject = talendJavaProject.getJavaProject();
if (!jProject.isOpen()) {
jProject.open(monitor);
}
// empty the src/main/java...
IFolder srcFolder = talendJavaProject.getSrcFolder();
talendJavaProject.cleanFolder(monitor, srcFolder);
// contexts
IFolder resourcesFolder = talendJavaProject.getResourcesFolder();
emptyContexts(monitor, resourcesFolder, talendJavaProject);
// empty the outputs, target
IFolder targetFolder = talendJavaProject.getTargetFolder();
talendJavaProject.cleanFolder(monitor, targetFolder);
// empty the src/test/java
IFolder testSrcFolder = talendJavaProject.getTestSrcFolder();
talendJavaProject.cleanFolder(monitor, testSrcFolder);
// empty the src/test/java (main for contexts)
IFolder testResourcesFolder = talendJavaProject.getTestResourcesFolder();
talendJavaProject.cleanFolder(monitor, testResourcesFolder);
// empty temp
IFolder tempFolder = talendJavaProject.getTempFolder();
talendJavaProject.cleanFolder(monitor, tempFolder);
// empty lib/...
IFolder libFolder = talendJavaProject.getLibFolder();
talendJavaProject.cleanFolder(monitor, libFolder);
// rules
IFolder rulesResFolder = talendJavaProject.getResourceSubFolder(monitor, JavaUtils.JAVA_RULES_DIRECTORY);
talendJavaProject.cleanFolder(monitor, rulesResFolder);
// sqltempalte
IFolder sqlTemplateResFolder = talendJavaProject.getResourceSubFolder(monitor, JavaUtils.JAVA_SQLPATTERNS_DIRECTORY);
talendJavaProject.cleanFolder(monitor, sqlTemplateResFolder);
}
}
;
};
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, new NullProgressMonitor());
} catch (CoreException e) {
if (e.getCause() != null) {
ExceptionHandler.process(e.getCause());
} else {
ExceptionHandler.process(e);
}
}
executed = true;
}
use of org.talend.core.runtime.process.ITalendProcessJavaProject in project tdi-studio-se by Talend.
the class StandAloneTalendJavaEditor method dispose.
@SuppressWarnings("restriction")
@Override
public void dispose() {
// remove the Runtines .java file in the .Java Project.
// try {
// rEditorInput.getFile().delete(true, null);
// } catch (CoreException e1) {
// RuntimeExceptionHandler.process(e1);
// }
super.dispose();
if (lockService != null) {
lockService.unregister();
}
// Unlock the process :
IRepositoryService service = DesignerPlugin.getDefault().getRepositoryService();
IProxyRepositoryFactory repFactory = service.getProxyRepositoryFactory();
try {
item.getProperty().eAdapters().remove(dirtyListener);
repFactory.unlock(item);
} catch (PersistenceException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
} catch (LoginException e) {
ExceptionHandler.process(e);
}
// }
if (!isEditable) {
rEditorInput.getFile().setReadOnly(false);
}
// dispose custom color
if (bgColorForReadOnlyItem != null) {
bgColorForReadOnlyItem.dispose();
}
if (bgColorForEditabeItem != null) {
bgColorForEditabeItem.dispose();
}
ITalendProcessJavaProject talendProcessJavaProject = CorePlugin.getDefault().getRunProcessService().getTalendProcessJavaProject();
if (talendProcessJavaProject != null) {
talendProcessJavaProject.updateRoutinesPom(true, true);
}
// only for sql template
if (item instanceof SQLPatternItem) {
IProject jProject = talendProcessJavaProject.getProject();
ResourceChangeEvent event = new ResourceChangeEvent(item, IResourceChangeEvent.PRE_CLOSE, 1, null);
try {
//$NON-NLS-1$
Field resourceField = event.getClass().getDeclaredField("resource");
resourceField.setAccessible(true);
resourceField.set(event, jProject);
} catch (Exception e) {
ExceptionHandler.process(e);
}
Workspace ws = (Workspace) ResourcesPlugin.getWorkspace();
ws.getNotificationManager().broadcastChanges(ws.getElementTree(), event, false);
}
}
use of org.talend.core.runtime.process.ITalendProcessJavaProject in project tdi-studio-se by Talend.
the class JavaCommandController method createControl.
/*
* (non-Javadoc)
*
* @see
* org.talend.designer.core.ui.editor.properties.controllers.AbstractElementPropertySectionController#createControl
* (org.eclipse.swt.widgets.Composite, org.talend.core.model.process.IElementParameter, int, int, int,
* org.eclipse.swt.widgets.Control)
*/
@Override
public Control createControl(Composite subComposite, final IElementParameter param, int numInRow, int nbInRow, int top, Control lastControl) {
Button btnEdit;
//$NON-NLS-1$
btnEdit = getWidgetFactory().createButton(subComposite, "", SWT.PUSH);
btnEdit.setImage(ImageProvider.getImage(CoreUIPlugin.getImageDescriptor(DOTS_BUTTON)));
FormData data;
btnEdit.setData(NAME, JAVA_COMMAND);
btnEdit.setData(PARAMETER_NAME, param.getName());
btnEdit.addSelectionListener(new SelectionListener() {
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
@Override
public void widgetSelected(SelectionEvent e) {
// execute Java Command
ElementParameter fullParam = (ElementParameter) param;
File jar;
URL url;
try {
List<URL> listURL = new ArrayList<URL>();
ILibraryManagerService libManager = (ILibraryManagerService) GlobalServiceRegister.getDefault().getService(ILibraryManagerService.class);
IFolder javaLibFolder = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IRunProcessService.class)) {
IRunProcessService processService = (IRunProcessService) GlobalServiceRegister.getDefault().getService(IRunProcessService.class);
ITalendProcessJavaProject talendProcessJavaProject = processService.getTalendProcessJavaProject();
if (talendProcessJavaProject != null) {
javaLibFolder = talendProcessJavaProject.getLibFolder();
}
}
if (javaLibFolder == null) {
return;
}
for (String jarString : fullParam.getJar().split(";")) {
IPath libPath = javaLibFolder.getLocation();
libManager.retrieve(jarString, libPath.toPortableString(), new NullProgressMonitor());
jar = libPath.append(jarString).toFile();
url = jar.toURL();
listURL.add(url);
}
URLClassLoader urlClassLoader = new URLClassLoader(listURL.toArray(new URL[0]));
Class<?> classLoaded = Class.forName(fullParam.getJavaClass(), true, urlClassLoader);
Object object = classLoaded.newInstance();
List<String> args = new ArrayList<String>();
for (String arg : fullParam.getArgs()) {
args.add(ElementParameterParser.parse(elem, arg));
}
for (Method method : classLoaded.getDeclaredMethods()) {
if (method.getName().equals(fullParam.getJavaFunction())) {
Object[] arglist = new Object[1];
arglist[0] = args.toArray(new String[0]);
method.invoke(object, arglist);
}
}
} catch (Exception e1) {
MessageBoxExceptionHandler.process(e1);
}
}
});
if (elem instanceof Node) {
btnEdit.setToolTipText(VARIABLE_TOOLTIP + param.getVariableName());
}
CLabel labelLabel = getWidgetFactory().createCLabel(subComposite, param.getDisplayName());
data = new FormData();
if (lastControl != null) {
data.left = new FormAttachment(lastControl, 0);
} else {
data.left = new FormAttachment((((numInRow - 1) * MAX_PERCENT) / nbInRow), 0);
}
data.top = new FormAttachment(0, top);
labelLabel.setLayoutData(data);
if (numInRow != 1) {
labelLabel.setAlignment(SWT.RIGHT);
}
// **************************
data = new FormData();
int currentLabelWidth = STANDARD_LABEL_WIDTH;
GC gc = new GC(labelLabel);
Point labelSize = gc.stringExtent(param.getDisplayName());
gc.dispose();
if ((labelSize.x + ITabbedPropertyConstants.HSPACE) > currentLabelWidth) {
currentLabelWidth = labelSize.x + ITabbedPropertyConstants.HSPACE;
}
if (numInRow == 1) {
if (lastControl != null) {
data.left = new FormAttachment(lastControl, currentLabelWidth);
data.right = new FormAttachment(lastControl, currentLabelWidth + STANDARD_BUTTON_WIDTH);
} else {
data.left = new FormAttachment(0, currentLabelWidth);
data.right = new FormAttachment(0, currentLabelWidth + STANDARD_BUTTON_WIDTH);
}
} else {
data.left = new FormAttachment(labelLabel, 0, SWT.RIGHT);
data.right = new FormAttachment(labelLabel, STANDARD_BUTTON_WIDTH, SWT.RIGHT);
}
data.top = new FormAttachment(0, top);
btnEdit.setLayoutData(data);
// **************************
hashCurControls.put(param.getName(), btnEdit);
Point initialSize = btnEdit.computeSize(SWT.DEFAULT, SWT.DEFAULT);
dynamicProperty.setCurRowSize(initialSize.y + ITabbedPropertyConstants.VSPACE);
return btnEdit;
}
use of org.talend.core.runtime.process.ITalendProcessJavaProject in project tdi-studio-se by Talend.
the class JavaTestShadow method process.
public void process(Text testResultText, TableViewer tableViewer) {
Map<String, String> map = RoutineFunctionParser.getTypePackgeMethods();
Function function = CategoryComposite.getSelectedFunction();
String expression = ExpressionBuilderDialog.getExpressionComposite().getExpression();
if (function != null && expression != null && !"".equals(expression)) {
if (serverThread == null || !serverThread.isAlive()) {
server = ExpressionTestServer.getInstance(Display.getCurrent(), testResultText);
serverThread = new Thread(server);
serverThread.start();
}
//$NON-NLS-1$
String methodFullName = map.get(function.getTalendType().getName() + "." + function.getName());
//$NON-NLS-1$
String[] fullClassAndMethod = methodFullName.split("\\.");
String methodName = fullClassAndMethod[fullClassAndMethod.length - 1];
expression = expression.replaceAll(methodName, methodFullName);
ExpressionArguments arguments = new ExpressionArguments();
arguments.setExpression(expression);
arguments.setVariables((List<Variable>) tableViewer.getInput());
ExpressionGenerator codeGenerator = new ExpressionGenerator();
String fileContent = codeGenerator.generate(arguments);
ITalendProcessJavaProject talendProcessJavaProject = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IRunProcessService.class)) {
IRunProcessService processService = (IRunProcessService) GlobalServiceRegister.getDefault().getService(IRunProcessService.class);
talendProcessJavaProject = processService.getTalendProcessJavaProject();
}
if (talendProcessJavaProject == null) {
return;
}
IFolder srcFolder = talendProcessJavaProject.getSrcFolder();
IFolder outputFolder = talendProcessJavaProject.getOutputFolder();
//$NON-NLS-1$
IFile file = srcFolder.getFile(new Path(JavaUtils.JAVA_ROUTINES_DIRECTORY + "/ExpressionVariableTest.java"));
//$NON-NLS-1$
IFile classFile = outputFolder.getFile(new Path(JavaUtils.JAVA_ROUTINES_DIRECTORY + "/ExpressionVariableTest.class"));
InputStream in = new ByteArrayInputStream(fileContent.getBytes());
try {
if (!file.exists()) {
file.create(in, true, null);
} else {
file.delete(true, null);
classFile.delete(true, null);
file.create(in, true, null);
}
while (!classFile.exists()) {
try {
Thread.sleep(500);
} catch (InterruptedException e1) {
RuntimeExceptionHandler.process(e1);
}
}
} catch (CoreException e1) {
RuntimeExceptionHandler.process(e1);
}
try {
in.close();
in = null;
} catch (IOException e2) {
RuntimeExceptionHandler.process(e2);
}
String javaInterpreter = CorePlugin.getDefault().getPreferenceStore().getString(ITalendCorePrefConstants.JAVA_INTERPRETER);
IPath path = outputFolder.getLocation();
//$NON-NLS-1$ //$NON-NLS-2$
String[] str = new String[] { javaInterpreter, "-cp", path.toOSString(), "routines.ExpressionVariableTest" };
InputStreamReader reader = null;
try {
Process exec = Runtime.getRuntime().exec(str);
reader = new InputStreamReader(exec.getErrorStream());
char[] buffer = new char[1024];
int i = 0;
StringBuffer bufferString = new StringBuffer();
while ((i = reader.read(buffer)) != -1) {
bufferString.append(buffer, 0, i);
}
reader.close();
if (bufferString.length() > 0) {
testResultText.setText(bufferString.toString());
}
} catch (IOException e1) {
RuntimeExceptionHandler.process(e1);
} finally {
reader = null;
}
}
}
Aggregations