diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a0f6091 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +### Example user template template +### Example user template + +# IntelliJ project files +.idea +*.iml +target +pom.xml + + +out +gen +# Created by .ignore support plugin (hsz.mobi) diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 0000000..59499bc --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/lib/jstl-1.2.jar b/lib/jstl-1.2.jar new file mode 100644 index 0000000..0fd275e Binary files /dev/null and b/lib/jstl-1.2.jar differ diff --git a/output/artifacts/HomeTaskWeek9_war_exploded/META-INF/MANIFEST.MF b/output/artifacts/HomeTaskWeek9_war_exploded/META-INF/MANIFEST.MF new file mode 100644 index 0000000..e88f668 --- /dev/null +++ b/output/artifacts/HomeTaskWeek9_war_exploded/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Built-By: sergei +Created-By: IntelliJ IDEA +Build-Jdk: 1.8.0_45 + diff --git a/output/artifacts/ROOT/ROOT.war b/output/artifacts/ROOT/ROOT.war new file mode 100644 index 0000000..50eafcd Binary files /dev/null and b/output/artifacts/ROOT/ROOT.war differ diff --git a/output/artifacts/unnamed/unnamed.war b/output/artifacts/unnamed/unnamed.war new file mode 100644 index 0000000..470c21e Binary files /dev/null and b/output/artifacts/unnamed/unnamed.war differ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..4be3506 --- /dev/null +++ b/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + groupId + HomeTaskWeek9 + 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + war + + + \ No newline at end of file diff --git a/src/com/geekhub/hw8/CreateFileServlet.java b/src/com/geekhub/hw8/CreateFileServlet.java deleted file mode 100644 index 940501f..0000000 --- a/src/com/geekhub/hw8/CreateFileServlet.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.geekhub.hw8; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -@WebServlet("/file/create") -public class CreateFileServlet extends HttpServlet { - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - super.doGet(req, resp); - } -} diff --git a/src/com/geekhub/hw8/RemoveFileServlet.java b/src/com/geekhub/hw8/RemoveFileServlet.java deleted file mode 100644 index a6322e6..0000000 --- a/src/com/geekhub/hw8/RemoveFileServlet.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.geekhub.hw8; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -@WebServlet("/file/remove") -public class RemoveFileServlet extends HttpServlet { - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - super.doGet(req, resp); - } -} diff --git a/src/com/geekhub/hw8/ViewDirectoryServlet.java b/src/com/geekhub/hw8/ViewDirectoryServlet.java deleted file mode 100644 index d915e71..0000000 --- a/src/com/geekhub/hw8/ViewDirectoryServlet.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.geekhub.hw8; - -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebInitParam; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; - -@WebServlet(value = "/dir/view", initParams = { - @WebInitParam(name = "root", value = "D:\\") -}) -public class ViewDirectoryServlet extends HttpServlet { - - private static Path ROOT_PATH; - - @Override - public void init(ServletConfig config) throws ServletException { - ROOT_PATH = Paths.get(config.getInitParameter("root")); - } - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - StringBuilder sb = new StringBuilder(); - sb.append(""); - - //TODO: Implement directory listing here - - sb.append(""); - resp.getWriter().write(sb.toString()); - } - - private void appendLink(StringBuilder sb, String text, Path path) { - //TODO: Implement link rendering based on path type (directory or file) - } -} diff --git a/src/main/java/com/geekhub/hw8/CreateFileServlet.java b/src/main/java/com/geekhub/hw8/CreateFileServlet.java new file mode 100644 index 0000000..a47169f --- /dev/null +++ b/src/main/java/com/geekhub/hw8/CreateFileServlet.java @@ -0,0 +1,35 @@ +package com.geekhub.hw8; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +@WebServlet("/file/create") +public class CreateFileServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String folder = req.getParameter("folder"); + String fileName = req.getParameter("fileName"); + String fileExtension = req.getParameter("fileExtension"); + + Path path = Paths.get(folder + "/" + fileName + "." + fileExtension); + + if (!Files.exists(path)) { + Files.createFile(path); + + }else try { + throw new Exception("File with this name exist"); + } catch (Exception e) { + e.printStackTrace(); + } + req.getRequestDispatcher("/dir/view?path=" + folder + "/").forward(req, resp); + + } +} diff --git a/src/com/geekhub/hw8/IndexServlet.java b/src/main/java/com/geekhub/hw8/IndexServlet.java similarity index 86% rename from src/com/geekhub/hw8/IndexServlet.java rename to src/main/java/com/geekhub/hw8/IndexServlet.java index f80a98b..b72412c 100644 --- a/src/com/geekhub/hw8/IndexServlet.java +++ b/src/main/java/com/geekhub/hw8/IndexServlet.java @@ -6,6 +6,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; @WebServlet("/") public class IndexServlet extends HttpServlet { diff --git a/src/main/java/com/geekhub/hw8/RemoveFileServlet.java b/src/main/java/com/geekhub/hw8/RemoveFileServlet.java new file mode 100644 index 0000000..f1e2823 --- /dev/null +++ b/src/main/java/com/geekhub/hw8/RemoveFileServlet.java @@ -0,0 +1,32 @@ +package com.geekhub.hw8; + + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +@WebServlet("/file/remove") +public class RemoveFileServlet extends HttpServlet { + + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String removeFile = req.getParameter("remove"); + Path path = Paths.get(removeFile); + String folder = path.getParent().toString(); + + if (!Files.deleteIfExists(path)) try { + throw new Exception("File is not exist"); + } catch (Exception e) { + e.printStackTrace(); + } + req.getRequestDispatcher("/dir/view?path=" + folder + "/").forward(req, resp); + + } +} diff --git a/src/main/java/com/geekhub/hw8/ViewDirectoryServlet.java b/src/main/java/com/geekhub/hw8/ViewDirectoryServlet.java new file mode 100644 index 0000000..c54e522 --- /dev/null +++ b/src/main/java/com/geekhub/hw8/ViewDirectoryServlet.java @@ -0,0 +1,142 @@ +package com.geekhub.hw8; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebInitParam; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +@WebServlet(value = "/dir/view", initParams = { + @WebInitParam(name = "root", value = "/home/") +}) +public class ViewDirectoryServlet extends HttpServlet { + + private static Path ROOT_PATH; + + @Override + public void init(ServletConfig config) throws ServletException { + ROOT_PATH = Paths.get(config.getInitParameter("root")); + } + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + Path path; + String pathParameter = req.getParameter("path"); + if (pathParameter != null) { + path = Paths.get(pathParameter); + } else path = ROOT_PATH; + + + StringBuilder sb = new StringBuilder(); + sb.append(""); + sb.append(""); + sb.append(""); + sb.append(""); + sb.append(""); + sb.append("
"); + sb.append("

