// qCTKDCMTK includes #include "qCTKDCMTK.h" // Qt includes #include #include #include #include #include #include #include //---------------------------------------------------------------------------- class qCTKDCMTKPrivate: public qCTKPrivate { public: qCTKDCMTKPrivate(); bool executeScript(const QString& script); QSqlDatabase Database; QString DatabaseFileName; QString LastError; }; //---------------------------------------------------------------------------- // qCTKDCMTKPrivate methods qCTKDCMTKPrivate::qCTKDCMTKPrivate() { } //---------------------------------------------------------------------------- // qCTKDCMTKWidget methods qCTKDCMTK::qCTKDCMTK(QObject* _parent): Superclass(_parent) { QCTK_INIT_PRIVATE(qCTKDCMTK); } //---------------------------------------------------------------------------- qCTKDCMTK::~qCTKDCMTK() { } //---------------------------------------------------------------------------- QCTK_SET_CXX(qCTKDCMTK, const QString&, setDatabaseFileName, DatabaseFileName); //---------------------------------------------------------------------------- bool qCTKDCMTK::openDatabase(const QString& databaseFileName) { QCTK_D(qCTKDCMTK); d->Database = QSqlDatabase::addDatabase("QSQLITE","DICOM-DB"); d->Database.setDatabaseName(databaseFileName); if ( ! (d->Database.open()) ) { d->LastError = d->Database.lastError().text(); return false; } return true; } const QString& qCTKDCMTK::GetLastError() const { QCTK_D(const qCTKDCMTK); return d->LastError; } QSqlDatabase& qCTKDCMTK::database() { QCTK_D(qCTKDCMTK); return d->Database; } bool qCTKDCMTKPrivate::executeScript(const QString& script) { QFile scriptFile(script); qDebug() << scriptFile.exists(); qDebug() << scriptFile.size(); QString sqlCommands( scriptFile.readAll() ); qDebug() << sqlCommands ; sqlCommands.replace( '\n', ' ' ); sqlCommands.replace("; ", ";\n"); QStringList sqlCommandsLines = sqlCommands.split('\n'); QSqlQuery query(Database); for (QStringList::iterator it = sqlCommandsLines.begin(); it != sqlCommandsLines.end()-1; ++it) { query.exec(*it); if (query.lastError().type()) { std::cerr << "There was an error during execution of the statement: " << (*it).toStdString(); } return false; } return true; } bool qCTKDCMTK::initializeDatabase() { QCTK_D(qCTKDCMTK); return d->executeScript(":/dicom/dicom-schema.sql"); }