Implemented page and daemon plugins and some refactorings
This commit is contained in:
parent
cddec2cb91
commit
3b71021422
3 changed files with 53 additions and 36 deletions
|
|
@ -29,7 +29,7 @@ public class ControllerManager implements HalSensorReportListener,
|
||||||
|
|
||||||
|
|
||||||
/** All isAvailable sensor plugins **/
|
/** All isAvailable sensor plugins **/
|
||||||
private List<Class<?>> availableSensors = new ArrayList<>();
|
private List<Class<? extends HalSensorData>> availableSensors = new ArrayList<>();
|
||||||
/** List of all registered sensors **/
|
/** List of all registered sensors **/
|
||||||
private List<Sensor> registeredSensors = new ArrayList<>();
|
private List<Sensor> registeredSensors = new ArrayList<>();
|
||||||
/** List of auto detected sensors **/
|
/** List of auto detected sensors **/
|
||||||
|
|
@ -39,7 +39,7 @@ public class ControllerManager implements HalSensorReportListener,
|
||||||
|
|
||||||
|
|
||||||
/** All isAvailable event plugins **/
|
/** All isAvailable event plugins **/
|
||||||
private List<Class<?>> availableEvents = new ArrayList<>();
|
private List<Class<? extends HalEventData>> availableEvents = new ArrayList<>();
|
||||||
/** List of all registered events **/
|
/** List of all registered events **/
|
||||||
private List<Event> registeredEvents = new ArrayList<>();
|
private List<Event> registeredEvents = new ArrayList<>();
|
||||||
/** List of auto detected events **/
|
/** List of auto detected events **/
|
||||||
|
|
@ -91,7 +91,7 @@ public class ControllerManager implements HalSensorReportListener,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Class<?>> getAvailableSensors(){
|
public List<Class<? extends HalSensorData>> getAvailableSensors(){
|
||||||
return availableSensors;
|
return availableSensors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -177,7 +177,7 @@ public class ControllerManager implements HalSensorReportListener,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Class<?>> getAvailableEvents(){
|
public List<Class<? extends HalEventData>> getAvailableEvents(){
|
||||||
return availableEvents;
|
return availableEvents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -336,27 +336,25 @@ public class ControllerManager implements HalSensorReportListener,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void initialize(){
|
public static void initialize(PluginManager pluginManager){
|
||||||
ControllerManager manager = new ControllerManager();
|
ControllerManager manager = new ControllerManager();
|
||||||
PluginManager pluginManager = new PluginManager("./");
|
|
||||||
Iterator<PluginData> it = pluginManager.iterator();
|
|
||||||
while (it.hasNext()){
|
|
||||||
PluginData plugin = it.next();
|
|
||||||
Iterator<Class<?>> pluginIt = plugin.getClassIterator(HalSensorData.class);
|
|
||||||
while (pluginIt.hasNext()){
|
|
||||||
manager.availableSensors.add(pluginIt.next());
|
|
||||||
}
|
|
||||||
|
|
||||||
pluginIt = plugin.getClassIterator(HalEventData.class);
|
for (Iterator<Class<? extends HalSensorData>> it=pluginManager.getClassIterator(HalSensorData.class);
|
||||||
while (pluginIt.hasNext()){
|
it.hasNext(); ){
|
||||||
manager.availableEvents.add(pluginIt.next());
|
manager.availableSensors.add(it.next());
|
||||||
}
|
|
||||||
|
|
||||||
pluginIt = plugin.getClassIterator(HalAutoScannableController.class);
|
|
||||||
while (pluginIt.hasNext()){
|
|
||||||
manager.getControllerInstance(pluginIt.next()); // Instantiate controller
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (Iterator<Class<? extends HalEventData>> it=pluginManager.getClassIterator(HalEventData.class);
|
||||||
|
it.hasNext(); ){
|
||||||
|
manager.availableEvents.add(it.next());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Iterator<Class<? extends HalAutoScannableController>> it=
|
||||||
|
pluginManager.getClassIterator(HalAutoScannableController.class);
|
||||||
|
it.hasNext(); ){
|
||||||
|
manager.getControllerInstance(it.next()); // Instantiate controller
|
||||||
|
}
|
||||||
|
|
||||||
instance = manager;
|
instance = manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,9 @@ import zutil.log.LogUtil;
|
||||||
import zutil.net.http.HttpServer;
|
import zutil.net.http.HttpServer;
|
||||||
import zutil.net.http.page.HttpFilePage;
|
import zutil.net.http.page.HttpFilePage;
|
||||||
import zutil.net.http.page.HttpRedirectPage;
|
import zutil.net.http.page.HttpRedirectPage;
|
||||||
|
import zutil.plugin.PluginManager;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
|
||||||
|
|
@ -25,8 +27,8 @@ import java.util.concurrent.ScheduledExecutorService;
|
||||||
*/
|
*/
|
||||||
public class HalServer {
|
public class HalServer {
|
||||||
|
|
||||||
private static HalDaemon[] daemons;
|
private static List<HalDaemon> daemons;
|
||||||
private static HalHttpPage[] pages;
|
private static List<HalHttpPage> pages;
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
|
|
@ -34,8 +36,9 @@ public class HalServer {
|
||||||
LogUtil.readConfiguration("logging.properties");
|
LogUtil.readConfiguration("logging.properties");
|
||||||
|
|
||||||
// init Managers
|
// init Managers
|
||||||
|
PluginManager pluginManager = new PluginManager("./");
|
||||||
HalContext.initialize();
|
HalContext.initialize();
|
||||||
ControllerManager.initialize();
|
ControllerManager.initialize(pluginManager);
|
||||||
HalAlertManager.initialize();
|
HalAlertManager.initialize();
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -52,13 +55,15 @@ public class HalServer {
|
||||||
|
|
||||||
|
|
||||||
// init daemons
|
// init daemons
|
||||||
daemons = new HalDaemon[]{
|
daemons = new ArrayList<>();
|
||||||
|
daemons.addAll(Arrays.asList(new HalDaemon[]{
|
||||||
new SensorDataAggregatorDaemon(),
|
new SensorDataAggregatorDaemon(),
|
||||||
new SensorDataCleanupDaemon(),
|
new SensorDataCleanupDaemon(),
|
||||||
|
}));
|
||||||
new PCDataSynchronizationDaemon(),
|
for (Iterator<HalDaemon> it=pluginManager.getObjectIterator(HalDaemon.class);
|
||||||
new PCDataSynchronizationClient(),
|
it.hasNext(); ){
|
||||||
};
|
daemons.add(it.next());
|
||||||
|
}
|
||||||
// We set only one thread for easier troubleshooting
|
// We set only one thread for easier troubleshooting
|
||||||
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
|
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
|
||||||
for(HalDaemon daemon : daemons){
|
for(HalDaemon daemon : daemons){
|
||||||
|
|
@ -69,20 +74,23 @@ public class HalServer {
|
||||||
// init http server
|
// init http server
|
||||||
HalHttpPage.getRootNav().createSubNav("Sensors");
|
HalHttpPage.getRootNav().createSubNav("Sensors");
|
||||||
HalHttpPage.getRootNav().createSubNav("Events").setWeight(100);
|
HalHttpPage.getRootNav().createSubNav("Events").setWeight(100);
|
||||||
pages = new HalHttpPage[]{
|
pages = new ArrayList<>();
|
||||||
|
pages.addAll(Arrays.asList(new HalHttpPage[]{
|
||||||
new SensorOverviewHttpPage(),
|
new SensorOverviewHttpPage(),
|
||||||
new SensorConfigHttpPage(),
|
new SensorConfigHttpPage(),
|
||||||
|
|
||||||
new PCOverviewHttpPage(),
|
|
||||||
new PCHeatMapHttpPage(),
|
|
||||||
|
|
||||||
new EventOverviewHttpPage(),
|
new EventOverviewHttpPage(),
|
||||||
new EventConfigHttpPage(),
|
new EventConfigHttpPage(),
|
||||||
new UserConfigHttpPage(),
|
new UserConfigHttpPage(),
|
||||||
};
|
}));
|
||||||
|
for (Iterator<HalHttpPage> it=pluginManager.getObjectIterator(HalHttpPage.class);
|
||||||
|
it.hasNext(); ){
|
||||||
|
pages.add(it.next());
|
||||||
|
}
|
||||||
|
|
||||||
HttpServer http = new HttpServer(HalContext.getIntegerProperty("http_port"));
|
HttpServer http = new HttpServer(HalContext.getIntegerProperty("http_port"));
|
||||||
http.setDefaultPage(new HttpFilePage(FileUtil.find("resource/web/")));
|
http.setDefaultPage(new HttpFilePage(FileUtil.find("resource/web/")));
|
||||||
http.setPage("/", new HttpRedirectPage("/"+pages[0].getId()));
|
http.setPage("/", new HttpRedirectPage("/"+pages.get(0).getId()));
|
||||||
http.setPage(HalAlertManager.getInstance().getUrl(), HalAlertManager.getInstance());
|
http.setPage(HalAlertManager.getInstance().getUrl(), HalAlertManager.getInstance());
|
||||||
for(HalHttpPage page : pages){
|
for(HalHttpPage page : pages){
|
||||||
http.setPage(page.getId(), page);
|
http.setPage(page.getId(), page);
|
||||||
|
|
|
||||||
11
src/se/hal/plugin/powerchallenge/plugin.json
Executable file
11
src/se/hal/plugin/powerchallenge/plugin.json
Executable file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"version": 1.0,
|
||||||
|
"name": "Power;Challenge",
|
||||||
|
"interfaces": [
|
||||||
|
{"se.hal.intf.HalHttpPage": "se.hal.page.PCOverviewHttpPage"},
|
||||||
|
{"se.hal.intf.HalHttpPage": "se.hal.page.PCHeatMapHttpPage"},
|
||||||
|
|
||||||
|
{"se.hal.intf.HalDaemon": "se.hal.deamon.PCDataSynchronizationClient"},
|
||||||
|
{"se.hal.intf.HalDaemon": "se.hal.deamon.PCDataSynchronizationDaemon"}
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue