mirror of
https://github.com/sismics/docs.git
synced 2025-12-13 17:56:20 +00:00
Name on share, share document (not file)
This commit is contained in:
@@ -40,6 +40,19 @@ public class DocumentDao {
|
||||
return document.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an active document.
|
||||
*
|
||||
* @param id Document ID
|
||||
* @return Document
|
||||
*/
|
||||
public Document getDocument(String id) {
|
||||
EntityManager em = ThreadLocalContext.get().getEntityManager();
|
||||
Query q = em.createQuery("select d from Document d where d.id = :id and d.deleteDate is null");
|
||||
q.setParameter("id", id);
|
||||
return (Document) q.getSingleResult();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an active document.
|
||||
*
|
||||
@@ -74,7 +87,12 @@ public class DocumentDao {
|
||||
|
||||
// Delete linked data
|
||||
q = em.createQuery("update File f set f.deleteDate = :dateNow where f.documentId = :documentId and f.deleteDate is null");
|
||||
q.setParameter("documentId", documentDb.getId());
|
||||
q.setParameter("documentId", id);
|
||||
q.setParameter("dateNow", dateNow);
|
||||
q.executeUpdate();
|
||||
|
||||
q = em.createQuery("update Share s set s.deleteDate = :dateNow where s.documentId = :documentId and s.deleteDate is null");
|
||||
q.setParameter("documentId", id);
|
||||
q.setParameter("dateNow", dateNow);
|
||||
q.executeUpdate();
|
||||
}
|
||||
|
||||
@@ -64,12 +64,6 @@ public class FileDao {
|
||||
// Delete the file
|
||||
Date dateNow = new Date();
|
||||
fileDb.setDeleteDate(dateNow);
|
||||
|
||||
// Delete linked data
|
||||
q = em.createQuery("update FileShare fs set fs.deleteDate = :dateNow where fs.fileId = :fileId and fs.deleteDate is null");
|
||||
q.setParameter("fileId", id);
|
||||
q.setParameter("dateNow", dateNow);
|
||||
q.executeUpdate();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
package com.sismics.docs.core.dao.jpa;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.NoResultException;
|
||||
import javax.persistence.Query;
|
||||
|
||||
import com.sismics.docs.core.model.jpa.FileShare;
|
||||
import com.sismics.util.context.ThreadLocalContext;
|
||||
|
||||
/**
|
||||
* File share DAO.
|
||||
*
|
||||
* @author bgamard
|
||||
*/
|
||||
public class FileShareDao {
|
||||
/**
|
||||
* Creates a new file share.
|
||||
*
|
||||
* @param fileShare File share
|
||||
* @return New ID
|
||||
* @throws Exception
|
||||
*/
|
||||
public String create(FileShare fileShare) {
|
||||
// Create the UUID
|
||||
fileShare.setId(UUID.randomUUID().toString());
|
||||
|
||||
// Create the file
|
||||
EntityManager em = ThreadLocalContext.get().getEntityManager();
|
||||
fileShare.setCreateDate(new Date());
|
||||
em.persist(fileShare);
|
||||
|
||||
return fileShare.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an active file share.
|
||||
*
|
||||
* @param id File ID
|
||||
* @return Document
|
||||
*/
|
||||
public FileShare getFileShare(String id) {
|
||||
EntityManager em = ThreadLocalContext.get().getEntityManager();
|
||||
Query q = em.createQuery("select fs from FileShare fs where fs.id = :id and fs.deleteDate is null");
|
||||
q.setParameter("id", id);
|
||||
try {
|
||||
return (FileShare) q.getSingleResult();
|
||||
} catch (NoResultException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a file share.
|
||||
*
|
||||
* @param id File ID
|
||||
*/
|
||||
public void delete(String id) {
|
||||
EntityManager em = ThreadLocalContext.get().getEntityManager();
|
||||
|
||||
// Get the document
|
||||
Query q = em.createQuery("select fs from FileShare fs where fs.id = :id and fs.deleteDate is null");
|
||||
q.setParameter("id", id);
|
||||
FileShare fileShareDb = (FileShare) q.getSingleResult();
|
||||
|
||||
// Delete the document
|
||||
Date dateNow = new Date();
|
||||
fileShareDb.setDeleteDate(dateNow);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a file share by its ID.
|
||||
*
|
||||
* @param id Document ID
|
||||
* @return Document
|
||||
*/
|
||||
public FileShare getById(String id) {
|
||||
EntityManager em = ThreadLocalContext.get().getEntityManager();
|
||||
try {
|
||||
return em.find(FileShare.class, id);
|
||||
} catch (NoResultException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get file shares by file ID.
|
||||
*
|
||||
* @param fileId File ID
|
||||
* @return List of file shares
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<FileShare> getByFileId(String fileId) {
|
||||
EntityManager em = ThreadLocalContext.get().getEntityManager();
|
||||
Query q = em.createQuery("select fs from FileShare fs where fs.fileId = :fileId and fs.deleteDate is null");
|
||||
q.setParameter("fileId", fileId);
|
||||
return q.getResultList();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package com.sismics.docs.core.dao.jpa;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.NoResultException;
|
||||
import javax.persistence.Query;
|
||||
|
||||
import com.sismics.docs.core.model.jpa.Document;
|
||||
import com.sismics.docs.core.model.jpa.Share;
|
||||
import com.sismics.util.context.ThreadLocalContext;
|
||||
|
||||
/**
|
||||
* Share DAO.
|
||||
*
|
||||
* @author bgamard
|
||||
*/
|
||||
public class ShareDao {
|
||||
/**
|
||||
* Creates a new share.
|
||||
*
|
||||
* @param share Share
|
||||
* @return New ID
|
||||
* @throws Exception
|
||||
*/
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an active share.
|
||||
*
|
||||
* @param id Share ID
|
||||
* @return Document
|
||||
*/
|
||||
public Share getShare(String id) {
|
||||
EntityManager em = ThreadLocalContext.get().getEntityManager();
|
||||
Query q = em.createQuery("select s from Share s where s.id = :id and s.deleteDate is null");
|
||||
q.setParameter("id", id);
|
||||
try {
|
||||
return (Share) q.getSingleResult();
|
||||
} catch (NoResultException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get shares by document ID.
|
||||
*
|
||||
* @param documentId Document ID
|
||||
* @return List of shares
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<Share> getByDocumentId(String documentId) {
|
||||
EntityManager em = ThreadLocalContext.get().getEntityManager();
|
||||
Query q = em.createQuery("select s from Share s where s.documentId = :documentId and s.deleteDate is null");
|
||||
q.setParameter("documentId", documentId);
|
||||
return q.getResultList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a document is visible.
|
||||
*
|
||||
* @param document Document to check for visibility
|
||||
* @param userId Optional user trying to access the document
|
||||
* @param shareId Optional share to access the document
|
||||
* @return True if the document is visible
|
||||
*/
|
||||
public boolean checkVisibility(Document document, String userId, String shareId) {
|
||||
// The user owns the document
|
||||
if (document.getUserId().equals(userId)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// The share is linked to the document
|
||||
if (shareId != null) {
|
||||
Share share = getShare(shareId);
|
||||
if (share.getDocumentId().equals(document.getId())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
package com.sismics.docs.core.model.jpa;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* File share.
|
||||
*
|
||||
* @author bgamard
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "T_FILESHARE")
|
||||
public class FileShare {
|
||||
/**
|
||||
* File share ID.
|
||||
*/
|
||||
@Id
|
||||
@Column(name = "FSH_ID_C", length = 36)
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* File ID.
|
||||
*/
|
||||
@Column(name = "FSH_IDFILE_C", nullable = false, length = 36)
|
||||
private String fileId;
|
||||
|
||||
/**
|
||||
* Creation date.
|
||||
*/
|
||||
@Column(name = "FSH_CREATEDATE_D", nullable = false)
|
||||
private Date createDate;
|
||||
|
||||
/**
|
||||
* Deletion date.
|
||||
*/
|
||||
@Column(name = "FSH_DELETEDATE_D")
|
||||
private Date deleteDate;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getFileId() {
|
||||
return fileId;
|
||||
}
|
||||
|
||||
public void setFileId(String fileId) {
|
||||
this.fileId = fileId;
|
||||
}
|
||||
|
||||
public Date getCreateDate() {
|
||||
return createDate;
|
||||
}
|
||||
|
||||
public void setCreateDate(Date createDate) {
|
||||
this.createDate = createDate;
|
||||
}
|
||||
|
||||
public Date getDeleteDate() {
|
||||
return deleteDate;
|
||||
}
|
||||
|
||||
public void setDeleteDate(Date deleteDate) {
|
||||
this.deleteDate = deleteDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toStringHelper(this)
|
||||
.add("id", id)
|
||||
.add("tagId", fileId)
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
package com.sismics.docs.core.model.jpa;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* File share.
|
||||
*
|
||||
* @author bgamard
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "T_SHARE")
|
||||
public class Share {
|
||||
/**
|
||||
* Share ID.
|
||||
*/
|
||||
@Id
|
||||
@Column(name = "SHA_ID_C", length = 36)
|
||||
private String id;
|
||||
|
||||
@Column(name = "SHA_NAME_C", length = 36)
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* Document ID.
|
||||
*/
|
||||
@Column(name = "SHA_IDDOCUMENT_C", nullable = false, length = 36)
|
||||
private String documentId;
|
||||
|
||||
/**
|
||||
* Creation date.
|
||||
*/
|
||||
@Column(name = "SHA_CREATEDATE_D", nullable = false)
|
||||
private Date createDate;
|
||||
|
||||
/**
|
||||
* Deletion date.
|
||||
*/
|
||||
@Column(name = "SHA_DELETEDATE_D")
|
||||
private Date deleteDate;
|
||||
|
||||
/**
|
||||
* Getter of id.
|
||||
*
|
||||
* @return the id
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter of id.
|
||||
*
|
||||
* @param id id
|
||||
*/
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter of name.
|
||||
*
|
||||
* @return the name
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter of name.
|
||||
*
|
||||
* @param name name
|
||||
*/
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter of documentId.
|
||||
*
|
||||
* @return the documentId
|
||||
*/
|
||||
public String getDocumentId() {
|
||||
return documentId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter of documentId.
|
||||
*
|
||||
* @param documentId documentId
|
||||
*/
|
||||
public void setDocumentId(String documentId) {
|
||||
this.documentId = documentId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter of createDate.
|
||||
*
|
||||
* @return the createDate
|
||||
*/
|
||||
public Date getCreateDate() {
|
||||
return createDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter of createDate.
|
||||
*
|
||||
* @param createDate createDate
|
||||
*/
|
||||
public void setCreateDate(Date createDate) {
|
||||
this.createDate = createDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter of deleteDate.
|
||||
*
|
||||
* @return the deleteDate
|
||||
*/
|
||||
public Date getDeleteDate() {
|
||||
return deleteDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter of deleteDate.
|
||||
*
|
||||
* @param deleteDate deleteDate
|
||||
*/
|
||||
public void setDeleteDate(Date deleteDate) {
|
||||
this.deleteDate = deleteDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toStringHelper(this)
|
||||
.add("id", id)
|
||||
.add("tagId", documentId)
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,6 @@
|
||||
<class>com.sismics.docs.core.model.jpa.Document</class>
|
||||
<class>com.sismics.docs.core.model.jpa.Tag</class>
|
||||
<class>com.sismics.docs.core.model.jpa.DocumentTag</class>
|
||||
<class>com.sismics.docs.core.model.jpa.FileShare</class>
|
||||
<class>com.sismics.docs.core.model.jpa.Share</class>
|
||||
</persistence-unit>
|
||||
</persistence>
|
||||
@@ -1 +1 @@
|
||||
create cached table T_FILESHARE ( FSH_ID_C varchar(36) not null, FSH_IDFILE_C varchar(36) not null, FSH_CREATEDATE_D datetime, FSH_DELETEDATE_D datetime, primary key (FSH_ID_C) );
|
||||
create cached table T_SHARE ( SHA_ID_C varchar(36) not null, SHA_NAME_C varchar(36), SHA_IDDOCUMENT_C varchar(36) not null, SHA_CREATEDATE_D datetime, SHA_DELETEDATE_D datetime, primary key (SHA_ID_C) );
|
||||
Reference in New Issue
Block a user