Example usage for org.apache.commons.validator Field isIndexed

List of usage examples for org.apache.commons.validator Field isIndexed

Introduction

In this page you can find the example usage for org.apache.commons.validator Field isIndexed.

Prototype

public boolean isIndexed() 

Source Link

Document

If there is a value specified for the indexedProperty field then true will be returned.

Usage

From source file:com.core.validators.CommonValidator.java

public static boolean validateRequiredIf(Object bean, Field field, Validator validator) {

    Object form = validator.getParameterValue(Validator.BEAN_PARAM);
    String value = null;/*w  ww .j  av a2  s.  c o  m*/
    boolean required = false;
    if (isString(bean)) {
        value = (String) bean;
    } else {
        value = ValidatorUtils.getValueAsString(bean, field.getProperty());
    }
    int i = 0;
    String fieldJoin = "AND";
    if (!GenericValidator.isBlankOrNull(field.getVarValue("fieldJoin"))) {
        fieldJoin = field.getVarValue("fieldJoin");
    }
    if (fieldJoin.equalsIgnoreCase("AND")) {
        required = true;
    }
    while (!GenericValidator.isBlankOrNull(field.getVarValue("field[" + i + "]"))) {
        String dependProp = field.getVarValue("field[" + i + "]");
        String dependTest = field.getVarValue("fieldTest[" + i + "]");
        String dependTestValue = field.getVarValue("fieldValue[" + i + "]");
        String dependIndexed = field.getVarValue("fieldIndexed[" + i + "]");
        if (dependIndexed == null)
            dependIndexed = "false";
        String dependVal = null;
        boolean this_required = false;
        if (field.isIndexed() && dependIndexed.equalsIgnoreCase("true")) {
            String key = field.getKey();
            if ((key.indexOf("[") > -1) && (key.indexOf("]") > -1)) {
                String ind = key.substring(0, key.indexOf(".") + 1);
                dependProp = ind + dependProp;
            }
        }
        dependVal = ValidatorUtils.getValueAsString(form, dependProp);
        if (dependTest.equals(FIELD_TEST_NULL)) {
            if ((dependVal != null) && (dependVal.length() > 0)) {
                this_required = false;
            } else {
                this_required = true;
            }
        }
        if (dependTest.equals(FIELD_TEST_NOTNULL)) {
            if ((dependVal != null) && (dependVal.length() > 0)) {
                this_required = true;
            } else {
                this_required = false;
            }
        }
        if (dependTest.equals(FIELD_TEST_EQUAL)) {
            this_required = dependTestValue.equalsIgnoreCase(dependVal);
        }
        if (fieldJoin.equalsIgnoreCase("AND")) {
            required = required && this_required;
        } else {
            required = required || this_required;
        }
        i++;
    }
    if (required) {
        if ((value != null) && (value.length() > 0)) {
            return true;
        } else {
            return false;
        }
    }
    return true;
}

From source file:net.jawr.web.resource.bundle.generator.validator.CommonsValidatorGenerator.java

