Skip to content

Commit fd44422

Browse files
committed
redesigned filtered page request
1 parent 0af4868 commit fd44422

5 files changed

Lines changed: 63 additions & 38 deletions

File tree

src/main/java/edu/tamu/app/controller/NoteController.java

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,13 @@
44
import static edu.tamu.framework.enums.BusinessValidationType.CREATE;
55
import static edu.tamu.framework.enums.BusinessValidationType.EXISTS;
66

7-
import java.util.HashMap;
8-
import java.util.Iterator;
9-
import java.util.Map;
10-
117
import org.springframework.beans.factory.annotation.Autowired;
128
import org.springframework.data.domain.Page;
13-
import org.springframework.data.domain.Sort;
14-
import org.springframework.data.domain.Sort.Direction;
159
import org.springframework.transaction.annotation.Transactional;
1610
import org.springframework.web.bind.annotation.RestController;
1711

18-
import com.fasterxml.jackson.databind.JsonNode;
19-
import com.fasterxml.jackson.databind.node.ArrayNode;
12+
import com.fasterxml.jackson.core.JsonProcessingException;
13+
import com.fasterxml.jackson.databind.ObjectMapper;
2014

2115
import edu.tamu.app.model.Note;
2216
import edu.tamu.app.model.Service;
@@ -40,6 +34,9 @@ public class NoteController {
4034
@Autowired
4135
private NoteRepo noteRepo;
4236

37+
@Autowired
38+
private ObjectMapper objectMapper;
39+
4340
@ApiMapping("/all")
4441
@Auth(role = "ROLE_ANONYMOUS")
4542
public ApiResponse getAllNotes() {
@@ -82,27 +79,14 @@ public ApiResponse remove(@ApiValidatedModel Note note) {
8279

8380
@ApiMapping("/page")
8481
@Auth(role = "ROLE_ANONYMOUS")
85-
public ApiResponse page(@ApiData JsonNode dataNode) {
86-
Direction sortDirection;
87-
if (dataNode.get("direction").get("direction").asText().equals("ASC")) {
88-
sortDirection = Sort.Direction.ASC;
89-
} else {
90-
sortDirection = Sort.Direction.DESC;
82+
public ApiResponse page(@ApiData FilteredPageRequest filteredPageRequest) {
83+
try {
84+
System.out.println("\n" + objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(filteredPageRequest) + "\n");
85+
} catch (JsonProcessingException e) {
86+
e.printStackTrace();
9187
}
92-
Map<String, String[]> filters = new HashMap<String, String[]>();
93-
filters.put("title", arrayNodeToStringArray((ArrayNode) dataNode.get("filters").get("title")));
94-
FilteredPageRequest filteredPageRequest = new FilteredPageRequest(dataNode.get("page").get("number").asInt(), dataNode.get("page").get("size").asInt(), sortDirection, dataNode.get("direction").get("properties").asText(), filters);
95-
Page<Note> notes = noteRepo.findAll(filteredPageRequest);
88+
Page<Note> notes = noteRepo.findAll(filteredPageRequest.toPageRequest());
9689
return new ApiResponse(SUCCESS, notes);
9790
}
9891

99-
private String[] arrayNodeToStringArray(ArrayNode arrayNode) {
100-
String[] array = new String[arrayNode.size()];
101-
Iterator<JsonNode> arrayIterator = arrayNode.elements();
102-
int i = 0;
103-
while (arrayIterator.hasNext()) {
104-
array[i++] = arrayIterator.next().asText();
105-
}
106-
return array;
107-
}
10892
}

src/main/java/edu/tamu/app/model/Note.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package edu.tamu.app.model;
22

3+
import static javax.persistence.CascadeType.MERGE;
34
import static javax.persistence.CascadeType.REFRESH;
45
import static javax.persistence.FetchType.EAGER;
56

@@ -41,7 +42,7 @@ public class Note extends BaseEntity {
4142
@UpdateTimestamp
4243
private Calendar lastModified;
4344

44-
@ManyToOne(fetch = EAGER)
45+
@ManyToOne(fetch = EAGER, cascade = MERGE)
4546
private Service service;
4647

4748
@ManyToOne(cascade = REFRESH, optional = false)

src/main/java/edu/tamu/app/model/repo/impl/NoteRepoImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public Note create(Note note, Credentials credentials) {
3434
@Override
3535
public Note update(Note note) {
3636
note = noteRepo.save(note);
37-
simpMessagingTemplate.convertAndSend("/channel/note/" + note.getId(), new ApiResponse(SUCCESS, note));
37+
simpMessagingTemplate.convertAndSend("/channel/note/update", new ApiResponse(SUCCESS, note));
3838
return note;
3939
}
4040

src/main/java/edu/tamu/app/model/repo/impl/ServiceRepoImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public Service create(String name, Status status, Boolean isAuto, Boolean isPubl
3838
@Override
3939
public Service update(Service service) {
4040
service = serviceRepo.save(service);
41-
simpMessagingTemplate.convertAndSend("/channel/service/" + service.getId(), new ApiResponse(SUCCESS, service));
41+
simpMessagingTemplate.convertAndSend("/channel/service/update", new ApiResponse(SUCCESS, service));
4242
sendStatusUpdate();
4343
return service;
4444
}
Lines changed: 48 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,61 @@
11
package edu.tamu.app.model.request;
22

3+
import java.util.List;
34
import java.util.Map;
45

56
import org.springframework.data.domain.PageRequest;
67
import org.springframework.data.domain.Sort;
78

8-
public class FilteredPageRequest extends PageRequest {
9+
public class FilteredPageRequest {
10+
11+
private int pageNumber;
12+
13+
private int pageSize;
14+
15+
private String direction;
16+
17+
private List<String> properties;
918

10-
private static final long serialVersionUID = -190530029013941566L;
1119
private Map<String, String[]> filters;
12-
20+
1321
public FilteredPageRequest() {
14-
super(0, 2);
22+
23+
}
24+
25+
public PageRequest toPageRequest() {
26+
return new PageRequest(pageNumber, pageSize, new Sort(Sort.Direction.fromString(direction), properties));
27+
}
28+
29+
public int getPageNumber() {
30+
return pageNumber;
31+
}
32+
33+
public void setPageNumber(int pageNumber) {
34+
this.pageNumber = pageNumber;
1535
}
16-
17-
public FilteredPageRequest(int page, int size, Sort.Direction direction, String properties, Map<String, String[]> filters) {
18-
super(page, size, direction, properties);
19-
setFilters(filters);
36+
37+
public int getPageSize() {
38+
return pageSize;
39+
}
40+
41+
public void setPageSize(int pageSize) {
42+
this.pageSize = pageSize;
43+
}
44+
45+
public String getDirection() {
46+
return direction;
47+
}
48+
49+
public void setDirection(String direction) {
50+
this.direction = direction;
51+
}
52+
53+
public List<String> getProperties() {
54+
return properties;
55+
}
56+
57+
public void setProperties(List<String> properties) {
58+
this.properties = properties;
2059
}
2160

2261
public Map<String, String[]> getFilters() {
@@ -26,4 +65,5 @@ public Map<String, String[]> getFilters() {
2665
public void setFilters(Map<String, String[]> filters) {
2766
this.filters = filters;
2867
}
68+
2969
}

0 commit comments

Comments
 (0)