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:
malte_langkabel
2016-08-25 15:18:00 +02:00
parent 520a1b2d48
commit 0268e924aa
164 changed files with 47237 additions and 403 deletions
+9 -8
View File
@@ -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"
);
}
}
+10 -4
View File
@@ -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
+2 -2
View File
@@ -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!
+4 -4
View File
@@ -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!
+5
View File
@@ -16,3 +16,8 @@ std::string ResourcePaths::getGuiPath()
{
return AppPath::getAppPath() + "data/gui/";
}
std::string ResourcePaths::getJavaPath()
{
return AppPath::getAppPath() + "data/java/";
}
+1
View File
@@ -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
+7 -3
View File
@@ -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 -11
View File
@@ -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);