com.webbfontaine.valuewebb.model.validators.CurrencyRateValidator.java Source code

Java tutorial

Introduction

Here is the source code for com.webbfontaine.valuewebb.model.validators.CurrencyRateValidator.java

Source

package com.webbfontaine.valuewebb.model.validators;

import com.webbfontaine.valuewebb.action.rimm.RefSelect;
import com.webbfontaine.valuewebb.model.constants.Messages;
import com.webbfontaine.valuewebb.model.rimm.Rate;
import com.webbfontaine.valuewebb.validation.ErrorHandling;
import org.apache.commons.lang3.StringUtils;
import org.jboss.seam.Component;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
import java.util.Date;

/**
 * Copyrights 2002-2012 Webb Fontaine
 * This software is the proprietary information of Webb Fontaine.
 * Its use is subject to License terms.
 * Developer: nigiyan
 * Date: 13/03/2012
 */

public abstract class CurrencyRateValidator implements Validator {

    @Override
    public void validate(FacesContext facesContext, UIComponent uiComponent, Object o) throws ValidatorException {

        ErrorHandling.getInstance().removeErrorByMessage(Messages.EXC_RATE_INVALID);

        String cod = (String) o;
        if (isValid(cod, getDate())) {
            ErrorHandling.getInstance().removeErrorByMessage(Messages.EXC_RATE_INVALID);
        } else {
            ErrorHandling.addFacesMessageError(uiComponent.getClientId(FacesContext.getCurrentInstance()),
                    Messages.EXC_RATE_INVALID);
        }
    }

    public static boolean isValid(String currencyCode, Date date) {
        boolean isValid;
        if (StringUtils.isEmpty(currencyCode)) {
            isValid = true;
        } else {
            RefSelect refSelect = (RefSelect) Component.getInstance(RefSelect.class, true);
            isValid = !refSelect.getRate(date, currencyCode).equals(Rate.EMPTY_INSTANCE);
        }
        return isValid;
    }

    protected abstract Date getDate();
}