Migrated to Zutil UserMessage class

This commit is contained in:
Ziver Koc 2021-02-17 22:28:27 +01:00
parent 1e0ec282ca
commit 0a1ce4fe60
12 changed files with 98 additions and 187 deletions

View file

@ -12,10 +12,6 @@ allprojects {
mavenLocal() mavenLocal()
mavenCentral() mavenCentral()
jcenter() jcenter()
maven {
url 'https://jitpack.io' // Needed for ffmpeg4j project
}
} }
} }

View file

@ -45,7 +45,7 @@ public class HalContext {
private static HashMap<String,String> registeredConf = new HashMap<>(); private static HashMap<String,String> registeredConf = new HashMap<>();
private static Properties fileConf = new Properties(); private static Properties fileConf = new Properties();
private static Properties dbConf = new Properties();; private static Properties dbConf = new Properties();
static { static {
@ -209,7 +209,7 @@ public class HalContext {
return value; return value;
} }
public static String getStringProperty(String key, String defaultValue){ public static String getStringProperty(String key, String defaultValue){
if (!HalContext.containsProperty(key)) if (!containsProperty(key))
return defaultValue; return defaultValue;
return getStringProperty(key); return getStringProperty(key);
} }
@ -222,7 +222,7 @@ public class HalContext {
return Integer.parseInt(value); return Integer.parseInt(value);
} }
public static int getIntegerProperty(String key, int defaultValue){ public static int getIntegerProperty(String key, int defaultValue){
if (!HalContext.containsProperty(key)) if (!containsProperty(key))
return defaultValue; return defaultValue;
return getIntegerProperty(key); return getIntegerProperty(key);
} }
@ -231,7 +231,7 @@ public class HalContext {
return Boolean.parseBoolean(getStringProperty(key)); return Boolean.parseBoolean(getStringProperty(key));
} }
public static boolean getBooleanProperty(String key, boolean defaultValue) { public static boolean getBooleanProperty(String key, boolean defaultValue) {
if (!HalContext.containsProperty(key)) if (!containsProperty(key))
return defaultValue; return defaultValue;
return getBooleanProperty(key); return getBooleanProperty(key);
} }
@ -258,5 +258,4 @@ public class HalContext {
HalContext.db = db; HalContext.db = db;
} }
} }

View file

@ -4,9 +4,6 @@ import se.hal.HalContext;
import se.hal.intf.HalDaemon; import se.hal.intf.HalDaemon;
import se.hal.intf.HalSensorConfig.AggregationMethod; import se.hal.intf.HalSensorConfig.AggregationMethod;
import se.hal.page.HalAlertManager; import se.hal.page.HalAlertManager;
import se.hal.page.HalAlertManager.AlertLevel;
import se.hal.page.HalAlertManager.AlertTTL;
import se.hal.page.HalAlertManager.HalAlert;
import se.hal.struct.Sensor; import se.hal.struct.Sensor;
import se.hal.util.UTCTimePeriod; import se.hal.util.UTCTimePeriod;
import se.hal.util.UTCTimeUtility; import se.hal.util.UTCTimeUtility;
@ -14,6 +11,8 @@ import zutil.db.DBConnection;
import zutil.db.SQLResultHandler; import zutil.db.SQLResultHandler;
import zutil.db.handler.SimpleSQLResult; import zutil.db.handler.SimpleSQLResult;
import zutil.log.LogUtil; import zutil.log.LogUtil;
import zutil.ui.UserMessageManager;
import zutil.ui.UserMessageManager.*;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
@ -41,7 +40,7 @@ public class SensorDataAggregatorDaemon implements HalDaemon {
YEAR YEAR
} }
private HashMap<Long, HalAlert> alertMap = new HashMap<>(); private HashMap<Long, UserMessage> alertMap = new HashMap<>();
public void initiate(ScheduledExecutorService executor){ public void initiate(ScheduledExecutorService executor){
@ -114,10 +113,10 @@ public class SensorDataAggregatorDaemon implements HalDaemon {
if (alertMap.containsKey(sensor.getId())) if (alertMap.containsKey(sensor.getId()))
alertMap.get(sensor.getId()).dismiss(); alertMap.get(sensor.getId()).dismiss();
HalAlert alert = new HalAlert(AlertLevel.WARNING, UserMessage alert = new UserMessage(UserMessageManager.MessageLevel.WARNING,
"Sensor \"" + sensor.getName() + "\" stopped responding", "Sensor \"" + sensor.getName() + "\" stopped responding",
"at <span class=\"timestamp\">"+dbMaxRawTimestamp+"</span>", "at <span class=\"timestamp\">"+dbMaxRawTimestamp+"</span>",
AlertTTL.DISMISSED); MessageTTL.DISMISSED);
alertMap.put(sensor.getId(), alert); alertMap.put(sensor.getId(), alert);
HalAlertManager.getInstance().addAlert(alert); HalAlertManager.getInstance().addAlert(alert);
} }

View file

@ -3,9 +3,6 @@ package se.hal.page;
import se.hal.ControllerManager; import se.hal.ControllerManager;
import se.hal.HalContext; import se.hal.HalContext;
import se.hal.intf.HalWebPage; import se.hal.intf.HalWebPage;
import se.hal.page.HalAlertManager.AlertLevel;
import se.hal.page.HalAlertManager.AlertTTL;
import se.hal.page.HalAlertManager.HalAlert;
import se.hal.struct.ClassConfigurationData; import se.hal.struct.ClassConfigurationData;
import se.hal.struct.Event; import se.hal.struct.Event;
import se.hal.struct.User; import se.hal.struct.User;
@ -14,11 +11,13 @@ import zutil.db.DBConnection;
import zutil.io.file.FileUtil; import zutil.io.file.FileUtil;
import zutil.log.LogUtil; import zutil.log.LogUtil;
import zutil.parser.Templator; import zutil.parser.Templator;
import zutil.ui.UserMessageManager.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
public class EventConfigWebPage extends HalWebPage { public class EventConfigWebPage extends HalWebPage {
private static final Logger logger = LogUtil.getLogger(); private static final Logger logger = LogUtil.getLogger();
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/event_config.tmpl"; private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/event_config.tmpl";
@ -62,8 +61,8 @@ public class EventConfigWebPage extends HalWebPage {
event.save(db); event.save(db);
ControllerManager.getInstance().register(event); ControllerManager.getInstance().register(event);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.SUCCESS, "Successfully created new event: " + event.getName(), AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully created new event: " + event.getName(), MessageTTL.ONE_VIEW));
break; break;
case "modify_local_event": case "modify_local_event":
@ -76,12 +75,12 @@ public class EventConfigWebPage extends HalWebPage {
event.getDeviceConfigurator().setValues(request).applyConfiguration(); event.getDeviceConfigurator().setValues(request).applyConfiguration();
event.save(db); event.save(db);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.SUCCESS, "Successfully saved event: "+event.getName(), AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully saved event: "+event.getName(), MessageTTL.ONE_VIEW));
} else { } else {
logger.warning("Unknown event id: " + id); logger.warning("Unknown event id: " + id);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.ERROR, "Unknown event id: " + id, AlertTTL.ONE_VIEW)); MessageLevel.ERROR, "Unknown event id: " + id, MessageTTL.ONE_VIEW));
} }
break; break;
@ -92,12 +91,12 @@ public class EventConfigWebPage extends HalWebPage {
ControllerManager.getInstance().deregister(event); ControllerManager.getInstance().deregister(event);
event.delete(db); event.delete(db);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.SUCCESS, "Successfully removed event: "+event.getName(), AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully removed event: "+event.getName(), MessageTTL.ONE_VIEW));
} else { } else {
logger.warning("Unknown event id: " + id); logger.warning("Unknown event id: " + id);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.ERROR, "Unknown event id: "+id, AlertTTL.ONE_VIEW)); MessageLevel.ERROR, "Unknown event id: "+id, MessageTTL.ONE_VIEW));
} }
break; break;

View file

