public static boolean checkPermanentLimit(Branch branch, Branch.Side side, float limitReduction, double i) { CurrentLimits limits = branch.getCurrentLimits(side); return limits != null && !Double.isNaN(limits.getPermanentLimit()) && !Double.isNaN(i) && (i >= limits.getPermanentLimit() * limitReduction); }
public static Branch.Overload checkTemporaryLimits(Branch branch, Branch.Side side, float limitReduction, double i) { Objects.requireNonNull(branch); Objects.requireNonNull(side); CurrentLimits limits = branch.getCurrentLimits(side); if (limits != null && !Double.isNaN(limits.getPermanentLimit()) && !Double.isNaN(i)) { String previousLimitName = null; double previousLimit = limits.getPermanentLimit(); for (CurrentLimits.TemporaryLimit tl : limits.getTemporaryLimits()) { // iterate in ascending order if (i >= previousLimit * limitReduction && i < tl.getValue() * limitReduction) { return new OverloadImpl(tl, previousLimitName, previousLimit); } previousLimitName = tl.getName(); previousLimit = tl.getValue(); } } return null; }
private void checkPermanentLimit(Branch branch, Branch.Side side, double value, Consumer<LimitViolation> consumer) { if (LimitViolationUtils.checkPermanentLimit(branch, side, limitReduction, value)) { consumer.accept(new LimitViolation(branch.getId(), branch.getName(), LimitViolationType.CURRENT, null, Integer.MAX_VALUE, branch.getCurrentLimits(side).getPermanentLimit(), limitReduction, value, side)); } }