aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/dialogs/dbconverterdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/dialogs/dbconverterdialog.cpp')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/dbconverterdialog.cpp218
1 files changed, 0 insertions, 218 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbconverterdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbconverterdialog.cpp
deleted file mode 100644
index 8af131e..0000000
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbconverterdialog.cpp
+++ /dev/null
@@ -1,218 +0,0 @@
-#include "dbconverterdialog.h"
-#include "ui_dbconverterdialog.h"
-#include "common/global.h"
-#include "dblistmodel.h"
-#include "db/db.h"
-#include "common/utils_sql.h"
-#include "dbversionconverter.h"
-#include "services/dbmanager.h"
-#include "iconmanager.h"
-#include "uiutils.h"
-#include "versionconvertsummarydialog.h"
-#include "mainwindow.h"
-#include "errorsconfirmdialog.h"
-#include "parser/ast/sqlitecreatetable.h"
-#include "services/pluginmanager.h"
-#include "plugins/dbplugin.h"
-#include "db/sqlquery.h"
-#include "services/notifymanager.h"
-#include "common/widgetcover.h"
-#include <QDebug>
-#include <QFileInfo>
-#include <QPushButton>
-
-DbConverterDialog::DbConverterDialog(QWidget *parent) :
- QDialog(parent),
- ui(new Ui::DbConverterDialog)
-{
- init();
-}
-
-DbConverterDialog::~DbConverterDialog()
-{
- delete ui;
- safe_delete(converter);
-}
-
-void DbConverterDialog::setDb(Db* db)
-{
- ui->srcDbCombo->setCurrentText(db->getName());
- srcDb = db;
- srcDbChanged();
-}
-
-void DbConverterDialog::init()
-{
- ui->setupUi(this);
- limitDialogWidth(this);
-
- widgetCover = new WidgetCover(this);
- widgetCover->setVisible(false);
- widgetCover->initWithInterruptContainer();
-
- ui->trgFileButton->setIcon(ICONS.OPEN_FILE);
-
- converter = new DbVersionConverter();
-
- dbListModel = new DbListModel(this);
- ui->srcDbCombo->setModel(dbListModel);
-
- connect(ui->srcDbCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(srcDbChanged(int)));
- connect(ui->trgVersionCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(updateState()));
- connect(ui->trgFileEdit, SIGNAL(textChanged(QString)), this, SLOT(updateState()));
- connect(ui->trgNameEdit, SIGNAL(textChanged(QString)), this, SLOT(updateState()));
- connect(converter, SIGNAL(conversionFailed(QString)), this, SLOT(processingFailed(QString)));
- connect(converter, SIGNAL(conversionSuccessful()), this, SLOT(processingSuccessful()));
- connect(converter, SIGNAL(conversionAborted()), this, SLOT(processingAborted()));
- connect(widgetCover, SIGNAL(cancelClicked()), converter, SLOT(interrupt()));
-}
-
-void DbConverterDialog::srcDbChanged()
-{
- dontUpdateState = true;
- ui->srcDbVersionCombo->clear();
- ui->trgVersionCombo->clear();
- if (srcDb)
- {
- // Source version
- QList<Dialect> dialects = converter->getSupportedVersions();
- QStringList versionNames = converter->getSupportedVersionNames();
- Dialect dialect = srcDb->getDialect();
- int idx = dialects.indexOf(dialect);
- QString type = versionNames[idx];
- ui->srcDbVersionCombo->addItem(type);
- ui->srcDbVersionCombo->setCurrentText(type);
-
- // Target version
- QString oldTrgVersion = ui->trgVersionCombo->currentText();
- versionNames.removeAt(idx);
- ui->trgVersionCombo->addItems(versionNames);
- if (versionNames.contains(oldTrgVersion))
- ui->trgVersionCombo->setCurrentText(oldTrgVersion);
- else if (versionNames.size() > 0)
- ui->trgVersionCombo->setCurrentIndex(0);
-
- // File
- QString trgFile = srcDb->getPath() + "_new";
- int i = 0;
- while (QFileInfo(trgFile).exists())
- {
- trgFile = srcDb->getPath() + "_new" + QString::number(i++);
- }
-
- ui->trgFileEdit->setText(trgFile);
-
- // Name
- QString generatedName = generateUniqueName(srcDb->getName() + "_new", DBLIST->getDbNames());
- ui->trgNameEdit->setText(generatedName);
- }
- else
- {
- ui->srcDbVersionCombo->setCurrentText("");
- ui->trgFileEdit->setText("");
- ui->trgVersionCombo->setCurrentText("");
- ui->trgNameEdit->setText("");
- }
- dontUpdateState = false;
- updateState();
-}
-
-bool DbConverterDialog::validate()
-{
- bool srcDbOk = (srcDb != nullptr);
- setValidState(ui->srcDbCombo, srcDbOk, tr("Select source database"));
-
- QString dstDbPath = ui->trgFileEdit->text();
- QFileInfo dstDbFi(dstDbPath);
- bool dstDbOk = (!dstDbFi.exists() || dstDbFi.isWritable()) && dstDbFi != QFileInfo(srcDb->getPath());
- bool dstExists = dstDbFi.exists();
- setValidState(ui->trgFileEdit, dstDbOk, tr("Enter valid and writable file path."));
- if (dstExists && dstDbOk)
- setValidStateInfo(ui->trgFileEdit, tr("Entered file exists and will be overwritten."));
-
- QString name = ui->trgNameEdit->text();
- bool nameOk = !name.isEmpty() && !DBLIST->getDbNames().contains(name);
- setValidState(ui->trgNameEdit, nameOk, tr("Enter a not empty, unique name (as in the list of databases on the left)."));
-
- bool dstDialectOk = ui->trgVersionCombo->currentIndex() > -1;
- QString msg;
- if (!dstDialectOk && ui->trgVersionCombo->count() == 0)
- msg = tr("No valid target dialect available. Conversion not possible.");
- else
- msg = tr("Select valid target dialect.");
-
- setValidState(ui->trgVersionCombo, dstDialectOk, msg);
-
- return (srcDbOk && nameOk && dstDbOk && dstDialectOk);
-}
-
-void DbConverterDialog::accept()
-{
- if (!validate())
- return;
-
- QStringList versionNames = converter->getSupportedVersionNames();
- QList<Dialect> dialects = converter->getSupportedVersions();
- QString trgDialectName = ui->trgVersionCombo->currentText();
- int idx = versionNames.indexOf(trgDialectName);
- if (idx == -1)
- {
- qCritical() << "Could not find target dialect on list of supported dialects in DbConverterDialog::accept()";
- return;
- }
-
- Dialect srcDialect = srcDb->getDialect();
- Dialect trgDialect = dialects[idx];
- QString trgFile = ui->trgFileEdit->text();
- QString trgName = ui->trgNameEdit->text();
- widgetCover->show();
- converter->convert(srcDialect, trgDialect, srcDb, trgFile, trgName, &DbConverterDialog::confirmConversion, &DbConverterDialog::confirmConversionErrors);
-}
-
-void DbConverterDialog::srcDbChanged(int index)
-{
- srcDb = dbListModel->getDb(index);
- srcDbChanged();
-}
-
-void DbConverterDialog::updateState()
-{
- if (dontUpdateState)
- return;
-
- ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(validate());
-}
-
-void DbConverterDialog::processingFailed(const QString& errorMessage)
-{
- widgetCover->hide();
- notifyError(errorMessage);
-}
-
-void DbConverterDialog::processingSuccessful()
-{
- notifyInfo(tr("Database %1 has been successfully converted and now is available under new name: %2").arg(srcDb->getName(), ui->trgNameEdit->text()));
- QDialog::accept();
-}
-
-void DbConverterDialog::processingAborted()
-{
- widgetCover->hide();
-}
-
-bool DbConverterDialog::confirmConversion(const QList<QPair<QString, QString> >& diffs)
-{
- VersionConvertSummaryDialog dialog(MAINWINDOW);
- dialog.setWindowTitle(tr("SQL statements conversion"));
- dialog.setSides(diffs);
- return dialog.exec() == QDialog::Accepted;
-}
-
-bool DbConverterDialog::confirmConversionErrors(const QSet<QString>& errors)
-{
- ErrorsConfirmDialog dialog(MAINWINDOW);
- dialog.setTopLabel(tr("Following error occurred while converting SQL statements to the target SQLite version:"));
- dialog.setBottomLabel(tr("Would you like to ignore those errors and proceed?"));
- dialog.setErrors(errors);
- return dialog.exec() == QDialog::Accepted;
-}