/** * Deletes a tag. * * @param tagId Tag ID * @param userId User ID */ public void delete(String tagId, String userId) { EntityManager em = ThreadLocalContext.get().getEntityManager(); // Get the tag Query q = em.createQuery("select t from Tag t where t.id = :id and t.deleteDate is null"); q.setParameter("id", tagId); Tag tagDb = (Tag) q.getSingleResult(); // Delete the tag Date dateNow = new Date(); tagDb.setDeleteDate(dateNow); // Delete linked data q = em.createQuery( "update DocumentTag dt set dt.deleteDate = :dateNow where dt.tagId = :tagId and dt.deleteDate is not null"); q.setParameter("dateNow", dateNow); q.setParameter("tagId", tagId); q.executeUpdate(); q = em.createQuery( "update Acl a set a.deleteDate = :dateNow where a.sourceId = :tagId and a.deleteDate is null"); q.setParameter("tagId", tagId); q.setParameter("dateNow", dateNow); q.executeUpdate(); // Create audit log AuditLogUtil.create(tagDb, AuditLogType.DELETE, userId); }