diff --git a/hal-core/resource/resource/web/plugin_config.tmpl b/hal-core/resource/resource/web/plugin_config.tmpl
index 18954e1d..94ddfeca 100644
--- a/hal-core/resource/resource/web/plugin_config.tmpl
+++ b/hal-core/resource/resource/web/plugin_config.tmpl
@@ -10,7 +10,7 @@
Name |
Version |
Description |
- Actions |
+ Enable |
{{#plugins}}
diff --git a/hal-core/src/se/hal/HalServer.java b/hal-core/src/se/hal/HalServer.java
index 4bd4b417..df468abd 100644
--- a/hal-core/src/se/hal/HalServer.java
+++ b/hal-core/src/se/hal/HalServer.java
@@ -18,7 +18,6 @@ import zutil.net.http.page.HttpRedirectPage;
import zutil.plugin.PluginData;
import zutil.plugin.PluginManager;
-import java.io.File;
import java.sql.SQLException;
import java.util.*;
import java.util.concurrent.Executors;
@@ -42,7 +41,7 @@ public class HalServer {
- public static void main(String[] args) throws InterruptedException {
+ public static void main(String[] args) {
try {
// init logging
LogUtil.readConfiguration("logging.properties");
@@ -61,10 +60,10 @@ public class HalServer {
pluginManager = new PluginManager();
// Disable plugins based on settings
- for (PluginData plugin : getPlugins()) {
+ for (PluginData plugin : getAllPlugins()) {
PluginConfig pluginConfig = PluginConfig.getPluginConfig(db, plugin.getName());
- if (pluginConfig != null && !pluginConfig.isEnabled()) {
+ if (pluginConfig != null && !pluginConfig.isEnabled() && !plugin.getName().equals("Hal-Core")) {
logger.info("Disabling plugin '" + plugin.getName() + "'.");
plugin.setEnabled(false);
}
@@ -138,7 +137,10 @@ public class HalServer {
}
- public static void setPluginEnabled(String name, boolean enabled) throws SQLException {
+ public static void enablePlugin(String name, boolean enabled) throws SQLException {
+ if (name.equals("Hal-Core"))
+ throw new IllegalArgumentException("Hal-Core cannot be disabled as it is critical component of Hal.");
+
DBConnection db = HalContext.getDB();
PluginConfig pluginConfig = PluginConfig.getPluginConfig(db, name);
@@ -152,10 +154,14 @@ public class HalServer {
pluginConfig.save(db);
}
- public static List getPlugins() {
+ public static List getEnabledPlugins() {
return pluginManager.toArray();
}
+ public static List getAllPlugins() {
+ return pluginManager.toArrayAll();
+ }
+
public static void registerDaemon(HalDaemon daemon){
daemons.add(daemon);
diff --git a/hal-core/src/se/hal/page/PluginConfigWebPage.java b/hal-core/src/se/hal/page/PluginConfigWebPage.java
index fbe62f1e..1c6fcc3a 100644
--- a/hal-core/src/se/hal/page/PluginConfigWebPage.java
+++ b/hal-core/src/se/hal/page/PluginConfigWebPage.java
@@ -7,14 +7,9 @@ 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.devicedata.SwitchEventData;
-import zutil.ObjectUtil;
-import zutil.db.DBConnection;
import zutil.io.file.FileUtil;
import zutil.parser.Templator;
-import zutil.plugin.PluginManager;
-import java.util.HashMap;
import java.util.Map;
public class PluginConfigWebPage extends HalWebPage {
@@ -35,7 +30,7 @@ public class PluginConfigWebPage extends HalWebPage {
if (request.containsKey("action")) {
String name = request.get("action_id");
- HalServer.setPluginEnabled(name,
+ HalServer.enablePlugin(name,
(request.containsKey("enabled") && "on".equals(request.get("enabled"))));
HalAlertManager.getInstance().addAlert(new HalAlert(
@@ -43,7 +38,7 @@ public class PluginConfigWebPage extends HalWebPage {
}
Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
- tmpl.set("plugins", HalServer.getPlugins());
+ tmpl.set("plugins", HalServer.getAllPlugins());
tmpl.set("controllers", ControllerManager.getInstance().getControllers());
return tmpl;
}
diff --git a/hal-core/src/se/hal/plugin.json b/hal-core/src/se/hal/plugin.json
index fa9f4635..3057eb0c 100644
--- a/hal-core/src/se/hal/plugin.json
+++ b/hal-core/src/se/hal/plugin.json
@@ -1,11 +1,11 @@
{
"version": 1.0,
- "name": "Hal Core",
+ "name": "Hal-Core",
+ "description": "Plugin contains core logic for running Hal.",
"interfaces": [
{"se.hal.intf.HalDaemon": "se.hal.daemon.SensorDataAggregatorDaemon"},
{"se.hal.intf.HalDaemon": "se.hal.daemon.SensorDataCleanupDaemon"},
-
{"se.hal.intf.HalJsonPage": "se.hal.page.MapJsonPage"},
{"se.hal.intf.HalJsonPage": "se.hal.page.SensorJsonPage"},
diff --git a/hal-core/src/se/hal/struct/devicedata/TemperatureSensorData.java b/hal-core/src/se/hal/struct/devicedata/TemperatureSensorData.java
index ec7c5815..60c5a860 100644
--- a/hal-core/src/se/hal/struct/devicedata/TemperatureSensorData.java
+++ b/hal-core/src/se/hal/struct/devicedata/TemperatureSensorData.java
@@ -32,6 +32,6 @@ public class TemperatureSensorData extends HalSensorData {
@Override
public String toString(){
- return temperature+" \u00b0C";
+ return temperature + " C";
}
}