@Override public void onDialogPositiveClick(DialogFragment dialog) { // User touched the dialog's positive button - "Add to Meal" FoodInfoFragment frag = (FoodInfoFragment) dialog; if (replacedFood == null) { // First prompt for density or servings if (frag.food.usesMass()) { if (FoodItem.getAllDensities() == null) { displayToast("Error: Cannot access densities.", this); return; } findDensityMatches(frag.food); } else if (!frag.food.usesVolume()) { DialogFragment servingsDialog = FoodServingFragment.newInstance(frag.food, false); servingsDialog.show(getFragmentManager(), "FoodServingFragment"); } else { // Only uses volume, nothing else needed meal.addFoodItem(frag.food); displayToast("Added to meal.", this); saveAndFinish(); } } else { // Replace previously added food item if (frag.food.usesMass()) { if (FoodItem.getAllDensities() == null) { displayToast("Error: Cannot access densities.", this); return; } findDensityMatches(frag.food); } else if (!frag.food.usesVolume()) { DialogFragment servingsDialog = FoodServingFragment.newInstance(frag.food, false); servingsDialog.show(getFragmentManager(), "FoodServingFragment"); } else { // Only uses volume, nothing else needed meal.replaceFoodItem(replacedFood, frag.food); displayToast("Replaced food item.", this); saveAndFinish(); } } }
@Override protected Map<String, Double> doInBackground(Void... params) { Map<String, Double> results = new HashMap<>(); for (Map.Entry<String, Double> entry : FoodItem.getAllDensities().entrySet()) { String[] words = food.getName().split("\\s+"); for (String word : words) { // boolean contains = entry.getKey().toLowerCase().matches(".*\\b" + word.toLowerCase() + // "\\b.*"); String cleanedWord = word.replaceAll("[^\\w]", ""); if (cleanedWord.equals("")) { continue; } boolean contains = entry.getKey().toLowerCase().matches(".*\\b" + cleanedWord.toLowerCase() + "\\b.*"); if (contains) { results.put(entry.getKey(), entry.getValue()); } } } return results; }