-
-
+
+
+
-
+
{{#actionConf}}
{{#.params}}
diff --git a/src/se/hal/page/TriggerHttpPage.java b/src/se/hal/page/TriggerHttpPage.java
index 04a25685..23f3096e 100755
--- a/src/se/hal/page/TriggerHttpPage.java
+++ b/src/se/hal/page/TriggerHttpPage.java
@@ -46,14 +46,14 @@ public class TriggerHttpPage extends HalHttpPage {
if(request.containsKey("action")){
TriggerFlow flow = null;
- if (request.containsKey("flow_id"))
- flow = TriggerFlow.getTriggerFlow(db, Integer.parseInt(request.get("flow_id")));
+ if (request.containsKey("flow-id") && !request.get("flow-id").isEmpty())
+ flow = TriggerFlow.getTriggerFlow(db, Integer.parseInt(request.get("flow-id")));
Trigger trigger = null;
- if (request.containsKey("trigger_id"))
- trigger = Trigger.getTrigger(db, Integer.parseInt(request.get("trigger_id")));
+ if (request.containsKey("trigger-id") && !request.get("trigger-id").isEmpty())
+ trigger = Trigger.getTrigger(db, Integer.parseInt(request.get("trigger-id")));
Action action = null;
- if (request.containsKey("action_id"))
- action = Action.getAction(db, Integer.parseInt(request.get("action_id")));
+ if (request.containsKey("action-id") && !request.get("action-id").isEmpty())
+ action = Action.getAction(db, Integer.parseInt(request.get("action-id")));
switch(request.get("action")) {
@@ -68,10 +68,17 @@ public class TriggerHttpPage extends HalHttpPage {
// Triggers
case "create_trigger":
- //TODO: trigger = new HalTrigger();
+ if (flow == null){
+ HalAlertManager.getInstance().addAlert(new HalAlertManager.HalAlert(
+ HalAlertManager.AlertLevel.ERROR, "Invalid flow id", HalAlertManager.AlertTTL.ONE_VIEW));
+ break;
+ }
+ trigger = new Trigger();
flow.addTrigger(trigger);
+ /* FALLTHROUGH */
case "modify_trigger":
- // TODO: save attrib
+ trigger.setObjectClass(request.get("type"));
+ trigger.getObjectConfigurator().setValues(request).applyConfiguration();
trigger.save(db);
break;
case "remove_trigger":
@@ -81,10 +88,17 @@ public class TriggerHttpPage extends HalHttpPage {
// Triggers
case "create_action":
- //TODO: action = new HalAction();
+ if (flow == null){
+ HalAlertManager.getInstance().addAlert(new HalAlertManager.HalAlert(
+ HalAlertManager.AlertLevel.ERROR, "Invalid flow id", HalAlertManager.AlertTTL.ONE_VIEW));
+ break;
+ }
+ action = new Action();
flow.addAction(action);
+ /* FALLTHROUGH */
case "modify_action":
- // TODO: save attrib
+ action.setObjectClass(request.get("type"));
+ action.getObjectConfigurator().setValues(request).applyConfiguration();
action.save(db);
break;
case "remove_action":
diff --git a/src/se/hal/plugin.json b/src/se/hal/plugin.json
index b6464d5e..42939429 100755
--- a/src/se/hal/plugin.json
+++ b/src/se/hal/plugin.json
@@ -20,6 +20,7 @@
{"se.hal.intf.HalTrigger": "se.hal.trigger.DateTimeTrigger"},
- {"se.hal.intf.HalTrigger": "se.hal.trigger.TimerTrigger"}
+ {"se.hal.intf.HalTrigger": "se.hal.trigger.TimerTrigger"},
+ {"se.hal.intf.HalAction": "se.hal.trigger.action.SendEventAction"}
]
}
diff --git a/src/se/hal/struct/Action.java b/src/se/hal/struct/Action.java
index 40c765e6..abf1495c 100755
--- a/src/se/hal/struct/Action.java
+++ b/src/se/hal/struct/Action.java
@@ -7,6 +7,7 @@ import zutil.db.bean.DBBean;
import zutil.db.bean.DBBeanObjectDSO;
import java.sql.SQLException;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -21,7 +22,7 @@ public class Action extends DBBeanObjectDSO
{
}
public static List getActions(DBConnection db, TriggerFlow flow) {
// TODO:
- return null;
+ return new ArrayList<>();
}
diff --git a/src/se/hal/struct/Trigger.java b/src/se/hal/struct/Trigger.java
index 3f5c70f6..312210ae 100755
--- a/src/se/hal/struct/Trigger.java
+++ b/src/se/hal/struct/Trigger.java
@@ -6,6 +6,7 @@ import zutil.db.bean.DBBean;
import zutil.db.bean.DBBeanObjectDSO;
import java.sql.SQLException;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -22,7 +23,7 @@ public class Trigger extends DBBeanObjectDSO{
}
public static List getTriggers(DBConnection db, TriggerFlow flow) {
// Todo:
- return null;
+ return new ArrayList<>();
}
diff --git a/src/se/hal/trigger/TimerTrigger.java b/src/se/hal/trigger/TimerTrigger.java
index f552b573..9826e229 100755
--- a/src/se/hal/trigger/TimerTrigger.java
+++ b/src/se/hal/trigger/TimerTrigger.java
@@ -21,6 +21,6 @@ public class TimerTrigger implements HalTrigger {
@Override
public void reset() {
- timer = new Timer(timerTime * 1000);
+ timer = new Timer(timerTime * 1000).start();
}
}
diff --git a/src/se/hal/trigger/action/SendEventAction.java b/src/se/hal/trigger/action/SendEventAction.java
new file mode 100755
index 00000000..07a4c833
--- /dev/null
+++ b/src/se/hal/trigger/action/SendEventAction.java
@@ -0,0 +1,51 @@
+package se.hal.trigger.action;
+
+import se.hal.ControllerManager;
+import se.hal.HalContext;
+import se.hal.intf.HalAction;
+import se.hal.intf.HalEventData;
+import se.hal.struct.Event;
+import zutil.db.DBConnection;
+import zutil.log.LogUtil;
+import zutil.ui.Configurator;
+
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ */
+public class SendEventAction implements HalAction {
+ private static final Logger logger = LogUtil.getLogger();
+
+ @Configurator.Configurable(order = 1, value = "Event Device ID")
+ private int eventId;
+ @Configurator.Configurable(order = 1, value = "Data to Send")
+ private double data;
+
+
+ @Override
+ public void execute() {
+ try {
+ DBConnection db = HalContext.getDB();
+ Event event = Event.getEvent(db, eventId);
+ if (event != null) {
+ HalEventData dataObj = event.getDeviceConfig().getEventDataClass().newInstance();
+ dataObj.setData(data);
+ event.setDeviceData(dataObj);
+ // Send
+ ControllerManager.getInstance().send(event);
+ }
+ else
+ logger.warning("Unable to find event with id: "+ eventId);
+ } catch (Exception e) {
+ logger.log(Level.SEVERE, null, e);
+ }
+ }
+
+
+ public String toString(){
+ return "Send event: "+ eventId +" with data: "+ data;
+ }
+}