InstanceMakerDao.java
- /*
- * The coLAB project
- * Copyright (C) 2022-2023 AlbaSim, MEI, HEIG-VD, HES-SO
- *
- * Licensed under the MIT License
- */
- package ch.colabproject.colab.api.persistence.jpa.project;
- import ch.colabproject.colab.api.model.project.InstanceMaker;
- import ch.colabproject.colab.api.model.project.Project;
- import ch.colabproject.colab.api.model.user.User;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import javax.ejb.LocalBean;
- import javax.ejb.Stateless;
- import javax.persistence.EntityManager;
- import javax.persistence.NoResultException;
- import javax.persistence.PersistenceContext;
- import javax.persistence.TypedQuery;
- /**
- * Instance maker persistence
- * <p>
- * Note : Most database operations are handled by managed entities and cascade.
- *
- * @author sandra
- */
- @Stateless
- @LocalBean
- public class InstanceMakerDao {
- /**
- * logger
- */
- private static final Logger logger = LoggerFactory.getLogger(InstanceMakerDao.class);
- /**
- * Access to the persistence unit
- */
- @PersistenceContext(unitName = "COLAB_PU")
- private EntityManager em;
- /**
- * Find an instance maker by id
- *
- * @param id the id of the instance maker
- * @return the instance maker or null if it does not exist
- */
- public InstanceMaker findInstanceMaker(Long id) {
- logger.trace("find instance maker #{}", id);
- return em.find(InstanceMaker.class, id);
- }
- /**
- * Find the instance maker who match the given project and the given user.
- *
- * @param project the project
- * @param user the user
- * @return the instance maker or null
- */
- public InstanceMaker findInstanceMakerByProjectAndUser(Project project, User user) {
- try {
- TypedQuery<InstanceMaker> query = em.createNamedQuery(
- "InstanceMaker.findByProjectAndUser",
- InstanceMaker.class);
- query.setParameter("projectId", project.getId());
- query.setParameter("userId", user.getId());
- return query.getSingleResult();
- } catch (NoResultException ex) {
- return null;
- }
- }
- // /**
- // * Find the instance makers related to the given user
- // *
- // * @param user the user
- // *
- // * @return the matching instance makers
- // */
- // public List<InstanceMaker> findInstanceMakersByUser(User user) {
- // TypedQuery<InstanceMaker> query = em.createNamedQuery("InstanceMaker.findByUser",
- // InstanceMaker.class);
- //
- // query.setParameter("userId", user.getId());
- //
- // return query.getResultList();
- // }
- // /**
- // * Update instance maker. Only fields which are editable by users will be impacted.
- // *
- // * @param instanceMaker the instance maker as supplied by clients (ie not managed by JPA)
- // *
- // * @return return updated managed instance maker
- // *
- // * @throws ColabMergeException if the update failed
- // */
- // public InstanceMaker updateInstanceMaker(InstanceMaker instanceMaker) throws ColabMergeException {
- // logger.trace("update instance maker {}", instanceMaker);
- //
- // InstanceMaker managedInstanceMaker = this.findInstanceMaker(instanceMaker.getId());
- //
- // managedInstanceMaker.merge(instanceMaker);
- //
- // return managedInstanceMaker;
- // }
- /**
- * Persist a brand-new instance maker to database
- *
- * @param instanceMaker the new instance maker to persist
- */
- public void persistInstanceMaker(InstanceMaker instanceMaker) {
- logger.trace("persist instance maker {}", instanceMaker);
- em.persist(instanceMaker);
- }
- /**
- * Delete the instance maker from database. This can't be undone
- *
- * @param instanceMaker the instance maker to delete
- */
- public void deleteInstanceMaker(InstanceMaker instanceMaker) {
- logger.trace("delete instance maker #{}", instanceMaker);
- // TODO: move to recycle bin first
- em.remove(instanceMaker);
- }
- }