类 WMSParameterValidator
- java.lang.Object
-
- com.supermap.services.wms.request.WMSParameterValidator
-
public abstract class WMSParameterValidator extends java.lang.Object
WMS 的 GetMap 和 GetFeatureInfo 操作参数校验器。
该类根据
WMSCapabilities
对象构造需要的参数名称和正则表达式,生成ParameterValidator
对象,使用这个对象进行基本的参数验证。该类是一个抽象类,只构造了 WMS 1.1.1 和 WMS 1.3.0 版的 GetMap 操作通用的参数的验证表达式,以下参数没有构造正则表达式:
- EXCEPTIONS,WMS 1.1.1 与 WMS 1.3.0 的默认值不一样。
- CRS,WMS 1.3.0 的 坐标参考系统参数。
- SRS,WMS 1.1.1 的 坐标参考系统参数。
-
-
字段概要
字段 限定符和类型 字段和说明 protected WMSCapabilities
capabilities
WMS 元数据信息。protected static java.lang.String
EXCEPTION_CODE_INVALIDBBOX
无效 BBOX 异常代码。protected static java.lang.String
MSG_KEY_INVALIDBBOX
无效 BBOX 信息关键字。protected ResourceManager
resource
资源管理器。protected ParameterValidator
validator
基于正则表达式的参数校验器。
-
构造器概要
构造器 构造器和说明 WMSParameterValidator(WMSCapabilities capabilities)
根据 WMS 元数据信息构造一个 WMSParameterValidator 对象。WMSParameterValidator(WMSCapabilities capabilities, java.lang.String defaultBgColor)
根据 WMS 元数据信息构造一个 WMSParameterValidator 对象。
-
方法概要
方法 限定符和类型 方法和说明 protected java.util.regex.Pattern
createBBOXPattern()
创建验证 BBOX 参数的正则表达式。protected java.util.regex.Pattern
createBooleanPattern()
创建验证布尔字符串(true 或者 false)的正则表达式。protected java.util.regex.Pattern
createColorPattern()
创建验证颜色字符串的正则表达式。protected java.util.regex.Pattern
createElevationPattern()
创建验证 ELEVATION 参数的正则表达式。protected java.util.regex.Pattern
createLayerPattern(java.util.List<WMSLayer> layers)
创建验证 LAYERS 参数的正则表达式。protected OGCParameterException
createOGCException(ValidateResult validateResult, java.lang.String format)
根据 WMS 请求参数校验结果和异常格式,创建 OGCParameterException 异常对象。protected java.util.regex.Pattern
createPositiveIntegerPattern()
创建验证正整数的正则表达式。protected java.util.regex.Pattern
createStringArrayPattern(java.lang.String[] strArray, int flags)
创建用于验证字符串数组的正则表达式。protected java.util.regex.Pattern
createStylesPattern()
创建验证 STYLES 参数的正则表达式。protected java.util.regex.Pattern
createTimePattern()
创建验证 TIME 参数的正则表达式。protected abstract java.util.Map<java.lang.String,java.util.regex.Pattern>
initDefinePattern()
创建用于验证操作定义的参数的正则表达式。protected java.util.Map<java.lang.String,OptionalParameter>
initOptionalPattern()
创建可选参数的描述信息。protected java.util.Map<java.lang.String,java.util.regex.Pattern>
initRequiredPattern()
创建用于验证必需参数的正则表达式。protected java.lang.String[]
splitString(java.lang.String strToSplit, java.lang.String splitReg)
用指定的正则表达式的匹配分割字符串。void
validate(java.util.Map<java.lang.String,java.lang.String> paramMap)
验证 WMS 请求的关键字-值对(keyword-value pair)形式的参数。protected void
validateBBOX(java.lang.String bbox, java.lang.String exceptionFormat)
验证 BBOX 参数。protected java.lang.String
validateFormat(java.lang.String format)
验证是否支持 WMS GetMap 请求中的 FORMAT 参数所表示的图片格式。protected void
validateStyles(java.lang.String styles, java.lang.String layerNames, java.lang.String format)
验证 STYLES 参数。
-
-
-
字段详细资料
-
MSG_KEY_INVALIDBBOX
protected static final java.lang.String MSG_KEY_INVALIDBBOX
无效 BBOX 信息关键字。
默认值为“WMS.ValidateParameter.InvalidBBOX”。
-
EXCEPTION_CODE_INVALIDBBOX
protected static final java.lang.String EXCEPTION_CODE_INVALIDBBOX
无效 BBOX 异常代码。
默认值为“InvalidBBOX”。
-
capabilities
protected WMSCapabilities capabilities
WMS 元数据信息。
-
resource
protected ResourceManager resource
资源管理器。
-
validator
protected ParameterValidator validator
基于正则表达式的参数校验器。
-
-
构造器详细资料
-
WMSParameterValidator
public WMSParameterValidator(WMSCapabilities capabilities)
根据 WMS 元数据信息构造一个 WMSParameterValidator 对象。
- 参数:
capabilities
- WMS 元数据信息。
-
WMSParameterValidator
public WMSParameterValidator(WMSCapabilities capabilities, java.lang.String defaultBgColor)
根据 WMS 元数据信息构造一个 WMSParameterValidator 对象。
- 参数:
capabilities
- WMS 元数据信息。
-
-
方法详细资料
-
validate
public void validate(java.util.Map<java.lang.String,java.lang.String> paramMap) throws OGCParameterException
验证 WMS 请求的关键字-值对(keyword-value pair)形式的参数。
- 参数:
paramMap
- 该参数是一个 java.util.Map 对象,键为请求的参数名,值为参数值。- 抛出:
OGCParameterException
- OGC 服务的参数异常。如果 WMS 请求的参数非法,抛出该异常。
-
initDefinePattern
protected abstract java.util.Map<java.lang.String,java.util.regex.Pattern> initDefinePattern()
创建用于验证操作定义的参数的正则表达式。
- 返回:
- java.util.Map 对象,表示操作定义的参数的名称和正则表达式,键为参数名称,值为对应的正则表达式。
-
initOptionalPattern
protected java.util.Map<java.lang.String,OptionalParameter> initOptionalPattern()
创建可选参数的描述信息。
包括 TRANSPARENT、BGCOLOR、TIME、ELEVATION 可选参数。
- 返回:
- java.util.Map 对象,表示可选参数的名称及其描述,键为参数名称,值为可选参数描述对象
OptionalParameter
。
-
initRequiredPattern
protected java.util.Map<java.lang.String,java.util.regex.Pattern> initRequiredPattern()
创建用于验证必需参数的正则表达式。
包括 LAYERS、STYLES、BBOX、WIDTH、HEIGHT、FORMAT、SLD_BODY 参数。
- 返回:
- java.util.Map 对象,表示必需参数的名称和正则表达式,键为参数名称,值为对应的正则表达式。
-
createElevationPattern
protected final java.util.regex.Pattern createElevationPattern()
创建验证 ELEVATION 参数的正则表达式。
目前没有对 ELEVATION 参数进行验证,返回一个可以匹配任何字符串的正则表达式。
- 返回:
- 验证 ELEVATION 参数的正则表达式。
-
createTimePattern
protected final java.util.regex.Pattern createTimePattern()
创建验证 TIME 参数的正则表达式。
目前没有对 TIME 参数进行验证,返回一个可以匹配任何字符串的正则表达式。
- 返回:
- 验证时间字符串的正则表达式。
-
createStringArrayPattern
protected final java.util.regex.Pattern createStringArrayPattern(java.lang.String[] strArray, int flags)
创建用于验证字符串数组的正则表达式。
创建的正则表达式可以匹配字符串数组中的任意一个(并且只有一个)元素的值。
- 参数:
strArray
- 被验证的字符串数组。flags
- 正则表达式匹配标志,可能包括 CASE_INSENSITIVE、MULTILINE、DOTALL、UNICODE_CASE、 CANON_EQ、UNIX_LINES、LITERAL 和 COMMENTS。- 返回:
- 验证字符串数组的正则表达式。
-
createColorPattern
protected final java.util.regex.Pattern createColorPattern()
创建验证颜色字符串的正则表达式。
采用不区分大小写(Pattern.CASE_INSENSITIVE)的匹配。
- 返回:
- 验证颜色字符串的正则表达式。
-
createBooleanPattern
protected final java.util.regex.Pattern createBooleanPattern()
创建验证布尔字符串(true 或者 false)的正则表达式。
采用不区分大小写(Pattern.CASE_INSENSITIVE)的匹配。
- 返回:
- 验证布尔字符串(true 或者 false)的正则表达式。
-
createPositiveIntegerPattern
protected final java.util.regex.Pattern createPositiveIntegerPattern()
创建验证正整数的正则表达式。
- 返回:
- 验证正整数的正则表达式。
-
createBBOXPattern
protected final java.util.regex.Pattern createBBOXPattern()
创建验证 BBOX 参数的正则表达式。
- 返回:
- 验证 BBOX 参数的正则表达式。
-
createStylesPattern
protected final java.util.regex.Pattern createStylesPattern()
创建验证 STYLES 参数的正则表达式。
目前没有对 STYLES 参数进行验证,返回一个可以匹配任何字符串的正则表达式。
- 返回:
- 验证 STYLES 参数的正则表达式。
-
createLayerPattern
protected final java.util.regex.Pattern createLayerPattern(java.util.List<WMSLayer> layers)
创建验证 LAYERS 参数的正则表达式。
图层正确性在
DefaultWMS
内部进行验证,这里返回一个匹配包含任意非空格字符串的正则表达式。- 参数:
layers
- 图层列表。- 返回:
- 验证 LAYERS 参数的正则表达式。
-
createOGCException
protected OGCParameterException createOGCException(ValidateResult validateResult, java.lang.String format)
根据 WMS 请求参数校验结果和异常格式,创建 OGCParameterException 异常对象。
- 参数:
validateResult
- WMS 请求参数校检结果。format
- 异常信息的格式。- 返回:
- OGC 服务的参数异常。
-
validateBBOX
protected void validateBBOX(java.lang.String bbox, java.lang.String exceptionFormat) throws OGCParameterException
验证 BBOX 参数。
- 参数:
bbox
- BBOX 参数。exceptionFormat
- 验证 BBOX 参数错误时,抛出的异常信息的格式。- 抛出:
OGCParameterException
- OGC 服务的参数异常。当 出现以下情况时,会抛出该异常,异常代码 Code = InvalidBBOX:- BBOX 参数为空。
- BBOX 参数不是由四个值来表示时,即,以“,”分隔 BBOX 参数的长度不等于4。
- BBOX 参数的 minx、miny、maxx 和 maxy 不是 Double 类型时,抛出一个异常原因为 NumberFormatException 的 OGCParameterException 异常。
- BBOX 参数的 minx、miny、maxx 和 maxy 构成的矩形区域错误时,比如最小 X 大于或等于最大 X。
-
validateFormat
protected java.lang.String validateFormat(java.lang.String format)
验证是否支持 WMS GetMap 请求中的 FORMAT 参数所表示的图片格式。
- 参数:
format
- WMS GetMap 请求中的 FORMAT 参数。- 返回:
- 支持请求参数 FORMAT 的图片格式返回 true,否则返回 null,当参数 format 为空时,也返回 null。
-
splitString
protected java.lang.String[] splitString(java.lang.String strToSplit, java.lang.String splitReg)
用指定的正则表达式的匹配分割字符串。
比如,字符串为 "SuperMap,iServer,WMS",splitReg 为 ",",分割结果为 {"SuperMap", "iServer", "iServer"}。当字符串为 ",," 时,splitReg 为 ",",分割结果为 {"", "", ""}。
- 参数:
strToSplit
- 要被分割的字符串。splitReg
- 正则表达式。- 返回:
- 字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的。
-
validateStyles
protected void validateStyles(java.lang.String styles, java.lang.String layerNames, java.lang.String format) throws OGCParameterException
验证 STYLES 参数。
STYLES 暂时没有实现,如果 STYLES 参数为空,则不进行验证。
- 参数:
styles
- WMS 请求的地图图层的样式。layerNames
- WMS 请求的地图图层。format
- 验证 STYLES 参数错误时,抛出的异常信息的格式。- 抛出:
OGCParameterException
- OGC 服务的参数异常。当 STYLES 参数非空时,图层个数与图层样式个数不一致时,会抛出该异常,异常代码 Code = StyleNotDefined。
-
-