Changed WANavigation to be modifiable
This commit is contained in:
parent
ea9ed51910
commit
846ed78252
8 changed files with 124 additions and 14 deletions
|
|
@ -26,17 +26,19 @@ import wa.server.page.struct.WAAlert;
|
||||||
import wa.server.page.struct.WANavigation;
|
import wa.server.page.struct.WANavigation;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Ziver on 2015-04-06.
|
* Created by Ziver on 2015-04-06.
|
||||||
*/
|
*/
|
||||||
public class WAContext {
|
public class WAContext {
|
||||||
private WANavigation[] nav;
|
private WANavigation nav;
|
||||||
private ArrayList<WAAlert> alerts;
|
private ArrayList<WAAlert> alerts;
|
||||||
|
|
||||||
|
|
||||||
public WAContext(){
|
public WAContext(){
|
||||||
nav = new WANavigation[]{
|
nav = WANavigation.getRootNav();
|
||||||
|
/*nav = new WANavigation[]{
|
||||||
new WANavigation("Status"),
|
new WANavigation("Status"),
|
||||||
new WANavigation("Services", new WANavigation[]{
|
new WANavigation("Services", new WANavigation[]{
|
||||||
new WANavigation("Apache"),
|
new WANavigation("Apache"),
|
||||||
|
|
@ -45,12 +47,12 @@ public class WAContext {
|
||||||
}),
|
}),
|
||||||
new WANavigation("Configure")
|
new WANavigation("Configure")
|
||||||
};
|
};
|
||||||
alerts = new ArrayList<WAAlert>();
|
alerts = new ArrayList<WAAlert>();*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public WANavigation[] getNavigation(){
|
public List<WANavigation> getNavigation(){
|
||||||
return nav;
|
return nav.getSubNav();
|
||||||
}
|
}
|
||||||
public ArrayList<WAAlert> getAlerts() {
|
public ArrayList<WAAlert> getAlerts() {
|
||||||
return alerts;
|
return alerts;
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ public abstract class AbstractPage implements HttpPage{
|
||||||
tmpl.set("title", "WebAdmin");
|
tmpl.set("title", "WebAdmin");
|
||||||
tmpl.set("top-nav", context.getNavigation());
|
tmpl.set("top-nav", context.getNavigation());
|
||||||
tmpl.set("side-nav-show", true);
|
tmpl.set("side-nav-show", true);
|
||||||
tmpl.set("side-nav", context.getNavigation()[0].getSubNav());
|
tmpl.set("side-nav", context.getNavigation().get(0).getSubNav());
|
||||||
tmpl.set("alerts", context.getAlerts());
|
tmpl.set("alerts", context.getAlerts());
|
||||||
//tmpl.set("footer", null);
|
//tmpl.set("footer", null);
|
||||||
|
|
||||||
|
|
|
||||||
70
src/wa/server/page/ServicesPage.java
Normal file
70
src/wa/server/page/ServicesPage.java
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015 ezivkoc
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package wa.server.page;
|
||||||
|
|
||||||
|
import wa.server.WAContext;
|
||||||
|
import wa.server.page.struct.WANavigation;
|
||||||
|
import wa.server.plugin.WAService;
|
||||||
|
import wa.server.plugin.WAStatus;
|
||||||
|
import zutil.net.http.HttpHeaderParser;
|
||||||
|
import zutil.parser.DataNode;
|
||||||
|
import zutil.parser.Templator;
|
||||||
|
import zutil.plugin.PluginManager;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Ziver on 2015-04-06.
|
||||||
|
*/
|
||||||
|
public class ServicesPage extends AbstractPage{
|
||||||
|
private ArrayList<WAService> plugins;
|
||||||
|
|
||||||
|
public ServicesPage(PluginManager pluginManager){
|
||||||
|
this.plugins = pluginManager.toArray(WAService.class);
|
||||||
|
|
||||||
|
WANavigation nav = new WANavigation("Services");
|
||||||
|
for(WAService plugin : plugins)
|
||||||
|
nav.addSubNav(new WANavigation(plugin.getName()));
|
||||||
|
WANavigation.getRootNav().addSubNav(nav);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Templator htmlResponse(WAContext context,
|
||||||
|
HttpHeaderParser client_info,
|
||||||
|
Map<String, Object> session,
|
||||||
|
Map<String, String> cookie,
|
||||||
|
Map<String, String> request) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DataNode jsonResponse(WAContext context,
|
||||||
|
HttpHeaderParser client_info,
|
||||||
|
Map<String, Object> session,
|
||||||
|
Map<String, String> cookie,
|
||||||
|
Map<String, String> request){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -23,6 +23,7 @@
|
||||||
package wa.server.page;
|
package wa.server.page;
|
||||||
|
|
||||||
import wa.server.WAContext;
|
import wa.server.WAContext;
|
||||||
|
import wa.server.page.struct.WANavigation;
|
||||||
import wa.server.plugin.WAStatus;
|
import wa.server.plugin.WAStatus;
|
||||||
import zutil.net.http.HttpHeaderParser;
|
import zutil.net.http.HttpHeaderParser;
|
||||||
import zutil.parser.DataNode;
|
import zutil.parser.DataNode;
|
||||||
|
|
@ -41,6 +42,11 @@ public class StatusPage extends AbstractPage{
|
||||||
|
|
||||||
public StatusPage(PluginManager pluginManager){
|
public StatusPage(PluginManager pluginManager){
|
||||||
this.plugins = pluginManager.toArray(WAStatus.class);
|
this.plugins = pluginManager.toArray(WAStatus.class);
|
||||||
|
|
||||||
|
WANavigation nav = new WANavigation("Status");
|
||||||
|
for(WAStatus plugin : plugins)
|
||||||
|
nav.addSubNav(new WANavigation(plugin.getName()));
|
||||||
|
WANavigation.getRootNav().addSubNav(nav);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,19 +30,46 @@ import java.util.List;
|
||||||
* Created by Ziver on 2015-04-02.
|
* Created by Ziver on 2015-04-02.
|
||||||
*/
|
*/
|
||||||
public class WANavigation {
|
public class WANavigation {
|
||||||
|
private static WANavigation rootNav;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
private List<WANavigation> sub_nav;
|
private ArrayList<WANavigation> subNavs;
|
||||||
|
|
||||||
|
|
||||||
public WANavigation(String name) {
|
public WANavigation(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
this.subNavs = new ArrayList<>();
|
||||||
}
|
}
|
||||||
public WANavigation(String name, WANavigation[] sub_nav) {
|
public WANavigation(String name, WANavigation[] sub_nav) {
|
||||||
this.name = name;
|
this(name);
|
||||||
this.sub_nav = Arrays.asList(sub_nav);
|
this.subNavs.addAll(Arrays.asList(sub_nav));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getSubNav() {
|
public void addSubNav(WANavigation subNav) {
|
||||||
return sub_nav;
|
this.subNavs.add(subNav);
|
||||||
|
}
|
||||||
|
public List<WANavigation> getSubNav() {
|
||||||
|
return subNavs;
|
||||||
|
}
|
||||||
|
public Object getSubNav(String name) {
|
||||||
|
int index = subNavs.indexOf(name);
|
||||||
|
if(index >= 0)
|
||||||
|
return subNavs.get(index);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean equals(Object o){
|
||||||
|
if(o instanceof String)
|
||||||
|
return this.name.equals(o);
|
||||||
|
return this == o ||
|
||||||
|
(o != null && this.name.equals(((WANavigation)o).name));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static WANavigation getRootNav(){
|
||||||
|
if(rootNav == null)
|
||||||
|
rootNav = new WANavigation("root_nav");
|
||||||
|
return rootNav;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@ public interface WAService {
|
||||||
UNAVAILABLE,
|
UNAVAILABLE,
|
||||||
UNKNOWN
|
UNKNOWN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getName();
|
||||||
public void start();
|
public void start();
|
||||||
public void stop();
|
public void stop();
|
||||||
public WAServiceStatus getStatus();
|
public WAServiceStatus getStatus();
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,11 @@ public class ApacheService implements WAService {
|
||||||
private static OSAbstractionLayer os = OSAbstractionLayer.getInstance();
|
private static OSAbstractionLayer os = OSAbstractionLayer.getInstance();
|
||||||
private static final String PID_FILE = "/var/run/apache2.pid";
|
private static final String PID_FILE = "/var/run/apache2.pid";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Apache2";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start() {
|
public void start() {
|
||||||
os.runCommand("service apache2 start");
|
os.runCommand("service apache2 start");
|
||||||
|
|
|
||||||
|
|
@ -85,9 +85,8 @@ public class HwStatus implements WAStatus {
|
||||||
DataNode procNode = new DataNode(DataType.Map);
|
DataNode procNode = new DataNode(DataType.Map);
|
||||||
|
|
||||||
procNode.set("pid", pid);
|
procNode.set("pid", pid);
|
||||||
|
|
||||||
procNode.set("mem", sizeByteToMB(sigar.getProcMem(pid).getSize()));
|
|
||||||
try {
|
try {
|
||||||
|
procNode.set("mem", sizeByteToMB(sigar.getProcMem(pid).getSize()));
|
||||||
procNode.set("user", sigar.getProcCredName(pid).getUser());
|
procNode.set("user", sigar.getProcCredName(pid).getUser());
|
||||||
procNode.set("cputime", sigar.getProcTime(pid).getTotal() / 1000);
|
procNode.set("cputime", sigar.getProcTime(pid).getTotal() / 1000);
|
||||||
ProcCpu cpu = sigar.getProcCpu(pid);
|
ProcCpu cpu = sigar.getProcCpu(pid);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue