Skip to content

Commit 23d2923

Browse files
committed
wip: fourth part of orderBy implementation in list methods
1 parent 55031a1 commit 23d2923

35 files changed

Lines changed: 1730 additions & 64 deletions

src/main/java/com/crowdin/client/labels/LabelsApi.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,7 @@
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.model.BooleanInt;
8-
import com.crowdin.client.core.model.ClientConfig;
9-
import com.crowdin.client.core.model.Credentials;
10-
import com.crowdin.client.core.model.PatchRequest;
11-
import com.crowdin.client.core.model.ResponseList;
12-
import com.crowdin.client.core.model.ResponseObject;
7+
import com.crowdin.client.core.model.*;
138
import com.crowdin.client.labels.model.AddLabelRequest;
149
import com.crowdin.client.labels.model.Label;
1510
import com.crowdin.client.labels.model.LabelResponseList;
@@ -58,6 +53,30 @@ public ResponseList<Label> listLabels(Long projectId, Integer limit, Integer off
5853
return LabelResponseList.to(labelResponseList);
5954
}
6055

56+
/**
57+
* @param projectId Project Identifier
58+
* @param limit A maximum number of items to retrieve. Default: 25
59+
* @param offset A starting offset in the collection. Default: 0
60+
* @param isSystem Filter collection by isSystem value
61+
* @param orderBy list of OrderByField
62+
* @return list of labels
63+
* @see <ul>
64+
* <li><a href="https://developer.crowdin.com/api/v2/#operation/api.projects.labels.getMany" target="_blank"><b>API Documentation</b></a></li>
65+
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.labels.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
66+
* </ul>
67+
*/
68+
public ResponseList<Label> listLabels(Long projectId, Integer limit, Integer offset, BooleanInt isSystem, List<OrderByField> orderBy) throws HttpException, HttpBadRequestException {
69+
String builtUrl = String.format("%s/projects/%d/labels", this.url, projectId);
70+
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
71+
"limit", Optional.ofNullable(limit),
72+
"offset", Optional.ofNullable(offset),
73+
"isSystem", Optional.ofNullable(isSystem),
74+
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(orderBy))
75+
);
76+
LabelResponseList labelResponseList = this.httpClient.get(builtUrl, new HttpRequestConfig(queryParams), LabelResponseList.class);
77+
return LabelResponseList.to(labelResponseList);
78+
}
79+
6180
/**
6281
* @param projectId Project Identifier
6382
* @param request Request object

src/main/java/com/crowdin/client/teams/TeamsApi.java

Lines changed: 42 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,8 @@
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.model.ClientConfig;
8-
import com.crowdin.client.core.model.Credentials;
9-
import com.crowdin.client.core.model.PatchRequest;
10-
import com.crowdin.client.core.model.ResponseList;
11-
import com.crowdin.client.core.model.ResponseObject;
12-
import com.crowdin.client.teams.model.AddTeamMembersRequest;
13-
import com.crowdin.client.teams.model.AddTeamMembersResponse;
14-
import com.crowdin.client.teams.model.AddTeamMembersResponseInternal;
15-
import com.crowdin.client.teams.model.AddTeamRequest;
16-
import com.crowdin.client.teams.model.AddTeamToProjectRequest;
17-
import com.crowdin.client.teams.model.ProjectTeamResources;
18-
import com.crowdin.client.teams.model.Team;
19-
import com.crowdin.client.teams.model.TeamMember;
20-
import com.crowdin.client.teams.model.TeamMemberResponseList;
21-
import com.crowdin.client.teams.model.TeamResponseList;
22-
import com.crowdin.client.teams.model.TeamResponseObject;
23-
import com.crowdin.client.teams.model.GroupTeam;
24-
import com.crowdin.client.teams.model.GroupTeamResponseList;
25-
import com.crowdin.client.teams.model.GroupTeamResponseObject;
7+
import com.crowdin.client.core.model.*;
8+
import com.crowdin.client.teams.model.*;
269

2710
import java.util.List;
2811
import java.util.Map;
@@ -54,6 +37,27 @@ public ResponseList<GroupTeam> listGroupTeams(Long groupId, String orderBy) thro
5437
return GroupTeamResponseList.to(response);
5538
}
5639

40+
/**
41+
* List group teams. For Crowdin Enterprise only
42+
* @param params ListGroupTeamsParams object
43+
* @return list of group teams
44+
* @see <ul>
45+
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.groups.teams.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
46+
* </ul>
47+
*/
48+
public ResponseList<GroupTeam> listGroupTeams(ListGroupTeamsParams params) throws HttpException, HttpBadRequestException {
49+
if (params == null) {
50+
throw new NullPointerException("params is null");
51+
}
52+
53+
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
54+
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(params.getOrderByList()))
55+
);
56+
57+
GroupTeamResponseList response = this.httpClient.get(this.url + "/groups/" + params.getGroupId() + "/teams", new HttpRequestConfig(queryParams), GroupTeamResponseList.class);
58+
return GroupTeamResponseList.to(response);
59+
}
60+
5761
/**
5862
* Update group teams. For Crowdin Enterprise only
5963
* @param groupId group identifier
@@ -111,6 +115,25 @@ public ResponseList<Team> listTeams(Integer limit, Integer offset) throws HttpEx
111115
return TeamResponseList.to(teamResponseList);
112116
}
113117

118+
/**
119+
* @param limit maximum number of items to retrieve (default 25)
120+
* @param offset starting offset in the collection (default 0)
121+
* @param orderBy list of OrderByField
122+
* @return list of teams
123+
* @see <ul>
124+
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.teams.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
125+
* </ul>
126+
*/
127+
public ResponseList<Team> listTeams(Integer limit, Integer offset, List<OrderByField> orderBy) throws HttpException, HttpBadRequestException {
128+
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
129+
"limit", Optional.ofNullable(limit),
130+
"offset", Optional.ofNullable(offset),
131+
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(orderBy))
132+
);
133+
TeamResponseList teamResponseList = this.httpClient.get(this.url + "/teams", new HttpRequestConfig(queryParams), TeamResponseList.class);
134+
return TeamResponseList.to(teamResponseList);
135+
}
136+
114137
/**
115138
* @param request request object
116139
* @return newly created team
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.crowdin.client.teams.model;
2+
3+
import com.crowdin.client.core.model.OrderByField;
4+
import lombok.Data;
5+
import lombok.NonNull;
6+
import lombok.RequiredArgsConstructor;
7+
8+
import java.util.List;
9+
10+
@Data
11+
@RequiredArgsConstructor
12+
public class ListGroupTeamsParams {
13+
@NonNull
14+
private final Long groupId;
15+
private List<OrderByField> orderByList;
16+
}

src/main/java/com/crowdin/client/translationmemory/TranslationMemoryApi.java

Lines changed: 47 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,7 @@
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.model.ClientConfig;
8-
import com.crowdin.client.core.model.Credentials;
9-
import com.crowdin.client.core.model.DownloadLink;
10-
import com.crowdin.client.core.model.DownloadLinkResponseObject;
11-
import com.crowdin.client.core.model.PatchRequest;
12-
import com.crowdin.client.core.model.ResponseList;
13-
import com.crowdin.client.core.model.ResponseObject;
7+
import com.crowdin.client.core.model.*;
148
import com.crowdin.client.translationmemory.model.AddTranslationMemoryRequest;
159
import com.crowdin.client.translationmemory.model.CreateTmSegmentRequest;
1610
import com.crowdin.client.translationmemory.model.SearchConcordance;
@@ -80,6 +74,30 @@ public ResponseList<TranslationMemory> listTms(Long groupId, Integer limit, Inte
8074
return TranslationMemoryResponseList.to(translationMemoryResponseList);
8175
}
8276

77+
/**
78+
* @param groupId group identifier
79+
* @param limit maximum number of items to retrieve (default 25)
80+
* @param offset starting offset in the collection (default 0)
81+
* @param userId filter by user identifier
82+
* @param orderBy list of OrderByField
83+
* @return list of translation memories
84+
* @see <ul>
85+
* <li><a href="https://developer.crowdin.com/api/v2/#operation/api.tms.getMany" target="_blank"><b>API Documentation</b></a></li>
86+
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.tms.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
87+
* </ul>
88+
*/
89+
public ResponseList<TranslationMemory> listTms(Long groupId, Integer limit, Integer offset, Integer userId, List<OrderByField> orderBy) throws HttpException, HttpBadRequestException {
90+
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
91+
"groupId", Optional.ofNullable(groupId),
92+
"userId", Optional.ofNullable(userId),
93+
"limit", Optional.ofNullable(limit),
94+
"offset", Optional.ofNullable(offset),
95+
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(orderBy))
96+
);
97+
TranslationMemoryResponseList translationMemoryResponseList = this.httpClient.get(this.url + "/tms", new HttpRequestConfig(queryParams), TranslationMemoryResponseList.class);
98+
return TranslationMemoryResponseList.to(translationMemoryResponseList);
99+
}
100+
83101
/**
84102
* @param request request object
85103
* @return newly created translation memory
@@ -235,6 +253,28 @@ public ResponseList<TmSegment> listTmSegments(Long tmId, Integer limit, Integer
235253
return TmSegmentResponseList.to(responseList);
236254
}
237255

256+
/**
257+
* @param tmId translation memory identifier
258+
* @param limit maximum number of items to retrieve (default 25)
259+
* @param offset starting offset in the collection (default 0)
260+
* @param orderBy list of OrderByField
261+
* @return list of translation memory segments
262+
* @see <ul>
263+
* <li><a href="https://developer.crowdin.com/api/v2/#operation/api.tms.segments.getMany" target="_blank"><b>API Documentation</b></a></li>
264+
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.tms.segments.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
265+
* </ul>
266+
*/
267+
public ResponseList<TmSegment> listTmSegments(Long tmId, Integer limit, Integer offset, List<OrderByField> orderBy) throws HttpException, HttpBadRequestException {
268+
String url = formUrl_tmSegments(tmId);
269+
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
270+
"limit", Optional.ofNullable(limit),
271+
"offset", Optional.ofNullable(offset),
272+
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(orderBy))
273+
);
274+
TmSegmentResponseList responseList = this.httpClient.get(url, new HttpRequestConfig(queryParams), TmSegmentResponseList.class);
275+
return TmSegmentResponseList.to(responseList);
276+
}
277+
238278
/**
239279
* @param tmId translation memory identifier
240280
* @param request request object

src/main/java/com/crowdin/client/users/UsersApi.java

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import com.crowdin.client.core.http.exceptions.HttpBadRequestException;
66
import com.crowdin.client.core.http.exceptions.HttpException;
77
import com.crowdin.client.core.model.*;
8-
import com.crowdin.client.teams.model.TeamResponseObject;
98
import com.crowdin.client.users.model.*;
109

1110
import java.util.List;
@@ -40,6 +39,26 @@ public ResponseList<GroupManager> listGroupManagers(Long groupId, List<Long> tea
4039
return GroupManagerResponseList.to(response);
4140
}
4241

42+
/**
43+
* List group managers. For Crowdin Enterprise only
44+
* @param groupId Group Identifier. Get via List Groups
45+
* @param params ListGroupManagersParams
46+
* @return list of group managers
47+
* @see <ul>
48+
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.groups.managers.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
49+
* </ul>
50+
*/
51+
public ResponseList<GroupManager> listGroupManagers(Long groupId, ListGroupManagersParams params) throws HttpException, HttpBadRequestException {
52+
ListGroupManagersParams query = Optional.ofNullable(params).orElse(new ListGroupManagersParams());
53+
54+
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
55+
"teamIds", Optional.ofNullable(query.getTeamIds()),
56+
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(query.getOrderBy()))
57+
);
58+
GroupManagerResponseList response = this.httpClient.get(this.url + "/groups/" + groupId + "/managers", new HttpRequestConfig(queryParams), GroupManagerResponseList.class);
59+
return GroupManagerResponseList.to(response);
60+
}
61+
4362
/**
4463
* Update group managers. For Crowdin Enterprise only
4564
* @param groupId group identifier
@@ -94,6 +113,34 @@ public ResponseList<ProjectMember> listProjectMembersEnterprise(Long projectId,
94113
return ProjectMemberResponseList.to(response);
95114
}
96115

116+
/**
117+
* List project members. For Crowdin Enterprise only
118+
* @param projectId Project Identifier. Get via List Projects
119+
* @param search Search users by firstName, lastName or username
120+
* @param languageId Language Identifier. Get via Project Target Languages
121+
* @param workflowStepId Workflow Step Identifier. Get via List Workflow Steps
122+
* @param limit A maximum number of items to retrieve
123+
* @param offset A starting offset in the collection
124+
* @param orderBy list of OrderByField
125+
* @return list of project members
126+
* @see <ul>
127+
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.members.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
128+
* </ul>
129+
*/
130+
public ResponseList<ProjectMember> listProjectMembersEnterprise(Long projectId, String search, String languageId, Long workflowStepId, Integer limit, Integer offset, List<OrderByField> orderBy) throws HttpException, HttpBadRequestException {
131+
String builtUrl = String.format("%s/projects/%d/members", this.url, projectId);
132+
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
133+
"search", Optional.ofNullable(search),
134+
"languageId", Optional.ofNullable(languageId),
135+
"workflowStepId", Optional.ofNullable(workflowStepId),
136+
"limit", Optional.ofNullable(limit),
137+
"offset", Optional.ofNullable(offset),
138+
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(orderBy))
139+
);
140+
ProjectMemberResponseList response = this.httpClient.get(builtUrl, new HttpRequestConfig(queryParams), ProjectMemberResponseList.class);
141+
return ProjectMemberResponseList.to(response);
142+
}
143+
97144
/**
98145
* @param projectId project identifier
99146
* @param request request object
@@ -171,6 +218,31 @@ public ResponseList<User> listUsers(Status status, String search, TwoFactor twoF
171218
return UserResponseList.to(userResponseList);
172219
}
173220

221+
/**
222+
* @param status filter by status
223+
* @param search search users by firstName, lastName, username, or email (2 or more characters)
224+
* @param twoFactor filter by two-factor authentication status
225+
* @param limit maximum number of items to retrieve (default 25)
226+
* @param offset starting offset in the collection (default 0)
227+
* @param orderBy list of OrderByField
228+
* @return list of users
229+
* @see <ul>
230+
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.users.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
231+
* </ul>
232+
*/
233+
public ResponseList<User> listUsers(Status status, String search, TwoFactor twoFactor, Integer limit, Integer offset, List<OrderByField> orderBy) throws HttpException, HttpBadRequestException {
234+
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
235+
"status", Optional.ofNullable(status),
236+
"search", Optional.ofNullable(search),
237+
"twoFactor", Optional.ofNullable(twoFactor),
238+
"limit", Optional.ofNullable(limit),
239+
"offset", Optional.ofNullable(offset),
240+
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(orderBy))
241+
);
242+
UserResponseList userResponseList = this.httpClient.get(this.url + "/users", new HttpRequestConfig(queryParams), UserResponseList.class);
243+
return UserResponseList.to(userResponseList);
244+
}
245+
174246
/**
175247
* @param request request object
176248
* @return invited user
@@ -250,6 +322,28 @@ public ResponseList<TeamMember> listProjectMembers(Long projectId, String search
250322
return TeamMemberResponseList.to(teamMemberResponseList);
251323
}
252324

325+
/**
326+
* @param projectId project identifier
327+
* @param search search users by firstName, lastName, username, or email (2 or more characters)
328+
* @param limit maximum number of items to retrieve (default 25)
329+
* @param offset starting offset in the collection (default 0)
330+
* @param orderBy list of OrderByField
331+
* @return list of team members
332+
* @see <ul>
333+
* <li><a href="https://developer.crowdin.com/api/v2/#operation/api.projects.members.getMany" target="_blank"><b>API Documentation</b></a></li>
334+
* </ul>
335+
*/
336+
public ResponseList<TeamMember> listProjectMembers(Long projectId, String search, Integer limit, Integer offset, List<OrderByField> orderBy) throws HttpException, HttpBadRequestException {
337+
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
338+
"search", Optional.ofNullable(search),
339+
"limit", Optional.ofNullable(limit),
340+
"offset", Optional.ofNullable(offset),
341+
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(orderBy))
342+
);
343+
TeamMemberResponseList teamMemberResponseList = this.httpClient.get(this.url + "/projects/" + projectId + "/members", new HttpRequestConfig(queryParams), TeamMemberResponseList.class);
344+
return TeamMemberResponseList.to(teamMemberResponseList);
345+
}
346+
253347
/**
254348
* @param projectId project identifier
255349
* @param memberId member identifier
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.crowdin.client.users.model;
2+
3+
import com.crowdin.client.core.model.OrderByField;
4+
import lombok.Data;
5+
6+
import java.util.List;
7+
8+
@Data
9+
public class ListGroupManagersParams {
10+
private List<Long> teamIds;
11+
private List<OrderByField> orderBy;
12+
}

0 commit comments

Comments
 (0)