@SuppressWarnings("unchecked")
private StringBuffer createDynamicJavascript(ValidatorResources resources, Form form, String messageNS,
        boolean stopOnErrors) {
    StringBuffer results = new StringBuffer();

    List<ValidatorAction> actions = this.createActionList(resources, form);

    final String methods = this.createMethods(actions, stopOnErrors);

    String jsFormName = form.getName();

    results.append(this.getJavascriptBegin(jsFormName, methods));

    for (Iterator<ValidatorAction> i = actions.iterator(); i.hasNext();) {
        ValidatorAction va = i.next();/*from  ww w  .  jav  a  2  s  .co m*/
        int jscriptVar = 0;
        String functionName = null;

        if ((va.getJsFunctionName() != null) && (va.getJsFunctionName().length() > 0)) {
            functionName = va.getJsFunctionName();
        } else {
            functionName = va.getName();
        }

        results.append("    function " + jsFormName + "_" + functionName + " () { \n");

        for (Iterator<Field> x = form.getFields().iterator(); x.hasNext();) {
            Field field = x.next();

            // Skip indexed fields for now until there is a good way to
            // handle error messages (and the length of the list (could
            // retrieve from scope?))
            if (field.isIndexed() || !field.isDependency(va.getName())) {
                continue;
            }

            String message = null;
            Msg msg = field.getMessage(va.getName());
            if ((msg != null) && !msg.isResource()) {
                message = JavascriptStringUtil.quote(msg.toString());
            } else {
                if (msg == null) {
                    message = va.getMsg();
                } else {
                    message = msg.getKey();
                }
                Arg[] args = field.getArgs(va.getName());

                message = messageNS + "." + message + "(";
                for (int a = 0; a < args.length; a++) {
                    if (args[a] != null) {
                        if (args[a].isResource()) {
                            message += messageNS + "." + args[a].getKey() + "()";
                        } else {
                            message += "\"" + args[a].getKey() + "\"";
                        }
                        message += ",";
                    }
                }
                message += "null)";
            }

            message = (message != null) ? message : "";

            // prefix variable with 'a' to make it a legal identifier
            results.append(
                    "     this.a" + jscriptVar++ + " = [\"" + field.getKey() + "\", " + (message) + ", ");

            results.append("function(varName){");

            Map<String, Var> vars = field.getVars();

            // Loop through the field's variables.
            Iterator<Entry<String, Var>> varsIterator = vars.entrySet().iterator();

            while (varsIterator.hasNext()) {

                Entry<String, Var> varEntry = varsIterator.next();
                String varName = varEntry.getKey();
                Var var = varEntry.getValue();
                String varValue = var.getValue();

                // Non-resource variable
                if (var.isResource()) {
                    varValue = messageNS + "." + varValue + "()";
                } else
                    varValue = "'" + varValue + "'";
                String jsType = var.getJsType();

                // skip requiredif variables field, fieldIndexed, fieldTest,
                // fieldValue
                if (varName.startsWith("field")) {
                    continue;
                }

                String varValueEscaped = JavascriptStringUtil.escape(varValue);

                if (Var.JSTYPE_INT.equalsIgnoreCase(jsType)) {
                    results.append("this." + varName + "=+" + varValueEscaped + "; ");
                } else if (Var.JSTYPE_REGEXP.equalsIgnoreCase(jsType)) {
                    results.append("this." + varName + "=eval('/'+" + varValueEscaped + "+'/'); ");
                } else if (Var.JSTYPE_STRING.equalsIgnoreCase(jsType)) {
                    results.append("this." + varName + "=" + varValueEscaped + "; ");

                    // So everyone using the latest format doesn't need to
                    // change their xml files immediately.
                } else if ("mask".equalsIgnoreCase(varName)) {
                    results.append("this." + varName + "=eval('/'+" + varValueEscaped + "+'/'); ");
                } else {
                    results.append("this." + varName + "=" + varValueEscaped + "; ");
                }
            }

            results.append(" return this[varName];}];\n");
        }

        results.append("    } \n\n");
    }
    return results;
}

From source file:org.apache.struts.faces.taglib.JavascriptValidatorTag.java

/**
 * Render the JavaScript for to perform validations based on the form name.
 *
 * @exception JspException if a JSP exception has occurred
 *///ww  w  .jav  a  2  s  . c  o m
public int doStartTag() throws JspException {
    StringBuffer results = new StringBuffer();

    ModuleConfig config = RequestUtils.getModuleConfig(pageContext);
    ValidatorResources resources = (ValidatorResources) pageContext
            .getAttribute(ValidatorPlugIn.VALIDATOR_KEY + config.getPrefix(), PageContext.APPLICATION_SCOPE);

    Locale locale = RequestUtils.retrieveUserLocale(this.pageContext, null);

    Form form = resources.get(locale, formName);
    if (form != null) {
        if ("true".equalsIgnoreCase(dynamicJavascript)) {
            MessageResources messages = (MessageResources) pageContext.getAttribute(bundle + config.getPrefix(),
                    PageContext.APPLICATION_SCOPE);

            List lActions = new ArrayList();
            List lActionMethods = new ArrayList();

            // Get List of actions for this Form
            for (Iterator i = form.getFields().iterator(); i.hasNext();) {
                Field field = (Field) i.next();

                for (Iterator x = field.getDependencies().iterator(); x.hasNext();) {
                    Object o = x.next();

                    if (o != null && !lActionMethods.contains(o)) {
                        lActionMethods.add(o);
                    }
                }

            }

            // Create list of ValidatorActions based on lActionMethods
            for (Iterator i = lActionMethods.iterator(); i.hasNext();) {
                String depends = (String) i.next();
                ValidatorAction va = resources.getValidatorAction(depends);

                // throw nicer NPE for easier debugging
                if (va == null) {
                    throw new NullPointerException(
                            "Depends string \"" + depends + "\" was not found in validator-rules.xml.");
                }

                String javascript = va.getJavascript();
                if (javascript != null && javascript.length() > 0) {
                    lActions.add(va);
                } else {
                    i.remove();
                }
            }

            Collections.sort(lActions, new Comparator() {
                public int compare(Object o1, Object o2) {
                    ValidatorAction va1 = (ValidatorAction) o1;
                    ValidatorAction va2 = (ValidatorAction) o2;

                    if ((va1.getDepends() == null || va1.getDepends().length() == 0)
                            && (va2.getDepends() == null || va2.getDepends().length() == 0)) {
                        return 0;
                    } else if ((va1.getDepends() != null && va1.getDepends().length() > 0)
                            && (va2.getDepends() == null || va2.getDepends().length() == 0)) {
                        return 1;
                    } else if ((va1.getDepends() == null || va1.getDepends().length() == 0)
                            && (va2.getDepends() != null && va2.getDepends().length() > 0)) {
                        return -1;
                    } else {
                        return va1.getDependencies().size() - va2.getDependencies().size();
                    }
                }
            });

            String methods = null;
            for (Iterator i = lActions.iterator(); i.hasNext();) {
                ValidatorAction va = (ValidatorAction) i.next();

                if (methods == null) {
                    methods = va.getMethod() + "(form)";
                } else {
                    methods += " && " + va.getMethod() + "(form)";
                }
            }

            results.append(getJavascriptBegin(methods));

            for (Iterator i = lActions.iterator(); i.hasNext();) {
                ValidatorAction va = (ValidatorAction) i.next();
                String jscriptVar = null;
                String functionName = null;

                if (va.getJsFunctionName() != null && va.getJsFunctionName().length() > 0) {
                    functionName = va.getJsFunctionName();
                } else {
                    functionName = va.getName();
                }

                if (isStruts11()) {
                    results.append("    function " + functionName + " () { \n");
                } else {
                    results.append("    function " + formName + "_" + functionName + " () { \n");
                }
                for (Iterator x = form.getFields().iterator(); x.hasNext();) {
                    Field field = (Field) x.next();

                    // Skip indexed fields for now until there is a good way to handle 
                    // error messages (and the length of the list (could retrieve from scope?))
                    if (field.isIndexed() || field.getPage() != page || !field.isDependency(va.getName())) {

                        continue;
                    }

                    String message = Resources.getMessage(messages, locale, va, field);

                    message = (message != null) ? message : "";

                    jscriptVar = this.getNextVar(jscriptVar);

                    results.append("     this." + jscriptVar + " = new Array(\"" + getFormClientId() + ":"
                            + field.getKey() + "\", \"" + message + "\", ");

                    results.append("new Function (\"varName\", \"");

                    Map vars = field.getVars();
                    // Loop through the field's variables.
                    Iterator varsIterator = vars.keySet().iterator();
                    while (varsIterator.hasNext()) {
                        String varName = (String) varsIterator.next();
                        Var var = (Var) vars.get(varName);
                        String varValue = var.getValue();
                        String jsType = var.getJsType();

                        // skip requiredif variables field, fieldIndexed, fieldTest, fieldValue
                        if (varName.startsWith("field")) {
                            continue;
                        }

                        if (Var.JSTYPE_INT.equalsIgnoreCase(jsType)) {
                            results.append("this." + varName + "="
                                    + ValidatorUtil.replace(varValue, "\\", "\\\\") + "; ");
                        } else if (Var.JSTYPE_REGEXP.equalsIgnoreCase(jsType)) {
                            results.append("this." + varName + "=/"
                                    + ValidatorUtil.replace(varValue, "\\", "\\\\") + "/; ");
                        } else if (Var.JSTYPE_STRING.equalsIgnoreCase(jsType)) {
                            results.append("this." + varName + "='"
                                    + ValidatorUtil.replace(varValue, "\\", "\\\\") + "'; ");
                            // So everyone using the latest format doesn't need to change their xml files immediately.
                        } else if ("mask".equalsIgnoreCase(varName)) {
                            results.append("this." + varName + "=/"
                                    + ValidatorUtil.replace(varValue, "\\", "\\\\") + "/; ");
                        } else {
                            results.append("this." + varName + "='"
                                    + ValidatorUtil.replace(varValue, "\\", "\\\\") + "'; ");
                        }
                    }

                    results.append(" return this[varName];\"));\n");
                }
                results.append("    } \n\n");
            }
        } else if ("true".equalsIgnoreCase(staticJavascript)) {
            results.append(this.getStartElement());
            if ("true".equalsIgnoreCase(htmlComment)) {
                results.append(htmlBeginComment);
            }
        }
    }

    if ("true".equalsIgnoreCase(staticJavascript)) {
        results.append(getJavascriptStaticMethods(resources));
    }

    if (form != null
            && ("true".equalsIgnoreCase(dynamicJavascript) || "true".equalsIgnoreCase(staticJavascript))) {

        results.append(getJavascriptEnd());
    }

    JspWriter writer = pageContext.getOut();
    try {
        writer.print(results.toString());
    } catch (IOException e) {
        throw new JspException(e.getMessage());
    }

    return (EVAL_BODY_TAG);

}

From source file:org.apache.struts.taglib.html.JavascriptValidatorTag.java

/**
 * Generates the dynamic JavaScript for the form.
 *
 * @param config// w w  w .  jav  a2  s . c  o  m
 * @param resources
 * @param locale
 * @param form
 */
