package org.erlide.cover.views.model;
import java.io.Serializable;
import java.util.Calendar;
/**
*
* Data model for statatistics view
*
* @author Aleksandra Lipiec <aleksandra.lipiec@erlang-solutions.com>
*
*/
public class StatsTreeModel implements Serializable {
private static final long serialVersionUID = 1L;
private static StatsTreeModel model;
private ICoverageObject root;
private String timestamp;
private boolean changed;
private StatsTreeModel() {
initialize();
timestamp = "";
setChanged(false);
}
public static synchronized StatsTreeModel getInstance() {
if (model == null) {
model = new StatsTreeModel();
}
return model;
}
/**
* Change model if results are restored
*
* @param mod
*/
public static void changeInstance(final StatsTreeModel mod) {
model = mod;
}
public ICoverageObject getRoot() {
return root;
}
/**
* Clear the model tree
*/
public void clear() {
root.removeAllChildren();
root.setLiniesCount(0);
root.setCoverCount(0);
final StringBuilder timeTmp = new StringBuilder();
timeTmp.append(Calendar.getInstance().get(Calendar.YEAR))
.append(String.format("%02d",
Calendar.getInstance().get(Calendar.MONTH) + 1))
.append(String.format("%02d",
Calendar.getInstance().get(Calendar.DAY_OF_MONTH)))
.append(String.format("%02d",
Calendar.getInstance().get(Calendar.HOUR_OF_DAY)))
.append(String.format("%02d",
Calendar.getInstance().get(Calendar.MINUTE)))
.append(String.format("%02d",
Calendar.getInstance().get(Calendar.SECOND)));
timestamp = timeTmp.toString();
ModuleSet.clear();
root.setHtmlPath(null);
setChanged(false);
}
/**
* add lines for project
*
* @param allLines
* @param coveredLines
*/
public void addTotal(final int allLines, final int coveredLines) {
final int all = root.getLinesCount() + allLines;
final int cov = root.getCoverCount() + coveredLines;
root.setLiniesCount(all);
root.setCoverCount(cov);
}
public void setIndex(final String path) {
root.setHtmlPath(path);
}
public void setRootLabel(final String name) {
root.setLabel(name);
}
public String getTimestamp() {
return timestamp;
}
/**
* Searching for specified element in a model
*
* @param name
* @return
*/
public ICoverageObject treeSearch(final String name) {
return root.treeSearch(name);
}
private void initialize() {
root = new StatsTreeObject("total", 0, 0, ObjectType.PROJECT);
}
public void setChanged(final boolean changed) {
this.changed = changed;
}
public boolean isChanged() {
return changed;
}
}