Search in sources :

Example 16 with JobInfo

use of org.talend.core.model.process.JobInfo in project tdi-studio-se by Talend.

the class JobErrorsChecker method checkLastGenerationHasCompilationError.

public static void checkLastGenerationHasCompilationError(boolean updateProblemsView) throws ProcessorException {
    if (updateProblemsView && CommonsPlugin.isHeadless()) {
        updateProblemsView = false;
    }
    boolean hasError = false;
    boolean isJob = true;
    Item item = null;
    final IProxyRepositoryFactory proxyRepositoryFactory = CorePlugin.getDefault().getRepositoryService().getProxyRepositoryFactory();
    final ITalendSynchronizer synchronizer = CorePlugin.getDefault().getCodeGeneratorService().createRoutineSynchronizer();
    Integer line = null;
    String errorMessage = null;
    try {
        for (JobInfo jobInfo : LastGenerationInfo.getInstance().getLastGeneratedjobs()) {
            if (jobInfo.isTestContainer()) {
                continue;
            }
            item = null;
            List<IRepositoryViewObject> allVersions = proxyRepositoryFactory.getAllVersion(jobInfo.getJobId());
            for (IRepositoryViewObject repositoryObject2 : allVersions) {
                Property property2 = repositoryObject2.getProperty();
                if (jobInfo.getJobVersion().equals(property2.getVersion())) {
                    item = property2.getItem();
                    break;
                }
            }
            if (item == null) {
                continue;
            }
            IFile file = synchronizer.getFile(item);
            if (file == null) {
                return;
            }
            // check other java files related to the job . example : spark job will generate several java file for
            // one job
            final IResource[] members = file.getParent().members();
            for (IResource member : members) {
                if (member instanceof IFile && "java".equals(member.getFileExtension())) {
                    IMarker[] markers = ((IFile) member).findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_ONE);
                    for (IMarker marker : markers) {
                        Integer lineNr = (Integer) marker.getAttribute(IMarker.LINE_NUMBER);
                        String message = (String) marker.getAttribute(IMarker.MESSAGE);
                        Integer severity = (Integer) marker.getAttribute(IMarker.SEVERITY);
                        Integer start = (Integer) marker.getAttribute(IMarker.CHAR_START);
                        Integer end = (Integer) marker.getAttribute(IMarker.CHAR_END);
                        if (lineNr != null && message != null && severity != null && start != null && end != null) {
                            switch(severity) {
                                case IMarker.SEVERITY_ERROR:
                                    hasError = true;
                                    line = lineNr;
                                    errorMessage = message;
                                    break;
                                default:
                                    break;
                            }
                        }
                    }
                }
            }
            if (updateProblemsView) {
                Problems.addRoutineFile(file, ProblemType.JOB, item.getProperty().getLabel(), item.getProperty().getVersion(), true);
            }
            if (hasError) {
                break;
            }
        }
    } catch (Exception e) {
        ExceptionHandler.process(e);
    }
    if (hasError && item != null) {
        if (isJob) {
            throw new ProcessorException(//$NON-NLS-1$
            Messages.getString("JobErrorsChecker_compile_errors") + " " + '\n' + Messages.getString("JobErrorsChecker_compile_error_message", item.getProperty().getLabel()) + //$NON-NLS-1$
            '\n' + Messages.getString("JobErrorsChecker_compile_error_line") + ':' + ' ' + line + //$NON-NLS-1$
            '\n' + Messages.getString("JobErrorsChecker_compile_error_detailmessage") + ':' + ' ' + errorMessage + //$NON-NLS-1$
            '\n' + //$NON-NLS-1$
            Messages.getString("JobErrorsChecker_compile_error_jvmmessage"));
        } else {
            throw new ProcessorException(//$NON-NLS-1$
            Messages.getString("CamelJobErrorsChecker_compile_errors") + " " + '\n' + Messages.getString("JobErrorsChecker_compile_error_message", item.getProperty().getLabel()) + //$NON-NLS-1$
            '\n' + Messages.getString("JobErrorsChecker_compile_error_line") + ':' + ' ' + line + //$NON-NLS-1$
            '\n' + Messages.getString("JobErrorsChecker_compile_error_detailmessage") + ':' + ' ' + errorMessage + //$NON-NLS-1$
            '\n' + //$NON-NLS-1$
            Messages.getString("JobErrorsChecker_compile_error_jvmmessage"));
        }
    }
    // if no error for job, check codes.
    checkRoutinesCompilationError();
}
Also used : ITalendSynchronizer(org.talend.designer.codegen.ITalendSynchronizer) IFile(org.eclipse.core.resources.IFile) CoreException(org.eclipse.core.runtime.CoreException) SystemException(org.talend.commons.exception.SystemException) PersistenceException(org.talend.commons.exception.PersistenceException) Item(org.talend.core.model.properties.Item) JobInfo(org.talend.core.model.process.JobInfo) IRepositoryViewObject(org.talend.core.model.repository.IRepositoryViewObject) IMarker(org.eclipse.core.resources.IMarker) Property(org.talend.core.model.properties.Property) IProxyRepositoryFactory(org.talend.repository.model.IProxyRepositoryFactory) IResource(org.eclipse.core.resources.IResource)

Aggregations

JobInfo (org.talend.core.model.process.JobInfo)16 ProcessItem (org.talend.core.model.properties.ProcessItem)8 PersistenceException (org.talend.commons.exception.PersistenceException)7 ArrayList (java.util.ArrayList)6 CoreException (org.eclipse.core.runtime.CoreException)6 ProcessorException (org.talend.designer.runprocess.ProcessorException)4 HashSet (java.util.HashSet)3 IFile (org.eclipse.core.resources.IFile)3 Property (org.talend.core.model.properties.Property)3 IRepositoryViewObject (org.talend.core.model.repository.IRepositoryViewObject)3 JobResourceManager (org.talend.core.model.repository.job.JobResourceManager)3 File (java.io.File)2 IOException (java.io.IOException)2 IResource (org.eclipse.core.resources.IResource)2 SystemException (org.talend.commons.exception.SystemException)2 Item (org.talend.core.model.properties.Item)2 JobResource (org.talend.core.model.repository.job.JobResource)2 ITalendProcessJavaProject (org.talend.core.runtime.process.ITalendProcessJavaProject)2 ITalendSynchronizer (org.talend.designer.codegen.ITalendSynchronizer)2 ExportFileResource (org.talend.repository.documentation.ExportFileResource)2