diff --git a/src/main/java/kieker/analysis/dev/OperationsStatisticsDecoratorStage.java b/src/main/java/kieker/analysis/dev/OperationsStatisticsDecoratorStage.java new file mode 100644 index 0000000000000000000000000000000000000000..8c69048b6582e14bd330335a9ad82976efd634d4 --- /dev/null +++ b/src/main/java/kieker/analysis/dev/OperationsStatisticsDecoratorStage.java @@ -0,0 +1,40 @@ +package kieker.analysis.dev; + +import java.util.List; +import java.util.stream.Collectors; + +import kieker.analysis.domain.systemdependency.Component; +import kieker.analysis.domain.systemdependency.Container; +import kieker.analysis.domain.systemdependency.Operation; +import kieker.analysis.domain.systemdependency.SoftwareSystem; +import kieker.analysis.traceanalysisutil.Statistics; +import kieker.analysis.traceanalysisutil.StatisticsUtility; + +import teetime.stage.basic.AbstractTransformation; + +public class OperationsStatisticsDecoratorStage extends AbstractTransformation<SoftwareSystem, SoftwareSystem> { + + @Override + protected void execute(final SoftwareSystem softwareSystem) { + + for (Container container : softwareSystem.getContainers()) { + for (Component component : container.getComponents()) { + for (Operation operation : component.getOperations()) { + + List<Long> durations = operation.getOperationCalls().stream().map(c -> c.getDuration()).collect(Collectors.toList()); + + final Statistics statistics = StatisticsUtility.calculateStatistics(durations); + + operation.setTotalDuration(statistics.getTotalDuration()); + operation.setMaxDuration(statistics.getMaxDuration()); + operation.setMinDuration(statistics.getMinDuration()); + operation.setMeanDuration(statistics.getMeanDuration()); + operation.setMedianDuration(statistics.getMedianDuration()); + + } + } + } + + } + +}