MaximumLoanToIncomeRatioRule.java

package com.designpatterns.structural.composite.applied;

public class MaximumLoanToIncomeRatioRule implements ApprovalRule {

    private final double maxRatio;

    public MaximumLoanToIncomeRatioRule(double maxRatio) {
        this.maxRatio = maxRatio;
    }

    @Override
    public boolean isSatisfied(LoanApplication application) {
        double ratio = (double) application.requestedAmountCents() / application.monthlyIncomeCents();
        return ratio <= maxRatio;
    }

    @Override
    public String description() {
        return "loan-to-income ratio <= " + maxRatio;
    }
}