Package com.bestfit.server

Source Code of com.bestfit.server.RpcImpl

package com.bestfit.server;
import java.util.Calendar;
import javax.jdo.Query;
import javax.jdo.PersistenceManager;

import com.bestfit.client.*;
import com.bestfit.data.*;
import com.bestfit.shared.Bridge;

import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

@SuppressWarnings("serial")
public class RpcImpl extends RemoteServiceServlet implements RpcServices {

  // private static final Logger LOG =
  // Logger.getLogger(RpcImpl.class.getName());

  private static final PersistenceManagerFactory PMF = JDOHelper
      .getPersistenceManagerFactory("transactions-optional");

  private PersistenceManager getPersistenceManager() {
    return PMF.getPersistenceManager();
  }

  public String registerUser(Bridge msg) throws IllegalArgumentException {

    Users a = new Users(msg.email, msg.firstName, msg.lastName, msg.age,
        msg.height, msg.weight, msg.gender);

    PersistenceManager pm = getPersistenceManager();

    try {
      pm.makePersistent(a);
    } finally {
      pm.close();
    }

    return "success";
  }

  @Override
  public String getCurrentWeight() throws IllegalArgumentException {

    String currentWeight = "";

    PersistenceManager pm = getPersistenceManager();

    try {
      Query q = pm.newQuery(Weight.class, "email == u");
      q.declareParameters("com.bestfit.data.Weight u");

      List<Weight> weights = (List<Weight>) q.execute(getLoggedinUserEmail());

      if (weights != null) {

        if (weights.size() > 0) {
          currentWeight = String.valueOf(weights.get(
              weights.size() - 1).getWeight());
        } else {
          currentWeight = "New User";
        }

      }

    } finally {
      pm.close();
    }

    return currentWeight;
  }

  @Override
  public boolean isNewUser() throws IllegalArgumentException {

    boolean Found = false;

    PersistenceManager pm = getPersistenceManager();

    try {
      Query q = pm.newQuery(Users.class, "email == u");
      q.declareParameters("com.bestfit.data.Users u");

      List<Users> Users = (List<Users>) q.execute(getLoggedinUserEmail());

      if (Users.size() > 0) {
        Found = false;
      } else {
        Found = true;
      }

    } finally {
      pm.close();
    }

    return Found;
  }

  @Override
  public String getEmail() throws IllegalArgumentException {

    UserService userService = UserServiceFactory.getUserService();
    User user = userService.getCurrentUser();
    String email = "";

    if (user != null) {
      email = user.getEmail();

    }
    return email;
  }

  @Override
  public Bridge getUserProfile() throws IllegalArgumentException {

    Bridge _msg = new Bridge();

    PersistenceManager pm = getPersistenceManager();

    try {
      Query q = pm.newQuery(Users.class, "email == u");
      q.declareParameters("com.bestfit.data.Users u");

      List<Users> Users = (List<Users>) q.execute(getLoggedinUserEmail());

      if (Users != null) {
        for (Users user2 : Users) {
          _msg.firstName = user2.getFirstName();
          _msg.lastName = user2.getLastName();
          _msg.email = user2.getEmail();
          _msg.gender = user2.getGender();
          _msg.height = user2.getHeight();

          if (getCurrentWeight().equals("New User"))
            _msg.weight = user2.getWeight();
          else
            _msg.weight = Double.valueOf(getCurrentWeight());

          _msg.age = user2.getAge();
        }
      }

    } finally {
      pm.close();
    }

    return _msg;

  }

