diff --git a/bin/test/data/log/test_log.txt b/bin/test/data/log/test_log.txt index 6fa47543..ffeb8492 100644 --- a/bin/test/data/log/test_log.txt +++ b/bin/test/data/log/test_log.txt @@ -1,349 +1,176 @@ ConfigManager.cpp WARNING: value path/to/nowhere is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. Token.cpp ERROR: Location Id was not referenced by this Token. Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined @@ -355,6 +182,48 @@ Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined Edge.cpp ERROR: Edge use can't go from Node undefined to Node undefined Edge.cpp ERROR: Edge use can't go from Node undefined to Node undefined + INFO: send TestMessage + INFO: handle TestMessage + INFO: send TestMessage + INFO: handle TestMessage + INFO: send TestMessage + INFO: handle TestMessage + INFO: send TestMessage2 + INFO: handle TestMessage2 + INFO: send TestMessage + INFO: handle TestMessage + INFO: send TestMessage2 + INFO: handle TestMessage2 + INFO: send TestMessage + INFO: handle TestMessage + INFO: send TestMessage + INFO: handle TestMessage + INFO: send TestMessage2 + INFO: handle TestMessage2 + INFO: send TestMessage + INFO: handle TestMessage + INFO: send TestMessage + INFO: handle TestMessage + INFO: handle TestMessage + INFO: send TestMessage + INFO: handle TestMessage + INFO: handle TestMessage + INFO: send TestMessage + INFO: handle TestMessage + INFO: send TestMessage + INFO: handle TestMessage + INFO: handle TestMessage + INFO: handle TestMessage + INFO: handle TestMessage + INFO: handle TestMessage + INFO: handle TestMessage + INFO: send TestMessage + INFO: handle TestMessage + INFO: handle TestMessage + INFO: handle TestMessage + INFO: handle TestMessage + INFO: handle TestMessage + INFO: handle TestMessage Settings.cpp WARNING: File for Settings not found: data/SettingsTestSuite/wrong_settings.xml ConfigManager.cpp WARNING: value Bool is not present in config. ConfigManager.cpp WARNING: value Int is not present in config. @@ -370,100 +239,100 @@ ConfigManager.cpp WARNING: value Int is not present in config. ConfigManager.cpp WARNING: value Float is not present in config. ConfigManager.cpp WARNING: value String is not present in config. ConfigManager.cpp WARNING: value NewBool is not present in config. -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: typedef: type -> int -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: typedef: type -> int + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: class: Class -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: class: Class + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: struct: Struct -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: struct: Struct + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: global: Global -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: global: Global + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: global: Global -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: global: Global + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: field: m_field -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: field: m_field + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: field: Struct::m_field -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: field: Struct::m_field + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: function: isTrue -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: function: isTrue + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: method: isMethod -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: method: isMethod + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: method: Class::isMethod -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: method: Class::isMethod + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: namespace: utility -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: namespace: utility + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: enum: Category -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: enum: Category + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: enum: Class::Category -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: enum: Class::Category + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: enum constant: VALUE -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: enum constant: VALUE + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: class: ClassA -Storage.cpp INFO: class: ClassB -Storage.cpp INFO: inheritance: ClassB : ClassA -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: class: ClassA + INFO: class: ClassB + INFO: inheritance: ClassB : ClassA + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: struct: StructA -Storage.cpp INFO: struct: StructB -Storage.cpp INFO: inheritance: StructB : StructA -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: struct: StructA + INFO: struct: StructB + INFO: inheritance: StructB : StructA + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: method: A::isMethod -Storage.cpp INFO: method: B::isMethod -Storage.cpp INFO: override: A::isMethod -> B::isMethod -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: method: A::isMethod + INFO: method: B::isMethod + INFO: override: A::isMethod -> B::isMethod + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: function: isTrue -Storage.cpp INFO: function: func -Storage.cpp INFO: call: isTrue -> func -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: function: isTrue + INFO: function: func + INFO: call: isTrue -> func + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: global: global -Storage.cpp INFO: function: isTrue -Storage.cpp INFO: call: global -> isTrue -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: global: global + INFO: function: isTrue + INFO: call: global -> isTrue + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: function: isTrue -Storage.cpp INFO: field: Foo::m_field -Storage.cpp INFO: field usage: isTrue -> Foo::m_field -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: function: isTrue + INFO: field: Foo::m_field + INFO: field usage: isTrue -> Foo::m_field + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: function: isTrue -Storage.cpp INFO: global: global -Storage.cpp INFO: global usage: isTrue -> global -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: function: isTrue + INFO: global: global + INFO: global usage: isTrue -> global + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: function: isTrue -Storage.cpp INFO: struct: Struct -Storage.cpp INFO: type usage: isTrue -> Struct -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: function: isTrue + INFO: struct: Struct + INFO: type usage: isTrue -> Struct + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: file: file.h < 0:0 0:0> + INFO: file: file.h < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.h -Storage.cpp INFO: file: file.cpp < 0:0 0:0> + INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp -Storage.cpp INFO: file: file.h < 0:0 0:0> + INFO: file: file.h < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.h -Storage.cpp INFO: file: file.cpp < 0:0 0:0> -Storage.cpp INFO: include: file.h -Storage.cpp INFO: file: file.cpp < 0:0 0:0> -Storage.cpp INFO: file: file.h < 0:0 0:0> + INFO: file: file.cpp < 0:0 0:0> + INFO: include: file.h + INFO: file: file.cpp < 0:0 0:0> + INFO: file: file.h < 0:0 0:0> TextAccess.cpp WARNING: Index 'firstLine' has to be lower or equal index 'lastLine', is 3 > 2 TextAccess.cpp WARNING: Tried to access index 10. Maximum index is 8 TextAccess.cpp WARNING: Tried to access index 10. Maximum index is 8 diff --git a/src/lib/data/SqliteStorage.cpp b/src/lib/data/SqliteStorage.cpp index 7211d795..bb24a7a7 100644 --- a/src/lib/data/SqliteStorage.cpp +++ b/src/lib/data/SqliteStorage.cpp @@ -81,7 +81,7 @@ Id SqliteStorage::addEdge(int type, Id sourceNodeId, Id targetNodeId) return id; } -Id SqliteStorage::addNode(int type, Id nameId, bool defined) +Id SqliteStorage::addNode(int type, const std::string& serializedName, bool defined) { m_database.execDML( "INSERT INTO element(id) VALUES(NULL);" @@ -89,16 +89,16 @@ Id SqliteStorage::addNode(int type, Id nameId, bool defined) Id id = m_database.lastRowId(); m_database.execDML(( - "INSERT INTO node(id, type, name_id, defined) VALUES(" - + std::to_string(id) + ", " + std::to_string(type) + ", " + std::to_string(nameId) + ", " + std::to_string(defined) + ");" + "INSERT INTO node(id, type, serializedName, defined) VALUES(" + + std::to_string(id) + ", " + std::to_string(type) + ", '" + serializedName + "', " + std::to_string(defined) + ");" ).c_str()); return id; } -Id SqliteStorage::addFile(Id nameId, const std::string& filePath, const std::string& modificationTime) +Id SqliteStorage::addFile(const std::string& serializedName, const std::string& filePath, const std::string& modificationTime) { - Id id = addNode(Node::NODE_FILE, nameId, true); + Id id = addNode(Node::NODE_FILE, serializedName, true); std::shared_ptr content = TextAccess::createFromFile(filePath); CppSQLite3Statement stmt = m_database.compileStatement(( @@ -125,26 +125,6 @@ Id SqliteStorage::addSourceLocation(Id elementId, Id fileNodeId, uint startLine, return m_database.lastRowId(); } -Id SqliteStorage::addNameHierarchyElement(const std::string& name, Id parentId) -{ - if (parentId) - { - m_database.execDML(( - "INSERT INTO name_hierarchy_element(id, name, parent_id) " - "VALUES (NULL, '" + name + "', " + std::to_string(parentId) + ");" - ).c_str()); - } - else - { - m_database.execDML(( - "INSERT INTO name_hierarchy_element(id, name, parent_id) " - "VALUES(NULL, '" + name + "', NULL);" - ).c_str()); - } - - return m_database.lastRowId(); -} - Id SqliteStorage::addComponentAccess(Id memberEdgeId, int type) { m_database.execDML(( @@ -155,16 +135,6 @@ Id SqliteStorage::addComponentAccess(Id memberEdgeId, int type) return m_database.lastRowId(); } -Id SqliteStorage::addSignature(Id nodeId, const std::string& signature) -{ - m_database.execDML(( - "INSERT INTO function_signature(id, signature) " - "VALUES (" + std::to_string(nodeId) + ", '" + signature + "');" - ).c_str()); - - return m_database.lastRowId(); -} - Id SqliteStorage::addCommentLocation(Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol) { m_database.execDML(( @@ -210,13 +180,6 @@ void SqliteStorage::removeElement(Id id) ).c_str()); } -void SqliteStorage::removeNameHierarchyElement(Id id) -{ - m_database.execDML(( - "DELETE FROM name_hierarchy_element WHERE id == " + std::to_string(id) + ";" - ).c_str()); -} - void SqliteStorage::removeElementsWithLocationInFiles(const std::vector& fileIds) { CppSQLite3Query q = m_database.execQuery(( @@ -263,13 +226,6 @@ void SqliteStorage::removeFiles(const std::vector& fileIds) ).c_str()); } -void SqliteStorage::removeUnusedNameHierarchyElements() -{ - m_database.execDML( - "DELETE FROM name_hierarchy_element WHERE NOT EXISTS (SELECT * FROM node where node.name_id == name_hierarchy_element.id);" - ); -} - void SqliteStorage::removeErrorsInFiles(const std::vector& filePaths) { m_database.execDML(( @@ -285,7 +241,7 @@ StorageNode SqliteStorage::getFirstNode() const return nodes[0]; } - return StorageNode(0, 0, 0, false); + return StorageNode(0, 0, "", false); } std::vector SqliteStorage::getAllNodes() const @@ -444,9 +400,14 @@ StorageNode SqliteStorage::getNodeById(Id id) const return StorageNode(0, 0, 0, false); } -std::vector SqliteStorage::getNodesByNameId(Id nameId) const +StorageNode SqliteStorage::getNodeBySerializedName(const std::string& serializedName) const { - return getAllNodes("WHERE name_id == " + std::to_string(nameId)); + std::vector nodes = getAllNodes("WHERE serializedName == '" + serializedName + "'"); // Todo: use getfirstnode here + if (nodes.size() > 0) + { + return nodes[0]; + } + return StorageNode(0, 0, "", 0); } std::vector SqliteStorage::getNodesByIds(const std::vector& nodeIds) const @@ -457,32 +418,15 @@ std::vector SqliteStorage::getNodesByIds(const std::vector& nod StorageFile SqliteStorage::getFileById(const Id id) const { return getFirstFile( - "SELECT node.id, node.name_id, file.path, file.modification_time FROM node INNER JOIN file ON node.id = file.id " + "SELECT node.id, node.serializedName, file.path, file.modification_time FROM node INNER JOIN file ON node.id = file.id " "WHERE node.id == " + std::to_string(id) + ";" ); } -StorageFile SqliteStorage::getFileByName(const std::string& fileName) const -{ - Id nameId = getNameHierarchyElementIdByName(fileName); - - StorageFile storageFile(0, 0, "", ""); - - if (nameId != 0) - { - storageFile = getFirstFile( - "SELECT node.id, node.name_id, file.path, file.modification_time FROM node INNER JOIN file ON node.id = file.id " - "WHERE node.name_id == " + std::to_string(nameId) + ";" - ); - } - - return storageFile; -} - StorageFile SqliteStorage::getFileByPath(const std::string& filePath) const { StorageFile storageFile = getFirstFile( - "SELECT node.id, node.name_id, file.path, file.modification_time FROM node INNER JOIN file ON node.id = file.id " + "SELECT node.id, node.serializedName, file.path, file.modification_time FROM node INNER JOIN file ON node.id = file.id " "WHERE file.path == '" + filePath + "';" ); @@ -491,7 +435,7 @@ StorageFile SqliteStorage::getFileByPath(const std::string& filePath) const std::vector SqliteStorage::getAllFiles() const { - return getAllFiles("SELECT file.id, node.name_id, file.path, file.modification_time FROM file INNER JOIN node ON file.id = node.id;"); + return getAllFiles("SELECT file.id, node.serializedName, file.path, file.modification_time FROM file INNER JOIN node ON file.id = node.id;"); } std::shared_ptr SqliteStorage::getFileContentByPath(const std::string& filePath) const @@ -522,81 +466,6 @@ void SqliteStorage::setNodeDefined(bool defined, Id nodeId) ).c_str()); } -Id SqliteStorage::getNameHierarchyElementIdByName(const std::string& name, Id parentId) const -{ - if (parentId) - { - return getFirstResult( - "SELECT id FROM name_hierarchy_element WHERE name == '" + name + "' AND parent_id == " + std::to_string(parentId) + ";" - ); - } - else - { - return getFirstResult( - "SELECT id FROM name_hierarchy_element WHERE name == '" + name + "' AND parent_id IS NULL;" - ); - } -} - -Id SqliteStorage::getNameHierarchyElementIdByNodeId(const Id nodeId) const -{ - return getFirstResult( - "SELECT name_id FROM node WHERE id == " + std::to_string(nodeId) + ";" - ); -} - -std::vector SqliteStorage::getAllNameHierarchyElements() const -{ - std::vector ret; - - CppSQLite3Query q = m_database.execQuery( - "SELECT * FROM name_hierarchy_element;" - ); - - while (!q.eof()) - { - const Id id = q.getIntField(0, 0); - const std::string name = q.getStringField(1, ""); - const Id parent_id = q.getIntField(2, 0); - - - if (id != 0 && name != "" && parent_id != 0) - { - ret.push_back(StorageNameHierarchyElement(id, name, parent_id)); - } - q.nextRow(); - } - - return ret; -} - -NameHierarchy SqliteStorage::getNameHierarchyById(const Id id) const -{ - CppSQLite3Query q = m_database.execQuery(( - "SELECT name, parent_id FROM name_hierarchy_element WHERE id == " + std::to_string(id) + ";" - ).c_str()); - - NameHierarchy nameHierarchy; - - if (!q.eof()) - { - const std::string elementName = q.getStringField(0, ""); - const Id parentId = q.getIntField(1, 0); - - if (parentId > 0) - { - nameHierarchy = getNameHierarchyById(parentId); - } - - if (elementName.size() > 0) - { - nameHierarchy.push(std::make_shared(elementName)); - } - } - - return nameHierarchy; -} - StorageSourceLocation SqliteStorage::getSourceLocationByData(Id elementId, Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol, bool isScope) const { return getFirstSourceLocation(( @@ -732,36 +601,6 @@ std::vector SqliteStorage::getComponentAccessByMemberEdg return accesses; } -std::vector SqliteStorage::getNodeIdsBySignature(const std::string& signature) const -{ - CppSQLite3Query q = m_database.execQuery(( - "SELECT id FROM function_signature WHERE signature == '" + signature + "';" - ).c_str()); - - std::vector ids; - while (!q.eof()) - { - ids.push_back(q.getIntField(0, 0)); - q.nextRow(); - } - - return ids; -} - -std::string SqliteStorage::getSignatureByNodeId(Id nodeId) const -{ - CppSQLite3Query q = m_database.execQuery(( - "SELECT id, signature FROM function_signature WHERE id == " + std::to_string(nodeId) + ";" - ).c_str()); - - while (!q.eof()) - { - return q.getStringField(1, ""); - } - - return ""; -} - std::vector SqliteStorage::getCommentLocationsInFile(const FilePath& filePath) const { Id fileNodeId = getFileByPath(filePath.str()).id; @@ -829,11 +668,6 @@ int SqliteStorage::getFileCount() const return m_database.execScalar("SELECT COUNT(*) FROM file;"); } -int SqliteStorage::getNameHierarchyElementCount() const -{ - return m_database.execScalar("SELECT COUNT(*) FROM name_hierarchy_element;"); -} - int SqliteStorage::getSourceLocationCount() const { return m_database.execScalar("SELECT COUNT(*) FROM source_location;"); @@ -843,10 +677,8 @@ void SqliteStorage::clearTables() { m_database.execDML("DROP TABLE IF EXISTS main.error;"); m_database.execDML("DROP TABLE IF EXISTS main.comment_location;"); - m_database.execDML("DROP TABLE IF EXISTS main.function_signature;"); m_database.execDML("DROP TABLE IF EXISTS main.component_access;"); m_database.execDML("DROP TABLE IF EXISTS main.source_location;"); - m_database.execDML("DROP TABLE IF EXISTS main.name_hierarchy_element;"); m_database.execDML("DROP TABLE IF EXISTS main.file;"); m_database.execDML("DROP TABLE IF EXISTS main.node;"); m_database.execDML("DROP TABLE IF EXISTS main.edge;"); @@ -886,11 +718,10 @@ void SqliteStorage::setupTables() "CREATE TABLE IF NOT EXISTS node(" "id INTEGER NOT NULL, " "type INTEGER NOT NULL, " - "name_id INTEGER NOT NULL, " + "serializedName TEXT, " "defined INTEGER NOT NULL, " "PRIMARY KEY(id), " - "FOREIGN KEY(id) REFERENCES element(id) ON DELETE CASCADE, " - "FOREIGN KEY(name_id) REFERENCES name_hierarchy_element(id) ON DELETE CASCADE);" // maybe use restrict here + "FOREIGN KEY(id) REFERENCES element(id) ON DELETE CASCADE);" ); m_database.execDML( @@ -903,15 +734,6 @@ void SqliteStorage::setupTables() "FOREIGN KEY(id) REFERENCES node(id) ON DELETE CASCADE);" ); - m_database.execDML( - "CREATE TABLE IF NOT EXISTS name_hierarchy_element(" - "id INTEGER NOT NULL, " - "name TEXT, " - "parent_id INTEGER, " - "PRIMARY KEY(id), " - "FOREIGN KEY(parent_id) REFERENCES name_hierarchy_element(id) ON DELETE CASCADE);" // maybe use restrict here - ); - m_database.execDML( "CREATE TABLE IF NOT EXISTS source_location(" "id INTEGER NOT NULL, " @@ -936,14 +758,6 @@ void SqliteStorage::setupTables() "FOREIGN KEY(edge_id) REFERENCES edge(id) ON DELETE CASCADE);" ); - m_database.execDML( - "CREATE TABLE IF NOT EXISTS function_signature(" - "id INTEGER NOT NULL, " - "signature TEXT, " - "PRIMARY KEY(id), " - "FOREIGN KEY(id) REFERENCES node(id) ON DELETE CASCADE);" - ); - m_database.execDML( "CREATE TABLE IF NOT EXISTS comment_location(" "id INTEGER NOT NULL, " @@ -1011,16 +825,16 @@ StorageFile SqliteStorage::getFirstFile(const std::string& query) const if (!q.eof()) { const Id id = q.getIntField(0, 0); - const Id nameId = q.getIntField(1, 0); + const std::string serializedName = q.getStringField(1, ""); const std::string filePath = q.getStringField(2, ""); const std::string modificationTime = q.getStringField(3, ""); - if (id != 0 && nameId != 0) + if (id != 0) { - return StorageFile(id, nameId, filePath, modificationTime); + return StorageFile(id, serializedName, filePath, modificationTime); } } - return StorageFile(0, 0, "", ""); + return StorageFile(0, "", "", ""); } std::vector SqliteStorage::getAllFiles(const std::string& query) const @@ -1032,13 +846,13 @@ std::vector SqliteStorage::getAllFiles(const std::string& query) co while (!q.eof()) { const Id id = q.getIntField(0, 0); - const Id nameId = q.getIntField(1, 0); + const std::string serializedName = q.getStringField(1, ""); const std::string filePath = q.getStringField(2, ""); const std::string modificationTime = q.getStringField(3, ""); - if (id != 0 && nameId != 0) + if (id != 0) { - files.push_back(StorageFile(id, nameId, filePath, modificationTime)); + files.push_back(StorageFile(id, serializedName, filePath, modificationTime)); } q.nextRow(); } @@ -1129,7 +943,7 @@ std::vector SqliteStorage::getAllEdges(const std::string& query) co std::vector SqliteStorage::getAllNodes(const std::string& query) const { CppSQLite3Query q = m_database.execQuery(( - "SELECT id, type, name_id, defined FROM node " + query + ";" + "SELECT id, type, serializedName, defined FROM node " + query + ";" ).c_str()); std::vector nodes; @@ -1137,12 +951,12 @@ std::vector SqliteStorage::getAllNodes(const std::string& query) co { const Id id = q.getIntField(0, 0); const int type = q.getIntField(1, -1); - const Id nameId = q.getIntField(2, 0); + const std::string serializedName = q.getStringField(2, ""); const bool defined = q.getIntField(3, 0); if (id != 0 && type != -1) { - nodes.push_back(StorageNode(id, type, nameId, defined)); + nodes.push_back(StorageNode(id, type, serializedName, defined)); } q.nextRow(); diff --git a/src/lib/data/SqliteStorage.h b/src/lib/data/SqliteStorage.h index 973980fa..b5e3f07f 100644 --- a/src/lib/data/SqliteStorage.h +++ b/src/lib/data/SqliteStorage.h @@ -34,24 +34,19 @@ public: void setVersion(const Version& version); Id addEdge(int type, Id sourceNodeId, Id targetNodeId); - Id addNode(int type, Id nameId, bool defined); - Id addFile(Id nameId, const std::string& filePath, const std::string& modificationTime); - Id addSourceLocation(Id elementId, Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol, - bool isScope); - Id addNameHierarchyElement(const std::string& name, Id parentId = 0); + Id addNode(int type, const std::string& serializedName, bool defined); + Id addFile(const std::string& serializedName, const std::string& filePath, const std::string& modificationTime); + Id addSourceLocation(Id elementId, Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol, bool isScope); Id addComponentAccess(Id memberEdgeId, int type); - Id addSignature(Id nodeId, const std::string& signature); Id addCommentLocation(Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol); Id addError(const std::string& message, const std::string& filePath, uint lineNumber, uint columnNumber); void removeElement(Id id); - void removeNameHierarchyElement(Id id); void removeElementsWithLocationInFiles(const std::vector& fileIds); void removeFile(Id id); void removeFiles(const std::vector& fileIds); - void removeUnusedNameHierarchyElements(); void removeCommentLocationsInFiles(const std::vector& filePaths); void removeErrorsInFiles(const std::vector& filePaths); @@ -78,11 +73,10 @@ public: std::vector getEdgesByTargetType(Id targetId, int type) const; StorageNode getNodeById(Id id) const; - std::vector getNodesByNameId(Id nameId) const; + StorageNode getNodeBySerializedName(const std::string& serializedName) const; std::vector getNodesByIds(const std::vector& nodeIds) const; StorageFile getFileById(const Id id) const; - StorageFile getFileByName(const std::string& fileName) const; StorageFile getFileByPath(const std::string& filePath) const; std::vector getAllFiles() const; std::shared_ptr getFileContentByPath(const std::string& filePath) const; @@ -90,13 +84,6 @@ public: void setNodeType(int type, Id nodeId); void setNodeDefined(bool defined, Id nodeId); - Id getNameHierarchyElementIdByName(const std::string& name, Id parentId = 0) const; - Id getNameHierarchyElementIdByNodeId(const Id nodeId) const; - - std::vector getAllNameHierarchyElements() const; - - NameHierarchy getNameHierarchyById(const Id id) const; - StorageSourceLocation getSourceLocationByData(Id elementId, Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol, bool isScope) const; StorageSourceLocation getSourceLocationById(const Id id) const; std::vector getAllSourceLocations() const; @@ -107,8 +94,6 @@ public: StorageComponentAccess getComponentAccessByMemberEdgeId(Id memberEdgeId) const; std::vector getComponentAccessByMemberEdgeIds(const std::vector& memberEdgeIds) const; - std::vector getNodeIdsBySignature(const std::string& signature) const; - std::string getSignatureByNodeId(Id nodeId) const; std::vector getCommentLocationsInFile(const FilePath& filePath) const; std::vector getAllErrors() const; @@ -116,7 +101,6 @@ public: int getNodeCount() const; int getEdgeCount() const; int getFileCount() const; - int getNameHierarchyElementCount() const; int getSourceLocationCount() const; private: diff --git a/src/lib/data/Storage.cpp b/src/lib/data/Storage.cpp index 05fd04f0..4fdf1cd6 100644 --- a/src/lib/data/Storage.cpp +++ b/src/lib/data/Storage.cpp @@ -100,9 +100,9 @@ void Storage::clearFileElements(const std::vector& filePaths) } } -void Storage::removeUnusedNames() +void Storage::removeUnusedNames() // maybe rename this function. look for callers first. { - m_sqliteStorage.removeUnusedNameHierarchyElements(); +// m_sqliteStorage.removeUnusedNameHierarchyElements(); clearCaches(); } @@ -145,7 +145,6 @@ void Storage::logStats() const ss << "\t" << m_tokenIndex.getCharCount() << " Characters\n"; ss << "\t" << m_tokenIndex.getWordCount() << " Words\n"; ss << "\t" << m_tokenIndex.getNodeCount() << " SearchNodes\n"; - ss << "\t" << m_sqliteStorage.getNameHierarchyElementCount() << " NameHierarchyElements\n"; ss << "\nCode:\n"; ss << "\t" << m_sqliteStorage.getFileCount() << " Files\n"; @@ -685,27 +684,19 @@ Id Storage::onFileParsed(const FileInfo& fileInfo) { log("file", fileInfo.path.str(), ParseLocation()); - const std::string fileName = fileInfo.path.fileName(); - - Id nameHierarchyElementId = m_sqliteStorage.getNameHierarchyElementIdByName(fileName); - if (nameHierarchyElementId == 0) - { - nameHierarchyElementId = m_sqliteStorage.addNameHierarchyElement(fileName); - } - Id fileNodeId = getFileNodeId(fileInfo.path); if (fileNodeId == 0) { + NameHierarchy nameHierarchy; + nameHierarchy.push(std::make_shared(fileInfo.path.fileName())); + fileNodeId = m_sqliteStorage.addFile( - nameHierarchyElementId, + NameHierarchy::serialize(nameHierarchy), fileInfo.path.str(), utility::timeToString(fileInfo.lastWriteTime) ); } - NameHierarchy nameHierarchy; - nameHierarchy.push(std::make_shared(fileName)); - return fileNodeId; } @@ -765,24 +756,13 @@ Id Storage::onCommentParsed(const ParseLocation& location) Id Storage::getIdForNodeWithNameHierarchy(const NameHierarchy& nameHierarchy) const { - Id currentId = 0; - - for (size_t i = 0; i < nameHierarchy.size(); i++) - { - currentId = m_sqliteStorage.getNameHierarchyElementIdByName(nameHierarchy[i]->getFullName(), currentId); - } - - std::vector nodes = m_sqliteStorage.getNodesByNameId(currentId); - if (nodes.size() > 0) // TODO: make it impossible that one name id referrs to n nodes. - { - return nodes[0].id; - } - return 0; + return m_sqliteStorage.getNodeBySerializedName(NameHierarchy::serialize(nameHierarchy)).id; } Id Storage::getIdForEdge( Edge::EdgeType type, const NameHierarchy& fromNameHierarchy, const NameHierarchy& toNameHierarchy -) const { +) const +{ Id sourceId = getIdForNodeWithNameHierarchy(fromNameHierarchy); Id targetId = getIdForNodeWithNameHierarchy(toNameHierarchy); return m_sqliteStorage.getEdgeBySourceTargetType(sourceId, targetId, type).id; @@ -795,9 +775,7 @@ Id Storage::getIdForFirstNode() const NameHierarchy Storage::getNameHierarchyForNodeWithId(Id nodeId) const { - Id nameHierarchyElementId = m_sqliteStorage.getNameHierarchyElementIdByNodeId(nodeId); - return m_sqliteStorage.getNameHierarchyById(nameHierarchyElementId); - // return m_tokenIndex.getNameHierarchyForTokenId(nodeId).getFullName(); + return NameHierarchy::deserialize(m_sqliteStorage.getNodeById(nodeId).serializedName); } Node::NodeType Storage::getNodeTypeForNodeWithId(Id nodeId) const @@ -1053,7 +1031,7 @@ std::vector Storage::getTokenIdsForMatches(const std::vector& m Id Storage::getTokenIdForFileNode(const FilePath& filePath) const { - return m_sqliteStorage.getFileByName(filePath.fileName()).id; + return m_sqliteStorage.getFileByPath(filePath.str()).id; } std::vector Storage::getTokenIdsForAggregationEdge(Id sourceId, Id targetId) const @@ -1306,73 +1284,34 @@ Id Storage::addNodeHierarchy(Node::NodeType nodeType, NameHierarchy nameHierarch return 0; } - std::vector nameIds = addNameHierarchyElements(nameHierarchy); - Id parentNodeId = 0; - for (size_t i = 0; i < nameIds.size(); i++) - { - Id nameId = nameIds[i]; - const bool isLastElement = (i == nameHierarchy.size() - 1); - const std::string& signature = nameHierarchy[i]->getFullSignature(); - const bool hasSignature = (signature.size() > 0); + bool nodeMayExist = true; + NameHierarchy currentNameHierarchy; + for (size_t i = 0; i < nameHierarchy.size(); i++) + { + currentNameHierarchy.push(nameHierarchy[i]); + const bool isLastElement = (i == nameHierarchy.size() - 1); Node::NodeType type = (isLastElement ? nodeType : Node::NODE_UNDEFINED); - StorageNode node(0, 0, 0, false); - if (hasSignature) + StorageNode node(0, 0, "", false); + + if (nodeMayExist) { - std::vector potentialIds = m_sqliteStorage.getNodeIdsBySignature(signature); - if (parentNodeId != 0) - { - for (size_t i = 0; i < potentialIds.size(); i++) - { - if (m_sqliteStorage.getEdgeBySourceTargetType(parentNodeId, potentialIds[i], Edge::EDGE_MEMBER).id != 0) - { - node = m_sqliteStorage.getNodeById(potentialIds[i]); - break; - } - } - } - else if (potentialIds.size() > 0) - { - node = m_sqliteStorage.getNodeById(potentialIds[0]); - } - } - else - { - std::vector potentialIds = m_sqliteStorage.getNodesByNameId(nameId); - if (parentNodeId != 0) - { - for (size_t i = 0; i < potentialIds.size(); i++) - { - if (m_sqliteStorage.getEdgeBySourceTargetType(parentNodeId, potentialIds[i].id, Edge::EDGE_MEMBER).id != 0) - { - node = potentialIds[i]; - break; - } - } - } - else if (potentialIds.size() > 0) - { - node = potentialIds[0]; - } + node = m_sqliteStorage.getNodeBySerializedName(NameHierarchy::serialize(currentNameHierarchy)); } Id nodeId = node.id; - if (nodeId && !node.defined && isLastElement && defined) + if (nodeId && !node.defined && isLastElement && defined) // todo: move this down! { m_sqliteStorage.setNodeDefined(true, nodeId); } if (nodeId == 0) { - nodeId = m_sqliteStorage.addNode(Node::typeToInt(type), nameId, isLastElement && defined); - - if (hasSignature) - { - m_sqliteStorage.addSignature(nodeId, signature); - } + nodeMayExist = false; + nodeId = m_sqliteStorage.addNode(Node::typeToInt(type), NameHierarchy::serialize(currentNameHierarchy), isLastElement && defined); if (parentNodeId != 0) { @@ -1399,35 +1338,6 @@ Id Storage::addNodeHierarchy(Node::NodeType type, const ParseFunction& function, return addNodeHierarchy(type, function.nameHierarchy, defined); } -std::vector Storage::addNameHierarchyElements(NameHierarchy nameHierarchy) -{ - std::vector nameIds; - Id parentId = 0; - bool nodeMayExist = true; - - for (size_t i = 0; i < nameHierarchy.size(); i++) - { - const std::string elementName = nameHierarchy[i]->getFullName(); - Id nodeId = 0; - - if (nodeMayExist) - { - nodeId = m_sqliteStorage.getNameHierarchyElementIdByName(elementName, parentId); - } - - if (nodeId == 0) - { - nodeId = m_sqliteStorage.addNameHierarchyElement(elementName, parentId); - nodeMayExist = false; - } - - nameIds.push_back(nodeId); - parentId = nodeId; - } - - return nameIds; -} - Id Storage::addSourceLocation(Id elementNodeId, const ParseLocation &location, bool isScope) { if (!location.isValid()) @@ -1681,9 +1591,13 @@ void Storage::addNodesToGraph(const std::vector nodeIds, Graph* graph) const if (type == Node::NODE_FUNCTION || type == Node::NODE_METHOD) { - node->addComponentSignature( - std::make_shared(m_sqliteStorage.getSignatureByNodeId(storageNode.id)) - ); + std::shared_ptr lastElement = NameHierarchy::deserialize(storageNode.serializedName).back(); + if (lastElement) + { + node->addComponentSignature( + std::make_shared(lastElement->getFullSignature()) + ); + } } } } @@ -1786,7 +1700,7 @@ void Storage::buildSearchIndex() { for (StorageNode node: m_sqliteStorage.getAllNodes()) { - m_tokenIndex.addTokenId(m_tokenIndex.addNode(m_sqliteStorage.getNameHierarchyById(node.nameId)), node.id); + m_tokenIndex.addTokenId(m_tokenIndex.addNode(NameHierarchy::deserialize(node.serializedName)), node.id); } } diff --git a/src/lib/data/Storage.h b/src/lib/data/Storage.h index 8280fb30..b5a8b035 100644 --- a/src/lib/data/Storage.h +++ b/src/lib/data/Storage.h @@ -172,7 +172,6 @@ public: private: Id addNodeHierarchy(Node::NodeType nodeType, NameHierarchy nameHierarchy, bool defined); Id addNodeHierarchy(Node::NodeType type, const ParseFunction& function, bool defined); - std::vector addNameHierarchyElements(NameHierarchy nameHierarchy); Id addSourceLocation(Id elementNodeId, const ParseLocation &location, bool isScope = false); Id addEdge(Id sourceNodeId, Id targetNodeId, Edge::EdgeType type); diff --git a/src/lib/data/StorageTypes.h b/src/lib/data/StorageTypes.h index 992fc26b..885f2af7 100644 --- a/src/lib/data/StorageTypes.h +++ b/src/lib/data/StorageTypes.h @@ -22,45 +22,34 @@ struct StorageEdge struct StorageNode { - StorageNode(Id id, int type, Id nameId, bool defined) + StorageNode(Id id, int type, const std::string& serializedName, bool defined) : id(id) , type(type) - , nameId(nameId) + , serializedName(serializedName) , defined(defined) {} Id id; int type; - Id nameId; + std::string serializedName; bool defined; }; struct StorageFile { - StorageFile(Id id, Id nameId, const std::string& filePath, const std::string& modificationTime) + StorageFile(Id id, const std::string& name, const std::string& filePath, const std::string& modificationTime) : id(id) - , nameId(nameId) + , name(name) , filePath(filePath) , modificationTime(modificationTime) {} Id id; - Id nameId; + std::string name; std::string filePath; std::string modificationTime; }; -struct StorageNameHierarchyElement -{ - StorageNameHierarchyElement(Id id, const std::string& name, Id parentId) - : id(id), name(name), parentId(parentId) - {} - - Id id; - std::string name; - Id parentId; -}; - struct StorageSourceLocation { StorageSourceLocation(Id id, Id elementId, Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol, bool isScope) diff --git a/src/lib/data/name/NameHierarchy.cpp b/src/lib/data/name/NameHierarchy.cpp index 9a37ebc1..ca540954 100644 --- a/src/lib/data/name/NameHierarchy.cpp +++ b/src/lib/data/name/NameHierarchy.cpp @@ -1,5 +1,40 @@ #include "data/name/NameHierarchy.h" +#include "utility/logging/logging.h" +#include "utility/utilityString.h" + +std::string NameHierarchy::serialize(NameHierarchy nameHierarchy) +{ + std::string serializedName = ""; + for (size_t i = 0; i < nameHierarchy.size(); i++) + { + serializedName += nameHierarchy[i]->getFullName() + "\t"; + serializedName += nameHierarchy[i]->getFullSignature(); + if (i + 1 < nameHierarchy.size()) + serializedName += "\n"; + } + return serializedName; +} + +NameHierarchy NameHierarchy::deserialize(const std::string& serializedName) +{ + NameHierarchy nameHierarchy; + + std::vector serializedNameElements = utility::splitToVector(serializedName, "\n"); + for (size_t i = 0; i < serializedNameElements.size(); i++) + { + std::vector nameParts = utility::splitToVector(serializedNameElements[i], "\t"); + if (nameParts.size() != 2) + { + LOG_ERROR("unable to deserialize name hierarchy: " + serializedName); // todo: obfuscate serializedName! + return NameHierarchy(); + } + nameHierarchy.push(std::make_shared(nameParts[0], nameParts[1])); + } + + return nameHierarchy; +} + NameHierarchy::NameHierarchy() { } @@ -25,7 +60,11 @@ void NameHierarchy::pop() std::shared_ptr NameHierarchy::back() const { - return m_elements.back(); + if (m_elements.size() > 0) + { + return m_elements.back(); + } + return std::shared_ptr(); } std::shared_ptr NameHierarchy::operator[](size_t pos) const diff --git a/src/lib/data/name/NameHierarchy.h b/src/lib/data/name/NameHierarchy.h index 6049b381..4a81b12f 100644 --- a/src/lib/data/name/NameHierarchy.h +++ b/src/lib/data/name/NameHierarchy.h @@ -10,6 +10,9 @@ class NameHierarchy { public: + static std::string serialize(NameHierarchy nameHierarchy); + static NameHierarchy deserialize(const std::string& serializedName); + NameHierarchy(); NameHierarchy(const std::string& name); ~NameHierarchy(); diff --git a/src/test/SqliteStorageTestSuite.h b/src/test/SqliteStorageTestSuite.h index c15f5d47..ac3631f4 100644 --- a/src/test/SqliteStorageTestSuite.h +++ b/src/test/SqliteStorageTestSuite.h @@ -8,94 +8,6 @@ class SqliteStorageTestSuite: public CxxTest::TestSuite { public: - void test_storage_adds_name_hierarchy_element_successfully() - { - std::string databasePath = "data/SQLiteTestSuite/test.sqlite"; - int elementCount = -1; - { - SqliteStorage storage(databasePath); - storage.beginTransaction(); - storage.addNameHierarchyElement("a"); - storage.commitTransaction(); - elementCount = storage.getNameHierarchyElementCount(); - } - boost::filesystem::remove(databasePath); - - TS_ASSERT_EQUALS(1, elementCount); - } - - void test_storage_removes_name_hierarchy_element_successfully() - { - std::string databasePath = "data/SQLiteTestSuite/test.sqlite"; - int elementCount = -1; - { - SqliteStorage storage(databasePath); - storage.beginTransaction(); - int elementId = storage.addNameHierarchyElement("a"); - storage.removeNameHierarchyElement(elementId); - storage.commitTransaction(); - elementCount = storage.getNameHierarchyElementCount(); - } - boost::filesystem::remove(databasePath); - - TS_ASSERT_EQUALS(0, elementCount); - } - - void test_storage_finds_name_hierarchy_elements_by_name() - { - std::string databasePath = "data/SQLiteTestSuite/test.sqlite"; - int insertedElementId = -1; - int foundElementId = -1; - { - SqliteStorage storage(databasePath); - storage.beginTransaction(); - insertedElementId = storage.addNameHierarchyElement("a"); - storage.commitTransaction(); - foundElementId = storage.getNameHierarchyElementIdByName("a"); - } - boost::filesystem::remove(databasePath); - - TS_ASSERT(foundElementId != -1); - TS_ASSERT_EQUALS(insertedElementId, foundElementId); - } - - void test_storage_finds_name_hierarchy_elements_by_name_and_parent_id() - { - std::string databasePath = "data/SQLiteTestSuite/test.sqlite"; - int insertedChildElementId = -1; - int foundElementId = -1; - { - SqliteStorage storage(databasePath); - storage.beginTransaction(); - int insertedParentElementId = storage.addNameHierarchyElement("a"); - insertedChildElementId = storage.addNameHierarchyElement("a", insertedParentElementId); - storage.addNameHierarchyElement("a", storage.addNameHierarchyElement("b")); - storage.commitTransaction(); - foundElementId = storage.getNameHierarchyElementIdByName("a", insertedParentElementId); - } - boost::filesystem::remove(databasePath); - - TS_ASSERT(foundElementId != -1); - TS_ASSERT_EQUALS(insertedChildElementId, foundElementId); - } - - void test_storage_automatically_removes_name_hierarchy_element_child_when_deleting_parent() - { - std::string databasePath = "data/SQLiteTestSuite/test.sqlite"; - int elementCount = -1; - { - SqliteStorage storage(databasePath); - storage.beginTransaction(); - int parentId = storage.addNameHierarchyElement("a"); - storage.removeNameHierarchyElement(parentId); - storage.commitTransaction(); - elementCount = storage.getNameHierarchyElementCount(); - } - boost::filesystem::remove(databasePath); - - TS_ASSERT_EQUALS(0, elementCount); - } - void test_storage_adds_node_successfully() { std::string databasePath = "data/SQLiteTestSuite/test.sqlite"; @@ -103,8 +15,7 @@ public: { SqliteStorage storage(databasePath); storage.beginTransaction(); - int nameId = storage.addNameHierarchyElement("a"); - storage.addNode(0, nameId, false); + storage.addNode(0, "a", false); storage.commitTransaction(); nodeCount = storage.getNodeCount(); } @@ -120,8 +31,7 @@ public: { SqliteStorage storage(databasePath); storage.beginTransaction(); - int nameId = storage.addNameHierarchyElement("a"); - int nodeId = storage.addNode(0, nameId, false); + int nodeId = storage.addNode(0, "a", false); storage.removeElement(nodeId); storage.commitTransaction(); nodeCount = storage.getNodeCount(); @@ -138,10 +48,8 @@ public: { SqliteStorage storage(databasePath); storage.beginTransaction(); - int sourceNameId = storage.addNameHierarchyElement("a"); - int sourceNodeId = storage.addNode(0, sourceNameId, false); - int targetNameId = storage.addNameHierarchyElement("b"); - int targetNodeId = storage.addNode(0, targetNameId, false); + int sourceNodeId = storage.addNode(0, "a", false); + int targetNodeId = storage.addNode(0, "b", false); storage.addEdge(0, sourceNodeId, targetNodeId); storage.commitTransaction(); edgeCount = storage.getEdgeCount(); @@ -158,10 +66,8 @@ public: { SqliteStorage storage(databasePath); storage.beginTransaction(); - int sourceNameId = storage.addNameHierarchyElement("a"); - int sourceNodeId = storage.addNode(0, sourceNameId, false); - int targetNameId = storage.addNameHierarchyElement("b"); - int targetNodeId = storage.addNode(0, targetNameId, false); + int sourceNodeId = storage.addNode(0, "a", false); + int targetNodeId = storage.addNode(0, "b", false); int edgeId = storage.addEdge(0, sourceNodeId, targetNodeId); storage.removeElement(edgeId); storage.commitTransaction();