All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nz.co.senanque.customer.R3 Maven / Gradle / Ivy


package nz.co.senanque.customer;

import java.io.Serializable;
import java.util.List;
import nz.co.senanque.base.Customer;
import nz.co.senanque.rules.ConstraintViolationException;
import nz.co.senanque.rules.FieldReference;
import nz.co.senanque.rules.NotTrueException;
import nz.co.senanque.rules.Operations;
import nz.co.senanque.rules.Rule;
import nz.co.senanque.rules.RuleContext;
import nz.co.senanque.rules.RuleProxyField;
import nz.co.senanque.rules.RuleSession;
import nz.co.senanque.rules.UnKnownFieldValueException;
import nz.co.senanque.validationengine.ProxyField;
import nz.co.senanque.validationengine.ValidationObject;
import org.springframework.stereotype.Component;


/**
 * constraint:Customer check the count: {0}[oneInvoice.amount]
 * {
 * logicalNot((invoiceCount>2L);}
 * 
 */
@Component("nz.co.senanque.customer.R3")
public class R3
    implements Serializable, Rule
{

    private final static long serialVersionUID = 1L;

    public void evaluate(final RuleSession session, final ValidationObject object, final RuleContext ruleContext) {
        final Operations operations = session.getOperations();
        final RuleProxyField proxyFieldinvoiceCount = session.getRuleProxyField(session.getMetadata(object).getProxyField("invoiceCount"));
        final List proxyFieldoneInvoice_amount = session.getMetadata(object).getProxyFields("oneInvoice", "amount");
        try {
            try {
                operations.checkTrue(operations.logicalNot(operations.gt(2L, ((Long) proxyFieldinvoiceCount.getValue()))));
            } catch (NotTrueException _x) {
                throw new ConstraintViolationException(getMessage(session, object));
            }
        } catch (UnKnownFieldValueException _x) {
            return ;
        }
    }

    public String getRuleName() {
        return "nz.co.senanque.customer.R3:check the count: {0}";
    }

    public String getMessage(final RuleSession session, final ValidationObject object) {
        return session.getMessage("nz.co.senanque.customer.R3", new Object[] {session.getMetadata(object).getProxyFields("oneInvoice", "amount")});
    }

    public String toString() {
        return "nz.co.senanque.customer.R3:check the count: {0}";
    }

    public String getClassName() {
        return "Customer";
    }

    public Class getScope() {
        return Customer.class;
    }

    public FieldReference[] listeners() {
        return new FieldReference[] {new FieldReference("Customer", "Customer", "invoiceCount")};
    }

    public FieldReference[] outputs() {
        return null;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy