diff --git a/build.gradle b/build.gradle index 25ea948..647ef39 100644 --- a/build.gradle +++ b/build.gradle @@ -68,6 +68,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 12591a1..0963fbd 100644 --- a/src/main/java/mops/gruppen2/controller/APIController.java +++ b/src/main/java/mops/gruppen2/controller/APIController.java @@ -13,7 +13,10 @@ import mops.gruppen2.service.GroupService; import mops.gruppen2.service.SerializationService; import org.springframework.security.access.annotation.Secured; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; import java.util.List; /** @@ -59,4 +62,14 @@ 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)); + } + + @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/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(); + } +} diff --git a/src/main/resources/templates/create.html b/src/main/resources/templates/create.html index f9084b8..f8604bb 100644 --- a/src/main/resources/templates/create.html +++ b/src/main/resources/templates/create.html @@ -64,4 +64,4 @@ - \ No newline at end of file +