From d5fb85d933f1b64611694527d16b66b33c9e0461 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Thu, 24 Nov 2022 11:45:10 +0100 Subject: [PATCH] ui --- .../is/resources/ResourcesRestController.java | 60 ++++-------- .../is/resources/SimpleResourceService.java | 94 +++++++++++++++++++ .../eu/dnetlib/is/util/DatabaseUtils.java | 41 -------- .../resources/static/js/simpleResources.js | 20 +--- .../resources/templates/simpleResources.html | 61 ++++-------- 5 files changed, 130 insertions(+), 146 deletions(-) create mode 100644 apps/dnet-is-application/src/main/java/eu/dnetlib/is/resources/SimpleResourceService.java delete mode 100644 apps/dnet-is-application/src/main/java/eu/dnetlib/is/util/DatabaseUtils.java diff --git a/apps/dnet-is-application/src/main/java/eu/dnetlib/is/resources/ResourcesRestController.java b/apps/dnet-is-application/src/main/java/eu/dnetlib/is/resources/ResourcesRestController.java index 35bfc8c6..855a592a 100644 --- a/apps/dnet-is-application/src/main/java/eu/dnetlib/is/resources/ResourcesRestController.java +++ b/apps/dnet-is-application/src/main/java/eu/dnetlib/is/resources/ResourcesRestController.java @@ -3,30 +3,23 @@ package eu.dnetlib.is.resources; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import eu.dnetlib.is.resource.model.SimpleResource; -import eu.dnetlib.is.resource.repository.SimpleResourceRepository; -import eu.dnetlib.is.util.DatabaseUtils; import eu.dnetlib.is.util.InformationServiceException; @RestController @@ -34,19 +27,11 @@ import eu.dnetlib.is.util.InformationServiceException; public class ResourcesRestController { @Autowired - private SimpleResourceRepository simpleResourceRepository; - - @Autowired - private DatabaseUtils databaseUtils; - - private static final Log log = LogFactory.getLog(ResourcesRestController.class); + private SimpleResourceService service; @GetMapping("/") public List listResources(@RequestParam final String type) { - return simpleResourceRepository.findByType(type) - .stream() - .sorted((r1, r2) -> StringUtils.compareIgnoreCase(r1.getName(), r2.getName())) - .collect(Collectors.toList()); + return service.listResources(type); } @PostMapping("/") @@ -57,24 +42,23 @@ public class ResourcesRestController { @RequestParam final String content) throws InformationServiceException { - return databaseUtils.saveNewResource(name, type, description, ctype, content); + return service.saveNewResource(name, type, description, ctype, content); } @DeleteMapping("/{id}") public void deleteResource(@PathVariable final String id) { - log.info("Deleting resource: " + id); - simpleResourceRepository.deleteById(id); + service.deleteResource(id); } @GetMapping("/{id}/metadata") public SimpleResource getMetadata(@PathVariable final String id) throws InformationServiceException { - return simpleResourceRepository.findById(id).orElseThrow(() -> new InformationServiceException("Id not found")); + return service.getMetadata(id); } @GetMapping("/{id}/content") public void getContent(@PathVariable final String id, final HttpServletResponse res) throws InformationServiceException { - final String ctype = simpleResourceRepository.findContentTypeById(id).orElseThrow(() -> new InformationServiceException("Id not found")); - final String content = simpleResourceRepository.findContentById(id).orElseThrow(() -> new InformationServiceException("Id not found")); + final String ctype = service.getContentType(id); + final String content = service.getContent(id); res.setCharacterEncoding(StandardCharsets.UTF_8.name()); res.setContentType(ctype); @@ -87,36 +71,24 @@ public class ResourcesRestController { } @PostMapping("/{id}/metadata") - public void saveMetadata(@RequestBody final SimpleResource r) throws InformationServiceException { - if (simpleResourceRepository.existsById(r.getId())) { - simpleResourceRepository.save(r); - } else { - throw new InformationServiceException("Resource not found"); - } + public void saveMetadata(@PathVariable final String id, @RequestBody final SimpleResource r) throws InformationServiceException { + service.saveMetadata(id, r); } @PostMapping("/{id}/content") public void saveContent(@PathVariable final String id, @RequestParam final String content) throws InformationServiceException { - if (simpleResourceRepository.existsById(id)) { - simpleResourceRepository.setContentById(id, content); - } else { - throw new InformationServiceException("Resource not found"); - } + service.saveContent(id, content); } - @PutMapping(value = "/{id}/content", consumes = { + @PostMapping(value = "/{id}/file", consumes = { MediaType.TEXT_PLAIN_VALUE, MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE }) public void uploadContent(@PathVariable final String id, final HttpServletRequest request) throws InformationServiceException { - if (simpleResourceRepository.existsById(id)) { - try { - final String content = IOUtils.toString(request.getInputStream(), StandardCharsets.UTF_8); - simpleResourceRepository.setContentById(id, content); - } catch (final Exception e) { - throw new InformationServiceException("Error processing file", e); - } - } else { - throw new InformationServiceException("Resource not found"); + try { + final String content = IOUtils.toString(request.getInputStream(), StandardCharsets.UTF_8); + service.saveContent(id, content); + } catch (final IOException e) { + throw new InformationServiceException("Error processing input file", e); } } diff --git a/apps/dnet-is-application/src/main/java/eu/dnetlib/is/resources/SimpleResourceService.java b/apps/dnet-is-application/src/main/java/eu/dnetlib/is/resources/SimpleResourceService.java new file mode 100644 index 00000000..4ae07260 --- /dev/null +++ b/apps/dnet-is-application/src/main/java/eu/dnetlib/is/resources/SimpleResourceService.java @@ -0,0 +1,94 @@ +package eu.dnetlib.is.resources; + +import java.util.Date; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +import javax.transaction.Transactional; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.PathVariable; + +import eu.dnetlib.is.resource.model.SimpleResource; +import eu.dnetlib.is.resource.repository.SimpleResourceRepository; +import eu.dnetlib.is.util.InformationServiceException; + +@Service +public class SimpleResourceService { + + @Autowired + private SimpleResourceRepository simpleResourceRepository; + + private static final Log log = LogFactory.getLog(SimpleResourceService.class); + + public SimpleResource getMetadata(final String id) throws InformationServiceException { + return simpleResourceRepository.findById(id).orElseThrow(() -> new InformationServiceException("Id not found")); + } + + public String getContent(final String id) throws InformationServiceException { + return simpleResourceRepository.findContentById(id).orElseThrow(() -> new InformationServiceException("Id not found")); + } + + public String getContentType(final String id) throws InformationServiceException { + return simpleResourceRepository.findContentTypeById(id).orElseThrow(() -> new InformationServiceException("Id not found")); + } + + public List listResources(final String type) { + return simpleResourceRepository.findByType(type) + .stream() + .sorted((r1, r2) -> StringUtils.compareIgnoreCase(r1.getName(), r2.getName())) + .collect(Collectors.toList()); + } + + public void deleteResource(@PathVariable final String id) { + log.info("Deleting resource: " + id); + simpleResourceRepository.deleteById(id); + } + + @Transactional + public SimpleResource saveNewResource(final String name, + final String type, + final String description, + final String ctype, + final String content) { + final Date now = new Date(); + + final SimpleResource res = new SimpleResource(); + res.setId(UUID.randomUUID().toString()); + res.setName(name); + res.setType(type); + res.setDescription(description); + res.setCreationDate(now); + res.setModificationDate(now); + + simpleResourceRepository.save(res); + simpleResourceRepository.setContentById(res.getId(), content); + + return res; + } + + @Transactional + public void saveMetadata(final String id, final SimpleResource r) throws InformationServiceException { + if (simpleResourceRepository.existsById(id)) { + r.setId(id); + simpleResourceRepository.save(r); + } else { + throw new InformationServiceException("Resource not found"); + } + } + + @Transactional + public void saveContent(final String id, final String content) throws InformationServiceException { + if (simpleResourceRepository.existsById(id)) { + simpleResourceRepository.setContentById(id, content); + } else { + throw new InformationServiceException("Resource not found"); + } + + } +} diff --git a/apps/dnet-is-application/src/main/java/eu/dnetlib/is/util/DatabaseUtils.java b/apps/dnet-is-application/src/main/java/eu/dnetlib/is/util/DatabaseUtils.java deleted file mode 100644 index d49493e0..00000000 --- a/apps/dnet-is-application/src/main/java/eu/dnetlib/is/util/DatabaseUtils.java +++ /dev/null @@ -1,41 +0,0 @@ -package eu.dnetlib.is.util; - -import java.util.Date; -import java.util.UUID; - -import javax.transaction.Transactional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import eu.dnetlib.is.resource.model.SimpleResource; -import eu.dnetlib.is.resource.repository.SimpleResourceRepository; - -@Component -public class DatabaseUtils { - - @Autowired - private SimpleResourceRepository simpleResourceRepository; - - @Transactional - public SimpleResource saveNewResource(final String name, - final String type, - final String description, - final String ctype, - final String content) { - final Date now = new Date(); - - final SimpleResource res = new SimpleResource(); - res.setId(UUID.randomUUID().toString()); - res.setName(name); - res.setType(type); - res.setDescription(description); - res.setCreationDate(now); - res.setModificationDate(now); - - simpleResourceRepository.save(res); - simpleResourceRepository.setContentById(res.getId(), content); - - return res; - } -} diff --git a/apps/dnet-is-application/src/main/resources/static/js/simpleResources.js b/apps/dnet-is-application/src/main/resources/static/js/simpleResources.js index 0127f76e..3b6edf5b 100644 --- a/apps/dnet-is-application/src/main/resources/static/js/simpleResources.js +++ b/apps/dnet-is-application/src/main/resources/static/js/simpleResources.js @@ -4,7 +4,6 @@ app.controller('resourcesController', function($scope, $http) { $scope.resources = []; $scope.tmpRes = {}; $scope.tmpContent = "loading..."; - $scope.mode = ''; $scope.type = typeId(); $scope.reload = function() { @@ -16,7 +15,6 @@ app.controller('resourcesController', function($scope, $http) { }; $scope.prepareNewRes = function() { - $scope.mode = 'new'; $scope.tmpRes = { 'id' : '', 'name' : '', @@ -26,7 +24,6 @@ app.controller('resourcesController', function($scope, $http) { $scope.prepareEditMetadata = function(res) { $scope.tmpRes = angular.copy(res); - $scope.mode = 'edit'; } $scope.prepareEditContent = function(res) { @@ -43,22 +40,9 @@ app.controller('resourcesController', function($scope, $http) { $scope.tmpRes = angular.copy(res); } - $scope.saveMetadata = function(md) { - if ($scope.mode == 'new') { - var found = false; - - angular.forEach($scope.resources, function(r) { - if (md.id == r.id) { found = true; }; - }); - - if (found) { - alert("Insertion failed: resource already exists !"); - return; - } - } - + $scope.saveMetadata = function(id, md) { $http.defaults.headers.post["Content-Type"] = "application/json;charset=UTF-8"; - $http.post('./api/resources/?' + $.now(), md).then(function successCallback(res) { + $http.post('./api/resources/' + id + '/metadata?' + $.now(), md).then(function successCallback(res) { alert("Resource saved"); $scope.reload(); }, function errorCallback(res) { diff --git a/apps/dnet-is-application/src/main/resources/templates/simpleResources.html b/apps/dnet-is-application/src/main/resources/templates/simpleResources.html index a799e3cb..fff58275 100644 --- a/apps/dnet-is-application/src/main/resources/templates/simpleResources.html +++ b/apps/dnet-is-application/src/main/resources/templates/simpleResources.html @@ -35,7 +35,6 @@

- raw content @@ -55,16 +54,15 @@ - + + @@ -91,38 +89,15 @@ - - - - -