1 /*******************************************************************************
2 * Copyright (c) 2014 Ericsson
4 * All rights reserved. This program and the accompanying materials are made
5 * 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
10 * Alexandre Montplaisir - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.tracecompass
.tmf
.core
.event
.aspect
;
15 import org
.eclipse
.jdt
.annotation
.NonNull
;
16 import org
.eclipse
.jdt
.annotation
.Nullable
;
17 import org
.eclipse
.osgi
.util
.NLS
;
18 import org
.eclipse
.tracecompass
.statesystem
.core
.ITmfStateSystem
;
19 import org
.eclipse
.tracecompass
.statesystem
.core
.exceptions
.AttributeNotFoundException
;
20 import org
.eclipse
.tracecompass
.statesystem
.core
.exceptions
.StateSystemDisposedException
;
21 import org
.eclipse
.tracecompass
.statesystem
.core
.statevalue
.ITmfStateValue
;
22 import org
.eclipse
.tracecompass
.tmf
.core
.event
.ITmfEvent
;
25 * Aspect representing a query in a given state system, at the timestamp of the
28 * This is a good example of how aspects can be "indirect" with regards to their
31 * @author Alexandre Montplaisir
33 public class TmfStateSystemAspect
implements ITmfEventAspect
{
35 private final @Nullable String fName
;
36 private final ITmfStateSystem fSS
;
37 private final int fAttribute
;
43 * The name of this aspect. You can use 'null' to use the
44 * default name, which is the (base) name of the attribute.
46 * The state system in which we want to query
47 * @param attributeQuark
48 * The quark of the attribute in the state system to look for
50 public TmfStateSystemAspect(@Nullable String name
, ITmfStateSystem ss
, int attributeQuark
) {
53 fAttribute
= attributeQuark
;
57 public String
getName() {
63 name
= fSS
.getFullAttributePath(fAttribute
);
64 return (name
== null ? EMPTY_STRING
: name
);
68 public @NonNull String
getHelpText() {
69 return Messages
.getMessage(NLS
.bind(Messages
.AspectHelpText_Statesystem
,
70 fSS
.getSSID(), fSS
.getFullAttributePath(fAttribute
)));
74 public String
resolve(ITmfEvent event
) {
76 ITmfStateValue value
= fSS
.querySingleState(event
.getTimestamp().getValue(), fAttribute
).getStateValue();
78 @SuppressWarnings("null")
79 @NonNull String ret
= value
.toString();
81 } catch (AttributeNotFoundException
| StateSystemDisposedException e
) {
87 public @Nullable String
getFilterId() {