private String createDynamicJavascript(ModuleConfig config, ValidatorResources resources, Locale locale,
        Form form) throws JspException {
    StringBuffer results = new StringBuffer();

    MessageResources messages = TagUtils.getInstance().retrieveMessageResources(pageContext, bundle, true);

    HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
    ServletContext application = pageContext.getServletContext();

    List actions = this.createActionList(resources, form);

    final String methods = this.createMethods(actions, this.stopOnError(config));

    String formName = form.getName();

    jsFormName = formName;

    if (jsFormName.charAt(0) == '/') {
        String mappingName = TagUtils.getInstance().getActionMappingName(jsFormName);
        ActionMapping mapping = (ActionMapping) config.findActionConfig(mappingName);

        if (mapping == null) {
            JspException e = new JspException(messages.getMessage("formTag.mapping", mappingName));

            pageContext.setAttribute(Globals.EXCEPTION_KEY, e, PageContext.REQUEST_SCOPE);
            throw e;
        }

        jsFormName = mapping.getAttribute();
    }

    results.append(this.getJavascriptBegin(methods));

    for (Iterator i = actions.iterator(); i.hasNext();) {
        ValidatorAction va = (ValidatorAction) i.next();
        int jscriptVar = 0;
        String functionName = null;

        if ((va.getJsFunctionName() != null) && (va.getJsFunctionName().length() > 0)) {
            functionName = va.getJsFunctionName();
        } else {
            functionName = va.getName();
        }

        results.append("    function " + jsFormName + "_" + functionName + " () { \n");

        for (Iterator x = form.getFields().iterator(); x.hasNext();) {
            Field field = (Field) x.next();

            // Skip indexed fields for now until there is a good way to
            // handle error messages (and the length of the list (could
            // retrieve from scope?))
            if (field.isIndexed() || (field.getPage() != page) || !field.isDependency(va.getName())) {
                continue;
            }

            String message = Resources.getMessage(application, request, messages, locale, va, field);

            message = (message != null) ? message : "";

            // prefix variable with 'a' to make it a legal identifier
            results.append("     this.a" + jscriptVar++ + " = new Array(\"" + field.getKey() + "\", \""
                    + escapeQuotes(message) + "\", ");

            results.append("new Function (\"varName\", \"");

            Map vars = field.getVars();

            // Loop through the field's variables.
            Iterator varsIterator = vars.keySet().iterator();

            while (varsIterator.hasNext()) {
                String varName = (String) varsIterator.next();
                Var var = (Var) vars.get(varName);
                String varValue = Resources.getVarValue(var, application, request, false);
                String jsType = var.getJsType();

                // skip requiredif variables field, fieldIndexed, fieldTest,
                // fieldValue
                if (varName.startsWith("field")) {
                    continue;
                }

                String varValueEscaped = escapeJavascript(varValue);

                if (Var.JSTYPE_INT.equalsIgnoreCase(jsType)) {
                    results.append("this." + varName + "=" + varValueEscaped + "; ");
                } else if (Var.JSTYPE_REGEXP.equalsIgnoreCase(jsType)) {
                    results.append("this." + varName + "=/" + varValueEscaped + "/; ");
                } else if (Var.JSTYPE_STRING.equalsIgnoreCase(jsType)) {
                    results.append("this." + varName + "='" + varValueEscaped + "'; ");

                    // So everyone using the latest format doesn't need to
                    // change their xml files immediately.
                } else if ("mask".equalsIgnoreCase(varName)) {
                    results.append("this." + varName + "=/" + varValueEscaped + "/; ");
                } else {
                    results.append("this." + varName + "='" + varValueEscaped + "'; ");
                }
            }

            results.append(" return this[varName];\"));\n");
        }

        results.append("    } \n\n");
    }

    return results.toString();
}

From source file:org.apache.struts.validator.FieldChecks.java

/**
 * Checks if the field isn't null based on the values of other fields.
 *
 * @param bean      The bean validation is being performed on.
 * @param va        The <code>ValidatorAction</code> that is currently
 *                  being performed.//w ww  .  j a va  2 s .c  o  m
 * @param field     The <code>Field</code> object associated with the
 *                  current field being validated.
 * @param errors    The <code>ActionMessages</code> object to add errors
 *                  to if any validation errors occur.
 * @param validator The <code>Validator</code> instance, used to access
 *                  other field values.
 * @param request   Current request object.
 * @return true if meets stated requirements, false otherwise.
 */
