From 8b12042516c6ec02002258b9e6006a2fbe7c8798 Mon Sep 17 00:00:00 2001 From: Kea Horvath Date: Fri, 7 Apr 2023 16:38:47 +0200 Subject: [PATCH] trebgdbf --- .../backend/Controller/ImageController.java | 27 ++++++++++++++----- .../main/java/pdl/backend/Image/Image.java | 24 ++++++++++++++--- .../main/java/pdl/backend/Image/ImageDao.java | 2 +- 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/backend/src/main/java/pdl/backend/Controller/ImageController.java b/backend/src/main/java/pdl/backend/Controller/ImageController.java index 4121894..388c695 100644 --- a/backend/src/main/java/pdl/backend/Controller/ImageController.java +++ b/backend/src/main/java/pdl/backend/Controller/ImageController.java @@ -100,7 +100,7 @@ public class ImageController { || (!contentType.equals(MediaType.IMAGE_JPEG_VALUE) && !contentType.equals(MediaType.IMAGE_PNG_VALUE))) return JSONError("Content type " + contentType + "is not supported", HttpStatus.UNSUPPORTED_MEDIA_TYPE); try { - Image newImg = new Image(file.getOriginalFilename(), file.getBytes()); + Image newImg = new Image(file.getOriginalFilename(), file.getBytes(), null); imageDao.create(newImg); URI newURI = ServletUriComponentsBuilder.fromCurrentRequest().path("/" + newImg.getId()).build().toUri(); return ResponseEntity.created(newURI).build(); @@ -165,8 +165,7 @@ public class ImageController { * l'algorithme à utiliser ainsi que ses paramètres * @return Une ResponseEntity */ - @GetMapping(value = "/images/{id}", produces = { MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE, - "application/json" }) + @GetMapping(value = "/images/{id}", produces = { "application/json" }) public ResponseEntity getImage(@PathVariable("id") long id, @RequestParam(required = false) Map parameters) { @@ -210,6 +209,7 @@ public class ImageController { } try { a.apply(input); + } catch (Exception e) { return JSONError("There was an internal server error", HttpStatus.INTERNAL_SERVER_ERROR); } @@ -227,8 +227,23 @@ public class ImageController { return JSONError("There was an internal server error", HttpStatus.INTERNAL_SERVER_ERROR); } byte[] imageData = baos.toByteArray(); - InputStream inputStream = new ByteArrayInputStream( - imageData); - return ResponseEntity.ok().contentType(image.getMediaType()).body(new InputStreamResource(inputStream)); + String name = image.getName() + "_filtered"; + Image newImg; + try { + if (image.isFiltered()) { + newImg = new Image(name, imageData, image.getParent()); + imageDao.delete(image); + } else { + newImg = new Image(name, imageData, image); + } + } catch (IOException e) { + return JSONError("There was an internal server error", HttpStatus.INTERNAL_SERVER_ERROR); + } + if (image.isFiltered()) { + imageDao.delete(image); + } + newImg.setFiltered(true); + imageDao.create(newImg); + return ResponseEntity.ok().body(newImg.getId()); } } diff --git a/backend/src/main/java/pdl/backend/Image/Image.java b/backend/src/main/java/pdl/backend/Image/Image.java index 7b006a6..cfc20f9 100644 --- a/backend/src/main/java/pdl/backend/Image/Image.java +++ b/backend/src/main/java/pdl/backend/Image/Image.java @@ -18,8 +18,10 @@ public class Image { private final int width; private final int height; private final int nbColors; + private boolean filtered; + private Image parent; - public Image(final String name, final byte[] data) throws IOException { + public Image(final String name, final byte[] data, Image parent) throws IOException { id = count++; this.name = name; this.data = data; @@ -28,7 +30,8 @@ public class Image { this.width = bufImg.getWidth(); this.height = bufImg.getHeight(); this.nbColors = bufImg.getColorModel().getNumComponents(); - + this.filtered = false; + this.parent = parent; } public MediaType getMediaType() { @@ -40,7 +43,10 @@ public class Image { } public String getName() { - return name; + if (filtered) + return name + "_filtered"; + else + return name; } public void setName(final String name) { @@ -70,4 +76,16 @@ public class Image { public String getSize() { return this.getWidth() + "*" + this.getHeight() + "*" + this.getNbColors(); } + + public boolean isFiltered() { + return filtered; + } + + public void setFiltered(final boolean filtered) { + this.filtered = filtered; + } + + public Image getParent() { + return parent; + } } diff --git a/backend/src/main/java/pdl/backend/Image/ImageDao.java b/backend/src/main/java/pdl/backend/Image/ImageDao.java index b4b53cd..3b5c06a 100644 --- a/backend/src/main/java/pdl/backend/Image/ImageDao.java +++ b/backend/src/main/java/pdl/backend/Image/ImageDao.java @@ -58,7 +58,7 @@ public class ImageDao implements Dao { byte[] fileContent; try { fileContent = Files.readAllBytes(file.toPath()); - Image img = new Image(file.getName(), fileContent); + Image img = new Image(file.getName(), fileContent, null); images.put(img.getId(), img); } catch (final IOException e) { e.printStackTrace();