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(cb -> cb.query().setRoles_Equal(role.getId()), entity -> {
84 entity.setRoles(
85 stream(entity.getRoles()).get(stream -> stream.filter(s -> !s.equals(role.getId())).toArray(n -> new String[n])));
86 userBhv.insertOrUpdate(entity);
87 });
88 }
89
90 protected void setupListCondition(final RoleCB cb, final RolePager rolePager) {
91 if (rolePager.id != null) {
92 cb.query().docMeta().setId_Equal(rolePager.id);
93 }
94
95
96
97 cb.query().addOrderBy_Name_Asc();
98
99
100
101 }
102
103 public List<Role> getAvailableRoleList() {
104 return roleBhv.selectList(cb -> {
105 cb.query().matchAll();
106 cb.query().addOrderBy_Name_Asc();
107 cb.paging(fessConfig.getPageRoleMaxFetchSizeAsInteger(), 1);
108 });
109 }
110
111 }