package com.delect.motiver.server.util; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import com.delect.motiver.server.jdo.nutrition.FoodJDO; import com.delect.motiver.server.jdo.nutrition.FoodName; import com.delect.motiver.server.jdo.nutrition.MealJDO; import com.delect.motiver.server.jdo.nutrition.TimeJDO; import com.delect.motiver.shared.NutritionDayModel; public class NutritionUtils { /** * Logger for this class */ private static final Logger logger = Logger.getLogger(NutritionUtils.class.getName()); /** * Calculates energy from times (searches meals and foods) * @param pm * @param times * @return */ public static NutritionDayModel calculateEnergyFromTimes(List<TimeJDO> times) { if(logger.isLoggable(Level.FINE)) { logger.log(Level.FINE, "Calculating total energy: ("+times.size()+")"); } double energy = 0; double protein = 0; double carbs = 0; double fet = 0; try { //each time for(TimeJDO tClient : times) { //each meal for(MealJDO m : tClient.getMealsNew()) { if(m.getFoods() != null) { for(FoodJDO food : m.getFoods()) { final double amount = food.getAmount(); final FoodName name = food.getName(); if(name != null) { energy += (name.getEnergy() / 100) * amount; protein += (name.getProtein() / 100) * amount; carbs += (name.getCarb() / 100) * amount; fet += (name.getFet() / 100) * amount; } } } } if(tClient.getFoods() != null) { for(FoodJDO food : tClient.getFoods()) { final double amount = food.getAmount(); final FoodName name = food.getName(); if(name != null) { energy += (name.getEnergy() / 100) * amount; protein += (name.getProtein() / 100) * amount; carbs += (name.getCarb() / 100) * amount; fet += (name.getFet() / 100) * amount; } } } } } catch (Exception e1) { logger.log(Level.SEVERE, "calculateEnergyFromTimes", e1); } return new NutritionDayModel(energy, protein, carbs, fet); } }