Adding Custom Utilization

You can customize the Utilization calculation by adding a bean that implements the IUtilizationCalculator interface. Here’s how to do this:

1. Create the Spring Bean

The IUtilizationCalculator contains two methods that need to be overridden:

public interface IUtilizationCalculator {

    /**
     * @param copperContext
     *
     *  Creates the utilization measure in the Limits cube using copper
     */
    void createUtilizationMeasure(ICopperContext copperContext);

    /**
     * @param incidentDTO
     * @return the utilization value as per the evaluation
     */
    double computeUtilization(IncidentDTO incidentDTO);

The createUtilizationMeasure method is used to create the utilization measure in the Limits cube. The computeUtilization method is used to compute the utilization once a limit has been evaluated, and is visible in the Limits Status screen. The class DefaultUtilizationMeasureCalculator handles the default calculation.

If you want to implement your own utilization calculation, for instance $ \dfrac{exposure}{limitValue} $, the custom Spring Bean will look as follows:

@Primary
@Component
public class MyUtilizationMeasureCalculator implements IUtilizationCalculator {

    @Override
    public void createUtilizationMeasure(ICopperContext copperContext) {
        Copper
                .measure(MEASURE_EXPOSURE)
                .divide(Copper.measure(MEASURE_LIMIT_VALUE))
                .per(Copper.level(DIM_TECHNICAL, HIER_INCIDENT_KEY, HIER_INCIDENT_KEY))
                .doNotAggregateAbove()
                .withName(MEASURE_UTILIZATION)
                .withFormatter(PERCENT_FORMAT)
                .publish(copperContext);
    }

    @Override
    public double computeUtilization(IncidentDTO incidentDTO) {
        return incidentDTO.getMeasureValue() / incidentDTO.getLimitValue()[0];
    }
}

note

Note the inclusion of the @Primary annotation, which tells Spring to use MyUtilizationMeasureCalculator instead of DefaultUtilizationMeasureCalculator.

2. Import the Spring Bean

Once the bean is created, you need to import it to the project. Once done, Spring will use the custom bean for calculating the utilization.