From 1f7889e4f170b3dce10b2fd381329019ebc58a98 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Wed, 19 Apr 2017 17:27:21 +0200 Subject: [PATCH] Fixed exception when removing triggers and actions. issue 52 --- src/se/hal/page/TriggerHttpPage.java | 4 ++++ src/se/hal/struct/TriggerFlow.java | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/se/hal/page/TriggerHttpPage.java b/src/se/hal/page/TriggerHttpPage.java index 1929d947..422cb7a5 100755 --- a/src/se/hal/page/TriggerHttpPage.java +++ b/src/se/hal/page/TriggerHttpPage.java @@ -83,6 +83,8 @@ public class TriggerHttpPage extends HalHttpPage { trigger.save(db); // will save all sub beans also break; case "remove_trigger": + if (flow == null) + flow = TriggerFlow.getTriggerFlow(db, trigger); flow.removeTrigger(trigger); trigger.delete(db); break; @@ -104,6 +106,8 @@ public class TriggerHttpPage extends HalHttpPage { action.save(db); // will save all sub beans also break; case "remove_action": + if (flow == null) + flow = TriggerFlow.getTriggerFlow(db, action); flow.removeAction(action); action.delete(db); break; diff --git a/src/se/hal/struct/TriggerFlow.java b/src/se/hal/struct/TriggerFlow.java index e7f97a7a..607278d3 100755 --- a/src/se/hal/struct/TriggerFlow.java +++ b/src/se/hal/struct/TriggerFlow.java @@ -3,6 +3,7 @@ package se.hal.struct; import zutil.db.DBConnection; import zutil.db.bean.DBBean; import zutil.db.bean.DBBeanSQLResultHandler; +import zutil.db.handler.SimpleSQLResult; import zutil.log.LogUtil; import java.sql.PreparedStatement; @@ -33,6 +34,27 @@ public class TriggerFlow extends DBBean { public static TriggerFlow getTriggerFlow(DBConnection db, int id) throws SQLException { return DBBean.load(db, TriggerFlow.class, id); } + /** + * Looks up the parent TriggerFlow for the specified Trigger + */ + public static TriggerFlow getTriggerFlow(DBConnection db, Trigger trigger) throws SQLException { + return getParentFlow(db, "trigger", trigger); + } + /** + * Looks up the parent TriggerFlow for the specified Action + */ + public static TriggerFlow getTriggerFlow(DBConnection db, Action action) throws SQLException { + return getParentFlow(db, "action", action); + } + private static TriggerFlow getParentFlow(DBConnection db, String table, DBBean subObj) throws SQLException { + if (subObj.getId() == null) + return null; + Integer flowId = db.exec("SELECT flow_id FROM "+table+" WHERE id=="+subObj.getId(), + new SimpleSQLResult()); + if (flowId == null) + return null; + return TriggerFlow.getTriggerFlow(db, flowId); + }