package org.safehaus.penrose.studio.federation; import org.safehaus.penrose.studio.tree.Node; import org.safehaus.penrose.studio.server.Server; import org.safehaus.penrose.studio.PenroseImage; import org.safehaus.penrose.studio.PenroseStudio; import org.safehaus.penrose.studio.action.RefreshAction; import org.safehaus.penrose.partition.PartitionManagerClient; import org.safehaus.penrose.partition.PartitionClient; import org.safehaus.penrose.module.ModuleManagerClient; import org.safehaus.penrose.module.ModuleClient; import org.safehaus.penrose.module.ModuleConfig; import org.safehaus.penrose.federation.Federation; import org.apache.log4j.Logger; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.Action; /** * @author Endi S. Dewata */ public class FederationNode extends Node { Logger log = Logger.getLogger(getClass()); private Server server; public FederationNode(String name, Node parent) throws Exception { super(name, PenroseStudio.getImage(PenroseImage.FOLDER), null, parent); } public void update() throws Exception { PartitionManagerClient partitionManagerClient = server.getClient().getPartitionManagerClient(); log.debug("Partitions:"); for (String partitionName : partitionManagerClient.getPartitionNames()) { log.debug(" - "+partitionName); PartitionClient partitionClient = partitionManagerClient.getPartitionClient(partitionName); ModuleManagerClient moduleManagerClient = partitionClient.getModuleManagerClient(); ModuleClient moduleClient = moduleManagerClient.getModuleClient(Federation.FEDERATION); if (!moduleClient.exists()) continue; ModuleConfig moduleConfig = moduleClient.getModuleConfig(); String moduleClass = moduleConfig.getModuleClass(); //log.debug(" - "+moduleConfig.getName()+" module: "+moduleClass); if (!moduleClass.equals("org.safehaus.penrose.federation.module.FederationModule")) continue; FederationDomainNode node = new FederationDomainNode(partitionName, this); node.setServer(server); node.init(); addChild(node); } } public void expand() throws Exception { if (children == null) update(); } public void refresh() throws Exception { removeChildren(); update(); } public void showMenu(IMenuManager manager) throws Exception { manager.add(new RefreshAction(this)); } public Server getServer() { return server; } public void setServer(Server server) { this.server = server; } public boolean hasChildren() { return true; } }