data: java sample project
* added javaparser as sample project * fixed crash in utility::isPrefix when prefix is longer than the actual string * fixed crash when inserting a meta value that contains a special character * added "language" to project settings of tutorial * changed separators in serialized name hierarchy * added javaparser project to windows installers * enabled the checkbox for start menu shortcut in installer by default * removed autorefresh icon * removed JavaSmallTest project
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include "data/parser/java/JavaEnvironmentFactory.h"
|
||||
#include "data/parser/java/TaskParseJava.h"
|
||||
#include "isTrial.h"
|
||||
#include "utility/ResourcePaths.h"
|
||||
|
||||
JavaProject::~JavaProject()
|
||||
{
|
||||
@@ -32,14 +33,14 @@ JavaProject::JavaProject(
|
||||
const std::string separator = ":";
|
||||
#endif
|
||||
JavaEnvironmentFactory::createInstance(
|
||||
"data/java/guava-18.0.jar" + separator +
|
||||
"data/java/java-indexer.jar" + separator +
|
||||
"data/java/javaparser-core.jar" + separator +
|
||||
"data/java/javaslang-2.0.0-beta.jar" + separator +
|
||||
"data/java/javassist-3.19.0-GA.jar" + separator +
|
||||
"data/java/java-symbol-solver-core.jar" + separator +
|
||||
"data/java/java-symbol-solver-logic.jar" + separator +
|
||||
"data/java/java-symbol-solver-model.jar" + separator
|
||||
ResourcePaths::getJavaPath() + "guava-18.0.jar" + separator +
|
||||
ResourcePaths::getJavaPath() + "java-indexer.jar" + separator +
|
||||
ResourcePaths::getJavaPath() + "javaparser-core.jar" + separator +
|
||||
ResourcePaths::getJavaPath() + "javaslang-2.0.0-beta.jar" + separator +
|
||||
ResourcePaths::getJavaPath() + "javassist-3.19.0-GA.jar" + separator +
|
||||
ResourcePaths::getJavaPath() + "java-symbol-solver-core.jar" + separator +
|
||||
ResourcePaths::getJavaPath() + "java-symbol-solver-logic.jar" + separator +
|
||||
ResourcePaths::getJavaPath() + "java-symbol-solver-model.jar"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include "utility/utilityString.h"
|
||||
#include "utility/Version.h"
|
||||
|
||||
const size_t SqliteStorage::STORAGE_VERSION = 4;
|
||||
const size_t SqliteStorage::STORAGE_VERSION = 5;
|
||||
|
||||
SqliteStorage::SqliteStorage(const FilePath& dbFilePath)
|
||||
: m_dbFilePath(dbFilePath)
|
||||
@@ -833,10 +833,16 @@ std::string SqliteStorage::getMetaValue(const std::string& key) const
|
||||
|
||||
void SqliteStorage::insertOrUpdateMetaValue(const std::string& key, const std::string& value)
|
||||
{
|
||||
m_database.execDML((
|
||||
"INSERT OR REPLACE INTO meta(id, key, value) "
|
||||
"VALUES( (SELECT id FROM meta WHERE key = '" + key + "'), '" + key + "', '" + value + "');"
|
||||
CppSQLite3Statement stmt = m_database.compileStatement(std::string(
|
||||
"INSERT OR REPLACE INTO meta(id, key, value) VALUES("
|
||||
"(SELECT id FROM meta WHERE key = ?), ?, ?"
|
||||
");"
|
||||
).c_str());
|
||||
|
||||
stmt.bind(1, key.c_str());
|
||||
stmt.bind(2, key.c_str());
|
||||
stmt.bind(3, value.c_str());
|
||||
stmt.execDML();
|
||||
}
|
||||
|
||||
size_t SqliteStorage::getStorageVersion() const
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
|
||||
std::string NameElement::Signature::serialize(Signature signature)
|
||||
{
|
||||
return signature.m_prefix + "\r" + signature.m_postfix;
|
||||
return signature.m_prefix + "\tp" + signature.m_postfix;
|
||||
}
|
||||
|
||||
NameElement::Signature NameElement::Signature::deserialize(const std::string& serialized)
|
||||
{
|
||||
std::vector<std::string> serializedElements = utility::splitToVector(serialized, "\r");
|
||||
std::vector<std::string> serializedElements = utility::splitToVector(serialized, "\tp");
|
||||
if (serializedElements.size() != 2)
|
||||
{
|
||||
LOG_ERROR("unable to deserialize name signature: " + serialized); // todo: obfuscate serialized!
|
||||
|
||||
@@ -10,9 +10,9 @@ std::string NameHierarchy::serialize(NameHierarchy nameHierarchy)
|
||||
{
|
||||
if (i > 0)
|
||||
{
|
||||
serializedName += "\n";
|
||||
serializedName += "\tn";
|
||||
}
|
||||
serializedName += nameHierarchy[i]->getName() + "\t";
|
||||
serializedName += nameHierarchy[i]->getName() + "\ts";
|
||||
serializedName += NameElement::Signature::serialize(nameHierarchy[i]->getSignature());
|
||||
}
|
||||
return serializedName;
|
||||
@@ -22,10 +22,10 @@ NameHierarchy NameHierarchy::deserialize(const std::string& serializedName)
|
||||
{
|
||||
NameHierarchy nameHierarchy;
|
||||
|
||||
std::vector<std::string> serializedNameElements = utility::splitToVector(serializedName, "\n");
|
||||
std::vector<std::string> serializedNameElements = utility::splitToVector(serializedName, "\tn");
|
||||
for (size_t i = 0; i < serializedNameElements.size(); i++)
|
||||
{
|
||||
std::vector<std::string> nameParts = utility::splitToVector(serializedNameElements[i], "\t");
|
||||
std::vector<std::string> nameParts = utility::splitToVector(serializedNameElements[i], "\ts");
|
||||
if (nameParts.size() != 2)
|
||||
{
|
||||
LOG_ERROR("unable to deserialize name hierarchy: " + serializedName); // todo: obfuscate serializedName!
|
||||
|
||||
@@ -16,3 +16,8 @@ std::string ResourcePaths::getGuiPath()
|
||||
{
|
||||
return AppPath::getAppPath() + "data/gui/";
|
||||
}
|
||||
|
||||
std::string ResourcePaths::getJavaPath()
|
||||
{
|
||||
return AppPath::getAppPath() + "data/java/";
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ public:
|
||||
static std::string getColorSchemesPath();
|
||||
static std::string getFontsPath();
|
||||
static std::string getGuiPath();
|
||||
static std::string getJavaPath();
|
||||
};
|
||||
|
||||
#endif // RESOURCE_PATHS_H
|
||||
|
||||
@@ -122,10 +122,14 @@ namespace utility
|
||||
|
||||
bool isPrefix(const std::string& prefix, const std::string& text)
|
||||
{
|
||||
std::pair<std::string::const_iterator, std::string::const_iterator> res =
|
||||
std::mismatch(prefix.begin(), prefix.end(), text.begin());
|
||||
if (prefix.size() <= text.size())
|
||||
{
|
||||
std::pair<std::string::const_iterator, std::string::const_iterator> res =
|
||||
std::mismatch(prefix.begin(), prefix.end(), text.begin());
|
||||
|
||||
return res.first == prefix.end();
|
||||
return res.first == prefix.end();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isPostfix(const std::string& postfix, const std::string& text)
|
||||
|
||||
@@ -11,7 +11,7 @@ public:
|
||||
void test_search_index_finds_id_of_element_added()
|
||||
{
|
||||
SearchIndex index;
|
||||
index.addNode(1, NameHierarchy::deserialize("foo\tvoid\r() const"));
|
||||
index.addNode(1, NameHierarchy::deserialize("foo\tsvoid\tp() const"));
|
||||
index.finishSetup();
|
||||
std::vector<SearchResult> results = index.search("oo", 0);
|
||||
|
||||
@@ -23,7 +23,7 @@ public:
|
||||
void test_search_index_finds_correct_indices_for_query()
|
||||
{
|
||||
SearchIndex index;
|
||||
index.addNode(1, NameHierarchy::deserialize("foo\tvoid\r() const"));
|
||||
index.addNode(1, NameHierarchy::deserialize("foo\tsvoid\tp() const"));
|
||||
index.finishSetup();
|
||||
std::vector<SearchResult> results = index.search("oo", 0);
|
||||
|
||||
@@ -36,8 +36,8 @@ public:
|
||||
void test_search_index_finds_ids_for_ambiguous_query()
|
||||
{
|
||||
SearchIndex index;
|
||||
index.addNode(1, NameHierarchy::deserialize("for\tvoid\r() const"));
|
||||
index.addNode(2, NameHierarchy::deserialize("fos\tvoid\r() const"));
|
||||
index.addNode(1, NameHierarchy::deserialize("for\tsvoid\tp() const"));
|
||||
index.addNode(2, NameHierarchy::deserialize("fos\tsvoid\tp() const"));
|
||||
index.finishSetup();
|
||||
std::vector<SearchResult> results = index.search("fo", 0);
|
||||
|
||||
@@ -51,7 +51,7 @@ public:
|
||||
void test_search_index_does_not_find_anything_after_clear()
|
||||
{
|
||||
SearchIndex index;
|
||||
index.addNode(1, NameHierarchy::deserialize("foo\tvoid\r() const"));
|
||||
index.addNode(1, NameHierarchy::deserialize("foo\tsvoid\tp() const"));
|
||||
index.finishSetup();
|
||||
index.clear();
|
||||
std::vector<SearchResult> results = index.search("oo", 0);
|
||||
@@ -62,8 +62,8 @@ public:
|
||||
void test_search_index_does_not_find_all_results_when_max_amount_is_limited()
|
||||
{
|
||||
SearchIndex index;
|
||||
index.addNode(1, NameHierarchy::deserialize("foo1\tvoid\r() const"));
|
||||
index.addNode(2, NameHierarchy::deserialize("foo2\tvoid\r() const"));
|
||||
index.addNode(1, NameHierarchy::deserialize("foo1\tsvoid\tp() const"));
|
||||
index.addNode(2, NameHierarchy::deserialize("foo2\tsvoid\tp() const"));
|
||||
index.finishSetup();
|
||||
std::vector<SearchResult> results = index.search("oo", 1);
|
||||
|
||||
@@ -73,8 +73,8 @@ public:
|
||||
void test_search_index_query_is_case_insensitive()
|
||||
{
|
||||
SearchIndex index;
|
||||
index.addNode(1, NameHierarchy::deserialize("foo1\tvoid\r() const"));
|
||||
index.addNode(2, NameHierarchy::deserialize("FOO2\tvoid\r() const"));
|
||||
index.addNode(1, NameHierarchy::deserialize("foo1\tsvoid\tp() const"));
|
||||
index.addNode(2, NameHierarchy::deserialize("FOO2\tsvoid\tp() const"));
|
||||
index.finishSetup();
|
||||
std::vector<SearchResult> results = index.search("oo", 0);
|
||||
|
||||
@@ -85,8 +85,8 @@ public:
|
||||
{
|
||||
|
||||
SearchIndex index;
|
||||
index.addNode(1, NameHierarchy::deserialize("oaabbcc\tvoid\r() const"));
|
||||
index.addNode(2, NameHierarchy::deserialize("ocbcabc\tvoid\r() const"));
|
||||
index.addNode(1, NameHierarchy::deserialize("oaabbcc\tsvoid\tp() const"));
|
||||
index.addNode(2, NameHierarchy::deserialize("ocbcabc\tsvoid\tp() const"));
|
||||
index.finishSetup();
|
||||
std::vector<SearchResult> results = index.search("abc", 0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user