Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+91
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* EXM Database Administartion (Create Schema/Tables/Views etc)
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hanna E. Rathje, SLSE, 2015-09-15
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <QElapsedTimer>
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
#include <QMap>
|
||||
#include <QSqlDatabase>
|
||||
|
||||
#include <CodeGen/SqlGenerator.h>
|
||||
#include <NGLLogger/INGLLogger.h>
|
||||
|
||||
namespace CodeGen
|
||||
{
|
||||
class SqlGenerator;
|
||||
}
|
||||
|
||||
namespace DBAdministration
|
||||
{
|
||||
|
||||
class ExerciseTableGenerator : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ExerciseTableGenerator(NGL::INGLLogger &logger, const QString &xmlPath, QObject *parent = nullptr);
|
||||
virtual ~ExerciseTableGenerator();
|
||||
|
||||
bool init(const QSqlDatabase &database, const QString &ownSchemaName, bool createOwnSchema = false);
|
||||
void close();
|
||||
QStringList getAvailableServices() const { return m_sqlGeneratorMap.keys(); }
|
||||
bool isServiceGlobal(const QString &svcAbbr) const;
|
||||
|
||||
// Write sql-stmt for a service into a file
|
||||
bool writeServiceSqlToFile(const QString &svcName, const QString &dbSchema);
|
||||
bool executeSql(const QString &svcName, const QString &dbSchema, QStringList &handledServices, const CodeGen::ExerciseDependency &ed);
|
||||
bool executeSql(const QString &svcName, const QString &dbSchema, const QString &dbUser, QStringList &handledServices, const CodeGen::ExerciseDependency &ed);
|
||||
|
||||
// TODO: better naming
|
||||
bool executeSqlTableRelated(const QString &svcName, const QString &dbSchema, const QString &dbUser);
|
||||
|
||||
bool existsSchema(const QString &dbSchema, const QSqlDatabase &dbConn) const;
|
||||
//bool createDbSchemaIfNotExists(const QString &dbSchema) const;
|
||||
bool createDbSchemaIfNotExists(const QString &dbSchema, QString dbUser) const;
|
||||
bool dropDbSchema(const QString &dbSchema, const QString &dbUser) const;
|
||||
|
||||
bool existsTable(const QString &tableName, const QString &dbSchema) const;
|
||||
|
||||
bool insertTableData(const QString &table, const QString &dbSchema, const CodeGen::SqlGenerator *sqlGen );
|
||||
bool executeSql();
|
||||
|
||||
// Methods for a specific exercise
|
||||
bool writeExerciseServicesSql(qint32 exerciseId);
|
||||
bool executeSql(qint32 exerciseId);
|
||||
bool createExerciseSchema(qint32 exerciseId);
|
||||
bool dropExerciseSchema(qint32 exerciseId, bool bDropUser);
|
||||
QStringList getAvailableExerciseServices() const;
|
||||
QStringList getAvailableGlobalServices() const;
|
||||
|
||||
bool resetSearchPath() const;
|
||||
bool schemaIsEmpty(const QString &dbSchema) const;
|
||||
|
||||
Q_SIGNALS:
|
||||
void aliveSignal();
|
||||
protected:
|
||||
|
||||
void generateSqlDataForExercise(int exerciseId);
|
||||
bool executeStmts(const QStringList &stmts);
|
||||
bool executsSqlConstraints(const QStringList &constraintList,
|
||||
const QStringList &sqlStmts,
|
||||
const QString &dbSchema);
|
||||
|
||||
void checkAliveTimer();
|
||||
|
||||
private:
|
||||
// QMap<svcAbbr,Pointer SqlGenerator>
|
||||
QMap<QString,CodeGen::SqlGenerator*> m_sqlGeneratorMap;
|
||||
QString m_xmlPath;
|
||||
QString m_ownSchemaName;
|
||||
QSqlDatabase m_database;
|
||||
QElapsedTimer m_emitAliveTimer;
|
||||
|
||||
NGL::INGLLogger &m_logger;
|
||||
};
|
||||
|
||||
} // namespace DBAdministration
|
||||
Reference in new issue
Block a user