+ error messages for file upload
This commit is contained in:
parent
0f25f4e2d9
commit
243eb1c7f9
|
@ -0,0 +1,14 @@
|
||||||
|
package de.hsel.spm.baudas.web;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum ErrorCode {
|
||||||
|
FILE_NOT_FOUND ("Die Hochgeladene Datei konnte nicht gefunden werden"),
|
||||||
|
EMPTY_FILE ("Die Hochgeladene Datei ist leer"),
|
||||||
|
INVALID_FORMAT("Die Hochgeladene Datei hat ein falsches Format");
|
||||||
|
|
||||||
|
private String message;
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
package de.hsel.spm.baudas.web;
|
package de.hsel.spm.baudas.web;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import weka.core.converters.CSVLoader;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.annotation.MultipartConfig;
|
import javax.servlet.annotation.MultipartConfig;
|
||||||
|
@ -32,15 +33,57 @@ public class Upload extends HttpServlet {
|
||||||
private static final long serialVersionUID = 14144111845151L;
|
private static final long serialVersionUID = 14144111845151L;
|
||||||
|
|
||||||
|
|
||||||
|
private boolean checkFormat(InputStream stream) {
|
||||||
|
CSVLoader loader = new CSVLoader();
|
||||||
|
try {
|
||||||
|
loader.setSource(stream);
|
||||||
|
return loader.getDataSet() != null;
|
||||||
|
} catch (IOException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doPost(@NotNull HttpServletRequest req, HttpServletResponse resp)
|
protected void doPost(@NotNull HttpServletRequest req, HttpServletResponse resp)
|
||||||
throws ServletException, IOException {
|
throws ServletException, IOException {
|
||||||
req.setCharacterEncoding(StandardCharsets.UTF_8.name());
|
req.setCharacterEncoding(StandardCharsets.UTF_8.name());
|
||||||
|
|
||||||
Part filePart = req.getPart("file");
|
Part filePart = req.getPart("file");
|
||||||
|
|
||||||
|
if(filePart == null){
|
||||||
|
resp.sendRedirect("error.jsp?code=" + ErrorCode.FILE_NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(filePart.getSubmittedFileName() == null){
|
||||||
|
resp.sendRedirect("error.jsp?code=" + ErrorCode.FILE_NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString();
|
String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString();
|
||||||
|
|
||||||
|
if(fileName == null){
|
||||||
|
resp.sendRedirect("error.jsp?code=" + ErrorCode.FILE_NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
InputStream inputStream = filePart.getInputStream();
|
InputStream inputStream = filePart.getInputStream();
|
||||||
|
|
||||||
|
if(inputStream == null){
|
||||||
|
resp.sendRedirect("error.jsp?code=" + ErrorCode.FILE_NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(inputStream.available() == 0) {
|
||||||
|
resp.sendRedirect("error.jsp?code=" + ErrorCode.EMPTY_FILE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!checkFormat(inputStream)){
|
||||||
|
resp.sendRedirect("error.jsp?code=" + ErrorCode.INVALID_FORMAT);
|
||||||
|
return;
|
||||||
|
}else{
|
||||||
|
inputStream = filePart.getInputStream();
|
||||||
|
}
|
||||||
|
|
||||||
Path path = Data.add(fileName);
|
Path path = Data.add(fileName);
|
||||||
if (!Files.exists(path)) {
|
if (!Files.exists(path)) {
|
||||||
|
@ -49,6 +92,7 @@ public class Upload extends HttpServlet {
|
||||||
|
|
||||||
Files.copy(inputStream, path, StandardCopyOption.REPLACE_EXISTING);
|
Files.copy(inputStream, path, StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
|
||||||
|
|
||||||
resp.sendRedirect("");
|
resp.sendRedirect("");
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
|
||||||
|
<%@include file="head.jsp"%>
|
||||||
|
|
||||||
|
<!--Navbar-->
|
||||||
|
<div class="navbar-fixed">
|
||||||
|
<nav class="nav-extended blue-grey darken-3 white-text row">
|
||||||
|
<a href="#" class="brand-logo hide-on-small-and-down center">BauDas</a>
|
||||||
|
<!--Navbar Items-->
|
||||||
|
<div class="nav-wrapper col 2 right">
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
<br>
|
|
@ -0,0 +1,36 @@
|
||||||
|
<%--
|
||||||
|
Created by IntelliJ IDEA.
|
||||||
|
User: julian
|
||||||
|
Date: 21.05.19
|
||||||
|
Time: 14:21
|
||||||
|
To change this template use File | Settings | File Templates.
|
||||||
|
--%>
|
||||||
|
|
||||||
|
<%@ page import="java.nio.charset.StandardCharsets" %>
|
||||||
|
<%@ page import="de.hsel.spm.baudas.web.ErrorCode" %>
|
||||||
|
<%@ page contentType="text/html;charset=UTF-8" %>
|
||||||
|
<%@include file="emptyHeader.jsp"%>
|
||||||
|
<% response.setCharacterEncoding(StandardCharsets.UTF_8.name()); %>
|
||||||
|
<% request.setCharacterEncoding(StandardCharsets.UTF_8.name()); %>
|
||||||
|
|
||||||
|
<%
|
||||||
|
String code = request.getParameter("code");
|
||||||
|
if(code != null){
|
||||||
|
ErrorCode errorCode = ErrorCode.valueOf(code);
|
||||||
|
%>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s4 push-s4">
|
||||||
|
<div class="card-panel red darken-1">
|
||||||
|
<h5 class="white-text center-align">
|
||||||
|
<%= errorCode.getMessage()%>
|
||||||
|
</h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
|
||||||
|
<%@include file="theming.jsp"%>
|
|
@ -6,10 +6,8 @@
|
||||||
|
|
||||||
<!--Script für Materlialize-->
|
<!--Script für Materlialize-->
|
||||||
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
|
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
|
||||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
|
|
||||||
<script>
|
<%@include file="theming.jsp"%>
|
||||||
M.AutoInit();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script src="js/cache.js"></script>
|
<script src="js/cache.js"></script>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
<% response.setCharacterEncoding(StandardCharsets.UTF_8.name()); %>
|
||||||
|
<% request.setCharacterEncoding(StandardCharsets.UTF_8.name()); %>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<title>BauDas</title>
|
||||||
|
<!--Import Google Icon Font-->
|
||||||
|
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||||
|
<!--Import materialize.css-->
|
||||||
|
<link type="text/css" rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"
|
||||||
|
media="screen,projection"/>
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.css"
|
||||||
|
integrity="sha256-aa0xaJgmK/X74WM224KMQeNQC2xYKwlAt08oZqjeF0E=" crossorigin="anonymous"/>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=utf-8">
|
||||||
|
|
||||||
|
<!--Let browser know website is optimized for mobile-->
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
|
|
||||||
|
</head>
|
|
@ -1,6 +1,6 @@
|
||||||
<%@ page import="java.nio.charset.StandardCharsets" %>
|
<%@ page import="java.nio.charset.StandardCharsets" %>
|
||||||
<%@ page contentType="text/html;charset=UTF-8" %>
|
<%@ page contentType="text/html;charset=UTF-8" %>
|
||||||
<%@include file="header.jsp"%>
|
<%@include file="menu.jsp"%>
|
||||||
<% response.setCharacterEncoding(StandardCharsets.UTF_8.name()); %>
|
<% response.setCharacterEncoding(StandardCharsets.UTF_8.name()); %>
|
||||||
<% request.setCharacterEncoding(StandardCharsets.UTF_8.name()); %>
|
<% request.setCharacterEncoding(StandardCharsets.UTF_8.name()); %>
|
||||||
|
|
||||||
|
|
|
@ -1,26 +1,6 @@
|
||||||
<% response.setCharacterEncoding(StandardCharsets.UTF_8.name()); %>
|
|
||||||
<% request.setCharacterEncoding(StandardCharsets.UTF_8.name()); %>
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="de">
|
|
||||||
<head>
|
|
||||||
<title>BauDas</title>
|
|
||||||
<!--Import Google Icon Font-->
|
|
||||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
|
||||||
<!--Import materialize.css-->
|
|
||||||
<link type="text/css" rel="stylesheet"
|
|
||||||
href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"
|
|
||||||
media="screen,projection"/>
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.css"
|
|
||||||
integrity="sha256-aa0xaJgmK/X74WM224KMQeNQC2xYKwlAt08oZqjeF0E=" crossorigin="anonymous"/>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=utf-8">
|
|
||||||
|
|
||||||
<!--Let browser know website is optimized for mobile-->
|
<%@include file="head.jsp"%>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body class="blue-grey lighten-5">
|
|
||||||
<!--Navbar-->
|
<!--Navbar-->
|
||||||
<div class="navbar-fixed">
|
<div class="navbar-fixed">
|
||||||
<nav class="nav-extended blue-grey darken-3 white-text row">
|
<nav class="nav-extended blue-grey darken-3 white-text row">
|
||||||
|
@ -109,4 +89,4 @@
|
||||||
</button>
|
</button>
|
||||||
</li>
|
</li>
|
||||||
</form>
|
</form>
|
||||||
</ul>
|
</ul>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
|
||||||
|
<script>
|
||||||
|
M.AutoInit();
|
||||||
|
</script>
|
Loading…
Reference in New Issue