⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 querybuilder.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 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 + -