Migrated to Zutil UserMessage class
This commit is contained in:
parent
1e0ec282ca
commit
0a1ce4fe60
12 changed files with 98 additions and 187 deletions
|
|
@ -12,10 +12,6 @@ allprojects {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
jcenter()
|
jcenter()
|
||||||
|
|
||||||
maven {
|
|
||||||
url 'https://jitpack.io' // Needed for ffmpeg4j project
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue