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.identity;
35
36 import fr.paris.lutece.plugins.identitystore.service.attribute.IdentityAttributeFormatterService;
37 import fr.paris.lutece.plugins.identitystore.service.attribute.IdentityAttributeValidationService;
38 import fr.paris.lutece.plugins.identitystore.service.contract.ServiceContractService;
39 import fr.paris.lutece.plugins.identitystore.service.identity.IdentityService;
40 import fr.paris.lutece.plugins.identitystore.v3.web.rs.AbstractIdentityStoreRequest;
41 import fr.paris.lutece.plugins.identitystore.v3.web.rs.IdentityRequestValidator;
42 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.common.AttributeStatus;
43 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.crud.IdentityChangeRequest;
44 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.crud.IdentityChangeResponse;
45 import fr.paris.lutece.plugins.identitystore.v3.web.rs.util.ResponseStatusFactory;
46 import fr.paris.lutece.plugins.identitystore.web.exception.IdentityStoreException;
47
48 import java.util.List;
49
50
51
52
53 public class IdentityStoreCreateRequest extends AbstractIdentityStoreRequest
54 {
55
56 private final IdentityChangeRequest _identityChangeRequest;
57
58
59
60
61
62
63
64 public IdentityStoreCreateRequest( IdentityChangeRequest identityChangeRequest, String strClientAppCode, String authorName, String authorType )
65 throws IdentityStoreException
66 {
67 super( strClientAppCode, authorName, authorType );
68 this._identityChangeRequest = identityChangeRequest;
69 }
70
71 @Override
72 protected void validateSpecificRequest( ) throws IdentityStoreException
73 {
74 IdentityRequestValidator.instance( ).checkIdentityChange( _identityChangeRequest, false );
75 }
76
77 @Override
78 public IdentityChangeResponse doSpecificRequest( ) throws IdentityStoreException
79 {
80
81 final IdentityChangeResponse response = ServiceContractService.instance( ).validateIdentityChange( _identityChangeRequest, _strClientCode );
82 if ( ResponseStatusFactory.failure( ).equals( response.getStatus( ) ) )
83 {
84 return response;
85 }
86
87
88 final List<AttributeStatus> formatStatuses = IdentityAttributeFormatterService.instance( )
89 .formatIdentityChangeRequestAttributeValues( _identityChangeRequest );
90
91 IdentityAttributeValidationService.instance( ).validateIdentityAttributeValues( _identityChangeRequest.getIdentity( ), response );
92 if ( ResponseStatusFactory.failure( ).equals( response.getStatus( ) ) )
93 {
94 return response;
95 }
96
97
98 IdentityAttributeValidationService.instance( ).validatePivotAttributesIntegrity( null, _strClientCode, _identityChangeRequest.getIdentity( ), true,
99 response );
100 if ( ResponseStatusFactory.failure( ).equals( response.getStatus( ) ) )
101 {
102 return response;
103 }
104
105
106 IdentityService.instance( ).create( _identityChangeRequest, _author, _strClientCode, response );
107
108
109 if ( ResponseStatusFactory.success( ).equals( response.getStatus( ) ) || ResponseStatusFactory.incompleteSuccess( ).equals( response.getStatus( ) ) )
110 {
111 response.getStatus( ).getAttributeStatuses( ).addAll( formatStatuses );
112 }
113
114 return response;
115 }
116
117 }