/* * Copyright 2008 biaoping.yin * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.frameworkset.spi.monitor; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.frameworkset.persitent.util.SQLUtil; import org.frameworkset.spi.BaseApplicationContext; import org.frameworkset.spi.assemble.LinkConfigFile; import org.frameworkset.spi.assemble.Pro; import org.frameworkset.spi.assemble.ProviderManagerInfo; import org.frameworkset.web.servlet.context.WebApplicationContext; import com.frameworkset.common.tag.tree.COMTree; import com.frameworkset.common.tag.tree.itf.ITreeNode; import com.frameworkset.util.StringUtil; /** * * * <p>Title: SPITree.java</p> * * <p>Description: SPI监控树</p> * * <p>Copyright: Copyright (c) 2007</p> * * <p>bboss workgroup</p> * @Date Sep 8, 2008 3:18:50 PM * @author biaoping.yin * @version 1.0 */ public class SPITree extends COMTree { static final List<String> rootfiles = BaseApplicationContext.getRootFiles(); static boolean useSQLFile = true; // static final List traceFiles = ServiceProviderManager.getInstance().getTraceFiles(); public boolean hasSon(ITreeNode father) { String id = father.getId(); String type = father.getType(); String path = father.getPath(); if(father.isRoot()) { return useSQLFile || (rootfiles != null && rootfiles.size() > 0); // return traceFiles != null && traceFiles.size() > 0; } else if(type.equals("applicationmodule")) { BaseApplicationContext context = null; context = BaseApplicationContext.getBaseApplicationContext(path); // if(!path.equals(BaseApplicationContext.mvccontainer_identifier)) // context = BaseApplicationContext.getBaseApplicationContext(path); // else // context = BaseApplicationContext.getBaseApplicationContext(path,BaseApplicationContext.container_type_mvc); if(context == null) return false; return context.getTraceFiles() != null && context.getTraceFiles().size() > 0; } else if(type.equals("configfile")) { String applicationid = path; BaseApplicationContext context = BaseApplicationContext.getBaseApplicationContext(applicationid); LinkConfigFile lnk = context.getLinkConfigFile(id); boolean ret = lnk != null && (lnk.hasSubLinks() || lnk.hasPros() || lnk.hasMGRService()); // if(ret) // return ret; // ret = lnk.hasMGRService(); return ret; } else if(type.equals("sqlapplicationmodule")) { BaseApplicationContext context = SQLUtil.getInstance(path).getSqlcontext(); if(context == null) return false; return context.getTraceFiles() != null && context.getTraceFiles().size() > 0; } else if(type.equals("sqlconfigfile")) { String applicationid = path; BaseApplicationContext context = SQLUtil.getInstance(applicationid).getSqlcontext(); LinkConfigFile lnk = context.getLinkConfigFile(id); boolean ret = lnk != null && (lnk.hasSubLinks() || lnk.hasPros() || lnk.hasMGRService()); // if(ret) // return ret; // ret = lnk.hasMGRService(); return ret; } else { return false; } } public boolean setSon(ITreeNode father, int curLevel) { String id = father.getId(); String type = father.getType(); String path = father.getPath(); List traceFiles = null; BaseApplicationContext context = null; boolean isroot = father.isRoot(); if(isroot) { // traceFiles = ServiceProviderManager.getInstance().getTraceFiles(); traceFiles = rootfiles; } else if(type.equals("applicationmodule")) { context = BaseApplicationContext.getBaseApplicationContext(path); if(context == null) return true; traceFiles = context.getTraceFiles(); } else if(type.equals("configfile")) { String applicationid = path; context = BaseApplicationContext.getBaseApplicationContext(applicationid); LinkConfigFile lnk = context.getLinkConfigFile(id); if(lnk != null) { traceFiles = context.getLinkConfigFile(id).getLinkConfigFiles(); } } else if(type.equals("sqlapplicationmodule")) { context = SQLUtil.getInstance(path).getSqlcontext(); // context = BaseApplicationContext.getBaseApplicationContext(path); if(context == null) return true; traceFiles = context.getTraceFiles(); } else if(type.equals("sqlconfigfile")) { String applicationid = path; // context = BaseApplicationContext.getBaseApplicationContext(applicationid); context = SQLUtil.getInstance(applicationid).getSqlcontext(); LinkConfigFile lnk = context.getLinkConfigFile(id); if(lnk != null) { traceFiles = context.getLinkConfigFile(id).getLinkConfigFiles(); } } String foldertype = isroot?"applicationmodule":"configfile"; if(isroot) { for(int i = 0; rootfiles != null && i < rootfiles.size(); i ++ ) { { Map params = new HashMap(); String uuid = rootfiles.get(i); BaseApplicationContext context_root = BaseApplicationContext.getBaseApplicationContext(uuid); if(context_root instanceof WebApplicationContext) { uuid = BaseApplicationContext.mvccontainer_identifier; path = uuid; } else { path = rootfiles.get(i); } uuid = "root:" + uuid; // params.put("nodeLink",StringUtil.getRealPath(request , "/monitor/configfileDetail.jsp")); this.addNode(father, uuid, uuid, foldertype, false, curLevel, "", (String)null, (String)null, path, params); } } List<String> sqlfiles = SQLUtil.getSQLFiles(); foldertype = isroot?"sqlapplicationmodule":"sqlconfigfile"; for(int i = 0; sqlfiles != null && i < sqlfiles.size(); i ++ ) { { Map params = new HashMap(); String uuid = sqlfiles.get(i); path = sqlfiles.get(i); uuid = "sql:" + uuid; params.put("nodeLink",StringUtil.getRealPath(request , "/monitor/spi/sqlconfigfileDetail.jsp")); this.addNode(father, uuid, uuid, foldertype, true, curLevel, "", (String)null, (String)null, path, params); } } return true; } if(type.equals("sqlapplicationmodule") || type.equals("sqlconfigfile")) foldertype = "sqlconfigfile"; for(int i = 0; traceFiles != null && i < traceFiles.size(); i ++ ) { LinkConfigFile file = (LinkConfigFile)traceFiles.get(i); { LinkConfigFile lnk = (LinkConfigFile)traceFiles.get(i); Map params = new HashMap(); params.put("nodeLink",StringUtil.getRealPath(request , "/monitor/configfileDetail.jsp")); this.addNode(father, lnk.getIdentity(), lnk.getConfigFile(), foldertype, true, curLevel, "", (String)null, (String)null, path, params); } } if(type.equals("configfile") || type.equals("sqlconfigfile")) { LinkConfigFile lnk = context.getLinkConfigFile(id); Map services = lnk.getMgrServices(); Map params = new HashMap(); params.put("nodeLink",StringUtil.getRealPath(request ,type.equals("sqlconfigfile")?"/monitor/spi/sqlconfigfileDetail.js": "/monitor/managerserviceDetail.jsp")); if(services != null && services.size() > 0) { Iterator its = services.values().iterator(); while(its.hasNext()) { ProviderManagerInfo spi = (ProviderManagerInfo)its.next(); this.addNode(father, spi.getId(), spi.getId(), "spiservice", true, curLevel, "", (String)null, (String)null, path, params); } } Map pros = lnk.getProperties(); if(pros != null && pros.size() > 0) { Iterator its = pros.values().iterator(); while(its.hasNext()) { Pro pro = (Pro)its.next(); String type_ = "property"; Map pparams = new HashMap(); pparams.put("nodeLink",StringUtil.getRealPath(request , "/monitor/spi/proDetail.jsp")); if(pro.isBean()) { type_ = "bean"; pparams.put("nodeLink",StringUtil.getRealPath(request , "/monitor/spi/beanDetail.jsp")); } else if(pro.isRefereced()) { type_ = "ref"; pparams.put("nodeLink",StringUtil.getRealPath(request , "/monitor/spi/refDetail.jsp")); } this.addNode(father, pro.getName() + "", pro.getName() + "", type_, true, curLevel, "", (String)null, (String)null, path, pparams); } } } return true; } }