From 7e9b995cca90b7044ae357ad764e3c7ea60d6201 Mon Sep 17 00:00:00 2001 From: annabakouli Date: Thu, 14 Dec 2017 19:07:09 +0200 Subject: [PATCH] project dmps pagination --- .../src/main/java/dao/entities/DMPDao.java | 4 + .../main/java/dao/entities/DMPDaoImpl.java | 23 +- .../main/java/dao/entities/ProjectDao.java | 3 + .../java/dao/entities/ProjectDaoImpl.java | 16 ++ .../main/java/managers/DashBoardManager.java | 20 ++ .../managers/DataManagementPlanManager.java | 29 +++ .../main/java/managers/ProjectManager.java | 27 +++ .../criteria/DataManagementPlanCriteria.java | 7 + .../java/models/criteria/ProjectCriteria.java | 7 + .../models/dashboard/DashBoardStatistics.java | 29 +++ .../java/models/dmp/DataManagementPlan.java | 2 +- .../dmp/DataManagementPlanTableRequest.java | 36 ++++ .../java/models/helpers/DataTableData.java | 21 ++ .../src/main/java/models/project/Project.java | 201 ++++++++++++++++++ .../models/project/ProjectTableRequest.java | 36 ++++ .../src/main/java/rest/entities/DMPs.java | 43 ++++ .../rest/entities/DashBoardController.java | 51 +++++ .../src/main/java/rest/entities/Projects.java | 40 ++++ .../main/webapp/WEB-INF/spring-security.xml | 2 +- dmp-frontend/2.4.2 | 0 20 files changed, 589 insertions(+), 8 deletions(-) create mode 100644 dmp-backend/src/main/java/managers/DashBoardManager.java create mode 100644 dmp-backend/src/main/java/managers/DataManagementPlanManager.java create mode 100644 dmp-backend/src/main/java/managers/ProjectManager.java create mode 100644 dmp-backend/src/main/java/models/criteria/DataManagementPlanCriteria.java create mode 100644 dmp-backend/src/main/java/models/criteria/ProjectCriteria.java create mode 100644 dmp-backend/src/main/java/models/dashboard/DashBoardStatistics.java create mode 100644 dmp-backend/src/main/java/models/dmp/DataManagementPlanTableRequest.java create mode 100644 dmp-backend/src/main/java/models/helpers/DataTableData.java create mode 100644 dmp-backend/src/main/java/models/project/Project.java create mode 100644 dmp-backend/src/main/java/models/project/ProjectTableRequest.java create mode 100644 dmp-backend/src/main/java/rest/entities/DashBoardController.java create mode 100644 dmp-frontend/2.4.2 diff --git a/dmp-backend/src/main/java/dao/entities/DMPDao.java b/dmp-backend/src/main/java/dao/entities/DMPDao.java index 1bc531e8b..af96ac8e1 100644 --- a/dmp-backend/src/main/java/dao/entities/DMPDao.java +++ b/dmp-backend/src/main/java/dao/entities/DMPDao.java @@ -8,6 +8,8 @@ import entities.DMP; import entities.Organisation; import entities.Project; import entities.responses.IDLabelPair; +import models.dmp.DataManagementPlanTableRequest; +import models.project.ProjectTableRequest; public interface DMPDao extends Dao { @@ -17,4 +19,6 @@ public interface DMPDao extends Dao { List getDMPsOfUser(String userID); + public List getWithCriteria(DataManagementPlanTableRequest dataManagementPlanTableRequest); + } \ No newline at end of file diff --git a/dmp-backend/src/main/java/dao/entities/DMPDaoImpl.java b/dmp-backend/src/main/java/dao/entities/DMPDaoImpl.java index c3b1b83a7..8be6522b4 100644 --- a/dmp-backend/src/main/java/dao/entities/DMPDaoImpl.java +++ b/dmp-backend/src/main/java/dao/entities/DMPDaoImpl.java @@ -6,6 +6,9 @@ import java.util.UUID; import java.util.stream.Collectors; import javax.persistence.TypedQuery; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import org.hibernate.query.Query; @@ -14,6 +17,8 @@ import entities.DMP; import entities.Project; import entities.UserInfo; import entities.responses.IDLabelPair; +import models.dmp.DataManagementPlanTableRequest; +import models.project.ProjectTableRequest; public class DMPDaoImpl extends JpaDao implements DMPDao { @@ -53,12 +58,18 @@ public class DMPDaoImpl extends JpaDao implements DMPDao { catch(Exception ex) { //no need to distinguish between exceptions for the moment ex.printStackTrace(); return null; - } - - + } } - - - + @Override + public List getWithCriteria(DataManagementPlanTableRequest dataManagementPlanTableRequest) { + CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); + CriteriaQuery criteriaQuery = criteriaBuilder .createQuery(DMP.class); + Root root = criteriaQuery.from(DMP.class); + TypedQuery typedQuery = entityManager.createQuery(criteriaQuery); + typedQuery.setFirstResult(dataManagementPlanTableRequest.getOffset()); + typedQuery.setMaxResults(dataManagementPlanTableRequest.getLength()); + return typedQuery.getResultList(); + } + } diff --git a/dmp-backend/src/main/java/dao/entities/ProjectDao.java b/dmp-backend/src/main/java/dao/entities/ProjectDao.java index 376a38c0c..846ee5e2b 100644 --- a/dmp-backend/src/main/java/dao/entities/ProjectDao.java +++ b/dmp-backend/src/main/java/dao/entities/ProjectDao.java @@ -6,6 +6,7 @@ import java.util.UUID; import dao.Dao; import entities.Project; import entities.responses.IDLabelPair; +import models.project.ProjectTableRequest; public interface ProjectDao extends Dao { @@ -15,4 +16,6 @@ public interface ProjectDao extends Dao { public List getProjectsOfUser(String userID); + public List getWithCriteria(ProjectTableRequest projectTableRequest); + } \ No newline at end of file diff --git a/dmp-backend/src/main/java/dao/entities/ProjectDaoImpl.java b/dmp-backend/src/main/java/dao/entities/ProjectDaoImpl.java index bdd2ce37c..321425e0f 100644 --- a/dmp-backend/src/main/java/dao/entities/ProjectDaoImpl.java +++ b/dmp-backend/src/main/java/dao/entities/ProjectDaoImpl.java @@ -5,13 +5,18 @@ import java.util.UUID; import java.util.stream.Collectors; import javax.persistence.TypedQuery; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import org.hibernate.query.Query; import dao.JpaDao; import entities.DMP; import entities.Project; +import entities.Registry; import entities.responses.IDLabelPair; +import models.project.ProjectTableRequest; public class ProjectDaoImpl extends JpaDao implements ProjectDao { @@ -55,6 +60,17 @@ public class ProjectDaoImpl extends JpaDao implements ProjectDao } + @Override + public List getWithCriteria(ProjectTableRequest projectTableRequest) { + CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); + CriteriaQuery criteriaQuery = criteriaBuilder .createQuery(Project.class); + Root root = criteriaQuery.from(Project.class); + TypedQuery typedQuery = entityManager.createQuery(criteriaQuery); + typedQuery.setFirstResult(projectTableRequest.getOffset()); + typedQuery.setMaxResults(projectTableRequest.getLength()); + return typedQuery.getResultList(); + } + diff --git a/dmp-backend/src/main/java/managers/DashBoardManager.java b/dmp-backend/src/main/java/managers/DashBoardManager.java new file mode 100644 index 000000000..061b29fff --- /dev/null +++ b/dmp-backend/src/main/java/managers/DashBoardManager.java @@ -0,0 +1,20 @@ +package managers; + +import org.springframework.beans.factory.annotation.Autowired; + +import dao.entities.DMPDao; +import dao.entities.DatasetDao; +import dao.entities.ProjectDao; +import models.dashboard.DashBoardStatistics; + +public class DashBoardManager { + + public DashBoardStatistics getStatistics(DatasetDao datasetRepository,DMPDao dataManagementPlanRepository,ProjectDao projectRepository){ + DashBoardStatistics statistics = new DashBoardStatistics(); + statistics.setTotalDataManagementPlanCount(dataManagementPlanRepository.count()); + statistics.setTotalDataSetCount(datasetRepository.count()); + statistics.setTotalProjectCount(projectRepository.count()); + return statistics; + } + +} diff --git a/dmp-backend/src/main/java/managers/DataManagementPlanManager.java b/dmp-backend/src/main/java/managers/DataManagementPlanManager.java new file mode 100644 index 000000000..8b7613f7e --- /dev/null +++ b/dmp-backend/src/main/java/managers/DataManagementPlanManager.java @@ -0,0 +1,29 @@ +package managers; + +import java.util.List; +import java.util.UUID; + +import dao.entities.DMPDao; +import dao.entities.ProjectDao; +import models.dmp.DataManagementPlanTableRequest; +import models.helpers.DataTableData; +import models.project.Project; +import models.project.ProjectTableRequest; +import utilities.builders.DomainModelConverter; + +public class DataManagementPlanManager { + + public DataTableData getPaged(DMPDao dmpsRepository,DataManagementPlanTableRequest dataManagementPlanTableRequest) throws IllegalAccessException, InstantiationException{ + List datamanagementPlans = new DomainModelConverter().fromDataModel( dmpsRepository.getWithCriteria(dataManagementPlanTableRequest),models.dmp.DataManagementPlan.class); + DataTableData dataTable = new DataTableData(); + dataTable.setData(datamanagementPlans); + dataTable.setTotalCount(dmpsRepository.count()); + return dataTable; + } + + public models.dmp.DataManagementPlan getSingle(DMPDao dmpsRepository,String id) throws InstantiationException, IllegalAccessException{ + models.dmp.DataManagementPlan datamanagementPlan = new models.dmp.DataManagementPlan(); + datamanagementPlan.fromDataModel(dmpsRepository.read(UUID.fromString(id))); + return datamanagementPlan; + } +} diff --git a/dmp-backend/src/main/java/managers/ProjectManager.java b/dmp-backend/src/main/java/managers/ProjectManager.java new file mode 100644 index 000000000..864c17a0d --- /dev/null +++ b/dmp-backend/src/main/java/managers/ProjectManager.java @@ -0,0 +1,27 @@ +package managers; + +import java.util.List; +import java.util.UUID; + +import dao.entities.ProjectDao; +import models.helpers.DataTableData; +import models.project.Project; +import models.project.ProjectTableRequest; +import utilities.builders.DomainModelConverter; + +public class ProjectManager { + + public DataTableData getPaged(ProjectDao projectRepository,ProjectTableRequest projectTableRequest) throws IllegalAccessException, InstantiationException{ + List projects = new DomainModelConverter().fromDataModel( projectRepository.getWithCriteria(projectTableRequest),models.project.Project.class); + DataTableData dataTable = new DataTableData(); + dataTable.setData(projects); + dataTable.setTotalCount(projectRepository.count()); + return dataTable; + } + + public models.project.Project getSingle(ProjectDao projectRepository,String id) throws InstantiationException, IllegalAccessException{ + models.project.Project project = new models.project.Project(); + project.fromDataModel(projectRepository.read(UUID.fromString(id))); + return project; + } +} diff --git a/dmp-backend/src/main/java/models/criteria/DataManagementPlanCriteria.java b/dmp-backend/src/main/java/models/criteria/DataManagementPlanCriteria.java new file mode 100644 index 000000000..86bb56ff7 --- /dev/null +++ b/dmp-backend/src/main/java/models/criteria/DataManagementPlanCriteria.java @@ -0,0 +1,7 @@ +package models.criteria; + +import entities.DMP; + +public class DataManagementPlanCriteria extends Criteria{ + +} diff --git a/dmp-backend/src/main/java/models/criteria/ProjectCriteria.java b/dmp-backend/src/main/java/models/criteria/ProjectCriteria.java new file mode 100644 index 000000000..e6ecf0136 --- /dev/null +++ b/dmp-backend/src/main/java/models/criteria/ProjectCriteria.java @@ -0,0 +1,7 @@ +package models.criteria; + +import entities.Project; + +public class ProjectCriteria extends Criteria{ + +} diff --git a/dmp-backend/src/main/java/models/dashboard/DashBoardStatistics.java b/dmp-backend/src/main/java/models/dashboard/DashBoardStatistics.java new file mode 100644 index 000000000..3b5fbc919 --- /dev/null +++ b/dmp-backend/src/main/java/models/dashboard/DashBoardStatistics.java @@ -0,0 +1,29 @@ +package models.dashboard; + +public class DashBoardStatistics { + private Long totalDataManagementPlanCount; + private Long totalProjectCount; + private Long totalDataSetCount; + + + public Long getTotalDataManagementPlanCount() { + return totalDataManagementPlanCount; + } + public void setTotalDataManagementPlanCount(Long totalDataManagementPlanCount) { + this.totalDataManagementPlanCount = totalDataManagementPlanCount; + } + public Long getTotalProjectCount() { + return totalProjectCount; + } + public void setTotalProjectCount(Long totalProjectCount) { + this.totalProjectCount = totalProjectCount; + } + public Long getTotalDataSetCount() { + return totalDataSetCount; + } + public void setTotalDataSetCount(Long totalDataSetCount) { + this.totalDataSetCount = totalDataSetCount; + } + + +} diff --git a/dmp-backend/src/main/java/models/dmp/DataManagementPlan.java b/dmp-backend/src/main/java/models/dmp/DataManagementPlan.java index 3c0860f09..4fe614cff 100644 --- a/dmp-backend/src/main/java/models/dmp/DataManagementPlan.java +++ b/dmp-backend/src/main/java/models/dmp/DataManagementPlan.java @@ -103,7 +103,7 @@ public class DataManagementPlan implements DataModel{ this.project = new models.dmp.Project(); this.project.fromDataModel(entity.getProject()); this.creator = new models.dmp.UserInfo(); - this.creator.fromDataModel(entity.getCreator()); + if(entity.getCreator()!=null)this.creator.fromDataModel(entity.getCreator()); } @Override diff --git a/dmp-backend/src/main/java/models/dmp/DataManagementPlanTableRequest.java b/dmp-backend/src/main/java/models/dmp/DataManagementPlanTableRequest.java new file mode 100644 index 000000000..1e499ce23 --- /dev/null +++ b/dmp-backend/src/main/java/models/dmp/DataManagementPlanTableRequest.java @@ -0,0 +1,36 @@ +package models.dmp; + +import models.criteria.DataManagementPlanCriteria; + +public class DataManagementPlanTableRequest { + private Integer length; + private Integer offset; + + private DataManagementPlanCriteria criteria; + + public Integer getLength() { + return length; + } + + public void setLength(Integer length) { + this.length = length; + } + + public Integer getOffset() { + return offset; + } + + public void setOffset(Integer offset) { + this.offset = offset; + } + + public DataManagementPlanCriteria getCriteria() { + return criteria; + } + + public void setCriteria(DataManagementPlanCriteria criteria) { + this.criteria = criteria; + } + + +} diff --git a/dmp-backend/src/main/java/models/helpers/DataTableData.java b/dmp-backend/src/main/java/models/helpers/DataTableData.java new file mode 100644 index 000000000..0c5e17feb --- /dev/null +++ b/dmp-backend/src/main/java/models/helpers/DataTableData.java @@ -0,0 +1,21 @@ +package models.helpers; + +import java.util.List; + +public class DataTableData { + private Long totalCount; + private List data; + + public Long getTotalCount() { + return totalCount; + } + public void setTotalCount(Long totalCount) { + this.totalCount = totalCount; + } + public List getData() { + return data; + } + public void setData(List data) { + this.data = data; + } +} diff --git a/dmp-backend/src/main/java/models/project/Project.java b/dmp-backend/src/main/java/models/project/Project.java new file mode 100644 index 000000000..f345cae93 --- /dev/null +++ b/dmp-backend/src/main/java/models/project/Project.java @@ -0,0 +1,201 @@ +package models.project; + +import java.util.Date; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import javax.persistence.Column; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Type; + +import entities.DMP; +import entities.UserInfo; +import models.DataModel; +import models.dmp.DataManagementPlan; + +public class Project implements DataModel{ + + private UUID id; + + private List dmps; + + private String label; + + private String abbreviation; + + private String reference; + + private String uri; + + private String definition; + + private Date startdate; + + private Date enddate; + + private Short status; + + private UserInfo creationUser; + + private Date created; + + private Date modified; + + private String description; + + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public List getDmps() { + return dmps; + } + + public void setDmps(List dmps) { + this.dmps = dmps; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getAbbreviation() { + return abbreviation; + } + + public void setAbbreviation(String abbreviation) { + this.abbreviation = abbreviation; + } + + public String getReference() { + return reference; + } + + public void setReference(String reference) { + this.reference = reference; + } + + public String getUri() { + return uri; + } + + public void setUri(String uri) { + this.uri = uri; + } + + public String getDefinition() { + return definition; + } + + public void setDefinition(String definition) { + this.definition = definition; + } + + public Date getStartdate() { + return startdate; + } + + public void setStartdate(Date startdate) { + this.startdate = startdate; + } + + public Date getEnddate() { + return enddate; + } + + public void setEnddate(Date enddate) { + this.enddate = enddate; + } + + public Short getStatus() { + return status; + } + + public void setStatus(Short status) { + this.status = status; + } + + public UserInfo getCreationUser() { + return creationUser; + } + + public void setCreationUser(UserInfo creationUser) { + this.creationUser = creationUser; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @Override + public void fromDataModel(entities.Project entity) throws InstantiationException, IllegalAccessException { + this.id = entity.getId(); + this.label = entity.getLabel(); + this.abbreviation = entity.getAbbreviation(); + this.reference = entity.getReference(); + this.uri = entity.getUri(); + this.definition = entity.getDefinition(); + this.startdate = entity.getStartdate(); + this.enddate = entity.getEnddate(); + this.status = entity.getStatus(); + this.created = entity.getCreated(); + this.modified = entity.getModified(); + this.description = entity.getDescription(); + + } + + @Override + public entities.Project toDataModel() { + entities.Project entity = new entities.Project(); + entity.setId(this.id); + entity.setAbbreviation(this.abbreviation); + entity.setLabel(this.label); + entity.setReference(this.reference); + entity.setUri(this.uri); + entity.setDefinition(this.definition); + entity.setStartdate(this.startdate); + entity.setCreated(this.created == null? new Date():this.created); + entity.setEnddate(this.enddate); + entity.setStatus(this.status); + entity.setModified(new Date()); + entity.setDescription(this.description); + return entity; + } +} diff --git a/dmp-backend/src/main/java/models/project/ProjectTableRequest.java b/dmp-backend/src/main/java/models/project/ProjectTableRequest.java new file mode 100644 index 000000000..4afa14eaa --- /dev/null +++ b/dmp-backend/src/main/java/models/project/ProjectTableRequest.java @@ -0,0 +1,36 @@ +package models.project; + +import models.criteria.ProjectCriteria; + +public class ProjectTableRequest { + private int length; + private int offset; + + private ProjectCriteria criteria; + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + + public int getOffset() { + return offset; + } + + public void setOffset(int offset) { + this.offset = offset; + } + + public ProjectCriteria getCriteria() { + return criteria; + } + + public void setCriteria(ProjectCriteria criteria) { + this.criteria = criteria; + } + + +} diff --git a/dmp-backend/src/main/java/rest/entities/DMPs.java b/dmp-backend/src/main/java/rest/entities/DMPs.java index 7bbc0a352..70335e2ba 100644 --- a/dmp-backend/src/main/java/rest/entities/DMPs.java +++ b/dmp-backend/src/main/java/rest/entities/DMPs.java @@ -11,6 +11,10 @@ import models.criteria.OrganisationCriteria; import models.criteria.ResearcherCriteria; import models.criteria.ServiceCriteria; import models.dmp.DataManagementPlan; +import models.dmp.DataManagementPlanTableRequest; +import models.helpers.DataTableData; +import models.project.ProjectTableRequest; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -38,9 +42,12 @@ import dao.entities.ServiceDao; import dao.entities.UserInfoDao; import entities.DMP; import entities.Dataset; +import entities.Project; import entities.UserInfo; import entities.responses.IDLabelPair; import helpers.SerializerProvider; +import managers.DataManagementPlanManager; +import managers.ProjectManager; import utilities.builders.DomainModelConverter; @@ -66,6 +73,42 @@ public class DMPs { // FETCH BY DMP(S) + + @RequestMapping(method = RequestMethod.POST, value = { "/dmps/getPaged" }, consumes = "application/json", produces="application/json") + public @ResponseBody ResponseEntity> getPaged(@RequestBody DataManagementPlanTableRequest dataManagementPlanTableRequest) { + try { + DataTableData dataTable = new DataManagementPlanManager().getPaged(dMPDao, dataManagementPlanTableRequest); + + return ResponseEntity.status(HttpStatus.OK).body(dataTable); + + } catch (Exception ex) { + ex.printStackTrace(); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); + } + } + + @RequestMapping(method = RequestMethod.GET, value = { "/dmps/getSingle/{id}" }, produces="application/json") + public @ResponseBody ResponseEntity getPaged(@PathVariable String id) { + try { + models.dmp.DataManagementPlan project = new DataManagementPlanManager().getSingle(dMPDao, id); + return ResponseEntity.status(HttpStatus.OK).body(project); + + } catch (Exception ex) { + ex.printStackTrace(); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); + } + } + + @Transactional + @RequestMapping(method = RequestMethod.POST, value = { "/dmps/add" }, consumes = "application/json", produces="application/json") + public @ResponseBody ResponseEntity addDmp(@RequestBody models.dmp.DataManagementPlan dataManagementPlan) { + entities.DMP createdProject = dMPDao.update(dataManagementPlan.toDataModel()); + return ResponseEntity.status(HttpStatus.CREATED).body(createdProject); + } + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @RequestMapping(method = RequestMethod.GET, value = { "/dmps" }, produces="text/plain") public @ResponseBody ResponseEntity listDMPs(){ try { diff --git a/dmp-backend/src/main/java/rest/entities/DashBoardController.java b/dmp-backend/src/main/java/rest/entities/DashBoardController.java new file mode 100644 index 000000000..e61e84ba7 --- /dev/null +++ b/dmp-backend/src/main/java/rest/entities/DashBoardController.java @@ -0,0 +1,51 @@ +package rest.entities; + +import java.util.Map; +import java.util.UUID; + +import org.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import dao.entities.DMPDao; +import dao.entities.DMPProfileDao; +import dao.entities.DataRepositoryDao; +import dao.entities.DatasetDao; +import dao.entities.DatasetProfileDao; +import dao.entities.DatasetProfileRulesetDao; +import dao.entities.DatasetProfileViewstyleDao; +import dao.entities.OrganisationDao; +import dao.entities.ProjectDao; +import dao.entities.RegistryDao; +import dao.entities.ResearcherDao; +import dao.entities.ServiceDao; +import managers.DashBoardManager; +import managers.UserManager; +import models.dashboard.DashBoardStatistics; + +@RestController +@CrossOrigin +public class DashBoardController { + + @Autowired private DatasetDao datasetDao; + @Autowired private DMPDao dMPDao; + @Autowired private ProjectDao projectDao; + + @RequestMapping(method = RequestMethod.GET, value = { "/dashboard/getStatistics" }, produces="application/json") + public ResponseEntity getStatistics(){ + try { + DashBoardStatistics statistics = new DashBoardManager().getStatistics(datasetDao, dMPDao, projectDao); + return ResponseEntity.status(HttpStatus.OK).body(statistics); + } + catch(Exception ex) { + ex.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Serialization issue: "+ex.getMessage()); + } + } +} diff --git a/dmp-backend/src/main/java/rest/entities/Projects.java b/dmp-backend/src/main/java/rest/entities/Projects.java index 4ef5066b1..e69aec8a0 100644 --- a/dmp-backend/src/main/java/rest/entities/Projects.java +++ b/dmp-backend/src/main/java/rest/entities/Projects.java @@ -61,6 +61,9 @@ import entities.UserInfo; import entities.responses.IDLabelPair; import helpers.SerializerProvider; import helpers.Transformers; +import managers.ProjectManager; +import models.helpers.DataTableData; +import models.project.ProjectTableRequest; import proxy.config.exceptions.HugeResultSet; import proxy.config.exceptions.NoURLFound; import proxy.fetching.RemoteFetcher; @@ -88,6 +91,43 @@ public class Projects { @Autowired private RemoteFetcher remoteFetcher; + + + + @RequestMapping(method = RequestMethod.POST, value = { "/projects/getPaged" }, consumes = "application/json", produces="application/json") + public @ResponseBody ResponseEntity> getPaged(@RequestBody ProjectTableRequest projectTableRequest) { + try { + DataTableData dataTable = new ProjectManager().getPaged(projectDao, projectTableRequest); + return ResponseEntity.status(HttpStatus.OK).body(dataTable); + + } catch (Exception ex) { + ex.printStackTrace(); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); + } + } + + @RequestMapping(method = RequestMethod.GET, value = { "/projects/getSingle/{id}" }, produces="application/json") + public @ResponseBody ResponseEntity getPaged(@PathVariable String id) { + try { + models.project.Project project = new ProjectManager().getSingle(projectDao, id); + return ResponseEntity.status(HttpStatus.OK).body(project); + } catch (Exception ex) { + ex.printStackTrace(); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); + } + } + + + @Transactional + @RequestMapping(method = RequestMethod.POST, value = { "/projects/add" }, consumes = "application/json", produces="application/json") + public @ResponseBody ResponseEntity addProject(@RequestBody models.project.Project project) { + Project createdProject = projectDao.update(project.toDataModel()); + return ResponseEntity.status(HttpStatus.CREATED).body(createdProject); + } + + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @RequestMapping(method = RequestMethod.GET, value = { "/external/projects" }, produces="application/json") public @ResponseBody ResponseEntity listExternalProjects(@RequestParam(value="query", required=false) String query ){ try { diff --git a/dmp-backend/src/main/webapp/WEB-INF/spring-security.xml b/dmp-backend/src/main/webapp/WEB-INF/spring-security.xml index fc919aa63..5c180fdae 100644 --- a/dmp-backend/src/main/webapp/WEB-INF/spring-security.xml +++ b/dmp-backend/src/main/webapp/WEB-INF/spring-security.xml @@ -24,7 +24,7 @@ - + diff --git a/dmp-frontend/2.4.2 b/dmp-frontend/2.4.2 new file mode 100644 index 000000000..e69de29bb