?? myagscustomcriteriahandler.java
字號:
/*
* Copyright (c) 2008 ESRI
*
* All rights reserved under the copyright laws of the United States
* and applicable international laws, treaties, and conventions.
*
* You may freely redistribute and use this sample code, with or
* without modification, provided you include the original copyright
* notice and use restrictions.
*
* See use restrictions at <install>/ArcGIS/java/samples/userestrictions.
*/
package com.esri.adf.sample.criteria;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import com.esri.adf.web.ags.data.query.AGSQueryFunctionality;
import com.esri.adf.web.ags.data.query.AGSTextCriteriaHandler;
import com.esri.adf.web.data.WebLayerInfo;
import com.esri.adf.web.data.query.LayerDefinition;
import com.esri.adf.web.data.query.QueryCriteria;
import com.esri.adf.web.data.query.QueryCriteriaHandler;
import com.esri.adf.web.data.query.QueryFunctionality;
import com.esri.adf.web.data.query.QueryResult;
import com.esri.adf.web.data.query.TextCriteria;
import com.esri.adf.web.data.query.WebQuery;
/*
* Handler class that implements the custom Query criteria.
*/
public class MyAGSCustomCriteriaHandler implements QueryCriteriaHandler, Serializable {
private static final long serialVersionUID = 1L;
/*
* Handles a query based on a TextCriteriaHandler and combines the QueryResult with the results obtained from a SQL
* query on an RDBMS. Apache Derby is used in this case. The properties from the SQL query on derby tables is combined
* with the QueryResult of a TextCriteria query.
*/
public List<QueryResult> handleCriteria(QueryCriteria criteria, List<? extends WebLayerInfo> layers, WebQuery query,
QueryFunctionality queryFunc) {
try {
if (criteria == null || layers == null || query == null || queryFunc == null) {
return Collections.emptyList();
}
if (!(queryFunc instanceof AGSQueryFunctionality)) {
return Collections.emptyList();
}
if (!(criteria instanceof MyCustomCriteria)) {
return Collections.emptyList();
}
if (criteria.getMaxRecordCount() == 0) {
return Collections.emptyList();
}
AGSTextCriteriaHandler handler = new AGSTextCriteriaHandler();
TextCriteria textCriteria = new TextCriteria();
textCriteria.setSearchText("California");
List<String> searchFields = new ArrayList<String>();
searchFields.add("STATE_NAME");
List<String> returnFields = new ArrayList<String>();
returnFields.add("STATE_NAME");
returnFields.add("STATE_ABBR");
LayerDefinition lyrDef1 = new LayerDefinition();
lyrDef1.setResourceId("myCustomCriteriaResource");
lyrDef1.setLayerId(2);
lyrDef1.setDisplayFieldName("STATE_NAME");
lyrDef1.setSearchFields(searchFields);
lyrDef1.setReturnFields(returnFields);
lyrDef1.setMaxRecordCount(3);
lyrDef1.setResultTemplate(LayerDefinition.DEFAULT_TEMPLATE);
lyrDef1.setCalloutTemplate(LayerDefinition.DEFAULT_TEMPLATE);
List<LayerDefinition> lyrDefs = new ArrayList<LayerDefinition>(1);
lyrDefs.add(lyrDef1);
textCriteria.setLayerDefinitions(lyrDefs);
List<QueryResult> results = handler.handleCriteria(textCriteria, layers, query, queryFunc);
// Read from the DataBase
Class.forName("org.apache.derby.jdbc.ClientDriver"); // Please change the driver here.
//Change the connection string below to match your connection string.
Connection conn = DriverManager.getConnection("jdbc:derby://localhost:1088/MyDB;");
Statement statement = conn.createStatement();
ResultSet rset = statement.executeQuery("select * from US where name = 'California'");
Map<String, Object> details = null;
while (rset.next()) {
int pop2008 = rset.getInt(2);
int ageUnder5 = rset.getInt(3);
for (QueryResult result : results) {
if (result == null) {
continue;
}
details = result.getDetails();
details.put("Pop2008", Integer.valueOf(pop2008));
details.put("Age_Under_5", new Integer(ageUnder5));
result.getLayerDefinition().getSearchFields().add("Pop2008");
result.getLayerDefinition().getSearchFields().add("Age_Under_5");
}
}
conn.close();
statement.close();
return results;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -