Some more backend ui code for triggers. issue 6
This commit is contained in:
parent
115bf6efac
commit
8d9354d845
4 changed files with 96 additions and 39 deletions
|
|
@ -1,10 +1,12 @@
|
||||||
package se.hal.intf;
|
package se.hal.intf;
|
||||||
|
|
||||||
|
import se.hal.struct.TriggerFlow;
|
||||||
import se.hal.struct.dso.ActionDSO;
|
import se.hal.struct.dso.ActionDSO;
|
||||||
import zutil.db.DBConnection;
|
import zutil.db.DBConnection;
|
||||||
import zutil.db.bean.DBBean;
|
import zutil.db.bean.DBBean;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines a action that will be executed
|
* Defines a action that will be executed
|
||||||
|
|
@ -18,6 +20,10 @@ public abstract class HalAction{
|
||||||
dso.getObject().dso = dso;
|
dso.getObject().dso = dso;
|
||||||
return dso.getObject();
|
return dso.getObject();
|
||||||
}
|
}
|
||||||
|
public static List<HalAction> getActions(DBConnection db, TriggerFlow flow) {
|
||||||
|
// TODO:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public Long getId(){
|
public Long getId(){
|
||||||
|
|
@ -31,6 +37,9 @@ public abstract class HalAction{
|
||||||
dso.save(db);
|
dso.save(db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void delete(DBConnection db) throws SQLException {
|
||||||
|
dso.delete(db);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
package se.hal.intf;
|
package se.hal.intf;
|
||||||
|
|
||||||
|
import se.hal.struct.TriggerFlow;
|
||||||
import se.hal.struct.dso.TriggerDSO;
|
import se.hal.struct.dso.TriggerDSO;
|
||||||
import zutil.db.DBConnection;
|
import zutil.db.DBConnection;
|
||||||
import zutil.db.bean.DBBean;
|
import zutil.db.bean.DBBean;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class that declares a trigger/condition that
|
* A class that declares a trigger/condition that
|
||||||
|
|
@ -19,6 +21,9 @@ public abstract class HalTrigger{
|
||||||
dso.getObject().dso = dso;
|
dso.getObject().dso = dso;
|
||||||
return dso.getObject();
|
return dso.getObject();
|
||||||
}
|
}
|
||||||
|
public static List<HalTrigger> getTriggers(DBConnection db, TriggerFlow flow) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public Long getId(){
|
public Long getId(){
|
||||||
|
|
@ -32,6 +37,11 @@ public abstract class HalTrigger{
|
||||||
dso.save(db);
|
dso.save(db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void delete(DBConnection db) throws SQLException {
|
||||||
|
dso.delete(db);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Evaluates if this trigger has passed. If the trigger is
|
* Evaluates if this trigger has passed. If the trigger is
|
||||||
|
|
@ -44,4 +54,5 @@ public abstract class HalTrigger{
|
||||||
* Reset the evaluation to false.
|
* Reset the evaluation to false.
|
||||||
*/
|
*/
|
||||||
public abstract void reset();
|
public abstract void reset();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,39 @@
|
||||||
package se.hal.page;
|
package se.hal.page;
|
||||||
|
|
||||||
import se.hal.ControllerManager;
|
|
||||||
import se.hal.HalContext;
|
import se.hal.HalContext;
|
||||||
import se.hal.TriggerManager;
|
import se.hal.TriggerManager;
|
||||||
|
import se.hal.intf.HalAction;
|
||||||
import se.hal.intf.HalHttpPage;
|
import se.hal.intf.HalHttpPage;
|
||||||
import se.hal.struct.Event;
|
import se.hal.intf.HalTrigger;
|
||||||
|
import se.hal.struct.ClassConfigurationData;
|
||||||
import se.hal.struct.TriggerFlow;
|
import se.hal.struct.TriggerFlow;
|
||||||
import se.hal.struct.devicedata.SwitchEventData;
|
|
||||||
import se.hal.util.HistoryDataListSqlResult;
|
|
||||||
import se.hal.util.HistoryDataListSqlResult.HistoryData;
|
|
||||||
import zutil.db.DBConnection;
|
import zutil.db.DBConnection;
|
||||||
import zutil.io.file.FileUtil;
|
import zutil.io.file.FileUtil;
|
||||||
import zutil.parser.Templator;
|
import zutil.parser.Templator;
|
||||||
|
|
||||||
import java.sql.PreparedStatement;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class TriggerHttpPage extends HalHttpPage {
|
public class TriggerHttpPage extends HalHttpPage {
|
||||||
private static final String TEMPLATE = "resource/web/trigger.tmpl";
|
private static final String TEMPLATE = "resource/web/trigger.tmpl";
|
||||||
|
|
||||||
|
private ArrayList<ClassConfigurationData> triggerConfigurators;
|
||||||
|
private ArrayList<ClassConfigurationData> actionConfigurators;
|
||||||
|
|
||||||
|
|
||||||
public TriggerHttpPage(){
|
public TriggerHttpPage(){
|
||||||
super("trigger");
|
super("trigger");
|
||||||
super.getRootNav().createSubNav("Events").createSubNav(this.getId(), "Triggers");
|
super.getRootNav().createSubNav("Events").createSubNav(this.getId(), "Triggers");
|
||||||
|
|
||||||
|
triggerConfigurators = new ArrayList<>();
|
||||||
|
for(Class c : TriggerManager.getInstance().getAvailableTriggers())
|
||||||
|
triggerConfigurators.add(new ClassConfigurationData(c));
|
||||||
|
actionConfigurators = new ArrayList<>();
|
||||||
|
for(Class c : TriggerManager.getInstance().getAvailableActions())
|
||||||
|
actionConfigurators.add(new ClassConfigurationData(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Templator httpRespond(
|
public Templator httpRespond(
|
||||||
Map<String, Object> session,
|
Map<String, Object> session,
|
||||||
|
|
@ -35,17 +43,59 @@ public class TriggerHttpPage extends HalHttpPage {
|
||||||
DBConnection db = HalContext.getDB();
|
DBConnection db = HalContext.getDB();
|
||||||
|
|
||||||
if(request.containsKey("action")){
|
if(request.containsKey("action")){
|
||||||
|
TriggerFlow flow = null;
|
||||||
|
if (request.containsKey("flow_id"))
|
||||||
|
flow = TriggerFlow.getTriggerFlow(db, Integer.parseInt(request.get("flow_id")));
|
||||||
|
HalTrigger trigger = null;
|
||||||
|
if (request.containsKey("trigger_id"))
|
||||||
|
trigger = HalTrigger.getTrigger(db, Integer.parseInt(request.get("trigger_id")));
|
||||||
|
HalAction action = null;
|
||||||
|
if (request.containsKey("action_id"))
|
||||||
|
action = HalAction.getAction(db, Integer.parseInt(request.get("action_id")));
|
||||||
|
|
||||||
|
|
||||||
switch(request.get("action")) {
|
switch(request.get("action")) {
|
||||||
// Local Sensors
|
// Flows
|
||||||
case "create_flow":
|
case "create_flow":
|
||||||
TriggerFlow flow = new TriggerFlow();
|
flow = new TriggerFlow();
|
||||||
flow.save(db);
|
flow.save(db);
|
||||||
break;
|
break;
|
||||||
|
case "remove_flow":
|
||||||
|
flow.delete(db);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Triggers
|
||||||
|
case "create_trigger":
|
||||||
|
//TODO: trigger = new HalTrigger();
|
||||||
|
flow.addTrigger(trigger);
|
||||||
|
case "modify_trigger":
|
||||||
|
// TODO: save attrib
|
||||||
|
trigger.save(db);
|
||||||
|
break;
|
||||||
|
case "remove_trigger":
|
||||||
|
flow.removeTrigger(trigger);
|
||||||
|
trigger.delete(db);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Triggers
|
||||||
|
case "create_action":
|
||||||
|
//TODO: action = new HalAction();
|
||||||
|
flow.addAction(action);
|
||||||
|
case "modify_action":
|
||||||
|
// TODO: save attrib
|
||||||
|
action.save(db);
|
||||||
|
break;
|
||||||
|
case "remove_action":
|
||||||
|
flow.removeAction(action);
|
||||||
|
action.delete(db);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
|
Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
|
||||||
|
tmpl.set("triggerConfigurations", triggerConfigurators);
|
||||||
|
tmpl.set("actionConfigurations", actionConfigurators);
|
||||||
tmpl.set("availableTriggers", TriggerManager.getInstance().getAvailableTriggers());
|
tmpl.set("availableTriggers", TriggerManager.getInstance().getAvailableTriggers());
|
||||||
tmpl.set("availableActions", TriggerManager.getInstance().getAvailableActions());
|
tmpl.set("availableActions", TriggerManager.getInstance().getAvailableActions());
|
||||||
tmpl.set("flows", TriggerFlow.getTriggerFlows(db));
|
tmpl.set("flows", TriggerFlow.getTriggerFlows(db));
|
||||||
|
|
|
||||||
|
|
@ -26,10 +26,8 @@ import java.util.logging.Logger;
|
||||||
public class TriggerFlow extends DBBean {
|
public class TriggerFlow extends DBBean {
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
|
|
||||||
private String triggers; // only used for flat DB storage
|
private transient List<HalTrigger> triggerList = new ArrayList<>();
|
||||||
private transient ArrayList<HalTrigger> triggerList = new ArrayList<>();
|
private transient List<HalAction> actionList = new ArrayList<>();
|
||||||
private String actions; // only used for flat DB storage
|
|
||||||
private transient ArrayList<HalAction> actionList = new ArrayList<>();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -37,50 +35,37 @@ public class TriggerFlow extends DBBean {
|
||||||
PreparedStatement stmt = db.getPreparedStatement("SELECT * FROM trigger_flow");
|
PreparedStatement stmt = db.getPreparedStatement("SELECT * FROM trigger_flow");
|
||||||
return DBConnection.exec(stmt, DBBeanSQLResultHandler.createList(TriggerFlow.class, db));
|
return DBConnection.exec(stmt, DBBeanSQLResultHandler.createList(TriggerFlow.class, db));
|
||||||
}
|
}
|
||||||
|
public static TriggerFlow getTriggerFlow(DBConnection db, int id) throws SQLException {
|
||||||
|
return DBBean.load(db, TriggerFlow.class, id);
|
||||||
@Override
|
|
||||||
public void save(DBConnection db) throws SQLException {
|
|
||||||
DataNode root = new DataNode(DataNode.DataType.List);
|
|
||||||
for (HalTrigger t : triggerList)
|
|
||||||
root.add(t.getId());
|
|
||||||
triggers = JSONWriter.toString(root);
|
|
||||||
for (HalAction a : actionList)
|
|
||||||
root.add(a.getId());
|
|
||||||
actions = JSONWriter.toString(root);
|
|
||||||
|
|
||||||
super.save(db);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void postUpdateAction() {
|
protected void postUpdateAction() {
|
||||||
DBConnection db = HalContext.getDB();
|
DBConnection db = HalContext.getDB();
|
||||||
|
|
||||||
triggerList.clear();
|
triggerList.clear();
|
||||||
for (DataNode tId : JSONParser.read(triggers))
|
triggerList = HalTrigger.getTriggers(db, this);
|
||||||
try {
|
|
||||||
triggerList.add(HalTrigger.getTrigger(db, tId.getInt()));
|
|
||||||
} catch (SQLException e) {
|
|
||||||
logger.log(Level.SEVERE, null, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
actionList.clear();
|
actionList.clear();
|
||||||
for (DataNode aId : JSONParser.read(actions))
|
actionList = HalAction.getActions(db, this);
|
||||||
try {
|
|
||||||
actionList.add(HalAction.getAction(db, aId.getInt()));
|
|
||||||
} catch (SQLException e) {
|
|
||||||
logger.log(Level.SEVERE, null, e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void addTrigger(HalTrigger trigger) {
|
public void addTrigger(HalTrigger trigger) {
|
||||||
triggerList.add(trigger);
|
triggerList.add(trigger);
|
||||||
}
|
}
|
||||||
|
public void removeTrigger(HalTrigger trigger) {
|
||||||
|
triggerList.remove(trigger);
|
||||||
|
}
|
||||||
|
|
||||||
public void addAction(HalAction action) {
|
public void addAction(HalAction action) {
|
||||||
actionList.add(action);
|
actionList.add(action);
|
||||||
}
|
}
|
||||||
|
public void removeAction(HalAction action) {
|
||||||
|
actionList.remove(action);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if any one of the triggerList evaluate to true,
|
* @return true if any one of the triggerList evaluate to true,
|
||||||
|
|
@ -112,4 +97,6 @@ public class TriggerFlow extends DBBean {
|
||||||
trigger.reset();
|
trigger.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue