package husacct.control.task;
import husacct.control.presentation.MainGui;
import husacct.control.task.configuration.ConfigurationManager;
import husacct.control.task.configuration.IConfigListener;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
public class ActionLogController implements IConfigListener {
private ArrayList<HashMap<String, String>> loggedActions = new ArrayList<HashMap<String, String>>();
private int maxActions = 10;
private MainController mainController;
public ActionLogController(MainController mainController){
this.mainController = mainController;
ConfigurationManager.addListener(this);
}
public void addAction(String message){
if(message.equals("")){
return;
}
if(maxNumberOfActionsAreLogged()){
removeFirstLoggedUserAction();
}
Throwable t = new Throwable();
StackTraceElement[] elements = t.getStackTrace();
String classPath = elements[1].getClassName();
String calledMethodName = elements[0].getMethodName();
message = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()) + " " + message;
HashMap<String, String> loggedMethodInfo = new HashMap<String, String>();
loggedMethodInfo.put("classPath", classPath);
loggedMethodInfo.put("calledMethodName", calledMethodName);
loggedMethodInfo.put("message", message);
loggedActions.add(loggedMethodInfo);
MainGui gui = mainController.getMainGui();
if (gui != null){
gui.getActionLogPanel().refreshActionLogPanel();
}
}
private boolean maxNumberOfActionsAreLogged(){
return loggedActions.size()==maxActions;
}
private void removeFirstLoggedUserAction(){
loggedActions.remove(0);
}
public ArrayList<HashMap<String, String>> getLoggedActionsArrayList(){
return loggedActions;
}
public void setActionLogVisibility(boolean isVisible){
mainController.getMainGui().getActionLogPanel().setVisible(isVisible);
}
@Override
public void onConfigUpdate() {
boolean visible = Boolean.parseBoolean(ConfigurationManager.getProperty("ActionLogger"));
setActionLogVisibility(visible);
}
}