/******************************************************************************* * Copyright (c) 2015 École Polytechnique de Montréal * * All rights reserved. This program and the accompanying materials are * made available under the terms of the Eclipse Public License v1.0 which * accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package org.eclipse.tracecompass.analysis.graph.core.tests.stubs.module; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.tracecompass.analysis.graph.core.base.IGraphWorker; import org.eclipse.tracecompass.analysis.graph.core.base.TmfEdge.EdgeType; import org.eclipse.tracecompass.analysis.graph.core.base.TmfGraph; import org.eclipse.tracecompass.analysis.graph.core.base.TmfVertex; import org.eclipse.tracecompass.analysis.graph.core.building.AbstractTmfGraphProvider; import org.eclipse.tracecompass.analysis.graph.core.building.AbstractTraceEventHandler; import org.eclipse.tracecompass.analysis.graph.core.tests.stubs.TestGraphWorker; import org.eclipse.tracecompass.common.core.NonNullUtils; import org.eclipse.tracecompass.tmf.core.event.ITmfEvent; import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; /** * Simple graph provider stub * * @author Geneviève Bastien * @author Francis Giraldeau */ public class GraphProviderStub extends AbstractTmfGraphProvider { /** * Constructor * * @param trace * The trace */ public GraphProviderStub(@NonNull ITmfTrace trace) { super(trace, "Graph Provider Stub"); registerHandler(new StubEventHandler()); } private class StubEventHandler extends AbstractTraceEventHandler { @Override public void handleEvent(ITmfEvent event) { String evname = event.getType().getName(); TmfGraph graph = getAssignedGraph(); if (graph == null) { throw new IllegalStateException(); } switch (evname) { case "take": { IGraphWorker player = new TestGraphWorker(NonNullUtils.checkNotNull((Integer) event.getContent().getField("player").getValue())); TmfVertex v = new TmfVertex(event.getTimestamp().getValue()); graph.add(player, v); break; } case "pass": { IGraphWorker playerFrom = new TestGraphWorker(NonNullUtils.checkNotNull((Integer) event.getContent().getField("from").getValue())); IGraphWorker playerTo = new TestGraphWorker(NonNullUtils.checkNotNull((Integer) event.getContent().getField("to").getValue())); TmfVertex vFrom = new TmfVertex(event.getTimestamp().getValue()); graph.append(playerFrom, vFrom); TmfVertex vTo = new TmfVertex(event.getTimestamp().getValue()); graph.add(playerTo, vTo); graph.link(vFrom, vTo, EdgeType.NETWORK); break; } case "kick": { IGraphWorker player = new TestGraphWorker(NonNullUtils.checkNotNull((Integer) event.getContent().getField("player").getValue())); TmfVertex v = new TmfVertex(event.getTimestamp().getValue()); graph.append(player, v); break; } default: break; } } } }