@ -7,6 +7,8 @@ import zutil.net.http.HttpHeader;
import zutil.net.http.HttpPage; import zutil.net.http.HttpPage;
import zutil.net.http.HttpPrintStream; import zutil.net.http.HttpPrintStream;
import zutil.parser.Templator; import zutil.parser.Templator;
import zutil.ui.UserMessageManager;
import zutil.ui.UserMessageManager.UserMessage;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
@ -19,50 +21,31 @@ public class HalAlertManager implements HttpPage {
private static final String PAGE_NAME = "alert"; private static final String PAGE_NAME = "alert";
private static HalAlertManager instance; private static HalAlertManager instance;
public enum AlertLevel{ private UserMessageManager messageManager = new UserMessageManager();
ERROR,
WARNING,
SUCCESS,
INFO
}
public enum AlertTTL{
ONE_VIEW,
DISMISSED
}
private List<HalAlert> alerts = new LinkedList<>();
private HalAlertManager(){} private HalAlertManager(){}
public String getUrl(){ public String getUrl(){
return "/" + PAGE_NAME; return "/" + PAGE_NAME;
} }
public void addAlert(HalAlert alert) { public void addAlert(UserMessage alert) {
alerts.remove(alert); // We don't want to flood the user with duplicate alerts messageManager.add(alert);
alerts.add(alert);
} }
public Templator generateAlerts() { public Templator generateAlerts() {
try { try {
// clone alert list and update ttl of alerts List<UserMessage> messages = messageManager.getMessages();
List<HalAlert> alertsClone = new ArrayList<>(alerts.size()); for (UserMessage msg : messages) {
for(Iterator<HalAlert> it = alerts.iterator(); it.hasNext(); ) { msg.decreaseTTL();
HalAlert alert = it.next();
alertsClone.add(alert);
alert.ttl--;
if (alert.ttl <= 0) { // if alert is to old, remove it
logger.fine("Alert dismissed with end of life, alert id: "+ alert.id);
it.remove();
}
} }
Templator tmpl = new Templator(FileUtil.find(TEMPLATE)); Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
tmpl.set("serviceUrl", getUrl()); tmpl.set("serviceUrl", getUrl());
tmpl.set("alerts", alertsClone); tmpl.set("alerts", messages);
return tmpl; return tmpl;
} catch (IOException e) { } catch (IOException e) {
logger.log(Level.SEVERE, null, e); logger.log(Level.SEVERE, null, e);
@ -82,14 +65,9 @@ public class HalAlertManager implements HttpPage {
// parse alert id // parse alert id
int id = Integer.parseInt(request.get("id")); int id = Integer.parseInt(request.get("id"));
// Find alert // Find alert
for(Iterator<HalAlert> it = alerts.iterator(); it.hasNext(); ) { UserMessage msg = messageManager.get(id);
HalAlert alert = it.next(); if (msg != null)
if (alert.getId() == id) { msg.dismiss();
logger.fine("User dismissed alert id: "+ id);
it.remove();
break;
}
}
} }
} }
} }
@ -102,63 +80,4 @@ public class HalAlertManager implements HttpPage {
public static HalAlertManager getInstance(){ public static HalAlertManager getInstance(){
return instance; return instance;
} }
public static class HalAlert {
private static int nextId = 0;
private int id;
private AlertLevel level;
private String title;
private String msg;
private int ttl;
public HalAlert(AlertLevel level, String title, AlertTTL ttl) {
this(level, title, null, ttl);
}
public HalAlert(AlertLevel level, String title, String msg, AlertTTL ttl) {
this.id = nextId++;
this.level = level;
this.title = title;
this.msg = msg;
setTTL(ttl);
}
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 getTitle() {
return title;
}
public String getMessage() {
return msg;
}
public void setTTL(AlertTTL ttl) {
switch (ttl){
case ONE_VIEW: this.ttl = 1; break;
case DISMISSED: this.ttl = Integer.MAX_VALUE; break;
}
}
public void dismiss(){
ttl = -1;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof HalAlert)
return level == ((HalAlert) obj).level &&
title.equals(((HalAlert) obj).title);
return super.equals(obj);
}
}
} }

View file

@ -4,14 +4,14 @@ import se.hal.ControllerManager;
import se.hal.HalContext; import se.hal.HalContext;
import se.hal.HalServer; import se.hal.HalServer;
import se.hal.intf.HalWebPage; import se.hal.intf.HalWebPage;
import se.hal.page.HalAlertManager.AlertLevel;
import se.hal.page.HalAlertManager.AlertTTL;
import se.hal.page.HalAlertManager.HalAlert;
import zutil.io.file.FileUtil; import zutil.io.file.FileUtil;
import zutil.parser.Templator; import zutil.parser.Templator;
import zutil.ui.UserMessageManager;
import java.util.Map; import java.util.Map;
import static zutil.ui.UserMessageManager.*;
public class PluginConfigWebPage extends HalWebPage { public class PluginConfigWebPage extends HalWebPage {
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/plugin_config.tmpl"; private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/plugin_config.tmpl";
@ -33,8 +33,8 @@ public class PluginConfigWebPage extends HalWebPage {
HalServer.enablePlugin(name, HalServer.enablePlugin(name,
(request.containsKey("enabled") && "on".equals(request.get("enabled")))); (request.containsKey("enabled") && "on".equals(request.get("enabled"))));
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.SUCCESS, "Successfully updated plugin " + name + ", change will take affect after restart.", AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully updated plugin " + name + ", change will take affect after restart.", MessageTTL.ONE_VIEW));
} }
Templator tmpl = new Templator(FileUtil.find(TEMPLATE)); Templator tmpl = new Templator(FileUtil.find(TEMPLATE));

View file

@ -3,9 +3,6 @@ package se.hal.page;
import se.hal.ControllerManager; import se.hal.ControllerManager;
import se.hal.HalContext; import se.hal.HalContext;
import se.hal.intf.HalWebPage; import se.hal.intf.HalWebPage;
import se.hal.page.HalAlertManager.AlertLevel;
import se.hal.page.HalAlertManager.AlertTTL;
import se.hal.page.HalAlertManager.HalAlert;
import se.hal.struct.ClassConfigurationData; import se.hal.struct.ClassConfigurationData;
import se.hal.struct.Sensor; import se.hal.struct.Sensor;
import se.hal.struct.User; import se.hal.struct.User;
@ -19,6 +16,8 @@ import java.util.ArrayList;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
import static zutil.ui.UserMessageManager.*;
public class SensorConfigWebPage extends HalWebPage { public class SensorConfigWebPage extends HalWebPage {
private static final Logger logger = LogUtil.getLogger(); private static final Logger logger = LogUtil.getLogger();
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/sensor_config.tmpl"; private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/sensor_config.tmpl";
@ -64,8 +63,8 @@ public class SensorConfigWebPage extends HalWebPage {
sensor.save(db); sensor.save(db);
ControllerManager.getInstance().register(sensor); ControllerManager.getInstance().register(sensor);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.SUCCESS, "Successfully created new sensor: "+sensor.getName(), AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully created new sensor: "+sensor.getName(), MessageTTL.ONE_VIEW));
break; break;
case "modify_local_sensor": case "modify_local_sensor":
@ -78,12 +77,12 @@ public class SensorConfigWebPage extends HalWebPage {
sensor.getDeviceConfigurator().setValues(request).applyConfiguration(); sensor.getDeviceConfigurator().setValues(request).applyConfiguration();
sensor.save(db); sensor.save(db);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.SUCCESS, "Successfully saved sensor: "+sensor.getName(), AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully saved sensor: "+sensor.getName(), MessageTTL.ONE_VIEW));
} else { } else {
logger.warning("Unknown sensor id: " + id); logger.warning("Unknown sensor id: " + id);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.ERROR, "Unknown sensor id: " + id, AlertTTL.ONE_VIEW)); MessageLevel.ERROR, "Unknown sensor id: " + id, MessageTTL.ONE_VIEW));
} }
break; break;
@ -94,12 +93,12 @@ public class SensorConfigWebPage extends HalWebPage {
ControllerManager.getInstance().deregister(sensor); ControllerManager.getInstance().deregister(sensor);
sensor.delete(db); sensor.delete(db);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.SUCCESS, "Successfully removed sensor: "+sensor.getName(), AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully removed sensor: "+sensor.getName(), MessageTTL.ONE_VIEW));
} else { } else {
logger.warning("Unknown sensor id: " + id); logger.warning("Unknown sensor id: " + id);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.ERROR, "Unknown sensor id: " + id, AlertTTL.ONE_VIEW)); MessageLevel.ERROR, "Unknown sensor id: " + id, MessageTTL.ONE_VIEW));
} }
break; break;
@ -116,8 +115,8 @@ public class SensorConfigWebPage extends HalWebPage {
user.setExternal(true); user.setExternal(true);
user.save(db); user.save(db);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.SUCCESS, "Successfully created new external user with host: "+user.getHostname(), AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully created new external user with host: "+user.getHostname(), MessageTTL.ONE_VIEW));
break; break;
case "modify_external_user": case "modify_external_user":
@ -128,12 +127,12 @@ public class SensorConfigWebPage extends HalWebPage {
user.setPort(Integer.parseInt(request.get("port"))); user.setPort(Integer.parseInt(request.get("port")));
user.save(db); user.save(db);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.SUCCESS, "Successfully saved external user with host: "+user.getHostname(), AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully saved external user with host: "+user.getHostname(), MessageTTL.ONE_VIEW));
} else { } else {
logger.warning("Unknown user id: " + id); logger.warning("Unknown user id: " + id);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.ERROR, "Unknown user id: " + id, AlertTTL.ONE_VIEW)); MessageLevel.ERROR, "Unknown user id: " + id, MessageTTL.ONE_VIEW));
} }
break; break;
case "remove_external_user": case "remove_external_user":
@ -142,12 +141,12 @@ public class SensorConfigWebPage extends HalWebPage {
logger.info("Removing external user: " + user.getHostname()); logger.info("Removing external user: " + user.getHostname());
user.delete(db); user.delete(db);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.SUCCESS, "Successfully removed user with host: "+user.getHostname(), AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully removed user with host: "+user.getHostname(), MessageTTL.ONE_VIEW));
} else { } else {
logger.warning("Unknown user id: " + id); logger.warning("Unknown user id: " + id);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.ERROR, "Unknown user id: "+id, AlertTTL.ONE_VIEW)); MessageLevel.ERROR, "Unknown user id: "+id, MessageTTL.ONE_VIEW));
} }
break; break;
@ -159,12 +158,12 @@ public class SensorConfigWebPage extends HalWebPage {
sensor.setSynced(Boolean.parseBoolean(request.get("sync"))); sensor.setSynced(Boolean.parseBoolean(request.get("sync")));
sensor.save(db); sensor.save(db);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.SUCCESS, "Successfully saved external sensor: "+sensor.getName(), AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully saved external sensor: "+sensor.getName(), MessageTTL.ONE_VIEW));
} else { } else {
logger.warning("Unknown user id: " + id); logger.warning("Unknown user id: " + id);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.ERROR, "Unknown sensor id: "+id, AlertTTL.ONE_VIEW)); MessageLevel.ERROR, "Unknown sensor id: "+id, MessageTTL.ONE_VIEW));
} }
break; break;
} }

