Dateiverwaltung für die WebBox
ulrich
2017-03-20 a450f233393a9e3297fea633373635d060a3c709
src/java/de/uhilger/filecms/api/CompileService.java
@@ -34,6 +34,7 @@
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
import org.apache.commons.io.FileUtils;
/**
 *
@@ -53,16 +54,27 @@
      DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector();
      StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
      Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(files);
      compiler.getTask(null, null, diagnostics, null, null, compilationUnits).call();
      File buildDir = new File(targetDir.getParentFile(), "build");
      final Iterable<String> options = Arrays.asList(new String[]{"-Xlint",
                    /*"-cp", project.getClassPath(),*/
                    /*
                      ausgehend von src eins hoeher, dann nach build
                    */
                    "-d", buildDir.getAbsolutePath()
                    });
      FileUtils.deleteDirectory(buildDir);
      buildDir.mkdir();
      compiler.getTask(null, null, diagnostics, options, null, compilationUnits).call();
      fileManager.close();
      collectResults(diagnostics, compilerIssues);
      collectResults(diagnostics, compilerIssues, relPath);
    } catch(Exception ex) {
      logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
    }
    return compilerIssues;
  }
  
  private void collectResults(DiagnosticCollector<JavaFileObject> diagnostics, List<CompilerIssue> compilerIssues) {
  private void collectResults(DiagnosticCollector<JavaFileObject> diagnostics, List<CompilerIssue> compilerIssues, String relPath) {
    List compileResults = diagnostics.getDiagnostics();
    Iterator i = compileResults.iterator();
    while (i.hasNext()) {
@@ -74,7 +86,13 @@
        issue.setKind(err.getKind().name());
        issue.setLineNumber(err.getLineNumber());
        issue.setMessage(err.getMessage(Locale.GERMANY));
        issue.setSoureName(err.getSource().getName());
        String srcName = err.getSource().getName().replace("\\", "/");
        String cleanRelPath = relPath.replace(HOME_DIR_NAME + "/", "").replace(PUB_DIR_NAME + "/", "");
        int pos = srcName.indexOf(cleanRelPath);
        String className = srcName.substring(pos + cleanRelPath.length());
        issue.setSourceName(className.replace("/", ".").substring(1));
        //issue.setSourceName(srcName + "\r\n" + relPath);
        compilerIssues.add(issue);
      }
    }
@@ -142,7 +160,7 @@
    }     
    fileManager.close();
    List<CompilerIssue> compilerIssues = new ArrayList();
    collectResults(diagnostics, compilerIssues);
    collectResults(diagnostics, compilerIssues, relPath);
    return compilerIssues;
  }