Finished import fermentables

Sun, 12 Jun 2022 11:52:18 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 12 Jun 2022 11:52:18 +0200
changeset 278
ed562a2a4ca4
parent 277
2228d833c52a
child 279
8540fd0166e7

Finished import fermentables

src/ImportXML.cpp file | annotate | diff | comparison | revisions
src/global.h file | annotate | diff | comparison | revisions
--- a/src/ImportXML.cpp	Sat Jun 11 20:58:46 2022 +0200
+++ b/src/ImportXML.cpp	Sun Jun 12 11:52:18 2022 +0200
@@ -17,6 +17,7 @@
 #include "ImportXML.h"
 #include "../ui/ui_ImportXML.h"
 #include "global.h"
+#include "Utils.h"
 #include "MainWindow.h"
 
 
@@ -47,9 +48,8 @@
 void ImportXML::on_openButton_clicked()
 {
     QSqlQuery query;
-    QString   sql, log;
+    QString   log;
     int total = 0, errors = 0;
-    bool hasnotes;
 
     QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), QDir::homePath() + "/*.xml", tr("Files (*.xml)"));
     if (fileName == 0) {
@@ -346,7 +346,6 @@
                 }
             }
         } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "FERMENTABLES")) {
-qDebug() << "start FERMENTABLES";
             /*
              * Fermentables
              */
@@ -362,21 +361,47 @@
                      * Fermentable
                      */
                     total++;
-		    hasnotes = false;
-                    sql = "INSERT INTO inventory_fermentables SET uuid='";
-                    sql.append(QUuid::createUuid().toString().mid(1, 36));
-		    sql.append("'");
+		    Fermentables *f = new Fermentables;
+		    f->f_supplier = f->f_origin = f->f_notes = "";
+		    f->f_yield = 80;
+		    f->f_max_in_batch = 100;
+		    f->f_recommend_mash = true;
+		    f->f_protein = f->f_dissolved_protein = f->f_coarse_fine_diff = f->f_moisture = f->f_diastatic_power = 0;
+		    f->f_di_ph = 5.7;
+		    f->f_acid_to_ph_57 = 0;
 
                     while (xml->readNext()) {
                         if (xml->atEnd())
                             break;
                         if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "FERMENTABLE")) {
-				qDebug() << "hasnotes" << hasnotes;
-			    if (! hasnotes)
-				sql.append(", notes=''");
-                            query.exec(sql);
+			    query.prepare("INSERT INTO inventory_fermentables SET name=:name, type=:type, yield=:yield, color=:color, "
+				"add_after_boil=:addafter, origin=:origin, supplier=:supplier, notes=:notes, coarse_fine_diff=:coarse, "
+				"moisture=:moisture, diastatic_power=:diastatic, protein=:protein, dissolved_protein=:dissolved, "
+				"max_in_batch=:maxinbatch, recommend_mash=:mash, added=:added, di_ph=:diph, "
+				"acid_to_ph_57=:acidph, graintype=:graintype, uuid = :uuid");
+			    query.bindValue(":name", f->f_name);
+			    query.bindValue(":type", f->f_type);
+			    query.bindValue(":yield", QString("%1").arg(f->f_yield, 2, 'f', 1, '0'));
+			    query.bindValue(":color", QString("%1").arg(Utils::srm_to_ebc(f->f_color), 1, 'f', 0, '0'));
+			    query.bindValue(":addafter", f->f_add_after_boil ? 1:0);
+			    query.bindValue(":origin", f->f_origin);
+			    query.bindValue(":supplier", f->f_supplier);
+			    query.bindValue(":notes", f->f_notes);
+			    query.bindValue(":coarse", QString("%1").arg(f->f_coarse_fine_diff, 4, 'f', 3, '0'));
+			    query.bindValue(":moisture", QString("%1").arg(f->f_moisture, 4, 'f', 3, '0'));
+			    query.bindValue(":diastatic", Utils::kolbach_to_lintner(f->f_diastatic_power));
+			    query.bindValue(":protein", QString("%1").arg(f->f_protein, 4, 'f', 3, '0'));
+			    query.bindValue(":dissolved", QString("%1").arg(f->f_dissolved_protein, 4, 'f', 3, '0'));
+			    query.bindValue(":maxinbatch", QString("%1").arg(f->f_max_in_batch, 2, 'f', 1, '0'));
+			    query.bindValue(":mash", f->f_recommend_mash ? 1:0);
+			    query.bindValue(":added", f->f_added);
+			    query.bindValue(":diph", QString("%1").arg(f->f_di_ph, 6, 'f', 5, '0'));
+			    query.bindValue(":acidph", QString("%1").arg(f->f_acid_to_ph_57, 6, 'f', 5, '0'));
+			    query.bindValue(":graintype", f->f_graintype);
+			    query.bindValue(":uuid", QUuid::createUuid().toString().mid(1, 36));
+                            query.exec();
                             if (query.lastError().isValid()) {
-				qWarning() << sql << query.lastError();
+				qWarning() << query.lastError();
                                 errors++;
                             }
                             ui->progressBar->setValue(round(100 * xml->characterOffset() / fsize));
@@ -385,85 +410,81 @@
                         if ((xml->tokenType() == QXmlStreamReader::StartElement) &&
 			   ((xml->name() == "VERSION") || (xml->name() == "DISPLAY_COST") ||
 			    (xml->name() == "DISPLAY_COLOR") || (xml->name() == "INVENTORY") ||
+			    (xml->name() == "COST") || (xml->name() == "ALWAYS_ON_STOCK") ||
 			    (xml->name() == "PERCENTAGE") || (xml->name() == "ADJUST_TO_TOTAL_100") )) {
                             // Ignore.
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NAME")) {
-                            sql.append(QString(", name='%1'").arg(xml->readElementText()));
-			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "COST")) {
-                            sql.append(QString(", cost=%1").arg(xml->readElementText().toDouble(), 3, 'f', 2, '0'));
+			    f->f_name = xml->readElementText();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TYPE")) {
 			    QString temp = xml->readElementText();
-			    if (temp == "Grain")
-				sql.append(", type=0");
-			    else if (temp == "Sugar")
-				sql.append(", type=1");
+			    if (temp == "Sugar")
+				f->f_type = 1;
 			    else if (temp == "Extract")
-				sql.append(", type=2");
+				f->f_type = 2;
 			    else if (temp == "Dry extract")
-				sql.append(", type=3");
+				f->f_type = 3;
 			    else if (temp == "Adjunct")
-				sql.append(", type=4");
+				f->f_type = 4;
+			    else
+				f->f_type = 0;
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ORIGIN")) {
-                            sql.append(QString(", origin='%1'").arg(xml->readElementText()));
+			    f->f_origin = xml->readElementText();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "SUPPLIER")) {
-                            sql.append(QString(", supplier='%1'").arg(xml->readElementText()));
+			    f->f_supplier = xml->readElementText();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NOTES")) {
-                            sql.append(QString(", notes='%1'").arg(xml->readElementText()));
-			    hasnotes = true;
-			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ALWAYS_ON_STOCK")) {
-                            sql.append(QString(", always_on_stock=%1").arg(xml->readElementText().toLower()));
+			    f->f_notes = xml->readElementText();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "YIELD")) {
-                            sql.append(QString(", yield=%1").arg(xml->readElementText().toDouble(), 5, 'f', 4, '0'));
+			    f->f_yield = xml->readElementText().toDouble();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "COARSE_FINE_DIFF")) {
-                            sql.append(QString(", coarse_fine_diff=%1").arg(xml->readElementText().toDouble(), 5, 'f', 4, '0'));
+			    f->f_coarse_fine_diff = xml->readElementText().toDouble();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MOISTURE")) {
-                            sql.append(QString(", moisture=%1").arg(xml->readElementText().toDouble(), 5, 'f', 4, '0'));
+			    f->f_moisture = xml->readElementText().toDouble();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "DIASTATIC_POWER")) {
-                            sql.append(QString(", diastatic_power=%1").arg(xml->readElementText().toDouble(), 5, 'f', 4, '0'));
+			    f->f_diastatic_power = xml->readElementText().toDouble();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MAX_IN_BATCH")) {
-                            sql.append(QString(", max_in_batch=%1").arg(xml->readElementText().toDouble(), 5, 'f', 4, '0'));
+			    f->f_max_in_batch = xml->readElementText().toDouble();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "RECOMMEND_MASH")) {
-                            sql.append(QString(", recommend_mash=%1").arg(xml->readElementText().toLower()));
+			    f->f_recommend_mash = (xml->readElementText() == "TRUE") ? true:false;
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "GRAINTYPE")) {
 			    QString temp = xml->readElementText();
-			    if (temp == "Base")
-				sql.append(QString(", graintype=0"));
-			    else if (temp == "Roast")
-				sql.append(QString(", graintype=1"));
+			    if (temp == "Roast")
+				f->f_graintype = 1;
 			    else if (temp == "Crystal")
-				sql.append(QString(", graintype=2"));
+				f->f_graintype = 2;
                             else if (temp == "Kilned")
-				sql.append(QString(", graintype=3"));
+				f->f_graintype = 3;
                             else if (temp == "Sour Malt")
-				sql.append(QString(", graintype=4"));
+				f->f_graintype = 4;
                             else if (temp == "Special")
-				sql.append(QString(", graintype=5"));
+				f->f_graintype = 5;
                             else if (temp == "No malt")
-				sql.append(QString(", graintype=6"));
+				f->f_graintype = 6;
+			    else
+				f->f_graintype = 0;
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ADDED")) {
                             QString temp = xml->readElementText();
-			    if (temp == "Mash")
-				sql.append(QString(", added=0"));
-			    else if (temp == "Boil")
-				sql.append(QString(", added=1"));
+			    if (temp == "Boil")
+				f->f_added = 1;
                             else if (temp == "Fermentation")
-				sql.append(QString(", added=2"));
+				f->f_added = 2;
                             else if (temp == "Lagering")
-				sql.append(QString(", added=3"));
+				f->f_added = 3;
                             else if (temp == "Bottle")
-				sql.append(QString(", added=4"));
+				f->f_added = 4;
+			    else
+			        f->f_added = 0;
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ADD_AFTER_BOIL")) {
-                            sql.append(QString(", add_after_boil=%1").arg(xml->readElementText().toLower()));
+			    f->f_add_after_boil = (xml->readElementText() == "TRUE") ? true:false;
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "COLOR")) {
-                            sql.append(QString(", color=%1").arg(xml->readElementText().toDouble(), 5, 'f', 4, '0'));
+			    f->f_color = xml->readElementText().toDouble();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "PROTEIN")) {
-                            sql.append(QString(", protein=%1").arg(xml->readElementText().toDouble(), 5, 'f', 4, '0'));
+			    f->f_protein = xml->readElementText().toDouble();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "DISSOLVED_PROTEIN")) {
-                            sql.append(QString(", dissolved_protein=%1").arg(xml->readElementText().toDouble(), 5, 'f', 4, '0'));
+			    f->f_dissolved_protein = xml->readElementText().toDouble();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "DI_pH")) {
-                            sql.append(QString(", di_ph=%1").arg(xml->readElementText().toDouble(), 6, 'f', 5, '0'));
+			    f->f_di_ph = xml->readElementText().toDouble();
 			} else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ACID_TO_pH_5.7")) {
