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 * UserVisitValue.java
021 */
022
023package com.echothree.model.data.user.server.value;
024
025import com.echothree.model.data.user.common.pk.UserVisitPK;
026
027import com.echothree.model.data.user.server.factory.UserVisitFactory;
028
029import com.echothree.model.data.user.common.pk.UserVisitGroupPK;
030import com.echothree.model.data.user.common.pk.UserKeyPK;
031import com.echothree.model.data.party.common.pk.LanguagePK;
032import com.echothree.model.data.accounting.common.pk.CurrencyPK;
033import com.echothree.model.data.party.common.pk.TimeZonePK;
034import com.echothree.model.data.party.common.pk.DateTimeFormatPK;
035import com.echothree.model.data.offer.common.pk.OfferUsePK;
036import com.echothree.model.data.associate.common.pk.AssociateReferralPK;
037
038import com.echothree.util.common.exception.PersistenceCloneException;
039import com.echothree.util.common.exception.PersistenceNotNullException;
040
041import com.echothree.util.server.persistence.BaseValue;
042
043import java.io.Serializable;
044
045import javax.annotation.Nonnull;
046import javax.annotation.Nullable;
047
048public class UserVisitValue
049        extends BaseValue<UserVisitPK>
050        implements Cloneable, Serializable {
051    
052    private UserVisitGroupPK userVisitGroupPK;
053    private boolean userVisitGroupPKHasBeenModified = false;
054    private UserKeyPK userKeyPK;
055    private boolean userKeyPKHasBeenModified = false;
056    private LanguagePK preferredLanguagePK;
057    private boolean preferredLanguagePKHasBeenModified = false;
058    private CurrencyPK preferredCurrencyPK;
059    private boolean preferredCurrencyPKHasBeenModified = false;
060    private TimeZonePK preferredTimeZonePK;
061    private boolean preferredTimeZonePKHasBeenModified = false;
062    private DateTimeFormatPK preferredDateTimeFormatPK;
063    private boolean preferredDateTimeFormatPKHasBeenModified = false;
064    private Long lastCommandTime;
065    private boolean lastCommandTimeHasBeenModified = false;
066    private OfferUsePK offerUsePK;
067    private boolean offerUsePKHasBeenModified = false;
068    private AssociateReferralPK associateReferralPK;
069    private boolean associateReferralPKHasBeenModified = false;
070    private Long retainUntilTime;
071    private boolean retainUntilTimeHasBeenModified = false;
072    private Long fromTime;
073    private boolean fromTimeHasBeenModified = false;
074    private Long thruTime;
075    private boolean thruTimeHasBeenModified = false;
076    
077    private transient Integer _hashCode = null;
078    private transient String _stringValue = null;
079    
080    private void constructFields(UserVisitGroupPK userVisitGroupPK, UserKeyPK userKeyPK, LanguagePK preferredLanguagePK, CurrencyPK preferredCurrencyPK, TimeZonePK preferredTimeZonePK, DateTimeFormatPK preferredDateTimeFormatPK, Long lastCommandTime, OfferUsePK offerUsePK, AssociateReferralPK associateReferralPK, Long retainUntilTime, Long fromTime, Long thruTime)
081            throws PersistenceNotNullException {
082        this.userVisitGroupPK = userVisitGroupPK;
083        this.userKeyPK = userKeyPK;
084        this.preferredLanguagePK = preferredLanguagePK;
085        this.preferredCurrencyPK = preferredCurrencyPK;
086        this.preferredTimeZonePK = preferredTimeZonePK;
087        this.preferredDateTimeFormatPK = preferredDateTimeFormatPK;
088        checkForNull(lastCommandTime);
089        this.lastCommandTime = lastCommandTime;
090        this.offerUsePK = offerUsePK;
091        this.associateReferralPK = associateReferralPK;
092        this.retainUntilTime = retainUntilTime;
093        checkForNull(fromTime);
094        this.fromTime = fromTime;
095        checkForNull(thruTime);
096        this.thruTime = thruTime;
097    }
098    
099    /** Creates a new instance of UserVisitValue */
100    public UserVisitValue(UserVisitPK userVisitPK, UserVisitGroupPK userVisitGroupPK, UserKeyPK userKeyPK, LanguagePK preferredLanguagePK, CurrencyPK preferredCurrencyPK, TimeZonePK preferredTimeZonePK, DateTimeFormatPK preferredDateTimeFormatPK, Long lastCommandTime, OfferUsePK offerUsePK, AssociateReferralPK associateReferralPK, Long retainUntilTime, Long fromTime, Long thruTime)
101            throws PersistenceNotNullException {
102        super(userVisitPK);
103        constructFields(userVisitGroupPK, userKeyPK, preferredLanguagePK, preferredCurrencyPK, preferredTimeZonePK, preferredDateTimeFormatPK, lastCommandTime, offerUsePK, associateReferralPK, retainUntilTime, fromTime, thruTime);
104    }
105    
106    /** Creates a new instance of UserVisitValue */
107    public UserVisitValue(UserVisitGroupPK userVisitGroupPK, UserKeyPK userKeyPK, LanguagePK preferredLanguagePK, CurrencyPK preferredCurrencyPK, TimeZonePK preferredTimeZonePK, DateTimeFormatPK preferredDateTimeFormatPK, Long lastCommandTime, OfferUsePK offerUsePK, AssociateReferralPK associateReferralPK, Long retainUntilTime, Long fromTime, Long thruTime)
108            throws PersistenceNotNullException {
109        super();
110        constructFields(userVisitGroupPK, userKeyPK, preferredLanguagePK, preferredCurrencyPK, preferredTimeZonePK, preferredDateTimeFormatPK, lastCommandTime, offerUsePK, associateReferralPK, retainUntilTime, fromTime, thruTime);
111    }
112    
113    @Override
114    @Nonnull
115    public UserVisitFactory getBaseFactoryInstance() {
116        return UserVisitFactory.getInstance();
117    }
118    
119    @Override
120    @Nonnull
121    public UserVisitValue clone() {
122        Object result;
123        
124        try {
125            result = super.clone();
126        } catch (CloneNotSupportedException cnse) {
127            // This shouldn't happen, fail when it does.
128            throw new PersistenceCloneException(cnse);
129        }
130        
131        return (UserVisitValue)result;
132    }
133    
134    @Override
135    @Nonnull
136    public UserVisitPK getPrimaryKey() {
137        if(_primaryKey == null) {
138            _primaryKey = new UserVisitPK(entityId);
139        }
140        
141        return _primaryKey;
142    }
143    
144    private void clearHashAndString() {
145        _hashCode = null;
146        _stringValue = null;
147    }
148    
149    @Override
150    public int hashCode() {
151        if(_hashCode == null) {
152            int hashCode = 17;
153            
154            hashCode = 37 * hashCode + ((entityId != null) ? entityId.hashCode() : 0);
155            
156            hashCode = 37 * hashCode + ((userVisitGroupPK != null) ? userVisitGroupPK.hashCode() : 0);
157            hashCode = 37 * hashCode + ((userKeyPK != null) ? userKeyPK.hashCode() : 0);
158            hashCode = 37 * hashCode + ((preferredLanguagePK != null) ? preferredLanguagePK.hashCode() : 0);
159            hashCode = 37 * hashCode + ((preferredCurrencyPK != null) ? preferredCurrencyPK.hashCode() : 0);
160            hashCode = 37 * hashCode + ((preferredTimeZonePK != null) ? preferredTimeZonePK.hashCode() : 0);
161            hashCode = 37 * hashCode + ((preferredDateTimeFormatPK != null) ? preferredDateTimeFormatPK.hashCode() : 0);
162            hashCode = 37 * hashCode + ((lastCommandTime != null) ? lastCommandTime.hashCode() : 0);
163            hashCode = 37 * hashCode + ((offerUsePK != null) ? offerUsePK.hashCode() : 0);
164            hashCode = 37 * hashCode + ((associateReferralPK != null) ? associateReferralPK.hashCode() : 0);
165            hashCode = 37 * hashCode + ((retainUntilTime != null) ? retainUntilTime.hashCode() : 0);
166            hashCode = 37 * hashCode + ((fromTime != null) ? fromTime.hashCode() : 0);
167            hashCode = 37 * hashCode + ((thruTime != null) ? thruTime.hashCode() : 0);
168            
169            _hashCode = hashCode;
170        }
171        
172        return _hashCode;
173    }
174    
175    @Override
176    @Nonnull
177    public String toString() {
178        if(_stringValue == null) {
179            _stringValue = "{" + 
180                    "entityId=" + getEntityId() +
181                    ", userVisitGroupPK=" + getUserVisitGroupPK() +
182                    ", userKeyPK=" + getUserKeyPK() +
183                    ", preferredLanguagePK=" + getPreferredLanguagePK() +
184                    ", preferredCurrencyPK=" + getPreferredCurrencyPK() +
185                    ", preferredTimeZonePK=" + getPreferredTimeZonePK() +
186                    ", preferredDateTimeFormatPK=" + getPreferredDateTimeFormatPK() +
187                    ", lastCommandTime=" + getLastCommandTime() +
188                    ", offerUsePK=" + getOfferUsePK() +
189                    ", associateReferralPK=" + getAssociateReferralPK() +
190                    ", retainUntilTime=" + getRetainUntilTime() +
191                    ", fromTime=" + getFromTime() +
192                    ", thruTime=" + getThruTime() +
193                    "}";
194        }
195        return _stringValue;
196    }
197    
198    @Override
199    public boolean equals(Object other) {
200        if(this == other)
201            return true;
202        
203        if(!hasIdentity())
204            return false;
205        
206        if(other instanceof  UserVisitValue that) {
207            if(!that.hasIdentity())
208                return false;
209            
210            Long thisEntityId = getEntityId();
211            Long thatEntityId = that.getEntityId();
212            
213            boolean objectsEqual = thisEntityId.equals(thatEntityId);
214            if(objectsEqual)
215                objectsEqual = isIdentical(that);
216            
217            return objectsEqual;
218        } else {
219            return false;
220        }
221    }
222    
223    public boolean isIdentical(Object other) {
224        if(other instanceof UserVisitValue that) {
225            boolean objectsEqual = true;
226            
227            
228            if(objectsEqual) {
229                UserVisitGroupPK thisUserVisitGroupPK = getUserVisitGroupPK();
230                UserVisitGroupPK thatUserVisitGroupPK = that.getUserVisitGroupPK();
231                
232                if(thisUserVisitGroupPK == null) {
233                    objectsEqual = objectsEqual && (thatUserVisitGroupPK == null);
234                } else {
235                    objectsEqual = objectsEqual && thisUserVisitGroupPK.equals(thatUserVisitGroupPK);
236                }
237            }
238            
239            if(objectsEqual) {
240                UserKeyPK thisUserKeyPK = getUserKeyPK();
241                UserKeyPK thatUserKeyPK = that.getUserKeyPK();
242                
243                if(thisUserKeyPK == null) {
244                    objectsEqual = objectsEqual && (thatUserKeyPK == null);
245                } else {
246                    objectsEqual = objectsEqual && thisUserKeyPK.equals(thatUserKeyPK);
247                }
248            }
249            
250            if(objectsEqual) {
251                LanguagePK thisPreferredLanguagePK = getPreferredLanguagePK();
252                LanguagePK thatPreferredLanguagePK = that.getPreferredLanguagePK();
253                
254                if(thisPreferredLanguagePK == null) {
255                    objectsEqual = objectsEqual && (thatPreferredLanguagePK == null);
256                } else {
257                    objectsEqual = objectsEqual && thisPreferredLanguagePK.equals(thatPreferredLanguagePK);
258                }
259            }
260            
261            if(objectsEqual) {
262                CurrencyPK thisPreferredCurrencyPK = getPreferredCurrencyPK();
263                CurrencyPK thatPreferredCurrencyPK = that.getPreferredCurrencyPK();
264                
265                if(thisPreferredCurrencyPK == null) {
266                    objectsEqual = objectsEqual && (thatPreferredCurrencyPK == null);
267                } else {
268                    objectsEqual = objectsEqual && thisPreferredCurrencyPK.equals(thatPreferredCurrencyPK);
269                }
270            }
271            
272            if(objectsEqual) {
273                TimeZonePK thisPreferredTimeZonePK = getPreferredTimeZonePK();
274                TimeZonePK thatPreferredTimeZonePK = that.getPreferredTimeZonePK();
275                
276                if(thisPreferredTimeZonePK == null) {
277                    objectsEqual = objectsEqual && (thatPreferredTimeZonePK == null);
278                } else {
279                    objectsEqual = objectsEqual && thisPreferredTimeZonePK.equals(thatPreferredTimeZonePK);
280                }
281            }
282            
283            if(objectsEqual) {
284                DateTimeFormatPK thisPreferredDateTimeFormatPK = getPreferredDateTimeFormatPK();
285                DateTimeFormatPK thatPreferredDateTimeFormatPK = that.getPreferredDateTimeFormatPK();
286                
287                if(thisPreferredDateTimeFormatPK == null) {
288                    objectsEqual = objectsEqual && (thatPreferredDateTimeFormatPK == null);
289                } else {
290                    objectsEqual = objectsEqual && thisPreferredDateTimeFormatPK.equals(thatPreferredDateTimeFormatPK);
291                }
292            }
293            
294            if(objectsEqual) {
295                Long thisLastCommandTime = getLastCommandTime();
296                Long thatLastCommandTime = that.getLastCommandTime();
297                
298                if(thisLastCommandTime == null) {
299                    objectsEqual = objectsEqual && (thatLastCommandTime == null);
300                } else {
301                    objectsEqual = objectsEqual && thisLastCommandTime.equals(thatLastCommandTime);
302                }
303            }
304            
305            if(objectsEqual) {
306                OfferUsePK thisOfferUsePK = getOfferUsePK();
307                OfferUsePK thatOfferUsePK = that.getOfferUsePK();
308                
309                if(thisOfferUsePK == null) {
310                    objectsEqual = objectsEqual && (thatOfferUsePK == null);
311                } else {
312                    objectsEqual = objectsEqual && thisOfferUsePK.equals(thatOfferUsePK);
313                }
314            }
315            
316            if(objectsEqual) {
317                AssociateReferralPK thisAssociateReferralPK = getAssociateReferralPK();
318                AssociateReferralPK thatAssociateReferralPK = that.getAssociateReferralPK();
319                
320                if(thisAssociateReferralPK == null) {
321                    objectsEqual = objectsEqual && (thatAssociateReferralPK == null);
322                } else {
323                    objectsEqual = objectsEqual && thisAssociateReferralPK.equals(thatAssociateReferralPK);
324                }
325            }
326            
327            if(objectsEqual) {
328                Long thisRetainUntilTime = getRetainUntilTime();
329                Long thatRetainUntilTime = that.getRetainUntilTime();
330                
331                if(thisRetainUntilTime == null) {
332                    objectsEqual = objectsEqual && (thatRetainUntilTime == null);
333                } else {
334                    objectsEqual = objectsEqual && thisRetainUntilTime.equals(thatRetainUntilTime);
335                }
336            }
337            
338            if(objectsEqual) {
339                Long thisFromTime = getFromTime();
340                Long thatFromTime = that.getFromTime();
341                
342                if(thisFromTime == null) {
343                    objectsEqual = objectsEqual && (thatFromTime == null);
344                } else {
345                    objectsEqual = objectsEqual && thisFromTime.equals(thatFromTime);
346                }
347            }
348            
349            if(objectsEqual) {
350                Long thisThruTime = getThruTime();
351                Long thatThruTime = that.getThruTime();
352                
353                if(thisThruTime == null) {
354                    objectsEqual = objectsEqual && (thatThruTime == null);
355                } else {
356                    objectsEqual = objectsEqual && thisThruTime.equals(thatThruTime);
357                }
358            }
359            
360            return objectsEqual;
361        } else {
362            return false;
363        }
364    }
365    
366    @Override
367    public boolean hasBeenModified() {
368        return userVisitGroupPKHasBeenModified || userKeyPKHasBeenModified || preferredLanguagePKHasBeenModified || preferredCurrencyPKHasBeenModified || preferredTimeZonePKHasBeenModified || preferredDateTimeFormatPKHasBeenModified || lastCommandTimeHasBeenModified || offerUsePKHasBeenModified || associateReferralPKHasBeenModified || retainUntilTimeHasBeenModified || fromTimeHasBeenModified || thruTimeHasBeenModified;
369    }
370    
371    @Override
372    public void clearHasBeenModified() {
373        userVisitGroupPKHasBeenModified = false;
374        userKeyPKHasBeenModified = false;
375        preferredLanguagePKHasBeenModified = false;
376        preferredCurrencyPKHasBeenModified = false;
377        preferredTimeZonePKHasBeenModified = false;
378        preferredDateTimeFormatPKHasBeenModified = false;
379        lastCommandTimeHasBeenModified = false;
380        offerUsePKHasBeenModified = false;
381        associateReferralPKHasBeenModified = false;
382        retainUntilTimeHasBeenModified = false;
383        fromTimeHasBeenModified = false;
384        thruTimeHasBeenModified = false;
385    }
386    
387    @Nullable
388    public UserVisitGroupPK getUserVisitGroupPK() {
389        return userVisitGroupPK;
390    }
391    
392    public void setUserVisitGroupPK(@Nullable UserVisitGroupPK userVisitGroupPK) {
393        boolean update = true;
394        
395        if(this.userVisitGroupPK != null) {
396            if(this.userVisitGroupPK.equals(userVisitGroupPK)) {
397                update = false;
398            }
399        } else if(userVisitGroupPK == null) {
400            update = false;
401        }
402        
403        if(update) {
404            this.userVisitGroupPK = userVisitGroupPK;
405            userVisitGroupPKHasBeenModified = true;
406            clearHashAndString();
407        }
408    }
409    
410    public boolean getUserVisitGroupPKHasBeenModified() {
411        return userVisitGroupPKHasBeenModified;
412    }
413    
414    @Nullable
415    public UserKeyPK getUserKeyPK() {
416        return userKeyPK;
417    }
418    
419    public void setUserKeyPK(@Nullable UserKeyPK userKeyPK) {
420        boolean update = true;
421        
422        if(this.userKeyPK != null) {
423            if(this.userKeyPK.equals(userKeyPK)) {
424                update = false;
425            }
426        } else if(userKeyPK == null) {
427            update = false;
428        }
429        
430        if(update) {
431            this.userKeyPK = userKeyPK;
432            userKeyPKHasBeenModified = true;
433            clearHashAndString();
434        }
435    }
436    
437    public boolean getUserKeyPKHasBeenModified() {
438        return userKeyPKHasBeenModified;
439    }
440    
441    @Nullable
442    public LanguagePK getPreferredLanguagePK() {
443        return preferredLanguagePK;
444    }
445    
446    public void setPreferredLanguagePK(@Nullable LanguagePK preferredLanguagePK) {
447        boolean update = true;
448        
449        if(this.preferredLanguagePK != null) {
450            if(this.preferredLanguagePK.equals(preferredLanguagePK)) {
451                update = false;
452            }
453        } else if(preferredLanguagePK == null) {
454            update = false;
455        }
456        
457        if(update) {
458            this.preferredLanguagePK = preferredLanguagePK;
459            preferredLanguagePKHasBeenModified = true;
460            clearHashAndString();
461        }
462    }
463    
464    public boolean getPreferredLanguagePKHasBeenModified() {
465        return preferredLanguagePKHasBeenModified;
466    }
467    
468    @Nullable
469    public CurrencyPK getPreferredCurrencyPK() {
470        return preferredCurrencyPK;
471    }
472    
473    public void setPreferredCurrencyPK(@Nullable CurrencyPK preferredCurrencyPK) {
474        boolean update = true;
475        
476        if(this.preferredCurrencyPK != null) {
477            if(this.preferredCurrencyPK.equals(preferredCurrencyPK)) {
478                update = false;
479            }
480        } else if(preferredCurrencyPK == null) {
481            update = false;
482        }
483        
484        if(update) {
485            this.preferredCurrencyPK = preferredCurrencyPK;
486            preferredCurrencyPKHasBeenModified = true;
487            clearHashAndString();
488        }
489    }
490    
491    public boolean getPreferredCurrencyPKHasBeenModified() {
492        return preferredCurrencyPKHasBeenModified;
493    }
494    
495    @Nullable
496    public TimeZonePK getPreferredTimeZonePK() {
497        return preferredTimeZonePK;
498    }
499    
500    public void setPreferredTimeZonePK(@Nullable TimeZonePK preferredTimeZonePK) {
501        boolean update = true;
502        
503        if(this.preferredTimeZonePK != null) {
504            if(this.preferredTimeZonePK.equals(preferredTimeZonePK)) {
505                update = false;
506            }
507        } else if(preferredTimeZonePK == null) {
508            update = false;
509        }
510        
511        if(update) {
512            this.preferredTimeZonePK = preferredTimeZonePK;
513            preferredTimeZonePKHasBeenModified = true;
514            clearHashAndString();
515        }
516    }
517    
518    public boolean getPreferredTimeZonePKHasBeenModified() {
519        return preferredTimeZonePKHasBeenModified;
520    }
521    
522    @Nullable
523    public DateTimeFormatPK getPreferredDateTimeFormatPK() {
524        return preferredDateTimeFormatPK;
525    }
526    
527    public void setPreferredDateTimeFormatPK(@Nullable DateTimeFormatPK preferredDateTimeFormatPK) {
528        boolean update = true;
529        
530        if(this.preferredDateTimeFormatPK != null) {
531            if(this.preferredDateTimeFormatPK.equals(preferredDateTimeFormatPK)) {
532                update = false;
533            }
534        } else if(preferredDateTimeFormatPK == null) {
535            update = false;
536        }
537        
538        if(update) {
539            this.preferredDateTimeFormatPK = preferredDateTimeFormatPK;
540            preferredDateTimeFormatPKHasBeenModified = true;
541            clearHashAndString();
542        }
543    }
544    
545    public boolean getPreferredDateTimeFormatPKHasBeenModified() {
546        return preferredDateTimeFormatPKHasBeenModified;
547    }
548    
549    @Nonnull
550    public Long getLastCommandTime() {
551        return lastCommandTime;
552    }
553    
554    public void setLastCommandTime(@Nonnull Long lastCommandTime)
555            throws PersistenceNotNullException {
556        checkForNull(lastCommandTime);
557        
558        boolean update = true;
559        
560        if(this.lastCommandTime != null) {
561            if(this.lastCommandTime.equals(lastCommandTime)) {
562                update = false;
563            }
564        } else if(lastCommandTime == null) {
565            update = false;
566        }
567        
568        if(update) {
569            this.lastCommandTime = lastCommandTime;
570            lastCommandTimeHasBeenModified = true;
571            clearHashAndString();
572        }
573    }
574    
575    public boolean getLastCommandTimeHasBeenModified() {
576        return lastCommandTimeHasBeenModified;
577    }
578    
579    @Nullable
580    public OfferUsePK getOfferUsePK() {
581        return offerUsePK;
582    }
583    
584    public void setOfferUsePK(@Nullable OfferUsePK offerUsePK) {
585        boolean update = true;
586        
587        if(this.offerUsePK != null) {
588            if(this.offerUsePK.equals(offerUsePK)) {
589                update = false;
590            }
591        } else if(offerUsePK == null) {
592            update = false;
593        }
594        
595        if(update) {
596            this.offerUsePK = offerUsePK;
597            offerUsePKHasBeenModified = true;
598            clearHashAndString();
599        }
600    }
601    
602    public boolean getOfferUsePKHasBeenModified() {
603        return offerUsePKHasBeenModified;
604    }
605    
606    @Nullable
607    public AssociateReferralPK getAssociateReferralPK() {
608        return associateReferralPK;
609    }
610    
611    public void setAssociateReferralPK(@Nullable AssociateReferralPK associateReferralPK) {
612        boolean update = true;
613        
614        if(this.associateReferralPK != null) {
615            if(this.associateReferralPK.equals(associateReferralPK)) {
616                update = false;
617            }
618        } else if(associateReferralPK == null) {
619            update = false;
620        }
621        
622        if(update) {
623            this.associateReferralPK = associateReferralPK;
624            associateReferralPKHasBeenModified = true;
625            clearHashAndString();
626        }
627    }
628    
629    public boolean getAssociateReferralPKHasBeenModified() {
630        return associateReferralPKHasBeenModified;
631    }
632    
633    @Nullable
634    public Long getRetainUntilTime() {
635        return retainUntilTime;
636    }
637    
638    public void setRetainUntilTime(@Nullable Long retainUntilTime) {
639        boolean update = true;
640        
641        if(this.retainUntilTime != null) {
642            if(this.retainUntilTime.equals(retainUntilTime)) {
643                update = false;
644            }
645        } else if(retainUntilTime == null) {
646            update = false;
647        }
648        
649        if(update) {
650            this.retainUntilTime = retainUntilTime;
651            retainUntilTimeHasBeenModified = true;
652            clearHashAndString();
653        }
654    }
655    
656    public boolean getRetainUntilTimeHasBeenModified() {
657        return retainUntilTimeHasBeenModified;
658    }
659    
660    @Nonnull
661    public Long getFromTime() {
662        return fromTime;
663    }
664    
665    public void setFromTime(@Nonnull Long fromTime)
666            throws PersistenceNotNullException {
667        checkForNull(fromTime);
668        
669        boolean update = true;
670        
671        if(this.fromTime != null) {
672            if(this.fromTime.equals(fromTime)) {
673                update = false;
674            }
675        } else if(fromTime == null) {
676            update = false;
677        }
678        
679        if(update) {
680            this.fromTime = fromTime;
681            fromTimeHasBeenModified = true;
682            clearHashAndString();
683        }
684    }
685    
686    public boolean getFromTimeHasBeenModified() {
687        return fromTimeHasBeenModified;
688    }
689    
690    @Nonnull
691    public Long getThruTime() {
692        return thruTime;
693    }
694    
695    public void setThruTime(@Nonnull Long thruTime)
696            throws PersistenceNotNullException {
697        checkForNull(thruTime);
698        
699        boolean update = true;
700        
701        if(this.thruTime != null) {
702            if(this.thruTime.equals(thruTime)) {
703                update = false;
704            }
705        } else if(thruTime == null) {
706            update = false;
707        }
708        
709        if(update) {
710            this.thruTime = thruTime;
711            thruTimeHasBeenModified = true;
712            clearHashAndString();
713        }
714    }
715    
716    public boolean getThruTimeHasBeenModified() {
717        return thruTimeHasBeenModified;
718    }
719    
720}