Example usage for org.apache.commons.validator GenericValidator isBlankOrNull

List of usage examples for org.apache.commons.validator GenericValidator isBlankOrNull

Introduction

In this page you can find the example usage for org.apache.commons.validator GenericValidator isBlankOrNull.

Prototype

public static boolean isBlankOrNull(String value) 

Source Link

Document

Checks if the field isn't null and length of the field is greater than zero not including whitespace.

Usage

From source file:jp.terasoluna.fw.web.struts.form.FieldChecksEx.java

/**
 * wtB?[hv`FbN?B//from   w w w . j a  v  a  2s  .  co m
 * 
 * <p>
 * G?[???AG?[????A wG?[?Xg?B G?[?bZ?[WtH?[}bg?A
 * <code>validation-rules.xml</code>L?q?B<br>
 * ?A5<code>true</code>p ???B
 * </p>
 * <h5>validation.xmlL?q</h5>
 * <code><pre>
 * &lt;form name=&quot;/sample&quot;&gt;
 *  ?E?E?E
 *  &lt;field property=&quot;escape&quot;
 *      depends=&quot;stringLength&quot;&gt;
 *    &lt;arg0 key=&quot;sample.escape&quot;/&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;length&lt;/var-name&gt;
 *      &lt;var-value&gt;5&lt;/var-value&gt;
 *    &lt;/var&gt;
 *  &lt;/field&gt;
 *  ?E?E?E
 * &lt;/form&gt;
 * </pre></code>
 * <h5>validation.xml?v&lt;var&gt;vf</h5>
 * <table border="1">
 * <tr>
 * <td><center><b><code>var-name</code></b></center></td>
 * <td><center><b><code>var-value</code></b></center></td>
 * <td><center><b>K?{?</b></center></td>
 * <td><center><b>Tv</b></center></td>
 * </tr>
 * <tr>
 * <td> stringLength </td>
 * <td>?</td>
 * <td>false</td>
 * <td>w? <code>true</code> ?<code>true</code>p?B</td>
 * </tr>
 * </table>
 * 
 * @param bean
 *            ??IuWFNg
 * @param va
 *            ValidatorpValidatorAction
 * @param field
 *            tB?[hIuWFNg
 * @param errors
 *            ANVG?[
 * @param validator
 *            ValidatorCX^X
 * @param request
 *            HTTPNGXg
 * @return l? <code>true</code>
 */
public static boolean validateStringLength(Object bean, ValidatorAction va, Field field, ActionMessages errors,
        Validator validator, HttpServletRequest request) {

    // beannull?AG?[?O?o?Atruep?B
    if (bean == null) {
        log.error("bean is null.");
        return true;
    }

    // 
    String lengthStr = field.getVarValue("stringLength");
    // w??A`FbN?s
    if (lengthStr == null || "".equals(lengthStr)) {
        return true;
    }
    String value = null;
    if (isString(bean)) {
        value = (String) bean;
    } else {
        value = ValidatorUtils.getValueAsString(bean, field.getProperty());
    }
    // ?lnull?Atruep
    if (GenericValidator.isBlankOrNull(value)) {
        return true;
    }

    int checkLength = 0;
    try {
        checkLength = Integer.valueOf(lengthStr).intValue();
    } catch (NumberFormatException e) {
        // wints\??
        log.error("stringLength is not numeric(integer).", e);
        return true;
    }
    // length?Afalsep
    if (value.length() != checkLength) {
        errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
        return false;
    }

    return true;
}

From source file:jp.terasoluna.fw.validation.FieldChecks.java

/**
 * ???float??????/*from   w  w  w .  j a v  a2  s  .  c  om*/
 * ??????
 *
 * <p>???10?100???????????
 * true?????
 *
 * <h5>validation.xml?</h5>
 * <code><pre>
 * &lt;form name=&quot;sample&quot;&gt;
 *  
 *  &lt;field property=&quot;floatField&quot;
 *      depends=&quot;floatRange&quot;&gt;
 *    &lt;arg key=&quot;sample.floatField&quot; position="0"/&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;floatRangeMin&lt;/var-name&gt;
 *      &lt;var-value&gt;10&lt;/var-value&gt;
 *    &lt;/var&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;floatRangeMax&lt;/var-name&gt;
 *      &lt;var-value&gt;100&lt;/var-value&gt;
 *    &lt;/var&gt;
 *  &lt;/field&gt;
 *  
 * &lt;/form&gt;
 * </pre></code>
 *
 * <h5>validation.xml???&lt;var&gt;?</h5>
 * <table border="1">
 *  <tr>
 *   <td><center><b><code>var-name</code></b></center></td>
 *   <td><center><b><code>var-value</code></b></center></td>
 *   <td><center><b></b></center></td>
 *   <td><center><b>?</b></center></td>
 *  </tr>
 *  <tr>
 *   <td> floatRangeMin </td>
 *   <td>?</td>
 *   <td>false</td>
 *   <td>????????Float???
 *   ?
 *   ????????</td>
 *  </tr>
 *  <tr>
 *   <td> floatRangeMax </td>
 *   <td></td>
 *   <td>false</td>
 *   <td>???????Float??
 *   ?
 *   ????????</td>
 *  </tr>
 * </table>
 *
 * @param bean ?JavaBean
 * @param va ?<code>ValidatorAction</code>
 * @param field ?<code>Field</code>
 * @param errors ?????
 * ??
 * @return ??????<code>true</code>?
 * ????<code>false</code>?
 * @throws ValidatorException validation??????
 * ?
 */
public boolean validateFloatRange(Object bean, ValidatorAction va, Field field, ValidationErrors errors)
        throws ValidatorException {
    // 
    String value = extractValue(bean, field);
    if (StringUtils.isEmpty(value)) {
        return true;
    }

    // float?? --- Float??????
    float floatValue = 0;
    try {
        floatValue = Float.parseFloat(value);
    } catch (NumberFormatException e) {
        rejectValue(errors, field, va, bean);
        return false;
    }

    //  --- ?Float??????
    //                ????
    String strMin = field.getVarValue("floatRangeMin");
    float min = Float.MIN_VALUE;
    if (!GenericValidator.isBlankOrNull(strMin)) {
        try {
            min = Float.parseFloat(strMin);
        } catch (NumberFormatException e) {
            String message = "Mistake on validation definition file. " + "- floatRangeMin is not number. "
                    + "You'll have to check it over. ";
            log.error(message, e);
            throw new ValidatorException(message);
        }
    }
    String strMax = field.getVarValue("floatRangeMax");
    float max = Float.MAX_VALUE;
    if (!GenericValidator.isBlankOrNull(strMax)) {
        try {
            max = Float.parseFloat(strMax);
        } catch (NumberFormatException e) {
            String message = "Mistake on validation definition file. " + "- floatRangeMax is not number. "
                    + "You'll have to check it over. ";
            log.error(message, e);
            throw new ValidatorException(message);
        }
    }

    // 
    if (!GenericValidator.isInRange(floatValue, min, max)) {
        rejectValue(errors, field, va, bean);
        return false;
    }
    return true;
}

From source file:it.eng.spagobi.tools.scheduler.jobs.CopyOfExecuteBIDocumentJob.java

private String[] findRecipients(DispatchContext info, BIObject biobj, IDataStore dataStore) {
    logger.debug("IN");
    String[] toReturn = null;//from   w  ww.ja  v  a 2  s.  c  o  m
    List<String> recipients = new ArrayList();
    try {
        recipients.addAll(findRecipientsFromFixedList(info));
    } catch (Exception e) {
        logger.error(e);
    }
    try {
        recipients.addAll(findRecipientsFromDataSet(info, biobj, dataStore));
    } catch (Exception e) {
        logger.error(e);
    }
    try {
        recipients.addAll(findRecipientsFromExpression(info, biobj));
    } catch (Exception e) {
        logger.error(e);
    }
    // validates addresses
    List<String> validRecipients = new ArrayList();
    Iterator it = recipients.iterator();
    while (it.hasNext()) {
        String recipient = (String) it.next();
        if (GenericValidator.isBlankOrNull(recipient) || !GenericValidator.isEmail(recipient)) {
            logger.error("[" + recipient + "] is not a valid email address.");
            continue;
        }
        if (validRecipients.contains(recipient))
            continue;
        validRecipients.add(recipient);
    }
    toReturn = validRecipients.toArray(new String[0]);
    logger.debug("OUT: returning " + toReturn);
    return toReturn;
}

From source file:jp.terasoluna.fw.web.struts.form.FieldChecksEx.java

/**
 * wtB?[hoCgv`FbN?B//from   w  w w.j ava 2  s  . c o m
 * 
 * <p>
 * G?[???AG?[????A wG?[?Xg?B G?[?bZ?[WtH?[}bg?A
 * <code>validation-rules.xml</code>L?q?B<br>
 * ?AoCg5<code>true</code>p ???B
 * </p>
 * <h5>validation.xmlL?q</h5>
 * <code><pre>
 * &lt;form name=&quot;/sample&quot;&gt;
 *  ?E?E?E
 *  &lt;field property=&quot;escape&quot;
 *      depends=&quot;byteLength&quot;&gt;
 *    &lt;arg0 key=&quot;sample.escape&quot;/&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;byteLength&lt;/var-name&gt;
 *      &lt;var-value&gt;5&lt;/var-value&gt;
 *    &lt;/var&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;encoding&lt;/var-name&gt;
 *      &lt;var-value&gt;Windows-31J&lt;/var-value&gt;
 *    &lt;/var&gt;
 *  &lt;/field&gt;
 *  ?E?E?E
 * &lt;/form&gt;
 * </pre></code>
 * <h5>validation.xml?v&lt;var&gt;vf</h5>
 * <table border="1">
 * <tr>
 * <td><center><b><code>var-name</code></b></center></td>
 * <td><center><b><code>var-value</code></b></center></td>
 * <td><center><b>K?{?</b></center></td>
 * <td><center><b>Tv</b></center></td>
 * </tr>
 * <tr>
 * <td> byteLength </td>
 * <td>oCg?</td>
 * <td>false</td>
 * <td>oCg?oCg?B</td>
 * </tr>
 * <tr>
 * <td> encoding </td>
 * <td>GR?[fBO</td>
 * <td>false</td>
 * <td>oCg?gpGR?[fBO?B ???VMftHgGR?[fBOgp?B</td>
 * </tr>
 * </table>
 * 
 * @param bean
 *            ??IuWFNg
 * @param va
 *            ValidatorpValidatorAction
 * @param field
 *            tB?[hIuWFNg
 * @param errors
 *            ANVG?[
 * @param validator
 *            ValidatorCX^X
 * @param request
 *            HTTPNGXg
 * @return l? <code>true</code>
 */
public static boolean validateByteLength(Object bean, ValidatorAction va, Field field, ActionMessages errors,
        Validator validator, HttpServletRequest request) {

    // beannull?AG?[?O?o?Atruep?B
    if (bean == null) {
        log.error("bean is null.");
        return true;
    }

    // l
    String value = null;
    if (isString(bean)) {
        value = (String) bean;
    } else {
        value = ValidatorUtils.getValueAsString(bean, field.getProperty());
    }
    // ?lnull?Atruep
    if (GenericValidator.isBlankOrNull(value)) {
        return true;
    }

    // oCg
    String lengthStr = field.getVarValue("byteLength");
    // oCgw??A`FbN?s
    if (lengthStr == null || "".equals(lengthStr)) {
        if (log.isInfoEnabled()) {
            log.info("length is not specified.");
        }
        return true;
    }
    int checkLength = 0;
    try {
        checkLength = Integer.valueOf(lengthStr).intValue();
    } catch (NumberFormatException e) {
        // wints\??
        log.error("byteLength is not numeric(integer).", e);
        return true;
    }

    // GR?[fBO
    String encoding = field.getVarValue("encoding");

    int bytesLength = getByteLength(value, encoding);

    // oCg?length?Afalsep
    if (bytesLength != checkLength) {
        errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
        return false;
    }

    return true;
}

From source file:jp.terasoluna.fw.web.struts.form.FieldChecksEx.java

/**
 * wtB?[hoCg w`FbN?B//from   w  w w  .ja v a  2  s.c o  m
 * 
 * <p>
 * G?[???AG?[????A wG?[?Xg?B G?[?bZ?[WtH?[}bg?A
 * <code>validation-rules.xml</code>L?q?B<br>
 * ?AoCg5??A10 <code>true</code> p???B
 * </p>
 * <h5>validation.xmlL?q</h5>
 * <code><pre>
 * &lt;form name=&quot;/sample&quot;&gt;
 *  ?E?E?E
 *  &lt;field property=&quot;escape&quot;
 *      depends=&quot;byteRange&quot;&gt;
 *    &lt;arg0 key=&quot;sample.escape&quot;/&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;maxByte&lt;/var-name&gt;
 *      &lt;var-value&gt;10&lt;/var-value&gt;
 *    &lt;/var&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;minByte&lt;/var-name&gt;
 *      &lt;var-value&gt;5&lt;/var-value&gt;
 *    &lt;/var&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;encoding&lt;/var-name&gt;
 *      &lt;var-value&gt;Windows-31J&lt;/var-value&gt;
 *    &lt;/var&gt;
 *  &lt;/field&gt;
 *  ?E?E?E
 * &lt;/form&gt;
 * </pre></code>
 * <h5>validation.xml?v&lt;var&gt;vf</h5>
 * <table border="1">
 * <tr>
 * <td><center><b><code>var-name</code></b></center></td>
 * <td><center><b><code>var-value</code></b></center></td>
 * <td><center><b>K?{?</b></center></td>
 * <td><center><b>Tv</b></center></td>
 * </tr>
 * <tr>
 * <td> maxByte </td>
 * <td>?oCg?</td>
 * <td>false</td>
 * <td>oCg??oCg?B ???int^?l?B</td>
 * </tr>
 * <tr>
 * <td> minByte </td>
 * <td>?oCg?</td>
 * <td>false</td>
 * <td>oCg???oCg?B ???0?B</td>
 * </tr>
 * <tr>
 * <td> encoding </td>
 * <td>GR?[fBO</td>
 * <td>false</td>
 * <td>oCg?gpGR?[fBO?B ???VMftHgGR?[fBOgp?B</td>
 * </tr>
 * </table>
 * 
 * @param bean
 *            ??IuWFNg
 * @param va
 *            ValidatorpValidatorAction
 * @param field
 *            tB?[hIuWFNg
 * @param errors
 *            ANVG?[
 * @param validator
 *            ValidatorCX^X
 * @param request
 *            HTTPNGXg
 * @return l? <code>true</code>
 */
public static boolean validateByteRange(Object bean, ValidatorAction va, Field field, ActionMessages errors,
        Validator validator, HttpServletRequest request) {

    // beannull?AG?[?O?o?Atruep?B
    if (bean == null) {
        log.error("bean is null.");
        return true;
    }

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

    // ?lnull?Atruep
    if (GenericValidator.isBlankOrNull(value)) {
        return true;
    }

    // GR?[fBO
    String encoding = field.getVarValue("encoding");

    // oCg
    int bytesLength = getByteLength(value, encoding);

    int min = 0;
    String minStr = field.getVarValue("minByte");
    if (!GenericValidator.isBlankOrNull(minStr)) {
        try {
            min = Integer.parseInt(minStr);
        } catch (NumberFormatException e) {
            log.error("", e);
        }
    }

    int max = Integer.MAX_VALUE;
    String maxStr = field.getVarValue("maxByte");
    if (!GenericValidator.isBlankOrNull(maxStr)) {
        try {
            max = Integer.parseInt(maxStr);
        } catch (NumberFormatException e) {
            log.error("", e);
        }
    }

    if (!GenericValidator.isInRange(bytesLength, min, max)) {
        errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
        return false;
    }
    return true;
}

From source file:it.eng.spagobi.analiticalmodel.document.service.DetailBIObjectModule.java

/**
 * Inserts/Modifies the detail of a BI Object according to the user request.
 * When a BI Object is modified, the <code>modifyBIObject</code> method is
 * called; when a new BI Object is added, the <code>insertBIObject</code>method
 * is called. These two cases are differentiated by the <code>mod</code>
 * String input value ./*  w ww . j  a  v a 2  s  . c  om*/
 * 
 * @param request
 *            The request information contained in a SourceBean Object
 * @param mod
 *            A request string used to differentiate insert/modify
 *            operations
 * @param response
 *            The response SourceBean
 * @throws EMFUserError
 *             If an exception occurs
 * @throws SourceBeanException
 *             If a SourceBean exception occurs
 */
