/******************************************************************************* * Copyright (c) 2009 Red Hat, Inc. * 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 * * Contributors: * Elliott Baron <ebaron@redhat.com> - initial API and implementation *******************************************************************************/ package org.eclipse.linuxtools.internal.valgrind.cachegrind.model; import java.util.ArrayList; import java.util.List; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; public class CachegrindFile implements ICachegrindElement { private static final String UNKNOWN_FILE = "???"; //$NON-NLS-1$ private CachegrindOutput parent; private String path; private List<CachegrindFunction> functions; private IAdaptable model; public CachegrindFile(CachegrindOutput parent, String path) { this.parent = parent; this.path = path; functions = new ArrayList<>(); IPath pathObj = Path.fromOSString(path); if (path.equals(UNKNOWN_FILE)) { model = null; } else { model = CoreModel.getDefault().create(pathObj); if (model == null) { model = ResourcesPlugin.getWorkspace().getRoot().getFile(pathObj); } } } public void addFunction(CachegrindFunction func) { functions.add(func); } public CachegrindFunction[] getFunctions() { return functions.toArray(new CachegrindFunction[functions.size()]); } @Override public ICachegrindElement[] getChildren() { return getFunctions(); } @Override public IAdaptable getModel() { return model; } public String getPath() { return path; } public String getName() { String name = path; if (Path.ROOT.isValidPath(path)) { name = Path.fromOSString(path).lastSegment(); } return name; } @Override public ICachegrindElement getParent() { return parent; } @Override public int compareTo(ICachegrindElement o) { int result = 0; if (o instanceof CachegrindFile) { result = getName().compareTo(((CachegrindFile) o).getName()); } return result; } }