001// --------------------------------------------------------------------------------
002// Copyright 2002-2025 Echo Three, LLC
003//
004// Licensed under the Apache License, Version 2.0 (the "License");
005// you may not use this file except in compliance with the License.
006// You may obtain a copy of the License at
007//
008//     http://www.apache.org/licenses/LICENSE-2.0
009//
010// Unless required by applicable law or agreed to in writing, software
011// distributed under the License is distributed on an "AS IS" BASIS,
012// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013// See the License for the specific language governing permissions and
014// limitations under the License.
015// --------------------------------------------------------------------------------
016// Generated File -- DO NOT EDIT BY HAND
017// --------------------------------------------------------------------------------
018
019/**
020 * PartyEntitySecurityRoleValue.java
021 */
022
023package com.echothree.model.data.security.server.value;
024
025import com.echothree.model.data.security.common.pk.PartyEntitySecurityRolePK;
026
027import com.echothree.model.data.security.server.factory.PartyEntitySecurityRoleFactory;
028
029import com.echothree.model.data.party.common.pk.PartyPK;
030import com.echothree.model.data.core.common.pk.EntityInstancePK;
031import com.echothree.model.data.security.common.pk.SecurityRolePK;
032
033import com.echothree.util.common.exception.PersistenceCloneException;
034import com.echothree.util.common.exception.PersistenceNotNullException;
035
036import com.echothree.util.server.persistence.BaseValue;
037
038import java.io.Serializable;
039
040public class PartyEntitySecurityRoleValue
041        extends BaseValue<PartyEntitySecurityRolePK>
042        implements Cloneable, Serializable {
043    
044    private PartyPK partyPK;
045    private boolean partyPKHasBeenModified = false;
046    private EntityInstancePK entityInstancePK;
047    private boolean entityInstancePKHasBeenModified = false;
048    private SecurityRolePK securityRolePK;
049    private boolean securityRolePKHasBeenModified = false;
050    private Long fromTime;
051    private boolean fromTimeHasBeenModified = false;
052    private Long thruTime;
053    private boolean thruTimeHasBeenModified = false;
054    
055    private transient Integer _hashCode = null;
056    private transient String _stringValue = null;
057    
058    private void constructFields(PartyPK partyPK, EntityInstancePK entityInstancePK, SecurityRolePK securityRolePK, Long fromTime, Long thruTime)
059            throws PersistenceNotNullException {
060        checkForNull(partyPK);
061        this.partyPK = partyPK;
062        checkForNull(entityInstancePK);
063        this.entityInstancePK = entityInstancePK;
064        checkForNull(securityRolePK);
065        this.securityRolePK = securityRolePK;
066        checkForNull(fromTime);
067        this.fromTime = fromTime;
068        checkForNull(thruTime);
069        this.thruTime = thruTime;
070    }
071    
072    /** Creates a new instance of PartyEntitySecurityRoleValue */
073    public PartyEntitySecurityRoleValue(PartyEntitySecurityRolePK partyEntitySecurityRolePK, PartyPK partyPK, EntityInstancePK entityInstancePK, SecurityRolePK securityRolePK, Long fromTime, Long thruTime)
074            throws PersistenceNotNullException {
075        super(partyEntitySecurityRolePK);
076        constructFields(partyPK, entityInstancePK, securityRolePK, fromTime, thruTime);
077    }
078    
079    /** Creates a new instance of PartyEntitySecurityRoleValue */
080    public PartyEntitySecurityRoleValue(PartyPK partyPK, EntityInstancePK entityInstancePK, SecurityRolePK securityRolePK, Long fromTime, Long thruTime)
081            throws PersistenceNotNullException {
082        super();
083        constructFields(partyPK, entityInstancePK, securityRolePK, fromTime, thruTime);
084    }
085    
086   @Override
087   public PartyEntitySecurityRoleFactory getBaseFactoryInstance() {
088        return PartyEntitySecurityRoleFactory.getInstance();
089    }
090    
091    @Override
092    public PartyEntitySecurityRoleValue clone() {
093        Object result;
094        
095        try {
096            result = super.clone();
097        } catch (CloneNotSupportedException cnse) {
098            // This shouldn't happen, fail when it does.
099            throw new PersistenceCloneException(cnse);
100        }
101        
102        return (PartyEntitySecurityRoleValue)result;
103    }
104    
105   @Override
106    public PartyEntitySecurityRolePK getPrimaryKey() {
107        if(_primaryKey == null) {
108            _primaryKey = new PartyEntitySecurityRolePK(entityId);
109        }
110        
111        return _primaryKey;
112    }
113    
114    private void clearHashAndString() {
115        _hashCode = null;
116        _stringValue = null;
117    }
118    
119    @Override
120    public int hashCode() {
121        if(_hashCode == null) {
122            int hashCode = 17;
123            
124            hashCode = 37 * hashCode + ((entityId != null) ? entityId.hashCode() : 0);
125            
126            hashCode = 37 * hashCode + ((partyPK != null) ? partyPK.hashCode() : 0);
127            hashCode = 37 * hashCode + ((entityInstancePK != null) ? entityInstancePK.hashCode() : 0);
128            hashCode = 37 * hashCode + ((securityRolePK != null) ? securityRolePK.hashCode() : 0);
129            hashCode = 37 * hashCode + ((fromTime != null) ? fromTime.hashCode() : 0);
130            hashCode = 37 * hashCode + ((thruTime != null) ? thruTime.hashCode() : 0);
131            
132            _hashCode = hashCode;
133        }
134        
135        return _hashCode;
136    }
137    
138    @Override
139    public String toString() {
140        if(_stringValue == null) {
141            _stringValue = "{" + 
142                    "entityId=" + getEntityId() +
143                    ", partyPK=" + getPartyPK() +
144                    ", entityInstancePK=" + getEntityInstancePK() +
145                    ", securityRolePK=" + getSecurityRolePK() +
146                    ", fromTime=" + getFromTime() +
147                    ", thruTime=" + getThruTime() +
148                    "}";
149        }
150        return _stringValue;
151    }
152    
153    @Override
154    public boolean equals(Object other) {
155        if(this == other)
156            return true;
157        
158        if(!hasIdentity())
159            return false;
160        
161        if(other instanceof  PartyEntitySecurityRoleValue that) {
162            if(!that.hasIdentity())
163                return false;
164            
165            Long thisEntityId = getEntityId();
166            Long thatEntityId = that.getEntityId();
167            
168            boolean objectsEqual = thisEntityId.equals(thatEntityId);
169            if(objectsEqual)
170                objectsEqual = isIdentical(that);
171            
172            return objectsEqual;
173        } else {
174            return false;
175        }
176    }
177    
178    public boolean isIdentical(Object other) {
179        if(other instanceof PartyEntitySecurityRoleValue that) {
180            boolean objectsEqual = true;
181            
182            
183            if(objectsEqual) {
184                PartyPK thisPartyPK = getPartyPK();
185                PartyPK thatPartyPK = that.getPartyPK();
186                
187                if(thisPartyPK == null) {
188                    objectsEqual = objectsEqual && (thatPartyPK == null);
189                } else {
190                    objectsEqual = objectsEqual && thisPartyPK.equals(thatPartyPK);
191                }
192            }
193            
194            if(objectsEqual) {
195                EntityInstancePK thisEntityInstancePK = getEntityInstancePK();
196                EntityInstancePK thatEntityInstancePK = that.getEntityInstancePK();
197                
198                if(thisEntityInstancePK == null) {
199                    objectsEqual = objectsEqual && (thatEntityInstancePK == null);
200                } else {
201                    objectsEqual = objectsEqual && thisEntityInstancePK.equals(thatEntityInstancePK);
202                }
203            }
204            
205            if(objectsEqual) {
206                SecurityRolePK thisSecurityRolePK = getSecurityRolePK();
207                SecurityRolePK thatSecurityRolePK = that.getSecurityRolePK();
208                
209                if(thisSecurityRolePK == null) {
210                    objectsEqual = objectsEqual && (thatSecurityRolePK == null);
211                } else {
212                    objectsEqual = objectsEqual && thisSecurityRolePK.equals(thatSecurityRolePK);
213                }
214            }
215            
216            if(objectsEqual) {
217                Long thisFromTime = getFromTime();
218                Long thatFromTime = that.getFromTime();
219                
220                if(thisFromTime == null) {
221                    objectsEqual = objectsEqual && (thatFromTime == null);
222                } else {
223                    objectsEqual = objectsEqual && thisFromTime.equals(thatFromTime);
224                }
225            }
226            
227            if(objectsEqual) {
228                Long thisThruTime = getThruTime();
229                Long thatThruTime = that.getThruTime();
230                
231                if(thisThruTime == null) {
232                    objectsEqual = objectsEqual && (thatThruTime == null);
233                } else {
234                    objectsEqual = objectsEqual && thisThruTime.equals(thatThruTime);
235                }
236            }
237            
238            return objectsEqual;
239        } else {
240            return false;
241        }
242    }
243    
244    @Override
245    public boolean hasBeenModified() {
246        return partyPKHasBeenModified || entityInstancePKHasBeenModified || securityRolePKHasBeenModified || fromTimeHasBeenModified || thruTimeHasBeenModified;
247    }
248    
249    @Override
250    public void clearHasBeenModified() {
251        partyPKHasBeenModified = false;
252        entityInstancePKHasBeenModified = false;
253        securityRolePKHasBeenModified = false;
254        fromTimeHasBeenModified = false;
255        thruTimeHasBeenModified = false;
256    }
257    
258    public PartyPK getPartyPK() {
259        return partyPK;
260    }
261    
262    public void setPartyPK(PartyPK partyPK)
263            throws PersistenceNotNullException {
264        checkForNull(partyPK);
265        
266        boolean update = true;
267        
268        if(this.partyPK != null) {
269            if(this.partyPK.equals(partyPK)) {
270                update = false;
271            }
272        } else if(partyPK == null) {
273            update = false;
274        }
275        
276        if(update) {
277            this.partyPK = partyPK;
278            partyPKHasBeenModified = true;
279            clearHashAndString();
280        }
281    }
282    
283    public boolean getPartyPKHasBeenModified() {
284        return partyPKHasBeenModified;
285    }
286    
287    public EntityInstancePK getEntityInstancePK() {
288        return entityInstancePK;
289    }
290    
291    public void setEntityInstancePK(EntityInstancePK entityInstancePK)
292            throws PersistenceNotNullException {
293        checkForNull(entityInstancePK);
294        
295        boolean update = true;
296        
297        if(this.entityInstancePK != null) {
298            if(this.entityInstancePK.equals(entityInstancePK)) {
299                update = false;
300            }
301        } else if(entityInstancePK == null) {
302            update = false;
303        }
304        
305        if(update) {
306            this.entityInstancePK = entityInstancePK;
307            entityInstancePKHasBeenModified = true;
308            clearHashAndString();
309        }
310    }
311    
312    public boolean getEntityInstancePKHasBeenModified() {
313        return entityInstancePKHasBeenModified;
314    }
315    
316    public SecurityRolePK getSecurityRolePK() {
317        return securityRolePK;
318    }
319    
320    public void setSecurityRolePK(SecurityRolePK securityRolePK)
321            throws PersistenceNotNullException {
322        checkForNull(securityRolePK);
323        
324        boolean update = true;
325        
326        if(this.securityRolePK != null) {
327            if(this.securityRolePK.equals(securityRolePK)) {
328                update = false;
329            }
330        } else if(securityRolePK == null) {
331            update = false;
332        }
333        
334        if(update) {
335            this.securityRolePK = securityRolePK;
336            securityRolePKHasBeenModified = true;
337            clearHashAndString();
338        }
339    }
340    
341    public boolean getSecurityRolePKHasBeenModified() {
342        return securityRolePKHasBeenModified;
343    }
344    
345    public Long getFromTime() {
346        return fromTime;
347    }
348    
349    public void setFromTime(Long fromTime)
350            throws PersistenceNotNullException {
351        checkForNull(fromTime);
352        
353        boolean update = true;
354        
355        if(this.fromTime != null) {
356            if(this.fromTime.equals(fromTime)) {
357                update = false;
358            }
359        } else if(fromTime == null) {
360            update = false;
361        }
362        
363        if(update) {
364            this.fromTime = fromTime;
365            fromTimeHasBeenModified = true;
366            clearHashAndString();
367        }
368    }
369    
370    public boolean getFromTimeHasBeenModified() {
371        return fromTimeHasBeenModified;
372    }
373    
374    public Long getThruTime() {
375        return thruTime;
376    }
377    
378    public void setThruTime(Long thruTime)
379            throws PersistenceNotNullException {
380        checkForNull(thruTime);
381        
382        boolean update = true;
383        
384        if(this.thruTime != null) {
385            if(this.thruTime.equals(thruTime)) {
386                update = false;
387            }
388        } else if(thruTime == null) {
389            update = false;
390        }
391        
392        if(update) {
393            this.thruTime = thruTime;
394            thruTimeHasBeenModified = true;
395            clearHashAndString();
396        }
397    }
398    
399    public boolean getThruTimeHasBeenModified() {
400        return thruTimeHasBeenModified;
401    }
402    
403}