8bf9b72231567b46515cc143fbbe99c52c1dd294
[portal.git] / portal-BE / src / main / java / org / onap / portal / domain / dto / ecomp / EPUserApp.java
1 /*
2  * ============LICENSE_START==========================================
3  * ONAP Portal
4  * ===================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6  * ===================================================================
7  * Modifications Copyright (c) 2019 Samsung
8  * ===================================================================
9  *
10  * Unless otherwise specified, all software contained herein is licensed
11  * under the Apache License, Version 2.0 (the "License");
12  * you may not use this software except in compliance with the License.
13  * You may obtain a copy of the License at
14  *
15  *             http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  *
23  * Unless otherwise specified, all documentation contained herein is licensed
24  * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
25  * you may not use this documentation except in compliance with the License.
26  * You may obtain a copy of the License at
27  *
28  *             https://creativecommons.org/licenses/by/4.0/
29  *
30  * Unless required by applicable law or agreed to in writing, documentation
31  * distributed under the License is distributed on an "AS IS" BASIS,
32  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
33  * See the License for the specific language governing permissions and
34  * limitations under the License.
35  *
36  * ============LICENSE_END============================================
37  *
38  *
39  */
40
41 package org.onap.portal.domain.dto.ecomp;
42
43 import javax.validation.Valid;
44 import lombok.AllArgsConstructor;
45 import lombok.Getter;
46 import lombok.NoArgsConstructor;
47 import lombok.Setter;
48 import org.onap.portal.domain.db.DomainVo;
49
50 @Getter
51 @Setter
52 @NoArgsConstructor
53 @AllArgsConstructor
54 public class EPUserApp extends DomainVo implements java.io.Serializable, Comparable {
55
56         private static final long serialVersionUID = 1L;
57         
58         private Long userId;
59         @Valid
60         private EPApp app;
61         @Valid
62         private EPRole role;
63
64         private Integer priority;
65
66         public EPUserApp(final Long userId, final EPApp app, final EPRole role) {
67                 this.userId = userId;
68                 this.app = app;
69                 this.role = role;
70         }
71
72         public Long getAppId() {
73                 return this.getApp().getId();
74         }
75         
76         public Long getRoleId() {
77                 return (role == null) ? null : role.getId();
78         }
79         
80         public Long getAppRoleId() {
81                 return this.role.getAppRoleId();
82         }
83                 
84         @Override 
85         public String toString() {
86                 return "[u: "+getUserId()+"; a: "+getAppId()+", r: "+getRoleId()+"; appRoleId: "+getAppRoleId()+"]";
87         }
88
89         public Integer getPriority() {
90                 return (this.priority == null) ? 1 : priority;
91         }
92
93
94         @Override
95         public boolean equals(Object other) {
96                 if ((this == other))
97                         return true;
98                 if ((other == null))
99                         return false;
100                 if (!(other instanceof EPUserApp))
101                         return false;
102                 EPUserApp castOther = (EPUserApp) other;
103
104                 return (otherUserIdIsSameAsThisUserId(castOther))
105                                 && (otherAppIdIsSameAsThis(castOther))
106                                 && (otherRoleIsSameAsThis(castOther))
107                                 && (otherPriorityIsSameAsThis(castOther));
108         }
109
110         public int hashCode() {
111                 int result = 17;
112
113                 result = 37 * result + (this.getUserId()==null ? 0 : this.getUserId().intValue());
114                 result = 37 * result + (this.getApp().getId()==null ? 0 : this.getApp().getId().intValue());
115                 result = 37 * result + (this.getRole().getId()==null ? 0 : this.getRole().getId().intValue());
116                 result = 37 * result + (this.priority==null ? 0 : this.priority);
117                 return result;
118         }
119
120         public int compareTo(Object other){
121             EPUserApp castOther = (EPUserApp) other;
122
123             Long c1 = (this.getUserId()==null ? 0 : this.getUserId()) + (this.getApp()==null||this.getApp().getId()==null ? 0 : this.getApp().getId()) + (this.getRole()==null||this.getRole().getId()==null ? 0 : this.getRole().getId()) + (this.priority==null ? 0 : this.priority);
124             Long c2 = (castOther.getUserId()==null ? 0 : castOther.getUserId()) + (castOther.getApp()==null||castOther.getApp().getId()==null ? 0 : castOther.getApp().getId()) + (castOther.getRole()==null||castOther.getRole().getId()==null ? 0 : castOther.getRole().getId()) + (castOther.priority==null ? 0 : castOther.priority);
125
126             return c1.compareTo(c2);
127         }
128         private boolean otherPriorityIsSameAsThis(EPUserApp other){
129                 return (this.priority==null && other.getPriority()==null) || this.getPriority().equals(other.getPriority());
130         }
131
132         private boolean otherRoleIsSameAsThis(EPUserApp other){
133                 return this.getRole().getId().equals(other.getRole().getId());
134         }
135
136         private boolean otherAppIdIsSameAsThis(EPUserApp other){
137                 return this.getApp().getId().equals(other.getApp().getId());
138         }
139
140         private boolean otherUserIdIsSameAsThisUserId(EPUserApp other){
141                 return this.getUserId().equals(other.getUserId());
142         }
143 }