Implemented page and daemon plugins and some refactorings

This commit is contained in:
Ziver Koc 2016-06-19 17:53:42 +02:00
parent cddec2cb91
commit 3b71021422
3 changed files with 53 additions and 36 deletions

View file

@ -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;
} }

View file

@ -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);

View 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"}
]
}