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 incident
     * @return the utilization value as per the evaluation
     */
    double computeUtilization(Incident incident);

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 exposurelimitValueexposurelimitValue, the custom Spring Bean will look as follows:

@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(Incident incident) {
        return incident.getMeasureValue() / incident.getLimitValue()[0];
    }
}

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.