private void modBIObject(SourceBean request, String mod, SourceBean response)
        throws EMFUserError, SourceBeanException {
    HashMap<String, String> logParam = new HashMap();
    try {

        // build a biobject using data in request
        BIObject obj = helper.recoverBIObjectDetails(mod);

        if (obj != null) {
            logParam.put("Document_name", obj.getName());
            logParam.put("Document_Label", obj.getLabel());
            logParam.put("Creation_User", obj.getCreationUser());
            logParam.put("path", obj.getPath());
            logParam.put("tenant", obj.getTenant());
            logParam.put("state", obj.getStateCode());
            if (obj.getBiObjectTypeID() != null)
                logParam.put("Object Type", obj.getBiObjectTypeID().toString());
            if (obj.getEngine() != null)
                logParam.put("Engine", obj.getEngine().getName());
        }

        boolean flgReloadTemp = false;
        // define variable that contains the id of the parameter selected
        String selectedObjParIdStr = null;
        selectedObjParIdStr = "-1";

        //next attribute defines if load automatically all parameters for a document composition type or not.
        boolean loadParsDCClicked = request.getAttribute("loadParsDC") != null;

        // make a validation of the request data
        ValidationCoordinator.validate("PAGE", "BIObjectValidation", this);

        // build and ObjTemplate object using data into request
        ObjTemplate objTemp = helper.recoverBIObjTemplateDetails();
        if (objTemp != null) {
            objTemp.setBiobjId(obj.getId());
        }
        //if the template is not loaded check if default version is changed
        if (objTemp == null) {
            String strCurTempVer = (String) request.getAttribute("versionTemplate");
            if (strCurTempVer != null && !strCurTempVer.equals("")) {
                Integer idCurTempVer = Integer.valueOf((strCurTempVer).trim());
                if (idCurTempVer != null) {
                    objTemp = DAOFactory.getObjTemplateDAO().getBIObjectActiveTemplate(obj.getId());
                    if (objTemp.getId().compareTo(idCurTempVer) != 0) {
                        flgReloadTemp = true;
                        List lstTemplatesObj = DAOFactory.getObjTemplateDAO()
                                .getBIObjectTemplateList(obj.getId());
                        for (int i = 0; i < lstTemplatesObj.size(); i++) {
                            objTemp = (ObjTemplate) lstTemplatesObj.get(i);
                            if (objTemp.getId().compareTo(idCurTempVer) == 0)
                                break;
                        }
                    }
                }
            }
        } else
            flgReloadTemp = true;

        // if there are some validation errors into the errorHandler return without write into DB 
        if (!errorHandler.isOKByCategory(EMFErrorCategory.VALIDATION_ERROR)) {
            helper.fillResponse(initialPath);
            prepareBIObjectDetailPage(response, obj, null, selectedObjParIdStr, mod, false, false);

            AuditLogUtilities.updateAudit(getHttpRequest(), profile, "DOCUMENT.MODIFY_VALIDATION_ERROR",
                    logParam, "ERR");
            return;
        }

        // based on the modality do different tasks
        if (mod.equalsIgnoreCase(SpagoBIConstants.DETAIL_INS)) {
            //if data source value is not specified, it gets the default data source associated at the engine
            //            if (obj.getDataSourceId() == null){
            //               Engine engine = obj.getEngine();
            //               Integer dsId = engine.getDataSourceId();
            //               obj.setDataSourceId(dsId);
            //            }
            // inserts into DB the new BIObject
            if (objTemp == null) {
                biobjDAO.insertBIObject(obj, loadParsDCClicked);
            } else {
                biobjDAO.insertBIObject(obj, objTemp, loadParsDCClicked);
            }

            AuditLogUtilities.updateAudit(getHttpRequest(), profile, "DOCUMENT.ADD", logParam, "OK");
        } else if (mod.equalsIgnoreCase(SpagoBIConstants.DETAIL_MOD)) {

            BIObjectParameter biObjPar = null;
            Object selectedObjParIdObj = request.getAttribute("selected_obj_par_id");
            Object deleteBIObjectParameter = request.getAttribute("deleteBIObjectParameter");
            if (selectedObjParIdObj != null) {

                // it is requested to view another BIObjectParameter than the one visible
                int selectedObjParId = helper.findBIObjParId(selectedObjParIdObj);
                selectedObjParIdStr = new Integer(selectedObjParId).toString();
                String saveBIObjectParameter = (String) request.getAttribute("saveBIObjectParameter");
                if (saveBIObjectParameter != null && saveBIObjectParameter.equalsIgnoreCase("yes")) {
                    // it is requested to save the visible BIObjectParameter
                    ValidationCoordinator.validate("PAGE", "BIObjectParameterValidation", this);
                    biObjPar = helper.recoverBIObjectParameterDetails(obj.getId());
                    // If it's a new BIObjectParameter or if the Parameter was changed controls 
                    // that the BIObjectParameter url name is not already in use
                    urlNameControl(obj.getId(), biObjPar);
                    helper.fillResponse(initialPath);
                    verifyForDependencies(biObjPar);
                    // if there are some validation errors into the errorHandler does not write into DB
                    if (!errorHandler.isOKByCategory(EMFErrorCategory.VALIDATION_ERROR)) {
                        helper.fillResponse(initialPath);
                        prepareBIObjectDetailPage(response, obj, biObjPar, biObjPar.getId().toString(),
                                ObjectsTreeConstants.DETAIL_MOD, false, false);

                        AuditLogUtilities.updateAudit(getHttpRequest(), profile, "DOCUMENT.MODIFY_DETAIL_MOD",
                                logParam, "OK");
                        return;
                    }
                    IBIObjectParameterDAO objParDAO = DAOFactory.getBIObjectParameterDAO();
                    objParDAO.setUserProfile(profile);
                    if (biObjPar.getId().intValue() == -1) {
                        // it is requested to insert a new BIObjectParameter
                        objParDAO.insertBIObjectParameter(biObjPar);
                    } else {
                        // it is requested to modify a BIObjectParameter
                        objParDAO.modifyBIObjectParameter(biObjPar);
                    }
                    prepareBIObjectDetailPage(response, obj, null, selectedObjParIdStr,
                            ObjectsTreeConstants.DETAIL_MOD, false, true);

                    logParam.put("Document_name", obj.getName());
                    AuditLogUtilities.updateAudit(getHttpRequest(), profile, "DOCUMENT.MODIFY_DETAIL_MOD",
                            logParam, "OK");
                    return;
                } else {
                    helper.fillResponse(initialPath);
                    prepareBIObjectDetailPage(response, obj, null, selectedObjParIdStr,
                            ObjectsTreeConstants.DETAIL_MOD, false, true);
                    // exits without writing into DB

                    logParam.put("Document_name", obj.getName());
                    AuditLogUtilities.updateAudit(getHttpRequest(), profile, "DOCUMENT.MODIFY_DETAIL_MOD",
                            logParam, "OK");
                    return;
                }

            } else if (deleteBIObjectParameter != null) {

                // it is requested to delete the visible BIObjectParameter
                int objParId = helper.findBIObjParId(deleteBIObjectParameter);
                Integer objParIdInt = new Integer(objParId);
                EMFValidationError error = checkForDependancies(objParIdInt);
                if (error != null) {
                    errorHandler.addError(error);
                    AuditLogUtilities.updateAudit(getHttpRequest(), profile, "DOCUMENT.MODIFY_DETAIL_MOD",
                            logParam, "KO");
                }
                helper.fillResponse(initialPath);
                // if there are some validation errors into the errorHandler does not write into DB
                if (!errorHandler.isOKByCategory(EMFErrorCategory.VALIDATION_ERROR)) {
                    helper.fillResponse(initialPath);
                    prepareBIObjectDetailPage(response, obj, biObjPar, biObjPar.getId().toString(),
                            ObjectsTreeConstants.DETAIL_MOD, false, false);
                    AuditLogUtilities.updateAudit(getHttpRequest(), profile, "DOCUMENT.MODIFY_DETAIL_MOD",
                            logParam, "KO");
                    return;
                }
                // deletes the BIObjectParameter
                IBIObjectParameterDAO objParDAO = DAOFactory.getBIObjectParameterDAO();
                BIObjectParameter objPar = objParDAO.loadForDetailByObjParId(new Integer(objParId));
                objParDAO.eraseBIObjectParameter(objPar, true);
                selectedObjParIdStr = "";
                prepareBIObjectDetailPage(response, obj, null, selectedObjParIdStr,
                        ObjectsTreeConstants.DETAIL_MOD, false, true);

                logParam.put("Document_name", obj.getName());
                AuditLogUtilities.updateAudit(getHttpRequest(), profile, "DOCUMENT.MODIFY_DETAIL_MOD", logParam,
                        "OK");
                return;

            } else {

                // It is request to save the BIObject with also the visible BIObjectParameter
                biObjPar = helper.recoverBIObjectParameterDetails(obj.getId());
                // If a new BIParameter was visualized and no fields were inserted, the BIParameter is not validated and saved
                boolean biParameterToBeSaved = true;
                if ((obj.getBiObjectTypeCode().equalsIgnoreCase(SpagoBIConstants.DOCUMENT_COMPOSITE_TYPE)
                        && flgReloadTemp)
                        || (GenericValidator.isBlankOrNull(biObjPar.getLabel())
                                && biObjPar.getId().intValue() == -1
                                && GenericValidator.isBlankOrNull(biObjPar.getParameterUrlName())
                                && biObjPar.getParID().intValue() == -1))
                    biParameterToBeSaved = false;
                if (biParameterToBeSaved) {
                    ValidationCoordinator.validate("PAGE", "BIObjectParameterValidation", this);
                    // If it's a new BIObjectParameter or if the Parameter was changed controls 
                    // that the BIObjectParameter url name is not already in use
                    urlNameControl(obj.getId(), biObjPar);
                }
                ValidationCoordinator.validate("PAGE", "BIObjectValidation", this);
                verifyForDependencies(biObjPar);
                // if there are some validation errors into the errorHandler does not write into DB
                if (!errorHandler.isOKByCategory(EMFErrorCategory.VALIDATION_ERROR)) {
                    helper.fillResponse(initialPath);
                    prepareBIObjectDetailPage(response, obj, biObjPar, biObjPar.getId().toString(),
                            ObjectsTreeConstants.DETAIL_MOD, false, false);

                    logParam.put("Document_name", obj.getName());
                    AuditLogUtilities.updateAudit(getHttpRequest(), profile, "DOCUMENT.MODIFY_DETAIL_MOD",
                            logParam, "OK");
                    return;
                }

                // it is requested to modify the main values of the BIObject
                if (objTemp == null) {
                    biobjDAO.modifyBIObject(obj, loadParsDCClicked);
                } else {
                    biobjDAO.modifyBIObject(obj, objTemp, loadParsDCClicked);
                }

                // reloads the BIObject 
                obj = biobjDAO.loadBIObjectForDetail(obj.getId());
                // check if there's a parameter to save and in case save it
                if (biParameterToBeSaved) {
                    IBIObjectParameterDAO objParDAO = DAOFactory.getBIObjectParameterDAO();
                    objParDAO.setUserProfile(profile);
                    if (biObjPar.getId().intValue() == -1) {
                        // it is requested to insert a new BIObjectParameter
                        objParDAO.insertBIObjectParameter(biObjPar);
                        // reload the BIObjectParameter with the given url name
                        biObjPar = reloadBIObjectParameter(obj.getId(), biObjPar.getParameterUrlName());
                    } else {
                        // it is requested to modify a BIObjectParameter
                        objParDAO.modifyBIObjectParameter(biObjPar);
                    }
                    selectedObjParIdStr = biObjPar.getId().toString();
                } else
                    selectedObjParIdStr = "-1";
            }

            AuditLogUtilities.updateAudit(getHttpRequest(), profile, "DOCUMENT.MODIFY", logParam, "OK");
        }

        // reloads the BIObject with the correct Id 
        obj = biobjDAO.loadBIObjectForDetail(obj.getId());

        /*
        *indexes biobject by modifying document in index
        **/
        LuceneIndexer.updateBiobjInIndex(obj, false);

        // based on the kind of back put different data into response
        Object saveAndGoBack = request.getAttribute("saveAndGoBack");
        if (saveAndGoBack != null) {
            // it is request to save the main BIObject details and to go back
            response.setAttribute("loopback", "true");
        } else {
            // it is requested to save and remain in the BIObject detail page
            response.setAttribute(ObjectsTreeConstants.OBJECT_ID, obj.getId().toString());
            response.setAttribute("selected_obj_par_id", selectedObjParIdStr);
            response.setAttribute("saveLoop", "true");
        }

    } catch (EMFUserError error) {
        logger.error("Cannot fill response container", error);
        try {
            AuditLogUtilities.updateAudit(getHttpRequest(), profile, "DOCUMENT.ADD/MODIFY", logParam, "ERR");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        throw error;
    } catch (Exception ex) {
        logger.error("Cannot fill response container", ex);
        try {
            AuditLogUtilities.updateAudit(getHttpRequest(), profile, "DOCUMENT.ADD/MODIFY", logParam, "ERR");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        throw new EMFUserError(EMFErrorSeverity.ERROR, 100);
    }
}

From source file:jp.terasoluna.fw.web.struts.form.FieldChecksEx.java

/**
 * tw`FbN?B//from   w  w  w. j a  v a 2 s  . c o m
 * 
 * <p>
 * G?[???AG?[????A wG?[?Xg?B G?[?bZ?[WtH?[}bg?A
 * <code>validation-rules.xml</code>L?q?B<br>
 * ?At2000/01/012010/12/31 ???B
 * </p>
 * <h5>validation.xmlL?q</h5>
 * <code><pre>
 * &lt;form name=&quot;/sample&quot;&gt;
 *  ?E?E?E
 *  &lt;field property=&quot;date&quot;
 *      depends=&quot;dateRange&quot;&gt;
 *    &lt;arg key=&quot;label.date&quot; position=&quot;0&quot;/&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;startDate&lt;/var-name&gt;
 *      &lt;var-value&gt;2000/01/01&lt;/var-value&gt;
 *    &lt;/var&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;endDate&lt;/var-name&gt;
 *      &lt;var-value&gt;2010/12/31&lt;/var-value&gt;
 *    &lt;/var&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;datePattern&lt;/var-name&gt;
 *      &lt;var-value&gt;yyyy/MM/dd&lt;/var-value&gt;
 *    &lt;/var&gt;
 *  &lt;/field&gt;
 *  ?E?E?E
 * &lt;/form&gt;
 * </pre></code>
 * <h5>validation.xml?v&lt;var&gt;vf</h5>
 * <table border="1">
 * <tr>
 * <td><center><b><code>var-name</code></b></center></td>
 * <td><center><b><code>var-value</code></b></center></td>
 * <td><center><b>K?{?</b></center></td>
 * <td><center><b>Tv</b></center></td>
 * </tr>
 * <tr>
 * <td> startDate </td>
 * <td>Jnt</td>
 * <td>false</td>
 * <td>tJnlt?B
 * datePatterndatePatternStrictwttH?[}bgv?B</td>
 * </tr>
 * <tr>
 * <td> endDate </td>
 * <td>?It</td>
 * <td>false</td>
 * <td>t?Ilt?B
 * datePatterndatePatternStrictwttH?[}bgv?B</td>
 * </tr>
 * <tr>
 * <td> datePattern </td>
 * <td>tp^?[</td>
 * <td>false</td>
 * <td>tp^?[?BDate^tH?[}bg?[?]?B</td>
 * </tr>
 * <tr>
 * <td> datePatternStrict </td>
 * <td>tp^?[?BDate^tH?[}bg?[?]?B</td>
 * <td>false</td>
 * <td>tp^?[`FbN?s?B tp^?[yyyy/MM/dd???A2001/1/1G?[?B
 * datePatternw???AdatePatternwtH?[}bg D??B</td>
 * </tr>
 * </table>
 * 
 * @param bean
 *            ??IuWFNg
 * @param va
 *            ValidatorpValidatorAction
 * @param field
 *            tB?[hIuWFNg
 * @param errors
 *            ANVG?[
 * @param validator
 *            ValidatorCX^X
 * @param request
 *            HTTPNGXg
 * @return l? <code>true</code>
 */
public static boolean validateDateRange(Object bean, ValidatorAction va, Field field, ActionMessages errors,
        Validator validator, HttpServletRequest request) {

    // beannull?AG?[?O?o?Atruep?B
    if (bean == null) {
        log.error("bean is null.");
        return true;
    }

    String value = null;
    if (isString(bean)) {
        value = (String) bean;
    } else {
        value = ValidatorUtils.getValueAsString(bean, field.getProperty());
    }
    // ?lnull?Atruep
    if (GenericValidator.isBlankOrNull(value)) {
        return true;
    }

    // t?`FbN
    String datePattern = field.getVarValue("datePattern");
    String datePatternStrict = field.getVarValue("datePatternStrict");
    Locale locale = RequestUtils.getUserLocale(request, null);
    Date result = null;
    try {
        if (datePattern != null && datePattern.length() > 0) {
            result = GenericTypeValidator.formatDate(value, datePattern, false);
        } else if (datePatternStrict != null && datePatternStrict.length() > 0) {
            result = GenericTypeValidator.formatDate(value, datePatternStrict, true);
        } else {
            result = GenericTypeValidator.formatDate(value, locale);
        }
    } catch (Exception e) {
        log.error(e.getMessage(), e);
    }

    if (result == null) {
        errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
        return false;
    }

    // t`FbN
    // Jn
    String startDateStr = field.getVarValue("startDate");
    // ?I
    String endDateStr = field.getVarValue("endDate");

    if (startDateStr == null && endDateStr == null) {
        // tw????
        return true;
    }

    // Jnt?~`FbN
    if (startDateStr != null && startDateStr.length() > 0) {
        Date startDate = null;

        if (datePattern != null && datePattern.length() > 0) {
            startDate = GenericTypeValidator.formatDate(startDateStr, datePattern, false);
        } else if (datePatternStrict != null && datePatternStrict.length() > 0) {
            startDate = GenericTypeValidator.formatDate(startDateStr, datePatternStrict, true);
        } else {
            startDate = GenericTypeValidator.formatDate(startDateStr, locale);
        }

        if (startDate == null) {
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
            return false;
        }
        if (result.before(startDate)) {
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
            return false;
        }
    }

    // ?ItO`FbN
    if (endDateStr != null && endDateStr.length() > 0) {
        Date endDate = null;

        if (datePattern != null && datePattern.length() > 0) {
            endDate = GenericTypeValidator.formatDate(endDateStr, datePattern, false);
        } else if (datePatternStrict != null && datePatternStrict.length() > 0) {
            endDate = GenericTypeValidator.formatDate(endDateStr, datePatternStrict, true);
        } else {
            endDate = GenericTypeValidator.formatDate(endDateStr, locale);
        }

        if (endDate == null) {
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
            return false;
        }
        if (result.after(endDate)) {
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
            return false;
        }
    }

    return true;
}

From source file:jp.terasoluna.fw.validation.FieldChecks.java

/**
 * ?????????/*from   ww  w  . j av  a  2s. c  o  m*/
 * ????
 * ??????????
 * errors???false??
 *
 * <p>???????BigDecimal ??
 * ???????????
 *
 * ??????????????
 * validation.xml ? isAccordedInteger()
 * ? "true" ??????
 * ??????
 * ?????????????
 *
 * ???????????????
 * validation.xml?isAccordedScale?"true"?????
 * ???????
 *
 * <p>
 * ??3??2?????
 *
 * <h5>validation.xml?</h5>
 * <code><pre>
 * &lt;form name=&quot;sample&quot;&gt;
 *  
 *  &lt;field property=&quot;numberField&quot;
 *      depends=&quot;number&quot;&gt;
 *    &lt;arg key=&quot;sample.numberField&quot; position="0"/&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;integerLength&lt;/var-name&gt;
 *      &lt;var-value&gt;3&lt;/var-value&gt;
 *    &lt;/var&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;scale&lt;/var-name&gt;
 *      &lt;var-value&gt;2&lt;/var-value&gt;
 *    &lt;/var&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;isAccordedInteger&lt;/var-name&gt;
 *      &lt;var-value&gt;true&lt;/var-value&gt;
 *    &lt;/var&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;isAccordedScale&lt;/var-name&gt;
 *      &lt;var-value&gt;true&lt;/var-value&gt;
 *    &lt;/var&gt;
 *  &lt;/field&gt;
 *  
 * &lt;/form&gt;
 * </pre></code>
 * <h5>validation.xml???&lt;var&gt;?</h5>
 * <table border="1">
 *  <tr>
 *   <td><center><b><code>var-name</code></b></center></td>
 *   <td><center><b><code>var-value</code></b></center></td>
 *   <td><center><b></b></center></td>
 *   <td><center><b>?</b></center></td>
 *  </tr>
 *  <tr>
 *   <td> <code>integerLength</code> </td>
 *   <td> ? </td>
 *   <td> <code>false</code> </td>
 *   <td>???<code>isAccordedInteger</code>?
 *       ?????????
 *       ???<code>int</code>???
 *       ???????</td>
 *  </tr>
 *  <tr>
 *   <td> <code>scale</code> </td>
 *   <td> ?? </td>
 *   <td> <code>false</code> </td>
 *   <td>?????<code>isAccordedScale</code>?
 *       ?????????
 *       ???<code>int</code>???
 *       ???????</td>
 *  </tr>
 *  <tr>
 *   <td> <code>isAccordedInteger</code> </td>
 *   <td> ?? </td>
 *   <td> <code>false</code> </td>
 *   <td> <code>true</code>???????????
 *        ????<code>true</code>?????
 *        ????</td>
 *  </tr>
 *  <tr>
 *   <td> <code>isAccordedScale</code> </td>
 *   <td> ??? </td>
 *   <td> <code>false</code> </td>
 *   <td> <code>true</code>????????????
 *        ????<code>true</code>?????
 *        ????</td>
 *  </tr>
 * </table>
 *
 * @param bean ?JavaBean
 * @param va Validator????ValidatorAction
 * @param field 
 * @param errors 
 * @return ???? true
 * @throws ValidatorException validation??????
 * ?
 */
public boolean validateNumber(Object bean, ValidatorAction va, Field field, ValidationErrors errors)
        throws ValidatorException {
    // 
    String value = extractValue(bean, field);
    if (StringUtils.isEmpty(value)) {
        return true;
    }

    // ???????
    if (!ValidationUtil.isHankakuString(value)) {
        rejectValue(errors, field, va, bean);
        return false;
    }

    // BigDecimal??
    BigDecimal number = null;
    try {
        number = new BigDecimal(value);
    } catch (NumberFormatException e) {
        rejectValue(errors, field, va, bean);
        return false;
    }

    // ??
    int integerLength = Integer.MAX_VALUE;
    String integerLengthStr = field.getVarValue("integerLength");
    if (!GenericValidator.isBlankOrNull(integerLengthStr)) {
        try {
            integerLength = Integer.parseInt(integerLengthStr);
        } catch (NumberFormatException e) {
            String message = "Mistake on validation definition file. " + "- integerLength is not number. "
                    + "You'll have to check it over. ";
            log.error(message, e);
            throw new ValidatorException(message);
        }
    }

    // ???
    int scaleLength = Integer.MAX_VALUE;
    String scaleStr = field.getVarValue("scale");
    if (!GenericValidator.isBlankOrNull(scaleStr)) {
        try {
            scaleLength = Integer.parseInt(scaleStr);
        } catch (NumberFormatException e) {
            String message = "Mistake on validation definition file. " + "- scale is not number. "
                    + "You'll have to check it over. ";
            log.error(message, e);
            throw new ValidatorException(message);
        }
    }

    // ???
    boolean isAccordedInteger = "true".equals(field.getVarValue("isAccordedInteger"));
    // ????
    boolean isAccordedScale = "true".equals(field.getVarValue("isAccordedScale"));

    // 
    if (!ValidationUtil.isNumber(number, integerLength, isAccordedInteger, scaleLength, isAccordedScale)) {
        rejectValue(errors, field, va, bean);
        return false;
    }

    return true;
}

From source file:jp.terasoluna.fw.validation.FieldChecks.java

/**
 * ????????//w ww  . ja  v a  2  s . co  m
 * ???????
 * ??????????errors???
 * false??
 *
 * <p>?????????????true??
 * ???
 *
 * <h5>validation.xml?</h5>
 * <code><pre>
 * &lt;form name=&quot;sample&quot;&gt;
 *  
 *  &lt;field property=&quot;arrayField&quot;
 *      depends=&quot;arrayRange&quot;&gt;
 *    &lt;arg key=&quot;sample.arrayField&quot; position="0"/&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;minArrayLength&lt;/var-name&gt;
 *      &lt;var-value&gt;4&lt;/var-value&gt;
 *    &lt;/var&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;maxArrayLength&lt;/var-name&gt;
 *      &lt;var-value&gt;7&lt;/var-value&gt;
 *    &lt;/var&gt;
 *  &lt;/field&gt;
 *  
 * &lt;/form&gt;
 * </pre></code>
 * <h5>validation.xml???&lt;var&gt;?</h5>
 * <table border="1">
 *  <tr>
 *   <td><center><b><code>var-name</code></b></center></td>
 *   <td><center><b><code>var-value</code></b></center></td>
 *   <td><center><b></b></center></td>
 *   <td><center><b>?</b></center></td>
 *  </tr>
 *  <tr>
 *   <td> minArrayLength </td>
 *   <td>??</td>
 *   <td>false</td>
 *   <td>?????
 *        ???????????</td>
 *  </tr>
 *  <tr>
 *   <td> maxArrayLength </td>
 *   <td>?</td>
 *   <td>false</td>
 *   <td>????
 *        ???????
 *        <code>int</code>???</td>
 *  </tr>
 * </table>
 *
 * @param bean ?JavaBean
 * @param va Validator????ValidatorAction
 * @param field 
 * @param errors 
 * @return ???? true
 * @throws ValidatorException validation??????
 * ?
 */
public boolean validateArrayRange(Object bean, ValidatorAction va, Field field, ValidationErrors errors)
        throws ValidatorException {

    // ??bean?null???ValidatorException
    if (bean == null) {
        String message = "target of validateArrayRange must be not null.";
        log.error(message);
        throw new ValidatorException(message);
    }

    try {
        Class<?> type = BeanUtil.getBeanPropertyType(bean, field.getProperty());
        if (type == null) {
            String message = "Cannot get property type[" + bean.getClass().getName() + "." + field.getProperty()
                    + "]";
            log.error(message);
            throw new ValidatorException(message);
        } else if (!type.isArray() && !Collection.class.isAssignableFrom(type)) {
            String message = "property [" + bean.getClass().getName() + "." + field.getProperty()
                    + "] must be instance of Array or Collection.";
            log.error(message);
            throw new ValidatorException(message);
        }
    } catch (PropertyAccessException e) {
        String message = "Cannot get property type[" + bean.getClass().getName() + "." + field.getProperty()
                + "]";
        log.error(message, e);
        throw new ValidatorException(message);
    }

    // 
    Object obj = null;
    try {
        obj = BeanUtil.getBeanProperty(bean, field.getProperty());
    } catch (PropertyAccessException e) {
        String message = "Cannot get property [" + bean.getClass().getName() + "." + field.getProperty() + "]";
        log.error(message, e);
        throw new ValidatorException(message);
    }

    // ????
    int min = 0;
    String minStr = field.getVarValue("minArrayLength");
    if (!GenericValidator.isBlankOrNull(minStr)) {
        try {
            min = Integer.parseInt(minStr);
        } catch (NumberFormatException e) {
            String message = "Mistake on validation definition file. " + "- minArrayLength is not number. "
                    + "You'll have to check it over. ";
            log.error(message, e);
            throw new ValidatorException(message);
        }
    }

    // ???
    int max = Integer.MAX_VALUE;
    String maxStr = field.getVarValue("maxArrayLength");
    if (!GenericValidator.isBlankOrNull(maxStr)) {
        try {
            max = Integer.parseInt(maxStr);
        } catch (NumberFormatException e) {
            String message = "Mistake on validation definition file. " + "- maxArrayLength is not number. "
                    + "You'll have to check it over. ";
            log.error(message, e);
            throw new ValidatorException(message);
        }
    }

    // 
    try {
        if (!ValidationUtil.isArrayInRange(obj, min, max)) {
            rejectValue(errors, field, va, bean);
            return false;
        }
    } catch (IllegalArgumentException e) {
        log.error(e.getMessage());
        throw new ValidatorException(e.getMessage());
    }
    return true;
}

From source file:jp.terasoluna.fw.validation.FieldChecks.java

/**
 * ???????????//from w w w  . ja v  a 2  s.co  m
 * ??
 * ??????????errors???
 * false??
 *
 * <p>????5?10??????? true
 * ?????
 *
 * <h5>validation.xml?</h5>
 * <code><pre>
 * &lt;form name=&quot;sample&quot;&gt;
 *  
 *  &lt;field property=&quot;stringField&quot;
 *      depends=&quot;byteRange&quot;&gt;
 *    &lt;arg key=&quot;sample.stringField&quot; position="0"/&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;maxByteLength&lt;/var-name&gt;
 *      &lt;var-value&gt;10&lt;/var-value&gt;
 *    &lt;/var&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;minByteLength&lt;/var-name&gt;
 *      &lt;var-value&gt;5&lt;/var-value&gt;
 *    &lt;/var&gt;
 *    &lt;var&gt;
 *      &lt;var-name&gt;encoding&lt;/var-name&gt;
 *      &lt;var-value&gt;Windows-31J&lt;/var-value&gt;
 *    &lt;/var&gt;
 *  &lt;/field&gt;
 *  
 * &lt;/form&gt;
 * </pre></code>
 * <h5>validation.xml???&lt;var&gt;?</h5>
 * <table border="1">
 *  <tr>
 *   <td><center><b><code>var-name</code></b></center></td>
 *   <td><center><b><code>var-value</code></b></center></td>
 *   <td><center><b></b></center></td>
 *   <td><center><b>?</b></center></td>
 *  </tr>
 *  <tr>
 *   <td> maxByteLength </td>
 *   <td>?</td>
 *   <td>false</td>
 *   <td>??????
 *        ???<code>int</code>???</td>
 *  </tr>
 *  <tr>
 *   <td> minByteLength </td>
 *   <td>??</td>
 *   <td>false</td>
 *   <td>???????
 *        ???0??</td>
 *  </tr>
 *  <tr>
 *   <td> encoding </td>
 *   <td></td>
 *   <td>false</td>
 *   <td>??????
 *   ?????VM???</td>
 *  </tr>
 * </table>
 *
 * @param bean ?
 * @param va Validator????ValidatorAction
 * @param field 
 * @param errors 
 * @return ???? true
 * @throws ValidatorException validation??????
 * ?
 */
public boolean validateByteRange(Object bean, ValidatorAction va, Field field, ValidationErrors errors)
        throws ValidatorException {
    // 
    String value = extractValue(bean, field);
    if (StringUtils.isEmpty(value)) {
        return true;
    }

    // 
    String encoding = field.getVarValue("encoding");

    // ??
    int min = 0;
    String minStr = field.getVarValue("minByteLength");
    if (!GenericValidator.isBlankOrNull(minStr)) {
        try {
            min = Integer.parseInt(minStr);
        } catch (NumberFormatException e) {
            String message = "Mistake on validation definition file. " + "- minByteLength is not number. "
                    + "You'll have to check it over. ";
            log.error(message, e);
            throw new ValidatorException(message);
        }
    }

    // ?
    int max = Integer.MAX_VALUE;
    String maxStr = field.getVarValue("maxByteLength");
    if (!GenericValidator.isBlankOrNull(maxStr)) {
        try {
            max = Integer.parseInt(maxStr);
        } catch (NumberFormatException e) {
            String message = "Mistake on validation definition file. " + "- maxByteLength is not number. "
                    + "You'll have to check it over. ";
            log.error(message, e);
            throw new ValidatorException(message);
        }
    }

    // 
    try {
        if (!ValidationUtil.isByteInRange(value, encoding, min, max)) {
            rejectValue(errors, field, va, bean);
            return false;
        }
    } catch (IllegalArgumentException e) {
        log.error("encoding[" + encoding + "] is not supported.");
        throw new ValidatorException("encoding[" + encoding + "] is not supported.");
    }
    return true;
}