From 7159460f7a661ae3179a0c788278608a946f83ca Mon Sep 17 00:00:00 2001 From: Ioannis Kalyvas Date: Fri, 31 Aug 2018 17:12:31 +0300 Subject: [PATCH] no message --- .../main/java/eu/eudat/controllers/Admin.java | 43 +++---- .../eudat/controllers/CommonController.java | 20 +-- .../controllers/DMPProfileController.java | 46 ++----- .../main/java/eu/eudat/controllers/DMPs.java | 98 ++++----------- .../controllers/DashBoardController.java | 46 ++----- .../eudat/controllers/DataRepositories.java | 13 +- .../controllers/DatasetProfileController.java | 55 ++++----- .../eu/eudat/controllers/DatasetProfiles.java | 38 ++---- .../controllers/DatasetWizardController.java | 116 +++++++----------- .../java/eu/eudat/controllers/Datasets.java | 24 +--- .../eudat/controllers/ExternalDatasets.java | 38 ++---- .../eu/eudat/controllers/FileController.java | 32 ++--- .../main/java/eu/eudat/controllers/Login.java | 72 +++-------- .../eu/eudat/controllers/Organisations.java | 22 ++-- .../java/eu/eudat/controllers/Projects.java | 94 +++++--------- .../java/eu/eudat/controllers/Registries.java | 21 +--- .../eu/eudat/controllers/Researchers.java | 52 +++----- .../java/eu/eudat/controllers/Services.java | 20 +-- .../eu/eudat/controllers/TagController.java | 33 ++--- .../controllers/UserInvitationController.java | 39 ++---- .../main/java/eu/eudat/controllers/Users.java | 45 ++----- .../ControllerErrorHandler.java | 12 +- ...taManagementPlanTableRequestValidator.java | 24 ++-- .../validators/DatasetProfileValidator.java | 18 +-- .../validators/ProjectModelValidator.java | 23 ++-- .../ProjectTableRequestValidator.java | 32 ++--- .../fluentvalidator/FluentValidator.java | 22 ++-- .../FluentValidatorBuilder.java | 68 ++++++++++ .../FluentValidatorResult.java | 32 +++++ .../validators/fluentvalidator/Rule.java | 8 ++ .../predicates/ComparisonOperator.java | 8 ++ .../predicates/ConditionalOperator.java | 8 ++ .../rules/AbstractFluentValidatorRule.java | 20 +++ .../fluentvalidator/rules/CompareRule.java | 24 ++++ .../fluentvalidator/rules/NotEmptyRule.java | 18 +++ 35 files changed, 538 insertions(+), 746 deletions(-) create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/FluentValidatorBuilder.java create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/FluentValidatorResult.java create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/Rule.java create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/predicates/ComparisonOperator.java create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/predicates/ConditionalOperator.java create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/rules/AbstractFluentValidatorRule.java create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/rules/CompareRule.java create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/rules/NotEmptyRule.java diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java index 0fac64e6a..e6668e6c5 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java @@ -1,11 +1,11 @@ package eu.eudat.controllers; import eu.eudat.logic.managers.AdminManager; +import eu.eudat.logic.security.claims.ClaimedAuthorities; +import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.admin.composite.DatasetProfile; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.security.Principal; -import eu.eudat.logic.security.claims.ClaimedAuthorities; -import eu.eudat.logic.services.ApiContext; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -31,43 +31,28 @@ public class Admin extends BaseController { @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/admin/addDmp"}, consumes = "application/json", produces = "application/json") public ResponseEntity addDmp(@Valid @RequestBody DatasetProfile profile, @ClaimedAuthorities(claims = {ADMIN}) Principal principal) { - try { - eu.eudat.data.entities.DatasetProfile modelDefinition = AdminManager.generateViewStyleDefinition(profile, getApiContext()); - this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().createOrUpdate(modelDefinition); - return ResponseEntity.status(HttpStatus.OK).body(modelDefinition.getId()); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("{\"reason\":\"" + ex.getMessage() + "\"}"); - } + eu.eudat.data.entities.DatasetProfile modelDefinition = AdminManager.generateViewStyleDefinition(profile, getApiContext()); + this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().createOrUpdate(modelDefinition); + return ResponseEntity.status(HttpStatus.OK).body(modelDefinition.getId()); } @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/admin/addDmp/{id}"}, consumes = "application/json", produces = "application/json") public ResponseEntity> updateDmp(@PathVariable String id, @RequestBody DatasetProfile profile, @ClaimedAuthorities(claims = {ADMIN}) Principal principal) { - try { - eu.eudat.data.entities.DatasetProfile modelDefinition = AdminManager.generateViewStyleDefinition(profile, getApiContext()); + eu.eudat.data.entities.DatasetProfile modelDefinition = AdminManager.generateViewStyleDefinition(profile, getApiContext()); - eu.eudat.data.entities.DatasetProfile datasetprofile = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(id)); - datasetprofile.setDefinition(modelDefinition.getDefinition()); - this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().createOrUpdate(datasetprofile); + eu.eudat.data.entities.DatasetProfile datasetprofile = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(id)); + datasetprofile.setDefinition(modelDefinition.getDefinition()); + this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().createOrUpdate(datasetprofile); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); } @RequestMapping(method = RequestMethod.GET, value = {"/admin/get/{id}"}, produces = "application/json") public ResponseEntity> get(@PathVariable String id, @ClaimedAuthorities(claims = {ADMIN}) Principal principal) { - try { - eu.eudat.data.entities.DatasetProfile profile = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(id)); - eu.eudat.models.data.admin.composite.DatasetProfile datasetprofile = AdminManager.generateDatasetProfileModel(profile); - datasetprofile.setLabel(profile.getLabel()); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(datasetprofile)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE)); - } + eu.eudat.data.entities.DatasetProfile profile = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(id)); + eu.eudat.models.data.admin.composite.DatasetProfile datasetprofile = AdminManager.generateDatasetProfileModel(profile); + datasetprofile.setLabel(profile.getLabel()); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(datasetprofile)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/CommonController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/CommonController.java index 5dcda39cb..bb433ac93 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/CommonController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/CommonController.java @@ -3,9 +3,9 @@ package eu.eudat.controllers; import eu.eudat.configurations.dynamicproject.DynamicProjectConfiguration; import eu.eudat.configurations.dynamicproject.entities.Language; import eu.eudat.logic.managers.CommonsManager; +import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; import eu.eudat.models.data.externalurl.ExternalSourcesConfiguration; import eu.eudat.models.data.helpers.responses.ResponseItem; -import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -34,24 +34,14 @@ public class CommonController { @RequestMapping(method = RequestMethod.GET, value = {"/language"}, produces = "application/json") public @ResponseBody ResponseEntity>> getPaged() { - try { - List language = this.dynamicProjectConfiguration.getConfiguration().getMainExternalField().getLanguage(); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(language)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + List language = this.dynamicProjectConfiguration.getConfiguration().getMainExternalField().getLanguage(); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(language)); } @RequestMapping(method = RequestMethod.GET, value = {"/externalSourcesConfiguration"}, produces = "application/json") public @ResponseBody ResponseEntity> getExternalSourcesConfiguration() { - try { - ExternalSourcesConfiguration configuration = CommonsManager.getExternalSourcesConfiguration(configLoader); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(configuration)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ExternalSourcesConfiguration configuration = CommonsManager.getExternalSourcesConfiguration(configLoader); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(configuration)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPProfileController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPProfileController.java index ea9549d8e..c23f4f146 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPProfileController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPProfileController.java @@ -4,11 +4,11 @@ import eu.eudat.data.entities.DMPProfile; import eu.eudat.data.query.items.item.dmpprofile.DataManagementPlanProfileCriteriaRequest; import eu.eudat.data.query.items.table.dmpprofile.DataManagementPlanProfileTableRequest; import eu.eudat.logic.managers.DataManagementProfileManager; +import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.listingmodels.DataManagementPlanProfileListingModel; import eu.eudat.models.data.security.Principal; -import eu.eudat.logic.services.ApiContext; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -35,50 +35,30 @@ public class DMPProfileController extends BaseController { @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/createOrUpdate"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity> createOrUpdate(@RequestBody DataManagementPlanProfileListingModel dataManagementPlan, Principal principal) { - try { - DataManagementProfileManager.createOrUpdate(this.getApiContext(), dataManagementPlan, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Created")); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> createOrUpdate(@RequestBody DataManagementPlanProfileListingModel dataManagementPlan, Principal principal) throws Exception { + DataManagementProfileManager.createOrUpdate(this.getApiContext(), dataManagementPlan, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Created")); } @RequestMapping(method = RequestMethod.GET, value = {"/getSingle/{id}"}, produces = "application/json") public @ResponseBody - ResponseEntity> getSingle(@PathVariable String id, Principal principal) { - try { - DataManagementPlanProfileListingModel dataManagementPlanProfileListingModel = new DataManagementProfileManager().getSingle(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpProfileDao(), id, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(dataManagementPlanProfileListingModel)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> getSingle(@PathVariable String id, Principal principal) throws IllegalAccessException, InstantiationException { + DataManagementPlanProfileListingModel dataManagementPlanProfileListingModel = new DataManagementProfileManager().getSingle(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpProfileDao(), id, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(dataManagementPlanProfileListingModel)); } @RequestMapping(method = RequestMethod.POST, value = {"/getPaged"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getPaged(@Valid @RequestBody DataManagementPlanProfileTableRequest dataManagementPlanProfileTableRequest, Principal principal) { - try { - DataTableData dataTable = new DataManagementProfileManager().getPaged(this.getApiContext(), dataManagementPlanProfileTableRequest, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> getPaged(@Valid @RequestBody DataManagementPlanProfileTableRequest dataManagementPlanProfileTableRequest, Principal principal) throws Exception { + DataTableData dataTable = new DataManagementProfileManager().getPaged(this.getApiContext(), dataManagementPlanProfileTableRequest, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); } @RequestMapping(method = RequestMethod.POST, value = {"/get"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getWithCriteria(@RequestBody DataManagementPlanProfileCriteriaRequest dataManagementPlanCriteria, Principal principal) { - try { - List dataTable = new DataManagementProfileManager().getWithCriteria(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpProfileDao(), dataManagementPlanCriteria); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> getWithCriteria(@RequestBody DataManagementPlanProfileCriteriaRequest dataManagementPlanCriteria, Principal principal) throws InstantiationException, IllegalAccessException { + List dataTable = new DataManagementProfileManager().getWithCriteria(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpProfileDao(), dataManagementPlanCriteria); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java index 31f6b0520..83ad19c5a 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java @@ -1,22 +1,20 @@ package eu.eudat.controllers; +import eu.eudat.configurations.dynamicproject.DynamicProjectConfiguration; import eu.eudat.data.dao.criteria.DynamicFieldsCriteria; import eu.eudat.data.dao.criteria.RequestItem; import eu.eudat.data.entities.DMP; import eu.eudat.data.query.items.item.dmp.DataManagementPlanCriteriaRequest; import eu.eudat.data.query.items.table.dmp.DataManagementPlanTableRequest; -import eu.eudat.configurations.dynamicproject.DynamicProjectConfiguration; -import eu.eudat.exceptions.datamanagementplan.DMPWithDatasetsException; -import eu.eudat.exceptions.security.UnauthorisedException; import eu.eudat.logic.managers.DataManagementPlanManager; +import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.dmp.DataManagementPlan; import eu.eudat.models.data.helpermodels.Tuple; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.listingmodels.DataManagementPlanListingModel; import eu.eudat.models.data.security.Principal; -import eu.eudat.logic.services.ApiContext; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -44,106 +42,60 @@ public class DMPs extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/dmps/getPaged"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getPaged(@Valid @RequestBody DataManagementPlanTableRequest dataManagementPlanTableRequest, Principal principal) { - try { - DataTableData dataTable = new DataManagementPlanManager().getPaged(this.getApiContext(), dataManagementPlanTableRequest, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> getPaged(@Valid @RequestBody DataManagementPlanTableRequest dataManagementPlanTableRequest, Principal principal) throws Exception { + DataTableData dataTable = new DataManagementPlanManager().getPaged(this.getApiContext(), dataManagementPlanTableRequest, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); } @RequestMapping(method = RequestMethod.GET, value = {"/dmps/getSingle/{id}"}, produces = "application/json") public @ResponseBody - ResponseEntity> getSingle(@PathVariable String id, Principal principal) { - try { - eu.eudat.models.data.dmp.DataManagementPlan dataManagementPlan = new DataManagementPlanManager().getSingle(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao(), id, principal, this.dynamicProjectConfiguration); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(dataManagementPlan)); - - }catch (UnauthorisedException ex) { - throw ex; - } - catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> getSingle(@PathVariable String id, Principal principal) throws IllegalAccessException, InstantiationException { + eu.eudat.models.data.dmp.DataManagementPlan dataManagementPlan = new DataManagementPlanManager().getSingle(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao(), id, principal, this.dynamicProjectConfiguration); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(dataManagementPlan)); } @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/dmps/createOrUpdate"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity> createOrUpdate(@RequestBody eu.eudat.models.data.dmp.DataManagementPlan dataManagementPlan, Principal principal) { - try { - DataManagementPlanManager.createOrUpdate(this.getApiContext(), dataManagementPlan, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Created")); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> createOrUpdate(@RequestBody eu.eudat.models.data.dmp.DataManagementPlan dataManagementPlan, Principal principal) throws Exception { + DataManagementPlanManager.createOrUpdate(this.getApiContext(), dataManagementPlan, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Created")); } @RequestMapping(method = RequestMethod.POST, value = {"/dmps/new/{id}"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity> newVersion(@PathVariable UUID id, @Valid @RequestBody eu.eudat.models.data.dmp.DataManagementPlanNewVersionModel dataManagementPlan, Principal principal) { - try { - DataManagementPlanManager.newVersion(this.getApiContext(), id, dataManagementPlan, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> newVersion(@PathVariable UUID id, @Valid @RequestBody eu.eudat.models.data.dmp.DataManagementPlanNewVersionModel dataManagementPlan, Principal principal) throws Exception { + DataManagementPlanManager.newVersion(this.getApiContext(), id, dataManagementPlan, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); } @RequestMapping(method = RequestMethod.POST, value = {"/dmps/clone/{id}"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity> clone(@PathVariable UUID id, @RequestBody eu.eudat.models.data.dmp.DataManagementPlanNewVersionModel dataManagementPlan, Principal principal) { - try { - DataManagementPlanManager.clone(this.getApiContext(), id, dataManagementPlan, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> clone(@PathVariable UUID id, @RequestBody eu.eudat.models.data.dmp.DataManagementPlanNewVersionModel dataManagementPlan, Principal principal) throws Exception { + DataManagementPlanManager.clone(this.getApiContext(), id, dataManagementPlan, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); } @RequestMapping(method = RequestMethod.POST, value = {"/dmps/get"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getWithCriteria(@RequestBody DataManagementPlanCriteriaRequest dataManagementPlanCriteria, Principal principal) { - try { - List dataTable = new DataManagementPlanManager().getWithCriteria(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao(), dataManagementPlanCriteria, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> getWithCriteria(@RequestBody DataManagementPlanCriteriaRequest dataManagementPlanCriteria, Principal principal) throws InstantiationException, IllegalAccessException { + List dataTable = new DataManagementPlanManager().getWithCriteria(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao(), dataManagementPlanCriteria, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); } @Transactional @RequestMapping(method = RequestMethod.DELETE, value = {"/dmps/delete/{id}"}, consumes = "application/json", produces = "application/json") public @ResponseBody ResponseEntity> delete(@PathVariable UUID id, Principal principal) { - try { - DataManagementPlanManager.delete(this.getApiContext(), id); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Successfully Deleted Dataset")); - } catch (DMPWithDatasetsException ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message(ex.getMessage())); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + DataManagementPlanManager.delete(this.getApiContext(), id); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Successfully Deleted Dataset")); } @RequestMapping(method = RequestMethod.POST, value = {"/dmps/dynamic"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>>> getWithCriteria(@RequestBody RequestItem criteriaRequestItem, Principal principal) { - try { - List> dataTable = new DataManagementPlanManager().getDynamicFields(criteriaRequestItem.getCriteria().getId(), this.dynamicProjectConfiguration,criteriaRequestItem.getCriteria() ); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>>> getWithCriteria(@RequestBody RequestItem criteriaRequestItem, Principal principal) throws InstantiationException, IllegalAccessException { + List> dataTable = new DataManagementPlanManager().getDynamicFields(criteriaRequestItem.getCriteria().getId(), this.dynamicProjectConfiguration, criteriaRequestItem.getCriteria()); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DashBoardController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DashBoardController.java index b534e1a2a..74f56cc9d 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DashBoardController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DashBoardController.java @@ -1,12 +1,12 @@ package eu.eudat.controllers; import eu.eudat.logic.managers.DashBoardManager; +import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.dashboard.recent.RecentActivity; import eu.eudat.models.data.dashboard.searchbar.SearchBarItem; import eu.eudat.models.data.dashboard.statistics.DashBoardStatistics; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.security.Principal; -import eu.eudat.logic.services.ApiContext; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -27,49 +27,29 @@ public class DashBoardController extends BaseController { @RequestMapping(method = RequestMethod.GET, value = {"/dashboard/getStatistics"}, produces = "application/json") public ResponseEntity> getStatistics() { - try { - DashBoardStatistics statistics = new DashBoardManager().getStatistics(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao() - , this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao()); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(statistics)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + DashBoardStatistics statistics = new DashBoardManager().getStatistics(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao() + , this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao()); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(statistics)); } @RequestMapping(method = RequestMethod.GET, value = {"/dashboard/me/getStatistics"}, produces = "application/json") public ResponseEntity> getStatistics(Principal principal) { - try { - DashBoardStatistics statistics = new DashBoardManager().getMeStatistics(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao() - , this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(statistics)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + DashBoardStatistics statistics = new DashBoardManager().getMeStatistics(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao() + , this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(statistics)); } @RequestMapping(method = RequestMethod.GET, value = {"/user/recentActivity"}, produces = "application/json") public ResponseEntity> getRecentActivity(@RequestParam(name = "numOfActivities", required = false, defaultValue = "5") Integer numberOfActivities, Principal principal) { - try { - RecentActivity statistics = new DashBoardManager().getRecentActivity(this.getApiContext(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao() - , this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), principal, numberOfActivities); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(statistics)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + RecentActivity statistics = new DashBoardManager().getRecentActivity(this.getApiContext(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao() + , this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), principal, numberOfActivities); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(statistics)); } @RequestMapping(method = RequestMethod.GET, value = {"/dashboard/search"}, produces = "application/json") public ResponseEntity>> search(@RequestParam(name = "like") String like, Principal principal) { - try { - List searchBarItemList = new DashBoardManager().searchUserData(like,this.getApiContext(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao() - , this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(searchBarItemList)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + List searchBarItemList = new DashBoardManager().searchUserData(like, this.getApiContext(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao() + , this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(searchBarItemList)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DataRepositories.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DataRepositories.java index f7c2f17a1..881467e9c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DataRepositories.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DataRepositories.java @@ -12,7 +12,6 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; @RestController @@ -29,15 +28,9 @@ public class DataRepositories extends BaseController { public @ResponseBody ResponseEntity>>> listExternalDataRepositories( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type - ) { - try { - List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getRepositories(query, type); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>>().status(ApiMessageCode.NO_MESSAGE).payload(remoteRepos)); - } catch (NoURLFound ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>>().status(ApiMessageCode.ERROR_MESSAGE).message(ex.getMessage()).payload(null)); - } catch (HugeResultSet ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>>().status(ApiMessageCode.ERROR_MESSAGE).message(ex.getMessage()).payload(null)); - } + ) throws HugeResultSet, NoURLFound { + List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getRepositories(query, type); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>>().status(ApiMessageCode.NO_MESSAGE).payload(remoteRepos)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfileController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfileController.java index 14f0e7cab..8fae95f24 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfileController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfileController.java @@ -3,13 +3,13 @@ package eu.eudat.controllers; import eu.eudat.data.dao.criteria.RequestItem; import eu.eudat.logic.managers.DatasetProfileManager; import eu.eudat.logic.managers.UserManager; +import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.components.commons.datafield.AutoCompleteData; import eu.eudat.models.data.helpermodels.Tuple; import eu.eudat.models.data.helpers.common.AutoCompleteLookupItem; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.properties.PropertiesModel; import eu.eudat.models.data.user.composite.PagedDatasetProfile; -import eu.eudat.logic.services.ApiContext; import eu.eudat.types.ApiMessageCode; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; @@ -18,6 +18,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import javax.xml.xpath.XPathExpressionException; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -35,46 +36,32 @@ public class DatasetProfileController extends BaseController { @RequestMapping(method = RequestMethod.GET, value = {"/datasetwizard/get/{id}"}, produces = "application/json") public ResponseEntity> getSingle(@PathVariable String id) { - try { - eu.eudat.data.entities.DatasetProfile profile = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(id)); - eu.eudat.models.data.user.composite.DatasetProfile datasetprofile = UserManager.generateDatasetProfileModel(profile); - PagedDatasetProfile pagedDatasetProfile = new PagedDatasetProfile(); - pagedDatasetProfile.buildPagedDatasetProfile(datasetprofile); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(pagedDatasetProfile)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + eu.eudat.data.entities.DatasetProfile profile = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(id)); + eu.eudat.models.data.user.composite.DatasetProfile datasetprofile = UserManager.generateDatasetProfileModel(profile); + PagedDatasetProfile pagedDatasetProfile = new PagedDatasetProfile(); + pagedDatasetProfile.buildPagedDatasetProfile(datasetprofile); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(pagedDatasetProfile)); } @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/datasetprofile/save/{id}"}, consumes = "application/json", produces = "application/json") public ResponseEntity updateDataset(@PathVariable String id, @RequestBody PropertiesModel properties) { - try { - eu.eudat.data.entities.Dataset dataset = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao().find(UUID.fromString(id)); - Map values = new HashMap(); - properties.toMap(values); - JSONObject jobject = new JSONObject(values); - dataset.setProperties(jobject.toString()); - dataset.setStatus((short) properties.getStatus()); - this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao().createOrUpdate(dataset); //TODO - return ResponseEntity.status(HttpStatus.OK).body(properties); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Serialization issue: " + ex.getMessage()); - } + eu.eudat.data.entities.Dataset dataset = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao().find(UUID.fromString(id)); + Map values = new HashMap(); + properties.toMap(values); + JSONObject jobject = new JSONObject(values); + dataset.setProperties(jobject.toString()); + dataset.setStatus((short) properties.getStatus()); + this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao().createOrUpdate(dataset); //TODO + return ResponseEntity.status(HttpStatus.OK).body(properties); } @RequestMapping(method = RequestMethod.POST, value = {"/search/autocomplete"}, consumes = "application/json", produces = "application/json") - public ResponseEntity getDataForAutocomplete(@RequestBody RequestItem lookupItem) { - try { - eu.eudat.data.entities.Dataset dataset = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao().find(UUID.fromString(lookupItem.getCriteria().getProfileID())); - eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field modelfield = DatasetProfileManager.queryForField(dataset.getProfile().getDefinition(), lookupItem.getCriteria().getFieldID()); - AutoCompleteData data = (AutoCompleteData) modelfield.getData(); - List> items = DatasetProfileManager.getAutocomplete(data,lookupItem.getCriteria().getLike()); - return ResponseEntity.status(HttpStatus.OK).body(items); - } catch (Exception ex) { - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Serialization issue: " + ex.getMessage()); - } + public ResponseEntity getDataForAutocomplete(@RequestBody RequestItem lookupItem) throws XPathExpressionException { + eu.eudat.data.entities.Dataset dataset = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao().find(UUID.fromString(lookupItem.getCriteria().getProfileID())); + eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field modelfield = DatasetProfileManager.queryForField(dataset.getProfile().getDefinition(), lookupItem.getCriteria().getFieldID()); + AutoCompleteData data = (AutoCompleteData) modelfield.getData(); + List> items = DatasetProfileManager.getAutocomplete(data, lookupItem.getCriteria().getLike()); + return ResponseEntity.status(HttpStatus.OK).body(items); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfiles.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfiles.java index 5c1eec2ea..81f22d470 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfiles.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfiles.java @@ -1,13 +1,13 @@ package eu.eudat.controllers; -import eu.eudat.logic.managers.DatasetProfileManager; -import eu.eudat.models.data.datasetprofile.DatasetProfileAutocompleteItem; import eu.eudat.data.query.items.item.datasetprofile.DatasetProfileAutocompleteRequest; -import eu.eudat.models.data.datasetprofile.DatasetProfileListingModel; import eu.eudat.data.query.items.table.datasetprofile.DatasetProfileTableRequestItem; +import eu.eudat.logic.managers.DatasetProfileManager; +import eu.eudat.logic.services.ApiContext; +import eu.eudat.models.data.datasetprofile.DatasetProfileAutocompleteItem; +import eu.eudat.models.data.datasetprofile.DatasetProfileListingModel; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.helpers.responses.ResponseItem; -import eu.eudat.logic.services.ApiContext; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -29,35 +29,23 @@ public class DatasetProfiles extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/dmps/datasetprofiles/get"}, produces = "application/json") public @ResponseBody - ResponseEntity>> get(@RequestBody DatasetProfileAutocompleteRequest datasetProfileAutocompleteRequest) { - try { - List datasetProfileAutocompleteItems = DatasetProfileManager.getWithCriteria(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao(), datasetProfileAutocompleteRequest); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(datasetProfileAutocompleteItems)); - } catch (Exception ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE)); - } + ResponseEntity>> get(@RequestBody DatasetProfileAutocompleteRequest datasetProfileAutocompleteRequest) throws InstantiationException, IllegalAccessException { + List datasetProfileAutocompleteItems = DatasetProfileManager.getWithCriteria(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao(), datasetProfileAutocompleteRequest); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(datasetProfileAutocompleteItems)); } @RequestMapping(method = RequestMethod.POST, value = {"/admin/datasetprofiles/getPaged"}, produces = "application/json") public @ResponseBody - ResponseEntity>> getPaged(@RequestBody DatasetProfileTableRequestItem datasetProfileTableRequestItem) { - try { - DataTableData datasetProfileTableData = DatasetProfileManager.getPaged(this.getApiContext(), datasetProfileTableRequestItem); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(datasetProfileTableData)); - } catch (Exception ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE)); - } + ResponseEntity>> getPaged(@RequestBody DatasetProfileTableRequestItem datasetProfileTableRequestItem) throws Exception { + DataTableData datasetProfileTableData = DatasetProfileManager.getPaged(this.getApiContext(), datasetProfileTableRequestItem); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(datasetProfileTableData)); } @RequestMapping(method = RequestMethod.GET, value = {"/datasetprofiles/getAll"}, produces = "application/json") public @ResponseBody - ResponseEntity>> getAll() { - try { - List datasetProfileTableData = DatasetProfileManager.getAll(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao()); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(datasetProfileTableData)); - } catch (Exception ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE)); - } + ResponseEntity>> getAll() throws InstantiationException, IllegalAccessException { + List datasetProfileTableData = DatasetProfileManager.getAll(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao()); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(datasetProfileTableData)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetWizardController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetWizardController.java index 0fe93362b..92c8fd2f9 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetWizardController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetWizardController.java @@ -49,103 +49,71 @@ public class DatasetWizardController extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/userDmps"}, produces = "application/json") public @ResponseBody - ResponseEntity>> getUserDmps(@RequestBody DatasetWizardAutocompleteRequest datasetWizardAutocompleteRequest, Principal principal) { - try { - List dataManagementPlans = DatasetWizardManager.getUserDmps(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao(), datasetWizardAutocompleteRequest, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataManagementPlans)); - - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> getUserDmps(@RequestBody DatasetWizardAutocompleteRequest datasetWizardAutocompleteRequest, Principal principal) throws IllegalAccessException, InstantiationException { + List dataManagementPlans = DatasetWizardManager.getUserDmps(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao(), datasetWizardAutocompleteRequest, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataManagementPlans)); } @RequestMapping(method = RequestMethod.POST, value = {"/getAvailableProfiles"}, produces = "application/json") public @ResponseBody - ResponseEntity>> getAvailableProfiles(@RequestBody DatasetProfileWizardAutocompleteRequest datasetProfileWizardAutocompleteRequest, @ClaimedAuthorities(claims = {ANONYMOUS}) Principal principal) { - try { - List dataManagementPlans = DatasetWizardManager.getAvailableProfiles(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao(), datasetProfileWizardAutocompleteRequest); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataManagementPlans)); - - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> getAvailableProfiles(@RequestBody DatasetProfileWizardAutocompleteRequest datasetProfileWizardAutocompleteRequest, @ClaimedAuthorities(claims = {ANONYMOUS}) Principal principal) throws IllegalAccessException, InstantiationException { + List dataManagementPlans = DatasetWizardManager.getAvailableProfiles(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao(), datasetProfileWizardAutocompleteRequest); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataManagementPlans)); } @RequestMapping(method = RequestMethod.GET, value = {"/getSingle/{id}"}, produces = "application/json") public @ResponseBody - ResponseEntity> getSingle(@PathVariable String id, @ClaimedAuthorities(claims = {ANONYMOUS}) Principal principal) { - try { - DatasetWizardModel dataset = new DatasetManager().getSingle(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), this.getApiContext().getOperationsContext().getDatasetRepository(), id); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(dataset)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> getSingle(@PathVariable String id, @ClaimedAuthorities(claims = {ANONYMOUS}) Principal principal) throws IllegalAccessException, IOException, InstantiationException { + DatasetWizardModel dataset = new DatasetManager().getSingle(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), this.getApiContext().getOperationsContext().getDatasetRepository(), id); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(dataset)); } @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/createOrUpdate"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity> createOrUpdate(@RequestBody DatasetWizardModel profile, Principal principal) { - try { - eu.eudat.data.entities.Dataset dataset = DatasetManager.createOrUpdate(this.getApiContext(), profile, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Created").payload(null)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> createOrUpdate(@RequestBody DatasetWizardModel profile, Principal principal) throws Exception { + eu.eudat.data.entities.Dataset dataset = DatasetManager.createOrUpdate(this.getApiContext(), profile, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Created").payload(null)); } @RequestMapping(method = RequestMethod.GET, value = {"/getPDF/{id}"}) public @ResponseBody - ResponseEntity getWordDocument(@PathVariable String id) throws IllegalAccessException, IOException, InstantiationException { - try { - File file = new DatasetManager().getWordDocument(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), id, this.getApiContext().getUtilitiesService().getVisibilityRuleService()); - File pdffile = new DatasetManager().convertToPDF(file, environment, file.getName()); - InputStream resource = new FileInputStream(pdffile); - System.out.println("Mime Type of " + file.getName() + " is " + - new MimetypesFileTypeMap().getContentType(file)); - HttpHeaders responseHeaders = new HttpHeaders(); - responseHeaders.setContentLength(pdffile.length()); - responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); - responseHeaders.set("Content-Disposition", "attachment;filename=" + pdffile.getName()); - responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); - responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); + ResponseEntity getWordDocument(@PathVariable String id) throws IllegalAccessException, IOException, InstantiationException, InterruptedException { + File file = new DatasetManager().getWordDocument(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), id, this.getApiContext().getUtilitiesService().getVisibilityRuleService()); + File pdffile = new DatasetManager().convertToPDF(file, environment, file.getName()); + InputStream resource = new FileInputStream(pdffile); + System.out.println("Mime Type of " + file.getName() + " is " + + new MimetypesFileTypeMap().getContentType(file)); + HttpHeaders responseHeaders = new HttpHeaders(); + responseHeaders.setContentLength(pdffile.length()); + responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); + responseHeaders.set("Content-Disposition", "attachment;filename=" + pdffile.getName()); + responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); + responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); - byte[] content = IOUtils.toByteArray(resource); - return new ResponseEntity<>(content, - responseHeaders, - HttpStatus.OK); - } catch (Exception e) { - e.printStackTrace(); - return ResponseEntity.badRequest().body(null); - } + byte[] content = IOUtils.toByteArray(resource); + return new ResponseEntity<>(content, + responseHeaders, + HttpStatus.OK); } @RequestMapping(method = RequestMethod.GET, value = {"/getXml/{id}"}) public @ResponseBody ResponseEntity getXml(@PathVariable String id) throws IllegalAccessException, IOException, InstantiationException { - try { - FileEnvelope envelope = new DatasetManager().getXmlDocument(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), id, this.getApiContext().getUtilitiesService().getVisibilityRuleService()); - InputStream resource = new FileInputStream(envelope.getFile()); - System.out.println("Mime Type of " + envelope.getFilename() + " is " + - new MimetypesFileTypeMap().getContentType(envelope.getFile())); - HttpHeaders responseHeaders = new HttpHeaders(); - responseHeaders.setContentLength(envelope.getFile().length()); - responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); - responseHeaders.set("Content-Disposition", "attachment;filename=" + envelope.getFilename() + ".xml"); - responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); - responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); + FileEnvelope envelope = new DatasetManager().getXmlDocument(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), id, this.getApiContext().getUtilitiesService().getVisibilityRuleService()); + InputStream resource = new FileInputStream(envelope.getFile()); + System.out.println("Mime Type of " + envelope.getFilename() + " is " + + new MimetypesFileTypeMap().getContentType(envelope.getFile())); + HttpHeaders responseHeaders = new HttpHeaders(); + responseHeaders.setContentLength(envelope.getFile().length()); + responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); + responseHeaders.set("Content-Disposition", "attachment;filename=" + envelope.getFilename() + ".xml"); + responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); + responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); - byte[] content = IOUtils.toByteArray(resource); - return new ResponseEntity<>(content, - responseHeaders, - HttpStatus.OK); - } catch (Exception e) { - e.printStackTrace(); - return ResponseEntity.badRequest().body(null); - } + byte[] content = IOUtils.toByteArray(resource); + return new ResponseEntity<>(content, + responseHeaders, + HttpStatus.OK); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Datasets.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Datasets.java index fe57b22f4..bbab14e7f 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Datasets.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Datasets.java @@ -33,29 +33,17 @@ public class Datasets extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/datasets/getPaged"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getPaged(@RequestBody DatasetTableRequest datasetTableRequest, @ClaimedAuthorities(claims = {Authorities.ANONYMOUS}) Principal principal) { - try { - DataTableData dataTable = new DatasetManager().getPaged(this.getApiContext(), datasetTableRequest, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); - - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> getPaged(@RequestBody DatasetTableRequest datasetTableRequest, @ClaimedAuthorities(claims = {Authorities.ANONYMOUS}) Principal principal) throws Exception { + DataTableData dataTable = new DatasetManager().getPaged(this.getApiContext(), datasetTableRequest, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); } @Transactional @RequestMapping(method = RequestMethod.GET, value = {"/datasets/makepublic/{id}"}, produces = "application/json") public @ResponseBody - ResponseEntity> makePublic(@PathVariable UUID id, Principal principal, Locale locale) { - try { - DatasetManager.makePublic(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), id); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message(this.getApiContext().getHelpersService().getMessageSource().getMessage("dataset.public", new Object[]{}, locale))); - - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> makePublic(@PathVariable UUID id, Principal principal, Locale locale) throws Exception { + DatasetManager.makePublic(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), id); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message(this.getApiContext().getHelpersService().getMessageSource().getMessage("dataset.public", new Object[]{}, locale))); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/ExternalDatasets.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/ExternalDatasets.java index b702534e3..436a4bff5 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/ExternalDatasets.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/ExternalDatasets.java @@ -2,11 +2,13 @@ package eu.eudat.controllers; import eu.eudat.data.query.items.table.externaldataset.ExternalDatasetTableRequest; import eu.eudat.logic.managers.ExternalDatasetManager; +import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; +import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.externaldataset.ExternalDatasetListingModel; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.security.Principal; -import eu.eudat.logic.services.ApiContext; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -29,40 +31,24 @@ public class ExternalDatasets extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/externaldatasets/getPaged"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getPaged(@RequestBody ExternalDatasetTableRequest datasetTableRequest, Principal principal) { - try { - DataTableData dataTable = new ExternalDatasetManager().getPaged(this.getApiContext(), datasetTableRequest); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); - - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> getPaged(@RequestBody ExternalDatasetTableRequest datasetTableRequest, Principal principal) throws Exception { + DataTableData dataTable = new ExternalDatasetManager().getPaged(this.getApiContext(), datasetTableRequest); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable)); } @RequestMapping(method = RequestMethod.GET, value = {"/external/datasets"}, produces = "application/json") public @ResponseBody ResponseEntity>> getWithExternal( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type, Principal principal - ) { - try { - List dataTable = new ExternalDatasetManager().getWithExternal(this.getApiContext(), query, this.getApiContext().getOperationsContext().getRemoteFetcher()); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ) throws NoURLFound, InstantiationException, HugeResultSet, IllegalAccessException { + List dataTable = new ExternalDatasetManager().getWithExternal(this.getApiContext(), query, this.getApiContext().getOperationsContext().getRemoteFetcher()); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); } @RequestMapping(method = RequestMethod.POST, value = {"/externaldatasets/getSingle/{id}"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseItem getWithExternal(@PathVariable UUID id, Principal principal) { - try { - ExternalDatasetListingModel externalDatasetModel = new ExternalDatasetManager().getSingle(this.getApiContext().getOperationsContext().getDatabaseRepository().getExternalDatasetDao(), id); - return new ResponseItem().payload(externalDatasetModel).status(ApiMessageCode.NO_MESSAGE); - } catch (Exception ex) { - ex.printStackTrace(); - return new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage()); - } + ResponseItem getWithExternal(@PathVariable UUID id, Principal principal) throws NoURLFound, InstantiationException, HugeResultSet, IllegalAccessException { + ExternalDatasetListingModel externalDatasetModel = new ExternalDatasetManager().getSingle(this.getApiContext().getOperationsContext().getDatabaseRepository().getExternalDatasetDao(), id); + return new ResponseItem().payload(externalDatasetModel).status(ApiMessageCode.NO_MESSAGE); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/FileController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/FileController.java index 0ef2c7a03..453bc903d 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/FileController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/FileController.java @@ -1,9 +1,9 @@ package eu.eudat.controllers; import eu.eudat.logic.managers.FileManager; +import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.files.ContentFile; import eu.eudat.models.data.helpers.responses.ResponseItem; -import eu.eudat.logic.services.ApiContext; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.Resource; @@ -31,31 +31,21 @@ public class FileController extends BaseController { } @RequestMapping(method = RequestMethod.POST, value = {"/upload"}) - public ResponseEntity>> handleFileUpload(@RequestParam("file") MultipartFile[] files) { - try { - return ResponseEntity.status(HttpStatus.OK).body( - new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(FileManager.saveTempFile(files, getApiContext().getOperationsContext().getFileStorageService()))); - } catch (IOException e) { - e.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.ERROR_MESSAGE).message(e.getMessage())); - } + public ResponseEntity>> handleFileUpload(@RequestParam("file") MultipartFile[] files) throws IOException { + return ResponseEntity.status(HttpStatus.OK).body( + new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(FileManager.saveTempFile(files, getApiContext().getOperationsContext().getFileStorageService()))); } @RequestMapping(method = RequestMethod.GET, value = {"/{id}"}) public ResponseEntity handleFileUpload(@PathVariable(name = "id") String id, @RequestParam(name = "type") String type, - @RequestParam(name = "location", required = false, defaultValue = "final") String location) { - try { - Resource resource = FileManager.getFile(id, type, getApiContext().getOperationsContext().getFileStorageService(), location); - if (!resource.exists()) - resource = new UrlResource(FileController.class.getClassLoader().getResource("images/default.png")); - return ResponseEntity.ok() - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "." + type + "\"") - .body(resource); - } catch (IOException e) { - e.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); - } + @RequestParam(name = "location", required = false, defaultValue = "final") String location) throws IOException { + Resource resource = FileManager.getFile(id, type, getApiContext().getOperationsContext().getFileStorageService(), location); + if (!resource.exists()) + resource = new UrlResource(FileController.class.getClassLoader().getResource("images/default.png")); + return ResponseEntity.ok() + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "." + type + "\"") + .body(resource); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Login.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Login.java index 520c21837..43b4e75e6 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Login.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Login.java @@ -1,18 +1,17 @@ package eu.eudat.controllers; import eu.eudat.core.logger.Logger; -import eu.eudat.exceptions.security.UnauthorisedException; import eu.eudat.logic.managers.UserManager; -import eu.eudat.models.data.helpers.responses.ResponseItem; -import eu.eudat.models.data.login.Credentials; -import eu.eudat.models.data.login.LoginInfo; -import eu.eudat.models.data.security.Principal; import eu.eudat.logic.security.CustomAuthenticationProvider; import eu.eudat.logic.security.validators.b2access.B2AccessTokenValidator; import eu.eudat.logic.security.validators.b2access.helpers.B2AccessRequest; import eu.eudat.logic.security.validators.b2access.helpers.B2AccessResponseToken; import eu.eudat.logic.security.validators.twitter.TwitterTokenValidator; import eu.eudat.logic.services.operations.AuthenticationServiceImpl; +import eu.eudat.models.data.helpers.responses.ResponseItem; +import eu.eudat.models.data.login.Credentials; +import eu.eudat.models.data.login.LoginInfo; +import eu.eudat.models.data.security.Principal; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -53,84 +52,43 @@ public class Login { @RequestMapping(method = RequestMethod.POST, value = {"/externallogin"}, consumes = "application/json", produces = "application/json") public @ResponseBody ResponseEntity> externallogin(@RequestBody LoginInfo credentials) throws GeneralSecurityException { - try { - this.logger.info(credentials, "Trying To Login With " + credentials.getProvider()); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(customAuthenticationProvider.authenticate(credentials)).status(ApiMessageCode.SUCCESS_MESSAGE)); - } catch (UnauthorisedException ex) { - this.logger.info(ex, "Failed To Login"); - throw ex; - }/* catch (Exception ex) { - this.logger.error(ex, ex.getMessage()); - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - }*/ + this.logger.info(credentials, "Trying To Login With " + credentials.getProvider()); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(customAuthenticationProvider.authenticate(credentials)).status(ApiMessageCode.SUCCESS_MESSAGE)); } @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/nativelogin"}, consumes = "application/json", produces = "application/json") public @ResponseBody ResponseEntity> nativelogin(@RequestBody Credentials credentials) { - try { - this.logger.info(credentials.getUsername(), "Trying To Login"); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(UserManager.authenticate(this.authenticationServiceImpl, credentials)).status(ApiMessageCode.SUCCESS_MESSAGE)); - } catch (UnauthorisedException ex) { - this.logger.info(ex, "Failed To Login"); - throw ex; - }/* catch (Exception ex) { - ex.printStackTrace(); - this.logger.error(ex, ex.getMessage()); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - }*/ + this.logger.info(credentials.getUsername(), "Trying To Login"); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(UserManager.authenticate(this.authenticationServiceImpl, credentials)).status(ApiMessageCode.SUCCESS_MESSAGE)); } @RequestMapping(method = RequestMethod.GET, value = {"/twitterRequestToken"}, produces = "application/json") public @ResponseBody ResponseEntity> twitterRequestToken() { - //try { - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(this.twitterTokenValidator.getRequestToken()).status(ApiMessageCode.NO_MESSAGE)); - /*} catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - }*/ + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(this.twitterTokenValidator.getRequestToken()).status(ApiMessageCode.NO_MESSAGE)); } @RequestMapping(method = RequestMethod.POST, value = {"/b2AccessRequestToken"}, produces = "application/json", consumes = "application/json") public @ResponseBody ResponseEntity> b2AccessRequestToken(@RequestBody B2AccessRequest b2AccessRequest) { - //try { - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(this.b2AccessTokenValidator.getAccessToken(b2AccessRequest)).status(ApiMessageCode.NO_MESSAGE)); - /*} catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - }*/ + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(this.b2AccessTokenValidator.getAccessToken(b2AccessRequest)).status(ApiMessageCode.NO_MESSAGE)); } @RequestMapping(method = RequestMethod.POST, value = {"/me"}, consumes = "application/json", produces = "application/json") public @ResponseBody ResponseEntity> authMe(Principal principal) { - //try { - this.logger.info(principal, "Getting Me"); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(this.authenticationServiceImpl.Touch(principal.getToken())).status(ApiMessageCode.NO_MESSAGE)); - /*} catch (Exception ex) { - this.logger.debug(ex, ex.getMessage()); - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - }*/ + this.logger.info(principal, "Getting Me"); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(this.authenticationServiceImpl.Touch(principal.getToken())).status(ApiMessageCode.NO_MESSAGE)); } @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/logout"}, consumes = "application/json", produces = "application/json") public @ResponseBody ResponseEntity> logout(Principal principal) { - //try { - this.authenticationServiceImpl.Logout(principal.getToken()); - this.logger.info(principal, "Logged Out"); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); - - /*} catch (Exception ex) { - this.logger.debug(ex, ex.getMessage()); - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - }*/ + this.authenticationServiceImpl.Logout(principal.getToken()); + this.logger.info(principal, "Logged Out"); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Organisations.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Organisations.java index 7af94126b..579514236 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Organisations.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Organisations.java @@ -1,10 +1,10 @@ package eu.eudat.controllers; -import eu.eudat.models.data.external.OrganisationsExternalSourcesModel; -import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; import eu.eudat.logic.proxy.config.exceptions.NoURLFound; import eu.eudat.logic.services.ApiContext; +import eu.eudat.models.data.external.OrganisationsExternalSourcesModel; +import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -28,19 +28,11 @@ public class Organisations extends BaseController { @RequestMapping(method = RequestMethod.GET, value = {"/external/organisations"}, produces = "application/json") public @ResponseBody ResponseEntity> listExternalOrganisations( - @RequestParam(value = "query", required = false) String query,@RequestParam(value = "type", required = false) String type - ) { - try { - List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getOrganisations(query,type); - OrganisationsExternalSourcesModel projectsExternalSourcesModel = new OrganisationsExternalSourcesModel().fromExternalItem(remoteRepos); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(projectsExternalSourcesModel).status(ApiMessageCode.NO_MESSAGE)); - } catch (NoURLFound ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("External Url Not Found")); - } catch (HugeResultSet ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("Huge Result Set")); - } catch (Exception ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message(ex.getMessage())); - } + @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type + ) throws HugeResultSet, NoURLFound { + List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getOrganisations(query, type); + OrganisationsExternalSourcesModel projectsExternalSourcesModel = new OrganisationsExternalSourcesModel().fromExternalItem(remoteRepos); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(projectsExternalSourcesModel).status(ApiMessageCode.NO_MESSAGE)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Projects.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Projects.java index 1c0a00c76..64ba84d05 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Projects.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Projects.java @@ -1,17 +1,17 @@ package eu.eudat.controllers; import eu.eudat.data.entities.Project; -import eu.eudat.logic.managers.ProjectManager; -import eu.eudat.models.data.external.ProjectsExternalSourcesModel; -import eu.eudat.models.data.helpers.common.DataTableData; -import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.data.query.items.item.project.ProjectCriteriaRequest; -import eu.eudat.models.data.project.ProjectListingModel; import eu.eudat.data.query.items.table.project.ProjectTableRequest; -import eu.eudat.models.data.security.Principal; +import eu.eudat.logic.managers.ProjectManager; import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; import eu.eudat.logic.proxy.config.exceptions.NoURLFound; import eu.eudat.logic.services.ApiContext; +import eu.eudat.models.data.external.ProjectsExternalSourcesModel; +import eu.eudat.models.data.helpers.common.DataTableData; +import eu.eudat.models.data.helpers.responses.ResponseItem; +import eu.eudat.models.data.project.ProjectListingModel; +import eu.eudat.models.data.security.Principal; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -20,6 +20,8 @@ import org.springframework.web.bind.annotation.*; import javax.transaction.Transactional; import javax.validation.Valid; +import java.io.IOException; +import java.text.ParseException; import java.util.List; import java.util.Map; @@ -36,95 +38,57 @@ public class Projects extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/projects/getPaged"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getPaged(@Valid @RequestBody ProjectTableRequest projectTableRequest, Principal principal) { - try { - DataTableData dataTable = new ProjectManager().getPaged(this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), projectTableRequest, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); - - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> getPaged(@Valid @RequestBody ProjectTableRequest projectTableRequest, Principal principal) throws Exception { + DataTableData dataTable = new ProjectManager().getPaged(this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), projectTableRequest, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); } @RequestMapping(method = RequestMethod.GET, value = {"/projects/getSingle/{id}"}, produces = "application/json") public @ResponseBody ResponseEntity> getSingle(@PathVariable String id, Principal principal) throws IllegalAccessException, InstantiationException { - //try { - eu.eudat.models.data.project.Project project = new ProjectManager().getSingle(this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), id); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(project).status(ApiMessageCode.NO_MESSAGE)); - /*} catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - }*/ + eu.eudat.models.data.project.Project project = new ProjectManager().getSingle(this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), id); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(project).status(ApiMessageCode.NO_MESSAGE)); } @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/projects/createOrUpdate"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity> addProject(@Valid @RequestBody eu.eudat.models.data.project.Project project, Principal principal) { - try { - ProjectManager.createOrUpdate(this.getApiContext().getOperationsContext().getFileStorageService(), this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getContentDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getUserInfoDao(), project, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Created")); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> addProject(@Valid @RequestBody eu.eudat.models.data.project.Project project, Principal principal) throws IOException, ParseException { + ProjectManager.createOrUpdate(this.getApiContext().getOperationsContext().getFileStorageService(), this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getContentDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getUserInfoDao(), project, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Created")); } @Transactional @RequestMapping(method = RequestMethod.DELETE, value = {"/projects/inactivate/{id}"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity> inactivate(@PathVariable String id, Principal principal) { - try { - Project project = new ProjectManager().inactivate(this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), id); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE)); - } catch (Exception ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> inactivate(@PathVariable String id, Principal principal) throws IllegalAccessException, InstantiationException { + Project project = new ProjectManager().inactivate(this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), id); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE)); } @RequestMapping(method = RequestMethod.POST, value = {"/projects/getWithExternal"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getWithExternal(@RequestBody ProjectCriteriaRequest projectCriteria, Principal principal) { - try { - List dataTable = new ProjectManager().getCriteriaWithExternal(this.getApiContext(), projectCriteria, this.getApiContext().getOperationsContext().getRemoteFetcher()); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> getWithExternal(@RequestBody ProjectCriteriaRequest projectCriteria, Principal principal) throws NoURLFound, InstantiationException, HugeResultSet, IllegalAccessException { + List dataTable = new ProjectManager().getCriteriaWithExternal(this.getApiContext(), projectCriteria, this.getApiContext().getOperationsContext().getRemoteFetcher()); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); } @RequestMapping(method = RequestMethod.POST, value = {"/projects/get"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> get(@RequestBody ProjectCriteriaRequest projectCriteria, Principal principal) { - try { - List dataTable = new ProjectManager().getCriteria(this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), projectCriteria, this.getApiContext().getOperationsContext().getRemoteFetcher()); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> get(@RequestBody ProjectCriteriaRequest projectCriteria, Principal principal) throws NoURLFound, InstantiationException, HugeResultSet, IllegalAccessException { + List dataTable = new ProjectManager().getCriteria(this.getApiContext().getOperationsContext().getDatabaseRepository().getProjectDao(), projectCriteria, this.getApiContext().getOperationsContext().getRemoteFetcher()); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); } @RequestMapping(method = RequestMethod.GET, value = {"/external/projects"}, produces = "application/json") public @ResponseBody - ResponseEntity> listExternalProjects(@RequestParam(value = "query", required = false) String query, Principal principal) { - try { - List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getProjects(query); - ProjectsExternalSourcesModel projectsExternalSourcesModel = new ProjectsExternalSourcesModel().fromExternalItem(remoteRepos); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(projectsExternalSourcesModel).status(ApiMessageCode.SUCCESS_MESSAGE)); - } catch (NoURLFound ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("External Url Not Found")); - } catch (HugeResultSet ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("Huge Result Set")); - } catch (Exception ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> listExternalProjects(@RequestParam(value = "query", required = false) String query, Principal principal) throws HugeResultSet, NoURLFound { + List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getProjects(query); + ProjectsExternalSourcesModel projectsExternalSourcesModel = new ProjectsExternalSourcesModel().fromExternalItem(remoteRepos); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(projectsExternalSourcesModel).status(ApiMessageCode.SUCCESS_MESSAGE)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Registries.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Registries.java index 6df0012a1..4dccc14a9 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Registries.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Registries.java @@ -1,10 +1,9 @@ package eu.eudat.controllers; -import eu.eudat.models.data.external.RegistriesExternalSourcesModel; -import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; import eu.eudat.logic.proxy.config.exceptions.NoURLFound; import eu.eudat.logic.services.ApiContext; +import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -13,7 +12,6 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; @RestController @@ -29,20 +27,9 @@ public class Registries extends BaseController { @RequestMapping(method = RequestMethod.GET, value = {"/external/registries"}, produces = "application/json") public @ResponseBody ResponseEntity>>> listExternalRegistries(@RequestParam(value = "query", required = false) String query - ,@RequestParam(value = "type", required = false) String type) { - try { - List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getRegistries(query,type); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>>().payload(remoteRepos).status(ApiMessageCode.NO_MESSAGE)); - } catch (NoURLFound ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>>().status(ApiMessageCode.ERROR_MESSAGE).message("External Url Not Found")); - } catch (HugeResultSet ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>>().status(ApiMessageCode.ERROR_MESSAGE).message("Huge Result Set")); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>>().status(ApiMessageCode.ERROR_MESSAGE).message(ex.getMessage())); - } + , @RequestParam(value = "type", required = false) String type) throws HugeResultSet, NoURLFound { + List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getRegistries(query, type); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>>().payload(remoteRepos).status(ApiMessageCode.NO_MESSAGE)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Researchers.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Researchers.java index c0a1d9919..a8cf8c045 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Researchers.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Researchers.java @@ -1,15 +1,14 @@ package eu.eudat.controllers; -import eu.eudat.exceptions.security.UnauthorisedException; -import eu.eudat.logic.managers.ResearcherManager; -import eu.eudat.models.data.dmp.Researcher; -import eu.eudat.models.data.external.ResearchersExternalSourcesModel; -import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.data.query.items.item.researcher.ResearcherCriteriaRequest; -import eu.eudat.models.data.security.Principal; +import eu.eudat.logic.managers.ResearcherManager; import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; import eu.eudat.logic.proxy.config.exceptions.NoURLFound; import eu.eudat.logic.services.ApiContext; +import eu.eudat.models.data.dmp.Researcher; +import eu.eudat.models.data.external.ResearchersExternalSourcesModel; +import eu.eudat.models.data.helpers.responses.ResponseItem; +import eu.eudat.models.data.security.Principal; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -35,46 +34,25 @@ public class Researchers extends BaseController { @RequestMapping(method = RequestMethod.GET, value = {"/external/researchers"}, produces = "application/json") public @ResponseBody ResponseEntity> listExternalResearchers( - @RequestParam(value = "query", required = false) String query,@RequestParam(value = "type", required = false) String type) { - try { - List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getResearchers(query,type); - ResearchersExternalSourcesModel researchersExternalSourcesModel = new ResearchersExternalSourcesModel().fromExternalItem(remoteRepos); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(researchersExternalSourcesModel).status(ApiMessageCode.NO_MESSAGE)); - } catch (NoURLFound ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("External Url Not Found")); - } catch (HugeResultSet ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("Huge Result Set")); - } catch (Exception ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message(ex.getMessage())); - } + @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type) throws HugeResultSet, NoURLFound { + List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getResearchers(query, type); + ResearchersExternalSourcesModel researchersExternalSourcesModel = new ResearchersExternalSourcesModel().fromExternalItem(remoteRepos); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(researchersExternalSourcesModel).status(ApiMessageCode.NO_MESSAGE)); } @RequestMapping(method = RequestMethod.POST, value = {"/researchers/getWithExternal"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getWithExternal(@RequestBody ResearcherCriteriaRequest researcherCriteriaRequest, Principal principal) { - try { - List dataTable = new ResearcherManager().getCriteriaWithExternal(this.getApiContext(),this.getApiContext().getOperationsContext().getRemoteFetcher(), researcherCriteriaRequest); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> getWithExternal(@RequestBody ResearcherCriteriaRequest researcherCriteriaRequest, Principal principal) throws HugeResultSet, NoURLFound { + List dataTable = new ResearcherManager().getCriteriaWithExternal(this.getApiContext(), this.getApiContext().getOperationsContext().getRemoteFetcher(), researcherCriteriaRequest); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); } @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/researchers/create"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity> create(@RequestBody eu.eudat.models.data.researcher.Researcher researcher, Principal principal) { - try { - ResearcherManager.create(this.getApiContext(), researcher); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE)); - } catch (UnauthorisedException e) { - e.printStackTrace(); - throw e; - } catch (Exception e) { - e.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message(e.getMessage())); - } + ResponseEntity> create(@RequestBody eu.eudat.models.data.researcher.Researcher researcher, Principal principal) throws Exception { + ResearcherManager.create(this.getApiContext(), researcher); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Services.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Services.java index 334620cc6..6aa71d060 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Services.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Services.java @@ -1,10 +1,9 @@ package eu.eudat.controllers; -import eu.eudat.models.data.external.ServiceExternalSourcesModel; -import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; import eu.eudat.logic.proxy.config.exceptions.NoURLFound; import eu.eudat.logic.services.ApiContext; +import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -13,7 +12,6 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; @RestController @@ -29,18 +27,10 @@ public class Services extends BaseController { @RequestMapping(method = RequestMethod.GET, value = {"/external/services"}, produces = "application/json") public @ResponseBody ResponseEntity>>> listExternalServices( - @RequestParam(value = "query", required = false) String query,@RequestParam(value = "type", required = false) String type - ) { - try { - List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getServices(query,type); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>>().payload(remoteRepos).status(ApiMessageCode.NO_MESSAGE)); - } catch (NoURLFound ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>>().status(ApiMessageCode.ERROR_MESSAGE).message("External Url Not Found")); - } catch (HugeResultSet ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>>().status(ApiMessageCode.ERROR_MESSAGE).message("Huge Result Set")); - } catch (Exception ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>>().status(ApiMessageCode.ERROR_MESSAGE).message(ex.getMessage())); - } + @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type + ) throws HugeResultSet, NoURLFound { + List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getServices(query, type); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>>().payload(remoteRepos).status(ApiMessageCode.NO_MESSAGE)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/TagController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/TagController.java index 8bdc1b995..8a48e14d6 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/TagController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/TagController.java @@ -2,7 +2,6 @@ package eu.eudat.controllers; import eu.eudat.elastic.criteria.TagCriteria; import eu.eudat.elastic.entities.Dataset; -import eu.eudat.elastic.entities.Tag; import eu.eudat.elastic.repository.Repository; import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; import eu.eudat.logic.proxy.config.exceptions.NoURLFound; @@ -16,6 +15,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -25,9 +25,9 @@ import java.util.Map; @RestController @CrossOrigin @RequestMapping(value = {"/api"}) -public class TagController extends BaseController{ +public class TagController extends BaseController { - private Repository datasetRepository; + private Repository datasetRepository; @Autowired public TagController(ApiContext apiContext, Repository tagRepository) { @@ -38,30 +38,17 @@ public class TagController extends BaseController{ @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/tag/create"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity> create(@RequestBody Dataset dataset) { - try { - Dataset tagEntity = this.datasetRepository.createOrUpdate(dataset); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(dataset).status(ApiMessageCode.SUCCESS_MESSAGE)); - } catch (Exception e) { - e.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message(e.getMessage())); - } + ResponseEntity> create(@RequestBody Dataset dataset) throws IOException { + Dataset tagEntity = this.datasetRepository.createOrUpdate(dataset); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(dataset).status(ApiMessageCode.SUCCESS_MESSAGE)); } @RequestMapping(method = RequestMethod.GET, value = {"/external/tags"}, produces = "application/json") public @ResponseBody ResponseEntity> listExternalTagModel( - @RequestParam(value = "query", required = false) String query,@RequestParam(value = "type", required = false) String type) { - try { - List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getTags(query,type); - TagExternalSourcesModel researchersExternalSourcesModel = new TagExternalSourcesModel().fromExternalItem(remoteRepos); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(researchersExternalSourcesModel).status(ApiMessageCode.NO_MESSAGE)); - } catch (NoURLFound ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("External Url Not Found")); - } catch (HugeResultSet ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("Huge Result Set")); - } catch (Exception ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message(ex.getMessage())); - } + @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type) throws HugeResultSet, NoURLFound { + List> remoteRepos = this.getApiContext().getOperationsContext().getRemoteFetcher().getTags(query, type); + TagExternalSourcesModel researchersExternalSourcesModel = new TagExternalSourcesModel().fromExternalItem(remoteRepos); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(researchersExternalSourcesModel).status(ApiMessageCode.NO_MESSAGE)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/UserInvitationController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/UserInvitationController.java index 7cc180fd4..a2e637ff7 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/UserInvitationController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/UserInvitationController.java @@ -1,13 +1,12 @@ package eu.eudat.controllers; -import eu.eudat.exceptions.security.UnauthorisedException; +import eu.eudat.data.query.items.item.userinfo.UserInfoRequestItem; import eu.eudat.logic.managers.InvitationsManager; +import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.invitation.Invitation; import eu.eudat.models.data.security.Principal; import eu.eudat.models.data.userinfo.UserInfoInvitationModel; -import eu.eudat.data.query.items.item.userinfo.UserInfoRequestItem; -import eu.eudat.logic.services.ApiContext; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -32,41 +31,23 @@ public class UserInvitationController extends BaseController { @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/users"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity> users(@RequestBody Invitation invitation, Principal principal) { - try { - InvitationsManager.inviteUsers(this.getApiContext(), invitation, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Users have beeen invited")); - } catch (Exception e) { - e.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message(e.getMessage())); - } + ResponseEntity> users(@RequestBody Invitation invitation, Principal principal) throws Exception { + InvitationsManager.inviteUsers(this.getApiContext(), invitation, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Users have beeen invited")); } @Transactional @RequestMapping(method = RequestMethod.GET, value = {"/exchange/{invitationID}"}, produces = "application/json") public @ResponseBody ResponseEntity> exchange(@PathVariable UUID invitationID, Principal principal) { - try { - UUID dmpId = InvitationsManager.assignUserAcceptedInvitation(this.getApiContext(), invitationID, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).payload(dmpId)); - } catch (UnauthorisedException e) { - e.printStackTrace(); - throw e; - } catch (Exception e) { - e.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message(e.getMessage())); - } + UUID dmpId = InvitationsManager.assignUserAcceptedInvitation(this.getApiContext(), invitationID, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).payload(dmpId)); } @RequestMapping(method = RequestMethod.POST, value = {"/getUsers"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getUsers(@RequestBody UserInfoRequestItem userInfoRequestItem) { - try { - List users = InvitationsManager.getUsers(this.getApiContext(), userInfoRequestItem); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.SUCCESS_MESSAGE).payload(users)); - } catch (Exception e) { - e.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(e.getMessage())); - } + ResponseEntity>> getUsers(@RequestBody UserInfoRequestItem userInfoRequestItem) throws IllegalAccessException, InstantiationException { + List users = InvitationsManager.getUsers(this.getApiContext(), userInfoRequestItem); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.SUCCESS_MESSAGE).payload(users)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Users.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Users.java index 06803b7fa..728ae9128 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Users.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Users.java @@ -17,6 +17,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.io.IOException; import java.util.Map; import java.util.UUID; @@ -35,53 +36,33 @@ public class Users extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/getPaged"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getPaged(@Valid @RequestBody UserInfoTableRequestItem userInfoTableRequestItem, @ClaimedAuthorities(claims = {ADMIN}) Principal principal) { - try { - DataTableData dataTable = UserManager.getPaged(this.getApiContext(), userInfoTableRequestItem); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity>> getPaged(@Valid @RequestBody UserInfoTableRequestItem userInfoTableRequestItem, @ClaimedAuthorities(claims = {ADMIN}) Principal principal) throws Exception { + DataTableData dataTable = UserManager.getPaged(this.getApiContext(), userInfoTableRequestItem); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); } @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/updateRoles"}, consumes = "application/json", produces = "application/json") public @ResponseBody ResponseEntity> updateRoles(@Valid @RequestBody UserListingModel userListingModel, @ClaimedAuthorities(claims = {ADMIN}) Principal principal) { - try { - UserManager.editRoles(this.getApiContext(), userListingModel); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + UserManager.editRoles(this.getApiContext(), userListingModel); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); } @RequestMapping(method = RequestMethod.GET, value = {"/{id}"}, produces = "application/json") public @ResponseBody - ResponseEntity> get(@PathVariable String id, Principal principal) { - try { - UUID userId = id.equals("me") ? principal.getId() : UUID.fromString(id); - UserProfile user = UserManager.getSingle(this.getApiContext(), userId); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(user).status(ApiMessageCode.NO_MESSAGE)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> get(@PathVariable String id, Principal principal) throws Exception { + UUID userId = id.equals("me") ? principal.getId() : UUID.fromString(id); + UserProfile user = UserManager.getSingle(this.getApiContext(), userId); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(user).status(ApiMessageCode.NO_MESSAGE)); } @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/settings"}, produces = "application/json") public @ResponseBody - ResponseEntity> saveSettings(@RequestBody Map settings, Principal principal) { - try { - UserManager.updateSettings(this.getApiContext(), settings, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); - } + ResponseEntity> saveSettings(@RequestBody Map settings, Principal principal) throws IOException { + UserManager.updateSettings(this.getApiContext(), settings, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerErrorHandler.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerErrorHandler.java index 8c0cf0479..ab42b9fc7 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerErrorHandler.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerErrorHandler.java @@ -2,7 +2,9 @@ package eu.eudat.controllers.controllerhandler; import eu.eudat.core.logger.Logger; import eu.eudat.core.models.exception.ApiExceptionLoggingModel; +import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.security.Principal; +import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ControllerAdvice; @@ -27,19 +29,19 @@ public class ControllerErrorHandler { this.logger = logger; } - @ExceptionHandler(Exception.class) + @ExceptionHandler(NullPointerException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody - public void processValidationError(Principal principal, Exception ex) throws Exception { + public ResponseItem processValidationError(Principal principal, Exception ex) throws Exception { ApiExceptionLoggingModel apiExceptionLoggingModel = new ApiExceptionLoggingModel<>(); apiExceptionLoggingModel.setCode(HttpStatus.BAD_REQUEST); apiExceptionLoggingModel.setUser(principal); - Map exceptionMap = new HashMap<>(); - exceptionMap.put("exception",ex); + Map exceptionMap = new HashMap<>(); + exceptionMap.put("exception", ex); apiExceptionLoggingModel.setData(exceptionMap); apiExceptionLoggingModel.setMessage(ex.getMessage()); apiExceptionLoggingModel.setType(LoggingType.ERROR); this.logger.error(apiExceptionLoggingModel); - return; + return new ResponseItem().message(ex.getMessage()).status(ApiMessageCode.DEFAULT_ERROR_MESSAGE); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/DataManagementPlanTableRequestValidator.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/DataManagementPlanTableRequestValidator.java index 0fa6a30bc..44fbbb74f 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/validators/DataManagementPlanTableRequestValidator.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/DataManagementPlanTableRequestValidator.java @@ -1,27 +1,23 @@ package eu.eudat.models.validators; import eu.eudat.data.query.items.table.dmp.DataManagementPlanTableRequest; +import eu.eudat.models.validators.fluentvalidator.FluentValidator; import org.springframework.stereotype.Component; -import org.springframework.validation.Errors; -import org.springframework.validation.Validator; @Component("dataManagementPlanTableRequestValidator") -public class DataManagementPlanTableRequestValidator implements Validator { - @Override - public boolean supports(Class aClass) { - return DataManagementPlanTableRequest.class.equals(aClass); +public class DataManagementPlanTableRequestValidator extends FluentValidator { + + public DataManagementPlanTableRequestValidator() { + ruleFor(x -> x.getOffset()).compareAs((x -> 0), (leftItem, rightItem) -> leftItem < rightItem) + .withName("offset").withMessage("datamanagementplanrequest.offset.negative"); + ruleFor(x -> x.getLength()).compareAs((x -> 0), (leftItem, rightItem) -> leftItem < rightItem) + .withName("length").withMessage("datamanagementplanrequest.length.negative"); } @Override - public void validate(Object obj, Errors errors) { - DataManagementPlanTableRequest dataManagementPlanTableRequest = (DataManagementPlanTableRequest) obj; - if (dataManagementPlanTableRequest.getOffset() < 0) { - errors.rejectValue("offset", "datamanagementplanrequest.offset.negative"); - } - if (dataManagementPlanTableRequest.getLength() < 0) { - errors.rejectValue("length", "datamanagementplanrequest.length.negative"); - } + public boolean supports(Class clazz) { + return DataManagementPlanTableRequest.class.equals(clazz); } public static boolean supportsType(Class clazz) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/DatasetProfileValidator.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/DatasetProfileValidator.java index 860ac960e..fa6145044 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/validators/DatasetProfileValidator.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/DatasetProfileValidator.java @@ -1,24 +1,24 @@ package eu.eudat.models.validators; import eu.eudat.models.data.admin.composite.DatasetProfile; +import eu.eudat.models.data.project.Project; +import eu.eudat.models.validators.fluentvalidator.FluentValidator; import org.springframework.stereotype.Component; import org.springframework.validation.Errors; import org.springframework.validation.Validator; @Component("datasetProfileValidator") -public class DatasetProfileValidator implements Validator { - @Override - public boolean supports(Class aClass) { - return DatasetProfile.class.equals(aClass); +public class DatasetProfileValidator extends FluentValidator { + + public DatasetProfileValidator() { + ruleFor(x -> x.getLabel()).notEmpty() + .withName("label").withMessage("datasetprofile.label.null"); } @Override - public void validate(Object obj, Errors errors) { - DatasetProfile datasetProfile = (DatasetProfile) obj; - if (datasetProfile.getLabel() == null) { - errors.rejectValue("label", "datasetprofile.label.null"); - } + public boolean supports(Class aClass) { + return DatasetProfile.class.equals(aClass); } public static boolean supportsType(Class clazz) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/ProjectModelValidator.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/ProjectModelValidator.java index 3c51ce4d9..5ed5b1c6f 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/validators/ProjectModelValidator.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/ProjectModelValidator.java @@ -1,27 +1,26 @@ package eu.eudat.models.validators; +import eu.eudat.data.query.items.table.project.ProjectTableRequest; import eu.eudat.models.data.project.Project; +import eu.eudat.models.validators.fluentvalidator.FluentValidator; import org.springframework.stereotype.Component; import org.springframework.validation.Errors; import org.springframework.validation.Validator; @Component("projectModelValidator") -public class ProjectModelValidator implements Validator { - @Override - public boolean supports(Class aClass) { - return Project.class.equals(aClass); +public class ProjectModelValidator extends FluentValidator { + + public ProjectModelValidator() { + ruleFor(x -> x.getType()).compareAs((x -> eu.eudat.data.entities.Project.ProjectType.EXTERNAL.getValue()), (leftItem, rightItem) -> leftItem == rightItem) + .withName("type").withMessage("project.external.edit"); + ruleFor(x -> x.getStartDate()).compareAs((x -> x.getEndDate()), (leftItem, rightItem) -> leftItem.after(rightItem)) + .withName("startDate").withMessage("project.startDate.overlapping"); } @Override - public void validate(Object obj, Errors errors) { - Project project = (Project) obj; - if (project.getType()== eu.eudat.data.entities.Project.ProjectType.EXTERNAL.getValue()) { - errors.rejectValue("type", "project.external.edit"); - } - if (project.getStartDate() != null && project.getEndDate() != null && project.getStartDate().after(project.getEndDate())) { - errors.rejectValue("startDate", "project.startDate.overlapping"); - } + public boolean supports(Class aClass) { + return Project.class.equals(aClass); } public static boolean supportsType(Class aClass) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/ProjectTableRequestValidator.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/ProjectTableRequestValidator.java index da9c9c404..dcfabd7a2 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/validators/ProjectTableRequestValidator.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/ProjectTableRequestValidator.java @@ -1,30 +1,30 @@ package eu.eudat.models.validators; import eu.eudat.data.query.items.table.project.ProjectTableRequest; +import eu.eudat.models.validators.fluentvalidator.FluentValidator; import org.springframework.stereotype.Component; import org.springframework.validation.Errors; -import org.springframework.validation.Validator; @Component("projectTableRequestValidator") -public class ProjectTableRequestValidator implements Validator { - @Override - public boolean supports(Class aClass) { - return ProjectTableRequest.class.equals(aClass); +public class ProjectTableRequestValidator extends FluentValidator { + + public ProjectTableRequestValidator() { + ruleFor(x -> x.getOffset()).compareAs(x -> 0, (leftItem, rightItem) -> leftItem < rightItem) + .withName("offset").withMessage("projectTableRequest.offset.negative"); + + ruleFor(x -> x.getLength()).compareAs(x -> 0, (leftItem, rightItem) -> leftItem < rightItem) + .withName("length").withMessage("projectTableRequest.length.negative"); + + ruleFor(x -> x.getCriteria().getPeriodStart()) + .compareAs(x -> x.getCriteria().getPeriodEnd(), (leftItem, rightItem) -> rightItem.before(leftItem)) + .withName("criteria.periodStart").withMessage("projectTableRequest.periodStart.overlapping") + .ruleIf(x -> x.getCriteria() != null && x.getCriteria().getPeriodStart() != null && x.getCriteria().getPeriodEnd() != null); } @Override - public void validate(Object obj, Errors errors) { - ProjectTableRequest projectTableRequest = (ProjectTableRequest) obj; - if (projectTableRequest.getCriteria() != null && projectTableRequest.getCriteria().getPeriodEnd() != null && projectTableRequest.getCriteria().getPeriodStart() != null && projectTableRequest.getCriteria().getPeriodEnd().before(projectTableRequest.getCriteria().getPeriodStart())) { - errors.rejectValue("criteria.periodStart", "projectTableRequest.periodStart.overlapping"); - } - if (projectTableRequest.getOffset() < 0) { - errors.rejectValue("offset", "projectTableRequest.offset.negative"); - } - if (projectTableRequest.getLength() < 0) { - errors.rejectValue("length", "projectTableRequest.length.negative"); - } + public boolean supports(Class aClass) { + return ProjectTableRequest.class.equals(aClass); } public static boolean supportsType(Class clazz) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/FluentValidator.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/FluentValidator.java index f10c376c8..2df83780d 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/FluentValidator.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/FluentValidator.java @@ -4,25 +4,29 @@ import eu.eudat.models.validators.fluentvalidator.predicates.FieldSelector; import org.springframework.validation.Errors; import org.springframework.validation.Validator; +import java.util.LinkedList; +import java.util.List; + /** * Created by ikalyvas on 8/28/2018. */ -public class FluentValidator implements Validator { +public abstract class FluentValidator implements Validator { - private T item; + private List fluentValidatorBuilders = new LinkedList<>(); - public void ruleFor(FieldSelector selector) { - selector.apply(this.item); + public FluentValidatorBuilder ruleFor(FieldSelector selector) { + FluentValidatorBuilder fluentValidatorBuilder = new FluentValidatorBuilder<>(selector); + this.fluentValidatorBuilders.add(fluentValidatorBuilder); + return fluentValidatorBuilder; } @Override - public boolean supports(Class clazz) { - return this.item.getClass().equals(clazz); - } + public abstract boolean supports(Class clazz); @Override public void validate(Object target, Errors errors) { - this.item = (T) target; - + List validatorResults = new LinkedList<>(); + this.fluentValidatorBuilders.forEach(x-> validatorResults.addAll(x.validate(target))); + validatorResults.forEach(x-> errors.rejectValue(x.getField(),x.getError())); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/FluentValidatorBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/FluentValidatorBuilder.java new file mode 100644 index 000000000..ecab91921 --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/FluentValidatorBuilder.java @@ -0,0 +1,68 @@ +package eu.eudat.models.validators.fluentvalidator; + +import eu.eudat.models.validators.fluentvalidator.predicates.ComparisonOperator; +import eu.eudat.models.validators.fluentvalidator.predicates.ConditionalOperator; +import eu.eudat.models.validators.fluentvalidator.predicates.FieldSelector; +import eu.eudat.models.validators.fluentvalidator.rules.AbstractFluentValidatorRule; +import eu.eudat.models.validators.fluentvalidator.rules.CompareRule; +import eu.eudat.models.validators.fluentvalidator.rules.NotEmptyRule; + +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Created by ikalyvas on 8/31/2018. + */ +public class FluentValidatorBuilder { + private FieldSelector selector; + private T item; + private String name; + private String message; + private List validationMessages = new LinkedList<>(); + private List rules = new LinkedList<>(); + private ConditionalOperator conditionalOperator; + public FluentValidatorBuilder(FieldSelector selector) { + this.selector = selector; + } + + public FluentValidatorBuilder notEmpty() { + this.rules.add(new NotEmptyRule<>(this.selector)); + return this; + } + + public FluentValidatorBuilder ruleIf(ConditionalOperator conditionalOperator) { + this.conditionalOperator = conditionalOperator; + return this; + } + + public FluentValidatorBuilder compareAs(FieldSelector comparisonSelector, ComparisonOperator comparisonOperator) { + this.rules.add(new CompareRule<>(this.selector, comparisonSelector, comparisonOperator)); + return this; + } + + public FluentValidatorBuilder withName(String name) { + this.name = name; + return this; + } + + public FluentValidatorBuilder withMessage(String message) { + this.message = message; + return this; + } + + public List validate(T item) { + this.item = item; + List errors = new LinkedList<>(); + if(this.conditionalOperator != null && !this.conditionalOperator.apply(this.item)) return errors; + this.rules.forEach(x -> errors.add(this.evaluateError(x))); + return errors.stream().filter(x -> x != null).collect(Collectors.toList()); + } + + private FluentValidatorResult evaluateError(AbstractFluentValidatorRule rule) { + if (rule.assertValue(this.item)) { + return new FluentValidatorResult(this.name, this.message); + } + return null; + } +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/FluentValidatorResult.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/FluentValidatorResult.java new file mode 100644 index 000000000..ca3480065 --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/FluentValidatorResult.java @@ -0,0 +1,32 @@ +package eu.eudat.models.validators.fluentvalidator; + +import java.util.List; + +/** + * Created by ikalyvas on 8/31/2018. + */ +public class FluentValidatorResult { + private String field; + private String error; + + public FluentValidatorResult(String field, String error) { + this.field = field; + this.error = error; + } + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + + public String getError() { + return error; + } + + public void setError(String error) { + this.error = error; + } +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/Rule.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/Rule.java new file mode 100644 index 000000000..f06cc290c --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/Rule.java @@ -0,0 +1,8 @@ +package eu.eudat.models.validators.fluentvalidator; + +/** + * Created by ikalyvas on 8/31/2018. + */ +public enum Rule { + NOT_EMPTY, GREATER, GREATER_THAN, EQUAL, LESS, LESS_THAN, +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/predicates/ComparisonOperator.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/predicates/ComparisonOperator.java new file mode 100644 index 000000000..386df83ed --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/predicates/ComparisonOperator.java @@ -0,0 +1,8 @@ +package eu.eudat.models.validators.fluentvalidator.predicates; + +/** + * Created by ikalyvas on 8/31/2018. + */ +public interface ComparisonOperator { + boolean compare(L leftItem, R rightItem); +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/predicates/ConditionalOperator.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/predicates/ConditionalOperator.java new file mode 100644 index 000000000..8392c61c1 --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/predicates/ConditionalOperator.java @@ -0,0 +1,8 @@ +package eu.eudat.models.validators.fluentvalidator.predicates; + +/** + * Created by ikalyvas on 8/31/2018. + */ +public interface ConditionalOperator { + boolean apply(T item); +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/rules/AbstractFluentValidatorRule.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/rules/AbstractFluentValidatorRule.java new file mode 100644 index 000000000..61cd3091c --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/rules/AbstractFluentValidatorRule.java @@ -0,0 +1,20 @@ +package eu.eudat.models.validators.fluentvalidator.rules; + +import eu.eudat.models.validators.fluentvalidator.predicates.FieldSelector; + +/** + * Created by ikalyvas on 8/31/2018. + */ +public abstract class AbstractFluentValidatorRule { + private FieldSelector fieldSelector; + + public FieldSelector getFieldSelector() { + return fieldSelector; + } + + public AbstractFluentValidatorRule(FieldSelector fieldSelector) { + this.fieldSelector = fieldSelector; + } + + public abstract boolean assertValue(T item); +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/rules/CompareRule.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/rules/CompareRule.java new file mode 100644 index 000000000..b2fcfa3dc --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/rules/CompareRule.java @@ -0,0 +1,24 @@ +package eu.eudat.models.validators.fluentvalidator.rules; + +import eu.eudat.models.validators.fluentvalidator.predicates.ComparisonOperator; +import eu.eudat.models.validators.fluentvalidator.predicates.FieldSelector; + +/** + * Created by ikalyvas on 8/31/2018. + */ +public class CompareRule extends AbstractFluentValidatorRule { + + private FieldSelector comparisonSelector; + private ComparisonOperator comparisonOperator; + + public CompareRule(FieldSelector fieldSelector, FieldSelector comparisonSelector, ComparisonOperator comparisonOperator) { + super(fieldSelector); + this.comparisonOperator = comparisonOperator; + this.comparisonSelector = comparisonSelector; + } + + @Override + public boolean assertValue(T item) { + return this.comparisonOperator.compare(this.getFieldSelector().apply(item), this.comparisonSelector.apply(item)); + } +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/rules/NotEmptyRule.java b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/rules/NotEmptyRule.java new file mode 100644 index 000000000..5c693be9a --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/validators/fluentvalidator/rules/NotEmptyRule.java @@ -0,0 +1,18 @@ +package eu.eudat.models.validators.fluentvalidator.rules; + +import eu.eudat.models.validators.fluentvalidator.predicates.FieldSelector; + +/** + * Created by ikalyvas on 8/31/2018. + */ +public class NotEmptyRule extends AbstractFluentValidatorRule { + + public NotEmptyRule(FieldSelector fieldSelector) { + super(fieldSelector); + } + + @Override + public boolean assertValue(T item) { + return this.getFieldSelector().apply(item) != null; + } +}