Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions README.md

This file was deleted.

22 changes: 21 additions & 1 deletion src/com/geekhub/hw8/CreateFileServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,32 @@
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 {
super.doGet(req, resp);
Path path = Paths.get(req.getParameter("name"), req.getParameter("fileName"));
req.setAttribute("name", path.getParent().toString());
if(creteFile(path)){
req.getRequestDispatcher("/dir/view").forward(req, resp);
}else{
resp.sendError(HttpServletResponse.SC_FORBIDDEN);
}
}

private boolean creteFile(Path name){
try {
Files.createFile(name);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}

}
20 changes: 19 additions & 1 deletion src/com/geekhub/hw8/RemoveFileServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,30 @@
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 {
super.doGet(req, resp);
Path path = Paths.get(req.getParameter("name"));
req.setAttribute("name", path.getParent().toString());
if(deleteFile(path))
req.getRequestDispatcher("/dir/view").forward(req, resp);
else
resp.sendError(HttpServletResponse.SC_FORBIDDEN);
}

private boolean deleteFile(Path path){
try {
return Files.deleteIfExists(path);
} catch (IOException e) {
e.printStackTrace();
}
return false;
}

}
65 changes: 59 additions & 6 deletions src/com/geekhub/hw8/ViewDirectoryServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@
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;
import java.nio.file.*;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Iterator;
import java.util.List;

@WebServlet(value = "/dir/view", initParams = {
@WebInitParam(name = "root", value = "D:\\")
@WebInitParam(name = "root", value = "E:\\")
})
public class ViewDirectoryServlet extends HttpServlet {

Expand All @@ -28,15 +30,66 @@ public void init(ServletConfig config) throws ServletException {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
StringBuilder sb = new StringBuilder();
String reqParam = req.getParameter("name")!= null ? req.getParameter("name"): ROOT_PATH.toAbsolutePath().toString();
if (!reqParam.equals(ROOT_PATH.toAbsolutePath().toString())) {
ROOT_PATH = Paths.get(req.getParameter("name"));
}else
ROOT_PATH = Paths.get("E:\\");
if(reqParam != null){
if(Files.exists(Paths.get(reqParam)))
if(!Files.isDirectory(Paths.get(reqParam))){
req.getRequestDispatcher("/file/view").forward(req,resp);
}
}
sb.append("<html>");

sb.append("<head>");
sb.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" />");
sb.append("</head>");
sb.append("<body>");
getParentFolder(sb);
for(Path path : getPaths()){
appendLink(sb, path.getFileName().toString(), path);
}
//TODO: Implement directory listing here

sb.append("</body>");
sb.append("<h2>Create file on this directory:</h2>");
sb.append("<form action=\"/file/create\" method=\"get\">\n" +
" <label>File name</label>\n" +
"<input type=\"hidden\" name=\"name\" value=" + reqParam + ">"+
" <input type=\"text\" name=\"fileName\">\n" +
" <button type=\"submit\">Create file</button>\n" +
"</form>");
sb.append("</html>");

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)
if(Files.isDirectory(path))
sb.append("<b><a href = "+ "?name=" + path.toAbsolutePath().toString() + ""+">" +"--" + text + "</a></b>" + "</br>");
else
sb.append("<a href = "+ "?name=" + path.toAbsolutePath().toString() + ""+">" +"--" + text + "</a> " +
" <a href=" + "/file/remove?name=" + path.toAbsolutePath().toString() + "" + " >" + "Delete file" + "</a></br>");

}

private void getParentFolder(StringBuilder sb){
if(ROOT_PATH.getParent() != null)
sb.append("<b><a href = "+ "?name=" + ROOT_PATH.getParent().toAbsolutePath().toString() + ""+">" + ROOT_PATH.getParent().toString() + "</a></b>" + "<br>");
}

private List<Path> getPaths() throws IOException {
List<Path> result = new ArrayList<>();
try (DirectoryStream<Path> stream = Files.newDirectoryStream(ROOT_PATH)) {
for (Path entry: stream) {
result.add(entry);
}
} catch (DirectoryIteratorException ex) {
throw ex.getCause();
}

return result;
}

}
28 changes: 27 additions & 1 deletion src/com/geekhub/hw8/ViewFileServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,40 @@
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

@WebServlet("/file/view")
public class ViewFileServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
StringBuilder sb = new StringBuilder();
sb.append("<html>");
sb.append("<p>");
sb.append(getFileData(req.getParameter("name")));
sb.append("</p>");
sb.append("</html>");
resp.getWriter().write(sb.toString());
}

private String getFileData(String path){
StringBuilder content = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(path), "Cp1252"))) {
while(reader.ready()){
content.append(reader.readLine() + "\n");
}
} catch (IOException e) {
e.printStackTrace();
}
return content.toString();
}

}