forked from taywils/java_spark_tutorial
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHelloSpark.java
More file actions
126 lines (96 loc) · 4.41 KB
/
HelloSpark.java
File metadata and controls
126 lines (96 loc) · 4.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import static spark.Spark.*;
import spark.ModelAndView;
import spark.Request;
import spark.Response;
import spark.Route;
import spark.template.freemarker.FreeMarkerRoute;
import java.util.*;
public class HelloSpark {
public static ArticleDbService<Article> articleDbService = new ArticleServletDao<Article>();
public static void main(String[] args) {
get(new FreeMarkerRoute("/") {
@Override
public ModelAndView handle(Request request, Response response) {
Map<String, Object> viewObjects = new HashMap<String, Object>();
ArrayList<Article> articles = articleDbService.readAll();
if (articles.isEmpty()) {
viewObjects.put("hasNoArticles", "Welcome, please click \"Write Article\" to begin.");
} else {
Deque<Article> showArticles = new ArrayDeque<Article>();
for (Article article : articles) {
if (article.readable()) {
showArticles.addFirst(article);
}
}
viewObjects.put("articles", showArticles);
}
viewObjects.put("templateName", "articleList.ftl");
return modelAndView(viewObjects, "layout.ftl");
}
});
get(new FreeMarkerRoute("/article/create") {
@Override
public Object handle(Request request, Response response) {
Map<String, Object> viewObjects = new HashMap<String, Object>();
viewObjects.put("templateName", "articleForm.ftl");
return modelAndView(viewObjects, "layout.ftl");
}
});
post(new Route("/article/create") {
@Override
public Object handle(Request request, Response response) {
String title = request.queryParams("article-title");
String summary = request.queryParams("article-summary");
String content = request.queryParams("article-content");
Article article = new Article(title, summary, content, articleDbService.readAll().size());
articleDbService.create(article);
response.status(201);
response.redirect("/");
return "";
}
});
get(new FreeMarkerRoute("/article/read/:id") {
@Override
public Object handle(Request request, Response response) {
Integer id = Integer.parseInt(request.params(":id"));
Map<String, Object> viewObjects = new HashMap<String, Object>();
viewObjects.put("templateName", "articleRead.ftl");
viewObjects.put("article", articleDbService.readOne(id));
return modelAndView(viewObjects, "layout.ftl");
}
});
get(new FreeMarkerRoute("/article/update/:id") {
@Override
public Object handle(Request request, Response response) {
Integer id = Integer.parseInt(request.params(":id"));
Map<String, Object> viewObjects = new HashMap<String, Object>();
viewObjects.put("templateName", "articleForm.ftl");
viewObjects.put("article", articleDbService.readOne(id));
return modelAndView(viewObjects, "layout.ftl");
}
});
post(new Route("/article/update/:id") {
@Override
public Object handle(Request request, Response response) {
Integer id = Integer.parseInt(request.queryParams("article-id"));
String title = request.queryParams("article-title");
String summary = request.queryParams("article-summary");
String content = request.queryParams("article-content");
articleDbService.update(id, title, summary, content);
response.status(200);
response.redirect("/");
return "";
}
});
get(new Route("/article/delete/:id") {
@Override
public Object handle(Request request, Response response) {
Integer id = Integer.parseInt(request.params(":id"));
articleDbService.delete(id);
response.status(200);
response.redirect("/");
return "";
}
});
}
}