package de.ovgu.cide.mining.logging;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URI;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.jdt.core.ICompilationUnit;
import cide.gast.IASTNode;
import de.ovgu.cide.ASTColorChangedEvent;
import de.ovgu.cide.FileColorChangedEvent;
import de.ovgu.cide.mining.database.AbstractProgramDatabase;
public class EvalLogging {
private EvalLogging() {
}
private static EvalLogging instance = new EvalLogging();
public static EvalLogging getInstance() {
return instance;
}
private BufferedWriter writer = null;
public void init(IProject pProject, AbstractProgramDatabase aDB) {
URI fileUri = pProject.getFile("leadt.log").getRawLocationURI();
File logFile = new File(fileUri);
try {
writer = new BufferedWriter(new FileWriter(logFile, true));
} catch (IOException e) {
e.printStackTrace();
}
write("INIT;" + date() + ";" + pProject.getName());
}
private void write(String string) {
try {
writer.write(string + "\n");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
private String date() {
return new SimpleDateFormat("yy-MM-dd HH:mm:ss").format(new Date());
}
public void fileColorChanged(FileColorChangedEvent event) {
for (IContainer folder : event.getAffectedFolders())
write("FILE;" + date() + ";" + folder.getName());
}
public void astColorChanged(ASTColorChangedEvent event) {
for (IASTNode node : event.getAffectedNodes())
write("NODE;"
+ date()
+ ";"
+ event.getColoredSourceFile().getResource().getName()
+ ";"
+ node.getId()
+ ";"
+ node.getStartPosition()
+ ";"
+ node.getLength()
+ ";"
+ event.getColoredSourceFile().getColorManager().getColors(
node));
}
public void updateRecommendations(List<?> recommendations) {
write("RECUP;" + date() + ";updated recommendations;"
+ recommendations.size());
}
public void selectRecommendation(ICompilationUnit cu, int start, int len,
double supportValue) {
write("SELREC;" + date() + ";" + cu.getResource().getName() + ";"
+ start + ";" + len + ";" + supportValue);
}
}