bool Store::anyRecipeReferences(int id) { vector<Food> *v = getInSortedOrder(); for (int i = 0; i < v->size(); i++) { Food food = v->operator[](i); if (food.isRecipe()) { vector<int> ingredients = food.getIngredients(); for (int j = 0; j < ingredients.size(); j++) { if (ingredients[j] == id) { delete v; return true; } } } } delete v; return false; }
void Store::initializeFoods() { vector<Food> *foods = fileIO->load(filename); std::cout << "size of foods: " << foods->size() << "\n"; for (int i = 0; i < foods->size(); i++) { Food food = foods->operator[](i); bst->insert(food); if (food.getId() > maxId) { maxId = food.getId(); } numFoods++; } for (int i = 0; i < foods->size(); i++) { Food food = foods->operator[](i); if (foodWithIdExists(food.getId())) { std::stringstream s; s << "Food " << food.getName() << " referencing duplicate ID " << food.getId(); throw s.str(); } hashBrownTable.insertItem(food.getId(), bst->get(food)); } // check nutrients for (int i = 0; i < foods->size(); i++) { // has to work with BST Food food = foods->operator[](i); if (food.isRecipe()) { vector<int> ingredients = food.getIngredients(); vector<Food> ingredientsFood; for (int i = 0; i < ingredients.size(); i++) { int id = ingredients[i]; if (!foodWithIdExists(id)) { std::stringstream s; s << "Food " << food.getName() << " referencing invalid id " << id; throw s.str(); } else { ingredientsFood.push_back(getById(id)); } } food.calculateNutrients(ingredientsFood); } } }