analysis.lami: correctly handle Number (double, long etc.) type graphing
[deliverable/tracecompass.git] / analysis / org.eclipse.tracecompass.analysis.lami.core / src / org / eclipse / tracecompass / internal / provisional / analysis / lami / core / aspect / LamiTimeRangeDurationAspect.java
CommitLineData
4208b510
AM
1/*******************************************************************************
2 * Copyright (c) 2015, 2016 EfficiOS Inc., Alexandre Montplaisir
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *******************************************************************************/
9
10package org.eclipse.tracecompass.internal.provisional.analysis.lami.core.aspect;
11
12import java.util.Comparator;
13
14import org.eclipse.jdt.annotation.NonNull;
15import org.eclipse.jdt.annotation.Nullable;
16import org.eclipse.tracecompass.internal.provisional.analysis.lami.core.module.LamiTableEntry;
17import org.eclipse.tracecompass.internal.provisional.analysis.lami.core.types.LamiData;
18import org.eclipse.tracecompass.internal.provisional.analysis.lami.core.types.LamiTimeRange;
19
20/**
21 * Aspect for a time range duration
22 *
23 * @author Alexandre Montplaisir
24 */
25public class LamiTimeRangeDurationAspect extends LamiTableEntryAspect {
26
27 private final int fColIndex;
28
29 /**
30 * Constructor
31 *
32 * @param timeRangeName
33 * Name of the time range
34 * @param colIndex
35 * Column index
36 */
37 public LamiTimeRangeDurationAspect(String timeRangeName, int colIndex) {
38 super(timeRangeName + " (" + Messages.LamiAspect_TimeRangeDuration + ')', "ns"); //$NON-NLS-1$ //$NON-NLS-2$
39 fColIndex = colIndex;
40 }
41
42 @Override
43 public boolean isContinuous() {
44 return true;
45 }
46
47 @Override
48 public boolean isTimeStamp() {
49 return false;
50 }
51
52 @Override
53 public boolean isTimeDuration() {
54 return true;
55 }
56
57 @Override
58 public @Nullable String resolveString(LamiTableEntry entry) {
59 LamiData data = entry.getValue(fColIndex);
60 if (data instanceof LamiTimeRange) {
61 LamiTimeRange range = (LamiTimeRange) data;
62 return String.valueOf(range.getDuration());
63 }
64 return data.toString();
65 }
66
67 @Override
5b973e7c 68 public @Nullable Number resolveNumber(@NonNull LamiTableEntry entry) {
4208b510
AM
69 LamiData data = entry.getValue(fColIndex);
70 if (data instanceof LamiTimeRange) {
71 LamiTimeRange range = (LamiTimeRange) data;
5b973e7c 72 return Long.valueOf(range.getDuration());
4208b510
AM
73 }
74 return null;
75 }
76
77 @Override
78 public Comparator<LamiTableEntry> getComparator() {
79 return (o1, o2) -> {
5b973e7c
JR
80 Number d1 = resolveNumber(o1);
81 Number d2 = resolveNumber(o2);
82
83 if (d1 == null && d2 == null) {
4208b510
AM
84 return 0;
85 }
5b973e7c
JR
86 if (d1 == null) {
87 return 1;
88 }
89
90 if (d2 == null) {
91 return -1;
92 }
4208b510 93
5b973e7c 94 return Long.compare(d1.longValue(), d2.longValue());
4208b510
AM
95 };
96 }
97
98}
This page took 0.027888 seconds and 5 git commands to generate.