package fi.otavanopisto.pyramus.dao.help; import java.util.Date; import java.util.Locale; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import fi.otavanopisto.pyramus.dao.PyramusEntityDAO; import fi.otavanopisto.pyramus.domainmodel.help.HelpItem; import fi.otavanopisto.pyramus.domainmodel.help.HelpItemTitle; import fi.otavanopisto.pyramus.domainmodel.users.User; import fi.otavanopisto.pyramus.domainmodel.help.HelpItemTitle_; @Stateless public class HelpItemTitleDAO extends PyramusEntityDAO<HelpItemTitle> { public HelpItemTitle findByItemAndLocale(HelpItem item, Locale locale) { EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<HelpItemTitle> criteria = criteriaBuilder.createQuery(HelpItemTitle.class); Root<HelpItemTitle> root = criteria.from(HelpItemTitle.class); criteria.select(root); criteria.where( criteriaBuilder.and( criteriaBuilder.equal(root.get(HelpItemTitle_.item), item), criteriaBuilder.equal(root.get(HelpItemTitle_.locale), locale) )); return getSingleResult(entityManager.createQuery(criteria)); } public HelpItemTitle create(HelpItem item, Locale locale, String title, User creatingUser) { EntityManager entityManager = getEntityManager(); Date now = new Date(System.currentTimeMillis()); HelpItemTitle helpItemTitle = new HelpItemTitle(); helpItemTitle.setCreated(now); helpItemTitle.setLastModified(now); helpItemTitle.setCreator(creatingUser); helpItemTitle.setLastModifier(creatingUser); helpItemTitle.setLocale(locale); helpItemTitle.setTitle(title); entityManager.persist(helpItemTitle); item.addTitle(helpItemTitle); entityManager.persist(item); return helpItemTitle; } public void updateTitle(HelpItemTitle helpItemTitle, String title, User updatingUser) { EntityManager entityManager = getEntityManager(); Date now = new Date(System.currentTimeMillis()); helpItemTitle.setLastModified(now); helpItemTitle.setLastModifier(updatingUser); helpItemTitle.setTitle(title); entityManager.persist(helpItemTitle); } @Override public void delete(HelpItemTitle helpItemTitle) { EntityManager entityManager = getEntityManager(); if (helpItemTitle.getItem() != null) { HelpItem helpItem = helpItemTitle.getItem(); helpItem.removeTitle(helpItemTitle); entityManager.persist(helpItem); } super.delete(helpItemTitle); } }