📄 querybuilder.java
字号:
package com.esri.solutions.jitk.web.tasks.query.querybuilder;
import java.util.ArrayList;
import java.util.List;
import com.esri.adf.web.ags.data.AGSMapResource;
import com.esri.adf.web.aims.data.AIMSMapResource;
import com.esri.adf.web.data.WebLayerInfo;
import com.esri.adf.web.data.query.IdentifyCriteria;
import com.esri.adf.web.data.query.PredefinedQueryCriteria;
import com.esri.adf.web.data.query.QueryResult;
import com.esri.adf.web.data.query.WebQuery;
import com.esri.solutions.jitk.web.wfs.data.WFSMapResource;
/**
* Query Builder Support Class.
*/
public class QueryBuilder{
private WebQuery webQuery = null;
public QueryBuilder(WebQuery webQuery){
this.webQuery = webQuery;
}
public List<QueryResult> doQuery(QueryBuilderCriteria qbc, List<WebLayerInfo> webLayerInfoList, Object resource) throws Exception{
List<QueryResult> searchResults = new ArrayList<QueryResult>();
if (qbc == null) return searchResults;
if (webLayerInfoList == null || webLayerInfoList.size() == 0) return searchResults;
if (this.webQuery == null) return searchResults;
if (qbc.getWhereClause() == null && qbc.getWebGeometry() != null){
IdentifyCriteria sqc = new IdentifyCriteria(qbc.getWebGeometry());
sqc.setMaxRecordCount(qbc.getMaxRecordCount());
return this.webQuery.query(sqc, webLayerInfoList);
}
if (qbc.getWebGeometry() == null){
PredefinedQueryCriteria pqc = new PredefinedQueryCriteria();
String whereClause = qbc.getWhereClause();
if (whereClause == null || whereClause.trim().length() == 0) {
//WFS Service OGC Filters can not handle a WHERE clause with 2 operands
//that are both literals
if (isListHasWFS(webLayerInfoList)) {
whereClause = "";
} else {
whereClause = "1 = 1";
}
}
pqc.setFetchResultDetails(true);
pqc.setWhereClause(whereClause);
pqc.setMaxRecordCount(qbc.getMaxRecordCount());
return this.webQuery.query(pqc, webLayerInfoList);
}
// WebADF doesn't have the api to do both, use the native source to speed up the query process...
if (resource instanceof AIMSMapResource){
return QueryBuilderTaskAimsUtil.doQuery(resource, this.webQuery, qbc, (WebLayerInfo)webLayerInfoList.get(0));
}
if (resource instanceof AGSMapResource){
return QueryBuilderTaskAgsUtil.doQuery(resource, this.webQuery, qbc, (WebLayerInfo)webLayerInfoList.get(0));
}
if (resource instanceof WFSMapResource) {
return QueryBuilderTaskWfsUtil.doQuery(resource, this.webQuery, qbc, (WebLayerInfo)webLayerInfoList.get(0));
}
return null;
}
protected boolean isListHasWFS(List<WebLayerInfo> webLayerInfoList) {
for (WebLayerInfo layer : webLayerInfoList) {
if (layer.getResource() instanceof WFSMapResource) {
return true;
}
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -