1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.identitystore.service.duplicate;
35
36 import fr.paris.lutece.plugins.identitystore.business.duplicates.suspicions.SuspiciousIdentityHome;
37 import fr.paris.lutece.plugins.identitystore.business.rules.duplicate.DuplicateRule;
38 import fr.paris.lutece.plugins.identitystore.business.rules.duplicate.DuplicateRuleHome;
39 import fr.paris.lutece.plugins.identitystore.cache.DuplicateRulesCache;
40 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.duplicate.DuplicateRuleSummaryDto;
41 import fr.paris.lutece.portal.service.spring.SpringContextService;
42
43 import java.util.ArrayList;
44 import java.util.Comparator;
45 import java.util.List;
46 import java.util.stream.Collectors;
47
48 public class DuplicateRuleService
49 {
50
51 private final DuplicateRulesCache _cache = SpringContextService.getBean( "identitystore.duplicateRulesCache" );
52 private static DuplicateRuleService _instance;
53
54 public static DuplicateRuleService instance( )
55 {
56 if ( _instance == null )
57 {
58 _instance = new DuplicateRuleService( );
59 _instance._cache.refresh( );
60 }
61 return _instance;
62 }
63
64 private DuplicateRuleService( )
65 {
66 }
67
68
69
70
71
72
73 public List<DuplicateRule> findAll( ) throws DuplicateRuleNotFoundException
74 {
75 final List<String> allCodes = DuplicateRuleHome.findAllCodes( );
76 final List<DuplicateRule> list = new ArrayList<>( );
77 for ( final String code : allCodes )
78 {
79 final DuplicateRule duplicateRule = _cache.get( code );
80 list.add( duplicateRule );
81 }
82 return list;
83 }
84
85
86
87
88
89
90
91
92
93 public List<DuplicateRuleSummaryDto> findSummaries( final Integer priority ) throws DuplicateRuleNotFoundException
94 {
95 return this.findAll( ).stream( ).filter( rule -> priority == null || rule.getPriority( ) <= priority ).map( rule -> {
96 final DuplicateRuleSummaryDto ruleDto = new DuplicateRuleSummaryDto( );
97 ruleDto.setId( rule.getId( ) );
98 ruleDto.setName( rule.getName( ) );
99 ruleDto.setCode( rule.getCode( ) );
100 ruleDto.setDescription( rule.getDescription( ) );
101 ruleDto.setPriority( rule.getPriority( ) );
102 ruleDto.setDaemonLastExecDate( rule.getDaemonLastExecDate( ) );
103 ruleDto.setDuplicateCount( SuspiciousIdentityHome.countSuspiciousIdentity( rule.getId( ) ) );
104 ruleDto.setActive( rule.isActive( ) );
105 ruleDto.setDaemon( rule.isDaemon( ) );
106 return ruleDto;
107 } ).sorted( Comparator.comparing( DuplicateRuleSummaryDto::getPriority ) ).collect( Collectors.toList( ) );
108 }
109
110
111
112
113
114
115
116
117
118
119 public DuplicateRule get( final String ruleCode ) throws DuplicateRuleNotFoundException
120 {
121 return _cache.get( ruleCode );
122 }
123
124
125
126
127
128
129
130
131 public DuplicateRule safeGet( final String ruleCode )
132 {
133 try
134 {
135 return _cache.get( ruleCode );
136 }
137 catch( final DuplicateRuleNotFoundException e )
138 {
139 return null;
140 }
141 }
142
143
144
145
146
147
148
149 public DuplicateRulentitystore/business/rules/duplicate/DuplicateRule.html#DuplicateRule">DuplicateRule create( final DuplicateRule duplicateRule )
150 {
151 DuplicateRuleHome.create( duplicateRule );
152 _cache.put( duplicateRule );
153 return duplicateRule;
154 }
155
156
157
158
159
160
161
162 public DuplicateRulentitystore/business/rules/duplicate/DuplicateRule.html#DuplicateRule">DuplicateRule update( final DuplicateRule duplicateRule )
163 {
164 DuplicateRuleHome.update( duplicateRule );
165 _cache.put( duplicateRule );
166 return duplicateRule;
167 }
168
169
170
171
172
173
174 public void delete( final Integer id )
175 {
176 DuplicateRuleHome.delete( id );
177 _cache.remove( id );
178 }
179
180 }