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 **/
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
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