/******************************************************************************* * Copyright (c) 2000, 2005 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.core.internal.events; import org.eclipse.core.resources.*; import org.eclipse.core.runtime.PerformanceStats; /** * An ResourceStats collects and aggregates timing data about an event such as * a builder running, an editor opening, etc. */ public class ResourceStats { /** * The event that is currently occurring, maybe <code>null</code> */ private static PerformanceStats currentStats; //performance event names public static final String EVENT_BUILDERS = ResourcesPlugin.PI_RESOURCES + "/perf/builders"; //$NON-NLS-1$ public static final String EVENT_LISTENERS = ResourcesPlugin.PI_RESOURCES + "/perf/listeners"; //$NON-NLS-1$ public static final String EVENT_SAVE_PARTICIPANTS = ResourcesPlugin.PI_RESOURCES + "/perf/save.participants"; //$NON-NLS-1$ public static final String EVENT_SNAPSHOT = ResourcesPlugin.PI_RESOURCES + "/perf/snapshot"; //$NON-NLS-1$ //performance event enablement public static boolean TRACE_BUILDERS = PerformanceStats.isEnabled(ResourceStats.EVENT_BUILDERS); public static boolean TRACE_LISTENERS = PerformanceStats.isEnabled(ResourceStats.EVENT_LISTENERS); public static boolean TRACE_SAVE_PARTICIPANTS = PerformanceStats.isEnabled(ResourceStats.EVENT_SAVE_PARTICIPANTS); public static boolean TRACE_SNAPSHOT = PerformanceStats.isEnabled(ResourceStats.EVENT_SNAPSHOT); public static void endBuild() { if (currentStats != null) currentStats.endRun(); currentStats = null; } public static void endNotify() { if (currentStats != null) currentStats.endRun(); currentStats = null; } public static void endSave() { if (currentStats != null) currentStats.endRun(); currentStats = null; } public static void endSnapshot() { if (currentStats != null) currentStats.endRun(); currentStats = null; } /** * Notifies the stats tool that a resource change listener has been added. */ public static void listenerAdded(IResourceChangeListener listener) { if (listener != null) PerformanceStats.getStats(EVENT_LISTENERS, listener.getClass().getName()); } /** * Notifies the stats tool that a resource change listener has been removed. */ public static void listenerRemoved(IResourceChangeListener listener) { if (listener != null) PerformanceStats.removeStats(EVENT_LISTENERS, listener.getClass().getName()); } public static void startBuild(IncrementalProjectBuilder builder) { currentStats = PerformanceStats.getStats(EVENT_BUILDERS, builder); currentStats.startRun(builder.getProject().getName()); } public static void startNotify(IResourceChangeListener listener) { currentStats = PerformanceStats.getStats(EVENT_LISTENERS, listener); currentStats.startRun(); } public static void startSnapshot() { currentStats = PerformanceStats.getStats(EVENT_SNAPSHOT, ResourcesPlugin.getWorkspace()); currentStats.startRun(); } public static void startSave(ISaveParticipant participant) { currentStats = PerformanceStats.getStats(EVENT_SAVE_PARTICIPANTS, participant); currentStats.startRun(); } }