/** * Copyright (c) 2005-2012 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package com.python.pydev.analysis.builder; import org.python.pydev.core.IPythonNature; import org.python.pydev.core.MisconfigurationException; import org.python.pydev.core.log.Log; import org.python.pydev.logging.DebugSettings; import com.python.pydev.analysis.additionalinfo.AbstractAdditionalDependencyInfo; import com.python.pydev.analysis.additionalinfo.AdditionalProjectInterpreterInfo; /** * This class is used to do analysis on a thread, just to remove the actual info. * * @author Fabio */ public class AnalysisBuilderRunnableForRemove extends AbstractAnalysisBuilderRunnable { /** * @param oldAnalysisBuilderThread This is an existing runnable that was already analyzing things... we must wait for it * to finish to start it again. * * @param module: this is a callback that'll be called with a boolean that should return the IModule to be used in the * analysis. * The parameter is FULL_MODULE or DEFINITIONS_MODULE */ /*Default*/ AnalysisBuilderRunnableForRemove(String moduleName, IPythonNature nature, boolean isFullBuild, IAnalysisBuilderRunnable oldAnalysisBuilderThread, boolean forceAnalysis, int analysisCause, long documentTime, KeyForAnalysisRunnable key, long resourceModificationStamp) { super(isFullBuild, moduleName, forceAnalysis, analysisCause, oldAnalysisBuilderThread, nature, documentTime, key, resourceModificationStamp); if (DebugSettings.DEBUG_ANALYSIS_REQUESTS) { Log.toLogFile(this, "Removing additional info from: " + moduleName); } removeInfoForModule(moduleName, nature, isFullBuild); } @Override public void doAnalysis() { // Do nothing (we let it be scheduled just to stop executing an existing analysis). } /** * @param moduleName this is the module name * @param nature this is the nature */ public static void removeInfoForModule(String moduleName, IPythonNature nature, boolean isFullBuild) { if (moduleName != null && nature != null) { AbstractAdditionalDependencyInfo info; try { info = AdditionalProjectInterpreterInfo.getAdditionalInfoForProject(nature); } catch (MisconfigurationException e) { Log.log(e); return; } boolean generateDelta; if (isFullBuild) { generateDelta = false; } else { generateDelta = true; } info.removeInfoFromModule(moduleName, generateDelta); } else { if (DebugSettings.DEBUG_ANALYSIS_REQUESTS) { Log.toLogFile("Unable to remove info. name: " + moduleName + " or nature:" + nature + " is null.", AnalysisBuilderRunnableForRemove.class); } } } }