package org.mbhcare.server;
import java.util.List;
import java.util.logging.Logger;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import org.mbhcare.client.LoginInfo;
import org.mbhcare.client.LoginService;
import org.mbhcare.shared.entity.MbhUser;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class LoginServiceImpl extends RemoteServiceServlet implements
LoginService {
private static final long serialVersionUID = 1L;
private static final Logger log =
Logger.getLogger(DiagnosisServiceImpl.class.getName());
@SuppressWarnings("unchecked")
public LoginInfo login(String requestUri) {
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
LoginInfo loginInfo = new LoginInfo();
if (user != null) {
loginInfo.setLoggedIn(true);
loginInfo.setEmailAddress(user.getEmail());
loginInfo.setNickname(user.getNickname());
loginInfo.setLogoutUrl(userService.createLogoutURL(requestUri));
log.warning("email and nickname :" + user.getEmail() + "," + user.getNickname());
PersistenceManager pm = PMF.get().getPersistenceManager();
Query query = pm.newQuery(MbhUser.class);
query.setFilter("emailAddress == :email");
List<MbhUser> existences = (List<MbhUser>)query.execute(user.getEmail());
if (existences.size() == 0) {
MbhUser newUser = new MbhUser();
newUser.setEmailAddress(user.getEmail());
pm.makePersistent(newUser);
} else {
loginInfo.setName(existences.get(0).getName());
loginInfo.setAuthorize(existences.get(0).getAuthorize());
log.warning("name :" + existences.get(0).getName()
+ ", authorize: " + Byte.toString(existences.get(0).getAuthorize()));
}
} else {
loginInfo.setLoggedIn(false);
loginInfo.setLoginUrl(userService.createLoginURL(requestUri));
}
return loginInfo;
}
public static String getAcccout() {
String account = "";
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
if (user != null) {
account = user.getEmail();
}
return account;
}
public static boolean isLoggedIn() {
UserService userService = UserServiceFactory.getUserService();
return userService.isUserLoggedIn();
}
}