Skip to content

Commit cd80c6e

Browse files
committed
Add object to object mapper, class file headers
1 parent 38ad824 commit cd80c6e

23 files changed

Lines changed: 128 additions & 136 deletions

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ dependencies {
8080

8181
// Utilities
8282
compile 'com.google.guava:guava:+'
83+
compile 'org.modelmapper:modelmapper:0.7.5'
8384

8485
// static resources, ref. http://www.webjars.org/
8586
compile 'org.webjars:jquery:2.1.4'

src/main/java/com/raysmond/blog/admin/controllers/AdminController.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package com.raysmond.blog.admin.controllers;
22

3-
import com.raysmond.blog.forms.PostForm;
43
import com.raysmond.blog.forms.SettingsForm;
5-
import com.raysmond.blog.repositories.SettingRepository;
64
import com.raysmond.blog.services.BlogSetting;
75
import com.raysmond.blog.support.web.MessageHelper;
6+
import com.raysmond.blog.utils.DTOUtil;
87
import org.springframework.beans.factory.annotation.Autowired;
9-
import org.springframework.security.access.annotation.Secured;
108
import org.springframework.stereotype.Controller;
119
import org.springframework.ui.Model;
12-
import org.springframework.validation.BindingResult;
1310
import org.springframework.validation.Errors;
1411
import org.springframework.web.bind.annotation.RequestMapping;
1512
import org.springframework.web.bind.annotation.RequestMethod;
@@ -18,7 +15,7 @@
1815
import javax.validation.Valid;
1916

2017
/**
21-
* Created by Raysmond on 9/25/15.
18+
* @author Raysmond<jiankunlei@gmail.com>
2219
*/
2320
@Controller
2421
@RequestMapping(value = "/admin")
@@ -32,17 +29,14 @@ public AdminController( BlogSetting blogSetting){
3229
this.blogSetting = blogSetting;
3330
}
3431

35-
@RequestMapping(value = "")
32+
@RequestMapping("")
3633
public String index(){
3734
return "admin/index";
3835
}
3936

4037
@RequestMapping(value = "settings")
4138
public String settings(Model model){
42-
SettingsForm settingsForm = new SettingsForm();
43-
settingsForm.setSiteName(blogSetting.getSiteName());
44-
settingsForm.setSiteSlogan(blogSetting.getSiteSlogan());
45-
settingsForm.setPageSize(blogSetting.getPageSize());
39+
SettingsForm settingsForm = DTOUtil.map(blogSetting, SettingsForm.class);
4640

4741
model.addAttribute("settings", settingsForm);
4842
return "admin/settings";
@@ -56,7 +50,9 @@ public String updateSettings(@Valid SettingsForm settingsForm, Errors errors, Mo
5650
blogSetting.setSiteName(settingsForm.getSiteName());
5751
blogSetting.setSiteSlogan(settingsForm.getSiteSlogan());
5852
blogSetting.setPageSize(settingsForm.getPageSize());
53+
5954
MessageHelper.addSuccessAttribute(ra, "Update settings successfully.");
55+
6056
return "redirect:/admin/settings";
6157
}
6258
}

src/main/java/com/raysmond/blog/admin/controllers/PostController.java

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
11
package com.raysmond.blog.admin.controllers;
22

3-
import com.raysmond.blog.config.interceptors.RequestProcessingTimeInterceptor;
43
import com.raysmond.blog.forms.PostForm;
54
import com.raysmond.blog.models.Post;
65
import com.raysmond.blog.models.User;
76
import com.raysmond.blog.models.support.PostFormat;
87
import com.raysmond.blog.models.support.PostStatus;
98
import com.raysmond.blog.repositories.PostRepository;
109
import com.raysmond.blog.repositories.UserRepository;
11-
import com.raysmond.blog.services.MarkdownService;
1210
import com.raysmond.blog.services.PostService;
13-
import org.slf4j.Logger;
14-
import org.slf4j.LoggerFactory;
11+
import com.raysmond.blog.utils.DTOUtil;
1512
import org.springframework.beans.factory.annotation.Autowired;
1613
import org.springframework.data.domain.Page;
1714
import org.springframework.data.domain.PageRequest;
1815
import org.springframework.data.domain.Sort;
1916
import org.springframework.stereotype.Controller;
2017
import org.springframework.ui.Model;
2118
import org.springframework.validation.BindingResult;
19+
import org.springframework.validation.Errors;
2220
import org.springframework.web.bind.annotation.PathVariable;
2321
import org.springframework.web.bind.annotation.RequestMapping;
2422
import org.springframework.web.bind.annotation.RequestMethod;
@@ -28,16 +26,15 @@
2826
import java.security.Principal;
2927

3028
/**
31-
* Created by Raysmond on 9/25/15.
32-
*
29+
* @author Raysmond<jiankunlei@gmail.com>
3330
* TODO place all view templates into sub dirs under /admin/
3431
*/
3532
@Controller(value = "adminPostController")
3633
@RequestMapping(value = "/admin/posts")
3734
public class PostController {
3835

3936
@Autowired
40-
private PostRepository posts;
37+
private PostRepository postRepository;
4138

4239
@Autowired
4340
private PostService postService;
@@ -49,62 +46,68 @@ public class PostController {
4946

5047
@RequestMapping(value = "")
5148
public String index(@RequestParam(defaultValue = "0") int page, Model model){
52-
Page<Post> _posts = posts.findAll(new PageRequest(page, PAGE_SIZE, Sort.Direction.DESC, "id"));
53-
model.addAttribute("totalPages", _posts.getTotalPages());
49+
Page<Post> posts = postRepository.findAll(new PageRequest(page, PAGE_SIZE, Sort.Direction.DESC, "id"));
50+
51+
model.addAttribute("totalPages", posts.getTotalPages());
5452
model.addAttribute("page", page);
55-
model.addAttribute("posts", _posts);
53+
model.addAttribute("posts", posts);
54+
5655
return "admin/posts_index";
5756
}
5857

5958
@RequestMapping(value = "new")
6059
public String newPost(Model model){
6160
model.addAttribute("postForm", new PostForm());
6261
model.addAttribute("postFormats", PostFormat.values());
62+
6363
return "admin/posts_new";
6464
}
6565

6666
@RequestMapping(value = "{postId:[0-9]+}/edit")
6767
public String editPost(@PathVariable Long postId, Model model){
68-
Post post = posts.findOne(postId);
68+
Post post = postService.getPost(postId);
69+
PostForm postForm = DTOUtil.map(post, PostForm.class);
70+
6971
model.addAttribute("post", post);
70-
model.addAttribute("postForm", new PostForm(post));
72+
model.addAttribute("postForm", postForm);
7173
model.addAttribute("postFormats", PostFormat.values());
74+
7275
return "admin/posts_edit";
7376
}
7477

7578
@RequestMapping(value = "{postId:[0-9]+}/delete", method = {RequestMethod.DELETE, RequestMethod.POST})
7679
public String deletePost(@PathVariable Long postId){
77-
postService.deletePost(posts.findOne(postId));
80+
postService.deletePost(postRepository.findOne(postId));
7881
return "redirect:/admin/posts";
7982
}
8083

8184
@RequestMapping(value = "", method = RequestMethod.POST)
82-
public String create(Principal principal, @Valid PostForm postForm, BindingResult bindingResult, Model model){
83-
if (bindingResult.hasErrors()) {
85+
public String create(Principal principal, @Valid PostForm postForm, Errors errors, Model model){
86+
if (errors.hasErrors()) {
8487
model.addAttribute("postFormats", PostFormat.values());
8588
return "admin/posts_new";
8689
} else {
8790
User user = users.findByEmail(principal.getName());
88-
Post post = postForm.toPost();
91+
Post post = DTOUtil.map(postForm, Post.class);
92+
post.setUser(user);
8993

90-
postService.createPost(user, post.getTitle(), post.getContent(), post.getPostFormat(), PostStatus.PUBLISHED);
94+
postService.createPost(post);
9195

9296
return "redirect:/admin/posts";
9397
}
9498
}
9599

96100
@RequestMapping(value = "{postId:[0-9]+}", method = {RequestMethod.PUT, RequestMethod.POST})
97-
public String update(@PathVariable Long postId, @Valid PostForm postForm, BindingResult bindingResult, Model model){
98-
if (bindingResult.hasErrors()){
101+
public String update(@PathVariable Long postId, @Valid PostForm postForm, Errors errors, Model model){
102+
if (errors.hasErrors()){
99103
model.addAttribute("postFormats", PostFormat.values());
100104
return "admin/posts_edit";
101105
} else {
102-
Post post = posts.findOne(postId);
103-
post.setTitle(postForm.getTitle());
104-
post.setContent(postForm.getContent());
105-
post.setPostFormat(postForm.getPostFormat());
106+
Post post = postService.getPost(postId);
106107

108+
DTOUtil.mapTo(postForm, post);
107109
postService.updatePost(post);
110+
108111
return "redirect:/admin/posts";
109112
}
110113
}

src/main/java/com/raysmond/blog/controllers/PostController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import java.util.List;
1818

1919
/**
20-
* Created by Raysmond on 9/26/15.
20+
* @author Raysmond<jiankunlei@gmail.com>
2121
*/
2222
@Controller
2323
@RequestMapping("posts")
@@ -38,6 +38,7 @@ public String show(@PathVariable Long postId, Model model){
3838
if(post == null){
3939
throw new NotFoundException("Post " + postId + " is not found.");
4040
}
41+
4142
model.addAttribute("post", post);
4243
return "posts/show";
4344
}

src/main/java/com/raysmond/blog/controllers/UserController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import org.springframework.web.bind.annotation.RequestMapping;
55

66
/**
7-
* Created by Raysmond on 9/25/15.
7+
* @author Raysmond<jiankunlei@gmail.com>
88
*/
99
@Controller
1010
public class UserController {

src/main/java/com/raysmond/blog/forms/PostForm.java

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package com.raysmond.blog.forms;
22

3-
import com.raysmond.blog.models.Post;
43
import com.raysmond.blog.models.support.PostFormat;
54
import org.hibernate.validator.constraints.NotEmpty;
65
import javax.validation.constraints.NotNull;
76

87
/**
9-
* Created by Raysmond on 9/25/15.
8+
* @author Raysmond<jiankunlei@gmail.com>
109
*/
1110
public class PostForm {
1211
@NotEmpty
@@ -18,24 +17,6 @@ public class PostForm {
1817
@NotNull
1918
private PostFormat postFormat;
2019

21-
public PostForm(){
22-
23-
}
24-
25-
public PostForm(Post post){
26-
title = post.getTitle();
27-
content = post.getContent();
28-
postFormat = post.getPostFormat();
29-
}
30-
31-
public Post toPost(){
32-
Post post = new Post();
33-
post.setTitle(title);
34-
post.setContent(content);
35-
post.setPostFormat(postFormat);
36-
return post;
37-
}
38-
3920
public String getTitle() {
4021
return title;
4122
}

src/main/java/com/raysmond/blog/models/Post.java

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.util.Date;
1010

1111
/**
12-
* Created by Raysmond on 9/25/15.
12+
* @author Raysmond<jiankunlei@gmail.com>
1313
*/
1414
@Entity
1515
@Table(name = "posts")
@@ -28,27 +28,15 @@ public class Post extends BaseModel{
2828

2929
@Column(nullable = false)
3030
@Enumerated(EnumType.STRING)
31-
private PostStatus postStatus;
31+
private PostStatus postStatus = PostStatus.PUBLISHED;
3232

3333
@Column(nullable = false)
3434
@Enumerated(EnumType.STRING)
35-
private PostFormat postFormat;
35+
private PostFormat postFormat = PostFormat.MARKDOWN;
3636

3737
@Column(nullable = false)
3838
@Enumerated(EnumType.STRING)
39-
private PostType postType;
40-
41-
@PrePersist
42-
public void beforeCreate(){
43-
if (postStatus == null)
44-
postStatus = PostStatus.DRAFT;
45-
46-
if (postFormat == null)
47-
postFormat = PostFormat.HTML;
48-
49-
if (postType == null)
50-
postType = PostType.POST;
51-
}
39+
private PostType postType = PostType.POST;
5240

5341
public User getUser() {
5442
return user;

src/main/java/com/raysmond/blog/models/Setting.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
/**
88
* A generic setting model
99
*
10-
* @author Raysmond
10+
* @author Raysmond<jiankunlei@gmail.com>
1111
*/
1212
@Entity
1313
@Table(name = "settings")

src/main/java/com/raysmond/blog/models/User.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import java.util.ArrayList;
77
import java.util.Collection;
88

9+
/**
10+
* @author Raysmond<jiankunlei@gmail.com>
11+
*/
912
@Entity
1013
@Table(name = "users")
1114
public class User extends BaseModel{
@@ -21,7 +24,7 @@ public class User extends BaseModel{
2124
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user", cascade = CascadeType.REMOVE)
2225
private Collection<Post> posts = new ArrayList<>();
2326

24-
protected User() {
27+
public User() {
2528

2629
}
2730

src/main/java/com/raysmond/blog/models/support/PostFormat.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.raysmond.blog.models.support;
22

33
/**
4-
* Created by Raysmond on 9/25/15.
4+
* @author Raysmond<jiankunlei@gmail.com>
55
*/
66
public enum PostFormat {
77
HTML("Html"),

0 commit comments

Comments
 (0)