src/ImportXML.cpp

changeset 289
12f915849e4a
parent 288
717140ab5647
child 338
473479de8c5b
equal deleted inserted replaced
288:717140ab5647 289:12f915849e4a
16 */ 16 */
17 #include "ImportXML.h" 17 #include "ImportXML.h"
18 #include "../ui/ui_ImportXML.h" 18 #include "../ui/ui_ImportXML.h"
19 #include "global.h" 19 #include "global.h"
20 #include "Utils.h" 20 #include "Utils.h"
21 #include "database/db_recipe.h"
21 #include "MainWindow.h" 22 #include "MainWindow.h"
22 23
23 24
24 ImportXML::ImportXML(QWidget *parent) : QDialog(parent), ui(new Ui::ImportXML) 25 ImportXML::ImportXML(QWidget *parent) : QDialog(parent), ui(new Ui::ImportXML)
25 { 26 {
937 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "RECIPE")) { 938 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "RECIPE")) {
938 /* 939 /*
939 * Recipe 940 * Recipe
940 */ 941 */
941 total++; 942 total++;
943 Recipe *r = new Recipe();
944 r->record = -1;
945 r->notes = r->st_guide = r->st_name = r->st_letter = r->st_category = "";
946 r->w1_name = r->w2_name = "";
947 r->w1_ph = r->w2_ph = r->wg_ph = r->wb_ph = 7;
948 r->mash_name = "";
942 949
943 while (xml->readNext()) { 950 while (xml->readNext()) {
944 if (xml->atEnd()) 951 if (xml->atEnd())
945 break; 952 break;
946 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "RECIPE")) { 953 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "RECIPE")) {
947 // query.exec(sql); 954 qDebug() << "recipe:" << r->name;
948 if (query.lastError().isValid()) { 955 for (int i = 0; i < r->fermentables.size(); i++)
949 // qWarning() << sql << query.lastError(); 956 qDebug() << " fermentable" << i << r->fermentables.at(i).name;
957 for (int i = 0; i < r->hops.size(); i++)
958 qDebug() << " hop" << i << r->hops.at(i).name;
959 for (int i = 0; i < r->miscs.size(); i++)
960 qDebug() << " misc" << i << r->miscs.at(i).name;
961 for (int i = 0; i < r->yeasts.size(); i++)
962 qDebug() << " yeast" << i << r->yeasts.at(i).name;
963 for (int i = 0; i < r->mashs.size(); i++)
964 qDebug() << " mash step" << i << r->mashs.at(i).step_name;
965 qDebug() << " water" << 0 << r->w1_name << r->w1_amount;
966 qDebug() << " water" << 1 << r->w2_name << r->w2_amount;
967 if (DB_recipe::save(r, this)) {
968 qInfo() << "Inserted recipe" << r->name;
969 } else {
950 errors++; 970 errors++;
951 } 971 }
972 delete r;
952 ui->progressBar->setValue(round(100 * xml->characterOffset() / fsize)); 973 ui->progressBar->setValue(round(100 * xml->characterOffset() / fsize));
953 break; 974 break;
954 } 975 }
955 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "VERSION")) { 976 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (
977 (xml->name() == "VERSION") || (xml->name() == "AUTONR") ||
978 (xml->name() == "FORCED_CARBONATION") || (xml->name() == "DISPLAY_BATCH_SIZE") ||
979 (xml->name() == "DISPLAY_BOIL_SIZE") || (xml->name() == "SPARGE_WATER_COMP") ||
980 (xml->name() == "OG_BEFORE_BOIL") || (xml->name() == "SG_END_PRIMARY") ||
981 (xml->name() == "FORCED_CARB_KEGS") || (xml->name() == "COOLING_METHOD") ||
982 (xml->name() == "INVENTORY_REDUCED") || (xml->name() == "LOCKED") ||
983 (xml->name() == "PRIMING_SUGAR_BOTTLES") || (xml->name() == "PRIMING_SUGAR_KEGS") ||
984 (xml->name() == "NR_RECIPE") || (xml->name() == "LACTIC_SPARGE") ||
985 (xml->name() == "TARGET_PH") || (xml->name() == "SG_END_MASH") ||
986 (xml->name() == "VOLUME_HLT") || (xml->name() == "OG_FERMENTER") ||
987 (xml->name() == "COOLING_TO") || (xml->name() == "AERATION_TYPE") ||
988 (xml->name() == "BATCH_DIVIDED") || (xml->name() == "BATCH_DIVISION") ||
989 (xml->name() == "DIVIDED_FROM") || (xml->name() == "PARENT") ||
990 (xml->name() == "FERMENTATION_STAGES") || (xml->name() == "DATE") ||
991 (xml->name() == "CALC_ACID") || (xml->name() == "BREWER")
992 )) {
956 // Ignore. 993 // Ignore.
994 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NAME")) {
995 r->name = xml->readElementText();
996 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NOTES")) {
997 r->notes = xml->readElementText();
998 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "BATCH_SIZE")) {
999 r->batch_size = xml->readElementText().toDouble();
1000 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "BOIL_SIZE")) {
1001 r->boil_size = xml->readElementText().toDouble();
1002 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "BOIL_TIME")) {
1003 r->boil_time = xml->readElementText().toDouble();
1004 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "EFFICIENCY")) {
1005 r->efficiency = xml->readElementText().toDouble();
1006 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && ((xml->name() == "OG") || (xml->name() == "EST_OG"))) {
1007 r->est_og = xml->readElementText().toDouble();
1008 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && ((xml->name() == "FG") || (xml->name() == "EST_FG"))) {
1009 r->est_fg = xml->readElementText().toDouble();
1010 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && ((xml->name() == "ABV") || (xml->name() == "EST_ABV"))) {
1011 r->est_abv = xml->readElementText().toDouble();
1012 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && ((xml->name() == "IBU") || (xml->name() == "EST_IBU"))) {
1013 r->est_ibu = xml->readElementText().toDouble();
1014 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "EST_COLOR")) {
1015 r->est_color = Utils::srm_to_ebc(xml->readElementText().toDouble());
1016 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ACID_SPARGE_PERC")) {
1017 r->sparge_acid_perc = Utils::srm_to_ebc(xml->readElementText().toDouble());
1018 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "SPARGE_ACID_TYPE")) {
1019 QString temp = xml->readElementText();
1020 if (temp == "Hydrochloric")
1021 r->sparge_acid_type = 1;
1022 else if (temp == "Phosphoric")
1023 r->sparge_acid_type = 2;
1024 else if (temp == "Sulfuric")
1025 r->sparge_acid_type = 3;
1026 else
1027 r->sparge_acid_type = 0;
1028 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TYPE")) {
1029 QString temp = xml->readElementText();
1030 if (temp == "Extract")
1031 r->type = 0;
1032 else if (temp == "Partial Mash")
1033 r->type = 1;
1034 else
1035 r->type = 2;
1036 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "IBU_METHOD")) {
1037 QString temp = xml->readElementText();
1038 if (temp == "Rager")
1039 r->ibu_method = 1;
1040 else if (temp == "Daniels")
1041 r->ibu_method = 2;
1042 else if (temp == "Garetz")
1043 r->ibu_method = 3;
1044 else if (temp == "Mosher")
1045 r->ibu_method = 4;
1046 else if (temp == "Noonan")
1047 r->ibu_method = 5;
1048 else
1049 r->ibu_method = 0;
1050 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "COLOR_METHOD")) {
1051 QString temp = xml->readElementText();
1052 if (temp == "Mosher")
1053 r->color_method = 1;
1054 else if (temp == "Daniels")
1055 r->color_method = 2;
1056 else if (temp == "Halberstadt")
1057 r->color_method = 3;
1058 else if (temp == "Naudts")
1059 r->color_method = 4;
1060 else
1061 r->color_method = 0;
1062 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "STYLE")) {
1063 while (xml->readNext()) {
1064 if (xml->atEnd())
1065 break;
1066 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "STYLE")) {
1067 break;
1068 }
1069 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (
1070 (xml->name() == "VERSION") || (xml->name() == "NOTES") ||
1071 (xml->name() == "PROFILE") || (xml->name() == "EXAMPLES") ||
1072 (xml->name() == "DISPLAY_OG_MIN") || (xml->name() == "DISPLAY_OG_MAX") ||
1073 (xml->name() == "DISPLAY_FG_MIN") || (xml->name() == "DISPLAY_FG_MAX") ||
1074 (xml->name() == "DISPLAY_IBU_MIN") || (xml->name() == "DISPLAY_IBU_MAX") ||
1075 (xml->name() == "DISPLAY_COLOR_MIN") || (xml->name() == "DISPLAY_COLOR_MAX") ||
1076 (xml->name() == "DISPLAY_CARB_MIN") || (xml->name() == "DISPLAY_CARB_MAX") ||
1077 (xml->name() == "DISPLAY_ABV_MIN") || (xml->name() == "DISPLAY_ABV_MAX") ||
1078 (xml->name() == "OG_RANGE") || (xml->name() == "FG_RANGE") ||
1079 (xml->name() == "IBU_RANGE") || (xml->name() == "CARB_RANGE") ||
1080 (xml->name() == "COLOR_RANGE") || (xml->name() == "ABV_RANGE"))) {
1081 // Ignore.
1082 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NAME")) {
1083 r->st_name = xml->readElementText();
1084 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "CATEGORY")) {
1085 r->st_category = xml->readElementText();
1086 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "CATEGORY_NUMBER")) {
1087 r->st_category_number = xml->readElementText().toInt();
1088 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "STYLE_LETTER")) {
1089 r->st_letter = xml->readElementText();
1090 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "STYLE_GUIDE")) {
1091 r->st_guide = xml->readElementText();
1092 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TYPE")) {
1093 QString temp = xml->readElementText();
1094 if (temp == "Lager")
1095 r->st_type = 0;
1096 else if (temp == "Ale")
1097 r->st_type = 1;
1098 else if (temp == "Mead")
1099 r->st_type = 2;
1100 else if (temp == "Wheat")
1101 r->st_type = 3;
1102 else if (temp == "Mixed")
1103 r->st_type = 4;
1104 else if (temp == "Cider")
1105 r->st_type = 5;
1106 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "OG_MIN")) {
1107 r->st_og_min = xml->readElementText().toDouble();
1108 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "OG_MAX")) {
1109 r->st_og_max = xml->readElementText().toDouble();
1110 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "FG_MIN")) {
1111 r->st_fg_min = xml->readElementText().toDouble();
1112 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "FG_MAX")) {
1113 r->st_fg_max = xml->readElementText().toDouble();
1114 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "IBU_MIN")) {
1115 r->st_ibu_min = xml->readElementText().toDouble();
1116 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "IBU_MAX")) {
1117 r->st_ibu_max = xml->readElementText().toDouble();
1118 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "COLOR_MIN")) {
1119 r->st_color_min = xml->readElementText().toDouble();
1120 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "COLOR_MAX")) {
1121 r->st_color_max = xml->readElementText().toDouble();
1122 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "CARB_MIN")) {
1123 r->st_carb_min = xml->readElementText().toDouble();
1124 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "CARB_MAX")) {
1125 r->st_carb_max = xml->readElementText().toDouble();
1126 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ABV_MIN")) {
1127 r->st_abv_min = xml->readElementText().toDouble();
1128 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ABV_MAX")) {
1129 r->st_abv_max = xml->readElementText().toDouble();
1130 } else {
1131 if (xml->tokenType() == QXmlStreamReader::StartElement)
1132 qDebug() << xml->tokenType() << " STYLE->" << xml->name();
1133 }
1134 }
1135 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "EQUIPMENT")) {
1136 while (xml->readNext()) {
1137 if (xml->atEnd())
1138 break;
1139 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "EQUIPMENT")) {
1140 break;
1141 }
1142 /*
1143 * Ignore everything about equipment. Not usefull in a recipe, all calculations should
1144 * be done after import.
1145 */
1146 }
1147
1148 /*
1149 * Ingredients
1150 */
1151 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "HOPS")) {
1152 while (xml->readNext()) {
1153 if (xml->atEnd())
1154 break;
1155 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "HOPS")) {
1156 break;
1157 }
1158 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "HOP")) {
1159 /*
1160 * Process hop
1161 */
1162 Hops *newh = new Hops();
1163 while (xml->readNext()) {
1164 if (xml->atEnd())
1165 break;
1166 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "HOP")) {
1167 r->hops.append(*newh);
1168 delete newh;
1169 break;
1170 }
1171 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NAME")) {
1172 newh->name = xml->readElementText();
1173 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ORIGIN")) {
1174 newh->origin = xml->readElementText();
1175 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NOTES")) {
1176 newh->notes = xml->readElementText();
1177 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TIME")) {
1178 newh->time = xml->readElementText().toDouble();
1179 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "AMOUNT")) {
1180 newh->amount = xml->readElementText().toDouble();
1181 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "FORM")) {
1182 QString temp = xml->readElementText();
1183 if (temp == "Plug")
1184 newh->form = 1;
1185 else if (temp == "Leaf")
1186 newh->form = 2;
1187 else if (temp == "Leaf wet")
1188 newh->form = 3;
1189 else if (temp == "Cryo")
1190 newh->form = 4;
1191 else
1192 newh->form = 0;
1193 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ALPHA")) {
1194 newh->alpha = xml->readElementText().toDouble();
1195 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TYPE")) {
1196 QString temp = xml->readElementText();
1197 if (temp == "Aroma")
1198 newh->type = 1;
1199 else if (temp == "Both")
1200 newh->type = 2;
1201 else
1202 newh->type = 0;
1203 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "USE")) {
1204 QString temp = xml->readElementText();
1205 if (temp == "First wort")
1206 newh->useat = 1;
1207 else if (temp == "Boil")
1208 newh->useat = 2;
1209 else if (temp == "Aroma")
1210 newh->useat = 3;
1211 else if (temp == "Whirlpool")
1212 newh->useat = 4;
1213 else if (temp == "Dry hop")
1214 newh->useat = 5;
1215 else
1216 newh->useat = 0;
1217 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "BETA")) {
1218 newh->beta = xml->readElementText().toDouble();
1219 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "HSI")) {
1220 newh->hsi = xml->readElementText().toDouble();
1221 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "SUBSTITUTES")) {
1222 newh->substitutes = xml->readElementText();
1223 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "HUMULENE")) {
1224 newh->humulene = xml->readElementText().toDouble();
1225 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) &&
1226 ((xml->name() == "CARYOPHYLLENE") || (xml->name() == "CAROPHYLLENE"))) {
1227 newh->caryophyllene = xml->readElementText().toDouble();
1228 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "COHUMULONE")) {
1229 newh->cohumulone = xml->readElementText().toDouble();
1230 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MYRCENE")) {
1231 newh->myrcene = xml->readElementText().toDouble();
1232 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TOTAL_OIL")) {
1233 newh->total_oil = xml->readElementText().toDouble();
1234 }
1235 }
1236 }
1237 }
1238 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "FERMENTABLES")) {
1239 while (xml->readNext()) {
1240 if (xml->atEnd())
1241 break;
1242 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "FERMENTABLES")) {
1243 break;
1244 }
1245 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "FERMENTABLE")) {
1246 /*
1247 * Process fermentable
1248 */
1249 Fermentables *f = new Fermentables();
1250 while (xml->readNext()) {
1251 if (xml->atEnd())
1252 break;
1253 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "FERMENTABLE")) {
1254 r->fermentables.append(*f);
1255 delete f;
1256 break;
1257 }
1258 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (
1259 (xml->name() == "VERSION") || (xml->name() == "DISPLAY_STEP_TEMP") ||
1260 (xml->name() == "DISPLAY_AMOUNT") || (xml->name() == "COST") ||
1261 (xml->name() == "DISPLAY_COST") || (xml->name() == "INVENTORY") ||
1262 (xml->name() == "ALWAYS_ON_STOCK") || (xml->name() == "DISPLAY_COLOR") ||
1263 (xml->name() == "PERCENTAGE") || (xml->name() == "ADJUST_TO_TOTAL_100"))) {
1264 // Ignore.
1265 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NAME")) {
1266 f->name = xml->readElementText();
1267 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TYPE")) {
1268 QString temp = xml->readElementText();
1269 if (temp == "Sugar")
1270 f->type = 1;
1271 else if (temp == "Extract")
1272 f->type = 2;
1273 else if (temp == "Dry extract")
1274 f->type = 3;
1275 else if (temp == "Adjunct")
1276 f->type = 4;
1277 else
1278 f->type = 0;
1279 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ORIGIN")) {
1280 f->origin = xml->readElementText();
1281 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "SUPPLIER")) {
1282 f->supplier = xml->readElementText();
1283 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NOTES")) {
1284 f->notes = xml->readElementText();
1285 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "AMOUNT")) {
1286 f->amount = xml->readElementText().toDouble();
1287 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "YIELD")) {
1288 f->yield = xml->readElementText().toDouble();
1289 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "COARSE_FINE_DIFF")) {
1290 f->coarse_fine_diff = xml->readElementText().toDouble();
1291 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MOISTURE")) {
1292 f->moisture = xml->readElementText().toDouble();
1293 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "DIASTATIC_POWER")) {
1294 f->diastatic_power = xml->readElementText().toDouble();
1295 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MAX_IN_BATCH")) {
1296 f->max_in_batch = xml->readElementText().toDouble();
1297 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "RECOMMEND_MASH")) {
1298 f->recommend_mash = (xml->readElementText() == "TRUE") ? true:false;
1299 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "GRAINTYPE")) {
1300 QString temp = xml->readElementText();
1301 if (temp == "Roast")
1302 f->graintype = 1;
1303 else if (temp == "Crystal")
1304 f->graintype = 2;
1305 else if (temp == "Kilned")
1306 f->graintype = 3;
1307 else if (temp == "Sour Malt")
1308 f->graintype = 4;
1309 else if (temp == "Special")
1310 f->graintype = 5;
1311 else if (temp == "No malt")
1312 f->graintype = 6;
1313 else
1314 f->graintype = 0;
1315 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ADDED")) {
1316 QString temp = xml->readElementText();
1317 if (temp == "Boil")
1318 f->added = 1;
1319 else if (temp == "Fermentation")
1320 f->added = 2;
1321 else if (temp == "Lagering")
1322 f->added = 3;
1323 else if (temp == "Bottle")
1324 f->added = 4;
1325 else
1326 f->added = 0;
1327 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ADD_AFTER_BOIL")) {
1328 f->add_after_boil = (xml->readElementText() == "TRUE") ? true:false;
1329 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "COLOR")) {
1330 f->color = Utils::srm_to_ebc(xml->readElementText().toDouble());
1331 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "PROTEIN")) {
1332 f->protein = xml->readElementText().toDouble();
1333 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "DISSOLVED_PROTEIN")) {
1334 f->dissolved_protein = xml->readElementText().toDouble();
1335 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "DI_pH")) {
1336 f->di_ph = xml->readElementText().toDouble();
1337 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ACID_TO_pH_5.7")) {
1338 f->acid_to_ph_57 = xml->readElementText().toDouble();
1339 } else {
1340 if (xml->tokenType() == QXmlStreamReader::StartElement)
1341 qDebug() << xml->tokenType() << "FERMENTABLE->" << xml->name();
1342 }
1343 }
1344 }
1345 }
1346 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MISCS")) {
1347 while (xml->readNext()) {
1348 if (xml->atEnd())
1349 break;
1350 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "MISCS")) {
1351 break;
1352 }
1353 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MISC")) {
1354 /*
1355 * Process misc
1356 */
1357 Miscs *m = new Miscs();
1358 while (xml->readNext()) {
1359 if (xml->atEnd())
1360 break;
1361 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "MISC")) {
1362 r->miscs.append(*m);
1363 delete m;
1364 break;
1365 }
1366 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (
1367 (xml->name() == "VERSION") || (xml->name() == "DISPLAY_AMOUNT") ||
1368 (xml->name() == "FREE_FIELD") || (xml->name() == "FREE_FIELD_NAME") ||
1369 (xml->name() == "COST") || (xml->name() == "INVENTORY") ||
1370 (xml->name() == "DISPLAY_COST") ||
1371 (xml->name() == "ALWAYS_ON_STOCK") || (xml->name() == "DISPLAY_TIME"))) {
1372 // Ignore.
1373 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NAME")) {
1374 m->name = xml->readElementText();
1375 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NOTES")) {
1376 m->notes = xml->readElementText();
1377 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "AMOUNT")) {
1378 m->amount = xml->readElementText().toDouble();
1379 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "USE_FOR")) {
1380 m->use_for = xml->readElementText();
1381 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TYPE")) {
1382 QString temp = xml->readElementText();
1383 if (temp == "Herb")
1384 m->type = 1;
1385 else if (temp == "Flavor")
1386 m->type = 2;
1387 else if (temp == "Fining")
1388 m->type = 3;
1389 else if (temp == "Water agent")
1390 m->type = 4;
1391 else if (temp == "Yeast nutrient")
1392 m->type = 5;
1393 else if (temp == "Other")
1394 m->type = 6;
1395 else
1396 m->type = 0;
1397 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "USE")) {
1398 QString temp = xml->readElementText();
1399 if (temp == "Mash")
1400 m->use_use = 1;
1401 else if (temp == "Boil")
1402 m->use_use = 2;
1403 else if (temp == "Primary")
1404 m->use_use = 3;
1405 else if (temp == "Secondary")
1406 m->use_use = 4;
1407 else if (temp == "Bottling")
1408 m->use_use = 5;
1409 else
1410 m->use_use = 0;
1411 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "AMOUNT_IS_WEIGHT")) {
1412 m->amount_is_weight = (xml->readElementText() == "TRUE") ? true:false;
1413 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TIME")) {
1414 m->time = xml->readElementText().toDouble();
1415 } else {
1416 if (xml->tokenType() == QXmlStreamReader::StartElement)
1417 qDebug() << xml->tokenType() << " MISC->" << xml->name();
1418 }
1419 }
1420 }
1421 }
1422 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "YEASTS")) {
1423 while (xml->readNext()) {
1424 if (xml->atEnd())
1425 break;
1426 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "YEASTS")) {
1427 break;
1428 }
1429 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "YEAST")) {
1430 /*
1431 * Process yeast
1432 */
1433 Yeasts *y = new Yeasts();
1434 while (xml->readNext()) {
1435 if (xml->atEnd())
1436 break;
1437 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "YEAST")) {
1438 r->yeasts.append(*y);
1439 delete y;
1440 break;
1441 }
1442 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NAME")) {
1443 y->name = xml->readElementText();
1444 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "LABORATORY")) {
1445 y->laboratory = xml->readElementText();
1446 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "PRODUCT_ID")) {
1447 y->product_id = xml->readElementText();
1448 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NOTES")) {
1449 y->notes = xml->readElementText();
1450 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "BEST_FOR")) {
1451 y->best_for = xml->readElementText();
1452 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "AMOUNT")) {
1453 y->amount = xml->readElementText().toDouble();
1454 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TYPE")) {
1455 QString temp = xml->readElementText();
1456 if (temp == "Ale")
1457 y->type = 1;
1458 else if (temp == "Wheat")
1459 y->type = 2;
1460 else if (temp == "Wine")
1461 y->type = 3;
1462 else if (temp == "Champagne")
1463 y->type = 4;
1464 else if (temp == "Brett")
1465 y->type = 5;
1466 else if (temp == "Kveik")
1467 y->type = 6;
1468 else if (temp == "Hybrid")
1469 y->type = 7;
1470 else
1471 y->type = 0;
1472 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "FORM")) {
1473 QString temp = xml->readElementText();
1474 if (temp == "Dry")
1475 y->form = 1;
1476 else if (temp == "Slant")
1477 y->form = 2;
1478 else if (temp == "Culture")
1479 y->form = 3;
1480 else if (temp == "Frozen")
1481 y->form = 4;
1482 else if (temp == "Bottle")
1483 y->form = 5;
1484 else if (temp == "Dried")
1485 y->form = 6;
1486 else
1487 y->form = 0;
1488 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "FLOCCULATION")) {
1489 QString temp = xml->readElementText();
1490 if (temp == "Medium")
1491 y->flocculation = 1;
1492 else if (temp == "High")
1493 y->flocculation = 1;
1494 else if (temp == "Very high")
1495 y->flocculation = 3;
1496 else
1497 y->flocculation = 0;
1498 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MIN_TEMPERATURE")) {
1499 y->min_temperature = xml->readElementText().toDouble();
1500 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MAX_TEMPERATURE")) {
1501 y->max_temperature = xml->readElementText().toDouble();
1502 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "ATTENUATION")) {
1503 y->attenuation = xml->readElementText().toDouble();
1504 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MAX_REUSE")) {
1505 y->max_reuse = xml->readElementText().toInt();
1506 }
1507 }
1508 }
1509 }
1510 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MASH")) {
1511 while (xml->readNext()) {
1512 if (xml->atEnd())
1513 break;
1514 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "MASH")) {
1515 break;
1516 }
1517 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (
1518 (xml->name() == "VERSION") || (xml->name() == "NOTES") ||
1519 (xml->name() == "GRAIN_TEMP") || (xml->name() == "TUN_TEMP") ||
1520 (xml->name() == "SG_LAST_RUNNINGS") || (xml->name() == "PH_LAST_RUNNINGS") ||
1521 (xml->name() == "TUN_WEIGHT") || (xml->name() == "TUN_SPECIFIC_HEAT") ||
1522 (xml->name() == "EQUIP_ADJUST"))) {
1523 // Ignore.
1524 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NAME")) {
1525 r->mash_name = xml->readElementText();
1526 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "PH")) {
1527 r->mash_ph = xml->readElementText().toDouble();
1528 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "SPARGE_TEMP")) {
1529 r->sparge_temp = xml->readElementText().toDouble();
1530 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MASH_STEPS")) {
1531 while (xml->readNext()) {
1532 if (xml->atEnd())
1533 break;
1534 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "MASH_STEPS")) {
1535 break;
1536 }
1537 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MASH_STEP")) {
1538 /*
1539 * Process mash step
1540 */
1541 MashSteps *ms = new MashSteps();
1542 while (xml->readNext()) {
1543 if (xml->atEnd())
1544 break;
1545 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "MASH_STEP")) {
1546 r->mashs.append(*ms);
1547 delete ms;
1548 break;
1549 }
1550 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (
1551 (xml->name() == "VERSION") || (xml->name() == "DISPLAY_STEP_TEMP") ||
1552 (xml->name() == "PH") || (xml->name() == "WATER_GRAIN_RATIO") ||
1553 (xml->name() == "DECOCTION_AMT") || (xml->name() == "INFUSE_TEMP") ||
1554 (xml->name() == "INFUSE_AMOUNT") || (xml->name() == "DISPLAY_INFUSE_AMT")
1555 )) {
1556 // Ignore.
1557 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NAME")) {
1558 ms->step_name = xml->readElementText();
1559 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TYPE")) {
1560 QString temp = xml->readElementText();
1561 if (temp == "Infusion")
1562 ms->step_type = 0;
1563 else if (temp == "Temperature")
1564 ms->step_type = 1;
1565 else if (temp == "Decoction")
1566 ms->step_type = 2;
1567 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "STEP_TEMP")) {
1568 ms->step_temp = xml->readElementText().toDouble();
1569 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "END_TEMP")) {
1570 ms->end_temp = xml->readElementText().toDouble();
1571 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "STEP_TIME")) {
1572 ms->step_time = xml->readElementText().toDouble();
1573 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "RAMP_TIME")) {
1574 ms->ramp_time = xml->readElementText().toDouble();
1575 } else {
1576 if (xml->tokenType() == QXmlStreamReader::StartElement)
1577 qDebug() << xml->tokenType() << " MASH_STEP->" << xml->name();
1578 }
1579 }
1580 }
1581 }
1582 } else {
1583 if (xml->tokenType() == QXmlStreamReader::StartElement)
1584 qDebug() << xml->tokenType() << " MASH->" << xml->name();
1585 }
1586 }
1587 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "WATERS")) {
1588 int waterno = 0;
1589 while (xml->readNext()) {
1590 if (xml->atEnd())
1591 break;
1592 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "WATERS")) {
1593 break;
1594 }
1595 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "WATER")) {
1596 /*
1597 * Process water
1598 */
1599 while (xml->readNext()) {
1600 if (xml->atEnd())
1601 break;
1602 if ((xml->tokenType() == QXmlStreamReader::EndElement) && (xml->name() == "WATER")) {
1603 waterno++;
1604 break;
1605 }
1606 if ((xml->tokenType() == QXmlStreamReader::StartElement) && (
1607 (xml->name() == "VERSION") || (xml->name() == "DISPLAY_STEP_TEMP") ||
1608 (xml->name() == "NOTES") || (xml->name() == "DISPLAY_AMOUNT") ||
1609 (xml->name() == "ALWAYS_ON_STOCK") || (xml->name() == "DEFAULT_WATER")
1610 )) {
1611 // Ignore.
1612 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "NAME")) {
1613 if (waterno)
1614 r->w2_name = xml->readElementText();
1615 else
1616 r->w1_name = xml->readElementText();
1617 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "PH")) {
1618 if (waterno)
1619 r->w2_ph = xml->readElementText().toDouble();
1620 else
1621 r->w1_ph = xml->readElementText().toDouble();
1622 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "AMOUNT")) {
1623 if (waterno)
1624 r->w2_amount = xml->readElementText().toDouble();
1625 else
1626 r->w1_amount = xml->readElementText().toDouble();
1627 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "CALCIUM")) {
1628 if (waterno)
1629 r->w2_calcium = xml->readElementText().toDouble();
1630 else
1631 r->w1_calcium = xml->readElementText().toDouble();
1632 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "BICARBONATE")) {
1633 if (waterno)
1634 r->w2_total_alkalinity = 1.22 * xml->readElementText().toDouble();
1635 else
1636 r->w1_total_alkalinity = 1.22 * xml->readElementText().toDouble();
1637 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "SULFATE")) {
1638 if (waterno)
1639 r->w2_sulfate = xml->readElementText().toDouble();
1640 else
1641 r->w1_sulfate = xml->readElementText().toDouble();
1642 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "CHLORIDE")) {
1643 if (waterno)
1644 r->w2_chloride = xml->readElementText().toDouble();
1645 else
1646 r->w1_chloride = xml->readElementText().toDouble();
1647 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "SODIUM")) {
1648 if (waterno)
1649 r->w2_sodium = xml->readElementText().toDouble();
1650 else
1651 r->w1_sodium = xml->readElementText().toDouble();
1652 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MAGNESIUM")) {
1653 if (waterno)
1654 r->w2_magnesium = xml->readElementText().toDouble();
1655 else
1656 r->w1_magnesium = xml->readElementText().toDouble();
1657 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "TOTAL_ALKALINITY")) {
1658 if (waterno)
1659 r->w2_total_alkalinity = xml->readElementText().toDouble();
1660 else
1661 r->w1_total_alkalinity = xml->readElementText().toDouble();
1662 } else {
1663 if (xml->tokenType() == QXmlStreamReader::StartElement)
1664 qDebug() << xml->tokenType() << " WATER->" << xml->name();
1665 }
1666 }
1667 }
1668 }
957 } else { 1669 } else {
958 if (xml->tokenType() == QXmlStreamReader::StartElement) 1670 if (xml->tokenType() == QXmlStreamReader::StartElement)
959 qDebug() << "2 " << xml->tokenType() << xml->name(); 1671 qDebug() << xml->tokenType() << " RECIPE" << xml->name();
960 } 1672 }
961 } 1673 }
962 } 1674 }
963 } 1675 }
964 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MASHS")) { 1676 } else if ((xml->tokenType() == QXmlStreamReader::StartElement) && (xml->name() == "MASHS")) {

mercurial