Generation of events file

This commit is contained in:
gac-S_Changer
2019-07-02 10:44:48 +02:00
parent b06ac7e390
commit a72beda043

View File

@@ -4,6 +4,7 @@
package ch.psi.mxsc;
import ch.psi.mxsc.Puck.PuckType;
import ch.psi.pshell.core.CommandInfo;
import ch.psi.pshell.core.Context;
import ch.psi.pshell.core.DevicePool;
import ch.psi.pshell.core.DevicePoolListener;
@@ -15,13 +16,19 @@ import ch.psi.pshell.device.GenericDevice;
import ch.psi.pshell.device.ReadbackDevice;
import ch.psi.pshell.ui.App;
import ch.psi.pshell.ui.Panel;
import ch.psi.utils.Arr;
import ch.psi.utils.Audio;
import ch.psi.utils.Chrono;
import ch.psi.utils.State;
import ch.psi.utils.swing.SwingUtils;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -228,19 +235,28 @@ public class Controller {
}
public Sample getMountedSample() throws Exception{
currentMountedSample = (String) Context.getInstance().evalLineBackground("get_setting('mounted_sample_position')");
String mountedSample = (String) Context.getInstance().evalLineBackground("get_setting('mounted_sample_position')");
checkMountedSampleChange(currentMountedSample, mountedSample);
currentMountedSample = mountedSample;
Sample sample = basePlate.getSampleByName(currentMountedSample);
return sample;
}
public void resetMountedSample() throws Exception{
String mountedSample = (String) Context.getInstance().evalLineBackground("get_setting('mounted_sample_position')");
checkMountedSampleChange(currentMountedSample, null);
Context.getInstance().evalLineBackground("set_setting('mounted_sample_position', None)");
}
void checkMountedSampleChange(String former, String current){
if (((current == null) && (former!=null)) || ((current != null) && (!current.equals(former)))){
logSampleMounted(former, current);
}
}
public void onStateChange(State state, State former) {
if (state == State.Initializing) {
getMainFrame().removeDevice(basePlate);
getMainFrame().removeDevice(basePlate);
} else if (state == State.Ready) {
refreshSamplesTable();
try {
@@ -258,8 +274,8 @@ public class Controller {
basePlate.resetLoadedSample();
}
getMainFrame().refresh();
}
logStateChange(state);
}
void onTimer() {
@@ -765,13 +781,15 @@ public class Controller {
public void onPuckInserted(Puck puck) {
playSound("mounted");
String datamatrix = getMainFrame().getPuckDatamatrix();
logPuckDetectionChange(puck, true);
onPuckScanned(null);
onPuckMounted(puck, datamatrix);
onPuckMounted(puck, datamatrix);
}
public void onPuckRemoved(Puck puck) {
playSound("unmounted");
onPuckUnmounted(puck);
logPuckDetectionChange(puck, false);
onPuckUnmounted(puck);
}
void linkPuckDatamatrix(Puck puck, String datamatrix, boolean showMessage) {
@@ -953,4 +971,40 @@ public class Controller {
}
}
}
void logSampleMounted(String former, String current){
logEvent((current!=null) ? "Sample Mounted" : "Sample Unmounted", former, current);
}
void logPuckDetectionChange(Puck puck, boolean mounted){
logEvent(mounted ? "Puck Mounted" : "Puck Unmounted", puck.getName(), isPuckLoading() ? "Puck Loading" : "");
}
void logStateChange(State state){
String command = "";
if (state==State.Busy){
CommandInfo info = Context.getInstance().getCommandManager().getCurrentCommand(true);
if (info != null){
command = (info.script != null) ? info.script : info.command;
}
}
logEvent("State Change", state.toString(), command);
}
public void logEvent(String... event){
try{
long now = System.currentTimeMillis();
Path path = Paths.get(Context.getInstance().getSetup().getOutputPath(), "events", Chrono.getTimeStr(now,"YYYYMMdd") + ".txt");
path.toFile().getParentFile().mkdirs();
String[] data = new String[]{
Chrono.getTimeStr(now, "dd/MM/YY HH:mm:ss.SSS"),
};
data = Arr.append(data, event);
Files.write(path, String.join("\t", data).getBytes(), path.toFile().exists() ? StandardOpenOption.APPEND : StandardOpenOption.CREATE);
Files.write(path, System.lineSeparator().getBytes(), StandardOpenOption.APPEND);
} catch(Exception ex){
Logger.getLogger(Controller.class.getName()).log(Level.WARNING, null, ex);
}
}
}