summaryrefslogtreecommitdiffstats
path: root/Plugins/DbAndroid/dbandroidinstance.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2015-11-25 16:48:41 -0500
committerLibravatarUnit 193 <unit193@ubuntu.com>2015-11-25 16:48:41 -0500
commit8e640722c62692818ab840d50b3758f89a41a54e (patch)
tree38197eb1688a5afc338081ea17e15f938976e422 /Plugins/DbAndroid/dbandroidinstance.cpp
parent9618f0ebbf4b88045247c01ce8c8f58203508ebf (diff)
Imported Upstream version 3.0.7upstream/3.0.7
Diffstat (limited to 'Plugins/DbAndroid/dbandroidinstance.cpp')
-rw-r--r--Plugins/DbAndroid/dbandroidinstance.cpp143
1 files changed, 143 insertions, 0 deletions
diff --git a/Plugins/DbAndroid/dbandroidinstance.cpp b/Plugins/DbAndroid/dbandroidinstance.cpp
new file mode 100644
index 0000000..b60203e
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidinstance.cpp
@@ -0,0 +1,143 @@
+#include "dbandroidconnection.h"
+#include "dbandroidinstance.h"
+#include "sqlqueryandroid.h"
+#include "db/sqlerrorcodes.h"
+#include "common/unused.h"
+#include "dbandroid.h"
+#include "dbandroidjsonconnection.h"
+#include "dbandroidconnectionfactory.h"
+#include "dbandroidurl.h"
+#include "schemaresolver.h"
+#include "services/notifymanager.h"
+#include <QJsonObject>
+#include <QJsonArray>
+#include <QJsonDocument>
+#include <QDebug>
+
+DbAndroidInstance::DbAndroidInstance(DbAndroid* plugin, const QString& name, const QString& path, const QHash<QString, QVariant>& connOptions) :
+ AbstractDb(name, path, connOptions), plugin(plugin)
+{
+ this->connOptions[SchemaResolver::USE_SCHEMA_CACHING] = true;
+}
+
+DbAndroidInstance::~DbAndroidInstance()
+{
+ closeInternal();
+}
+
+SqlQueryPtr DbAndroidInstance::prepare(const QString& query)
+{
+ return SqlQueryPtr(new SqlQueryAndroid(this, connection, query));
+}
+
+QString DbAndroidInstance::getTypeLabel()
+{
+ return plugin->getLabel();
+}
+
+bool DbAndroidInstance::deregisterFunction(const QString& name, int argCount)
+{
+ // Unsupported by native Android driver
+ UNUSED(name);
+ UNUSED(argCount);
+ return true;
+}
+
+bool DbAndroidInstance::registerScalarFunction(const QString& name, int argCount)
+{
+ // Unsupported by native Android driver
+ UNUSED(name);
+ UNUSED(argCount);
+ return true;
+}
+
+bool DbAndroidInstance::registerAggregateFunction(const QString& name, int argCount)
+{
+ // Unsupported by native Android driver
+ UNUSED(name);
+ UNUSED(argCount);
+ return true;
+}
+
+bool DbAndroidInstance::initAfterCreated()
+{
+ version = 3;
+ return AbstractDb::initAfterCreated();
+}
+
+bool DbAndroidInstance::isOpenInternal()
+{
+ return (connection && connection->isConnected());
+}
+
+void DbAndroidInstance::interruptExecution()
+{
+ // Unsupported by native Android driver
+}
+
+QString DbAndroidInstance::getErrorTextInternal()
+{
+ return errorText;
+}
+
+int DbAndroidInstance::getErrorCodeInternal()
+{
+ return errorCode;
+}
+
+bool DbAndroidInstance::openInternal()
+{
+ connection = createConnection();
+ bool res = connection->connectToAndroid(DbAndroidUrl(path));
+ if (!res)
+ {
+ safe_delete(connection);
+ }
+ else
+ {
+ connect(connection, SIGNAL(disconnected()), this, SLOT(handleDisconnected()));
+ }
+
+ return res;
+}
+
+bool DbAndroidInstance::closeInternal()
+{
+ if (!connection)
+ return false;
+
+ disconnect(connection, SIGNAL(disconnected()), this, SLOT(handleDisconnected()));
+ connection->disconnectFromAndroid();
+ safe_delete(connection);
+ return true;
+}
+
+bool DbAndroidInstance::registerCollationInternal(const QString& name)
+{
+ // Unsupported by native Android driver
+ UNUSED(name);
+ return true;
+}
+
+bool DbAndroidInstance::deregisterCollationInternal(const QString& name)
+{
+ // Unsupported by native Android driver
+ UNUSED(name);
+ return true;
+}
+
+DbAndroidConnection* DbAndroidInstance::createConnection()
+{
+ DbAndroidUrl url(path);
+ if (!url.isValid(false))
+ return nullptr;
+
+ return plugin->getConnectionFactory()->create(url, this);
+}
+
+void DbAndroidInstance::handleDisconnected()
+{
+ safe_delete(connection);
+ notifyWarn(tr("Connection with Android database '%1' lost.").arg(getName()));
+ emit disconnected();
+}