001// --------------------------------------------------------------------------------
002// Copyright 2002-2026 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 * UserLoginStatusValue.java
021 */
022
023package com.echothree.model.data.user.server.value;
024
025import com.echothree.model.data.user.common.pk.UserLoginStatusPK;
026
027import com.echothree.model.data.user.server.factory.UserLoginStatusFactory;
028
029import com.echothree.model.data.party.common.pk.PartyPK;
030
031import com.echothree.util.common.exception.PersistenceCloneException;
032import com.echothree.util.common.exception.PersistenceNotNullException;
033
034import com.echothree.util.server.persistence.BaseValue;
035
036import java.io.Serializable;
037
038import javax.annotation.Nonnull;
039import javax.annotation.Nullable;
040
041public class UserLoginStatusValue
042        extends BaseValue<UserLoginStatusPK>
043        implements Cloneable, Serializable {
044    
045    private PartyPK partyPK;
046    private boolean partyPKHasBeenModified = false;
047    private Long lastLoginTime;
048    private boolean lastLoginTimeHasBeenModified = false;
049    private Integer failureCount;
050    private boolean failureCountHasBeenModified = false;
051    private Long firstFailureTime;
052    private boolean firstFailureTimeHasBeenModified = false;
053    private Long lastFailureTime;
054    private boolean lastFailureTimeHasBeenModified = false;
055    private Integer expiredCount;
056    private boolean expiredCountHasBeenModified = false;
057    private Boolean forceChange;
058    private boolean forceChangeHasBeenModified = false;
059    
060    private transient Integer _hashCode = null;
061    private transient String _stringValue = null;
062    
063    private void constructFields(PartyPK partyPK, Long lastLoginTime, Integer failureCount, Long firstFailureTime, Long lastFailureTime, Integer expiredCount, Boolean forceChange)
064            throws PersistenceNotNullException {
065        checkForNull(partyPK);
066        this.partyPK = partyPK;
067        this.lastLoginTime = lastLoginTime;
068        checkForNull(failureCount);
069        this.failureCount = failureCount;
070        this.firstFailureTime = firstFailureTime;
071        this.lastFailureTime = lastFailureTime;
072        checkForNull(expiredCount);
073        this.expiredCount = expiredCount;
074        checkForNull(forceChange);
075        this.forceChange = forceChange;
076    }
077    
078    /** Creates a new instance of UserLoginStatusValue */
079    public UserLoginStatusValue(UserLoginStatusPK userLoginStatusPK, PartyPK partyPK, Long lastLoginTime, Integer failureCount, Long firstFailureTime, Long lastFailureTime, Integer expiredCount, Boolean forceChange)
080            throws PersistenceNotNullException {
081        super(userLoginStatusPK);
082        constructFields(partyPK, lastLoginTime, failureCount, firstFailureTime, lastFailureTime, expiredCount, forceChange);
083    }
084    
085    /** Creates a new instance of UserLoginStatusValue */
086    public UserLoginStatusValue(PartyPK partyPK, Long lastLoginTime, Integer failureCount, Long firstFailureTime, Long lastFailureTime, Integer expiredCount, Boolean forceChange)
087            throws PersistenceNotNullException {
088        super();
089        constructFields(partyPK, lastLoginTime, failureCount, firstFailureTime, lastFailureTime, expiredCount, forceChange);
090    }
091    
092    @Override
093    @Nonnull
094    public UserLoginStatusFactory getBaseFactoryInstance() {
095        return UserLoginStatusFactory.getInstance();
096    }
097    
098    @Override
099    @Nonnull
100    public UserLoginStatusValue clone() {
101        Object result;
102        
103        try {
104            result = super.clone();
105        } catch (CloneNotSupportedException cnse) {
106            // This shouldn't happen, fail when it does.
107            throw new PersistenceCloneException(cnse);
108        }
109        
110        return (UserLoginStatusValue)result;
111    }
112    
113    @Override
114    @Nonnull
115    public UserLoginStatusPK getPrimaryKey() {
116        if(_primaryKey == null) {
117            _primaryKey = new UserLoginStatusPK(entityId);
118        }
119        
120        return _primaryKey;
121    }
122    
123    private void clearHashAndString() {
124        _hashCode = null;
125        _stringValue = null;
126    }
127    
128    @Override
129    public int hashCode() {
130        if(_hashCode == null) {
131            int hashCode = 17;
132            
133            hashCode = 37 * hashCode + ((entityId != null) ? entityId.hashCode() : 0);
134            
135            hashCode = 37 * hashCode + ((partyPK != null) ? partyPK.hashCode() : 0);
136            hashCode = 37 * hashCode + ((lastLoginTime != null) ? lastLoginTime.hashCode() : 0);
137            hashCode = 37 * hashCode + ((failureCount != null) ? failureCount.hashCode() : 0);
138            hashCode = 37 * hashCode + ((firstFailureTime != null) ? firstFailureTime.hashCode() : 0);
139            hashCode = 37 * hashCode + ((lastFailureTime != null) ? lastFailureTime.hashCode() : 0);
140            hashCode = 37 * hashCode + ((expiredCount != null) ? expiredCount.hashCode() : 0);
141            hashCode = 37 * hashCode + ((forceChange != null) ? forceChange.hashCode() : 0);
142            
143            _hashCode = hashCode;
144        }
145        
146        return _hashCode;
147    }
148    
149    @Override
150    @Nonnull
151    public String toString() {
152        if(_stringValue == null) {
153            _stringValue = "{" + 
154                    "entityId=" + getEntityId() +
155                    ", partyPK=" + getPartyPK() +
156                    ", lastLoginTime=" + getLastLoginTime() +
157                    ", failureCount=" + getFailureCount() +
158                    ", firstFailureTime=" + getFirstFailureTime() +
159                    ", lastFailureTime=" + getLastFailureTime() +
160                    ", expiredCount=" + getExpiredCount() +
161                    ", forceChange=" + getForceChange() +
162                    "}";
163        }
164        return _stringValue;
165    }
166    
167    @Override
168    public boolean equals(Object other) {
169        if(this == other)
170            return true;
171        
172        if(!hasIdentity())
173            return false;
174        
175        if(other instanceof  UserLoginStatusValue that) {
176            if(!that.hasIdentity())
177                return false;
178            
179            Long thisEntityId = getEntityId();
180            Long thatEntityId = that.getEntityId();
181            
182            boolean objectsEqual = thisEntityId.equals(thatEntityId);
183            if(objectsEqual)
184                objectsEqual = isIdentical(that);
185            
186            return objectsEqual;
187        } else {
188            return false;
189        }
190    }
191    
192    public boolean isIdentical(Object other) {
193        if(other instanceof UserLoginStatusValue that) {
194            boolean objectsEqual = true;
195            
196            
197            if(objectsEqual) {
198                PartyPK thisPartyPK = getPartyPK();
199                PartyPK thatPartyPK = that.getPartyPK();
200                
201                if(thisPartyPK == null) {
202                    objectsEqual = objectsEqual && (thatPartyPK == null);
203                } else {
204                    objectsEqual = objectsEqual && thisPartyPK.equals(thatPartyPK);
205                }
206            }
207            
208            if(objectsEqual) {
209                Long thisLastLoginTime = getLastLoginTime();
210                Long thatLastLoginTime = that.getLastLoginTime();
211                
212                if(thisLastLoginTime == null) {
213                    objectsEqual = objectsEqual && (thatLastLoginTime == null);
214                } else {
215                    objectsEqual = objectsEqual && thisLastLoginTime.equals(thatLastLoginTime);
216                }
217            }
218            
219            if(objectsEqual) {
220                Integer thisFailureCount = getFailureCount();
221                Integer thatFailureCount = that.getFailureCount();
222                
223                if(thisFailureCount == null) {
224                    objectsEqual = objectsEqual && (thatFailureCount == null);
225                } else {
226                    objectsEqual = objectsEqual && thisFailureCount.equals(thatFailureCount);
227                }
228            }
229            
230            if(objectsEqual) {
231                Long thisFirstFailureTime = getFirstFailureTime();
232                Long thatFirstFailureTime = that.getFirstFailureTime();
233                
234                if(thisFirstFailureTime == null) {
235                    objectsEqual = objectsEqual && (thatFirstFailureTime == null);
236                } else {
237                    objectsEqual = objectsEqual && thisFirstFailureTime.equals(thatFirstFailureTime);
238                }
239            }
240            
241            if(objectsEqual) {
242                Long thisLastFailureTime = getLastFailureTime();
243                Long thatLastFailureTime = that.getLastFailureTime();
244                
245                if(thisLastFailureTime == null) {
246                    objectsEqual = objectsEqual && (thatLastFailureTime == null);
247                } else {
248                    objectsEqual = objectsEqual && thisLastFailureTime.equals(thatLastFailureTime);
249                }
250            }
251            
252            if(objectsEqual) {
253                Integer thisExpiredCount = getExpiredCount();
254                Integer thatExpiredCount = that.getExpiredCount();
255                
256                if(thisExpiredCount == null) {
257                    objectsEqual = objectsEqual && (thatExpiredCount == null);
258                } else {
259                    objectsEqual = objectsEqual && thisExpiredCount.equals(thatExpiredCount);
260                }
261            }
262            
263            if(objectsEqual) {
264                Boolean thisForceChange = getForceChange();
265                Boolean thatForceChange = that.getForceChange();
266                
267                if(thisForceChange == null) {
268                    objectsEqual = objectsEqual && (thatForceChange == null);
269                } else {
270                    objectsEqual = objectsEqual && thisForceChange.equals(thatForceChange);
271                }
272            }
273            
274            return objectsEqual;
275        } else {
276            return false;
277        }
278    }
279    
280    @Override
281    public boolean hasBeenModified() {
282        return partyPKHasBeenModified || lastLoginTimeHasBeenModified || failureCountHasBeenModified || firstFailureTimeHasBeenModified || lastFailureTimeHasBeenModified || expiredCountHasBeenModified || forceChangeHasBeenModified;
283    }
284    
285    @Override
286    public void clearHasBeenModified() {
287        partyPKHasBeenModified = false;
288        lastLoginTimeHasBeenModified = false;
289        failureCountHasBeenModified = false;
290        firstFailureTimeHasBeenModified = false;
291        lastFailureTimeHasBeenModified = false;
292        expiredCountHasBeenModified = false;
293        forceChangeHasBeenModified = false;
294    }
295    
296    @Nonnull
297    public PartyPK getPartyPK() {
298        return partyPK;
299    }
300    
301    public void setPartyPK(@Nonnull PartyPK partyPK)
302            throws PersistenceNotNullException {
303        checkForNull(partyPK);
304        
305        boolean update = true;
306        
307        if(this.partyPK != null) {
308            if(this.partyPK.equals(partyPK)) {
309                update = false;
310            }
311        } else if(partyPK == null) {
312            update = false;
313        }
314        
315        if(update) {
316            this.partyPK = partyPK;
317            partyPKHasBeenModified = true;
318            clearHashAndString();
319        }
320    }
321    
322    public boolean getPartyPKHasBeenModified() {
323        return partyPKHasBeenModified;
324    }
325    
326    @Nullable
327    public Long getLastLoginTime() {
328        return lastLoginTime;
329    }
330    
331    public void setLastLoginTime(@Nullable Long lastLoginTime) {
332        boolean update = true;
333        
334        if(this.lastLoginTime != null) {
335            if(this.lastLoginTime.equals(lastLoginTime)) {
336                update = false;
337            }
338        } else if(lastLoginTime == null) {
339            update = false;
340        }
341        
342        if(update) {
343            this.lastLoginTime = lastLoginTime;
344            lastLoginTimeHasBeenModified = true;
345            clearHashAndString();
346        }
347    }
348    
349    public boolean getLastLoginTimeHasBeenModified() {
350        return lastLoginTimeHasBeenModified;
351    }
352    
353    @Nonnull
354    public Integer getFailureCount() {
355        return failureCount;
356    }
357    
358    public void setFailureCount(@Nonnull Integer failureCount)
359            throws PersistenceNotNullException {
360        checkForNull(failureCount);
361        
362        boolean update = true;
363        
364        if(this.failureCount != null) {
365            if(this.failureCount.equals(failureCount)) {
366                update = false;
367            }
368        } else if(failureCount == null) {
369            update = false;
370        }
371        
372        if(update) {
373            this.failureCount = failureCount;
374            failureCountHasBeenModified = true;
375            clearHashAndString();
376        }
377    }
378    
379    public boolean getFailureCountHasBeenModified() {
380        return failureCountHasBeenModified;
381    }
382    
383    @Nullable
384    public Long getFirstFailureTime() {
385        return firstFailureTime;
386    }
387    
388    public void setFirstFailureTime(@Nullable Long firstFailureTime) {
389        boolean update = true;
390        
391        if(this.firstFailureTime != null) {
392            if(this.firstFailureTime.equals(firstFailureTime)) {
393                update = false;
394            }
395        } else if(firstFailureTime == null) {
396            update = false;
397        }
398        
399        if(update) {
400            this.firstFailureTime = firstFailureTime;
401            firstFailureTimeHasBeenModified = true;
402            clearHashAndString();
403        }
404    }
405    
406    public boolean getFirstFailureTimeHasBeenModified() {
407        return firstFailureTimeHasBeenModified;
408    }
409    
410    @Nullable
411    public Long getLastFailureTime() {
412        return lastFailureTime;
413    }
414    
415    public void setLastFailureTime(@Nullable Long lastFailureTime) {
416        boolean update = true;
417        
418        if(this.lastFailureTime != null) {
419            if(this.lastFailureTime.equals(lastFailureTime)) {
420                update = false;
421            }
422        } else if(lastFailureTime == null) {
423            update = false;
424        }
425        
426        if(update) {
427            this.lastFailureTime = lastFailureTime;
428            lastFailureTimeHasBeenModified = true;
429            clearHashAndString();
430        }
431    }
432    
433    public boolean getLastFailureTimeHasBeenModified() {
434        return lastFailureTimeHasBeenModified;
435    }
436    
437    @Nonnull
438    public Integer getExpiredCount() {
439        return expiredCount;
440    }
441    
442    public void setExpiredCount(@Nonnull Integer expiredCount)
443            throws PersistenceNotNullException {
444        checkForNull(expiredCount);
445        
446        boolean update = true;
447        
448        if(this.expiredCount != null) {
449            if(this.expiredCount.equals(expiredCount)) {
450                update = false;
451            }
452        } else if(expiredCount == null) {
453            update = false;
454        }
455        
456        if(update) {
457            this.expiredCount = expiredCount;
458            expiredCountHasBeenModified = true;
459            clearHashAndString();
460        }
461    }
462    
463    public boolean getExpiredCountHasBeenModified() {
464        return expiredCountHasBeenModified;
465    }
466    
467    @Nonnull
468    public Boolean getForceChange() {
469        return forceChange;
470    }
471    
472    public void setForceChange(@Nonnull Boolean forceChange)
473            throws PersistenceNotNullException {
474        checkForNull(forceChange);
475        
476        boolean update = true;
477        
478        if(this.forceChange != null) {
479            if(this.forceChange.equals(forceChange)) {
480                update = false;
481            }
482        } else if(forceChange == null) {
483            update = false;
484        }
485        
486        if(update) {
487            this.forceChange = forceChange;
488            forceChangeHasBeenModified = true;
489            clearHashAndString();
490        }
491    }
492    
493    public boolean getForceChangeHasBeenModified() {
494        return forceChangeHasBeenModified;
495    }
496    
497}