private List rollupMetric()

in validator/src/main/java/com/amazon/aoc/helpers/CWMetricHelper.java [88:153]


  private List<Metric> rollupMetric(List<Metric> metricList) {
    List<Metric> rollupMetricList = new ArrayList<>();
    for (Metric metric : metricList) {
      Dimension otellibDimension = new Dimension();
      boolean otelLibDimensionExisted = false;

      if (metric.getDimensions().size() > 0) {
        // get otellib dimension out
        // assuming the first dimension is otellib, if not the validation fails
        otellibDimension = metric.getDimensions().get(0);
        otelLibDimensionExisted = otellibDimension.getName().equals(DEFAULT_DIMENSION_NAME);
      }

      if (otelLibDimensionExisted) {
        metric.getDimensions().remove(0);
      }

      // all dimension rollup
      Metric allDimensionsMetric = new Metric();
      allDimensionsMetric.setMetricName(metric.getMetricName());
      allDimensionsMetric.setNamespace(metric.getNamespace());
      allDimensionsMetric.setDimensions(metric.getDimensions());

      if (otelLibDimensionExisted) {
        allDimensionsMetric
            .getDimensions()
            .add(
              new Dimension()
                .withName(otellibDimension.getName())
                .withValue(otellibDimension.getValue()));
      }
      rollupMetricList.add(allDimensionsMetric);

      // zero dimension rollup
      Metric zeroDimensionMetric = new Metric();
      zeroDimensionMetric.setNamespace(metric.getNamespace());
      zeroDimensionMetric.setMetricName(metric.getMetricName());

      if (otelLibDimensionExisted) {
        zeroDimensionMetric.setDimensions(
            Arrays.asList(
              new Dimension()
                .withName(otellibDimension.getName())
                .withValue(otellibDimension.getValue())));
      }
      rollupMetricList.add(zeroDimensionMetric);

      // single dimension rollup
      for (Dimension dimension : metric.getDimensions()) {
        Metric singleDimensionMetric = new Metric();
        singleDimensionMetric.setNamespace(metric.getNamespace());
        singleDimensionMetric.setMetricName(metric.getMetricName());
        if (otelLibDimensionExisted) {
          singleDimensionMetric.setDimensions(
              Arrays.asList(
                new Dimension()
                  .withName(otellibDimension.getName())
                  .withValue(otellibDimension.getValue())));
        }
        singleDimensionMetric.getDimensions().add(dimension);
        rollupMetricList.add(singleDimensionMetric);
      }
    }

    return rollupMetricList;
  }