diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 24137d6..c3a2eff 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -1,11 +1,13 @@ package mops.gruppen2.controller; +import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException; import mops.gruppen2.config.Gruppen2Config; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Role; import mops.gruppen2.domain.User; import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.exception.GroupNotFoundException; +import mops.gruppen2.domain.exception.WrongFileException; import mops.gruppen2.security.Account; import mops.gruppen2.service.ControllerService; import mops.gruppen2.service.CsvService; @@ -13,6 +15,7 @@ import mops.gruppen2.service.GroupService; import mops.gruppen2.service.InviteLinkRepositoryService; import mops.gruppen2.service.KeyCloakService; import mops.gruppen2.service.UserService; +import org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -26,6 +29,7 @@ import org.springframework.web.context.annotation.SessionScope; import org.springframework.web.multipart.MultipartFile; import javax.annotation.security.RolesAllowed; +import java.io.CharConversionException; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -88,7 +92,11 @@ public class Gruppen2Controller { Account account = keyCloakService.createAccountFromPrincipal(token); List userList = new ArrayList<>(); if (!file.isEmpty()) { - userList = CsvService.read(file.getInputStream()); + try { + userList = CsvService.read(file.getInputStream()); + } catch (UnrecognizedPropertyException | CharConversionException ex) { + throw new WrongFileException(file.getOriginalFilename()); + } } visibility = visibility == null; lecture = lecture == null; @@ -125,7 +133,13 @@ public class Gruppen2Controller { @RequestParam(value = "file", required = false) MultipartFile file) throws IOException { List userList = new ArrayList<>(); if (!file.isEmpty()) { - userList = CsvService.read(file.getInputStream()); + try { + userList = CsvService.read(file.getInputStream()); + } catch (UnrecognizedPropertyException | CharConversionException ex) { + throw new WrongFileException(file.getOriginalFilename()); + } catch (IllegalStateException ex) { + throw new WrongFileException(file.getOriginalFilename()); + } } controllerService.addUserList(userList, groupId); return "redirect:/gruppen2/details/members/" + groupId; diff --git a/src/main/java/mops/gruppen2/domain/exception/WrongFileException.java b/src/main/java/mops/gruppen2/domain/exception/WrongFileException.java new file mode 100644 index 0000000..59ab3fb --- /dev/null +++ b/src/main/java/mops/gruppen2/domain/exception/WrongFileException.java @@ -0,0 +1,9 @@ +package mops.gruppen2.domain.exception; + +import org.springframework.http.HttpStatus; + +public class WrongFileException extends EventException { + public WrongFileException(String info) { + super(HttpStatus.INTERNAL_SERVER_ERROR, "Die entsprechende Datei ist keine valide CSV-Datei!", info); + } +}