1
0
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:
jendib
2013-08-14 20:51:08 +02:00
parent 4cb5b7fdbb
commit 200d7a0001
14 changed files with 430 additions and 359 deletions

View File

@@ -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();
}

View File

@@ -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();
}
/**

View File

@@ -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();
}
}

View File

@@ -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;
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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>

View File

@@ -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) );