  @Override
  public Bridge getUserMeals(Bridge _msgIn) throws IllegalArgumentException {
    Date date = _msgIn.startDate;
    Bridge _msg = new Bridge();
    _msg.email = getLoggedinUserEmail();
    PersistenceManager pm = getPersistenceManager();

    try {
     
      Calendar calender = Calendar.getInstance();
      calender.setTime(date);
      calender.set(Calendar.HOUR_OF_DAY, 0);
      calender.set(Calendar.MINUTE, 0);
      calender.set(Calendar.SECOND, 0);
      calender.set(Calendar.MILLISECOND, 0);
     
     
      Query q = pm.newQuery(Meal.class, "email == e && dateOfMeal >= today");
      q.declareParameters("java.lang.String e, java.util.Date today");

      List<Meal> meals = (List<Meal>) q.execute(getLoggedinUserEmail(),calender.getTime());

      q = pm.newQuery(FoodItem.class);
      List<FoodItem> foods = (List<FoodItem>) q.execute();

      ArrayList<Meal> newMeals = new ArrayList<Meal>();
      for (Meal meal : meals) {
        Meal newMeal = new Meal(meal.getEmail(), meal.getLabel(), meal.getDateOfMeal());
        newMeal.setId(meal.getId());
        for (String name : meal.getFoodItemNamesList())
          for (FoodItem item : foods)
            if (item.getName().equals(name)) {
              for (int i = 0; i < meal.getQuantity(meal.indexOfFoodItemByName(name)); i++)
                newMeal.addFoodItem(item);
              break;
            }
        newMeals.add(newMeal);
      }
      System.out.println("Server(RpcImpl.getUserMeals): Query returned "
          + newMeals.size() + " results.");
      _msg.meals = newMeals;
    } finally {
      pm.close();
    }

    return _msg;
  }

  @Override
  public boolean saveUserMeal(Bridge msg) throws IllegalArgumentException {

    Meal meal = msg.meal;
    meal.setEmail(getLoggedinUserEmail());
    System.out
        .println("Server(RpcImpl.saveUserMeal): Newest meal received is "
            + meal.toString());
    // meal.setLabel(meal.getLabel() + ":" + meal.getEmail());

    PersistenceManager pm = getPersistenceManager();
    if (meal != null)
      try {

        pm.makePersistent(meal);
        // pm.makeTransient(meal);
        System.out
            .println("Server(RpcImpl.saveUserMeal): Meal made persistent.");
        return true;
      } finally {
        pm.close();
      }
    System.err
        .println("Server(RpcImpl.saveUserMeal): Meal could not be made persistent.");
    return false;
  }

  @Override
  public Bridge getFoodItems() throws IllegalArgumentException {
    Bridge _msg = new Bridge();
    PersistenceManager pm = getPersistenceManager();
    try {
      Query q = pm.newQuery(FoodItem.class);
      List<FoodItem> foods = (List<FoodItem>) q.execute();
      if (foods == null) {
        _msg.foods = new ArrayList<FoodItem>();
        System.err
            .println("Server(RpcImpl.getFoodItems): Query returned null.");
      } else {
        System.out
            .println("Server(RpcImpl.getFoodItems): Query returned "
                + foods.size() + " results.");
        _msg.foods = new ArrayList<FoodItem>(foods);
      }

    } finally {
      pm.close();
    }
    return _msg;
  }

  @Override
  public boolean saveFoodItem(Bridge msg) throws IllegalArgumentException {
    FoodItem foodItem = msg.foodItem;
    System.out.println("Server(RpcImpl.saveFoodItem): Item received is "
        + foodItem.toString());
    PersistenceManager pm = getPersistenceManager();
    if (foodItem != null)
      try {
        pm.makePersistent(foodItem);
        System.out
            .println("Server(RpcImpl.saveFoodItem): Item made persistent.");
        return true;
      } finally {
        pm.close();
      }
    System.err
        .println("Server(RpcImpl.saveFoodItem): Item could not be made persistent.");
    return false;
  }

