1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.rest.cxf.service;
20
21 import java.util.List;
22 import java.util.Optional;
23 import javax.ws.rs.core.Response;
24 import org.apache.commons.lang3.tuple.Pair;
25 import org.apache.syncope.common.lib.to.PagedResult;
26 import org.apache.syncope.common.lib.to.ProvisioningResult;
27 import org.apache.syncope.common.lib.to.UserRequest;
28 import org.apache.syncope.common.lib.to.UserRequestForm;
29 import org.apache.syncope.common.lib.to.UserTO;
30 import org.apache.syncope.common.lib.to.WorkflowTaskExecInput;
31 import org.apache.syncope.common.rest.api.beans.UserRequestQuery;
32 import org.apache.syncope.common.rest.api.service.UserRequestService;
33 import org.apache.syncope.core.logic.UserRequestLogic;
34 import org.apache.syncope.core.persistence.api.dao.UserDAO;
35 import org.springframework.stereotype.Service;
36
37 @Service
38 public class UserRequestServiceImpl extends AbstractService implements UserRequestService {
39
40 protected final UserRequestLogic logic;
41
42 protected final UserDAO userDAO;
43
44 public UserRequestServiceImpl(final UserRequestLogic logic, final UserDAO userDAO) {
45 this.logic = logic;
46 this.userDAO = userDAO;
47 }
48
49 @Override
50 public PagedResult<UserRequest> listRequests(final UserRequestQuery query) {
51 if (query.getUser() != null) {
52 query.setUser(Optional.ofNullable(findActualKey(userDAO, query.getUser())).orElse(query.getUser()));
53 }
54
55 Pair<Integer, List<UserRequest>> result = logic.listRequests(
56 query.getUser(), query.getPage(), query.getSize(), getOrderByClauses(query.getOrderBy()));
57 return buildPagedResult(result.getRight(), query.getPage(), query.getSize(), result.getLeft());
58 }
59
60 @Override
61 public UserRequest startRequest(
62 final String bpmnProcess, final String user, final WorkflowTaskExecInput inputVariables) {
63
64 return user == null
65 ? logic.startRequest(bpmnProcess, inputVariables)
66 : logic.startRequest(bpmnProcess, findActualKey(userDAO, user), inputVariables);
67 }
68
69 @Override
70 public void cancelRequest(final String executionId, final String reason) {
71 logic.cancelRequest(executionId, reason);
72 }
73
74 @Override
75 public UserRequestForm claimForm(final String taskId) {
76 return logic.claimForm(taskId);
77 }
78
79 @Override
80 public UserRequestForm unclaimForm(final String taskId) {
81 return logic.unclaimForm(taskId);
82 }
83
84 @Override
85 public UserRequestForm getForm(final String username, final String taskId) {
86 return logic.getForm(findActualKey(userDAO, username), taskId);
87 }
88
89 @Override
90 public PagedResult<UserRequestForm> listForms(final UserRequestQuery query) {
91 if (query.getUser() != null) {
92 query.setUser(Optional.ofNullable(findActualKey(userDAO, query.getUser())).orElse(query.getUser()));
93 }
94
95 Pair<Integer, List<UserRequestForm>> result = logic.listForms(
96 query.getUser(), query.getPage(), query.getSize(), getOrderByClauses(query.getOrderBy()));
97 return buildPagedResult(result.getRight(), query.getPage(), query.getSize(), result.getLeft());
98 }
99
100 @Override
101 public Response submitForm(final UserRequestForm form) {
102 ProvisioningResult<UserTO> submitted = logic.submitForm(form, isNullPriorityAsync());
103 return modificationResponse(submitted);
104 }
105 }