mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 08:08:42 +00:00
fix absolutely atrocious use of tabs
This commit is contained in:
@@ -31,113 +31,112 @@
|
||||
#include <QtXml/QtXml>
|
||||
|
||||
static char rideFileRegExp[] =
|
||||
"^(\\d\\d\\d\\d)_(\\d\\d)_(\\d\\d)"
|
||||
"_(\\d\\d)_(\\d\\d)_(\\d\\d)\\.(raw|srm|csv|tcx)$";
|
||||
"^(\\d\\d\\d\\d)_(\\d\\d)_(\\d\\d)"
|
||||
"_(\\d\\d)_(\\d\\d)_(\\d\\d)\\.(raw|srm|csv|tcx)$";
|
||||
|
||||
MetricAggregator::MetricAggregator()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void MetricAggregator::aggregateRides(QDir home, Zones *zones)
|
||||
{
|
||||
qDebug() << QDateTime::currentDateTime();
|
||||
DBAccess *dbaccess = new DBAccess(home);
|
||||
qDebug() << QDateTime::currentDateTime();
|
||||
DBAccess *dbaccess = new DBAccess(home);
|
||||
dbaccess->dropMetricTable();
|
||||
dbaccess->createDatabase();
|
||||
QRegExp rx(rideFileRegExp);
|
||||
QStringList errors;
|
||||
QRegExp rx(rideFileRegExp);
|
||||
QStringList errors;
|
||||
QStringListIterator i(RideFileFactory::instance().listRideFiles(home));
|
||||
while (i.hasNext()) {
|
||||
QString name = i.next();
|
||||
QFile file(home.absolutePath() + "/" + name);
|
||||
RideFile *ride = RideFileFactory::instance().openRideFile(file, errors);
|
||||
importRide(home, zones, ride, name, dbaccess);
|
||||
}
|
||||
QFile file(home.absolutePath() + "/" + name);
|
||||
RideFile *ride = RideFileFactory::instance().openRideFile(file, errors);
|
||||
importRide(home, zones, ride, name, dbaccess);
|
||||
}
|
||||
dbaccess->closeConnection();
|
||||
delete dbaccess;
|
||||
qDebug() << QDateTime::currentDateTime();
|
||||
|
||||
qDebug() << QDateTime::currentDateTime();
|
||||
|
||||
}
|
||||
|
||||
bool MetricAggregator::importRide(QDir path, Zones *zones, RideFile *ride, QString fileName, DBAccess *dbaccess)
|
||||
{
|
||||
|
||||
SummaryMetrics *summaryMetric = new SummaryMetrics();
|
||||
|
||||
|
||||
QFile file(path.absolutePath() + "/" + fileName);
|
||||
int zone_range = -1;
|
||||
|
||||
QRegExp rx(rideFileRegExp);
|
||||
|
||||
SummaryMetrics *summaryMetric = new SummaryMetrics();
|
||||
|
||||
|
||||
QFile file(path.absolutePath() + "/" + fileName);
|
||||
int zone_range = -1;
|
||||
|
||||
QRegExp rx(rideFileRegExp);
|
||||
if (!rx.exactMatch(fileName)) {
|
||||
fprintf(stderr, "bad name: %s\n", fileName.toAscii().constData());
|
||||
assert(false);
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
summaryMetric->setFileName(fileName);
|
||||
summaryMetric->setFileName(fileName);
|
||||
assert(rx.numCaptures() == 7);
|
||||
QDate date(rx.cap(1).toInt(), rx.cap(2).toInt(),rx.cap(3).toInt());
|
||||
QTime time(rx.cap(4).toInt(), rx.cap(5).toInt(),rx.cap(6).toInt());
|
||||
QDate date(rx.cap(1).toInt(), rx.cap(2).toInt(),rx.cap(3).toInt());
|
||||
QTime time(rx.cap(4).toInt(), rx.cap(5).toInt(),rx.cap(6).toInt());
|
||||
QDateTime dateTime(date, time);
|
||||
|
||||
|
||||
summaryMetric->setRideDate(dateTime);
|
||||
|
||||
if (zones)
|
||||
zone_range = zones->whichRange(dateTime.date());
|
||||
|
||||
const RideMetricFactory &factory = RideMetricFactory::instance();
|
||||
QSet<QString> todo;
|
||||
|
||||
for (int i = 0; i < factory.metricCount(); ++i)
|
||||
todo.insert(factory.metricName(i));
|
||||
|
||||
|
||||
while (!todo.empty()) {
|
||||
QMutableSetIterator<QString> i(todo);
|
||||
later:
|
||||
while (i.hasNext()) {
|
||||
const QString &name = i.next();
|
||||
const QVector<QString> &deps = factory.dependencies(name);
|
||||
for (int j = 0; j < deps.size(); ++j)
|
||||
if (!metrics.contains(deps[j]))
|
||||
goto later;
|
||||
RideMetric *metric = factory.newMetric(name);
|
||||
metric->compute(ride, zones, zone_range, metrics);
|
||||
metrics.insert(name, metric);
|
||||
i.remove();
|
||||
double value = metric->value(true);
|
||||
if(name == "workout_time")
|
||||
summaryMetric->setWorkoutTime(value);
|
||||
else if(name == "average_cad")
|
||||
summaryMetric->setCadence(value);
|
||||
else if(name == "total_distance")
|
||||
summaryMetric->setDistance(value);
|
||||
else if(name == "skiba_xpower")
|
||||
summaryMetric->setXPower(value);
|
||||
else if(name == "average_speed")
|
||||
summaryMetric->setSpeed(value);
|
||||
else if(name == "total_work")
|
||||
summaryMetric->setTotalWork(value);
|
||||
else if(name == "average_power")
|
||||
summaryMetric->setWatts(value);
|
||||
else if(name == "time_riding")
|
||||
summaryMetric->setRideTime(value);
|
||||
else if(name == "average_hr")
|
||||
summaryMetric->setHeartRate(value);
|
||||
else if(name == "skiba_relative_intensity")
|
||||
summaryMetric->setRelativeIntensity(value);
|
||||
else if(name == "skiba_bike_score")
|
||||
summaryMetric->setBikeScore(value);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
dbaccess->importRide(summaryMetric);
|
||||
delete summaryMetric;
|
||||
if (zones)
|
||||
zone_range = zones->whichRange(dateTime.date());
|
||||
|
||||
const RideMetricFactory &factory = RideMetricFactory::instance();
|
||||
QSet<QString> todo;
|
||||
|
||||
for (int i = 0; i < factory.metricCount(); ++i)
|
||||
todo.insert(factory.metricName(i));
|
||||
|
||||
|
||||
while (!todo.empty()) {
|
||||
QMutableSetIterator<QString> i(todo);
|
||||
later:
|
||||
while (i.hasNext()) {
|
||||
const QString &name = i.next();
|
||||
const QVector<QString> &deps = factory.dependencies(name);
|
||||
for (int j = 0; j < deps.size(); ++j)
|
||||
if (!metrics.contains(deps[j]))
|
||||
goto later;
|
||||
RideMetric *metric = factory.newMetric(name);
|
||||
metric->compute(ride, zones, zone_range, metrics);
|
||||
metrics.insert(name, metric);
|
||||
i.remove();
|
||||
double value = metric->value(true);
|
||||
if(name == "workout_time")
|
||||
summaryMetric->setWorkoutTime(value);
|
||||
else if(name == "average_cad")
|
||||
summaryMetric->setCadence(value);
|
||||
else if(name == "total_distance")
|
||||
summaryMetric->setDistance(value);
|
||||
else if(name == "skiba_xpower")
|
||||
summaryMetric->setXPower(value);
|
||||
else if(name == "average_speed")
|
||||
summaryMetric->setSpeed(value);
|
||||
else if(name == "total_work")
|
||||
summaryMetric->setTotalWork(value);
|
||||
else if(name == "average_power")
|
||||
summaryMetric->setWatts(value);
|
||||
else if(name == "time_riding")
|
||||
summaryMetric->setRideTime(value);
|
||||
else if(name == "average_hr")
|
||||
summaryMetric->setHeartRate(value);
|
||||
else if(name == "skiba_relative_intensity")
|
||||
summaryMetric->setRelativeIntensity(value);
|
||||
else if(name == "skiba_bike_score")
|
||||
summaryMetric->setBikeScore(value);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
dbaccess->importRide(summaryMetric);
|
||||
delete summaryMetric;
|
||||
|
||||
return true;
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
void MetricAggregator::scanForMissing(QDir home, Zones *zones)
|
||||
@@ -151,17 +150,17 @@ void MetricAggregator::scanForMissing(QDir home, Zones *zones)
|
||||
QString name = i.next();
|
||||
if(!filenames.contains(name))
|
||||
{
|
||||
qDebug() << "Found missing file: " << name;
|
||||
QFile file(home.absolutePath() + "/" + name);
|
||||
RideFile *ride = RideFileFactory::instance().openRideFile(file, errors);
|
||||
importRide(home, zones, ride, name, dbaccess);
|
||||
|
||||
qDebug() << "Found missing file: " << name;
|
||||
QFile file(home.absolutePath() + "/" + name);
|
||||
RideFile *ride = RideFileFactory::instance().openRideFile(file, errors);
|
||||
importRide(home, zones, ride, name, dbaccess);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
dbaccess->closeConnection();
|
||||
delete dbaccess;
|
||||
|
||||
|
||||
}
|
||||
|
||||
void MetricAggregator::resetMetricTable(QDir home)
|
||||
|
||||
Reference in New Issue
Block a user