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