/**
*
*/
package logbook.scripting;
import logbook.constants.AppConstants;
import logbook.internal.MasterData.MissionDto;
import logbook.scripting.ScriptLoader.MethodInvoke;
import logbook.scripting.ScriptLoader.TableScriptCollection;
/**
* @author Nekopanda
*
*/
public class MissionProxy implements MissionListener {
private class BodyMethod implements MethodInvoke {
public MissionDto data;
@Override
public Object invoke(Object arg) {
return ((MissionListener) arg).body(this.data);
}
}
private TableScriptCollection script;
private final BodyMethod bodyMethod = new BodyMethod();
private static MissionProxy instance = new MissionProxy();
public static MissionProxy get() {
instance.script = ScriptLoader.getTableScript(
AppConstants.MISSIONTABLE_PREFIX, MissionListener.class);
return instance;
}
@Override
public String[] header() {
return this.script.header();
}
@Override
public void begin(final int fleetid) {
this.script.invoke(new MethodInvoke() {
@Override
public Object invoke(Object arg) {
((MissionListener) arg).begin(fleetid);
return null;
}
});
}
@Override
public Comparable[] body(MissionDto data) {
this.bodyMethod.data = data;
return this.script.body(this.bodyMethod);
}
@Override
public void end() {
this.script.invoke(new MethodInvoke() {
@Override
public Object invoke(Object arg) {
((MissionListener) arg).end();
return null;
}
});
}
}