blob: 9f9230bdd77eb5473e6ad7f1105f432c8c8d0c99 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 É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 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Geneviève Bastien - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.tmf.core.analysis;
import org.eclipse.jdt.annotation.NonNull;
/**
* This class listens when new analysis modules are created and registers an
* output if the module corresponds to the output specifications
*
* @author Geneviève Bastien
*/
public class TmfNewAnalysisOutputListener implements ITmfNewAnalysisModuleListener {
private final String fAnalysisId;
private final Class<? extends IAnalysisModule> fAnalysisModuleClass;
private final @NonNull IAnalysisOutput fOutput;
/**
* Constructor
*
* @param output
* The analysis output to add if the analysis corresponds to the
* ID or class
* @param analysisId
* The analysis ID of the single analysis to match
* @param moduleClass
* The module class this output applies to
*/
public TmfNewAnalysisOutputListener(@NonNull IAnalysisOutput output, String analysisId, Class<? extends IAnalysisModule> moduleClass) {
fOutput = output;
fAnalysisId = analysisId;
fAnalysisModuleClass = moduleClass;
}
@Override
public void moduleCreated(IAnalysisModule module) {
if (fAnalysisId != null) {
if (module.getId().equals(fAnalysisId)) {
module.registerOutput(fOutput);
}
} else if (fAnalysisModuleClass != null) {
if (fAnalysisModuleClass.isAssignableFrom(module.getClass())) {
module.registerOutput(fOutput);
}
}
}
}