package jetbrains.mps.internal.make.runtime.script;
/*Generated by MPS */
import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;
public class LoggingProgressStrategy extends AbstractProgressStrategy {
private static Logger LOG = LogManager.getLogger(LoggingProgressStrategy.class.getPackage().getName());
private static String TOTAL = "∞";
private String lastInfo = null;
private LoggingProgressStrategy.Log logger = new LoggingProgressStrategy.Log() {
@Override
public void error(String text) {
LoggingProgressStrategy.LOG.error(text);
}
@Override
public void warning(String text) {
LoggingProgressStrategy.LOG.warn(text);
}
@Override
public void info(String text) {
LoggingProgressStrategy.LOG.info(text);
}
};
public LoggingProgressStrategy() {
super(TOTAL);
}
/**
* For testing only.
*/
public LoggingProgressStrategy(LoggingProgressStrategy.Log log) {
this();
this.logger = log;
}
@Override
protected void begunWork(AbstractProgressStrategy.Work wrk) {
if (lastInfo != null) {
logger.info(lastInfo);
lastInfo = null;
}
logger.info(wrk.fullName() + " -- started");
}
@Override
protected void advancedWork(AbstractProgressStrategy.Work wrk) {
if (lastInfo != null) {
logger.info(lastInfo);
lastInfo = null;
}
double p = wrk.doneRatio();
int prg = (int) Math.ceil(p * 100);
if (prg == 100) {
this.lastInfo = wrk.fullName() + " -- done " + (prg) + "%";
} else {
logger.info(wrk.fullName() + " -- done " + (prg) + "%");
}
}
@Override
protected void finishedWork(AbstractProgressStrategy.Work wrk) {
if (lastInfo != null) {
logger.info(lastInfo);
lastInfo = null;
}
logger.info(wrk.fullName() + " -- finished");
}
public interface Log {
void error(String text);
void warning(String text);
void info(String text);
}
}