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 **/
private List<Class<?>> availableSensors = new ArrayList<>();
private List<Class<? extends HalSensorData>> availableSensors = new ArrayList<>();
/** List of all registered sensors **/
private List<Sensor> registeredSensors = new ArrayList<>();
/** List of auto detected sensors **/
@ -39,7 +39,7 @@ public class ControllerManager implements HalSensorReportListener,
/** All isAvailable event plugins **/
private List<Class<?>> availableEvents = new ArrayList<>();
private List<Class<? extends HalEventData>> availableEvents = new ArrayList<>();
/** List of all registered events **/
private List<Event> registeredEvents = new ArrayList<>();
/** 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;
}
@ -177,7 +177,7 @@ public class ControllerManager implements HalSensorReportListener,
}
}
public List<Class<?>> getAvailableEvents(){
public List<Class<? extends HalEventData>> getAvailableEvents(){
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();
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);
while (pluginIt.hasNext()){
manager.availableEvents.add(pluginIt.next());
}
pluginIt = plugin.getClassIterator(HalAutoScannableController.class);
while (pluginIt.hasNext()){
manager.getControllerInstance(pluginIt.next()); // Instantiate controller
}
for (Iterator<Class<? extends HalSensorData>> it=pluginManager.getClassIterator(HalSensorData.class);
it.hasNext(); ){
manager.availableSensors.add(it.next());
}
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;
}

View file

@ -16,7 +16,9 @@ import zutil.log.LogUtil;
import zutil.net.http.HttpServer;
import zutil.net.http.page.HttpFilePage;
import zutil.net.http.page.HttpRedirectPage;
import zutil.plugin.PluginManager;
import java.util.*;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@ -25,8 +27,8 @@ import java.util.concurrent.ScheduledExecutorService;
*/
public class HalServer {
private static HalDaemon[] daemons;
private static HalHttpPage[] pages;
private static List<HalDaemon> daemons;
private static List<HalHttpPage> pages;
public static void main(String[] args) throws Exception {
@ -34,8 +36,9 @@ public class HalServer {
LogUtil.readConfiguration("logging.properties");
// init Managers
PluginManager pluginManager = new PluginManager("./");
HalContext.initialize();
ControllerManager.initialize();
ControllerManager.initialize(pluginManager);
HalAlertManager.initialize();
@ -52,13 +55,15 @@ public class HalServer {
// init daemons
daemons = new HalDaemon[]{
daemons = new ArrayList<>();
daemons.addAll(Arrays.asList(new HalDaemon[]{
new SensorDataAggregatorDaemon(),
new SensorDataCleanupDaemon(),
new PCDataSynchronizationDaemon(),
new PCDataSynchronizationClient(),
};
}));
for (Iterator<HalDaemon> it=pluginManager.getObjectIterator(HalDaemon.class);
it.hasNext(); ){
daemons.add(it.next());
}
// We set only one thread for easier troubleshooting
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
for(HalDaemon daemon : daemons){
@ -69,20 +74,23 @@ public class HalServer {
// init http server
HalHttpPage.getRootNav().createSubNav("Sensors");
HalHttpPage.getRootNav().createSubNav("Events").setWeight(100);
pages = new HalHttpPage[]{
pages = new ArrayList<>();
pages.addAll(Arrays.asList(new HalHttpPage[]{
new SensorOverviewHttpPage(),
new SensorConfigHttpPage(),
new PCOverviewHttpPage(),
new PCHeatMapHttpPage(),
new EventOverviewHttpPage(),
new EventConfigHttpPage(),
new UserConfigHttpPage(),
};
}));
for (Iterator<HalHttpPage> it=pluginManager.getObjectIterator(HalHttpPage.class);
it.hasNext(); ){
pages.add(it.next());
}
HttpServer http = new HttpServer(HalContext.getIntegerProperty("http_port"));
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());
for(HalHttpPage page : pages){
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"}
]
}