/**
*
*/
package vroom.optimization.online.jmsa.benchmarking;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import vroom.optimization.online.jmsa.events.MSACallbackBase;
import vroom.optimization.online.jmsa.events.MSACallbackEvent;
import vroom.optimization.online.jmsa.utils.MSALogging;
public class DistinguishedSolutionCallback extends MSACallbackBase {
private final BufferedWriter writer;
public DistinguishedSolutionCallback(String file) throws IOException {
writer = new BufferedWriter(new FileWriter(file));
}
@Override
public void execute(MSACallbackEvent event) {
String m = "";
if (event.getParams() != null && event.getParams()[1] != null) {
m = String.format("[%s] New Distinguished Solution : %s", event.getTimeStampString(),
event.getParams()[1]);
} else {
m = String.format("[%s] New Distinguished Solution Event - Params: %s",
event.getTimeStampString(), Arrays.toString(event.getParams()));
}
try {
writer.append(m);
writer.append('\n');
writer.flush();
} catch (IOException e) {
MSALogging.getBaseLogger().warn(
"Execption caught in method DistinguishedSolutionCallback.execute", e);
}
}
@Override
public int getPriority() {
return 0;
}
@Override
public boolean isExecutedSynchronously() {
return false;
}
@Override
protected void finalize() throws Throwable {
writer.flush();
writer.close();
super.finalize();
}
}