-                            sql.append(QString(", acid_to_ph_57=%1").arg(xml->readElementText().toDouble(), 6, 'f', 5, '0'));
+			    f->f_acid_to_ph_57 = xml->readElementText().toDouble();
                         } else {
                             if (xml->tokenType() == QXmlStreamReader::StartElement)
                                 qDebug() << "2  " << xml->tokenType() << xml->name();
@@ -487,8 +508,6 @@
                      * Hop
                      */
                     total++;
-                    sql = "INSERT INTO inventory_hops SET uuid='";
-                    sql.append(QUuid::createUuid().toString().mid(1, 36));
 
                     while (xml->readNext()) {
                         if (xml->atEnd())
@@ -527,8 +546,6 @@
                      * Misc
                      */
                     total++;
-                    sql = "INSERT INTO inventory_miscs SET uuid='";
-                    sql.append(QUuid::createUuid().toString().mid(1, 36));
 
                     while (xml->readNext()) {
                         if (xml->atEnd())
@@ -567,8 +584,6 @@
                      * Yeast
                      */
                     total++;
-                    sql = "INSERT INTO inventory_yeasts SET uuid='";
-                    sql.append(QUuid::createUuid().toString().mid(1, 36));
 
                     while (xml->readNext()) {
                         if (xml->atEnd())
@@ -607,8 +622,6 @@
                      * Water
                      */
                     total++;
-                    sql = "INSERT INTO inventory_waters SET uuid='";
-                    sql.append(QUuid::createUuid().toString().mid(1, 36));
 
                     while (xml->readNext()) {
                         if (xml->atEnd())
@@ -647,8 +660,6 @@
                      * Recipe
                      */
                     total++;
-                    sql = "INSERT INTO recipes SET uuid='";
-                    sql.append(QUuid::createUuid().toString().mid(1, 36));
 
                     while (xml->readNext()) {
                         if (xml->atEnd())
@@ -687,8 +698,6 @@
                      * Mash
                      */
                     total++;
-                    sql = "INSERT INTO inventory_mashs SET uuid='";
-                    sql.append(QUuid::createUuid().toString().mid(1, 36));
 
                     while (xml->readNext()) {
                         if (xml->atEnd())
--- a/src/global.h	Sat Jun 11 20:58:46 2022 +0200
+++ b/src/global.h	Sun Jun 12 11:52:18 2022 +0200
@@ -57,6 +57,7 @@
     QString	f_name;
     QString	f_origin;
     QString	f_supplier;
+    QString	f_notes;
     double	f_amount;
     double	f_cost;
     int		f_type;

mercurial