Project Documentation Manager BRIGADOON-0002
Project Documentation Manager
Loading...
Searching...
No Matches
doxygenmanager.cpp
Go to the documentation of this file.
1#include "doxygenmanager.h"
3#include "readprojectinfo.h"
4#include <QProcess>
5
8
10{
11 worker.moveToThread(&doxy_thread);
12 QObject::connect(&doxy_thread, &QThread::finished, &worker, &QObject::deleteLater);
13 QObject::connect(this, SIGNAL(DoWork(PROJECT_INFORMATION*)), &worker, SLOT(DoWork(PROJECT_INFORMATION*)));
14
15 QObject::connect (&worker, &Worker::WorkDone, this,
17
18 QObject::connect (&worker, &Worker::SendLogEntry, this,
20
21 doxy_thread.start();
22}
23
29
31{
32 ProjectInfo->ProjectLock = true;
33 ProjectInfo->ProjectQueued = true;
34 read_project_info->SetProjectStatus(ProjectInfo->ProjectDesc.ProjectIndex, ProjectInfo->ProjectLock, ProjectInfo->ProjectQueued);
35 // project_list_manager->PrStateChange(ProjectInfo);
36 LogAdd( LOG_INFO, MODE_FILE, QString("Project %1 Queued for documentation generation.").arg(ProjectInfo->ProjectDesc.ProjectIdent));
37 project_list.append(ProjectInfo);
38 DoProject();
39}
40
41void DoxygenManager::LogAdd(LOGGING_SEVERITY Severity, LOGGING_MODE Mode, QString Message)
42{
43 REMOTE_LOG_ENTRY log_entry;
44 log_entry.Severity = Severity;
45 log_entry.Mode = Mode;
46 log_entry.Message = Message;
47 emit SendLogEntry(log_entry);
48}
49
51{
52 // Create the Extrnal text and HTML Project List Files
53 emit ProduceProjectLists ();
54
55 // Copy the Appropriate .htaccess form into the website if Document Control
56 // iS active and Only Group Access if active
57 if (!(ProjectInfo->InAssocInfo.HtaccessFileName == "")
60 {
61 QString htaccess_file = ProjectInfo->ProgramInformation.SharedTemplateDirectory + "/access_template/" + ProjectInfo->InAssocInfo.HtaccessFileName;
62 QString destin_file = ProjectInfo->ProgramInformation.PrimaryWebsiteDirectory + "/projects/" + ProjectInfo->ProjectDesc.ProjectIdent + "/html/.htaccess";
63 QFile ht_file(htaccess_file);
64 if (ht_file.copy(destin_file))
65 {
66 LogAdd( LOG_DEBUG, MODE_FILE, QString(".htaccess File %1 copied to %2.").arg(htaccess_file, ProjectInfo->ProjectDesc.ProjectIdent));
67 }
68 else
69 {
70 LogAdd( LOG_ERROR, MODE_FILE, QString(".htaccess File %1 FAILED TO COPY to %2.").arg(htaccess_file, ProjectInfo->ProjectDesc.ProjectIdent));
71 }
72 // delete ProjectInfo;
73 }
74
75 // Release Lock and release Structure
76 ProjectInfo->ProjectLock = false;
77 ProjectInfo->ProjectQueued = false;
78 read_project_info->SetProjectStatus (ProjectInfo->ProjectDesc.ProjectIndex,
79 ProjectInfo->ProjectLock,
80 ProjectInfo->ProjectQueued);
81 emit PrStateChange (ProjectInfo);
82
83 project_working = false;
84 DoProject ();
85}
86
88{
89 emit SendLogEntry(LogEntry);
90}
91
93{
94 if (!project_working)
95 {
96 if (!project_list.empty())
97 {
98 PROJECT_INFORMATION* project_info = project_list.takeFirst();
99 if (LockProject(project_info->ProjectDesc.ProjectIndex))
100 {
101 project_working = true;
102 project_info->ProjectLock = true;
103 project_info->ProjectQueued = false;
104 read_project_info->SetProjectStatus(project_info->ProjectDesc.ProjectIndex, project_info->ProjectLock, project_info->ProjectQueued);
105
106 emit PrStateChange(project_info);
107 emit DoWork(project_info);
108 LogAdd(LOG_DEBUG, MODE_GENERAL, QString("Project %1 sent to Doxygen program.").arg(project_info->ProjectDesc.ProjectIdent));
109 }
110 else
111 {
112 project_info->ProjectLock = false;
113 LogAdd(LOG_INFO, MODE_GENERAL, QString("Project %1 update cancelled as Project already locked.").arg(project_info->ProjectDesc.ProjectIdent));
114 }
115
116 }
117 else
118 {
119 LogAdd(LOG_DEBUG, MODE_GENERAL, "No new projects to be processed.");
120 }
121 }
122 else
123 {
124 LogAdd(LOG_DEBUG, MODE_GENERAL, "Project processing under way - New Project Start deferred.");
125 }
126}
127
128bool DoxygenManager::LockProject(int ProjectIndex)
129{
130 return( read_project_info->SetProjectStatus(ProjectIndex, true, false) );
131}
132
133
bool project_working
Flag showing is a project is being processed.
void ReceiveResult(PROJECT_INFORMATION *ProjectInfo)
Receive the Result of the Worker Function.
void PrStateChange(PROJECT_INFORMATION *ProjectInfo)
Signal that State of the Project has changed.
~DoxygenManager()
Class Deconstructor.
void RemoteLogger(REMOTE_LOG_ENTRY LogEntry)
void SendLogEntry(REMOTE_LOG_ENTRY LogEntry)
Send Log Entry to the Log \LogEntry Structure holding Log information.
bool LockProject(int ProjectIndex)
Lock the Project to prevent alterations.
void ProcessProject(PROJECT_INFORMATION *ProjectInfo)
Process documentation for a Project.
QList< PROJECT_INFORMATION * > project_list
Queue of Projects to be processed.
void DoProject(void)
Take the next Project in the Queue and process.
void ProduceProjectLists(void)
void DoWork(PROJECT_INFORMATION *ProjectInfo)
Signal the Work task to process this Project.
DoxygenManager()
Class Constructor.
void LogAdd(LOGGING_SEVERITY Severity, LOGGING_MODE Mode, QString Message)
Add a Log Entry.
void SendLogEntry(REMOTE_LOG_ENTRY LogEntry)
void WorkDone(PROJECT_INFORMATION *ProjectInfo)
#define CONTROL_DOC_ACCESS
Control Document Access to Public Mask.
#define GROUP_ACCESS_ONLY
restrict Public Access Mask
ProjectListManager * project_list_manager
ReadProjectInfo * read_project_info
Doxygen Defintitions.
LOGGING_SEVERITY
Log Severity allow the selection of logging events based on Severity.
Definition logger.h:48
@ LOG_ERROR
Definition logger.h:52
@ LOG_INFO
Definition logger.h:55
@ LOG_DEBUG
Definition logger.h:56
LOGGING_MODE
Log Severity allow the selection of logging events based on the mode.
Definition logger.h:21
@ MODE_FILE
Definition logger.h:32
@ MODE_GENERAL
Definition logger.h:24
Project List Manager Class.
Class for Reading Projects.
Project Information Passed Between Functions.
PROGRAM_INFORMATION ProgramInformation
PROJECT_DESCRIPTION ProjectDesc
ASSOCIATED_GROUP_INFO InAssocInfo
Definition logger.h:60
LOGGING_MODE Mode
Definition logger.h:61
QString Message
Definition logger.h:63
LOGGING_SEVERITY Severity
Definition logger.h:62