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("");
+ sb.append("");
+
+
+ sb.append("");
+ sb.append("
");
+ sb.append("
");
+ sb.append("
");
+ sb.append("
" +
+ " " +
+ "" +
+ " | # | " +
+ " File name | " +
+ "Type | " +
+ "Remove | " +
+ "
" +
+ "");
+
+ sb.append("");
+ int rowNumber = 0;
+ for (Path pathToFile : pathList(path)) {
+ appendRow(sb, path.getFileName().toString(), pathToFile, ++rowNumber);
+ }
+ sb.append("");
+ sb.append("
");
+ 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("");
+ 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