summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/src/luaquerymapper.cc33
-rw-r--r--server/src/luaquerymapper.h2
2 files changed, 35 insertions, 0 deletions
diff --git a/server/src/luaquerymapper.cc b/server/src/luaquerymapper.cc
index 7ee43ff..fdb1248 100644
--- a/server/src/luaquerymapper.cc
+++ b/server/src/luaquerymapper.cc
@@ -162,6 +162,39 @@ void LUAQueryMapper::error(std::string message) throw(Exception)
throw Exception("ERROR in LUAQueryMapper: " + message);
}
+std::string LUAQueryMapper::automap(const std::string &name)
+{
+ std::string group;
+ std::string groupcheck = "if(";
+
+ for(size_t i = 0; i < name.length(); i++) {
+ group += name[i];
+ if(name[i] == '.') groupcheck += " and " + group;
+ else groupcheck += name[i];
+ }
+ groupcheck += " and " + name + ".value and " + name + ".timestamp and " + name + ".source";
+ groupcheck += ")\n";
+
+ std::string automapstring =
+ "-- Returning 0, 0 invalidates the result\n"
+ "value = 0\n"
+ "timestamp = 0\n"
+ "source = 0\n"
+ "\n"
+ + groupcheck +
+ "then\n"
+ " value = " + name + ".value\n"
+ " timestamp = " + name + ".timestamp\n"
+ " source = " + name + ".source\n"
+ "end\n"
+ "return value, timestamp, source\n";
+
+ PRACRO_DEBUG(widget, "Automap:\n%s\n", automapstring.c_str());
+
+ return automapstring;
+}
+
+
#ifdef TEST_LUAQUERYMAPPER
int main()
diff --git a/server/src/luaquerymapper.h b/server/src/luaquerymapper.h
index e8a25f8..2d3e72d 100644
--- a/server/src/luaquerymapper.h
+++ b/server/src/luaquerymapper.h
@@ -71,6 +71,8 @@ public:
*/
void addQueryResult(QueryResult &result) throw(Exception);
+ std::string automap(const std::string &name);
+
private:
void error(std::string message) throw(Exception);