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.identityimport.cache;
35
36 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.common.AuthorType;
37 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.common.RequestAuthor;
38 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.contract.ServiceContractDto;
39 import fr.paris.lutece.plugins.identitystore.v3.web.service.ServiceContractService;
40 import fr.paris.lutece.plugins.identitystore.web.exception.IdentityStoreException;
41 import fr.paris.lutece.portal.service.cache.AbstractCacheableService;
42 import fr.paris.lutece.portal.service.util.AppLogService;
43 import fr.paris.lutece.portal.service.util.AppPropertiesService;
44
45 public class ServiceContractCache extends AbstractCacheableService
46 {
47 private static final String SERVICE_NAME = "Service Contract Cache Import";
48
49 private final ServiceContractService _serviceContractService;
50
51 private final String _currentClientCode = AppPropertiesService.getProperty( "identityimport.client.code" );
52
53 public ServiceContractCache( ServiceContractService scService )
54 {
55 _serviceContractService = scService;
56 this.initCache( );
57 }
58
59 public void put( final String clientCode, final ServiceContractDto serviceContract )
60 {
61 if ( this.getKeys( ).contains( clientCode ) )
62 {
63 this.removeKey( clientCode );
64 }
65 this.putInCache( clientCode, serviceContract );
66 AppLogService.debug( "ServiceContractDto added to cache: " + clientCode );
67 }
68
69 public void remove( final String clientCode )
70 {
71 if ( this.getKeys( ).contains( clientCode ) )
72 {
73 this.removeKey( clientCode );
74 }
75
76 AppLogService.debug( "ServiceContractDto removed from cache: " + clientCode );
77 }
78
79 public ServiceContractDto get( final String clientCode ) throws IdentityStoreException
80 {
81 ServiceContractDto serviceContract = (ServiceContractDto) this.getFromCache( clientCode );
82 if ( serviceContract == null )
83 {
84 serviceContract = this.getFromAPI( clientCode );
85 this.put( clientCode, serviceContract );
86 }
87 return serviceContract;
88 }
89
90 public ServiceContractDto getFromAPI( final String clientCode ) throws IdentityStoreException
91 {
92 return _serviceContractService.getActiveServiceContract( clientCode, _currentClientCode,
93 new RequestAuthor( "IdentityImport_ServiceContractCache", AuthorType.application.name( ) ) ).getServiceContract( );
94 }
95
96 @Override
97 public String getName( )
98 {
99 return SERVICE_NAME;
100 }
101 }