diff --git a/dmp-backend/src/main/java/eu/eudat/dao/entities/ProjectDaoImpl.java b/dmp-backend/src/main/java/eu/eudat/dao/entities/ProjectDaoImpl.java index fc60106c0..899b95084 100644 --- a/dmp-backend/src/main/java/eu/eudat/dao/entities/ProjectDaoImpl.java +++ b/dmp-backend/src/main/java/eu/eudat/dao/entities/ProjectDaoImpl.java @@ -1,6 +1,7 @@ package eu.eudat.dao.entities; import java.util.UUID; + import eu.eudat.dao.DatabaseAccess; import eu.eudat.dao.databaselayer.service.DatabaseService; import eu.eudat.entities.*; @@ -13,48 +14,53 @@ import org.springframework.stereotype.Component; @Component("projectDao") public class ProjectDaoImpl extends DatabaseAccess implements ProjectDao { - @Autowired - public ProjectDaoImpl(DatabaseService databaseService) { - this.setDatabaseService(databaseService); - } + @Autowired + public ProjectDaoImpl(DatabaseService databaseService) { + this.setDatabaseService(databaseService); + } - @Override - public QueryableList getWithCriteria(ProjectCriteria criteria) { - QueryableList query = getDatabaseService().getQueryable(Project.class); - if(criteria.getLike()!=null&&!criteria.getLike().isEmpty())query.where((builder, root) -> builder.like(root.get("label"),"%"+criteria.getLike()+"%")); - if(criteria.getPeriodEnd()!=null)query.where((builder, root) -> builder.lessThan(root.get("enddate"),criteria.getPeriodEnd())); - if(criteria.getPeriodStart()!=null)query.where((builder, root) -> builder.greaterThan(root.get("startdate"),criteria.getPeriodStart())); - query.where((builder, root) -> builder.notEqual(root.get("status"), Project.Status.DELETED.getValue())); - return query; - } + @Override + public QueryableList getWithCriteria(ProjectCriteria criteria) { + QueryableList query = getDatabaseService().getQueryable(Project.class); + if (criteria.getLike() != null && !criteria.getLike().isEmpty()) + query.where((builder, root) -> builder.like(root.get("label"), "%" + criteria.getLike() + "%")); + if (criteria.getPeriodEnd() != null) + query.where((builder, root) -> builder.lessThan(root.get("enddate"), criteria.getPeriodEnd())); + if (criteria.getPeriodStart() != null) + query.where((builder, root) -> builder.greaterThan(root.get("startdate"), criteria.getPeriodStart())); + if (criteria.getReference() != null) + query.where((builder, root) -> builder.equal(root.get("reference"), criteria.getReference())); + query.where((builder, root) -> builder.notEqual(root.get("status"), Project.Status.DELETED.getValue())); + return query; + } - @Override - public Project createOrUpdate(Project item) { - return getDatabaseService().createOrUpdate(item,Project.class); - } + @Override + public Project createOrUpdate(Project item) { + return getDatabaseService().createOrUpdate(item, Project.class); + } - @Override - public Project find(UUID id) { - return getDatabaseService().getQueryable(Project.class).where((builder, root) -> builder.equal((root.get("id")),id)).getSingle(); - } + @Override + public Project find(UUID id) { + return getDatabaseService().getQueryable(Project.class).where((builder, root) -> builder.equal((root.get("id")), id)).getSingle(); + } - @Override - public Long count() { - return this.getDatabaseService().count(Project.class); - } + @Override + public Long count() { + return this.getDatabaseService().count(Project.class); + } - @Override - public void delete(Project item) { - this.getDatabaseService().delete(item); - } + @Override + public void delete(Project item) { + this.getDatabaseService().delete(item); + } - @Override - public QueryableList asQueryable() { - return this.getDatabaseService().getQueryable(Project.class); - } + @Override + public QueryableList asQueryable() { + return this.getDatabaseService().getQueryable(Project.class); + } - public QueryableList getAuthenticated(QueryableList query, UserInfo principal) { - query.where((builder, root) -> builder.equal(root.get("creator"), principal)); - return query; - } + public QueryableList getAuthenticated(QueryableList query, UserInfo principal) { + query.where((builder, root) -> builder.equal(root.get("creator"), principal)); + return query; + } } diff --git a/dmp-backend/src/main/java/eu/eudat/entities/DMP.java b/dmp-backend/src/main/java/eu/eudat/entities/DMP.java index 68bebb450..acc9935ca 100644 --- a/dmp-backend/src/main/java/eu/eudat/entities/DMP.java +++ b/dmp-backend/src/main/java/eu/eudat/entities/DMP.java @@ -258,6 +258,7 @@ public class DMP implements Serializable, DataEntity { this.label = entity.getLabel(); this.status = entity.getStatus(); this.created = entity.created; + this.project = entity.getProject(); this.description = entity.getDescription(); this.researchers = entity.getResearchers(); this.organisations = entity.getOrganisations(); diff --git a/dmp-backend/src/main/java/eu/eudat/managers/DataManagementPlanManager.java b/dmp-backend/src/main/java/eu/eudat/managers/DataManagementPlanManager.java index e7d26aa5b..374094630 100644 --- a/dmp-backend/src/main/java/eu/eudat/managers/DataManagementPlanManager.java +++ b/dmp-backend/src/main/java/eu/eudat/managers/DataManagementPlanManager.java @@ -106,9 +106,9 @@ public class DataManagementPlanManager { if (newDmp.getProject() != null) { Project project = newDmp.getProject(); ProjectCriteria criteria = new ProjectCriteria(); - criteria.setLike(project.getReference()); - List entries = projectDao.getWithCriteria(criteria).toList(); - if (entries != null && !entries.isEmpty()) project.setId(entries.get(0).getId()); + criteria.setReference(project.getReference()); + eu.eudat.entities.Project projectEntity = projectDao.getWithCriteria(criteria).getSingleOrDefault(); + if (projectEntity != null) project.setId(projectEntity.getId()); else { project.setCreationUser(userInfo); projectDao.createOrUpdate(project); diff --git a/dmp-backend/src/main/java/eu/eudat/models/criteria/ProjectCriteria.java b/dmp-backend/src/main/java/eu/eudat/models/criteria/ProjectCriteria.java index 9255fffef..e8b1216d7 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/criteria/ProjectCriteria.java +++ b/dmp-backend/src/main/java/eu/eudat/models/criteria/ProjectCriteria.java @@ -7,7 +7,7 @@ import java.util.Date; public class ProjectCriteria extends Criteria{ private Date periodStart; private Date periodEnd; - + private String reference; public Date getPeriodStart() { return periodStart; } @@ -23,4 +23,12 @@ public class ProjectCriteria extends Criteria{ public void setPeriodEnd(Date periodEnd) { this.periodEnd = periodEnd; } + + public String getReference() { + return reference; + } + + public void setReference(String reference) { + this.reference = reference; + } } diff --git a/dmp-backend/src/main/java/eu/eudat/models/project/Project.java b/dmp-backend/src/main/java/eu/eudat/models/project/Project.java index 8bba817b1..d6dfb2876 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/project/Project.java +++ b/dmp-backend/src/main/java/eu/eudat/models/project/Project.java @@ -12,9 +12,6 @@ import eu.eudat.models.dmp.DataManagementPlan; public class Project implements DataModel { - - - private UUID id; private List dmps; @@ -170,7 +167,6 @@ public class Project implements DataModel { this.created = entity.getCreated(); this.modified = entity.getModified(); this.description = entity.getDescription(); - } @Override @@ -179,7 +175,7 @@ public class Project implements DataModel { entity.setId(this.id); entity.setAbbreviation(this.abbreviation); entity.setLabel(this.label); - entity.setReference(this.reference); + entity.setReference(this.reference == null ? "dmp:"+this.label : this.reference); entity.setUri(this.uri); entity.setDefinition(this.definition); entity.setStartdate(this.startDate);