View file

@ -12,11 +12,14 @@ import zutil.db.DBConnection;
import zutil.io.file.FileUtil; import zutil.io.file.FileUtil;
import zutil.log.LogUtil; import zutil.log.LogUtil;
import zutil.parser.Templator; import zutil.parser.Templator;
import zutil.ui.UserMessageManager;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
import static zutil.ui.UserMessageManager.*;
public class TriggerWebPage extends HalWebPage { public class TriggerWebPage extends HalWebPage {
private static final Logger logger = LogUtil.getLogger(); private static final Logger logger = LogUtil.getLogger();
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/trigger.tmpl"; private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/trigger.tmpl";
@ -77,8 +80,8 @@ public class TriggerWebPage extends HalWebPage {
case "create_trigger": case "create_trigger":
if (flow == null){ if (flow == null){
logger.warning("Invalid flow id: " + request.get("flow-id")); logger.warning("Invalid flow id: " + request.get("flow-id"));
HalAlertManager.getInstance().addAlert(new HalAlertManager.HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
HalAlertManager.AlertLevel.ERROR, "Invalid flow id: " + request.get("flow-id"), HalAlertManager.AlertTTL.ONE_VIEW)); MessageLevel.ERROR, "Invalid flow id: " + request.get("flow-id"), MessageTTL.ONE_VIEW));
break; break;
} }
@ -105,8 +108,8 @@ public class TriggerWebPage extends HalWebPage {
// Triggers // Triggers
case "create_action": case "create_action":
if (flow == null){ if (flow == null){
HalAlertManager.getInstance().addAlert(new HalAlertManager.HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
HalAlertManager.AlertLevel.ERROR, "Invalid flow id", HalAlertManager.AlertTTL.ONE_VIEW)); MessageLevel.ERROR, "Invalid flow id", MessageTTL.ONE_VIEW));
break; break;
} }

