Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Clean up measures.xml
.. remove it as part of the upgrade.
.. use built-in version for db schema
.. don't re-read it when doing getAllMeasuresFor()
  • Loading branch information
liversedge committed May 22, 2013
1 parent c567866 commit 3cae674
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 34 deletions.
46 changes: 12 additions & 34 deletions src/DBAccess.cpp
Expand Up @@ -64,18 +64,15 @@
// 45 09 May 2013 Mark Liversedge Added 2,3,8 and 90m peak power for fatigue profiling
// 46 13 May 2013 Mark Liversedge Handle absence of speed in metric calculations
// 47 17 May 2013 Mark Liversedge Reimplementation of w/kg and ride->getWeight()
// 48 22 May 2013 Mark Liversedge Removing local measures.xml, till v3.1

int DBSchemaVersion = 47;
int DBSchemaVersion = 48;

DBAccess::DBAccess(MainWindow* main, QDir home) : main(main), home(home)
{
initDatabase(home);

// check we have one and use built in if not there
QString filename = main->home.absolutePath()+"/measures.xml";
if (!QFile(filename).exists()) filename = ":/xml/measures.xml";
RideMetadata::readXML(filename, mkeywordDefinitions, mfieldDefinitions, mcolorfield);

RideMetadata::readXML(":/xml/measures.xml", mkeywordDefinitions, mfieldDefinitions, mcolorfield);
initDatabase(home);
}

void DBAccess::closeConnection()
Expand Down Expand Up @@ -241,25 +238,15 @@ bool DBAccess::createMeasuresTable()
// we need to create it!
if (rc && createTables) {

// read definitions from measures.xml
QList<FieldDefinition> fieldDefinitions;
QList<KeywordDefinition> keywordDefinitions; //NOTE: not used in measures.xml
QString colorfield;

// check we have one and use built in if not there
QString filename = main->home.absolutePath()+"/measures.xml";
if (!QFile(filename).exists()) filename = ":/xml/measures.xml";
RideMetadata::readXML(filename, keywordDefinitions, fieldDefinitions, colorfield);

QString createMeasuresTable = "create table measures (timestamp integer primary key,"
"measure_date date";

// And all the metadata texts
foreach(FieldDefinition field, fieldDefinitions)
foreach(FieldDefinition field, mfieldDefinitions)
if (field.type < 3 || field.type == 7) createMeasuresTable += QString(", Z%1 varchar").arg(main->specialFields.makeTechName(field.name));

// And all the metadata measures
foreach(FieldDefinition field, fieldDefinitions)
foreach(FieldDefinition field, mfieldDefinitions)
if (field.type == 3 || field.type == 4)
createMeasuresTable += QString(", Z%1 double").arg(main->specialFields.makeTechName(field.name));

Expand All @@ -269,8 +256,8 @@ bool DBAccess::createMeasuresTable()
//if (!rc) qDebug()<<"create table failed!" << query.lastError();

// add row to version database
QString measuresXML = QString(home.absolutePath()) + "/measures.xml";
int measurescrcnow = computeFileCRC(measuresXML);
//QString measuresXML = QString(home.absolutePath()) + "/measures.xml";
int measurescrcnow = 0; //computeFileCRC(measuresXML); //no crc since we don't allow definition
QDateTime timestamp = QDateTime::currentDateTime();

// wipe current version row
Expand Down Expand Up @@ -315,8 +302,8 @@ void DBAccess::checkDBVersion()
int metadatacrcnow = computeFileCRC(metadataXML);

// get a CRC for measures.xml
QString measuresXML = QString(home.absolutePath()) + "/measures.xml";
int measurescrcnow = computeFileCRC(measuresXML);
//QString measuresXML = QString(home.absolutePath()) + "/measures.xml";
int measurescrcnow = 0; //computeFileCRC(measuresXML);// we don't allow user to edit

// can we get a version number?
QSqlQuery query("SELECT table_name, schema_version, creation_date, metadata_crc from version;", dbconn);
Expand Down Expand Up @@ -719,15 +706,6 @@ bool DBAccess::importMeasure(SummaryMetrics *summaryMetrics)

QList<SummaryMetrics> DBAccess::getAllMeasuresFor(QDateTime start, QDateTime end)
{
QList<FieldDefinition> fieldDefinitions;
QList<KeywordDefinition> keywordDefinitions; //NOTE: not used in measures.xml
QString colorfield;

// check we have one and use built in if not there
QString filename = main->home.absolutePath()+"/measures.xml";
if (!QFile(filename).exists()) filename = ":/xml/measures.xml";
RideMetadata::readXML(filename, keywordDefinitions, fieldDefinitions, colorfield);

QList<SummaryMetrics> measures;

// null date range fetches all, but not currently used by application code
Expand All @@ -737,7 +715,7 @@ QList<SummaryMetrics> DBAccess::getAllMeasuresFor(QDateTime start, QDateTime end

// construct the select statement
QString selectStatement = "SELECT timestamp, measure_date";
foreach(FieldDefinition field, fieldDefinitions) {
foreach(FieldDefinition field, mfieldDefinitions) {
if (!main->specialFields.isMetric(field.name) && (field.type < 5 || field.type == 7)) {
selectStatement += QString(", Z%1 ").arg(main->specialFields.makeTechName(field.name));
}
Expand All @@ -758,7 +736,7 @@ QList<SummaryMetrics> DBAccess::getAllMeasuresFor(QDateTime start, QDateTime end
add.setDateTime(query.value(1).toDateTime());
// the values
int i=2;
foreach(FieldDefinition field, fieldDefinitions) {
foreach(FieldDefinition field, mfieldDefinitions) {
if (field.type == 3 || field.type == 4) {
add.setText(field.name, query.value(i).toString());
i++;
Expand Down
4 changes: 4 additions & 0 deletions src/GcUpgrade.cpp
Expand Up @@ -78,6 +78,10 @@ GcUpgrade::upgrade(const QDir &home)
appsettings->setCValue(home.dirName(), "splitter/train/hide/2", false);
appsettings->setCValue(home.dirName(), "splitter/train/hide/3", false);

// 6. Delete any old measures.xml -- its for withings only
QFile msxml(QString("%1/measures.xml").arg(home.canonicalPath()));
if (msxml.exists()) msxml.remove();

// FINALLY -- Set latest version - so only tries to upgrade once
appsettings->setCValue(home.dirName(), GC_VERSION_USED, VERSION_LATEST);
}
Expand Down

0 comments on commit 3cae674

Please sign in to comment.