hal/src/se/koc/hal/page/PCConfigureHttpPage.java
Ziver Koc a63f34641f Enabled ControllerManager and med startup more robust
Former-commit-id: f5aade38ed8bd352c12d00046ce38c99e6147216
2015-12-31 00:27:42 +01:00

125 lines
4.5 KiB
Java
Executable file

package se.koc.hal.page;
import se.koc.hal.ControllerManager;
import se.koc.hal.HalContext;
import se.koc.hal.intf.HalHttpPage;
import se.koc.hal.struct.Sensor;
import se.koc.hal.struct.User;
import zutil.db.DBConnection;
import zutil.io.file.FileUtil;
import zutil.parser.Templator;
import zutil.ui.Configurator;
import java.lang.reflect.Array;
import java.util.Map;
public class PCConfigureHttpPage extends HalHttpPage {
private Configurator[] sensorConfigurations;
public PCConfigureHttpPage() {
super("Configuration", "config");
sensorConfigurations = new Configurator[
ControllerManager.getInstance().getAvailableSensors().size()];
int i=0;
for(Class c : ControllerManager.getInstance().getAvailableSensors()){
sensorConfigurations[i++] = new Configurator(c);
}
}
@Override
public Templator httpRespond(
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request)
throws Exception{
DBConnection db = HalContext.getDB();
User localUser = User.getLocalUser(db);
// Save new input
if(request.containsKey("action")){
String action = request.get("action");
int id = (request.containsKey("id") ? Integer.parseInt(request.get("id")) : -1);
Sensor sensor;
User user;
switch(action) {
// Local User
case "modify_local_user":
localUser.setUserName(request.get("username"));
localUser.setAddress(request.get("address"));
localUser.save(db);
break;
// Local Sensors
case "create_local_sensor":
sensor = new Sensor();
sensor.setName(request.get("name"));
sensor.setType(request.get("type"));
sensor.setConfig(request.get("config"));
sensor.setUser(localUser);
sensor.setSynced(true);
sensor.save(db);
case "modify_local_sensor":
sensor = Sensor.getSensor(db, id);
if(sensor != null){
sensor.setName(request.get("name"));
sensor.setType(request.get("type"));
sensor.setConfig(request.get("config"));
sensor.save(db);
}
break;
case "remove_local_sensor":
sensor = Sensor.getSensor(db, id);
if(sensor != null)
sensor.delete(db);
break;
// External Users
case "create_external_user":
user = new User();
user.setHostname(request.get("hostname"));
user.setPort(Integer.parseInt(request.get("port")));
user.setExternal(true);
user.save(db);
break;
case "modify_external_user":
user = User.getUser(db, id);
if(user != null){
user.setHostname(request.get("hostname"));
user.setPort(Integer.parseInt(request.get("port")));
user.save(db);
}
break;
case "remove_external_user":
user = User.getUser(db, id);
if(user != null)
user.delete(db);
break;
// External Sensors
case "modify_external_sensor":
sensor = Sensor.getSensor(db, id);
if(sensor != null){
sensor.setSynced(Boolean.parseBoolean(request.get("sync")));
sensor.save(db);
}
break;
}
}
// Output
Templator tmpl = new Templator(FileUtil.find("web-resource/configure.tmpl"));
tmpl.set("user", localUser);
tmpl.set("localSensor", Sensor.getLocalSensors(db));
tmpl.set("localSensorConf", sensorConfigurations);
tmpl.set("extUsers", User.getExternalUsers(db));
tmpl.set("extSensor", Sensor.getExternalSensors(db));
return tmpl;
}
}