From b722e5d886ab1df171cf24b15d155578b00b3a2b Mon Sep 17 00:00:00 2001 From: annabakouli Date: Thu, 21 Dec 2017 12:38:18 +0200 Subject: [PATCH] no message --- .../java/eu/eudat/controllers/Datasets.java | 11 ++++ .../eu/eudat/managers/DatasetManager.java | 52 ++++++++++++++++++- dmp-frontend/src/app/app-routing.module.ts | 4 +- .../app/services/dataset/dataset.service.ts | 2 +- 4 files changed, 64 insertions(+), 5 deletions(-) diff --git a/dmp-backend/src/main/java/eu/eudat/controllers/Datasets.java b/dmp-backend/src/main/java/eu/eudat/controllers/Datasets.java index 1131a4b49..6b28464ca 100644 --- a/dmp-backend/src/main/java/eu/eudat/controllers/Datasets.java +++ b/dmp-backend/src/main/java/eu/eudat/controllers/Datasets.java @@ -88,6 +88,17 @@ public class Datasets { } } + @RequestMapping(method = RequestMethod.GET, value = { "/datasets/createOrUpdate" }, produces="application/json") + public @ResponseBody ResponseItem createOrUpdate(@PathVariable eu.eudat.models.dataset.Dataset profile) { + try { + DatasetManager.createOrUpdate(datasetDao, dataRepositoryDao,serviceDao,registryDao,profile); + return new ResponseItem().status(HttpStatus.OK); + } 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/managers/DatasetManager.java b/dmp-backend/src/main/java/eu/eudat/managers/DatasetManager.java index 81308bbfd..bc9860606 100644 --- a/dmp-backend/src/main/java/eu/eudat/managers/DatasetManager.java +++ b/dmp-backend/src/main/java/eu/eudat/managers/DatasetManager.java @@ -1,7 +1,9 @@ package eu.eudat.managers; -import eu.eudat.dao.entities.DatasetDao; -import eu.eudat.dao.entities.ProjectDao; +import eu.eudat.dao.entities.*; +import eu.eudat.models.criteria.DataRepositoryCriteria; +import eu.eudat.models.criteria.RegistryCriteria; +import eu.eudat.models.criteria.ServiceCriteria; import eu.eudat.models.dataset.Dataset; import eu.eudat.models.dataset.DatasetTableRequest; import eu.eudat.models.helpers.DataTableData; @@ -35,4 +37,50 @@ public class DatasetManager { return dataset; } + public static void createOrUpdate(DatasetDao datatasetRepository, DataRepositoryDao dataRepositoryDao, ServiceDao serviceDao, RegistryDao registryDao, Dataset profile) throws InstantiationException, IllegalAccessException{ + eu.eudat.entities.Dataset dataset = profile.toDataModel(); + createRegistriesIfTheyDontExist(registryDao,dataset); + createDataRepositoriesIfTheyDontExist(dataRepositoryDao,dataset); + createServicesIfTheyDontExist(serviceDao,dataset); + datatasetRepository.createOrUpdate(dataset); + } + + + private static void createRegistriesIfTheyDontExist(RegistryDao registryDao, eu.eudat.entities.Dataset dataset){ + if(dataset.getRegistries()!=null&&!dataset.getRegistries().isEmpty()){ + for(eu.eudat.entities.Registry registry : dataset.getRegistries()){ + RegistryCriteria criteria = new RegistryCriteria(); + criteria.setLike(registry.getReference()); + List entries = registryDao.listBy(criteria); + if(entries!=null&&!entries.isEmpty())registry.setId( entries.get(0).getId()); + else registry = registryDao.create(registry); + } + } + } + + private static void createServicesIfTheyDontExist(ServiceDao serviceDao,eu.eudat.entities.Dataset dataset){ + if(dataset.getServices()!=null&&!dataset.getServices().isEmpty()){ + for(eu.eudat.entities.Service service : dataset.getServices()){ + ServiceCriteria criteria = new ServiceCriteria(); + criteria.setLike(service.getReference()); + List entries = serviceDao.listBy(criteria); + if(entries!=null&&!entries.isEmpty())service.setId(entries.get(0).getId()); + else service = serviceDao.create(service); + } + } + } + + private static void createDataRepositoriesIfTheyDontExist(DataRepositoryDao dataRepositoryDao,eu.eudat.entities.Dataset dataset){ + if(dataset.getDataRepositories()!=null&&!dataset.getDataRepositories().isEmpty()){ + for(eu.eudat.entities.DataRepository dataRepo : dataset.getDataRepositories()){ + DataRepositoryCriteria criteria = new DataRepositoryCriteria(); + criteria.setLike(dataRepo.getReference()); + List entries = dataRepositoryDao.listBy(criteria); + if(entries!=null&&!entries.isEmpty())dataRepo.setId(entries.get(0).getId()); + else dataRepo = dataRepositoryDao.createOrUpdate(dataRepo); + } + } + } + + } diff --git a/dmp-frontend/src/app/app-routing.module.ts b/dmp-frontend/src/app/app-routing.module.ts index 2ea041975..d07dd3a5a 100644 --- a/dmp-frontend/src/app/app-routing.module.ts +++ b/dmp-frontend/src/app/app-routing.module.ts @@ -27,8 +27,8 @@ const appRoutes: Routes = [ { path: 'dmps/new', component: DataManagementPlanEditorComponent, canActivate: [AuthGuard] }, { path: 'datasets', component: DatasetListingComponent, canActivate: [AuthGuard] }, { path: 'dataset/new', component: DatasetWizardComponent, canActivate: [AuthGuard] }, - { path: 'dataset/:id', component: DatasetEditorComponent, canActivate: [AuthGuard] }, - { path: 'datasets/new', component: DatasetEditorComponent, canActivate: [AuthGuard] }, + { path: 'dataset/:id', component: DatasetWizardComponent, canActivate: [AuthGuard] }, + { path: 'datasets/new', component: DatasetWizardComponent, canActivate: [AuthGuard] }, { path: 'login', component: LoginComponent }, { path: "unauthorized", loadChildren: './unauthorized/unauthorized.module#UnauthorizedModule' }, diff --git a/dmp-frontend/src/app/services/dataset/dataset.service.ts b/dmp-frontend/src/app/services/dataset/dataset.service.ts index e317e2bca..82b6a29cf 100644 --- a/dmp-frontend/src/app/services/dataset/dataset.service.ts +++ b/dmp-frontend/src/app/services/dataset/dataset.service.ts @@ -35,6 +35,6 @@ export class DatasetService { } createDataset(datasetModel: DatasetModel): Observable { - return this.http.post(this.actionUrl + 'add', datasetModel, { headers: this.headers }); + return this.http.post(this.actionUrl + 'createOrUpdate', datasetModel, { headers: this.headers }); } }