diff --git a/dmp-backend/src/main/java/eu/eudat/controllers/DMPs.java b/dmp-backend/src/main/java/eu/eudat/controllers/DMPs.java index e9b8cffd2..98aa10cbb 100644 --- a/dmp-backend/src/main/java/eu/eudat/controllers/DMPs.java +++ b/dmp-backend/src/main/java/eu/eudat/controllers/DMPs.java @@ -9,9 +9,11 @@ import javax.transaction.Transactional; import eu.eudat.entities.DMP; import eu.eudat.entities.Dataset; import eu.eudat.entities.UserInfo; +import eu.eudat.models.criteria.DataManagementPlanCriteria; import eu.eudat.models.criteria.OrganisationCriteria; import eu.eudat.models.criteria.ResearcherCriteria; import eu.eudat.models.dmp.DataManagementPlan; +import eu.eudat.models.dmp.DataManagementPlanCriteriaRequest; import eu.eudat.models.dmp.DataManagementPlanTableRequest; import eu.eudat.models.helpers.DataTableData; import eu.eudat.models.helpers.responses.*; @@ -98,7 +100,20 @@ public class DMPs { eu.eudat.entities.DMP createdProject = dMPDao.createOrUpdate(dataManagementPlan.toDataModel()); return ResponseEntity.status(HttpStatus.CREATED).body(createdProject); } - + + + @RequestMapping(method = RequestMethod.POST, value = { "/dmps/get" }, consumes = "application/json", produces="application/json") + public @ResponseBody ResponseItem> getWithCriteria(@RequestBody DataManagementPlanCriteriaRequest dataManagementPlanCriteria) { + try { + List dataTable = new DataManagementPlanManager().getWithCriteria(dMPDao, dataManagementPlanCriteria); + + return new ResponseItem>().status(HttpStatus.OK).payload(dataTable); + + } catch (Exception ex) { + ex.printStackTrace(); + return new ResponseItem>().status(HttpStatus.BAD_REQUEST).message(ex.getMessage()); + } + } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/dmp-backend/src/main/java/eu/eudat/controllers/DashBoardController.java b/dmp-backend/src/main/java/eu/eudat/controllers/DashBoardController.java index ec96dbd48..cd5ddc237 100644 --- a/dmp-backend/src/main/java/eu/eudat/controllers/DashBoardController.java +++ b/dmp-backend/src/main/java/eu/eudat/controllers/DashBoardController.java @@ -24,7 +24,7 @@ public class DashBoardController { @Autowired private ProjectDao projectDao; @RequestMapping(method = RequestMethod.GET, value = { "/dashboard/getStatistics" }, produces="application/json") - public ResponseItem getStatistics(Principal principal){ + public ResponseItem getStatistics(){ try { DashBoardStatistics statistics = new DashBoardManager().getStatistics(datasetDao, dMPDao, projectDao); return new ResponseItem().status(HttpStatus.OK).payload(statistics); diff --git a/dmp-backend/src/main/java/eu/eudat/controllers/Projects.java b/dmp-backend/src/main/java/eu/eudat/controllers/Projects.java index 012657494..7aad6f16b 100644 --- a/dmp-backend/src/main/java/eu/eudat/controllers/Projects.java +++ b/dmp-backend/src/main/java/eu/eudat/controllers/Projects.java @@ -8,7 +8,9 @@ import java.util.UUID; import javax.transaction.Transactional; +import eu.eudat.models.criteria.ProjectCriteria; import eu.eudat.models.helpers.responses.*; +import eu.eudat.models.project.ProjectCriteriaRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -106,8 +108,32 @@ public class Projects { return new ResponseItem().status(HttpStatus.BAD_REQUEST).message(ex.getMessage()); } } - - + + + @Transactional + @RequestMapping(method = RequestMethod.DELETE, value = { "/projects/inactivate/{id}" }, consumes = "application/json", produces="application/json") + public @ResponseBody ResponseItem inactivate(@PathVariable String id) { + try { + Project inactivate = new ProjectManager().inactivate(projectDao,id); + return new ResponseItem().status(HttpStatus.OK); + }catch (Exception ex){ + return new ResponseItem().status(HttpStatus.BAD_REQUEST).message(ex.getMessage()); + } + } + + + @RequestMapping(method = RequestMethod.POST, value = { "/projects/get" }, consumes = "application/json", produces="application/json") + public @ResponseBody ResponseItem> getPaged(@RequestBody ProjectCriteriaRequest projectCriteria) { + try { + List dataTable = new ProjectManager().getCriteria(projectDao, projectCriteria); + return new ResponseItem>().payload(dataTable).status(HttpStatus.OK); + } catch (Exception ex) { + ex.printStackTrace(); + return new ResponseItem>().status(HttpStatus.BAD_REQUEST).message(ex.getMessage()); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @RequestMapping(method = RequestMethod.GET, value = { "/external/projects" }, produces="application/json") diff --git a/dmp-backend/src/main/java/eu/eudat/dao/entities/DMPDaoImpl.java b/dmp-backend/src/main/java/eu/eudat/dao/entities/DMPDaoImpl.java index 276db6e37..5302e1b8e 100644 --- a/dmp-backend/src/main/java/eu/eudat/dao/entities/DMPDaoImpl.java +++ b/dmp-backend/src/main/java/eu/eudat/dao/entities/DMPDaoImpl.java @@ -36,6 +36,7 @@ public class DMPDaoImpl implements DMPDao { 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("created"),criteria.getPeriodEnd())); if(criteria.getPeriodStart()!=null)query.where((builder, root) -> builder.greaterThan(root.get("created"),criteria.getPeriodStart())); + if(criteria.getProjects()!=null&&!criteria.getProjects().isEmpty())query.where(((builder, root) -> root.get("project").in(criteria.getProjectEntities()))); return query; } 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 072ea2342..35afb2417 100644 --- a/dmp-backend/src/main/java/eu/eudat/managers/DataManagementPlanManager.java +++ b/dmp-backend/src/main/java/eu/eudat/managers/DataManagementPlanManager.java @@ -5,6 +5,9 @@ import java.util.UUID; import eu.eudat.dao.entities.DMPDao; import eu.eudat.entities.DMP; +import eu.eudat.models.criteria.DataManagementPlanCriteria; +import eu.eudat.models.dmp.DataManagementPlan; +import eu.eudat.models.dmp.DataManagementPlanCriteriaRequest; import eu.eudat.models.dmp.DataManagementPlanTableRequest; import eu.eudat.models.helpers.DataTableData; import eu.eudat.queryable.QueryableList; @@ -27,4 +30,10 @@ public class DataManagementPlanManager { datamanagementPlan.fromDataModel(dmpsRepository.find(UUID.fromString(id))); return datamanagementPlan; } + + public List getWithCriteria(DMPDao dmpsRepository, DataManagementPlanCriteriaRequest dataManagementPlanCriteria) throws IllegalAccessException, InstantiationException{ + QueryableList items = dmpsRepository.getWithCriteria(dataManagementPlanCriteria.getCriteria()); + List datamanagementPlans = new DomainModelConverter().fromDataModel( items.toList(), eu.eudat.models.dmp.DataManagementPlan.class); + return datamanagementPlans; + } } diff --git a/dmp-backend/src/main/java/eu/eudat/managers/ProjectManager.java b/dmp-backend/src/main/java/eu/eudat/managers/ProjectManager.java index 1affd2bf8..a9a423b8c 100644 --- a/dmp-backend/src/main/java/eu/eudat/managers/ProjectManager.java +++ b/dmp-backend/src/main/java/eu/eudat/managers/ProjectManager.java @@ -4,8 +4,10 @@ import java.util.List; import java.util.UUID; import eu.eudat.dao.entities.ProjectDao; +import eu.eudat.models.criteria.ProjectCriteria; import eu.eudat.models.helpers.DataTableData; import eu.eudat.models.project.Project; +import eu.eudat.models.project.ProjectCriteriaRequest; import eu.eudat.models.project.ProjectTableRequest; import eu.eudat.queryable.QueryableList; import eu.eudat.utilities.builders.DomainModelConverter; @@ -27,4 +29,17 @@ public class ProjectManager { project.fromDataModel(projectRepository.find(UUID.fromString(id))); return project; } + + public eu.eudat.entities.Project inactivate(ProjectDao projectRepository,String id) throws InstantiationException, IllegalAccessException{ + eu.eudat.entities.Project project = projectRepository.find(UUID.fromString(id)); + project.setStatus(Project.Status.DELETED.getValue()); + project = projectRepository.createOrUpdate(project); + return project; + } + + public List getCriteria(ProjectDao projectRepository, ProjectCriteriaRequest projectCriteria) throws IllegalAccessException, InstantiationException{ + QueryableList items = projectRepository.getWithCriteria(projectCriteria.getCriteria()); + List projects = new DomainModelConverter().fromDataModel(items.toList(), eu.eudat.models.project.Project.class); + return projects; + } } diff --git a/dmp-backend/src/main/java/eu/eudat/models/criteria/DataManagementPlanCriteria.java b/dmp-backend/src/main/java/eu/eudat/models/criteria/DataManagementPlanCriteria.java index 7ad8b8d9b..73d530201 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/criteria/DataManagementPlanCriteria.java +++ b/dmp-backend/src/main/java/eu/eudat/models/criteria/DataManagementPlanCriteria.java @@ -1,13 +1,18 @@ package eu.eudat.models.criteria; import eu.eudat.entities.DMP; +import eu.eudat.models.project.Project; +import eu.eudat.utilities.builders.DomainModelConverter; import java.util.Date; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; public class DataManagementPlanCriteria extends Criteria{ private Date periodStart; private Date periodEnd; - + private List projects; public Date getPeriodStart() { return periodStart; } @@ -23,4 +28,16 @@ public class DataManagementPlanCriteria extends Criteria{ public void setPeriodEnd(Date periodEnd) { this.periodEnd = periodEnd; } + + public List getProjects() { + return projects; + } + + public void setProjects(List projects) { + this.projects = projects; + } + + public List getProjectEntities(){ + return new DomainModelConverter().toDataModel(this.projects); + } } diff --git a/dmp-backend/src/main/java/eu/eudat/models/dmp/DataManagementPlanCriteriaRequest.java b/dmp-backend/src/main/java/eu/eudat/models/dmp/DataManagementPlanCriteriaRequest.java new file mode 100644 index 000000000..9400b33de --- /dev/null +++ b/dmp-backend/src/main/java/eu/eudat/models/dmp/DataManagementPlanCriteriaRequest.java @@ -0,0 +1,10 @@ +package eu.eudat.models.dmp; + +import eu.eudat.models.criteria.DataManagementPlanCriteria; +import eu.eudat.models.helpers.requests.RequestItem; + +/** + * Created by ikalyvas on 12/19/2017. + */ +public class DataManagementPlanCriteriaRequest extends RequestItem{ +} 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 413c05e27..59411b942 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 @@ -13,7 +13,7 @@ import eu.eudat.models.dmp.DataManagementPlan; public class Project implements DataModel{ public enum Status { - ACTIVE((short) 0), INACTIVE((short) 1); + ACTIVE((short) 1), INACTIVE((short) 0),DELETED((short)99); private short value; private Status(short value) { this.value = value; } @@ -24,6 +24,8 @@ public class Project implements DataModel{ return ACTIVE; case 1: return INACTIVE; + case 99: + return INACTIVE; default: throw new RuntimeException("Unsupported Project Status"); } @@ -201,7 +203,7 @@ public class Project implements DataModel{ entity.setStartdate(this.startDate); entity.setCreated(this.created == null? new Date():this.created); entity.setEnddate(this.endDate); - entity.setStatus(this.status!=null?this.getStatus():1); + entity.setStatus(this.status!=null?this.getStatus():Status.ACTIVE.getValue()); entity.setModified(new Date()); entity.setDescription(this.description); return entity; diff --git a/dmp-backend/src/main/java/eu/eudat/models/project/ProjectCriteriaRequest.java b/dmp-backend/src/main/java/eu/eudat/models/project/ProjectCriteriaRequest.java new file mode 100644 index 000000000..2eb111557 --- /dev/null +++ b/dmp-backend/src/main/java/eu/eudat/models/project/ProjectCriteriaRequest.java @@ -0,0 +1,10 @@ +package eu.eudat.models.project; + +import eu.eudat.models.criteria.ProjectCriteria; +import eu.eudat.models.helpers.requests.RequestItem; + +/** + * Created by ikalyvas on 12/18/2017. + */ +public class ProjectCriteriaRequest extends RequestItem{ +} diff --git a/dmp-frontend/src/app/app-routing.module.ts b/dmp-frontend/src/app/app-routing.module.ts index acc108568..c4e80203e 100644 --- a/dmp-frontend/src/app/app-routing.module.ts +++ b/dmp-frontend/src/app/app-routing.module.ts @@ -1,3 +1,4 @@ +import { UnauthorizedComponent } from './unauthorized/unauthorized.component'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { PageNotFoundComponent } from './not-found.component'; @@ -19,35 +20,16 @@ const appRoutes: Routes = [ { path: 'dynamic-form/:id', component: DynamicFormComponent, canActivate: [AuthGuard] }, //{ path: 'dataset', component: DatasetsComponent }, - { path: 'login', component: MainSignInComponent}, - { path: 'projects', component: ProjectListingComponent}, - { path: 'project/:id', component: ProjectEditorComponent}, - { path: 'projects/new', component: ProjectEditorComponent}, - { path: 'dmps', component: DataManagementPlanListingComponent}, - { path: 'dmp/:id', component: DataManagementPlanEditorComponent}, - { path: 'dmps/new', component: DataManagementPlanEditorComponent}, - // { path: 'dmps', - // component: DataManagementPlanListingComponent, - // children: [ - // { - // path: "dmp", - // component: DmpDetailedComponent, - // data: { - // //breadcrumb: "Sign In" - // } - // }, - // { - // path: "project", - // component: ProjectDetailedComponent, - // data: { - // //breadcrumb: "Sign Up" - // } - // } - // ] - // }, - { path: 'welcome', component: HomepageComponent}, - { path: '', redirectTo: '/login', pathMatch: 'full' }, - { path: '**', component: PageNotFoundComponent } + { path: 'projects', component: ProjectListingComponent, canActivate: [AuthGuard]}, + { path: 'project/:id', component: ProjectEditorComponent, canActivate: [AuthGuard]}, + { path: 'projects/new', component: ProjectEditorComponent, canActivate: [AuthGuard]}, + { path: 'dmps', component: DataManagementPlanListingComponent, canActivate: [AuthGuard]}, + { path: 'dmp/:id', component: DataManagementPlanEditorComponent, canActivate: [AuthGuard]}, + { path: 'dmps/new', component: DataManagementPlanEditorComponent, canActivate: [AuthGuard]}, + { path: 'login', component: MainSignInComponent}, + { path: "unauthorized", loadChildren: './unauthorized/unauthorized.module#UnauthorizedModule' }, + { path: 'welcome', component: HomepageComponent, canActivate: [AuthGuard]}, + { path: '', redirectTo: '/welcome', pathMatch: 'full' }, ]; diff --git a/dmp-frontend/src/app/app.module.ts b/dmp-frontend/src/app/app.module.ts index cb706e435..50d6f6571 100644 --- a/dmp-frontend/src/app/app.module.ts +++ b/dmp-frontend/src/app/app.module.ts @@ -1,3 +1,4 @@ +import { UnauthorizedComponent } from './unauthorized/unauthorized.component'; import { PaginationService } from './form/pagination/pagination-service'; import { TableOfContentsFieldComponent, diff --git a/dmp-frontend/src/app/services/auth/auth.service.ts b/dmp-frontend/src/app/services/auth/auth.service.ts index 18146443d..0233d88bc 100644 --- a/dmp-frontend/src/app/services/auth/auth.service.ts +++ b/dmp-frontend/src/app/services/auth/auth.service.ts @@ -24,7 +24,7 @@ export class AuthService { public router: Router ) { - this.actionUrl = HostConfiguration.Server + 'api/auth/'; + this.actionUrl = HostConfiguration.Server + 'login/'; this.headers = new HttpHeaders(); this.headers = this.headers.set('Content-Type', 'application/json'); @@ -62,11 +62,11 @@ export class AuthService { //} public login(loginInfo: LoginInfo): Observable { - const url = this.actionUrl + 'login'; + const url = this.actionUrl + 'externallogin'; return this.http.post(url, loginInfo, { headers: this.headers }) - .map((res: Response) => { - const principal = this.current(new JsonSerializer().fromJSONObject(res, Principal)); + .map((res: any) => { + const principal = this.current(new JsonSerializer().fromJSONObject(res.payload, Principal)); //this.loginContextSubject.next(true); return principal; }) diff --git a/dmp-frontend/src/app/shared/components/navigation/navigation.component.html b/dmp-frontend/src/app/shared/components/navigation/navigation.component.html index b345debb9..4161830ab 100644 --- a/dmp-frontend/src/app/shared/components/navigation/navigation.component.html +++ b/dmp-frontend/src/app/shared/components/navigation/navigation.component.html @@ -3,8 +3,8 @@
Forms - Configuration +