📄 querybuildertaskutil.java
字号:
package com.esri.solutions.jitk.web.tasks.query.querybuilder;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import org.apache.log4j.Logger;
import com.esri.adf.web.ags.data.AGSMapResource;
import com.esri.adf.web.aims.data.AIMSMapResource;
import com.esri.adf.web.data.GISResource;
import com.esri.adf.web.data.GraphicElement;
import com.esri.adf.web.data.WebContext;
import com.esri.adf.web.data.WebLayerInfo;
import com.esri.adf.web.data.geometry.WebExtent;
import com.esri.adf.web.data.geometry.WebGeometry;
import com.esri.adf.web.data.geometry.WebPath;
import com.esri.adf.web.data.geometry.WebPoint;
import com.esri.adf.web.data.geometry.WebPolygon;
import com.esri.adf.web.data.geometry.WebPolyline;
import com.esri.adf.web.data.geometry.WebRing;
import com.esri.adf.web.data.symbol.WebSimpleLineSymbol;
import com.esri.adf.web.data.symbol.WebSimpleMarkerSymbol;
import com.esri.adf.web.data.symbol.WebSimplePolygonSymbol;
import com.esri.solutions.jitk.web.wfs.data.WFSMapResource;
/**
* MVS-045: Query Builder Task support class. This utility class creates query graphics.
*/
public class QueryBuilderTaskUtil {
private static Logger logger = Logger.getLogger(QueryBuilderTaskUtil.class.getName());
static final int SHAPE_WIDTH = 3;
static final String COLOR = "255,0,0";
public QueryBuilderTaskUtil(){}
@SuppressWarnings("deprecation")
public static GraphicElement setSymbol(WebGeometry webGeom, String color){
if (color == null) color = COLOR;
try{
if (webGeom instanceof WebPoint){
WebSimpleMarkerSymbol pSymbol = new WebSimpleMarkerSymbol();
pSymbol.setColor(color);
pSymbol.setMarkerType(WebSimpleMarkerSymbol.CIRCLE);
pSymbol.setWidth(SHAPE_WIDTH * SHAPE_WIDTH);
GraphicElement graphicElem = new GraphicElement();
graphicElem.setGeometry(webGeom);
graphicElem.setSymbol(pSymbol);
return graphicElem;
}
if (webGeom instanceof WebPolyline){
WebSimpleLineSymbol pSymbol = new WebSimpleLineSymbol();
pSymbol.setColor(color);
pSymbol.setJoinType(WebSimpleLineSymbol.MITER);
pSymbol.setLineType(WebSimpleLineSymbol.SOLID);
pSymbol.setWidth(SHAPE_WIDTH);
GraphicElement graphicElem = new GraphicElement();
graphicElem.setGeometry(graphicElem.getGeometry());
graphicElem.setSymbol(pSymbol);
return graphicElem;
}
if (webGeom instanceof WebPolygon){
WebSimplePolygonSymbol pSymbol = new WebSimplePolygonSymbol();
pSymbol.setFillColor(color);
pSymbol.setBoundaryColor(color);
pSymbol.setBoundaryWidth(SHAPE_WIDTH);
GraphicElement graphicElem = new GraphicElement();
graphicElem.setGeometry(graphicElem.getGeometry());
graphicElem.setSymbol(pSymbol);
return graphicElem;
}
}
catch (Exception e){
logger.error("Unable to set symbol", e);
}
return null;
}
private static WebExtent getPointEnvelope(WebGeometry webGeom){
try{
WebPoint webPoint = (WebPoint)webGeom;
return new WebExtent(webPoint.getX(), webPoint.getY(), webPoint.getX(), webPoint.getY());
}catch(Exception e){
logger.error("Unable to get point envelope", e);
}
return null;
}
@SuppressWarnings("unchecked")
private static WebExtent getLineEnvelope(WebGeometry webGeom){
try{
WebPolyline webLine = (WebPolyline)webGeom;
Iterator rit = webLine.getPaths().iterator();
WebExtent webExt = new WebExtent() ;
boolean firstElm = false;
while (rit.hasNext()){
WebPath path = (WebPath)rit.next();
Iterator pit = path.getPoints().iterator();
while (pit.hasNext()){
WebPoint webPoint = (WebPoint)pit.next();
if (!firstElm){
webExt.setMinX(webPoint.getX());
webExt.setMaxX(webPoint.getX());
webExt.setMinY(webPoint.getY());
webExt.setMaxY(webPoint.getY());
firstElm = true;
}
if (webPoint.getX() < webExt.getMinX()) webExt.setMinX(webPoint.getX());
if (webPoint.getX() > webExt.getMaxX()) webExt.setMaxX(webPoint.getX());
if (webPoint.getY() < webExt.getMinY()) webExt.setMinY(webPoint.getY());
if (webPoint.getY() > webExt.getMaxY()) webExt.setMaxY(webPoint.getY());
}
}
return webExt;
}
catch(Exception e) {
logger.error("Unable to get line envelope", e);
}
return null;
}
@SuppressWarnings("unchecked")
private static WebExtent getPolyEnvelope(WebGeometry webGeom){
try{
WebPolygon webPoly = (WebPolygon)webGeom;
Iterator rit = webPoly.getRings().iterator();
WebExtent webExt = new WebExtent();
boolean firstElm = false;
while (rit.hasNext())
{
WebRing ring = (WebRing)rit.next();
Iterator pit = ring.getPoints().iterator();
while (pit.hasNext()){
WebPoint webPoint = (WebPoint)pit.next();
if (!firstElm){
webExt.setMinX(webPoint.getX());
webExt.setMaxX(webPoint.getX());
webExt.setMinY(webPoint.getY());
webExt.setMaxY(webPoint.getY());
firstElm = true;
}
if (webPoint.getX() < webExt.getMinX()) webExt.setMinX(webPoint.getX());
if (webPoint.getX() > webExt.getMaxX()) webExt.setMaxX(webPoint.getX());
if (webPoint.getY() < webExt.getMinY()) webExt.setMinY(webPoint.getY());
if (webPoint.getY() > webExt.getMaxY()) webExt.setMaxY(webPoint.getY());
}
}
return webExt;
}
catch(Exception e) {
logger.error("Unable to get polygon envelope", e);
}
return null;
}
public static WebExtent getGeometryEnvelope(WebGeometry webGeom){
try {
if (webGeom instanceof WebPoint) return getPointEnvelope(webGeom);
if (webGeom instanceof WebPolyline) return getLineEnvelope(webGeom);
if (webGeom instanceof WebPolygon) return getPolyEnvelope(webGeom);
}
catch(Exception e) {
logger.error("Unable to get geometry envelope", e);
}
return null;
}
@SuppressWarnings("unchecked")
public static List<WebLayerInfo> getWebLayerInfoList(List<WebLayerInfo> layerList, String webLayerName){
List<WebLayerInfo> list = null;
if(layerList!=null && layerList.size()>0) {
list = new ArrayList<WebLayerInfo>(1);
int index = 0;
for(Iterator iter = layerList.iterator(); iter.hasNext();index++) {
WebLayerInfo layer = (WebLayerInfo)iter.next();
if(layer.getName().equalsIgnoreCase(webLayerName)) {
list.add(layer);
return list;
}
}
}
return list;
}
@SuppressWarnings("unchecked")
public static LinkedHashMap<String, String> getLayerList(WebContext context){
try{
LinkedHashMap<String, String> newLayerList = new LinkedHashMap<String, String>();
if(context != null){
LinkedHashMap<String, GISResource> resources = (LinkedHashMap<String, GISResource>) context.getResources();
Object resource;
for(Iterator iter = resources.keySet().iterator(); iter.hasNext();) {
String id = (String)iter.next();
resource = resources.get(id);
if (resource instanceof AIMSMapResource){
AIMSMapResource tempAimsResource = (AIMSMapResource)resource;
LinkedHashMap<String, String> layerList = QueryBuilderTaskAimsUtil.getServiceLayerList(tempAimsResource, id);
newLayerList.putAll(layerList);
}
if (resource instanceof AGSMapResource){
AGSMapResource tempAgsResource = (AGSMapResource)resource;
LinkedHashMap<String, String> layerList = QueryBuilderTaskAgsUtil.getServiceLayerList(tempAgsResource, id, context.getWebQuery().getQueryLayers());
newLayerList.putAll(layerList);
}
//NOTE: Not sure why polymorphism wasn't used here, but propigating code design
// for WFS, as poor as it is.
if (resource instanceof WFSMapResource) {
WFSMapResource wfsMapResource = (WFSMapResource) resource;
LinkedHashMap<String, String> layerList = QueryBuilderTaskWfsUtil.getServiceLayerList(wfsMapResource, id, context.getWebQuery().getQueryLayers());
newLayerList.putAll(layerList);
}
}
}
return newLayerList;
}
catch(Exception e) {
logger.error("Unable to get layer list", e);
}
return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -