strolch-maven-archetypes/strolch.mvn.archetype.plc/src/main/resources/archetype-resources/__rootArtifactId__-web/src/main/java/server/web/service/plc/ModePlcSrvService.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();
}
}