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")) { |