/*
* Copyright(c) 2005 Center for E-Commerce Infrastructure Development, The
* University of Hong Kong (HKU). All Rights Reserved.
*
* This software is licensed under the Apache License Version 2.0 [1]
*
* [1] http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package hk.hku.cecid.piazza.corvus.core.main.admin.listener;
import hk.hku.cecid.piazza.commons.Sys;
import hk.hku.cecid.piazza.commons.module.Module;
import hk.hku.cecid.piazza.commons.module.ModuleGroup;
import hk.hku.cecid.piazza.commons.util.PropertyTree;
import hk.hku.cecid.piazza.corvus.admin.listener.AdminPageletAdaptor;
import java.util.Collection;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.xml.transform.Source;
/**
* ModuleInfoPageletAdaptor is an admin pagelet adaptor which provides an admin
* function of the system modules.
*
* @author Hugo Y. K. Lam
*
*/
public class ModuleInfoPageletAdaptor extends AdminPageletAdaptor {
/**
* Generates the transformation source of the system modules.
*
* @see hk.hku.cecid.piazza.corvus.admin.listener.AdminPageletAdaptor#getCenterSource(javax.servlet.http.HttpServletRequest)
*/
protected Source getCenterSource(HttpServletRequest request) {
PropertyTree dom = new PropertyTree();
printModuleGroup(dom, Sys.main.getGroup(), "/module-info/module-group/");
printModuleGroups(dom, Sys.main.getGroup(), "/module-info/all-module-groups/", 1);
return dom.getSource();
}
private void printModuleGroup(PropertyTree dom, ModuleGroup group, String level) {
dom.setProperty(level+"name", group.getName());
dom.setProperty(level+"subgroups", String.valueOf(group.getChildren().size()));
dom.setProperty(level+"sysmodule", group.getSystemModule()==null? "No system module":group.getSystemModule().getName());
Iterator modules = group.getModules().iterator();
for (int i=1; modules.hasNext(); i++) {
String prefix = level + "module["+i+"]/";
Module module = (Module)modules.next();
dom.setProperty(prefix+"name", module.getName());
dom.setProperty(prefix+"version", module.getVersion());
if(module.getBuildID() != null) {
dom.setProperty(prefix+"buildID", module.getBuildID());
} else {
dom.setProperty(prefix+"buildID", Sys.main.getBuildID());
}
dom.setProperty(prefix+"components", String.valueOf(module.getComponentCount()));
dom.setProperty(prefix+"descriptor", module.getDescriptor().toString());
}
}
private void printModuleGroups(PropertyTree dom, ModuleGroup group, String level, int position) {
level += "module-group" + (position>1? "["+position+"]/":"/");
Collection groups = group.getChildren();
dom.setProperty(level+"name", group.getName());
dom.setProperty(level+"sysmodule", group.getSystemModule()==null? "No system module":group.getSystemModule().getName());
Iterator subgroups = groups.iterator();
for (int i=1; subgroups.hasNext(); i++) {
printModuleGroups(dom, (ModuleGroup) subgroups.next(), level, i);
}
}
}