Began adding DependencyInfos.
This commit is contained in:
@@ -91,6 +91,7 @@ add_executable(TraceAnalyzer
|
||||
presentation/tracemetrictreewidget.cpp
|
||||
businessObjects/phases/phase.cpp
|
||||
businessObjects/phases/phasedependency.cpp
|
||||
businessObjects/phases/dependencyinfos.cpp
|
||||
presentation/tracedrawingproperties.cpp
|
||||
presentation/util/traceplotline.cpp
|
||||
presentation/util/traceplotlinecache.cpp
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
|
||||
#include "dependencyinfos.h"
|
||||
|
||||
DependencyInfos::DependencyInfos(Type type)
|
||||
: mType(type)
|
||||
{}
|
||||
|
||||
DependencyInfos::DependencyInfos()
|
||||
{
|
||||
mType = DependencyType;
|
||||
}
|
||||
|
||||
DependencyInfos::~DependencyInfos()
|
||||
{}
|
||||
|
||||
void DependencyInfos::addInfo(DependencyInfo info)
|
||||
{
|
||||
mInfos.push_back(info);
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <QString>
|
||||
|
||||
struct DependencyInfo {
|
||||
QString id;
|
||||
float value;
|
||||
};
|
||||
|
||||
class DependencyInfos
|
||||
{
|
||||
public:
|
||||
enum Type {
|
||||
DependencyType,
|
||||
TimeDependency,
|
||||
DelayedPhase,
|
||||
DependencyPhase
|
||||
};
|
||||
|
||||
public:
|
||||
DependencyInfos(Type);
|
||||
DependencyInfos();
|
||||
~DependencyInfos();
|
||||
|
||||
void setType(Type type) { mType = type; }
|
||||
void addInfo(DependencyInfo);
|
||||
|
||||
const std::vector<DependencyInfo>& getInfos() const { return mInfos; }
|
||||
|
||||
private:
|
||||
Type mType;
|
||||
std::vector<DependencyInfo> mInfos;
|
||||
|
||||
};
|
||||
@@ -73,7 +73,6 @@ void Phase::draw(QPainter *painter, const QwtScaleMap &xMap,
|
||||
|
||||
if (getGranularity() == Granularity::Bankwise) {
|
||||
|
||||
bool drawDependencyText = true;
|
||||
DependencyOptions drawDependenciesOptions = drawingProperties.drawDependenciesOption;
|
||||
if (drawDependenciesOptions.draw == DependencyOption::All ||
|
||||
(drawDependenciesOptions.draw == DependencyOption::Selected && highlight))
|
||||
|
||||
@@ -43,6 +43,7 @@ struct TransactionQueryTexts {
|
||||
QString queryHead;
|
||||
QString selectTransactionsByTimespan, selectTransactionById;
|
||||
QString checkDependenciesExist, selectDependenciesByTimespan;
|
||||
QString selectDependencyTypePercentages, selectTimeDependencyPercentages, selectDelayedPhasePercentages, selectDependencyPhasePercentages;
|
||||
|
||||
TransactionQueryTexts()
|
||||
{
|
||||
@@ -61,6 +62,62 @@ struct TransactionQueryTexts {
|
||||
" ON DirectDependencies.DelayedPhaseID = timespanTransactions.PhaseID )";
|
||||
|
||||
|
||||
// For some reason I could not use a parameter for these below
|
||||
selectDependencyTypePercentages = "WITH TotalDeps (total) AS ( "
|
||||
"SELECT COUNT(*) FROM DirectDependencies "
|
||||
"), "
|
||||
"DependencyTypeDeps (param, ndeps) AS ( "
|
||||
"SELECT "
|
||||
"DependencyType, "
|
||||
"COUNT(*) "
|
||||
"FROM DirectDependencies "
|
||||
"GROUP BY \"DependencyType\" "
|
||||
") "
|
||||
"SELECT param, ROUND(ndeps*100.0 / (SELECT total FROM TotalDeps), 3) as percentage "
|
||||
"FROM DependencyTypeDeps "
|
||||
"ORDER BY percentage DESC ";
|
||||
|
||||
selectTimeDependencyPercentages = "WITH TotalDeps (total) AS ( "
|
||||
"SELECT COUNT(*) FROM DirectDependencies "
|
||||
"), "
|
||||
"DependencyTypeDeps (param, ndeps) AS ( "
|
||||
"SELECT "
|
||||
"TimeDependency, "
|
||||
"COUNT(*) "
|
||||
"FROM DirectDependencies "
|
||||
"GROUP BY \"TimeDependency\" "
|
||||
") "
|
||||
"SELECT param, ROUND(ndeps*100.0 / (SELECT total FROM TotalDeps), 3) as percentage "
|
||||
"FROM DependencyTypeDeps "
|
||||
"ORDER BY percentage DESC ";
|
||||
|
||||
selectDelayedPhasePercentages = "WITH TotalDeps (total) AS ( "
|
||||
"SELECT COUNT(*) FROM DirectDependencies "
|
||||
"), "
|
||||
"DependencyTypeDeps (param, ndeps) AS ( "
|
||||
"SELECT "
|
||||
"DelayedPhaseName, "
|
||||
"COUNT(*) "
|
||||
"FROM DirectDependencies "
|
||||
"GROUP BY \"DelayedPhaseName\" "
|
||||
") "
|
||||
"SELECT param, ROUND(ndeps*100.0 / (SELECT total FROM TotalDeps), 3) as percentage "
|
||||
"FROM DependencyTypeDeps "
|
||||
"ORDER BY percentage DESC ";
|
||||
|
||||
selectDependencyPhasePercentages = "WITH TotalDeps (total) AS ( "
|
||||
"SELECT COUNT(*) FROM DirectDependencies "
|
||||
"), "
|
||||
"DependencyTypeDeps (param, ndeps) AS ( "
|
||||
"SELECT "
|
||||
"DependencyPhaseName, "
|
||||
"COUNT(*) "
|
||||
"FROM DirectDependencies "
|
||||
"GROUP BY \"DependencyPhaseName\" "
|
||||
") "
|
||||
"SELECT param, ROUND(ndeps*100.0 / (SELECT total FROM TotalDeps), 3) as percentage "
|
||||
"FROM DependencyTypeDeps "
|
||||
"ORDER BY percentage DESC ";
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -91,11 +91,18 @@ void TraceDB::prepareQueries()
|
||||
selectDependenciesByTimespan = QSqlQuery(database);
|
||||
selectDependenciesByTimespan.prepare(queryTexts.selectDependenciesByTimespan);
|
||||
|
||||
selectDependencyTypePercentages = QSqlQuery(database);
|
||||
selectDependencyTypePercentages.prepare(queryTexts.selectDependencyTypePercentages);
|
||||
selectTimeDependencyPercentages = QSqlQuery(database);
|
||||
selectTimeDependencyPercentages.prepare(queryTexts.selectTimeDependencyPercentages);
|
||||
selectDelayedPhasePercentages = QSqlQuery(database);
|
||||
selectDelayedPhasePercentages.prepare(queryTexts.selectDelayedPhasePercentages);
|
||||
selectDependencyPhasePercentages = QSqlQuery(database);
|
||||
selectDependencyPhasePercentages.prepare(queryTexts.selectDependencyPhasePercentages);
|
||||
}
|
||||
|
||||
void TraceDB::updateComments(const std::vector<CommentModel::Comment> &comments)
|
||||
{
|
||||
|
||||
QSqlQuery query(database);
|
||||
query.prepare("DELETE FROM Comments");
|
||||
executeQuery(query);
|
||||
@@ -381,6 +388,36 @@ vector<CommentModel::Comment> TraceDB::getDebugMessagesInTimespan(const Timespan
|
||||
return parseCommentsFromQuery(selectDebugMessagesByTimespanWithLimit);
|
||||
}
|
||||
|
||||
DependencyInfos TraceDB::getDependencyInfos(DependencyInfos::Type infoType)
|
||||
{
|
||||
DependencyInfos dummy;
|
||||
executeQuery(checkDependenciesExist);
|
||||
if (!checkDependenciesExist.next() || checkDependenciesExist.value(0).toInt() != 1) {
|
||||
return dummy;
|
||||
}
|
||||
|
||||
switch(infoType) {
|
||||
case DependencyInfos::Type::DependencyType:
|
||||
executeQuery(selectDependencyTypePercentages);
|
||||
return parseDependencyInfos(selectDependencyTypePercentages, infoType);
|
||||
|
||||
case DependencyInfos::Type::TimeDependency:
|
||||
executeQuery(selectTimeDependencyPercentages);
|
||||
return parseDependencyInfos(selectTimeDependencyPercentages, infoType);
|
||||
|
||||
case DependencyInfos::Type::DelayedPhase:
|
||||
executeQuery(selectDelayedPhasePercentages);
|
||||
return parseDependencyInfos(selectDelayedPhasePercentages, infoType);
|
||||
|
||||
case DependencyInfos::Type::DependencyPhase:
|
||||
executeQuery(selectDependencyPhasePercentages);
|
||||
return parseDependencyInfos(selectDependencyPhasePercentages, infoType);
|
||||
|
||||
}
|
||||
|
||||
return dummy;
|
||||
}
|
||||
|
||||
QSqlDatabase TraceDB::getDatabase() const
|
||||
{
|
||||
return database;
|
||||
@@ -515,6 +552,17 @@ vector<CommentModel::Comment> TraceDB::parseCommentsFromQuery(QSqlQuery &query)
|
||||
return result;
|
||||
}
|
||||
|
||||
DependencyInfos TraceDB::parseDependencyInfos(QSqlQuery & query, const DependencyInfos::Type infoType)
|
||||
{
|
||||
DependencyInfos infos(infoType);
|
||||
|
||||
while(query.next()) {
|
||||
infos.addInfo({query.value(0).toString(), query.value(1).toFloat()});
|
||||
}
|
||||
|
||||
return infos;
|
||||
}
|
||||
|
||||
void TraceDB::executeQuery(QSqlQuery query)
|
||||
{
|
||||
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
#include "businessObjects/generalinfo.h"
|
||||
#include "businessObjects/commandlengths.h"
|
||||
#include "businessObjects/phases/phasefactory.h"
|
||||
#include "businessObjects/phases/dependencyinfos.h"
|
||||
#include "businessObjects/commentmodel.h"
|
||||
#include "QueryTexts.h"
|
||||
|
||||
@@ -106,6 +107,9 @@ public:
|
||||
std::vector<CommentModel::Comment> getDebugMessagesInTimespan(const Timespan &span,
|
||||
unsigned int limit);
|
||||
|
||||
// TODO
|
||||
DependencyInfos getDependencyInfos(DependencyInfos::Type infoType);
|
||||
|
||||
QSqlDatabase getDatabase() const;
|
||||
|
||||
private:
|
||||
@@ -122,6 +126,10 @@ private:
|
||||
QSqlQuery selectDebugMessagesByTimespanWithLimit;
|
||||
QSqlQuery checkDependenciesExist;
|
||||
QSqlQuery selectDependenciesByTimespan;
|
||||
QSqlQuery selectDependencyTypePercentages;
|
||||
QSqlQuery selectTimeDependencyPercentages;
|
||||
QSqlQuery selectDelayedPhasePercentages;
|
||||
QSqlQuery selectDependencyPhasePercentages;
|
||||
|
||||
TransactionQueryTexts queryTexts;
|
||||
void prepareQueries();
|
||||
@@ -133,6 +141,8 @@ private:
|
||||
bool updateVisiblePhases = false);
|
||||
std::vector<CommentModel::Comment> parseCommentsFromQuery(QSqlQuery &query);
|
||||
|
||||
DependencyInfos parseDependencyInfos(QSqlQuery & query, const DependencyInfos::Type infoType);
|
||||
|
||||
void executeScriptFile(QString fileName);
|
||||
void dropAndCreateTables();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user