public static boolean validateRequiredIf(Object bean, ValidatorAction va, Field field, ActionMessages errors,
        Validator validator, HttpServletRequest request) {
    Object form = validator.getParameterValue(org.apache.commons.validator.Validator.BEAN_PARAM);
    String value = null;
    boolean required = false;

    value = evaluateBean(bean, field);

    int i = 0;
    String fieldJoin = "AND";

    if (!GenericValidator.isBlankOrNull(field.getVarValue("fieldJoin"))) {
        fieldJoin = field.getVarValue("fieldJoin");
    }

    if (fieldJoin.equalsIgnoreCase("AND")) {
        required = true;
    }

    while (!GenericValidator.isBlankOrNull(field.getVarValue("field[" + i + "]"))) {
        String dependProp = field.getVarValue("field[" + i + "]");
        String dependTest = field.getVarValue("fieldTest[" + i + "]");
        String dependTestValue = field.getVarValue("fieldValue[" + i + "]");
        String dependIndexed = field.getVarValue("fieldIndexed[" + i + "]");

        if (dependIndexed == null) {
            dependIndexed = "false";
        }

        String dependVal = null;
        boolean thisRequired = false;

        if (field.isIndexed() && dependIndexed.equalsIgnoreCase("true")) {
            String key = field.getKey();

            if ((key.indexOf("[") > -1) && (key.indexOf("]") > -1)) {
                String ind = key.substring(0, key.indexOf(".") + 1);

                dependProp = ind + dependProp;
            }
        }

        dependVal = ValidatorUtils.getValueAsString(form, dependProp);

        if (dependTest.equals(FIELD_TEST_NULL)) {
            if ((dependVal != null) && (dependVal.length() > 0)) {
                thisRequired = false;
            } else {
                thisRequired = true;
            }
        }

        if (dependTest.equals(FIELD_TEST_NOTNULL)) {
            if ((dependVal != null) && (dependVal.length() > 0)) {
                thisRequired = true;
            } else {
                thisRequired = false;
            }
        }

        if (dependTest.equals(FIELD_TEST_EQUAL)) {
            thisRequired = dependTestValue.equalsIgnoreCase(dependVal);
        }

        if (fieldJoin.equalsIgnoreCase("AND")) {
            required = required && thisRequired;
        } else {
            required = required || thisRequired;
        }

        i++;
    }

    if (required) {
        if (GenericValidator.isBlankOrNull(value)) {
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));

            return false;
        } else {
            return true;
        }
    }

    return true;
}

From source file:org.apache.struts.validator.validwhen.ValidWhen.java

/**
 * Checks if the field matches the boolean expression specified in
 * <code>test</code> parameter.
 *
 * @param bean    The bean validation is being performed on.
 * @param va      The <code>ValidatorAction</code> that is currently being
 *                performed./*from w ww  . ja  v a 2s  . c  o  m*/
 * @param field   The <code>Field</code> object associated with the
 *                current field being validated.
 * @param errors  The <code>ActionMessages</code> object to add errors to
 *                if any validation errors occur.
 * @param request Current request object.
 * @return <code>true</code> if meets stated requirements,
 *         <code>false</code> otherwise.
 */
public static boolean validateValidWhen(Object bean, ValidatorAction va, Field field, ActionMessages errors,
        Validator validator, HttpServletRequest request) {
    Object form = validator.getParameterValue(Validator.BEAN_PARAM);
    String value = null;
    boolean valid = false;
    int index = -1;

    if (field.isIndexed()) {
        String key = field.getKey();

        final int leftBracket = key.indexOf("[");
        final int rightBracket = key.indexOf("]");

        if ((leftBracket > -1) && (rightBracket > -1)) {
            index = Integer.parseInt(key.substring(leftBracket + 1, rightBracket));
        }
    }

    if (isString(bean)) {
        value = (String) bean;
    } else {
        value = ValidatorUtils.getValueAsString(bean, field.getProperty());
    }

    String test = null;

    try {
        test = Resources.getVarValue("test", field, validator, request, true);
    } catch (IllegalArgumentException ex) {
        String logErrorMsg = sysmsgs.getMessage("validation.failed", "validwhen", field.getProperty(),
                ex.toString());

        log.error(logErrorMsg);

        String userErrorMsg = sysmsgs.getMessage("system.error");

        errors.add(field.getKey(), new ActionMessage(userErrorMsg, false));

        return false;
    }

    // Create the Lexer
    ValidWhenLexer lexer = null;

    try {
        lexer = new ValidWhenLexer(new StringReader(test));
    } catch (Exception ex) {
        String logErrorMsg = "ValidWhenLexer Error for field ' " + field.getKey() + "' - " + ex;

        log.error(logErrorMsg);

        String userErrorMsg = sysmsgs.getMessage("system.error");

        errors.add(field.getKey(), new ActionMessage(userErrorMsg, false));

        return false;
    }

    // Create the Parser
    ValidWhenParser parser = null;

    try {
        parser = new ValidWhenParser(lexer);
    } catch (Exception ex) {
        String logErrorMsg = "ValidWhenParser Error for field ' " + field.getKey() + "' - " + ex;

        log.error(logErrorMsg);

        String userErrorMsg = sysmsgs.getMessage("system.error");

        errors.add(field.getKey(), new ActionMessage(userErrorMsg, false));

        return false;
    }

    parser.setForm(form);
    parser.setIndex(index);
    parser.setValue(value);

    try {
        parser.expression();
        valid = parser.getResult();
    } catch (Exception ex) {
        String logErrorMsg = "ValidWhen Error for field ' " + field.getKey() + "' - " + ex;

        log.error(logErrorMsg);

        String userErrorMsg = sysmsgs.getMessage("system.error");

        errors.add(field.getKey(), new ActionMessage(userErrorMsg, false));

        return false;
    }

    if (!valid) {
        errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));

        return false;
    }

    return true;
}

From source file:org.apache.velocity.tools.struts.ValidatorTool.java

/**
 * Generates the dynamic JavaScript for the form.
 *
 * @param resources the validator resources
 * @param locale the locale for the current request
 * @param form the form to generate javascript for
 * @return the dynamic javascript/*from  w ww  .java  2  s .c  om*/
 */
protected String getDynamicJavascript(ValidatorResources resources, Locale locale, Form form) {
    StringBuffer results = new StringBuffer();

    MessageResources messages = StrutsUtils.getMessageResources(request, app);

    List actions = createActionList(resources, form);

    final String methods = createMethods(actions);

    String formName = form.getName();

    jsFormName = formName;
    if (jsFormName.charAt(0) == '/') {
        String mappingName = StrutsUtils.getActionMappingName(jsFormName);
        ModuleConfig mconfig = ModuleUtils.getInstance().getModuleConfig(request, app);

        ActionConfig mapping = (ActionConfig) mconfig.findActionConfig(mappingName);
        if (mapping == null) {
            throw new NullPointerException("Cannot retrieve mapping for action " + mappingName);
        }
        jsFormName = mapping.getAttribute();
    }

    results.append(getJavascriptBegin(methods));

    for (Iterator i = actions.iterator(); i.hasNext();) {
        ValidatorAction va = (ValidatorAction) i.next();
        int jscriptVar = 0;
        String functionName = null;

        if (va.getJsFunctionName() != null && va.getJsFunctionName().length() > 0) {
            functionName = va.getJsFunctionName();
        } else {
            functionName = va.getName();
        }

        results.append("    function ");
        results.append(jsFormName);
        results.append("_");
        results.append(functionName);
        results.append(" () { \n");

        for (Iterator x = form.getFields().iterator(); x.hasNext();) {
            Field field = (Field) x.next();

            // Skip indexed fields for now until there is
            // a good way to handle error messages (and the length
            // of the list (could retrieve from scope?))
            if (field.isIndexed() || field.getPage() != page || !field.isDependency(va.getName())) {
                continue;
            }

            String message = Resources.getMessage(messages, locale, va, field);

            message = (message != null) ? message : "";

            //jscriptVar = this.getNextVar(jscriptVar);

            results.append("     this.a");
            results.append(jscriptVar++);
            results.append(" = new Array(\"");
            results.append(field.getKey()); // TODO: escape?
            results.append("\", \"");
            results.append(escapeJavascript(message));
            results.append("\", ");
            results.append("new Function (\"varName\", \"");

            Map vars = field.getVars();
            // Loop through the field's variables.
            Iterator varsIterator = vars.keySet().iterator();
            while (varsIterator.hasNext()) {
                String varName = (String) varsIterator.next(); // TODO: escape?
                Var var = (Var) vars.get(varName);
                String varValue = var.getValue();
                String jsType = var.getJsType();

                // skip requiredif variables field, fieldIndexed, fieldTest, fieldValue
                if (varName.startsWith("field")) {
                    continue;
                }

                // these are appended no matter what jsType is
                results.append("this.");
                results.append(varName);

                String escapedVarValue = escapeJavascript(varValue);

                if (Var.JSTYPE_INT.equalsIgnoreCase(jsType)) {
                    results.append("=");
                    results.append(escapedVarValue);
                    results.append("; ");
                } else if (Var.JSTYPE_REGEXP.equalsIgnoreCase(jsType)) {
                    results.append("=/");
                    results.append(escapedVarValue);
                    results.append("/; ");
                } else if (Var.JSTYPE_STRING.equalsIgnoreCase(jsType)) {
                    results.append("='");
                    results.append(escapedVarValue);
                    results.append("'; ");
                }
                // So everyone using the latest format
                // doesn't need to change their xml files immediately.
                else if ("mask".equalsIgnoreCase(varName)) {
                    results.append("=/");
                    results.append(escapedVarValue);
                    results.append("/; ");
                } else {
                    results.append("='");
                    results.append(escapedVarValue);
                    results.append("'; ");
                }
            }
            results.append(" return this[varName];\"));\n");
        }
        results.append("    } \n\n");
    }
    return results.toString();
}

From source file:org.caofei.taglib.html.JavascriptValidatorTag.java

/**
 * Generates the dynamic JavaScript for the form.
 *
 * @param config// w w  w. j a  va2 s  . co  m
 * @param resources
 * @param locale
 * @param form
 */
