package com.griddynamics.jagger.dbapi.util; import com.griddynamics.jagger.dbapi.dto.PlotSingleDto; import com.griddynamics.jagger.dbapi.dto.PointDto; import com.griddynamics.jagger.dbapi.dto.SummaryMetricValueDto; import com.griddynamics.jagger.dbapi.dto.SummarySingleDto; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.Collections; import java.util.List; import static com.griddynamics.jagger.dbapi.util.ColorCodeGenerator.getHexColorCode; import static com.griddynamics.jagger.dbapi.util.PlotPointShapeGenerator.generatePointShape; /** * @author "Artem Kirillov" (akirillov@griddynamics.com) * @since 5/31/12 */ public class DataProcessingUtil { protected DataProcessingUtil() { } public static double round(double value) { return new BigDecimal(value).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); } public static String getMessageFromLastCause(Throwable th) { if (th.getCause() != null) return getMessageFromLastCause(th.getCause()); return th.getMessage(); } /** * Generate Curve from values in SummarySingleDto object as * {(sessionId1, val1),(sessionId2, val2), ... (sessionIdn, valn)} * * @param metricDto contains values to generate curve * @return curve */ public static PlotSingleDto generatePlotSingleDto(SummarySingleDto metricDto) { List<PointDto> list = new ArrayList<>(); List<SummaryMetricValueDto> metricList = new ArrayList<>(); metricList.addAll(metricDto.getValues()); Collections.sort(metricList, (o1, o2) -> o2.getSessionId() < o1.getSessionId() ? 1 : -1); for (SummaryMetricValueDto value : metricList) { double temp = Double.parseDouble(value.getValue()); list.add(new PointDto(value.getSessionId(), temp)); } String legend = metricDto.getMetricName().getMetricDisplayName(); return new PlotSingleDto(list, legend, getHexColorCode(metricDto.getMetricName().getMetricName(), "ss"), generatePointShape(metricDto.getMetricName().getMetricName(), "ss")); } }