/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright 2009 Pentaho Corporation. All rights reserved.
*
* Created Jan 6, 2009
* @author aphillips
*/
package org.pentaho.platform.plugin.services.pluginmgr;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
public class PluginMessageLogger {
private static ThreadLocal<List<String>> messages = new ThreadLocal<List<String>>() {
protected List<String> initialValue() {
return new ArrayList<String>();
}
};
public static void clear() {
messages.get().clear();
}
public static void add(String message) {
messages.get().add(message);
}
public static List<String> getAll() {
return messages.get();
}
public static int count(final String messagePrefix) {
return CollectionUtils.countMatches(messages.get(), new Predicate() {
public boolean evaluate(Object object) {
return ((String) object).startsWith(messagePrefix);
}
});
}
public static String prettyPrint() {
StringBuilder builder = new StringBuilder();
for(String msg : messages.get()) {
builder.append(msg);
builder.append('\n');
}
return builder.toString();
}
}