1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.app.service;
17
18 import static org.codelibs.core.stream.StreamUtil.stream;
19
20 import java.util.List;
21
22 import javax.annotation.Resource;
23
24 import org.codelibs.core.beans.util.BeanUtil;
25 import org.codelibs.fess.Constants;
26 import org.codelibs.fess.app.pager.RolePager;
27 import org.codelibs.fess.es.user.cbean.RoleCB;
28 import org.codelibs.fess.es.user.exbhv.RoleBhv;
29 import org.codelibs.fess.es.user.exbhv.UserBhv;
30 import org.codelibs.fess.es.user.exentity.Role;
31 import org.codelibs.fess.mylasta.direction.FessConfig;
32 import org.codelibs.fess.util.ComponentUtil;
33 import org.dbflute.cbean.result.PagingResultBean;
34 import org.dbflute.optional.OptionalEntity;
35
36 public class RoleService {
37
38 @Resource
39 protected RoleBhv roleBhv;
40
41 @Resource
42 protected FessConfig fessConfig;
43
44 @Resource
45 protected UserBhv userBhv;
46
47 public List<Role> getRoleList(final RolePager rolePager) {
48
49 final PagingResultBean<Role> roleList = roleBhv.selectPage(cb -> {
50 cb.paging(rolePager.getPageSize(), rolePager.getCurrentPageNumber());
51 setupListCondition(cb, rolePager);
52 });
53
54
55 BeanUtil.copyBeanToBean(roleList, rolePager, option -> option.include(Constants.PAGER_CONVERSION_RULE));
56 rolePager.setPageNumberList(roleList.pageRange(op -> {
57 op.rangeSize(fessConfig.getPagingPageRangeSizeAsInteger());
58 }).createPageNumberList());
59
60 return roleList;
61 }
62
63 public OptionalEntity<Role> getRole(final String id) {
64 return roleBhv.selectByPK(id);
65 }
66
67 public void store(final Role role) {
68 ComponentUtil.getLdapManager().insert(role);
69
70 roleBhv.insertOrUpdate(role, op -> {
71 op.setRefreshPolicy(Constants.TRUE);
72 });
73
74 }
75
76 public void delete(final Role role) {
77 ComponentUtil.getLdapManager().delete(role);
78
79 roleBhv.delete(role, op -> {
80 op.setRefreshPolicy(Constants.TRUE);
81 });
82
83 userBhv.selectCursor(
84 cb -> cb.query().setRoles_Equal(role.getId()),
85 entity -> {
86 entity.setRoles(stream(entity.getRoles()).get(
87 stream -> stream.filter(s -> !s.equals(role.getId())).toArray(n -> new String[n])));
88 userBhv.insertOrUpdate(entity);
89 });
90 }
91
92 protected void setupListCondition(final RoleCB cb, final RolePager rolePager) {
93 if (rolePager.id != null) {
94 cb.query().docMeta().setId_Equal(rolePager.id);
95 }
96
97
98
99 cb.query().addOrderBy_Name_Asc();
100
101
102
103 }
104
105 public List<Role> getAvailableRoleList() {
106 return roleBhv.selectList(cb -> {
107 cb.query().matchAll();
108 cb.query().addOrderBy_Name_Asc();
109 cb.paging(fessConfig.getPageRoleMaxFetchSizeAsInteger(), 1);
110 });
111 }
112
113 }