Schedule1Part3EHelper.java

package com.tradecloud.dto.duties;

import com.tradecloud.domain.duties.DutySchedule;
import com.tradecloud.domain.duties.DutyUnit;
import com.tradecloud.domain.duties.Schedule1Part3E;
import com.tradecloud.tariffing.domain.BaseTariff;
import com.tradecloud.tariffing.domain.Environmental;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.regex.Pattern;

public class Schedule1Part3EHelper {

    public static void populateSchedule1Part3E(DutySchedule dutySchedule, BaseTariff baseTariff) {

        Schedule1Part3E schedule1Part3E = (Schedule1Part3E) dutySchedule;
        setSchedule1Part3EDuties(schedule1Part3E, baseTariff);
    }

    private static void setSchedule1Part3EDuties(Schedule1Part3E schedule1Part3E, BaseTariff baseTariff) {

        if (baseTariff instanceof Environmental) {
            Environmental environmental = (Environmental) baseTariff;
            String dutyDescription = environmental.getRateOfDuty().toLowerCase();

            String randPerKgNet = "^r\\d+\\.\\d+/kg\\s+net$";
            if (Pattern.matches(randPerKgNet, dutyDescription)) {
                String randValue = dutyDescription.split("/")[0];
                randValue = randValue.replace("r", "");
                schedule1Part3E.getDutyRate().getOtherDuty1().setValue(
                        new BigDecimal(TariffGeneralHelper.stringToDouble(randValue)).setScale(5, RoundingMode.HALF_DOWN));
                schedule1Part3E.getDutyRate().getOtherDuty1().setUnit(DutyUnit.MASS_KG);
            }

            schedule1Part3E.setCalculationMethod(TariffGeneralHelper.getCalculationMethod(dutyDescription));
        }

    }
}