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

📄 paramchecker.java

📁 云网论坛CWBBS 源码,内容丰富,学习,参考,教学的好资料,具体见内说明,
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                else {
                    isValid = false;
                    addMsg("err_need_less", new String[] {leftFieldDesc, "" +rightFieldDesc});
                }
            } else if (leftField.type.equals(this.TYPE_LONG)) {
                long a = ((Long) leftField.value).longValue();
                long b = ((Long) rightField.value).longValue();
                if (a < b)
                    ;
                else {
                    isValid = false;
                    addMsg("err_need_less", new String[] {leftFieldDesc, "" +rightFieldDesc});
                }
            }
        } else if (token.equals("=")) {
            if (leftField.type.equals(this.TYPE_INT)) {
                int a = ((Integer) leftField.value).intValue();
                int b = ((Integer) rightField.value).intValue();
                if (a == b)
                    ;
                else {
                    isValid = false;
                    addMsg("err_need_equal", new String[] {leftFieldDesc, "" +rightFieldDesc});
                }
            } else if (leftField.type.equals(this.TYPE_DATE)) {
                Date a = (Date) leftField.value;
                Date b = (Date) rightField.value;
                if (DateUtil.compare(a, b) == 0)
                    ;
                else {
                    isValid = false;
                    addMsg("err_need_equal", new String[] {leftFieldDesc, "" +rightFieldDesc});
                }
            } else if (leftField.type.equals(this.TYPE_LONG)) {
                long a = ((Long) leftField.value).longValue();
                long b = ((Long) rightField.value).longValue();
                if (a == b)
                    ;
                else {
                    isValid = false;
                    addMsg("err_need_equal", new String[] {leftFieldDesc, "" +rightFieldDesc});
                }
            } else if (leftField.type.equals(this.TYPE_BOOLEAN)) {
                boolean a = ((Boolean) leftField.value).booleanValue();
                boolean b = ((Boolean) rightField.value).booleanValue();
                if (a == b)
                    ;
                else {
                    isValid = false;
                    addMsg("err_need_equal", new String[] {leftFieldDesc, "" +rightFieldDesc});
                }
            } else if (leftField.type.equals(this.TYPE_STRING)) {
                String a = (String) leftField.value;
                String b = (String) rightField.value;
                if (a.equals(b))
                    ;
                else {
                    isValid = false;
                    addMsg("err_need_equal", new String[] {leftFieldDesc, "" +rightFieldDesc});
                }
            }
        } else {
            isValid = false;
            addMsg("err_format", new String[] {rulePairStr});
        }
        return isValid;
    }

    /**
     * 检查联合条件,如两个表单域之间的相等、大于、小于
     * 如:onerror=exit|resume,pwd=pwd1,date1>date2,num1<=num2
     */
    public void checkUnionCond(Vector rules) throws CheckErrException {
        int len = rules.size();
        // 先找到onerror
        boolean isValid = true;

        for (int i = 0; i < len; i++) {
            isValid = true;
            String rule = (String) rules.get(i);
            rule = rule.trim();
            if (rule.indexOf(">=")!=-1) {
                isValid = this.checkUnionCond(rule, ">=");
            } else if (rule.indexOf("<=")!=-1) {
                isValid = this.checkUnionCond(rule, "<=");
            } else if (rule.indexOf(">")!=-1) {
                isValid = this.checkUnionCond(rule, ">");
            } else if (rule.indexOf("<")!=-1) {
                isValid = this.checkUnionCond(rule, "<");
            } else if (rule.indexOf("=")!=-1) {
                isValid = this.checkUnionCond(rule, "=");
            } else {
                addMsg("err_format", new String[] {rule});
                if (onErrorExit)
                    break;
            }
            if (!isValid) {
                if (onErrorExit)
                    break;
            }
        }
    }

    public void doCheck(FormRule fr) throws CheckErrException, ErrMsgException {
        if (fr==null)
            throw new ErrMsgException(LoadString("err_formrule_none", new String[] {}));
        onErrorExit = fr.isOnErrorExit();
        formResource = fr.getRes();
        check(fr.getRules());
        checkUnionCond(fr.getUnionRules());

        if (msgs.size()!=0)
            throw new ErrMsgException(getMessage(false));
    }

    public void check(Vector rules) throws CheckErrException, ErrMsgException {
        Iterator ir = rules.iterator();
        while (ir.hasNext()) {
            String rule = (String) ir.next();
            checkField(rule);
        }
    }

    public void checkField(String rule) throws CheckErrException, ErrMsgException {
        rule = rule.trim();

        if (rule.startsWith(this.TYPE_STRING)) {
            checkFieldString(rule);
        } else if (rule.startsWith(this.TYPE_INT)) {
            checkFieldInt(rule);
        } else if (rule.startsWith(this.TYPE_DATE)) {
            checkFieldDate(rule);
        } else if (rule.startsWith(this.TYPE_STRING_ARRAY)) {
            checkFieldStringArray(rule);
        } else if (rule.startsWith(this.TYPE_INT_ARRAY)) {
            checkFieldIntArray(rule);
        } else if (rule.startsWith(this.TYPE_LONG)) {
            checkFieldLong(rule);
        } else if (rule.startsWith(this.TYPE_BOOLEAN)) {
            checkFieldBoolean(rule);
        }
        else
            throw new ErrMsgException(LoadString("err_type", new String[] {rule}));
    }

    public String parseFieldDesc(String desc) {
        // logger.info("parseFieldDesc desc=" + desc + " formResource=" + formResource);
        if (formResource==null || formResource.equals(""))
            return desc;
        if (!desc.startsWith("#"))
            return desc;
        else {
            String key = desc.substring(1, desc.length()).trim();
            return SkinUtil.LoadString(request, formResource, key);
        }
    }

    public void checkFieldIntArray(String ruleStr) throws CheckErrException  {
        String fieldName = "";

        String[] rule = split(ruleStr);
        if (rule == null) {
            addMsg("err_format", new String[] {ruleStr});
            return;
        }

        int len = rule.length;
        if (len < 4) {
            addMsg("err_format", new String[] {ruleStr});
            return;
        }

        fieldName = rule[1];
        String fieldDesc = parseFieldDesc(rule[2]);

        String[] values = getFieldValues(fieldName);
        int[] intValues = null;
        len = 0;
        if (values!=null) {
            len = values.length;
            intValues = new int[len];
        }
        for (int i=0; i<len; i++) {
            try {
                intValues[i] = Integer.parseInt(values[i]);
            }
            catch (Exception e) {
                addMsg("err_not_num", new String[] {fieldDesc});
                break;
            }
        }

        Field f = new Field(fieldName, fieldDesc, intValues, this.TYPE_INT_ARRAY);
        fields.put(fieldName, f);

        String NULL = rule[3];
        if (values == null) {
            if (NULL.equalsIgnoreCase("not")) {
                addMsg("err_want", new String[] {fieldDesc});
                return;
            }
        }
    }

    public void checkFieldStringArray(String ruleStr) throws CheckErrException  {
        String fieldName = "";

        String[] rule = split(ruleStr);
        if (rule == null) {
            addMsg("err_format", new String[] {ruleStr});
            return;
        }

        int len = rule.length;
        if (len < 4) {
            addMsg("err_format", new String[] {ruleStr});
            return;
        }
        fieldName = rule[1];
        String fieldDesc = parseFieldDesc(rule[2]);

        String[] values = getFieldValues(fieldName);
        Field f = new Field(fieldName, fieldDesc, values, this.TYPE_STRING_ARRAY);
        fields.put(fieldName, f);

        String NULL = rule[3];

        if (values == null) {
            if (NULL.equalsIgnoreCase("not")) {
                addMsg("err_want", new String[] {fieldDesc});
            }
            else if (NULL.equals("allow"))
                ;
            else {
                addMsg("err_format", new String[] {NULL});
            }
        }
    }

    public void checkFieldBoolean(String ruleStr) throws CheckErrException  {
        String fieldName = "";

        String[] rule = split(ruleStr);
        if (rule == null) {
            addMsg("err_format", new String[] {ruleStr});
            return;
        }

        int len = rule.length;
        if (len < 4) {
            addMsg("err_format", new String[] {ruleStr});
            return;
        }
        fieldName = rule[1];

        String value = getFieldValue(fieldName);

        checkFieldBoolean(ruleStr, value);
    }

    public void checkFieldBoolean(String ruleStr, String value) throws CheckErrException {
        String fieldName = "";
        String type = "";
        String fieldDesc = "";

        String[] rule = split(ruleStr);
        if (rule == null) {
            addMsg("err_format", new String[] {ruleStr});
            return;
        }

        int len = rule.length;
        if (len < 4) {
            addMsg("err_format", new String[] {ruleStr});
            return;
        }
        type = rule[0];
        fieldName = rule[1];
        fieldDesc = parseFieldDesc(rule[2]);

        String NULL = rule[3];

        if (value == null) {
            if (NULL.equalsIgnoreCase("not")) {
                addMsg("err_want", new String[] {fieldDesc});
                return;
            }
            else if (NULL.equals("allow"))
                ;
            else {
                value = NULL;
            }
        }

        Boolean bu;

        if (value!=null && value.equals("true") || value.equals("1"))
            bu = new Boolean(true);
        else
            bu = new Boolean(false);

        boolean isValid = true;

        // 存储field值
        Field f = new Field(fieldName, fieldDesc, bu, type);
        fields.put(fieldName, f);

        // 验证

        // ...

        if (!isValid) {
            if (onErrorExit) {
                throw new CheckErrException(msgs);
            }
        }
    }

    public void checkFieldDate(String ruleStr) throws CheckErrException  {

⌨️ 快捷键说明

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