private String createDynamicJavascript(ValidatorResources resources, Locale locale, Form form)
        throws JspException {
    StringBuffer results = new StringBuffer();
    /*
            MessageResources messages =
    TagUtils.getInstance().retrieveMessageResources(pageContext,
        bundle, true);
    */
    HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
    ServletContext application = pageContext.getServletContext();

    List actions = this.createActionList(resources, form);

    final String methods = this.createMethods(actions, this.stopOnError());

    String formName = form.getName();

    jsFormName = formName;

    /*
    if (jsFormName.charAt(0) == '/') {
    String mappingName =
        TagUtils.getInstance().getActionMappingName(jsFormName);
    ActionMapping mapping =
        (ActionMapping) config.findActionConfig(mappingName);
            
    if (mapping == null) {
        JspException e =
            new JspException(messages.getMessage("formTag.mapping",
                    mappingName));
            
        pageContext.setAttribute(Globals.EXCEPTION_KEY, e,
            PageContext.REQUEST_SCOPE);
        throw e;
    }
    jsFormName = mapping.getAttribute();
    }
     */

    results.append(this.getJavascriptBegin(methods));

    for (Iterator i = actions.iterator(); i.hasNext();) {
        ValidatorAction va = (ValidatorAction) i.next();
        int jscriptVar = 0;
        String functionName = null;

        if ((va.getJsFunctionName() != null) && (va.getJsFunctionName().length() > 0)) {
            functionName = va.getJsFunctionName();
        } else {
            functionName = va.getName();
        }

        results.append("    function " + jsFormName + "_" + functionName + " () { \n");

        for (Iterator x = form.getFields().iterator(); x.hasNext();) {
            Field field = (Field) x.next();

            // Skip indexed fields for now until there is a good way to
            // handle error messages (and the length of the list (could
            // retrieve from scope?))
            if (field.isIndexed() || (field.getPage() != page) || !field.isDependency(va.getName())) {
                continue;
            }

            String message = null;
            /*
            Resources.getMessage(application, request, messages,
                locale, va, field);
            */
            message = (message != null) ? message : "";

            // prefix variable with 'a' to make it a legal identifier
            results.append("     this.a" + jscriptVar++ + " = new Array(\"" + field.getKey() + "\", \""
                    + escapeQuotes(message) + "\", ");

            results.append("new Function (\"varName\", \"");

            Map vars = field.getVars();

            // Loop through the field's variables.
            Iterator varsIterator = vars.keySet().iterator();

            while (varsIterator.hasNext()) {
                String varName = (String) varsIterator.next();
                Var var = (Var) vars.get(varName);
                String varValue = null;
                /*
                Resources.getVarValue(var, application, request, false);
                */
                String jsType = var.getJsType();

                // skip requiredif variables field, fieldIndexed, fieldTest,
                // fieldValue
                if (varName.startsWith("field")) {
                    continue;
                }

                String varValueEscaped = escapeJavascript(varValue);

                if (Var.JSTYPE_INT.equalsIgnoreCase(jsType)) {
                    results.append("this." + varName + "=" + varValueEscaped + "; ");
                } else if (Var.JSTYPE_REGEXP.equalsIgnoreCase(jsType)) {
                    results.append("this." + varName + "=/" + varValueEscaped + "/; ");
                } else if (Var.JSTYPE_STRING.equalsIgnoreCase(jsType)) {
                    results.append("this." + varName + "='" + varValueEscaped + "'; ");

                    // So everyone using the latest format doesn't need to
                    // change their xml files immediately.
                } else if ("mask".equalsIgnoreCase(varName)) {
                    results.append("this." + varName + "=/" + varValueEscaped + "/; ");
                } else {
                    results.append("this." + varName + "='" + varValueEscaped + "'; ");
                }
            }

            results.append(" return this[varName];\"));\n");
        }

        results.append("    } \n\n");
    }

    return results.toString();
}

From source file:org.hyperic.util.validator.common.CommonValidatorUtil.java

/**
 * Conditional validation method./*from w  w w .  j av a 2  s.  c  om*/
 * @param bean to be tested
 * @param bean's field to be tested.
 * @param current validator
 * @return true if condition satisfied, false otherwise.
 */
