package fi.otavanopisto.muikku.dao.users; import java.util.Date; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import fi.otavanopisto.muikku.dao.CoreDAO; import fi.otavanopisto.muikku.model.base.SchoolDataSource; import fi.otavanopisto.muikku.model.users.UserEntity; public class UserEntityDAO extends CoreDAO<UserEntity> { private static final long serialVersionUID = 3790128454976388680L; public UserEntity create(Boolean archived, SchoolDataSource defaultSchoolDataSource, String defaultIdentifier, String locale) { UserEntity userEntity = new UserEntity(); userEntity.setArchived(archived); userEntity.setDefaultIdentifier(defaultIdentifier); userEntity.setDefaultSchoolDataSource(defaultSchoolDataSource); userEntity.setLocale(locale); return persist(userEntity); } public List<UserEntity> listByUserNotIn(List<UserEntity> users) { EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<UserEntity> criteria = criteriaBuilder.createQuery(UserEntity.class); Root<UserEntity> root = criteria.from(UserEntity.class); criteria.select(root); if (!users.isEmpty()) { criteria.where(criteriaBuilder.not(root.in(users))); } return entityManager.createQuery(criteria).getResultList(); } public UserEntity updateLastLogin(UserEntity userEntity) { userEntity.setLastLogin(new Date()); getEntityManager().persist(userEntity); return userEntity; } public UserEntity updateDefaultIdentifier(UserEntity userEntity, String defaultIdentifier) { userEntity.setDefaultIdentifier(defaultIdentifier); return persist(userEntity); } public UserEntity updateLocale(UserEntity userEntity, String locale) { userEntity.setLocale(locale); return persist(userEntity); } public UserEntity updateDefaultSchoolDataSource(UserEntity userEntity, SchoolDataSource defaultSchoolDataSource) { userEntity.setDefaultSchoolDataSource(defaultSchoolDataSource); return persist(userEntity); } public UserEntity updateArchived(UserEntity userEntity, Boolean archived) { userEntity.setArchived(archived); return persist(userEntity); } public UserEntity updateUpdatedByStudent(UserEntity userEntity, Boolean updatedByStudent) { userEntity.setUpdatedByStudent(updatedByStudent); return persist(userEntity); } }