  @Override
  public double getBMR() throws IllegalArgumentException {

    Bridge _msg = new Bridge();

    double BMR = 0.0;

    PersistenceManager pm = getPersistenceManager();

    try {
      Query q = pm.newQuery(Users.class, "email == u");
      q.declareParameters("com.bestfit.data.Users u");

      List<Users> Users = (List<Users>) q.execute(getLoggedinUserEmail());

      if (Users != null) {
        for (Users user2 : Users) {

          _msg.gender = user2.getGender();
          _msg.height = user2.getHeight();
          _msg.weight = user2.getWeight();
          _msg.age = user2.getAge();

          // Men: BMR = (Weight x 42) + (Height x 17.5) - (Age x
          // 9.5) + 93
          // Women: BMR = (Weight x 29.5) + (Height x 6.5) - (Age
          // x 6.5) + 917

          if (user2.getGender().equals("Male")) {
            BMR = (user2.getWeight() * 8.7)
                + (user2.getHeight() * 17.5)
                - (user2.getAge() * 9.5) + 93;
          } else {

            BMR = (user2.getWeight() * 6)
                + (user2.getHeight() * 6.5)
                - (user2.getAge() * 6.5) + 917;
          }
        }
      }

    } finally {
      pm.close();
    }

    return BMR;
  }

  @Override
  public String storeGoal(Bridge msg) throws IllegalArgumentException {
         
    GoalHistory a = new GoalHistory(getLoggedinUserEmail(),msg.startDate,msg.targetDate,msg.targetWeight);

    PersistenceManager pm = getPersistenceManager();

    try {
      pm.makePersistent(a);
    } finally {
      pm.close();
    }

    return "success";
  }

  @Override
  public Bridge getGoalHistory() throws IllegalArgumentException {

    Bridge _msg = new Bridge();

    PersistenceManager pm = getPersistenceManager();

    try {
      Query q = pm.newQuery(GoalHistory.class, "email == u Order by startDate asc");
      q.declareParameters("com.bestfit.data.GoalHistory u");

      List<GoalHistory> goals = (List<GoalHistory>) q.execute(getLoggedinUserEmail());

      if (goals != null) {

        System.out.print(goals.size());
        _msg.goals = new ArrayList<GoalHistory>(goals);
      }

    } finally {
      pm.close();
    }

    return _msg;
  }

  @Override
  public String storeNewWeight(Double weight, Date currentDate)
      throws IllegalArgumentException {
   
    Weight a = new Weight(getLoggedinUserEmail(),weight,currentDate);

    PersistenceManager pm = getPersistenceManager();

    try {
      pm.makePersistent(a);
    } finally {
      pm.close();
    }

    return "success";
  }

  @Override
  public Bridge getWeightHistory() throws IllegalArgumentException {

    Bridge _msg = new Bridge();

    PersistenceManager pm = getPersistenceManager();

    try {
      Query q = pm.newQuery(Weight.class, "email == u");
      q.declareParameters("java.lang.String u");

      List<Weight> weights = (List<Weight>) q.execute(getLoggedinUserEmail());

      if (weights != null) {
        _msg.weightHistory = new ArrayList<Weight>(weights);
      }

    } finally {
      pm.close();
    }

    return _msg;
  }
 
  public String getLoggedinUserEmail(){
    UserService userService = UserServiceFactory.getUserService();
    User user = userService.getCurrentUser();
    return user.getEmail();
  }
 
