WSF
RevisionStore.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef REVISIONSTORE_HPP
13#define REVISIONSTORE_HPP
14
15#include <map>
16#include <set>
17
18#include <QObject>
19
20#include "RevisionDb.hpp"
21#include "UtCallbackHolder.hpp"
22#include "UtPath.hpp"
23#include "ViExport.hpp"
24
25class QStringList;
26class QTimer;
27class UtTextDocument;
28class WsfPProxy;
29
30namespace wizard
31{
32class TextSource;
33
34typedef std::map<std::string, const UtTextDocument*> RevisionFileMap;
35
37class VI_EXPORT RevisionStore : public QObject
38{
39 Q_OBJECT
40
41public:
42 explicit RevisionStore();
43 ~RevisionStore() override = default;
44
45 void SetProject(const UtPath& aProjectDir, const UtPath& aProjectFile = UtPath());
46 void SetProjectWorkingDir(const UtPath& aWorkingDir);
47
48 bool Open();
49 bool OpenInMemory();
50 bool Close();
51 bool IsEmpty();
52 bool IsOpen() const;
53 bool Exists() const;
54
55 void EnableAutoBackup(int aMin);
56 void DisableAutoBackup();
57
58 void QueueFile(const UtTextDocument* aDocPtr);
59 bool Restore(int aRevNo, QStringList& aFailedFiles, QWidget* aRequestingWidget = nullptr);
60 bool DeleteAllRevisions();
61
63 RevisionDb& DB();
64
65public slots:
66 bool Backup();
67 bool RequestBackup();
68 void QueueFile(TextSource* aDocPtr);
70 void HandleProxyAvailable(WsfPProxy* aProxy);
71 void HandleParseUpdated(bool aParsed);
72 void HandleProjectStartupFilesChanged(const std::vector<UtPath>& aStartupFiles);
73
74protected:
76 bool StoreNewRevision(const RevisionChangeList& aChanges,
77 const std::string& aWorkingDir,
78 const std::vector<std::string>& aStartupFiles);
79
80private:
81 bool RenameFallbackDb();
82 bool ReplaceFile(const UtPath& aFilePath, const char* aFileContent, size_t aFileContentSize);
83 bool MakeNewFile(const UtPath& aFilePath, const char* aFileContent);
84 bool RestoreIncludedFile(const std::string& aFilePath, const UtTextDocument& aFileContent);
85 bool RestoreUnincludedFile(const std::string& aFilePath, const UtTextDocument& aFileContent, QWidget* aRequestingWidget);
86 bool RestoreFile(const std::string& aPath, int aRevNo, QWidget* aRequestingWidget = nullptr);
87 bool AnalyzeAndBackup();
88 bool ProxyUpToDate() const;
89 void AddToQueue(const std::string& aRelFilePath, const UtTextDocument* aDocPtr);
90 std::string RelativeDocPath(const UtTextDocument& aDoc) const;
91 RevisionChange AnalyzeFile(const UtTextDocument& aDoc);
92 bool AnalyzeAddedRemovedFiles(RevisionPathSet& aRemovedPaths);
93
94 UtPath mDbDir;
95 UtPath mDbFile;
96 UtPath mProjectDir;
97 UtPath mProjectWorkingDir;
98 std::vector<UtPath> mProjectStartupFiles;
99 UtCallbackHolder mCallbacks;
100 RevisionDb mRevDb;
101 RevisionFileMap mQueuedFiles;
102 bool mBackupScheduled;
103 QTimer* mAutoBackupTimer;
104 WsfPProxy* mProxy;
105};
106} // namespace wizard
107#endif
#define VI_EXPORT
Definition ViExport.hpp:38
Definition WsfPProxy.hpp:32
Definition RevisionDb.hpp:35
RevisionList Revisions()
Definition RevisionStore.cpp:390
bool Open()
Definition RevisionStore.cpp:88
bool IsOpen() const
Definition RevisionStore.cpp:139
RevisionDb & DB()
Definition RevisionStore.cpp:396
void HandleProjectStartupFilesChanged(const std::vector< UtPath > &aStartupFiles)
Definition RevisionStore.cpp:278
bool Backup()
Definition RevisionStore.cpp:209
void HandleProxyAvailable(WsfPProxy *aProxy)
Definition RevisionStore.cpp:250
bool StoreNewRevision(const RevisionChangeList &aChanges, const std::string &aWorkingDir, const std::vector< std::string > &aStartupFiles)
Definition RevisionStore.cpp:570
bool Exists() const
Definition RevisionStore.cpp:146
bool RequestBackup()
Definition RevisionStore.cpp:184
void SetProject(const UtPath &aProjectDir, const UtPath &aProjectFile=UtPath())
Definition RevisionStore.cpp:60
bool OpenInMemory()
Definition RevisionStore.cpp:112
void HandleParseUpdated(bool aParsed)
Definition RevisionStore.cpp:268
RevisionChangeList GenerateFileChanges(const RevisionPathSet &aRemovedPaths=RevisionPathSet())
Definition RevisionStore.cpp:497
RevisionStore()
Default constructor.
Definition RevisionStore.cpp:48
bool Close()
Definition RevisionStore.cpp:119
bool IsEmpty()
Definition RevisionStore.cpp:133
~RevisionStore() override=default
void QueueFile(const UtTextDocument *aDocPtr)
Definition RevisionStore.cpp:294
bool DeleteAllRevisions()
Definition RevisionStore.cpp:377
void EnableAutoBackup(int aMin)
Definition RevisionStore.cpp:153
bool Restore(int aRevNo, QStringList &aFailedFiles, QWidget *aRequestingWidget=nullptr)
Definition RevisionStore.cpp:316
void DisableAutoBackup()
Disables the automatic backup feature.
Definition RevisionStore.cpp:167
void QueueAllProjectFiles()
Definition RevisionStore.cpp:233
void SetProjectWorkingDir(const UtPath &aWorkingDir)
Definition RevisionStore.cpp:80
Definition TextSource.hpp:48
Definition Runner.hpp:22
std::vector< RevisionChange > RevisionChangeList
Definition RevisionChange.hpp:54
std::vector< Revision > RevisionList
Definition Revision.hpp:35
std::map< std::string, const UtTextDocument * > RevisionFileMap
Definition RevisionStore.hpp:34
std::set< std::string > RevisionPathSet
Definition RevisionDb.hpp:26
Definition RevisionChange.hpp:28
Copyrights Multiple, All Rights Reserved