From 9f464fe8595a49ecbdf6ae9c2e2ca7583ac31090 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 16 Mar 2020 13:56:05 +0100 Subject: [PATCH 1/2] init csv support --- build.gradle | 1 + .../gruppen2/controller/APIController.java | 12 ++++++---- .../mops/gruppen2/service/CsvService.java | 22 +++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 src/main/java/mops/gruppen2/service/CsvService.java diff --git a/build.gradle b/build.gradle index 35f2c5d..d5bc275 100644 --- a/build.gradle +++ b/build.gradle @@ -66,6 +66,7 @@ dependencies { implementation 'io.springfox:springfox-swagger2:2.9.2' implementation 'io.springfox:springfox-swagger-ui:2.9.2' implementation 'com.github.javafaker:javafaker:1.0.2' + implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.10.2' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' diff --git a/src/main/java/mops/gruppen2/controller/APIController.java b/src/main/java/mops/gruppen2/controller/APIController.java index f4d18ef..33da9a3 100644 --- a/src/main/java/mops/gruppen2/controller/APIController.java +++ b/src/main/java/mops/gruppen2/controller/APIController.java @@ -7,12 +7,11 @@ import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.apiWrapper.UpdatedGroupRequestMapper; import mops.gruppen2.domain.event.Event; -import mops.gruppen2.service.APIFormatterService; -import mops.gruppen2.service.EventService; -import mops.gruppen2.service.GroupService; -import mops.gruppen2.service.SerializationService; +import mops.gruppen2.service.*; import org.springframework.web.bind.annotation.*; +import java.io.IOException; +import java.io.InputStream; import java.util.List; /** @@ -55,4 +54,9 @@ public class APIController { List groups = groupService.projectEventList(eventList); return groups.get(0); } + + @PostMapping(value = "/uploadcsv", consumes = "text/csv") + public void uploadCsv(@RequestBody InputStream body) throws IOException { + System.out.println(CsvService.read(body)); + } } diff --git a/src/main/java/mops/gruppen2/service/CsvService.java b/src/main/java/mops/gruppen2/service/CsvService.java new file mode 100644 index 0000000..da8293e --- /dev/null +++ b/src/main/java/mops/gruppen2/service/CsvService.java @@ -0,0 +1,22 @@ +package mops.gruppen2.service; + +import com.fasterxml.jackson.databind.ObjectReader; +import com.fasterxml.jackson.dataformat.csv.CsvMapper; +import com.fasterxml.jackson.dataformat.csv.CsvSchema; +import mops.gruppen2.domain.User; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +public class CsvService { + + public static List read(InputStream stream) throws IOException { + CsvMapper mapper = new CsvMapper(); + + CsvSchema schema = mapper.schemaFor(User.class).withHeader().withColumnReordering(true); + ObjectReader reader = mapper.readerFor(User.class).with(schema); + + return reader.readValues(stream).readAll(); + } +} From 2c3531657dbba47887e92319fe7bb5e41aacf3bd Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 16 Mar 2020 14:09:30 +0100 Subject: [PATCH 2/2] csv proof of concept --- src/main/java/mops/gruppen2/controller/APIController.java | 6 ++++++ src/main/java/mops/gruppen2/domain/User.java | 5 +++-- src/main/resources/templates/create.html | 6 +++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/APIController.java b/src/main/java/mops/gruppen2/controller/APIController.java index 33da9a3..d0c46ce 100644 --- a/src/main/java/mops/gruppen2/controller/APIController.java +++ b/src/main/java/mops/gruppen2/controller/APIController.java @@ -9,6 +9,7 @@ import mops.gruppen2.domain.apiWrapper.UpdatedGroupRequestMapper; import mops.gruppen2.domain.event.Event; import mops.gruppen2.service.*; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; @@ -59,4 +60,9 @@ public class APIController { public void uploadCsv(@RequestBody InputStream body) throws IOException { System.out.println(CsvService.read(body)); } + + @PostMapping(value = "/uploadcsv", consumes = "multipart/form-data") + public void uploadMultipart(@RequestParam("file") MultipartFile file) throws IOException { + System.out.println(CsvService.read(file.getInputStream())); + } } diff --git a/src/main/java/mops/gruppen2/domain/User.java b/src/main/java/mops/gruppen2/domain/User.java index c929135..5e103ae 100644 --- a/src/main/java/mops/gruppen2/domain/User.java +++ b/src/main/java/mops/gruppen2/domain/User.java @@ -3,10 +3,11 @@ package mops.gruppen2.domain; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.NoArgsConstructor; -@Value +@Data @AllArgsConstructor +@NoArgsConstructor @EqualsAndHashCode(exclude = {"givenname", "familyname", "email"}) public class User { String user_id; diff --git a/src/main/resources/templates/create.html b/src/main/resources/templates/create.html index 08c2b7e..627e534 100644 --- a/src/main/resources/templates/create.html +++ b/src/main/resources/templates/create.html @@ -57,7 +57,11 @@ +
+ + +
- \ No newline at end of file +