public UserVO getUserByEmail(String email) throws AppException { try { PersistenceManager pm = PMF.get().getPersistenceManager(); // search based on email String query = "select from " + UserVO.class.getName() + " where email == '" + email + "'"; List<UserVO> usersList = (List<UserVO>) pm.newQuery(query).execute(); if (usersList.isEmpty()) { return null; } return usersList.get(0); } catch (Exception e) { throw new AppException("Error while retrieving User with email: '" + email + "'.", e); } }
public UserVO persistUser(UserVO userVO) throws AppException { PersistenceManager pm = PMF.get().getPersistenceManager(); try { Date now = new Date(); if (userVO.getId() != null) { // update existing user UserVO userFromDataStore = pm.getObjectById(UserVO.class, userVO.getId()); if (!userFromDataStore.getPassword().equals(userVO.getPassword())) { // change the password userFromDataStore.setPassword(userVO.getPassword()); } if (userFromDataStore .getMatrimonyProfile() .getContact() .getLastChangedOn() .before(userVO.getMatrimonyProfile().getContact().getLastChangedOn())) { // Contact Info is changed - update Contact VO userFromDataStore .getMatrimonyProfile() .getContact() .copy(userVO.getMatrimonyProfile().getContact()); userFromDataStore.getMatrimonyProfile().getContact().setLastChangedOn(now); } if (userFromDataStore .getMatrimonyProfile() .getEducationCareer() .getLastChangedOn() .before(userVO.getMatrimonyProfile().getEducationCareer().getLastChangedOn())) { // Education Career Info is changed - update Education Career VO userFromDataStore .getMatrimonyProfile() .getEducationCareer() .copy(userVO.getMatrimonyProfile().getEducationCareer()); userFromDataStore.getMatrimonyProfile().getEducationCareer().setLastChangedOn(now); } if (userFromDataStore .getMatrimonyProfile() .getFamily() .getLastChangedOn() .before(userVO.getMatrimonyProfile().getFamily().getLastChangedOn())) { // Family Info is changed - update Family VO userFromDataStore .getMatrimonyProfile() .getFamily() .copy(userVO.getMatrimonyProfile().getFamily()); userFromDataStore.getMatrimonyProfile().getFamily().setLastChangedOn(now); } if (userFromDataStore .getMatrimonyProfile() .getHoroscope() .getLastChangedOn() .before(userVO.getMatrimonyProfile().getHoroscope().getLastChangedOn())) { // Horoscope Info is changed - update Horoscope VO userFromDataStore .getMatrimonyProfile() .getHoroscope() .copy(userVO.getMatrimonyProfile().getHoroscope()); userFromDataStore.getMatrimonyProfile().getHoroscope().setLastChangedOn(now); } if (userFromDataStore .getMatrimonyProfile() .getPersonal() .getLastChangedOn() .before(userVO.getMatrimonyProfile().getPersonal().getLastChangedOn())) { // Personal Info is changed - update Personal Info VO userFromDataStore .getMatrimonyProfile() .getPersonal() .copy(userVO.getMatrimonyProfile().getPersonal()); userFromDataStore.getMatrimonyProfile().getPersonal().setLastChangedOn(now); } if (userFromDataStore .getMatrimonyProfile() .getSoulMate() .getLastChangedOn() .before(userVO.getMatrimonyProfile().getSoulMate().getLastChangedOn())) { // Soul Mate Info is changed - update Soul Mate VO userFromDataStore .getMatrimonyProfile() .getSoulMate() .copy(userVO.getMatrimonyProfile().getSoulMate()); userFromDataStore.getMatrimonyProfile().getSoulMate().setLastChangedOn(now); } if (userFromDataStore .getMatrimonyProfile() .getPhotoVO() .getLastChangedOn() .before(userVO.getMatrimonyProfile().getPhotoVO().getLastChangedOn())) { // Photo is changed - update Photo VO userFromDataStore .getMatrimonyProfile() .getPhotoVO() .copy(userVO.getMatrimonyProfile().getPhotoVO()); userFromDataStore.getMatrimonyProfile().getPhotoVO().setLastChangedOn(now); } // return the UserVO by copying data from UserVO fetched from Data Store // return userVO.copy(userFromDataStore); return userFromDataStore; } else { // new user - set last changed on date userVO.setLastChangedOn(now); userVO.getMatrimonyProfile().getContact().setLastChangedOn(now); userVO.getMatrimonyProfile().getEducationCareer().setLastChangedOn(now); userVO.getMatrimonyProfile().getFamily().setLastChangedOn(now); userVO.getMatrimonyProfile().getHoroscope().setLastChangedOn(now); userVO.getMatrimonyProfile().getPersonal().setLastChangedOn(now); userVO.getMatrimonyProfile().getSoulMate().setLastChangedOn(now); userVO.getMatrimonyProfile().getPhotoVO().setLastChangedOn(now); pm.makePersistent(userVO); return userVO; } } catch (Exception e) { e.printStackTrace(); throw new AppException("Could not save user information.", e); } finally { pm.close(); } }