Skip to content

Commit c8cb503

Browse files
committed
wip: Keep field and sort direction in pojo class. Use List instead of Map
1 parent c7c3e8c commit c8cb503

4 files changed

Lines changed: 67 additions & 45 deletions

File tree

src/main/java/com/crowdin/client/core/http/impl/util/SortOrderGenerator.java

Lines changed: 0 additions & 28 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.crowdin.client.core.model;
2+
3+
import com.crowdin.client.core.http.impl.util.RequestEncoder;
4+
import lombok.Data;
5+
6+
import java.util.List;
7+
import java.util.stream.Collectors;
8+
9+
@Data
10+
public class OrderByField {
11+
private String fieldName;
12+
private SortOrder orderBy;
13+
14+
public static String generateSortParam(List<OrderByField> fields) {
15+
if (fields == null || fields.isEmpty()) {
16+
return null;
17+
}
18+
19+
String sortParam = fields.stream()
20+
.map(field -> {
21+
if (field.getOrderBy() == null) {
22+
field.setOrderBy(SortOrder.ASC);
23+
}
24+
25+
return field.getFieldName() + " " + field.getOrderBy().to(field.getOrderBy());
26+
})
27+
.collect(Collectors.joining(","));
28+
29+
return RequestEncoder.encodeSpaces(sortParam);
30+
}
31+
}

src/main/java/com/crowdin/client/tasks/TasksApi.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.crowdin.client.core.http.HttpRequestConfig;
55
import com.crowdin.client.core.http.exceptions.HttpBadRequestException;
66
import com.crowdin.client.core.http.exceptions.HttpException;
7-
import com.crowdin.client.core.http.impl.util.SortOrderGenerator;
87
import com.crowdin.client.core.model.*;
98
import com.crowdin.client.tasks.model.*;
109

