com.supermap.services.wms.request

类 WMSParameterValidator

  • java.lang.Object
    • com.supermap.services.wms.request.WMSParameterValidator
  • 直接已知子类:
    MapParameterValidator111, MapParameterValidator130


    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 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 参数。
      • 从类继承的方法 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 字段详细资料

      • 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。