  @Override
  public Bridge getUserWorkouts(Bridge _msgIn) throws IllegalArgumentException {
    Date date = _msgIn.startDate;
    Bridge _msg = new Bridge();

    _msg.email = getLoggedinUserEmail();
    PersistenceManager pm = getPersistenceManager();
    try {
     
      Calendar calender = Calendar.getInstance();
      calender.setTime(date);
      calender.set(Calendar.HOUR_OF_DAY, 0);
      calender.set(Calendar.MINUTE, 0);
      calender.set(Calendar.SECOND, 0);
      calender.set(Calendar.MILLISECOND, 0);
     
      Query q = pm.newQuery(Workout.class, "email == e && dateOfWorkout >= today");
      q.declareParameters("java.lang.String e, java.util.Date today");
      List<Workout> workouts = (List<Workout>) q.execute(getLoggedinUserEmail(),calender.getTime());

      q = pm.newQuery(ExerciseItem.class);
      List<ExerciseItem> exercises = (List<ExerciseItem>) q.execute();

      ArrayList<Workout> newWorkouts = new ArrayList<Workout>();
      for (Workout workout : workouts) {
        Workout newWorkout = new Workout(workout.getEmail(), workout.getLabel(), workout.getDateOfWorkout());
        newWorkout.setId(workout.getId());
        for (String name : workout.getExerciseItemNamesList())
          for (ExerciseItem item : exercises)
            if (item.getName().equals(name)) {
              for (int i = 0; i < workout.getDuration(workout.indexOfExerciseItemByName(name)); i += 5)
                newWorkout.addExerciseItem(item);
              break;
            }
        newWorkouts.add(newWorkout);
      }
      System.out.println("Server(RpcImpl.getUserWorkouts): Query returned "
          + newWorkouts.size() + " results.");
      _msg.workouts = newWorkouts;
    } finally {
      pm.close();
    }

    return _msg;
  }

  @Override
  public boolean saveUserWorkout(Bridge msg) throws IllegalArgumentException {

    Workout workout = msg.workout;
    workout.setEmail(getLoggedinUserEmail());
    System.out
        .println("Server(RpcImpl.saveUserWorkout): Newest workout received is "
            + workout.toString());

    PersistenceManager pm = getPersistenceManager();
    if (workout != null)
      try {
        pm.makePersistent(workout);
        System.out
            .println("Server(RpcImpl.saveUserWorkout): Workout made persistent.");
        return true;
      } finally {
        pm.close();
      }
    System.err
        .println("Server(RpcImpl.saveUserWorkout): Workout could not be made persistent.");
    return false;
  }

  @Override
  public Bridge getExerciseItems() throws IllegalArgumentException {
    Bridge _msg = new Bridge();
    PersistenceManager pm = getPersistenceManager();
    try {
      Query q = pm.newQuery(ExerciseItem.class);
      List<ExerciseItem> exercises = (List<ExerciseItem>) q.execute();
      if (exercises == null) {
        _msg.exercises = new ArrayList<ExerciseItem>();
        System.err
            .println("Server(RpcImpl.getExerciseItems): Query returned null.");
      } else {
        System.out
            .println("Server(RpcImpl.getExerciseItems): Query returned "
                + exercises.size() + " results.");
        _msg.exercises = new ArrayList<ExerciseItem>(exercises);
      }

    } finally {
      pm.close();
    }
    return _msg;
  }

  @Override
  public boolean saveExerciseItem(Bridge msg) throws IllegalArgumentException {
    ExerciseItem exerciseItem = msg.exercise;
    System.out.println("Server(RpcImpl.saveExerciseItem): Item received is "
        + exerciseItem.toString());
    PersistenceManager pm = getPersistenceManager();
    if (exerciseItem != null)
      try {
        pm.makePersistent(exerciseItem);
        System.out
            .println("Server(RpcImpl.saveExerciseItem): Item made persistent.");
        return true;
      } finally {
        pm.close();
      }
    System.err
        .println("Server(RpcImpl.saveExerciseItem): Item could not be made persistent.");
    return false;
  }

  @Override
  public String getUserName() throws IllegalArgumentException {
    String Name = "";

    PersistenceManager pm = getPersistenceManager();

    try {
      Query q = pm.newQuery(Users.class, "email == u");
      q.declareParameters("com.bestfit.data.Users u");

      List<Users> users = (List<Users>) q.execute(getLoggedinUserEmail());

      if (users != null) {

        if (users.size() > 0) {
          Name = users.get(users.size() - 1).getFirstName();
        } else {
          Name = "New User";
        }
System.out.println(Name);
      }

    } finally {
      pm.close();
    }

    return Name;
  }


}
TOP

Related Classes of com.bestfit.server.RpcImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.