54 lines
1.4 KiB
Java
54 lines
1.4 KiB
Java
package ${package}.server.web.service.plc;
|
|
|
|
import static ${package}.plc.shared.SharedPlcConstants.*;
|
|
import static li.strolch.utils.helper.ExceptionHelper.getCallerMethod;
|
|
|
|
import li.strolch.model.Resource;
|
|
import li.strolch.persistence.api.StrolchTransaction;
|
|
import li.strolch.plc.gw.server.PlcGwServerHandler;
|
|
import li.strolch.plc.gw.server.PlcGwService;
|
|
import li.strolch.plc.model.PlcAddressKey;
|
|
|
|
public class ModePlcSrvService extends PlcGwService {
|
|
|
|
public ModePlcSrvService(String plcId, PlcGwServerHandler plcHandler) {
|
|
super(plcId, plcHandler);
|
|
}
|
|
|
|
@Override
|
|
public void handleNotification(PlcAddressKey addressKey, Object value) {
|
|
run(ctx -> {
|
|
try (StrolchTransaction tx = openTx(ctx, getCallerMethod(), false)) {
|
|
|
|
Resource configuration = tx.getConfiguration();
|
|
|
|
switch (addressKey.action) {
|
|
case A_ON -> configuration.setBoolean(PARAM_AUTOMATIC_MODE, (boolean) value);
|
|
case STARTED -> configuration.setBoolean(PARAM_PLC_STARTED, true);
|
|
case STOPPED -> configuration.setBoolean(PARAM_PLC_STARTED, false);
|
|
}
|
|
|
|
logger.info(addressKey + " = " + value);
|
|
tx.update(configuration);
|
|
tx.commitOnClose();
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public void register() {
|
|
register(R_AUTOMATIC_MODE, A_ON);
|
|
register(PLC, STARTED);
|
|
register(PLC, STOPPED);
|
|
super.register();
|
|
}
|
|
|
|
@Override
|
|
public void unregister() {
|
|
unregister(R_AUTOMATIC_MODE, A_ON);
|
|
unregister(PLC, STARTED);
|
|
unregister(PLC, STOPPED);
|
|
super.unregister();
|
|
}
|
|
}
|