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.v3.web.request.contract;
35
36 import fr.paris.lutece.plugins.identitystore.business.application.ClientApplication;
37 import fr.paris.lutece.plugins.identitystore.business.application.ClientApplicationHome;
38 import fr.paris.lutece.plugins.identitystore.business.contract.AttributeCertification;
39 import fr.paris.lutece.plugins.identitystore.business.contract.ServiceContract;
40 import fr.paris.lutece.plugins.identitystore.business.referentiel.RefAttributeCertificationProcessus;
41 import fr.paris.lutece.plugins.identitystore.service.contract.AttributeCertificationDefinitionService;
42 import fr.paris.lutece.plugins.identitystore.service.contract.ServiceContractService;
43 import fr.paris.lutece.plugins.identitystore.v3.web.rs.AbstractIdentityStoreRequest;
44 import fr.paris.lutece.plugins.identitystore.v3.web.rs.DtoConverter;
45 import fr.paris.lutece.plugins.identitystore.v3.web.rs.IdentityRequestValidator;
46 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.contract.ServiceContractChangeResponse;
47 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.contract.ServiceContractDto;
48 import fr.paris.lutece.plugins.identitystore.v3.web.rs.util.Constants;
49 import fr.paris.lutece.plugins.identitystore.v3.web.rs.util.ResponseStatusFactory;
50 import fr.paris.lutece.plugins.identitystore.web.exception.IdentityStoreException;
51
52
53
54
55 public class ServiceContractCreateRequest extends AbstractIdentityStoreRequest
56 {
57 private final ServiceContractDto _serviceContractDto;
58
59
60
61
62
63
64
65
66
67 public ServiceContractCreateRequest( ServiceContractDto serviceContractDto, String strClientAppCode, final String authorName, final String authorType )
68 throws IdentityStoreException
69 {
70 super( strClientAppCode, authorName, authorType );
71 this._serviceContractDto = serviceContractDto;
72 }
73
74 @Override
75 protected void validateSpecificRequest( ) throws IdentityStoreException
76 {
77 IdentityRequestValidator.instance( ).checkServiceContract( _serviceContractDto );
78 }
79
80 @Override
81 public ServiceContractChangeResponse doSpecificRequest( ) throws IdentityStoreException
82 {
83 final ServiceContractChangeResponse response = new ServiceContractChangeResponse( );
84 final ClientApplication clientApplication = ClientApplicationHome.findByCode( _serviceContractDto.getClientCode( ) );
85 if ( clientApplication == null )
86 {
87 response.setStatus(
88 ResponseStatusFactory.notFound( ).setMessage( "No application could be found with code " + _serviceContractDto.getClientCode( ) )
89 .setMessageKey( Constants.PROPERTY_REST_ERROR_APPLICATION_NOT_FOUND ) );
90 }
91 else
92 {
93 final ServiceContract serviceContract = ServiceContractService.instance( ).create( DtoConverter.convertDtoToContract( _serviceContractDto ),
94 clientApplication.getId( ) );
95
96 for ( final AttributeCertification certification : serviceContract.getAttributeCertifications( ) )
97 {
98 for ( final RefAttributeCertificationProcessus processus : certification.getRefAttributeCertificationProcessus( ) )
99 {
100 processus.setLevel(
101 AttributeCertificationDefinitionService.instance( ).get( processus.getCode( ), certification.getAttributeKey( ).getKeyName( ) ) );
102 }
103 }
104 response.setServiceContract( DtoConverter.convertContractToDto( serviceContract ) );
105 response.setStatus( ResponseStatusFactory.success( ).setMessageKey( Constants.PROPERTY_REST_INFO_SUCCESSFUL_OPERATION ) );
106 }
107
108 return response;
109 }
110
111 }