docs/docs-core/src/main/java/com/sismics/docs/core/dao/ShareDao.java

59 lines
1.5 KiB
Java

package com.sismics.docs.core.dao;
import com.sismics.docs.core.model.jpa.Share;
import com.sismics.util.context.ThreadLocalContext;
import jakarta.persistence.EntityManager;
import jakarta.persistence.Query;
import java.util.Date;
import java.util.UUID;
/**
* Share DAO.
*
* @author bgamard
*/
public class ShareDao {
/**
* Creates a new share.
*
* @param share Share
* @return New ID
*/
public String create(Share share) {
// Create the UUID
share.setId(UUID.randomUUID().toString());
// Create the share
EntityManager em = ThreadLocalContext.get().getEntityManager();
share.setCreateDate(new Date());
em.persist(share);
return share.getId();
}
/**
* Deletes a share.
*
* @param id Share ID
*/
public void delete(String id) {
EntityManager em = ThreadLocalContext.get().getEntityManager();
// Get the share
Query q = em.createQuery("select s from Share s where s.id = :id and s.deleteDate is null");
q.setParameter("id", id);
Share shareDb = (Share) q.getSingleResult();
// Delete the share
Date dateNow = new Date();
shareDb.setDeleteDate(dateNow);
// Delete the linked ACL
q = em.createQuery("update Acl a set a.deleteDate = :dateNow where a.targetId = :targetId");
q.setParameter("targetId", id);
q.setParameter("dateNow", dateNow);
q.executeUpdate();
}
}