package net.jangaroo.ide.idea.jps.util; import net.jangaroo.jooc.api.CompileLog; import net.jangaroo.jooc.api.FilePosition; import org.jetbrains.jps.incremental.MessageHandler; import org.jetbrains.jps.incremental.messages.BuildMessage; import org.jetbrains.jps.incremental.messages.CompilerMessage; /** * A Jangaroo CompileLog that logs via JPS message handler. */ public class JpsCompileLog implements CompileLog { private MessageHandler messageHandler; private boolean hasErrors = false; private String builderName; public JpsCompileLog(String builderName, MessageHandler messageHandler) { this.messageHandler = messageHandler; this.builderName = builderName; } private void addMessage(BuildMessage.Kind compilerMessageCategory, String msg, FilePosition position) { messageHandler.processMessage(new CompilerMessage(builderName, compilerMessageCategory, msg, position.getFileName(), 0L, 0L, 0L, (long)position.getLine(), (long)position.getColumn())); if (compilerMessageCategory == BuildMessage.Kind.ERROR) { hasErrors = true; } } public void error(FilePosition position, String msg) { addMessage(BuildMessage.Kind.ERROR, msg, position); } public void error(String msg) { messageHandler.processMessage(new CompilerMessage(builderName, BuildMessage.Kind.ERROR, msg)); hasErrors = true; } public void warning(FilePosition position, String msg) { addMessage(BuildMessage.Kind.WARNING, msg, position); } public void warning(String msg) { messageHandler.processMessage(new CompilerMessage(builderName, BuildMessage.Kind.WARNING, msg)); } public boolean hasErrors() { return hasErrors; } }