Added import mash profiles.

Tue, 14 Jun 2022 12:52:03 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Tue, 14 Jun 2022 12:52:03 +0200
changeset 288
717140ab5647
parent 287
83e66c6b6e07
child 289
12f915849e4a

Added import mash profiles.

src/ImportXML.cpp file | annotate | diff | comparison | revisions
src/ImportXML.h file | annotate | diff | comparison | revisions
src/global.h file | annotate | diff | comparison | revisions
--- 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();
                         }
--- a/src/ImportXML.h	Tue Jun 14 10:42:39 2022 +0200
+++ b/src/ImportXML.h	Tue Jun 14 12:52:03 2022 +0200
@@ -2,7 +2,7 @@
 #define _IMPORTXML_H
 
 #include <QDialog>
-
+#include <QJsonDocument>
 
 namespace Ui {
 class ImportXML;
--- a/src/global.h	Tue Jun 14 10:42:39 2022 +0200
+++ b/src/global.h	Tue Jun 14 12:52:03 2022 +0200
@@ -5,6 +5,7 @@
 #include <QString>
 #include <QTranslator>
 #include <QDate>
+#include <QJsonDocument>
 
 
 #define Ka1		0.0000004445
@@ -180,6 +181,14 @@
 };
 
 
+struct Mashs
+{
+    QString		name;
+    QString		notes;
+    QJsonDocument	steps;
+};
+
+
 struct Waters
 {
     QString	name;

mercurial