src: Moved path prefilling to ApplicationSettingsPrefiller

* added subdirectory for all source group settings related files
This commit is contained in:
Eberhard Graether
2019-07-16 14:29:34 +02:00
parent 086c19f25e
commit 70febae55b
61 changed files with 239 additions and 195 deletions
+18 -138
View File
@@ -3,37 +3,37 @@
#include <csignal>
#include "Application.h"
#include "LanguagePackageCxx.h"
#include "LanguagePackageJava.h"
#include "LanguagePackageManager.h"
#include "SourceGroupFactory.h"
#include "SourceGroupFactoryModuleCxx.h"
#include "SourceGroupFactoryModuleJava.h"
#include "SourceGroupFactoryModulePython.h"
#include "SourceGroupFactoryModuleCustom.h"
#include "QtNetworkFactory.h"
#include "QtApplication.h"
#include "QtCoreApplication.h"
#include "utilityQt.h"
#include "QtViewFactory.h"
#include "ApplicationSettings.h"
#include "ApplicationSettingsPrefiller.h"
#include "CommandLineParser.h"
#include "ConsoleLogger.h"
#include "FileLogger.h"
#include "LanguagePackageCxx.h"
#include "LanguagePackageJava.h"
#include "LanguagePackageManager.h"
#include "logging.h"
#include "LogManager.h"
#include "MessageIndexingInterrupted.h"
#include "MessageLoadProject.h"
#include "MessageStatus.h"
#include "productVersion.h"
#include "QtNetworkFactory.h"
#include "QtApplication.h"
#include "QtCoreApplication.h"
#include "QtViewFactory.h"
#include "ResourcePaths.h"
#include "ScopedFunctor.h"
#include "SourceGroupFactory.h"
#include "SourceGroupFactoryModuleCxx.h"
#include "SourceGroupFactoryModuleJava.h"
#include "SourceGroupFactoryModulePython.h"
#include "SourceGroupFactoryModuleCustom.h"
#include "TextAccess.h"
#include "UserPaths.h"
#include "utility.h"
#include "utilityApp.h"
#include "utilityPathDetection.h"
#include "utilityQt.h"
#include "Version.h"
#include "productVersion.h"
void signalHandler(int signum)
{
@@ -57,127 +57,6 @@ void setupLogging()
logManager->addLogger(fileLogger);
}
void prefillJavaRuntimePath()
{
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
if (!settings->getHasPrefilledJavaPath())
{
LOG_INFO("Prefilling Java path");
std::shared_ptr<CombinedPathDetector> javaPathDetector = utility::getJavaRuntimePathDetector();
std::vector<FilePath> paths = javaPathDetector->getPaths();
if (!paths.empty())
{
MessageStatus(L"Ran Java runtime path detection, found: " + paths.front().wstr()).dispatch();
settings->setJavaPath(paths.front());
settings->save();
}
else
{
MessageStatus(L"Ran Java runtime path detection, no path found.").dispatch();
}
}
settings->setHasPrefilledJavaPath(true);
}
void prefillJreSystemLibraryPaths()
{
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
if (!settings->getHasPrefilledJreSystemLibraryPaths())
{
LOG_INFO("Prefilling JRE system library path");
std::shared_ptr<CombinedPathDetector> jreSystemLibraryPathsDetector = utility::getJreSystemLibraryPathsDetector();
std::vector<FilePath> paths = jreSystemLibraryPathsDetector->getPaths();
if (!paths.empty())
{
MessageStatus(L"Ran JRE system library path detection, found: " + paths.front().wstr()).dispatch();
settings->setJreSystemLibraryPaths(paths);
settings->save();
}
else
{
MessageStatus(L"Ran JRE system library path detection, no path found.").dispatch();
}
}
settings->setHasPrefilledJreSystemLibraryPaths(true);
}
void prefillMavenExecutablePath()
{
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
if (!settings->getHasPrefilledMavenPath())
{
LOG_INFO("Prefilling Maven path");
std::shared_ptr<CombinedPathDetector> mavenPathDetector = utility::getMavenExecutablePathDetector();
std::vector<FilePath> paths = mavenPathDetector->getPaths();
if (!paths.empty())
{
MessageStatus(L"Ran Maven executable path detection, found: " + paths.front().wstr()).dispatch();
settings->setMavenPath(paths.front());
settings->save();
}
else
{
MessageStatus(L"Ran Maven executable path detection, no path found.").dispatch();
}
}
settings->setHasPrefilledMavenPath(true);
}
void prefillCxxHeaderPaths()
{
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
if (!settings->getHasPrefilledHeaderSearchPaths())
{
LOG_INFO("Prefilling header search paths");
std::shared_ptr<CombinedPathDetector> cxxHeaderDetector = utility::getCxxHeaderPathDetector();
std::vector<FilePath> paths = cxxHeaderDetector->getPaths();
if (!paths.empty())
{
MessageStatus(L"Ran C/C++ header path detection, found " + std::to_wstring(paths.size()) + L" path" +
(paths.size() == 1 ? L"" : L"s")).dispatch();
settings->setHeaderSearchPaths(paths);
settings->save();
}
}
settings->setHasPrefilledHeaderSearchPaths(true);
}
void prefillCxxFrameworkPaths()
{
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
if (!settings->getHasPrefilledFrameworkSearchPaths())
{
LOG_INFO("Prefilling framework search paths");
std::shared_ptr<CombinedPathDetector> cxxFrameworkDetector = utility::getCxxFrameworkPathDetector();
std::vector<FilePath> paths = cxxFrameworkDetector->getPaths();
if (!paths.empty())
{
MessageStatus(L"Ran C/C++ framework path detection, found " + std::to_wstring(paths.size()) + L" path" +
(paths.size() == 1 ? L"" : L"s")).dispatch();
settings->setFrameworkSearchPaths(paths);
settings->save();
}
}
settings->setHasPrefilledFrameworkSearchPaths(true);
}
void prefillPaths()
{
prefillJavaRuntimePath();
prefillMavenExecutablePath();
prefillJreSystemLibraryPaths();
prefillCxxHeaderPaths();
prefillCxxFrameworkPaths();
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
settings->save();
}
void addLanguagePackages()
{
SourceGroupFactory::getInstance()->addModule(std::make_shared<SourceGroupFactoryModuleCxx>());
@@ -282,7 +161,7 @@ int main(int argc, char *argv[])
appSettings->save();
}
prefillPaths();
ApplicationSettingsPrefiller::prefillPaths(appSettings);
addLanguagePackages();
signal(SIGINT, signalHandler);
@@ -341,7 +220,8 @@ int main(int argc, char *argv[])
Application::destroyInstance();
});
prefillPaths();
ApplicationSettings* appSettings = ApplicationSettings::getInstance().get();
ApplicationSettingsPrefiller::prefillPaths(appSettings);
addLanguagePackages();
utility::loadFontsFromDirectory(ResourcePaths::getFontsPath(), L".otf");
+60 -57
View File
@@ -325,8 +325,68 @@ add_files(
settings/migration/SettingsMigrationMoveKey.h
settings/migration/SettingsMigrator.h
settings/source_group/SourceGroupSettings.cpp
settings/source_group/SourceGroupSettings.h
settings/source_group/SourceGroupSettingsBase.h
settings/source_group/SourceGroupSettingsCxx.cpp
settings/source_group/SourceGroupSettingsCxx.h
settings/source_group/SourceGroupSettingsCEmpty.cpp
settings/source_group/SourceGroupSettingsCEmpty.h
settings/source_group/SourceGroupSettingsCppEmpty.cpp
settings/source_group/SourceGroupSettingsCppEmpty.h
settings/source_group/SourceGroupSettingsCustomCommand.cpp
settings/source_group/SourceGroupSettingsCustomCommand.h
settings/source_group/SourceGroupSettingsCxxCdb.cpp
settings/source_group/SourceGroupSettingsCxxCdb.h
settings/source_group/SourceGroupSettingsCxxCdbVs.cpp
settings/source_group/SourceGroupSettingsCxxCdbVs.h
settings/source_group/SourceGroupSettingsCxxCodeblocks.cpp
settings/source_group/SourceGroupSettingsCxxCodeblocks.h
settings/source_group/SourceGroupSettingsCxxSonargraph.cpp
settings/source_group/SourceGroupSettingsCxxSonargraph.h
settings/source_group/SourceGroupSettingsJava.cpp
settings/source_group/SourceGroupSettingsJava.h
settings/source_group/SourceGroupSettingsJavaEmpty.cpp
settings/source_group/SourceGroupSettingsJavaEmpty.h
settings/source_group/SourceGroupSettingsJavaGradle.cpp
settings/source_group/SourceGroupSettingsJavaGradle.h
settings/source_group/SourceGroupSettingsJavaMaven.cpp
settings/source_group/SourceGroupSettingsJavaMaven.h
settings/source_group/SourceGroupSettingsJavaSonargraph.cpp
settings/source_group/SourceGroupSettingsJavaSonargraph.h
settings/source_group/SourceGroupSettingsPythonEmpty.cpp
settings/source_group/SourceGroupSettingsPythonEmpty.h
settings/source_group/SourceGroupSettingsWithClasspath.cpp
settings/source_group/SourceGroupSettingsWithClasspath.h
settings/source_group/SourceGroupSettingsWithCppStandard.cpp
settings/source_group/SourceGroupSettingsWithCppStandard.h
settings/source_group/SourceGroupSettingsWithCStandard.cpp
settings/source_group/SourceGroupSettingsWithCStandard.h
settings/source_group/SourceGroupSettingsWithCxxCrossCompilationOptions.cpp
settings/source_group/SourceGroupSettingsWithCxxCrossCompilationOptions.h
settings/source_group/SourceGroupSettingsWithExcludeFilters.cpp
settings/source_group/SourceGroupSettingsWithExcludeFilters.h
settings/source_group/SourceGroupSettingsWithIndexedHeaderPaths.cpp
settings/source_group/SourceGroupSettingsWithIndexedHeaderPaths.h
settings/source_group/SourceGroupSettingsWithJavaStandard.cpp
settings/source_group/SourceGroupSettingsWithJavaStandard.h
settings/source_group/SourceGroupSettingsWithCxxPchOptions.cpp
settings/source_group/SourceGroupSettingsWithCxxPchOptions.h
settings/source_group/SourceGroupSettingsWithSonargraphProjectPath.cpp
settings/source_group/SourceGroupSettingsWithSonargraphProjectPath.h
settings/source_group/SourceGroupSettingsWithSourceExtensions.cpp
settings/source_group/SourceGroupSettingsWithSourceExtensions.h
settings/source_group/SourceGroupSettingsWithSourcePaths.cpp
settings/source_group/SourceGroupSettingsWithSourcePaths.h
settings/source_group/SourceGroupStatusType.cpp
settings/source_group/SourceGroupStatusType.h
settings/source_group/SourceGroupType.cpp
settings/source_group/SourceGroupType.h
settings/ApplicationSettings.cpp
settings/ApplicationSettings.h
settings/ApplicationSettingsPrefiller.cpp
settings/ApplicationSettingsPrefiller.h
settings/ColorScheme.cpp
settings/ColorScheme.h
settings/LanguageType.cpp
@@ -335,63 +395,6 @@ add_files(
settings/ProjectSettings.h
settings/Settings.cpp
settings/Settings.h
settings/SourceGroupSettings.cpp
settings/SourceGroupSettings.h
settings/SourceGroupSettingsBase.h
settings/SourceGroupSettingsCxx.cpp
settings/SourceGroupSettingsCxx.h
settings/SourceGroupSettingsCEmpty.cpp
settings/SourceGroupSettingsCEmpty.h
settings/SourceGroupSettingsCppEmpty.cpp
settings/SourceGroupSettingsCppEmpty.h
settings/SourceGroupSettingsCustomCommand.cpp
settings/SourceGroupSettingsCustomCommand.h
settings/SourceGroupSettingsCxxCdb.cpp
settings/SourceGroupSettingsCxxCdb.h
settings/SourceGroupSettingsCxxCdbVs.cpp
settings/SourceGroupSettingsCxxCdbVs.h
settings/SourceGroupSettingsCxxCodeblocks.cpp
settings/SourceGroupSettingsCxxCodeblocks.h
settings/SourceGroupSettingsCxxSonargraph.cpp
settings/SourceGroupSettingsCxxSonargraph.h
settings/SourceGroupSettingsJava.cpp
settings/SourceGroupSettingsJava.h
settings/SourceGroupSettingsJavaEmpty.cpp
settings/SourceGroupSettingsJavaEmpty.h
settings/SourceGroupSettingsJavaGradle.cpp
settings/SourceGroupSettingsJavaGradle.h
settings/SourceGroupSettingsJavaMaven.cpp
settings/SourceGroupSettingsJavaMaven.h
settings/SourceGroupSettingsJavaSonargraph.cpp
settings/SourceGroupSettingsJavaSonargraph.h
settings/SourceGroupSettingsPythonEmpty.cpp
settings/SourceGroupSettingsPythonEmpty.h
settings/SourceGroupSettingsWithClasspath.cpp
settings/SourceGroupSettingsWithClasspath.h
settings/SourceGroupSettingsWithCppStandard.cpp
settings/SourceGroupSettingsWithCppStandard.h
settings/SourceGroupSettingsWithCStandard.cpp
settings/SourceGroupSettingsWithCStandard.h
settings/SourceGroupSettingsWithCxxCrossCompilationOptions.cpp
settings/SourceGroupSettingsWithCxxCrossCompilationOptions.h
settings/SourceGroupSettingsWithExcludeFilters.cpp
settings/SourceGroupSettingsWithExcludeFilters.h
settings/SourceGroupSettingsWithIndexedHeaderPaths.cpp
settings/SourceGroupSettingsWithIndexedHeaderPaths.h
settings/SourceGroupSettingsWithJavaStandard.cpp
settings/SourceGroupSettingsWithJavaStandard.h
settings/SourceGroupSettingsWithCxxPchOptions.cpp
settings/SourceGroupSettingsWithCxxPchOptions.h
settings/SourceGroupSettingsWithSonargraphProjectPath.cpp
settings/SourceGroupSettingsWithSonargraphProjectPath.h
settings/SourceGroupSettingsWithSourceExtensions.cpp
settings/SourceGroupSettingsWithSourceExtensions.h
settings/SourceGroupSettingsWithSourcePaths.cpp
settings/SourceGroupSettingsWithSourcePaths.h
settings/SourceGroupStatusType.cpp
settings/SourceGroupStatusType.h
settings/SourceGroupType.cpp
settings/SourceGroupType.h
utility/commandline/CommandlineHelper.cpp
utility/commandline/CommandlineHelper.h
@@ -0,0 +1,142 @@
#include "ApplicationSettingsPrefiller.h"
#include "ApplicationSettings.h"
#include "logging.h"
#include "MessageStatus.h"
#include "utilityPathDetection.h"
void ApplicationSettingsPrefiller::prefillPaths(ApplicationSettings* settings)
{
bool updated = false;
updated |= prefillJavaRuntimePath(settings);
updated |= prefillMavenExecutablePath(settings);
updated |= prefillJreSystemLibraryPaths(settings);
updated |= prefillCxxHeaderPaths(settings);
updated |= prefillCxxFrameworkPaths(settings);
if (updated)
{
settings->save();
}
}
bool ApplicationSettingsPrefiller::prefillJavaRuntimePath(ApplicationSettings* settings)
{
if (settings->getHasPrefilledJavaPath())
{
return false;
}
LOG_INFO("Prefilling Java path");
std::shared_ptr<CombinedPathDetector> javaPathDetector = utility::getJavaRuntimePathDetector();
std::vector<FilePath> paths = javaPathDetector->getPaths();
if (!paths.empty())
{
MessageStatus(L"Ran Java runtime path detection, found: " + paths.front().wstr()).dispatch();
settings->setJavaPath(paths.front());
}
else
{
MessageStatus(L"Ran Java runtime path detection, no path found.").dispatch();
}
settings->setHasPrefilledJavaPath(true);
return true;
}
bool ApplicationSettingsPrefiller::prefillJreSystemLibraryPaths(ApplicationSettings* settings)
{
if (settings->getHasPrefilledJreSystemLibraryPaths())
{
return false;
}
LOG_INFO("Prefilling JRE system library path");
std::shared_ptr<CombinedPathDetector> jreSystemLibraryPathsDetector = utility::getJreSystemLibraryPathsDetector();
std::vector<FilePath> paths = jreSystemLibraryPathsDetector->getPaths();
if (!paths.empty())
{
MessageStatus(L"Ran JRE system library path detection, found: " + paths.front().wstr()).dispatch();
settings->setJreSystemLibraryPaths(paths);
}
else
{
MessageStatus(L"Ran JRE system library path detection, no path found.").dispatch();
}
settings->setHasPrefilledJreSystemLibraryPaths(true);
return true;
}
bool ApplicationSettingsPrefiller::prefillMavenExecutablePath(ApplicationSettings* settings)
{
if (settings->getHasPrefilledMavenPath())
{
return false;
}
LOG_INFO("Prefilling Maven path");
std::shared_ptr<CombinedPathDetector> mavenPathDetector = utility::getMavenExecutablePathDetector();
std::vector<FilePath> paths = mavenPathDetector->getPaths();
if (!paths.empty())
{
MessageStatus(L"Ran Maven executable path detection, found: " + paths.front().wstr()).dispatch();
settings->setMavenPath(paths.front());
}
else
{
MessageStatus(L"Ran Maven executable path detection, no path found.").dispatch();
}
settings->setHasPrefilledMavenPath(true);
return true;
}
bool ApplicationSettingsPrefiller::prefillCxxHeaderPaths(ApplicationSettings* settings)
{
if (settings->getHasPrefilledHeaderSearchPaths())
{
return false;
}
LOG_INFO("Prefilling header search paths");
std::shared_ptr<CombinedPathDetector> cxxHeaderDetector = utility::getCxxHeaderPathDetector();
std::vector<FilePath> paths = cxxHeaderDetector->getPaths();
if (!paths.empty())
{
MessageStatus(L"Ran C/C++ header path detection, found " + std::to_wstring(paths.size()) + L" path" +
(paths.size() == 1 ? L"" : L"s")).dispatch();
settings->setHeaderSearchPaths(paths);
}
settings->setHasPrefilledHeaderSearchPaths(true);
return true;
}
bool ApplicationSettingsPrefiller::prefillCxxFrameworkPaths(ApplicationSettings* settings)
{
if (settings->getHasPrefilledFrameworkSearchPaths())
{
return false;
}
LOG_INFO("Prefilling framework search paths");
std::shared_ptr<CombinedPathDetector> cxxFrameworkDetector = utility::getCxxFrameworkPathDetector();
std::vector<FilePath> paths = cxxFrameworkDetector->getPaths();
if (!paths.empty())
{
MessageStatus(L"Ran C/C++ framework path detection, found " + std::to_wstring(paths.size()) + L" path" +
(paths.size() == 1 ? L"" : L"s")).dispatch();
settings->setFrameworkSearchPaths(paths);
}
settings->setHasPrefilledFrameworkSearchPaths(true);
return true;
}
@@ -0,0 +1,19 @@
#ifndef APPLICATION_SETTINGS_PREFILLER_H
#define APPLICATION_SETTINGS_PREFILLER_H
class ApplicationSettings;
class ApplicationSettingsPrefiller
{
public:
static void prefillPaths(ApplicationSettings* settings);
private:
static bool prefillJavaRuntimePath(ApplicationSettings* settings);
static bool prefillJreSystemLibraryPaths(ApplicationSettings* settings);
static bool prefillMavenExecutablePath(ApplicationSettings* settings);
static bool prefillCxxHeaderPaths(ApplicationSettings* settings);
static bool prefillCxxFrameworkPaths(ApplicationSettings* settings);
};
#endif // APPLICATION_SETTINGS_PREFILLER_H