public static boolean validateRequiredIf(Object bean, Field field, Validator validator) {
    Object form = validator.getParameterValue(Validator.BEAN_PARAM);
    String value = null;
    boolean required = false;
    if (isString(bean)) {
        value = (String) bean;
    } else {
        value = ValidatorUtils.getValueAsString(bean, field.getProperty());
    }
    int i = 0;
    String fieldJoin = "AND";
    if (!GenericValidator.isBlankOrNull(field.getVarValue("field-join"))) {
        fieldJoin = field.getVarValue("field-join");
    }
    if (fieldJoin.equalsIgnoreCase("AND")) {
        required = true;
    }
    while (!GenericValidator.isBlankOrNull(field.getVarValue("field[" + i + "]"))) {
        String dependProp = field.getVarValue("field[" + i + "]");
        String dependTest = field.getVarValue("field-test[" + i + "]");
        String dependTestValue = field.getVarValue("field-value[" + i + "]");
        String dependIndexed = field.getVarValue("field-indexed[" + i + "]");
        if (dependIndexed == null)
            dependIndexed = "false";
        String dependVal = null;
        boolean this_required = false;
        if (field.isIndexed() && dependIndexed.equalsIgnoreCase("true")) {
            String key = field.getKey();
            if ((key.indexOf("[") > -1) && (key.indexOf("]") > -1)) {
                String ind = key.substring(0, key.indexOf(".") + 1);
                dependProp = ind + dependProp;
            }
        }
        dependVal = ValidatorUtils.getValueAsString(form, dependProp);
        if (dependTest.equals(FIELD_TEST_NULL)) {
            if ((dependVal != null) && (dependVal.length() > 0)) {
                this_required = false;
            } else {
                this_required = true;
            }
        }
        if (dependTest.equals(FIELD_TEST_NOTNULL)) {
            if ((dependVal != null) && (dependVal.length() > 0)) {
                this_required = true;
            } else {
                this_required = false;
            }
        }
        if (dependTest.equals(FIELD_TEST_EQUAL)) {
            this_required = dependTestValue.equalsIgnoreCase(dependVal);
        }
        if (fieldJoin.equalsIgnoreCase("AND")) {
            required = required && this_required;
        } else {
            required = required || this_required;
        }
        i++;
    }
    if (required) {
        if ((value != null) && (value.length() > 0)) {
            return true;
        } else {
            return false;
        }
    }
    return true;
}

From source file:org.megatome.frame2.validator.CommonsFieldValidator.java

/**
 * Validate a value that is required if a certain circumstance is met.
 * /*from   ww  w  .  ja  v a2 s  .c o m*/
 * @param bean
 *            The event containing the field to validate
 * @param va
 *            The validator action
 * @param errors
 *            Errors object to populate
 * @param field
 *            The field to validate
 * @return True if validation passes
 */
public static boolean validateRequiredIf(Object bean, ValidatorAction va, Errors errors, Field field) {
    String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
    boolean required = false;
    int i = 0;
    String fieldJoin = "AND"; //$NON-NLS-1$
    if (!GenericValidator.isBlankOrNull(field.getVarValue("fieldJoin"))) { //$NON-NLS-1$
        fieldJoin = field.getVarValue("fieldJoin"); //$NON-NLS-1$
    }
    if (fieldJoin.equalsIgnoreCase("AND")) { //$NON-NLS-1$
        required = true;
    }
    while (!GenericValidator.isBlankOrNull(field.getVarValue("field[" + i //$NON-NLS-1$
            + "]"))) { //$NON-NLS-1$
        String dependProp = field.getVarValue("field[" + i + "]"); //$NON-NLS-1$ //$NON-NLS-2$
        String dependTest = field.getVarValue("fieldTest[" + i + "]"); //$NON-NLS-1$ //$NON-NLS-2$
        String dependTestValue = field.getVarValue("fieldValue[" + i + "]"); //$NON-NLS-1$ //$NON-NLS-2$
        String dependIndexed = field.getVarValue("fieldIndexed[" + i + "]"); //$NON-NLS-1$ //$NON-NLS-2$
        if (dependIndexed == null) {
            dependIndexed = "false"; //$NON-NLS-1$
        }
        String dependVal = null;
        boolean thisRequired = false;
        if (field.isIndexed() && dependIndexed.equalsIgnoreCase("true")) { //$NON-NLS-1$
            String key = field.getKey();
            if ((key.indexOf("[") > -1) && (key.indexOf("]") > -1)) { //$NON-NLS-1$ //$NON-NLS-2$
                String ind = key.substring(0, key.indexOf(".") + 1); //$NON-NLS-1$
                dependProp = ind + dependProp;
            }
        }
        dependVal = ValidatorUtils.getValueAsString(bean, dependProp);
        if (dependTest.equals(FIELD_TEST_NULL)) {
            if ((dependVal != null) && (dependVal.length() > 0)) {
                thisRequired = false;
            } else {
                thisRequired = true;
            }
        }
        if (dependTest.equals(FIELD_TEST_NOTNULL)) {
            if ((dependVal != null) && (dependVal.length() > 0)) {
                thisRequired = true;
            } else {
                thisRequired = false;
            }
        }
        if (dependTest.equals(FIELD_TEST_EQUAL)) {
            thisRequired = dependTestValue.equalsIgnoreCase(dependVal);
        }
        if (fieldJoin.equalsIgnoreCase("AND")) { //$NON-NLS-1$
            required = required && thisRequired;
        } else {
            required = required || thisRequired;
        }
        i++;
    }
    if (required) {
        if (GenericValidator.isBlankOrNull(value)) {
            addError(va, errors, field, null);
            return false;
        }

        return true;
    }
    return true;
}