WSF
RevisionDb.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 REVISIONDB_HPP
13#define REVISIONDB_HPP
14
15#include <map>
16#include <set>
17#include <vector>
18
19#include "Revision.hpp"
20#include "RevisionChange.hpp"
21#include "RevisionSqlStmt.hpp"
22#include "UtTextDocument.hpp"
23
24namespace wizard
25{
26using RevisionPathSet = std::set<std::string>;
27using FileMap = std::map<std::string, UtTextDocument>;
28
35{
36public:
37 RevisionDb();
38 virtual ~RevisionDb();
39
40 bool Open(const std::string& aDbPath);
41 bool OpenInMemory();
42 bool Close();
43 bool ClearTables();
44
45 int StoreNewRevision(const RevisionChangeList& aChanges,
46 const std::string& aWorkingDir,
47 const std::vector<std::string>& aStartupFiles);
48
49 int LatestRevisionNo();
50 int NewRevisionNo(const std::string& aWorkingDir);
51 bool DeleteRevision(int aRevNo);
52 bool GetFileAtRevision(const std::string& aRelFilePath,
53 int aRevision,
54 UtTextDocument& aDoc,
55 int* aRevisionsTraversed = nullptr);
56 bool InsertChange(int aRevNo, const RevisionChange& aChange);
57 bool InsertChanges(int aRevNo, const RevisionChangeList& aChangeList);
58 bool InsertStartupFile(int aRevNo, const std::string& aStartupFile);
59 bool InsertStartupFiles(int aRevNo, const std::vector<std::string>& aStartupFiles);
60
62 RevisionChangeList Changes(int aRevNo);
64 RevisionPathSet AllFilePaths(int aRevNo);
65 FileMap ExistingFiles(int aRevNo);
66 bool StartupFiles(int aRevNo, std::vector<std::string>& aStartupFiles);
67 bool WorkingDirectory(int aRevNo, std::string& aWorkingDir);
68 bool LatestStartupFiles(std::vector<std::string>& aStartupFiles);
69 bool LatestWorkingDirectory(std::string& aWorkingDir);
70
71 int LatestSupportedVersion() const;
72 int Version();
73 bool IsVersionOld();
74
75 bool IsEmpty();
76 bool IsOpen() const;
77
78private:
79 bool DbCreateTables();
80 bool DbClearTables();
81 bool DbOpen(const std::string& aDbPath);
82 bool DbClose();
83
84 bool UpdateToV2();
85
86 int GetFirstFullRevisionUpTo(const std::string& aRelFilePath, int aRevNo);
87 bool InsertChange(RevisionChange::Type aKind, int aRevNo, const std::string& aFilePath, const QByteArray& aData);
88 bool SetVersion(int aVersion);
89 int Exec(const char* aSql);
90 void PrintDbError();
91
92 bool BeginTransaction();
93 bool CommitTransaction();
94 bool RollbackTransaction();
95
96 void PrepareSqlStatements();
97 void ResetSqlStatements();
98 void FinalizeSqlStatements();
99
100 using RevisionSqlStmtList = std::vector<RevisionSqlStmt*>;
101
102 sqlite3* mSqlDb;
103 RevisionSqlStmt mDeleteRevStmt;
104 RevisionSqlStmt mInsertChangeStmt;
105 RevisionSqlStmt mInsertMetadataStmt;
106 RevisionSqlStmt mInsertRevStmt;
107 RevisionSqlStmt mInsertStartupFileStmt;
108 RevisionSqlStmt mSelectAllFilesStmt;
109 RevisionSqlStmt mSelectChangesBtwStmt;
110 RevisionSqlStmt mSelectChangesUpToStmt;
111 RevisionSqlStmt mSelectExistingFilesStmt;
112 RevisionSqlStmt mSelectLatestRevStmt;
113 RevisionSqlStmt mSelectStartupFilesStmt;
114 RevisionSqlStmt mSelectWorkingDirStmt;
115 RevisionSqlStmt mSelectMetadataStmt;
116 RevisionSqlStmt mSelectRevChangesStmt;
117 RevisionSqlStmt mSelectRevisionsStmt;
118 RevisionSqlStmtList mSqlStmts;
119};
120} // namespace wizard
121#endif // REVISIONDB_HPP
#define VI_EXPORT
Definition ViExport.hpp:38
RevisionList Revisions()
Definition RevisionDb.cpp:453
bool StartupFiles(int aRevNo, std::vector< std::string > &aStartupFiles)
Definition RevisionDb.cpp:563
RevisionDb()
Definition RevisionDb.cpp:125
bool LatestStartupFiles(std::vector< std::string > &aStartupFiles)
Definition RevisionDb.cpp:605
int StoreNewRevision(const RevisionChangeList &aChanges, const std::string &aWorkingDir, const std::vector< std::string > &aStartupFiles)
Definition RevisionDb.cpp:239
RevisionChangeList Changes(int aRevNo)
Definition RevisionDb.cpp:485
int Version()
Definition RevisionDb.cpp:627
RevisionPathSet AllFilePaths(int aRevNo)
Definition RevisionDb.cpp:529
bool OpenInMemory()
Definition RevisionDb.cpp:192
int NewRevisionNo(const std::string &aWorkingDir)
Definition RevisionDb.cpp:305
FileMap ExistingFiles(int aRevNo)
Definition RevisionDb.cpp:547
bool Open(const std::string &aDbPath)
Definition RevisionDb.cpp:154
bool IsEmpty()
Definition RevisionDb.cpp:652
bool InsertChanges(int aRevNo, const RevisionChangeList &aChangeList)
Definition RevisionDb.cpp:416
int LatestSupportedVersion() const
Definition RevisionDb.cpp:617
bool IsOpen() const
Definition RevisionDb.cpp:658
bool InsertChange(int aRevNo, const RevisionChange &aChange)
Definition RevisionDb.cpp:407
bool GetFileAtRevision(const std::string &aRelFilePath, int aRevision, UtTextDocument &aDoc, int *aRevisionsTraversed=nullptr)
Definition RevisionDb.cpp:332
bool DeleteRevision(int aRevNo)
Definition RevisionDb.cpp:316
RevisionPathSet ExistingFilePaths(int aRevNo)
Definition RevisionDb.cpp:510
int LatestRevisionNo()
Definition RevisionDb.cpp:298
bool LatestWorkingDirectory(std::string &aWorkingDir)
Definition RevisionDb.cpp:611
bool IsVersionOld()
Definition RevisionDb.cpp:642
bool InsertStartupFile(int aRevNo, const std::string &aStartupFile)
Inserts a startup file associated with the given revision.
Definition RevisionDb.cpp:430
bool InsertStartupFiles(int aRevNo, const std::vector< std::string > &aStartupFiles)
Inserts a list of startup files associated with the given revision.
Definition RevisionDb.cpp:439
bool Close()
Definition RevisionDb.cpp:199
bool WorkingDirectory(int aRevNo, std::string &aWorkingDir)
Definition RevisionDb.cpp:586
bool ClearTables()
Definition RevisionDb.cpp:218
Definition RevisionSqlStmt.hpp:27
Definition Runner.hpp:22
std::vector< RevisionChange > RevisionChangeList
Definition RevisionChange.hpp:54
std::vector< Revision > RevisionList
Definition Revision.hpp:35
std::set< std::string > RevisionPathSet
Definition RevisionDb.hpp:26
std::map< std::string, UtTextDocument > FileMap
Definition RevisionDb.hpp:27
Definition RevisionChange.hpp:28
Type
Definition RevisionChange.hpp:32
Copyrights Multiple, All Rights Reserved