package org.bndtools.builder;
import java.util.Formatter;
public class BuildLogger {
public static final int LOG_FULL = 2;
public static final int LOG_BASIC = 1;
public static final int LOG_NONE = 0;
private final int level;
private final long start = System.currentTimeMillis();
private final StringBuilder sb = new StringBuilder();
private final Formatter formatter = new Formatter(sb);
private boolean used = false;
private int files = -1;
public BuildLogger(int level) {
this.level = level;
}
public void basic(String string) {
basic(string, (Object[]) null);
}
public void basic(String string, Object... args) {
if (level < LOG_BASIC)
return;
message(string, args);
}
public void full(String string) {
full(string, (Object[]) null);
}
public void full(String string, Object... args) {
if (level < LOG_FULL)
return;
message(string, args);
}
public boolean isEmpty() {
return !used;
}
@Override
public String toString() {
return sb.toString();
}
private void message(String string, Object[] args) {
used = true;
if (args == null) {
sb.append(string);
} else {
formatter.format(string, args);
}
sb.append('\n');
}
public String toString(String name) {
long end = System.currentTimeMillis();
full("Duration %.2f sec", (end - start) / 1000f);
StringBuilder top = new StringBuilder();
try (Formatter topper = new Formatter(top)) {
if (files > 0)
topper.format("BUILD %s %d file%s built", name, files, files > 1 ? "s were" : " was");
else
topper.format("BUILD %s no build", name);
}
return top.append('\n').append(sb).toString();
}
public boolean isActive() {
return level != LOG_NONE;
}
public void setFiles(int f) {
files = f;
}
}