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

📄 mycustomtestbean.java

📁 采用java实现的arcgis server程序
💻 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.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.esri.adf.web.data.WebContext;
import com.esri.adf.web.data.WebContextInitialize;
import com.esri.adf.web.data.WebLayerInfo;
import com.esri.adf.web.data.geometry.WebGeometry;
import com.esri.adf.web.data.geometry.WebPolyline;
import com.esri.adf.web.data.query.IdentifyCriteria;
import com.esri.adf.web.data.query.LayerDefinition;
import com.esri.adf.web.data.query.QueryResult;
import com.esri.adf.web.data.query.TextCriteria;
import com.esri.adf.web.data.query.WebQuery;
import com.esri.adf.web.data.results.ResultDefinition;
import com.esri.adf.web.faces.event.MapEvent;

/*
 * Test bean that runs queries based on different query criterias.
 */
public class MyCustomTestBean implements WebContextInitialize, Serializable {
  private static final long serialVersionUID = 1L;

  private WebContext context = null;

  public void init(WebContext wc) {
    this.context = wc;
  }

  public void destroy() {
  }

  /*
   * Runs query based on the custom query criteria.
   */
  public void myCustomCriteria() {
    try {
      WebQuery webQuery = this.context.getWebQuery();
      int layerIndex = 3;

      MyCustomCriteria criteria = new MyCustomCriteria();

      List<WebLayerInfo> queryAllLayers = webQuery.getQueryLayers();

      List<WebLayerInfo> querySpecficLayer = new ArrayList<WebLayerInfo>(1);
      querySpecficLayer.add(queryAllLayers.get(layerIndex));

      List<QueryResult> results = webQuery.query(criteria, querySpecficLayer);

      ResultDefinition definition = new ResultDefinition();
      definition.setHeader("Custom Criteria : ");
      definition.setDisplayNameMethodName("getName");
      definition.setDetailsMethodName("getDetails");
      Map<String, String> actions = new LinkedHashMap<String, String>();
      actions.put("Zoom", "zoom");
      actions.put("HighLight", "highlight");
      actions.put("Clear Graphic", "clearGraphic");
      definition.setActionMethodNames(actions);
      definition.setRemoveMethodName("clearGraphic");
      this.context.getWebResults().addQueryResults(results, definition);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /*
   * Runs query based on the IdentifyCriteria.
   */
  public void identifyCriteria(MapEvent event) {
    WebQuery webQuery = this.context.getWebQuery();
    int layerIndex = 3;

    WebGeometry geometry = event.getWebGeometry().toMapGeometry(this.context.getWebMap());
    if (geometry instanceof WebPolyline) {
      System.out.println("Performing a IdentifyCriteria query based on a polyline");
    }

    IdentifyCriteria ic = new IdentifyCriteria(geometry);
    ic.setLayerDefinitions(this.getLayerDefinitions());

    List<WebLayerInfo> infos = webQuery.getQueryLayers();

    List<WebLayerInfo> newInfo = new ArrayList<WebLayerInfo>(1);
    newInfo.add(infos.get(layerIndex));

    // List of Query Result(s)
    List<QueryResult> results = webQuery.query(ic, newInfo);

    // Adding Query Result(s) into WebResult object
    ResultDefinition definition = new ResultDefinition();
    definition.setHeader("Search Result(s)");
    definition.setDisplayNameMethodName("getName");
    definition.setDetailsMethodName("getDetails");
    Map<String, String> actions = new LinkedHashMap<String, String>();
    actions.put("Zoom", "zoom");
    actions.put("HighLight", "highlight");
    actions.put("Clear Graphic", "clearGraphic");
    definition.setActionMethodNames(actions);
    definition.setRemoveMethodName("clearGraphic");
    this.context.getWebResults().addQueryResults(results, definition);
  }

  /*
   * Runs query based on the TextCriteria.
   */
  public void textCriteria() {
    WebQuery webQuery = this.context.getWebQuery();
    String searchText = "California";
    int layerIndex = 3;

    TextCriteria tc = new TextCriteria();
    tc.setSearchText(searchText);
    tc.setLayerDefinitions(this.getLayerDefinitions());

    List<WebLayerInfo> infos = webQuery.getQueryLayers();
    List<WebLayerInfo> newInfo = new ArrayList<WebLayerInfo>(1);
    newInfo.add(infos.get(layerIndex));

    // List of Query Result(s)
    List<QueryResult> results = webQuery.query(tc, newInfo);

    // Adding Query Result(s) into WebResult object
    ResultDefinition definition = new ResultDefinition();
    definition.setHeader("Text Search : " + searchText);
    definition.setDisplayNameMethodName("getName");
    definition.setDetailsMethodName("getDetails");
    Map<String, String> actions = new LinkedHashMap<String, String>();
    actions.put("Zoom", "zoom");
    actions.put("HighLight", "highlight");
    actions.put("Clear Graphic", "clearGraphic");
    definition.setActionMethodNames(actions);
    definition.setRemoveMethodName("clearGraphic");
    this.context.getWebResults().addQueryResults(results, definition);
  }

  /*
   * Returns the layer definitions
   */
  private List<LayerDefinition> getLayerDefinitions() {
    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);
    return lyrDefs;

  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -