📄 defaultadftobeanconverter.java
字号:
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 + -