use of org.eclipse.core.resources.IFolder in project tdi-studio-se by Talend.
the class TalendProcessJavaProjectTest method testGetTestSrcFolder.
/**
* Test method for {@link org.talend.designer.runprocess.java.TalendProcessJavaProject#getTestSrcFolder()}.
*/
@Test
public void testGetTestSrcFolder() {
IFolder testSrcFolder = talendJavaProject.getTestSrcFolder();
Assert.assertNotNull(testSrcFolder);
Assert.assertTrue(testSrcFolder.exists());
IPath projectRelativePath = testSrcFolder.getProjectRelativePath();
Assert.assertEquals(MavenSystemFolders.JAVA_TEST.getPath(), projectRelativePath.toString());
}
use of org.eclipse.core.resources.IFolder in project tdi-studio-se by Talend.
the class TalendProcessJavaProjectTest method testGetSrcFolder.
/**
* Test method for {@link org.talend.designer.runprocess.java.TalendProcessJavaProject#getSrcFolder()}.
*/
@Test
public void testGetSrcFolder() {
IFolder srcFolder = talendJavaProject.getSrcFolder();
Assert.assertNotNull(srcFolder);
Assert.assertTrue(srcFolder.exists());
IPath projectRelativePath = srcFolder.getProjectRelativePath();
Assert.assertEquals(MavenSystemFolders.JAVA.getPath(), projectRelativePath.toString());
}
use of org.eclipse.core.resources.IFolder 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;
}
}
}
use of org.eclipse.core.resources.IFolder in project tdi-studio-se by Talend.
the class JavaProcessor method generateCode.
/*
* Append the generated java code form context into java file wihtin the project. If the file not existed new one
* will be created.
*
* @see org.talend.designer.runprocess.IProcessor#generateCode(org.talend.core .model.process.IContext, boolean,
* boolean, boolean)
*/
@Override
public void generateCode(boolean statistics, boolean trace, boolean javaProperties, int option) throws ProcessorException {
super.generateCode(statistics, trace, javaProperties, option);
try {
// hywang modified for 6484
String currentJavaProject = ProjectManager.getInstance().getProject(property).getTechnicalLabel();
ICodeGenerator codeGen;
ICodeGeneratorService service = RunProcessPlugin.getDefault().getCodeGeneratorService();
if (javaProperties) {
//$NON-NLS-1$
String javaInterpreter = "";
//$NON-NLS-1$
String javaLib = "";
String javaContext = getContextPath().toPortableString();
codeGen = service.createCodeGenerator(process, statistics, trace, javaInterpreter, javaLib, javaContext, currentJavaProject);
} else {
codeGen = service.createCodeGenerator(process, statistics, trace);
}
// set the selected context. if don't find, will keep default
if (!process.getContextManager().getDefaultContext().getName().equals(context.getName())) {
boolean found = false;
for (IContext c : process.getContextManager().getListContext()) {
if (c.getName().equals(context.getName())) {
found = true;
}
}
if (found) {
codeGen.setContextName(context.getName());
}
}
//$NON-NLS-1$
String processCode = "";
try {
// must before codegen for job to set the rule flag.
if (PluginChecker.isRulesPluginLoaded()) {
IRulesProviderService rulesService = (IRulesProviderService) GlobalServiceRegister.getDefault().getService(IRulesProviderService.class);
if (rulesService != null) {
boolean useGenerateRuleFiles = false;
List<? extends INode> allNodes = this.process.getGeneratingNodes();
for (int i = 0; i < allNodes.size(); i++) {
if (allNodes.get(i) instanceof INode) {
INode node = allNodes.get(i);
if (rulesService.isRuleComponent(node) && !node.getElementParameter(EParameterName.PROPERTY_TYPE.getName()).getValue().toString().equals("BUILT_IN")) {
//$NON-NLS-1$
useGenerateRuleFiles = true;
break;
}
}
}
if (useGenerateRuleFiles && rulesService != null && currentJavaProject != null) {
rulesService.generateFinalRuleFiles(currentJavaProject, this.process);
LastGenerationInfo.getInstance().setUseRules(this.process.getId(), this.process.getVersion(), true);
}
}
}
processCode = codeGen.generateProcessCode();
} catch (SystemException e) {
//$NON-NLS-1$
throw new ProcessorException(Messages.getString("Processor.generationFailed"), e);
} catch (IOException e) {
ExceptionHandler.process(e);
}
if (!BitwiseOptionUtils.containOption(option, TalendProcessOptionConstants.GENERATE_WITHOUT_FORMAT)) {
processCode = doFormat(processCode);
}
// see feature 4610:option to see byte length of each code method
processCode = computeMethodSizeIfNeeded(processCode);
InputStream codeStream = new ByteArrayInputStream(processCode.getBytes());
// Generating files
IFile codeFile = this.getCodeProject().getFile(this.getSrcCodePath());
if (!codeFile.exists()) {
// in win.
try {
org.talend.commons.utils.io.FilesUtils.removeExistedResources(null, codeFile, true, true);
} catch (Exception e) {
throw new ProcessorException(e);
}
IFolder parentFolder = (IFolder) codeFile.getParent();
if (!parentFolder.exists()) {
parentFolder.create(true, true, null);
}
codeFile.create(codeStream, true, null);
} else {
codeFile.setContents(codeStream, true, false, null);
}
// codeFile.getProject().refreshLocal(IResource.DEPTH_INFINITE, null);
processCode = null;
// updateContextCode(codeGen);
//$NON-NLS-1$
codeFile.getProject().deleteMarkers("org.eclipse.jdt.debug.javaLineBreakpointMarker", true, IResource.DEPTH_INFINITE);
List<INode> breakpointNodes = CorePlugin.getContext().getBreakpointNodes(process);
if (!breakpointNodes.isEmpty()) {
String[] nodeNames = new String[breakpointNodes.size()];
int pos = 0;
String nodeName;
for (INode node : breakpointNodes) {
nodeName = node.getUniqueName();
if (node.getComponent().getMultipleComponentManagers().size() > 0) {
//$NON-NLS-1$
nodeName += "_" + node.getComponent().getMultipleComponentManagers().get(0).getInput().getName();
}
//$NON-NLS-1$ //$NON-NLS-2$
nodeNames[pos++] = "[" + nodeName + " main ] start";
}
int[] lineNumbers = getLineNumbers(codeFile, nodeNames);
setBreakpoints(codeFile, getMainClass(), lineNumbers);
}
} catch (CoreException e1) {
if (e1.getStatus() != null && e1.getStatus().getException() != null) {
ExceptionHandler.process(e1.getStatus().getException());
}
//$NON-NLS-1$
throw new ProcessorException(Messages.getString("Processor.tempFailed"), e1);
}
}
use of org.eclipse.core.resources.IFolder in project tdi-studio-se by Talend.
the class JavaProcessor method cleanBeforeGenerate.
@Override
public void cleanBeforeGenerate(int options) throws ProcessorException {
setDoClean(false);
if (this.getProcess().isNeedRegenerateCode() || this.getProcess() instanceof IProcess2 && ((IProcess2) this.getProcess()).isProcessModified()) {
// will do clean
setDoClean(true);
} else {
return;
}
// clean the generated java source codes.
if (BitwiseOptionUtils.containOption(options, CLEAN_JAVA_CODES)) {
IFolder javaCodeFolder = getCodeProject().getFolder(this.getSrcCodePath().removeLastSegments(1));
// cleanFolder(javaCodeFolder);
try {
if (javaCodeFolder != null) {
String processSourceFileName = null;
if (process != null) {
//$NON-NLS-1$
processSourceFileName = process.getName() + ".java";
}
for (IResource resource : javaCodeFolder.members()) {
if ("java".equals(resource.getFileExtension())) {
//$NON-NLS-1$
if (processSourceFileName != null && processSourceFileName.equals(resource.getName())) {
((IFile) resource).setContents(new ByteArrayInputStream(new byte[0]), true, false, null);
} else {
resource.delete(true, null);
}
} else {
resource.delete(true, null);
}
}
}
} catch (CoreException e) {
// do nothing
}
IFolder classCodeFolder = getCodeProject().getFolder(this.getCompiledCodePath().removeLastSegments(1));
cleanFolder(classCodeFolder);
}
// clean the context groups. Sometimes, if remove the context group, the context file be kept still.
if (BitwiseOptionUtils.containOption(options, CLEAN_CONTEXTS)) {
IFolder srcContextFolder = getCodeProject().getFolder(this.getSrcContextPath().removeLastSegments(1));
cleanFolder(srcContextFolder);
IFolder classContextFolder = getCodeProject().getFolder(this.getCompiledContextPath().removeLastSegments(1));
cleanFolder(classContextFolder);
}
// if test case, clean the data
if (BitwiseOptionUtils.containOption(options, CLEAN_DATA_SETS) && isTestJob) {
IFolder srcDatasetFolder = getCodeProject().getFolder(this.getSrcDataSetPath());
cleanFolder(srcDatasetFolder);
}
}
Aggregations