View file

@ -2,18 +2,18 @@ package se.hal.page;
import se.hal.HalContext; import se.hal.HalContext;
import se.hal.intf.HalWebPage; import se.hal.intf.HalWebPage;
import se.hal.page.HalAlertManager.AlertLevel;
import se.hal.page.HalAlertManager.AlertTTL;
import se.hal.page.HalAlertManager.HalAlert;
import se.hal.struct.User; import se.hal.struct.User;
import zutil.db.DBConnection; import zutil.db.DBConnection;
import zutil.io.file.FileUtil; import zutil.io.file.FileUtil;
import zutil.log.LogUtil; import zutil.log.LogUtil;
import zutil.parser.Templator; import zutil.parser.Templator;
import zutil.ui.UserMessageManager;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
import static zutil.ui.UserMessageManager.*;
public class UserConfigWebPage extends HalWebPage { public class UserConfigWebPage extends HalWebPage {
private static final Logger logger = LogUtil.getLogger(); private static final Logger logger = LogUtil.getLogger();
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/user_config.tmpl"; private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/user_config.tmpl";
@ -50,8 +50,8 @@ public class UserConfigWebPage extends HalWebPage {
localUser.setAddress(request.get("address")); localUser.setAddress(request.get("address"));
localUser.save(db); localUser.save(db);
HalAlertManager.getInstance().addAlert(new HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
AlertLevel.SUCCESS, "Successfully saved profile changes", AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully saved profile changes", MessageTTL.ONE_VIEW));
break; break;
} }
} }

View file

@ -1,12 +1,4 @@
repositories {
maven {
url 'https://jitpack.io' // Needed for ffmpeg4j project
}
}
dependencies { dependencies {
implementation project(':hal-core') implementation project(':hal-core')
implementation 'com.github.Manevolent:ffmpeg4j:4.1-1.4.4-2' // https://github.com/Manevolent/ffmpeg4j
//implementation 'net.bramp.ffmpeg:ffmpeg:0.6.2' // https://github.com/bramp/ffmpeg-cli-wrapper
} }

View file

@ -36,11 +36,14 @@ import zutil.db.DBConnection;
import zutil.io.file.FileUtil; import zutil.io.file.FileUtil;
import zutil.log.LogUtil; import zutil.log.LogUtil;
import zutil.parser.Templator; import zutil.parser.Templator;
import zutil.ui.UserMessageManager;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
import static zutil.ui.UserMessageManager.*;
public class CameraConfigWebPage extends HalWebPage { public class CameraConfigWebPage extends HalWebPage {
private static final Logger logger = LogUtil.getLogger(); private static final Logger logger = LogUtil.getLogger();
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/camera_config.tmpl"; private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/camera_config.tmpl";
@ -83,8 +86,8 @@ public class CameraConfigWebPage extends HalWebPage {
camera.save(db); camera.save(db);
//ControllerManager.getInstance().register(camera); //ControllerManager.getInstance().register(camera);
HalAlertManager.getInstance().addAlert(new HalAlertManager.HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
HalAlertManager.AlertLevel.SUCCESS, "Successfully created new camera: " + camera.getName(), HalAlertManager.AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully created new camera: " + camera.getName(), MessageTTL.ONE_VIEW));
break; break;
case "modify_camera": case "modify_camera":
@ -97,12 +100,12 @@ public class CameraConfigWebPage extends HalWebPage {
camera.getDeviceConfigurator().setValues(request).applyConfiguration(); camera.getDeviceConfigurator().setValues(request).applyConfiguration();
camera.save(db); camera.save(db);
HalAlertManager.getInstance().addAlert(new HalAlertManager.HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
HalAlertManager.AlertLevel.SUCCESS, "Successfully saved camera: "+camera.getName(), HalAlertManager.AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully saved camera: "+camera.getName(), MessageTTL.ONE_VIEW));
} else { } else {
logger.warning("Unknown camera id: " + id); logger.warning("Unknown camera id: " + id);
HalAlertManager.getInstance().addAlert(new HalAlertManager.HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
HalAlertManager.AlertLevel.ERROR, "Unknown camera id: " + id, HalAlertManager.AlertTTL.ONE_VIEW)); MessageLevel.ERROR, "Unknown camera id: " + id, MessageTTL.ONE_VIEW));
} }
break; break;
@ -113,12 +116,12 @@ public class CameraConfigWebPage extends HalWebPage {
//ControllerManager.getInstance().deregister(camera); //ControllerManager.getInstance().deregister(camera);
camera.delete(db); camera.delete(db);
HalAlertManager.getInstance().addAlert(new HalAlertManager.HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
HalAlertManager.AlertLevel.SUCCESS, "Successfully removed camera: "+camera.getName(), HalAlertManager.AlertTTL.ONE_VIEW)); MessageLevel.SUCCESS, "Successfully removed camera: "+camera.getName(), MessageTTL.ONE_VIEW));
} else { } else {
logger.warning("Unknown camera id: " + id); logger.warning("Unknown camera id: " + id);
HalAlertManager.getInstance().addAlert(new HalAlertManager.HalAlert( HalAlertManager.getInstance().addAlert(new UserMessage(
HalAlertManager.AlertLevel.ERROR, "Unknown camera id: "+id, HalAlertManager.AlertTTL.ONE_VIEW)); MessageLevel.ERROR, "Unknown camera id: "+id, MessageTTL.ONE_VIEW));
} }
break; break;
} }

