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

📄 defaultadftobeanconverter.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.esri.solutions.jitk.web.tasks.mapcomp;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.xml.bind.JAXBException;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import com.esri.adf.web.ags.data.AGSLocalMapResource;
import com.esri.adf.web.ags.data.AGSMapFunctionality;
import com.esri.adf.web.ags.data.AGSMapResource;
import com.esri.adf.web.ags.data.AGSUser;
import com.esri.adf.web.aims.data.AIMSMapFunctionality;
import com.esri.adf.web.aims.data.AIMSMapResource;
import com.esri.adf.web.aws.data.AWSMapFunctionality;
import com.esri.adf.web.aws.data.AWSMapResource;
import com.esri.adf.web.data.GISResource;
import com.esri.adf.web.data.MapFunctionality;
import com.esri.adf.web.data.WebContext;
import com.esri.adf.web.data.geometry.WebExtent;
import com.esri.adf.web.data.geometry.WebSpatialReference;
import com.esri.adf.web.util.Cryptographer;
import com.esri.adf.web.wms.data.WMSMapResource;
import com.esri.aims.mtier.model.map.Layers;
import com.esri.aims.mtier.model.map.layer.Layer;
import com.esri.arcgisws.Field;
import com.esri.arcgisws.MapLayerInfo;
import com.esri.solutions.jitk.common.personalization.IPersonalizable;
import com.esri.solutions.jitk.common.personalization.IPersonalizationContext;
import com.esri.solutions.jitk.personalization.data.beans.v1.AgsInternetServiceType;
import com.esri.solutions.jitk.personalization.data.beans.v1.AgsLocalServiceType;
import com.esri.solutions.jitk.personalization.data.beans.v1.ArcImsInternetServiceType;
import com.esri.solutions.jitk.personalization.data.beans.v1.ArcImsTcpServiceType;
import com.esri.solutions.jitk.personalization.data.beans.v1.ArcWebServiceType;
import com.esri.solutions.jitk.personalization.data.beans.v1.EnvelopeN;
import com.esri.solutions.jitk.personalization.data.beans.v1.GeographicCoordinateSystemType;
import com.esri.solutions.jitk.personalization.data.beans.v1.HostList;
import com.esri.solutions.jitk.personalization.data.beans.v1.IdentityType;
import com.esri.solutions.jitk.personalization.data.beans.v1.LayerFieldListType;
import com.esri.solutions.jitk.personalization.data.beans.v1.LayerFieldType;
import com.esri.solutions.jitk.personalization.data.beans.v1.LayerListType;
import com.esri.solutions.jitk.personalization.data.beans.v1.MapServiceType;
import com.esri.solutions.jitk.personalization.data.beans.v1.ObjectFactory;
import com.esri.solutions.jitk.personalization.data.beans.v1.ProjectedCoordinateSystem;
import com.esri.solutions.jitk.personalization.data.beans.v1.ServiceLayer;
import com.esri.solutions.jitk.personalization.data.beans.v1.ServiceLayerType;
import com.esri.solutions.jitk.personalization.data.beans.v1.ServiceListType;
import com.esri.solutions.jitk.personalization.data.beans.v1.SpatialReferenceType;
import com.esri.solutions.jitk.personalization.data.beans.v1.UnknownCoordinateSystem;
import com.esri.solutions.jitk.personalization.data.beans.v1.WcsServiceType;
import com.esri.solutions.jitk.personalization.data.beans.v1.WfsServiceType;
import com.esri.solutions.jitk.personalization.data.beans.v1.WmsServiceType;
import com.esri.solutions.jitk.personalization.data.beans.v1.LayerListType.LayerItemType;
import com.esri.solutions.jitk.personalization.data.beans.v1.ServiceListType.ServiceItemType;
import com.esri.solutions.jitk.web.data.IBCTMapFunctionality;
import com.esri.solutions.jitk.web.wcs.data.WCSMapResource;
import com.esri.solutions.jitk.web.wfs.data.WFSMapResource;


/**
 * Converts ADF objects to JAXB Beans.  The JAXB Beans were
 * generated from the Map Composition XML schema.  This implementation
 * will not generate any messages, so invocations of {@link #clearMessages()}
 * and {@link #getMessages()} have no affect.
 */
public class DefaultADFToBeanConverter implements IADFToBeanConverter, IPersonalizable {

	/**
	 * Logger to use to log messages from this class.
	 */
	private static final Logger LOG = LogManager.getLogger(DefaultADFToBeanConverter.class);
	
	/**
	 * JAXB object factory for creating beans.
	 */
	private final ObjectFactory m_factory;
	
	@SuppressWarnings("unused")
	private final List<String> m_messages;

	/**
	 * Reference to the Personalization Context to access
	 * Personalization data and operations.
	 */
	private IPersonalizationContext m_persCtx;

	
	/**
	 * Constructs a new <code>DefaultADFToBeanConverter</code> object.
	 * 
	 * @throws JAXBException	Thrown if there was an issue creating
	 * 							the JAXB ObjectFactory.
	 */
	public DefaultADFToBeanConverter () throws JAXBException {
		m_factory = new ObjectFactory();
		m_messages = new ArrayList<String>();
	}
	
	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.tasks.mapcomp.IADFToBeanConverter#createEnvelope(com.esri.adf.web.data.geometry.WebExtent)
	 */
	public EnvelopeN createEnvelope (WebExtent extent) {
		EnvelopeN env = null;
		
		try {
			env = m_factory.createEnvelopeN();
			env.setXMin(extent.getMinX());
			env.setXMax(extent.getMaxX());
			env.setYMin(extent.getMinY());
			env.setYMax(extent.getMaxY());
			
			if (extent.getSpatialReference() != null) {
				SpatialReferenceType sr = createSpatialReference(extent.getSpatialReference());
				env.setSpatialReference(sr);
			}
			
			return env;
		} catch (JAXBException e) {
			LOG.warn("", e);
		}
		
		return null;
	}
	
	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.tasks.mapcomp.IADFToBeanConverter#createSpatialReference(com.esri.adf.web.data.geometry.WebSpatialReference)
	 */
	public SpatialReferenceType createSpatialReference (WebSpatialReference wsr) {
		
		try {
			
			if (wsr.getType() == WebSpatialReference.GEOG_CS) {
				GeographicCoordinateSystemType gcs = m_factory.createGeographicCoordinateSystem();
				gcs.setWKID(wsr.getId());
				gcs.setWKT(wsr.getDefinitionString());
				return gcs;
			} else if (wsr.getType() == WebSpatialReference.PROJ_CS) {
				ProjectedCoordinateSystem pcs = m_factory.createProjectedCoordinateSystem();
				pcs.setWKID(wsr.getId());
				pcs.setWKT(wsr.getDefinitionString());
				return pcs;
			} else {
				UnknownCoordinateSystem ucs = m_factory.createUnknownCoordinateSystem();
				ucs.setWKID(wsr.getId());
				ucs.setWKT(wsr.getDefinitionString());
				return ucs;
			}
		} catch (JAXBException e) {
			LOG.warn("", e);
		}
		
		return null;
	}
	
	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.tasks.mapcomp.IADFToBeanConverter#createServiceListType(com.esri.adf.web.data.WebContext)
	 */
	@SuppressWarnings("unchecked")
	public ServiceListType createServiceListType (WebContext ctx) {
		ServiceListType serviceList = null;
		List services = new ArrayList();
		
		try {
			List<GISResource> resources = new ArrayList<GISResource>(ctx.getResources().values());
			serviceList = m_factory.createServiceListType();
			
			for (GISResource res : resources) {
				ServiceItemType svcItem = createServiceItemType(res);
				
				if (svcItem != null) {
					services.add(svcItem);
				}
			}
		
			serviceList.getServiceItem().clear();
			serviceList.getServiceItem().addAll(services);
			
			return serviceList;
			
		} catch (JAXBException e) {
			LOG.warn("", e);
		}
		
		return null;
	}
	
	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.tasks.mapcomp.IADFToBeanConverter#createServiceType(com.esri.adf.web.data.GISResource)
	 */
	public ServiceItemType createServiceItemType (GISResource res) {
		try {
			ServiceItemType svcItem = null;
			m_factory.createServiceListTypeServiceItemType();
			
			if (res instanceof AGSLocalMapResource) {
				AgsLocalServiceType svc = createAgsLocalServiceType((AGSLocalMapResource) res);
				svcItem = m_factory.createServiceListTypeServiceItemType();
				svcItem.setAgsLocalService(svc);
			} else if (res instanceof AGSMapResource) {
				AgsInternetServiceType svc = createAgsInternetServiceType((AGSMapResource) res);
				svcItem = m_factory.createServiceListTypeServiceItemType();
				svcItem.setAgsInternetService(svc);
			} else if (res instanceof AIMSMapResource) {
				AIMSMapResource aimsRes = (AIMSMapResource) res;
				if (aimsRes.getHostName() != null && aimsRes.getHostName().startsWith("http://")) {
					ArcImsInternetServiceType svc = createArcImsInternetServiceType(aimsRes);
					svcItem = m_factory.createServiceListTypeServiceItemType();
					svcItem.setArcImsInternetService(svc);
				} else if (aimsRes.getHostName() != null){
					ArcImsTcpServiceType svc = createArcImsTcpServiceType(aimsRes);
					svcItem = m_factory.createServiceListTypeServiceItemType();
					svcItem.setArcImsTcpService(svc);
				}
			} else if (res instanceof AWSMapResource) {
				ArcWebServiceType svc = createArcWebServiceType((AWSMapResource) res);
				svcItem = m_factory.createServiceListTypeServiceItemType();
				svcItem.setArcWebService(svc);
			} else if (res instanceof WMSMapResource) {
				WmsServiceType svc = createWmsServiceType((WMSMapResource) res);
				svcItem = m_factory.createServiceListTypeServiceItemType();
				svcItem.setWmsService(svc);
			} else if (res instanceof WCSMapResource) {
				WcsServiceType svc = createWcsServiceType((WCSMapResource) res);
				svcItem = m_factory.createServiceListTypeServiceItemType();
				svcItem.setWcsService(svc);
			} else if (res instanceof WFSMapResource) {
				WfsServiceType svc = createWfsServiceType((WFSMapResource) res);
				svcItem = m_factory.createServiceListTypeServiceItemType();
				svcItem.setWfsService(svc);
			} else {
				LOG.warn("Unrecognized GISResource type encountered, ignoring");
			}
			
			return svcItem;
		} catch (JAXBException e) {
			LOG.warn("", e);
		}
		
		return null;
	}
	
	public WfsServiceType createWfsServiceType(WFSMapResource res) {
		WfsServiceType svc = null;
		
		try {
			svc = m_factory.createWfsService();
			
			svc.setDisplayName(res.getAlias());
			svc.setGetCapabilitiesUrl(res.getEndPointURL());
			
			MapFunctionality func = (MapFunctionality) res.getFunctionality(MapFunctionality.FUNCTIONALITY_NAME);
			double trans = func.getTransparency();
			
			if (trans < 1.0) {
				svc.setIsTransparentBackground(true);
			} else {
				svc.setIsTransparentBackground(false);
			}			
			
			updateDisplaySettings(res, svc);
			
			return svc;
		} catch (Exception ex) {
			LOG.warn("Unabled to convert WFSMapResource to JAXB bean", ex);
		}
		
		return null;
	}
	
	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.tasks.mapcomp.IADFToBeanConverter#createWcsServiceType(com.esri.solutions.jitk.web.wcs.data.WCSMapResource)
	 */
	public WcsServiceType createWcsServiceType(WCSMapResource res) {
		WcsServiceType svc = null;
		
		try {
			svc = m_factory.createWcsService();
			
			svc.setDisplayName(res.getAlias());
			svc.setGetCapabilitiesUrl(res.getEndPointURL());
			svc.setCoverageName(res.getCoverage());
		
			MapFunctionality func = (MapFunctionality) res.getFunctionality(MapFunctionality.FUNCTIONALITY_NAME);
			double trans = func.getTransparency();
			
			if (trans < 1.0) {
				svc.setIsTransparentBackground(true);
			} else {
				svc.setIsTransparentBackground(false);
			}
			
			updateDisplaySettings(res, svc);

			
			return svc;
			
		} catch (JAXBException e) {
			LOG.warn("", e);
		}
		
		return null;
	}

	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.tasks.mapcomp.IADFToBeanConverter#createArcImsTcpServiceType(com.esri.adf.web.aims.data.AIMSMapResource)
	 */
	public ArcImsTcpServiceType createArcImsTcpServiceType(AIMSMapResource res) {
		ArcImsTcpServiceType svc = null;
		
		try {
			svc = m_factory.createArcImsTcpService();
			
			svc.setDisplayName(res.getAlias());
			svc.setHost(res.getHostName());
			svc.setPort(res.getPort());
			svc.setServiceName(res.getServiceName());
			
			AIMSMapFunctionality func = (AIMSMapFunctionality)res.getFunctionality("map");
			
			double trans = func.getTransparency();
			
			if (trans < 1.0) {
				svc.setIsTransparentBackground(true);
			} else {
				svc.setIsTransparentBackground(false);
			}
			
			updateDisplaySettings(res, svc);
			
			svc.setIdentity(createIdentityType(res.getUserName(), res.getPassword(), res.isPasswordEncrypted()));
			
			LayerListType layerList = createLayerListType (func.getMap().getLayers());
			svc.setLayers(layerList);
			
			return svc;
		} catch (JAXBException e) {
			LOG.warn("", e);
		}
		
		return null;
	}

	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.tasks.mapcomp.IADFToBeanConverter#createAgsInternetServiceType(com.esri.adf.web.ags.data.AGSMapResource)
	 */
	@SuppressWarnings("unchecked")
	public AgsInternetServiceType createAgsInternetServiceType (AGSMapResource res) {
		AgsInternetServiceType svc = null;
		
		try {
			svc = m_factory.createAgsInternetService();
			
			svc.setDisplayName(res.getAlias());
			svc.setEndPointUrl(res.getEndPointURL());
			AGSMapFunctionality func = (AGSMapFunctionality) res.getFunctionality(MapFunctionality.FUNCTIONALITY_NAME);
			
			double trans = func.getTransparency();
			
			if (trans < 1.0) {
				svc.setIsTransparentBackground(true);
			} else {
				svc.setIsTransparentBackground(false);
			}
			
			if (res.getUser() != null) {
				svc.setIdentity(createIdentityType(res.getUser()));
			}
			
			MapLayerInfo[] layerInfos = func.getLayerInfos();
			LayerListType layerList = createLayerListType(layerInfos);
			svc.setLayers(layerList);
			
			updateDisplaySettings(res, svc);
			
			return svc;
		} catch (JAXBException e) {
			LOG.warn("", e);
		}
		
		return null;
	}

	/**
	 * Updates the Display Settings within the Map Composition Bean.  The
	 * Display Settings include brightness, contrast, tint, and
	 * transparency properties. 
	 * 
	 * @param res	GIS Resource that contains Display Settings
	 * @param svc	Display Settings will be set within this bean.
	 * 
	 */
	protected void updateDisplaySettings(GISResource res,
			MapServiceType svc) {
		
		MapFunctionality mapFunc = (MapFunctionality) res.getFunctionality(MapFunctionality.FUNCTIONALITY_NAME);
		
		if (mapFunc == null) {
			return;
		}
		
		svc.setTransparency(mapFunc.getTransparency());
		
		if (mapFunc instanceof IBCTMapFunctionality) {
			IBCTMapFunctionality bctMapFunc = 
				(IBCTMapFunctionality) mapFunc;

			svc.setBrightness(bctMapFunc.getBrightness());
			svc.setContrast(bctMapFunc.getContrast());
			if (bctMapFunc.getTint() != null) {
				svc.setTintBlue(bctMapFunc.getTint().getBlueOffset());
				svc.setTintGreen(bctMapFunc.getTint().getGreenOffset());
				svc.setTintRed(bctMapFunc.getTint().getRedOffset());
			}
		}
	}
	
	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.tasks.mapcomp.IADFToBeanConverter#createServiceLayerType(com.esri.arcgisws.MapLayerInfo)
	 */
	@SuppressWarnings("unchecked")
	public ServiceLayerType createServiceLayerType (MapLayerInfo info) {
		ServiceLayerType layer = null;
		
		try {
			layer = m_factory.createServiceLayer();
			layer.setId(String.valueOf(info.getLayerID()));
			layer.setName(info.getName());
			if (info.isIsFeatureLayer()) {
				layer.setFields(createLayerFieldListType(info));
			}
			if (m_persCtx.getAttribute("FilterExpression") != null) {
				Map<Object,Object> feMap = (Map<Object,Object>) m_persCtx.getAttribute("FilterExpression");
				
				String expr = (String) feMap.get(info);
				
				if (expr != null && expr.trim().length() != 0) {
					layer.setFilterExpression(expr.trim());
				}
			}
			
			return layer;
		} catch (JAXBException e) {
			LOG.warn("", e);
		}
		
		return null;
	}

⌨️ 快捷键说明

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