Create file :

"); + + sb.append("
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
"); + sb.append("
"); + + + sb.append("
"); + sb.append("
"); + sb.append("
"); + sb.append("
"); + sb.append("" + + " " + + "" + + " " + + " " + + " " + + "" + + " " + + ""); + + sb.append(""); + int rowNumber = 0; + for (Path pathToFile : pathList(path)) { + appendRow(sb, path.getFileName().toString(), pathToFile, ++rowNumber); + } + sb.append(""); + sb.append("
#File nameTypeRemove
"); + sb.append("
"); + sb.append("
"); + + sb.append(" "); + sb.append(""); + sb.append(""); + sb.append(""); + + resp.getWriter().write(sb.toString()); + } + + private void appendRow(StringBuilder sb, String text, Path path, int rowNumber) { + sb.append(""); + + sb.append(""); + sb.append(rowNumber); + sb.append(""); + + if (Files.isDirectory(path)) { + sb.append(""); + sb.append("" + path.getFileName().toString() + ""); + sb.append(""); + + sb.append(""); + sb.append(""); + sb.append(""); + } else { + sb.append(""); + sb.append("" + path.getFileName().toString() + ""); + sb.append(""); + + sb.append(""); + sb.append(""); + sb.append(""); + } + + sb.append(""); + sb.append("
\n" + + " \n" + + " \n" + + "
"); + sb.append(""); + + sb.append(""); + + } + + + public List pathList(Path directory) { + List paths = new ArrayList<>(); + try (DirectoryStream directoryStream = Files.newDirectoryStream(directory)) { + for (Path path : directoryStream) { + paths.add(path); + } + } catch (IOException ex) { + System.out.println(" IOException"); + } + Collections.sort(paths, (Path p1, Path p2) -> p1.getFileName().toString().compareTo(p2.getFileName().toString())); + return paths; + } +} diff --git a/src/com/geekhub/hw8/ViewFileServlet.java b/src/main/java/com/geekhub/hw8/ViewFileServlet.java similarity index 54% rename from src/com/geekhub/hw8/ViewFileServlet.java rename to src/main/java/com/geekhub/hw8/ViewFileServlet.java index 263194b..8864bcf 100644 --- a/src/com/geekhub/hw8/ViewFileServlet.java +++ b/src/main/java/com/geekhub/hw8/ViewFileServlet.java @@ -5,14 +5,24 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.BufferedReader; +import java.io.FileReader; import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.Paths; @WebServlet("/file/view") public class ViewFileServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - super.doGet(req, resp); + Path path = Paths.get(req.getParameter("path")); + resp.setHeader("Content-Disposition", "attachment;filename=\"" + path.getFileName().toString() + "\""); + + byte[] file = Files.readAllBytes(path); + resp.setContentLength(file.length); + + resp.getOutputStream().write(file); } } diff --git a/target/HomeTaskWeek9-1.0-SNAPSHOT/META-INF/MANIFEST.MF b/target/HomeTaskWeek9-1.0-SNAPSHOT/META-INF/MANIFEST.MF new file mode 100644 index 0000000..e88f668 --- /dev/null +++ b/target/HomeTaskWeek9-1.0-SNAPSHOT/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Built-By: sergei +Created-By: IntelliJ IDEA +Build-Jdk: 1.8.0_45 + diff --git a/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/CreateFileServlet.class b/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/CreateFileServlet.class new file mode 100644 index 0000000..3194987 Binary files /dev/null and b/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/CreateFileServlet.class differ diff --git a/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/IndexServlet.class b/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/IndexServlet.class new file mode 100644 index 0000000..94810fb Binary files /dev/null and b/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/IndexServlet.class differ diff --git a/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/RemoveFileServlet.class b/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/RemoveFileServlet.class new file mode 100644 index 0000000..9f439ed Binary files /dev/null and b/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/RemoveFileServlet.class differ diff --git a/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/ViewDirectoryServlet.class b/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/ViewDirectoryServlet.class new file mode 100644 index 0000000..911b0fa Binary files /dev/null and b/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/ViewDirectoryServlet.class differ diff --git a/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/ViewFileServlet.class b/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/ViewFileServlet.class new file mode 100644 index 0000000..ba47e9a Binary files /dev/null and b/target/HomeTaskWeek9-1.0-SNAPSHOT/WEB-INF/classes/com/geekhub/hw8/ViewFileServlet.class differ diff --git a/target/classes/com/geekhub/hw8/CreateFileServlet.class b/target/classes/com/geekhub/hw8/CreateFileServlet.class new file mode 100644 index 0000000..3194987 Binary files /dev/null and b/target/classes/com/geekhub/hw8/CreateFileServlet.class differ diff --git a/target/classes/com/geekhub/hw8/IndexServlet.class b/target/classes/com/geekhub/hw8/IndexServlet.class new file mode 100644 index 0000000..94810fb Binary files /dev/null and b/target/classes/com/geekhub/hw8/IndexServlet.class differ diff --git a/target/classes/com/geekhub/hw8/RemoveFileServlet.class b/target/classes/com/geekhub/hw8/RemoveFileServlet.class new file mode 100644 index 0000000..9f439ed Binary files /dev/null and b/target/classes/com/geekhub/hw8/RemoveFileServlet.class differ diff --git a/target/classes/com/geekhub/hw8/ViewDirectoryServlet.class b/target/classes/com/geekhub/hw8/ViewDirectoryServlet.class new file mode 100644 index 0000000..911b0fa Binary files /dev/null and b/target/classes/com/geekhub/hw8/ViewDirectoryServlet.class differ diff --git a/target/classes/com/geekhub/hw8/ViewFileServlet.class b/target/classes/com/geekhub/hw8/ViewFileServlet.class new file mode 100644 index 0000000..ba47e9a Binary files /dev/null and b/target/classes/com/geekhub/hw8/ViewFileServlet.class differ diff --git a/web/WEB-INF/web.xml b/web/WEB-INF/web.xml index 66934d8..a0b58fd 100644 --- a/web/WEB-INF/web.xml +++ b/web/WEB-INF/web.xml @@ -3,5 +3,4 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> - \ No newline at end of file