DirectorHandler.java
package com.university.bookstore.chain;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Director-level discount approval handler.
* Can approve discounts up to 25%.
*
* @author Navid Mohaghegh
* @version 3.0
* @since 2024-09-15
*/
public class DirectorHandler extends DiscountHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(DirectorHandler.class);
private static final double MAX_DISCOUNT = 0.25; // 25%
@Override
public void handleRequest(DiscountRequest request) {
if (request.getRequestedDiscount() <= MAX_DISCOUNT) {
// Director can approve this discount
request.setApproved(true);
request.setApprovedBy("Director");
LOGGER.info("Director approved {}% discount for {}",
request.getRequestedDiscountPercentage(), request.getMaterial().getTitle());
} else {
// Director cannot approve, pass to next handler
LOGGER.info("Director cannot approve discount > {}%. Passing to VP.",
(MAX_DISCOUNT * 100));
passToNext(request);
}
}
@Override
public String getHandlerName() {
return "DirectorHandler";
}
@Override
public double getMaxDiscount() {
return MAX_DISCOUNT;
}
}