@@ -52,20 +51,20 @@ public ResponseList<Task> listTasks(Long projectId, Integer limit, Integer offse
5251
* @param offset starting offset in the collection (default 0)
5352
* @param status filter by status
5453
* @param assigneeId filter by assignee id
55-
* @param orderBy sort keys and strategy
54+
* @param orderBy list of OrderByField
5655
* @return list of tasks
5756
* @see <ul>
5857
* <li><a href="https://developer.crowdin.com/api/v2/#operation/api.projects.tasks.getMany" target="_blank"><b>API Documentation</b></a></li>
5958
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.tasks.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
6059
* </ul>
6160
*/
62-
public ResponseList<Task> listTasks(Long projectId, Integer limit, Integer offset, Status status, Integer assigneeId, Map<String, SortOrder> orderBy) throws HttpException, HttpBadRequestException {
61+
public ResponseList<Task> listTasks(Long projectId, Integer limit, Integer offset, Status status, Integer assigneeId, List<OrderByField> orderBy) throws HttpException, HttpBadRequestException {
6362
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
6463
"status", Optional.ofNullable(status),
6564
"assigneeId", Optional.ofNullable(assigneeId),
6665
"limit", Optional.ofNullable(limit),
6766
"offset", Optional.ofNullable(offset),
68-
"orderBy", Optional.ofNullable(SortOrderGenerator.generateSortParam(orderBy))
67+
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(orderBy))
6968
);
7069
TaskResponseList taskResponseList = this.httpClient.get(this.url + "/projects/" + projectId + "/tasks", new HttpRequestConfig(queryParams), TaskResponseList.class);
7170
return TaskResponseList.to(taskResponseList);

src/test/java/com/crowdin/client/tasks/TasksApiTest.java

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,13 @@ public void listTasksTest_noSortDefined() {
9595

9696
@Test
9797
public void listTasksTest_testSortByIdDefault() {
98-
Map<String, SortOrder> orderBy = new LinkedHashMap<>();
99-
orderBy.put("id", null);
100-
ResponseList<Task> taskResponseList = this.getTasksApi().listTasks(tasksProjectIdSortByIdAsc, null, null, null, null, orderBy);
98+
OrderByField orderBy = new OrderByField();
99+
orderBy.setFieldName("id");
100+
101+
List<OrderByField> orderByFields = new ArrayList<>();
102+
orderByFields.add(orderBy);
103+
104+
ResponseList<Task> taskResponseList = this.getTasksApi().listTasks(tasksProjectIdSortByIdAsc, null, null, null, null, orderByFields);
101105

102106
assertNotNull(taskResponseList.getData().get(0).getData());
103107
assertEquals(2, taskResponseList.getData().size());
@@ -108,9 +112,14 @@ public void listTasksTest_testSortByIdDefault() {
108112

109113
@Test
110114
public void listTasksTest_testSortByIdAsc() {
111-
Map<String, SortOrder> orderBy = new LinkedHashMap<>();
112-
orderBy.put("id", SortOrder.ASC);
113-
ResponseList<Task> taskResponseList = this.getTasksApi().listTasks(tasksProjectIdSortByIdAsc, null, null, null, null, orderBy);
115+
OrderByField orderBy = new OrderByField();
116+
orderBy.setFieldName("id");
117+
orderBy.setOrderBy(SortOrder.ASC);
118+
119+
List<OrderByField> orderByFields = new ArrayList<>();
120+
orderByFields.add(orderBy);
121+
122+
ResponseList<Task> taskResponseList = this.getTasksApi().listTasks(tasksProjectIdSortByIdAsc, null, null, null, null, orderByFields);
114123

115124
assertNotNull(taskResponseList.getData().get(0).getData());
116125
assertEquals(2, taskResponseList.getData().size());
@@ -121,10 +130,14 @@ public void listTasksTest_testSortByIdAsc() {
121130

122131
@Test
123132
public void listTasksTest_testSortByIdDesc() {
124-
Map<String, SortOrder> orderBy = new LinkedHashMap<>();
125-
orderBy.put("id", SortOrder.DESC);
133+
OrderByField orderBy = new OrderByField();
134+
orderBy.setFieldName("id");
135+
orderBy.setOrderBy(SortOrder.DESC);
126136

127-
ResponseList<Task> taskResponseList = this.getTasksApi().listTasks(tasksProjectIdSortByIdDesc, null, null, null, null, orderBy);
137+
List<OrderByField> orderByFields = new ArrayList<>();
138+
orderByFields.add(orderBy);
139+
140+
ResponseList<Task> taskResponseList = this.getTasksApi().listTasks(tasksProjectIdSortByIdDesc, null, null, null, null, orderByFields);
128141

129142
assertNotNull(taskResponseList.getData().get(0).getData());
130143
assertEquals(2, taskResponseList.getData().size());
@@ -135,11 +148,18 @@ public void listTasksTest_testSortByIdDesc() {
135148

136149
@Test
137150
public void listTasksTest_testSortByIdDescTitleAsc() {
138-
Map<String, SortOrder> orderBy = new LinkedHashMap<>();
139-
orderBy.put("id", SortOrder.DESC);
140-
orderBy.put("title", null);
151+
OrderByField orderByIdDesc = new OrderByField();
152+
orderByIdDesc.setFieldName("id");
153+
orderByIdDesc.setOrderBy(SortOrder.DESC);
154+
155+
OrderByField orderByTitleNull = new OrderByField();
156+
orderByTitleNull.setFieldName("title");
157+
158+
List<OrderByField> orderByFields = new ArrayList<>();
159+
orderByFields.add(orderByIdDesc);
160+
orderByFields.add(orderByTitleNull);
141161

142-
ResponseList<Task> taskResponseList = this.getTasksApi().listTasks(tasksProjectIdSortByIdDescTitleAsc, null, null, null, null, orderBy);
162+
ResponseList<Task> taskResponseList = this.getTasksApi().listTasks(tasksProjectIdSortByIdDescTitleAsc, null, null, null, null, orderByFields);
143163

144164
assertNotNull(taskResponseList.getData().get(0).getData());
145165
assertEquals(2, taskResponseList.getData().size());

0 commit comments

Comments
 (0)