diff -r 83e66c6b6e07 -r 717140ab5647 src/ImportXML.cpp --- a/src/ImportXML.cpp Tue Jun 14 10:42:39 2022 +0200 +++ b/src/ImportXML.cpp Tue Jun 14 12:52:03 2022 +0200 @@ -969,7 +969,6 @@ if (xml->atEnd()) break; if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "MASHS")) { - qDebug() << "0 /MASHS"; break; } if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MASH")) { @@ -977,22 +976,93 @@ * Mash */ total++; + Mashs *m = new Mashs(); + m->name = m->notes = ""; while (xml->readNext()) { if (xml->atEnd()) break; if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "MASH")) { -// query.exec(sql); + query.prepare("INSERT INTO profile_mash SET name=:name, notes=:notes, steps=:steps, uuid=:uuid"); + query.bindValue(":name", m->name); + query.bindValue(":notes", m->notes); + query.bindValue(":steps", m->steps.toJson(QJsonDocument::Compact)); + query.bindValue(":uuid", QUuid::createUuid().toString().mid(1, 36)); + query.exec(); if (query.lastError().isValid()) { -// qWarning() << sql << query.lastError(); + qWarning() << query.lastError(); errors++; - } + } else { + qInfo() << "Inserted mash step" << m->name; + } ui->progressBar->setValue(round(100 * xml->characterOffset() / fsize)); break; } - if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "VERSION")) { + if ((xml->tokenType() == QXmlStreamReader::StartElement) && ( + (xml->name() == "VERSION") || (xml->name() == "GRAIN_TEMP") || + (xml->name() == "TUN_TEMP") || (xml->name() == "SPARGE_TEMP") || + (xml->name() == "SG_LAST_RUNNINGS") || (xml->name() == "PH_LAST_RUNNINGS") || + (xml->name() == "PH") || (xml->name() == "TUN_WEIGHT") || + (xml->name() == "TUN_SPECIFIC_HEAT") || (xml->name() == "EQUIP_ADJUST"))) { // Ignore. - } else { + } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NAME")) { + m->name = xml->readElementText(); + } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NOTES")) { + m->notes = xml->readElementText(); + } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MASH_STEPS")) { + QJsonArray array; + while (xml->readNext()) { + if (xml->atEnd()) + break; + if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "MASH_STEPS")) { + m->steps.setArray(array); + break; + } + if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MASH_STEP")) { + /* + * Process mash step + */ + QJsonObject obj; + while (xml->readNext()) { + if (xml->atEnd()) + break; + if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "MASH_STEP")) { + array.append(obj); + break; + } + if ((xml->tokenType() == QXmlStreamReader::StartElement) && ( + (xml->name() == "VERSION") || (xml->name() == "DISPLAY_STEP_TEMP") || + (xml->name() == "PH") || (xml->name() == "WATER_GRAIN_RATIO") || + (xml->name() == "DECOCTION_AMT") || (xml->name() == "INFUSE_TEMP") || + (xml->name() == "INFUSE_AMOUNT") || (xml->name() == "DISPLAY_INFUSE_AMT"))) { + // Ignore. + } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NAME")) { + obj.insert("step_name", xml->readElementText()); + } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TYPE")) { + QString temp = xml->readElementText(); + if (temp == "Infusion") + obj.insert("step_type", 0); + else if (temp == "Temperature") + obj.insert("step_type", 1); + else if (temp == "Decoction") + obj.insert("step_type", 2); + } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "STEP_TEMP")) { + obj.insert("step_temp", xml->readElementText().toDouble()); + } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "END_TEMP")) { + obj.insert("end_temp", xml->readElementText().toDouble()); + } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "STEP_TIME")) { + obj.insert("step_time", xml->readElementText().toDouble()); + } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "RAMP_TIME")) { + obj.insert("ramp_time", xml->readElementText().toDouble()); + } else { + if (xml->tokenType() == QXmlStreamReader::StartElement) + qDebug() << "4 " << xml->tokenType() << xml->name(); + } + } + } + } + + } else { if (xml->tokenType() == QXmlStreamReader::StartElement) qDebug() << "2 " << xml->tokenType() << xml->name(); }