diff -r 000000000000 -r 83f4b4db085c toolsandutils/buildsystem/tools/buildloggers/src/com/symbian/ant/ScanLogger.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolsandutils/buildsystem/tools/buildloggers/src/com/symbian/ant/ScanLogger.java Tue Feb 02 01:39:43 2010 +0200 @@ -0,0 +1,86 @@ +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +package com.symbian.ant; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.StringReader; + +import org.apache.tools.ant.BuildEvent; +import org.apache.tools.ant.DefaultLogger; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.util.StringUtils; + +public class ScanLogger extends DefaultLogger { + + /** + * Logs a message, if the priority is suitable. + * In non-emacs mode, task level messages are prefixed by the + * task name which is right-justified. + * + * @param event A BuildEvent containing message information. + * Must not be null. + */ + public void messageLogged(BuildEvent event) { + int priority = event.getPriority(); + // Filter out messages based on priority + if (priority <= msgOutputLevel) { + + StringBuffer message = new StringBuffer(); + if (event.getTask() != null && !emacsMode) { + // Print out the name of the task if we're in one + String name = event.getTask().getTaskName(); + String label = "[" + name + "] "; + int size = LEFT_COLUMN_SIZE - label.length(); + StringBuffer tmp = new StringBuffer(); + for (int i = 0; i < size; i++) { + tmp.append(" "); + } + tmp.append(label); + label = tmp.toString(); + + try { + BufferedReader r = + new BufferedReader( + new StringReader(event.getMessage())); + String line = r.readLine(); + boolean first = true; + while (line != null) { + if (!first) { + message.append(StringUtils.LINE_SEP); + } + first = false; + message.append(label).append(line); + line = r.readLine(); + } + } catch (IOException e) { + // shouldn't be possible + message.append("ERROR:").append(label).append(event.getMessage()); + } + } else { + message.append(event.getMessage()); + } + + String msg = message.toString(); + if (priority != Project.MSG_ERR) { + printMessage(msg, out, priority); + } else { + printMessage("ERROR:" + msg, err, priority); + } + log(msg); + } + } +}