View file

@ -31,13 +31,12 @@ import se.hal.plugin.powerchallenge.daemon.PCDataSynchronizationDaemon.SensorDat
import se.hal.plugin.powerchallenge.daemon.PCDataSynchronizationDaemon.SensorDataListDTO; import se.hal.plugin.powerchallenge.daemon.PCDataSynchronizationDaemon.SensorDataListDTO;
import se.hal.intf.HalDaemon; import se.hal.intf.HalDaemon;
import se.hal.page.HalAlertManager; import se.hal.page.HalAlertManager;
import se.hal.page.HalAlertManager.AlertTTL;
import se.hal.page.HalAlertManager.HalAlert;
import se.hal.struct.Sensor; import se.hal.struct.Sensor;
import se.hal.struct.User; import se.hal.struct.User;
import zutil.db.DBConnection; import zutil.db.DBConnection;
import zutil.log.LogUtil; import zutil.log.LogUtil;
import zutil.parser.json.JSONParser; import zutil.parser.json.JSONParser;
import zutil.ui.UserMessageManager;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
@ -51,6 +50,8 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import static zutil.ui.UserMessageManager.*;
public class PCDataSynchronizationClient implements HalDaemon { public class PCDataSynchronizationClient implements HalDaemon {
private static final Logger logger = LogUtil.getLogger(); private static final Logger logger = LogUtil.getLogger();
private static final long SYNC_INTERVAL = 5 * 60 * 1000; // 5 min private static final long SYNC_INTERVAL = 5 * 60 * 1000; // 5 min
@ -157,8 +158,8 @@ public class PCDataSynchronizationClient implements HalDaemon {
} catch (NoRouteToHostException|UnknownHostException|ConnectException|SocketTimeoutException e) { } catch (NoRouteToHostException|UnknownHostException|ConnectException|SocketTimeoutException e) {
logger.warning("Unable to connect to "+ user.getHostname()+":"+user.getPort() +", "+ e.getMessage()); logger.warning("Unable to connect to "+ user.getHostname()+":"+user.getPort() +", "+ e.getMessage());
HalAlertManager.getInstance().addAlert(new HalAlert(HalAlertManager.AlertLevel.WARNING, HalAlertManager.getInstance().addAlert(new UserMessage(MessageLevel.WARNING,
"Unable to connect to user with host: "+user.getHostname(), AlertTTL.DISMISSED)); "Unable to connect to user with host: "+user.getHostname(), MessageTTL.DISMISSED));
} catch (Exception e) { } catch (Exception e) {
logger.log(Level.SEVERE, null, e); logger.log(Level.SEVERE, null, e);
} }
@ -170,8 +171,9 @@ public class PCDataSynchronizationClient implements HalDaemon {
} }
// ----------------------------------------------------
/////////////// DTO /////////////////////// // DTO
// ----------------------------------------------------
/** /**
* Request Peer information and isAvailable sensors * Request Peer information and isAvailable sensors