package com.buglabs.app.bugdash2.controller.system;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.service.cm.Configuration;
import com.buglabs.app.bugdash2.AdminConfigManager;
import com.buglabs.app.bugdash2.LogManager;
import com.buglabs.app.bugdash2.controller.ApplicationController;
import com.buglabs.osgi.sewing.pub.util.RequestParameters;
import freemarker.template.SimpleHash;
import freemarker.template.SimpleList;
import freemarker.template.TemplateModelRoot;
public class ConfigurationController extends ApplicationController {
public ConfigurationController() {
}
public String getTemplateName() {
return "system_manage_configuration.fml";
}
public TemplateModelRoot get(RequestParameters params, HttpServletRequest req, HttpServletResponse resp) {
Configuration[] configs = null;
try {
configs = AdminConfigManager.getConfigurations();
} catch (IOException e) {
e.printStackTrace();
} catch (InvalidSyntaxException e) {
e.printStackTrace();
}
SimpleHash root = new SimpleHash();
SimpleList config_list = new SimpleList();
SimpleHash item;
String pid;
if (configs != null) {
for (int i = 0; i < configs.length; i++) {
pid = configs[i].getPid();
item = new SimpleHash();
item.put("pid", pid);
item.put("pid_cleaned", pid.replace('.', '_'));
config_list.add(item);
}
}
root.put("config_list", config_list);
root.put("created", params.get("created"));
return root;
}
public TemplateModelRoot post(RequestParameters params, HttpServletRequest req, HttpServletResponse resp) {
String task = params.get("task");
if (task.equals("create")) {
String txt_config_pid = params.get("txt_config_pid");
try {
AdminConfigManager.createConfig(txt_config_pid);
params.put("created", txt_config_pid);
} catch (IOException e) {
LogManager.logWarning(e.getMessage());
}
} else if (task.equals("update")) {
// not implemented
} else if (task.equals("delete")) {
String txt_remove_pid = params.get("txt_remove_pid");
try {
AdminConfigManager.deleteConfig(txt_remove_pid);
} catch (IOException e) {
LogManager.logWarning(e.getMessage());
}
}
return get(params, req, resp);
}
}