queryadmin.java
来自「这是一个轻便的j2ee的web应用框架,是一个在多个项目中运用的实际框架,采用s」· Java 代码 · 共 288 行
JAVA
288 行
/*
* Created on 2004-4-1
*
*/
package com.esimple.service.query;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.xml.sax.SAXException;
import java.io.IOException;
import java.util.*;
import com.esimple.framework.util.DataTypeConverter;
import com.esimple.framework.configuration.*;
import com.esimple.service.query.config.*;
import com.esimple.framework.util.StringUtils;
/**
* @author steven
*
*/
public class QueryAdmin {
private HashMap groups = new HashMap();
private HashMap queryConfigs = new HashMap();
protected Log logger = LogFactory.getLog(this.getClass());
private String configFile;//list配置文件,可以多个,通过','分割
private String queryDir;
private ConfigurationReader parser;
public void setConfigFile(String configFile){
this.configFile = configFile;
}
public String getConfigFile(){
return this.configFile ;
}
public void setQueryDir(String queryDir){
this.queryDir = queryDir;
}
public String getQueryDir(){
return this.queryDir ;
}
public QueryGroupConfig getGroup(String groupID){
if( groupID == null ) return null;
if( groups.get(groupID) == null) return null;
return (QueryGroupConfig)groups.get(groupID);
}
public QueryConfig getQuery(String queryID) throws Exception{
if( queryID == null ) return null;
if( queryConfigs.get(queryID) == null){
initQueryConfig(queryID);
}
if( queryConfigs.get(queryID) == null) return null;
return (QueryConfig)queryConfigs.get(queryID);
}
/**
* 初始化通用查询,首先解析查询配置文件,然后再解析每个查询
* @throws Exception
*/
public void init() throws Exception{
parser = new ConfigurationReader();
String[] cfs = StringUtils.split(configFile,",",true,true);
for( int j=0;j<cfs.length;j++){
logger.info("begin init Query config:"+ cfs[j] );
Configuration conf = parser.buildFromFile( cfs[j] );
Configuration[] confGroup= conf.getChildren();
for ( int i = 0 ; i < confGroup.length ; i++ ){
Configuration group = confGroup[i];
String groupID = group.getAttribute( "id" );
String configLabel = group.getAttribute( "label" );
QueryGroupConfig groupConfig = new QueryGroupConfig();
groupConfig.setId( groupID );
groupConfig.setLabel( configLabel );
initCatalog(group,groupConfig);
groups.put(groupID,groupConfig);
}
}//end string[] for
}
private void initCatalog(Configuration groupConf,QueryGroupConfig group) throws Exception{
Configuration[] catalogs = groupConf.getChildren("catalog");
ArrayList list = new ArrayList();
for ( int i = 0 ; i < catalogs.length ; i++ ){
Configuration cataConf = catalogs[i];
String cataID = cataConf.getAttribute( "id" );
String cataLabel = cataConf.getAttribute( "label" );
String role= cataConf.getAttribute( "role" );
CatalogConfig catalog = new CatalogConfig();
catalog.setId( cataID );
catalog.setLabel( cataLabel );
catalog.setRole( role );
initQuery(cataConf,catalog);
list.add(catalog);
}
group.setCatalogList(list ) ;
}
private void initQuery(Configuration group,CatalogConfig catalog) throws Exception{
Configuration[] querys = group.getChildren("query");
ArrayList list = new ArrayList();
for ( int i = 0 ; i < querys.length ; i++ ){
Configuration query = querys[i];
String queryID = query.getAttribute( "id" );
String queryName = query.getValue();
if( queryConfigs.get(queryID) == null ){
initQueryConfig(queryID);
}
catalog.addQueryName(queryID,queryName);
list.add(queryID);
}
catalog.setQueryList(list ) ;
}
private void initQueryConfig(String queryID)
throws SAXException, IOException, ConfigurationException, Exception {
String querConfFile = queryDir + queryID + ".xml";
logger.debug("querConfFile:"+querConfFile);
Configuration queryConf = parser.buildFromFile(querConfFile);
QueryConfig qConfig = new QueryConfig();
String label = queryConf.getAttribute("label");
String pageLength = queryConf.getAttribute("pageLength");
int pageLengthValue= -1;
try{
pageLengthValue=DataTypeConverter.toInt(pageLength);
}catch(Exception e){
pageLengthValue= -1;
}
qConfig.setPageLength (pageLengthValue);
boolean count =false;
try{
String countValue = queryConf.getAttribute("count");
logger.debug("count:"+ countValue);
if( countValue != null && countValue.equals("true") )
count = true;
}catch(Exception e){
count= false;
}
qConfig.setCount(count);
String export;
try{
export = queryConf.getAttribute("export");
}catch(Exception e){
export = "false";
}
qConfig.setExport( export );
String action;
try{
action = queryConf.getAttribute("action");
}catch(Exception e){
action = "doQuery";
}
qConfig.setAction( action );
qConfig.setLabel(label);
qConfig.setId(queryID);
qConfig.setFrom( queryConf.getChild("from").getValue() );
qConfig.setWhere( queryConf.getChild("where").getValue() );
Configuration select = queryConf.getChild("select");
qConfig.setSelectHint( select.getAttribute("before") );
initQueryResult(queryID,select,qConfig);
initQueryCondition(queryID,queryConf.getChild("vars"),qConfig);
//initQueryACL(queryID,queryConf.getChild("rules"),qConfig);
queryConfigs.put(queryID,qConfig);
}
private void initQueryCondition(String queryID,Configuration vars,QueryConfig qConfig) throws Exception{
Configuration[] conds = vars.getChildren("var");
ArrayList results = new ArrayList();
for(int i=0;i<conds.length;i++){
QueryConditionConfig cond = new QueryConditionConfig();
Configuration condConf = conds[i];
cond.setId( condConf.getAttribute("id") );
cond.setLabel( condConf.getAttribute("label") );
String dict;
try{
dict = condConf.getAttribute("dict");
}catch(Exception e){
dict = null;
}
cond.setDict( dict );
String defaultValue;
try{
defaultValue = condConf.getAttribute("default");
}catch(Exception e){
defaultValue = null;
}
cond.setDefaultValue( defaultValue );
String type;
try{
type = condConf.getAttribute("type");
}catch(Exception e){
type = null;
}
cond.setType( type );
results.add(cond);
}
qConfig.setConditions(results);
}
private void initQueryResult(String queryID,Configuration select,QueryConfig qConfig) throws Exception{
Configuration[] columns = select.getChildren("column");
ArrayList results = new ArrayList();
for(int i=0;i<columns.length;i++){
QueryResultConfig result = new QueryResultConfig();
Configuration column = columns[i];
result.setLabel( column.getAttribute("label") );
result.setType( column.getAttribute("type") );
result.setName( column.getValue() );
String alias;
try{
alias = column.getAttribute("alias");
}catch(Exception e){
alias = column.getValue();
}
result.setAlias( alias );
String format;
try{
format = column.getAttribute("format");
}catch(Exception ew){
format = null;
}
result.setFormat( format );
String width;
try{
width = column.getAttribute("width");
}catch(Exception ew){
width = null;
}
result.setWidth( width );
results.add(result);
}
qConfig.setResults(results);
}
private void initQueryACL(String queryID,Configuration rules,QueryConfig qConfig) throws Exception{
Configuration[] ruleConfs = rules.getChildren("rule");
QueryACLConfig acl = new QueryACLConfig();
for(int i=0;i<ruleConfs.length;i++){
Configuration rule = ruleConfs[i];
acl.addRule(rule.getAttribute("role"),rule.getValue());
}
qConfig.setAcl(acl);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?