From 86bf95d417022a924758cba926bb8255f6bde91f Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Wed, 20 Jan 2016 17:05:18 +0100 Subject: [PATCH] Implementation of gui alerts (not dissmissable yet). issue 9 Former-commit-id: 3184c884854a7db76467ab6e7310ce7dea951c39 --- src/se/hal/HalServer.java | 11 ++- src/se/hal/intf/HalHttpPage.java | 2 + src/se/hal/page/HalAlertManager.java | 104 +++++++++++++++++++++++++++ web-resource/alerts.tmpl | 30 ++++++++ web-resource/index.tmpl | 1 + 5 files changed, 146 insertions(+), 2 deletions(-) create mode 100755 src/se/hal/page/HalAlertManager.java create mode 100755 web-resource/alerts.tmpl diff --git a/src/se/hal/HalServer.java b/src/se/hal/HalServer.java index 4eb4164f..92307989 100755 --- a/src/se/hal/HalServer.java +++ b/src/se/hal/HalServer.java @@ -8,6 +8,7 @@ import se.hal.deamon.PCDataSynchronizationDaemon; import se.hal.intf.HalDaemon; import se.hal.intf.HalHttpPage; import se.hal.page.*; +import se.hal.page.HalAlertManager.*; import se.hal.struct.Event; import se.hal.struct.Sensor; import zutil.db.DBConnection; @@ -39,13 +40,16 @@ public class HalServer { LogUtil.setFormatter("zutil", formatter); LogUtil.setGlobalFormatter(formatter); + // init Managers + HalContext.initialize(); + ControllerManager.initialize(); + HalAlertManager.initialize(); + // init DB and other configurations - HalContext.initialize(); DBConnection db = HalContext.getDB(); // Init sensors,events and controllers - ControllerManager.initialize(); for(Sensor sensor : Sensor.getLocalSensors(db)){ ControllerManager.getInstance().register(sensor); } @@ -69,6 +73,9 @@ public class HalServer { // init http server + HalAlertManager.getInstance().addAlert(new HalAlert(AlertLevel.ERROR, "error test")); + HalAlertManager.getInstance().addAlert(new HalAlert(AlertLevel.INFO, "info test")); + HalHttpPage.getRootNav().addSubNav(new HalNavigation("sensors", "Sensors")); HalHttpPage.getRootNav().addSubNav(new HalNavigation("events", "Events")); pages = new HalHttpPage[]{ diff --git a/src/se/hal/intf/HalHttpPage.java b/src/se/hal/intf/HalHttpPage.java index 03dd951d..621539eb 100755 --- a/src/se/hal/intf/HalHttpPage.java +++ b/src/se/hal/intf/HalHttpPage.java @@ -1,6 +1,7 @@ package se.hal.intf; import se.hal.HalContext; +import se.hal.page.HalAlertManager; import se.hal.page.HalNavigation; import se.hal.struct.User; import zutil.db.DBConnection; @@ -53,6 +54,7 @@ public abstract class HalHttpPage implements HttpPage{ tmpl.set("nav", nav.getNavBreadcrumb().get(1)); tmpl.set("rootNav", rootNav); tmpl.set("userNav", userNav); + tmpl.set("alerts", HalAlertManager.getInstance().generateAlerts()); tmpl.set("content", httpRespond(session, cookie, request)); out.print(tmpl.compile()); diff --git a/src/se/hal/page/HalAlertManager.java b/src/se/hal/page/HalAlertManager.java new file mode 100755 index 00000000..a2938e0f --- /dev/null +++ b/src/se/hal/page/HalAlertManager.java @@ -0,0 +1,104 @@ +package se.hal.page; + +import zutil.io.file.FileUtil; +import zutil.log.LogUtil; +import zutil.net.http.HttpHeaderParser; +import zutil.net.http.HttpPage; +import zutil.net.http.HttpPrintStream; +import zutil.parser.Templator; + +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Created by ezivkoc on 2016-01-20. + */ +public class HalAlertManager implements HttpPage { + private static final Logger logger = LogUtil.getLogger(); + private static final String TMPL_PATH = "web-resource/alerts.tmpl"; + private static final String PAGE_NAME = "alert"; + private static HalAlertManager instance; + + public enum AlertLevel{ + ERROR, + WARNING, + SUCCESS, + INFO + } + + private List alerts = new LinkedList<>(); + + + private HalAlertManager(){} + + + public void addAlert(HalAlert alert){ + alerts.add(alert); + } + + public Templator generateAlerts(){ + try { + Templator tmpl = new Templator(FileUtil.find(TMPL_PATH)); + tmpl.set("alerts", alerts); + return tmpl; + }catch (IOException e){ + logger.log(Level.SEVERE, null, e); + } + return null; + } + + @Override + public void respond(HttpPrintStream out, + HttpHeaderParser client_info, + Map session, + Map cookie, + Map request) throws IOException { + + } + + + + public static void initialize(){ + instance = new HalAlertManager(); + } + public static HalAlertManager getInstance(){ + return instance; + } + + + public static class HalAlert{ + private static int nextId = 0; + + private int id; + private AlertLevel level; + private String msg; + + public HalAlert(AlertLevel level, String msg) { + this.id = nextId++; + this.level = level; + this.msg = msg; + } + + + public int getId() { + return id; + } + + public AlertLevel getLevel() { + return level; + } + public boolean isError(){ return level == AlertLevel.ERROR; } + public boolean isWarning(){ return level == AlertLevel.WARNING; } + public boolean isSuccess(){ return level == AlertLevel.SUCCESS; } + public boolean isInfo(){ return level == AlertLevel.INFO; } + + public String getMessage() { + return msg; + } + } +} diff --git a/web-resource/alerts.tmpl b/web-resource/alerts.tmpl new file mode 100755 index 00000000..de11c0b5 --- /dev/null +++ b/web-resource/alerts.tmpl @@ -0,0 +1,30 @@ +{{#alerts}} + {{#.isError()}} + + {{/.isError()}} + {{#.isWarning()}} + + {{/.isWarning()}} + {{#.isSuccess()}} + + {{/.isSuccess()}} + {{#.isInfo()}} + + {{/.isInfo()}} +{{/alerts}} \ No newline at end of file diff --git a/web-resource/index.tmpl b/web-resource/index.tmpl index c8ef2a7d..e84258fc 100755 --- a/web-resource/index.tmpl +++ b/web-resource/index.tmpl @@ -79,6 +79,7 @@
+ {{alerts}} {{content}}