/* * @RDE_HEADER@ * Copy exercise from server to evaluation server * $Id: copy_exercise.h 64999 2025-07-01 04:02:56Z fritsche_h $ * $HeadURL: svn://192.168.133.21/TDS/branches/product/release_candidates/guez/3dws_rc/Lts/Tools/DBAdministration/copy_exercise.h $ * $Author: fritsche_h $ * Created by Christian Ehrlicher, NLSE, 2018-07-31 */ #pragma once #include #include #include #include #include #include namespace DBAdministration { class CopyExercise : public QObject { Q_OBJECT public: enum CopyFor { CopyForEvaluation = 0, CopyForAAR = 1 }; explicit CopyExercise(NGL::INGLLogger &logger, CopyFor copyFor, QObject *parent = nullptr); ~CopyExercise(); bool init(int exerciseId, const QString &srcDbHost, const QString &srcDbName, const QString &dstDbHost, const QString &dstDbName); bool doCopy(int exerciseId = 0); void setDownloadScriptIds(const QVector &downloadScriptIds); void stopPing(); QSqlDatabase serverDb() const { return m_dbSrv; } QSqlDatabase evaluationDb() const { return m_dbEvaluation; } void handleProcInit(const QString &program, const QStringList &args); void handleProcPing(const QStringList &args); Q_SIGNALS: void copyDbFailed(); void copyDbFinished(); void nextProgress(int); private: bool runPgDump(); void onPgDumpFinished(int exitCode, QProcess::ExitStatus exitStatus); void onCreateDbFinished(int exitCode, QProcess::ExitStatus exitStatus); void onDropDbFinished(int exitCode, QProcess::ExitStatus exitStatus); void onDropDbFinished2(int exitCode, QProcess::ExitStatus exitStatus); void onPsqlFinishedForEvaluation(int exitCode, QProcess::ExitStatus exitStatus); void onPsqlFinishedForAAR(int exitCode, QProcess::ExitStatus exitStatus); void onPingFinished(int exitCode, QProcess::ExitStatus exitStatus); bool checkExitStatus(const QString &procName, int exitCode, QProcess::ExitStatus exitStatus); QString getDumpFile() const; void handleProcFinished(int exitCode, QProcess::ExitStatus exitStatus); void onErrorOccured(QProcess::ProcessError error); void onTimeoutTimer(); void onPingStart(); void dropDb(); void onTimerCheckFailed(); private: QString m_srcDbHost; QString m_srcDbName; QString m_dstDbHost; QString m_dstDbName; QSqlDatabase m_dbSrv; QSqlDatabase m_dbEvaluation; QProcess *m_proc; QProcess *m_procPing; int m_exerciseId; CopyFor m_copyFor; QVector m_downloadScriptIds; QTimer* m_timer; bool m_stopPing; bool m_firstPing; int m_progressBarValue; qint64 m_sizePgDump{0}; NGL::INGLLogger &m_logger; }; } // namespace DBAdministration