1
0
mirror of https://github.com/sismics/docs.git synced 2025-12-14 02:06:25 +00:00

#159: route model api

This commit is contained in:
Benjamin Gamard
2018-01-28 12:44:11 +01:00
parent 0ab6c8e4b0
commit 17a94395f3
15 changed files with 430 additions and 111 deletions

View File

@@ -294,26 +294,26 @@ public class DocumentDao {
// Get the document
Query q = em.createQuery("select d from Document d where d.id = :id and d.deleteDate is null");
q.setParameter("id", document.getId());
Document documentFromDb = (Document) q.getSingleResult();
Document documentDb = (Document) q.getSingleResult();
// Update the document
documentFromDb.setTitle(document.getTitle());
documentFromDb.setDescription(document.getDescription());
documentFromDb.setSubject(document.getSubject());
documentFromDb.setIdentifier(document.getIdentifier());
documentFromDb.setPublisher(document.getPublisher());
documentFromDb.setFormat(document.getFormat());
documentFromDb.setSource(document.getSource());
documentFromDb.setType(document.getType());
documentFromDb.setCoverage(document.getCoverage());
documentFromDb.setRights(document.getRights());
documentFromDb.setCreateDate(document.getCreateDate());
documentFromDb.setLanguage(document.getLanguage());
documentDb.setTitle(document.getTitle());
documentDb.setDescription(document.getDescription());
documentDb.setSubject(document.getSubject());
documentDb.setIdentifier(document.getIdentifier());
documentDb.setPublisher(document.getPublisher());
documentDb.setFormat(document.getFormat());
documentDb.setSource(document.getSource());
documentDb.setType(document.getType());
documentDb.setCoverage(document.getCoverage());
documentDb.setRights(document.getRights());
documentDb.setCreateDate(document.getCreateDate());
documentDb.setLanguage(document.getLanguage());
// Create audit log
AuditLogUtil.create(documentFromDb, AuditLogType.UPDATE, userId);
AuditLogUtil.create(documentDb, AuditLogType.UPDATE, userId);
return documentFromDb;
return documentDb;
}
/**

View File

@@ -1,18 +1,17 @@
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.constant.AuditLogType;
import com.sismics.docs.core.model.jpa.File;
import com.sismics.docs.core.util.AuditLogUtil;
import com.sismics.util.context.ThreadLocalContext;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
* File DAO.
*
@@ -137,13 +136,13 @@ public class FileDao {
// Get the file
Query q = em.createQuery("select f from File f where f.id = :id and f.deleteDate is null");
q.setParameter("id", file.getId());
File fileFromDb = (File) q.getSingleResult();
File fileDb = (File) q.getSingleResult();
// Update the file
fileFromDb.setDocumentId(file.getDocumentId());
fileFromDb.setContent(file.getContent());
fileFromDb.setOrder(file.getOrder());
fileFromDb.setMimeType(file.getMimeType());
fileDb.setDocumentId(file.getDocumentId());
fileDb.setContent(file.getContent());
fileDb.setOrder(file.getOrder());
fileDb.setMimeType(file.getMimeType());
return file;
}

View File

@@ -1,18 +1,5 @@
package com.sismics.docs.core.dao.jpa;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import com.google.common.base.Joiner;
import com.sismics.docs.core.constant.AuditLogType;
import com.sismics.docs.core.dao.jpa.criteria.GroupCriteria;
@@ -25,6 +12,11 @@ import com.sismics.docs.core.util.jpa.QueryUtil;
import com.sismics.docs.core.util.jpa.SortCriteria;
import com.sismics.util.context.ThreadLocalContext;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import java.util.*;
/**
* Group DAO.
*
@@ -266,16 +258,16 @@ public class GroupDao {
// Get the group
Query q = em.createQuery("select g from Group g where g.id = :id and g.deleteDate is null");
q.setParameter("id", group.getId());
Group groupFromDb = (Group) q.getSingleResult();
Group groupDb = (Group) q.getSingleResult();
// Update the group
groupFromDb.setName(group.getName());
groupFromDb.setParentId(group.getParentId());
groupDb.setName(group.getName());
groupDb.setParentId(group.getParentId());
// Create audit log
AuditLogUtil.create(groupFromDb, AuditLogType.UPDATE, userId);
AuditLogUtil.create(groupDb, AuditLogType.UPDATE, userId);
return groupFromDb;
return groupDb;
}
}

View File

@@ -1,17 +1,21 @@
package com.sismics.docs.core.dao.jpa;
import com.google.common.base.Joiner;
import com.sismics.docs.core.constant.AuditLogType;
import com.sismics.docs.core.dao.jpa.criteria.RouteModelCriteria;
import com.sismics.docs.core.dao.jpa.dto.RouteModelDto;
import com.sismics.docs.core.model.jpa.RouteModel;
import com.sismics.docs.core.util.AuditLogUtil;
import com.sismics.docs.core.util.jpa.QueryParam;
import com.sismics.docs.core.util.jpa.QueryUtil;
import com.sismics.docs.core.util.jpa.SortCriteria;
import com.sismics.util.context.ThreadLocalContext;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* Route model DAO.
@@ -19,6 +23,92 @@ import java.util.Map;
* @author bgamard
*/
public class RouteModelDao {
/**
* Creates a new route model.
*
* @param routeModel Route model
* @param userId User ID
* @return New ID
*/
public String create(RouteModel routeModel, String userId) {
// Create the UUID
routeModel.setId(UUID.randomUUID().toString());
// Create the route model
EntityManager em = ThreadLocalContext.get().getEntityManager();
routeModel.setCreateDate(new Date());
em.persist(routeModel);
// Create audit log
AuditLogUtil.create(routeModel, AuditLogType.CREATE, userId);
return routeModel.getId();
}
/**
* Update a route model.
*
* @param routeModel Route model to update
* @param userId User ID
* @return Updated route model
*/
public RouteModel update(RouteModel routeModel, String userId) {
EntityManager em = ThreadLocalContext.get().getEntityManager();
// Get the route model
Query q = em.createQuery("select r from RouteModel r where r.id = :id and r.deleteDate is null");
q.setParameter("id", routeModel.getId());
RouteModel routeModelDb = (RouteModel) q.getSingleResult();
// Update the group
routeModelDb.setName(routeModel.getName());
routeModelDb.setSteps(routeModel.getSteps());
// Create audit log
AuditLogUtil.create(routeModelDb, AuditLogType.UPDATE, userId);
return routeModelDb;
}
/**
* Gets an active route model by its ID.
*
* @param id Route model ID
* @return Route model
*/
public RouteModel getActiveById(String id) {
EntityManager em = ThreadLocalContext.get().getEntityManager();
try {
Query q = em.createQuery("select r from RouteModel r where r.id = :id and r.deleteDate is null");
q.setParameter("id", id);
return (RouteModel) q.getSingleResult();
} catch (NoResultException e) {
return null;
}
}
/**
* Deletes a route model.
*
* @param id Route model ID
* @param userId User ID
*/
public void delete(String id, String userId) {
EntityManager em = ThreadLocalContext.get().getEntityManager();
// Get the route model
Query q = em.createQuery("select r from RouteModel r where r.id = :id and r.deleteDate is null");
q.setParameter("id", id);
RouteModel routeModelDb = (RouteModel) q.getSingleResult();
// Delete the route model
Date dateNow = new Date();
routeModelDb.setDeleteDate(dateNow);
// Create audit log
AuditLogUtil.create(routeModelDb, AuditLogType.DELETE, userId);
}
/**
* Returns the list of all route models.
*

View File

@@ -148,17 +148,17 @@ public class TagDao {
// Get the tag
Query q = em.createQuery("select t from Tag t where t.id = :id and t.deleteDate is null");
q.setParameter("id", tag.getId());
Tag tagFromDb = (Tag) q.getSingleResult();
Tag tagDb = (Tag) q.getSingleResult();
// Update the tag
tagFromDb.setName(tag.getName());
tagFromDb.setColor(tag.getColor());
tagFromDb.setParentId(tag.getParentId());
tagDb.setName(tag.getName());
tagDb.setColor(tag.getColor());
tagDb.setParentId(tag.getParentId());
// Create audit log
AuditLogUtil.create(tagFromDb, AuditLogType.UPDATE, userId);
AuditLogUtil.create(tagDb, AuditLogType.UPDATE, userId);
return tagFromDb;
return tagDb;
}
/**

View File

@@ -92,17 +92,17 @@ public class UserDao {
// Get the user
Query q = em.createQuery("select u from User u where u.id = :id and u.deleteDate is null");
q.setParameter("id", user.getId());
User userFromDb = (User) q.getSingleResult();
User userDb = (User) q.getSingleResult();
// Update the user (except password)
userFromDb.setEmail(user.getEmail());
userFromDb.setStorageQuota(user.getStorageQuota());
userFromDb.setStorageCurrent(user.getStorageCurrent());
userFromDb.setTotpKey(user.getTotpKey());
userFromDb.setDisableDate(user.getDisableDate());
userDb.setEmail(user.getEmail());
userDb.setStorageQuota(user.getStorageQuota());
userDb.setStorageCurrent(user.getStorageCurrent());
userDb.setTotpKey(user.getTotpKey());
userDb.setDisableDate(user.getDisableDate());
// Create audit log
AuditLogUtil.create(userFromDb, AuditLogType.UPDATE, userId);
AuditLogUtil.create(userDb, AuditLogType.UPDATE, userId);
return user;
}
@@ -118,10 +118,10 @@ public class UserDao {
// Get the user
Query q = em.createQuery("select u from User u where u.id = :id and u.deleteDate is null");
q.setParameter("id", user.getId());
User userFromDb = (User) q.getSingleResult();
User userDb = (User) q.getSingleResult();
// Update the user
userFromDb.setStorageQuota(user.getStorageQuota());
userDb.setStorageQuota(user.getStorageQuota());
}
/**
@@ -137,13 +137,13 @@ public class UserDao {
// Get the user
Query q = em.createQuery("select u from User u where u.id = :id and u.deleteDate is null");
q.setParameter("id", user.getId());
User userFromDb = (User) q.getSingleResult();
User userDb = (User) q.getSingleResult();
// Update the user
userFromDb.setPassword(hashPassword(user.getPassword()));
userDb.setPassword(hashPassword(user.getPassword()));
// Create audit log
AuditLogUtil.create(userFromDb, AuditLogType.UPDATE, userId);
AuditLogUtil.create(userDb, AuditLogType.UPDATE, userId);
return user;
}
@@ -160,10 +160,10 @@ public class UserDao {
// Get the user
Query q = em.createQuery("select u from User u where u.id = :id and u.deleteDate is null");
q.setParameter("id", user.getId());
User userFromDb = (User) q.getSingleResult();
User userDb = (User) q.getSingleResult();
// Update the user
userFromDb.setPassword(user.getPassword());
userDb.setPassword(user.getPassword());
return user;
}
@@ -212,39 +212,39 @@ public class UserDao {
// Get the user
Query q = em.createQuery("select u from User u where u.username = :username and u.deleteDate is null");
q.setParameter("username", username);
User userFromDb = (User) q.getSingleResult();
User userDb = (User) q.getSingleResult();
// Delete the user
Date dateNow = new Date();
userFromDb.setDeleteDate(dateNow);
userDb.setDeleteDate(dateNow);
// Delete linked data
q = em.createQuery("delete from AuthenticationToken at where at.userId = :userId");
q.setParameter("userId", userFromDb.getId());
q.setParameter("userId", userDb.getId());
q.executeUpdate();
q = em.createQuery("update Document d set d.deleteDate = :dateNow where d.userId = :userId and d.deleteDate is null");
q.setParameter("userId", userFromDb.getId());
q.setParameter("userId", userDb.getId());
q.setParameter("dateNow", dateNow);
q.executeUpdate();
q = em.createQuery("update File f set f.deleteDate = :dateNow where f.userId = :userId and f.deleteDate is null");
q.setParameter("userId", userFromDb.getId());
q.setParameter("userId", userDb.getId());
q.setParameter("dateNow", dateNow);
q.executeUpdate();
q = em.createQuery("update Acl a set a.deleteDate = :dateNow where a.targetId = :userId and a.deleteDate is null");
q.setParameter("userId", userFromDb.getId());
q.setParameter("userId", userDb.getId());
q.setParameter("dateNow", dateNow);
q.executeUpdate();
q = em.createQuery("update Comment c set c.deleteDate = :dateNow where c.userId = :userId and c.deleteDate is null");
q.setParameter("userId", userFromDb.getId());
q.setParameter("userId", userDb.getId());
q.setParameter("dateNow", dateNow);
q.executeUpdate();
// Create audit log
AuditLogUtil.create(userFromDb, AuditLogType.DELETE, userId);
AuditLogUtil.create(userDb, AuditLogType.DELETE, userId);
}
/**

View File

@@ -1,14 +1,13 @@
package com.sismics.docs.core.dao.jpa;
import java.util.List;
import java.util.UUID;
import com.sismics.docs.core.model.jpa.Vocabulary;
import com.sismics.util.context.ThreadLocalContext;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import com.sismics.docs.core.model.jpa.Vocabulary;
import com.sismics.util.context.ThreadLocalContext;
import java.util.List;
import java.util.UUID;
/**
* Vocabulary DAO.
@@ -76,14 +75,14 @@ public class VocabularyDao {
// Get the vocabulary entry
Query q = em.createQuery("select v from Vocabulary v where v.id = :id");
q.setParameter("id", vocabulary.getId());
Vocabulary vocabularyFromDb = (Vocabulary) q.getSingleResult();
Vocabulary vocabularyDb = (Vocabulary) q.getSingleResult();
// Update the vocabulary entry
vocabularyFromDb.setName(vocabulary.getName());
vocabularyFromDb.setValue(vocabulary.getValue());
vocabularyFromDb.setOrder(vocabulary.getOrder());
vocabularyDb.setName(vocabulary.getName());
vocabularyDb.setValue(vocabulary.getValue());
vocabularyDb.setOrder(vocabulary.getOrder());
return vocabularyFromDb;
return vocabularyDb;
}
/**

View File

@@ -15,7 +15,7 @@ import java.util.Date;
*/
@Entity
@Table(name = "T_ROUTE_MODEL")
public class RouteModel {
public class RouteModel implements Loggable {
/**
* Route model ID.
*/
@@ -32,8 +32,8 @@ public class RouteModel {
/**
* Data.
*/
@Column(name = "RTM_DATA_C", nullable = false, length = 5000)
private String data;
@Column(name = "RTM_STEPS_C", nullable = false, length = 5000)
private String steps;
/**
* Creation date.
@@ -65,12 +65,12 @@ public class RouteModel {
return this;
}
public String getData() {
return data;
public String getSteps() {
return steps;
}
public RouteModel setData(String data) {
this.data = data;
public RouteModel setSteps(String steps) {
this.steps = steps;
return this;
}
@@ -99,4 +99,9 @@ public class RouteModel {
.add("name", name)
.toString();
}
@Override
public String toMessage() {
return name;
}
}

View File

@@ -1,4 +1,4 @@
create table T_ROUTE_MODEL ( RTM_ID_C varchar(36) not null, RTM_NAME_C varchar(50) not null, RTM_DATA_C varchar(5000) not null, RTM_CREATEDATE_D datetime not null, RTM_DELETEDATE_D datetime, primary key (RTM_ID_C) );
create table T_ROUTE_MODEL ( RTM_ID_C varchar(36) not null, RTM_NAME_C varchar(50) not null, RTM_STEPS_C varchar(5000) not null, RTM_CREATEDATE_D datetime not null, RTM_DELETEDATE_D datetime, primary key (RTM_ID_C) );
create cached table T_ROUTE ( RTE_ID_C varchar(36) not null, RTE_IDDOCUMENT_C varchar(36) not null, RTE_CREATEDATE_D datetime not null, RTE_DELETEDATE_D datetime, primary key (RTE_ID_C) );
create cached table T_ROUTE_STEP ( RTP_ID_C varchar(36) not null, RTP_IDROUTE_C varchar(36) not null, RTP_NAME_C varchar(200) not null, RTP_TYPE_C varchar(50) not null, RTP_TRANSITION_C varchar(50), RTP_COMMENT_C varchar(500), RTP_IDTARGET_C varchar(36) not null, RTP_ORDER_N int not null, RTE_CREATEDATE_D datetime not null, RTP_ENDDATE_D datetime, RTP_DELETEDATE_D datetime, primary key (RTP_ID_C) );;
alter table T_ROUTE add constraint FK_RTE_IDDOCUMENT_C foreign key (RTE_IDDOCUMENT_C) references T_DOCUMENT (DOC_ID_C) on delete restrict on update restrict;