package org.erlide.tracing.core.mvc.controller; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; import org.erlide.backend.BackendCore; import org.erlide.backend.api.IBackend; import org.erlide.backend.api.IBackendManager; import org.erlide.tracing.core.TraceBackend; /** * Helper class containing methods for dealing with traced nodes. * * @author Piotr Dorobisz * */ public class NodeHelper { private NodeHelper() { } /** * Checks if node with given name was started from erlide or was started * outside it (in this case it is considered as <i>external</i>). * * @param nodeName * node name * @return <code>true</code> if node was started outside erlide, * <code>false</code> otherwise */ public static boolean isExternal(final String nodeName) { for (final IBackend backend : getBackends(false)) { if (backend.getName().equals(nodeName)) { return false; } } return true; } /** * Returns backends managed by erlide. Depending on argument nodes * irrelevant from user's point of view (tracing and ide backends) can be * omitted in resulting list. * * @param ignore * if nodes should be omitted * @return list of backends */ public static Collection<? extends IBackend> getBackends(final boolean ignore) { if (!ignore) { return BackendCore.getBackendManager().getAllBackends(); } final List<IBackend> backends = new ArrayList<>(); final IBackendManager backendManager = BackendCore.getBackendManager(); final Set<IBackend> ignored = new HashSet<>(); IBackend backend; if ((backend = backendManager.getIdeBackend()) != null) { ignored.add(backend); } if ((backend = TraceBackend.getInstance().getBackend(false)) != null) { ignored.add(backend); } for (final IBackend erlideBackend : BackendCore.getBackendManager() .getAllBackends()) { if (!ignored.contains(erlideBackend)) { backends.add(erlideBackend); } } return backends; } }