001// --------------------------------------------------------------------------------
002// Copyright 2002-2024 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 * TaxDetailValue.java
021 */
022
023package com.echothree.model.data.tax.server.value;
024
025import com.echothree.model.data.tax.common.pk.TaxDetailPK;
026
027import com.echothree.model.data.tax.server.factory.TaxDetailFactory;
028
029import com.echothree.model.data.tax.common.pk.TaxPK;
030import com.echothree.model.data.contact.common.pk.ContactMechanismPurposePK;
031import com.echothree.model.data.accounting.common.pk.GlAccountPK;
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 TaxDetailValue
041        extends BaseValue<TaxDetailPK>
042        implements Cloneable, Serializable {
043    
044    private TaxPK taxPK;
045    private boolean taxPKHasBeenModified = false;
046    private String taxName;
047    private boolean taxNameHasBeenModified = false;
048    private ContactMechanismPurposePK contactMechanismPurposePK;
049    private boolean contactMechanismPurposePKHasBeenModified = false;
050    private GlAccountPK glAccountPK;
051    private boolean glAccountPKHasBeenModified = false;
052    private Boolean includeShippingCharge;
053    private boolean includeShippingChargeHasBeenModified = false;
054    private Boolean includeProcessingCharge;
055    private boolean includeProcessingChargeHasBeenModified = false;
056    private Boolean includeInsuranceCharge;
057    private boolean includeInsuranceChargeHasBeenModified = false;
058    private Integer percent;
059    private boolean percentHasBeenModified = false;
060    private Boolean isDefault;
061    private boolean isDefaultHasBeenModified = false;
062    private Integer sortOrder;
063    private boolean sortOrderHasBeenModified = false;
064    private Long fromTime;
065    private boolean fromTimeHasBeenModified = false;
066    private Long thruTime;
067    private boolean thruTimeHasBeenModified = false;
068    
069    private transient Integer _hashCode = null;
070    private transient String _stringValue = null;
071    
072    private void constructFields(TaxPK taxPK, String taxName, ContactMechanismPurposePK contactMechanismPurposePK, GlAccountPK glAccountPK, Boolean includeShippingCharge, Boolean includeProcessingCharge, Boolean includeInsuranceCharge, Integer percent, Boolean isDefault, Integer sortOrder, Long fromTime, Long thruTime)
073            throws PersistenceNotNullException {
074        checkForNull(taxPK);
075        this.taxPK = taxPK;
076        checkForNull(taxName);
077        this.taxName = taxName;
078        checkForNull(contactMechanismPurposePK);
079        this.contactMechanismPurposePK = contactMechanismPurposePK;
080        checkForNull(glAccountPK);
081        this.glAccountPK = glAccountPK;
082        checkForNull(includeShippingCharge);
083        this.includeShippingCharge = includeShippingCharge;
084        checkForNull(includeProcessingCharge);
085        this.includeProcessingCharge = includeProcessingCharge;
086        checkForNull(includeInsuranceCharge);
087        this.includeInsuranceCharge = includeInsuranceCharge;
088        checkForNull(percent);
089        this.percent = percent;
090        checkForNull(isDefault);
091        this.isDefault = isDefault;
092        checkForNull(sortOrder);
093        this.sortOrder = sortOrder;
094        checkForNull(fromTime);
095        this.fromTime = fromTime;
096        checkForNull(thruTime);
097        this.thruTime = thruTime;
098    }
099    
100    /** Creates a new instance of TaxDetailValue */
101    public TaxDetailValue(TaxDetailPK taxDetailPK, TaxPK taxPK, String taxName, ContactMechanismPurposePK contactMechanismPurposePK, GlAccountPK glAccountPK, Boolean includeShippingCharge, Boolean includeProcessingCharge, Boolean includeInsuranceCharge, Integer percent, Boolean isDefault, Integer sortOrder, Long fromTime, Long thruTime)
102            throws PersistenceNotNullException {
103        super(taxDetailPK);
104        constructFields(taxPK, taxName, contactMechanismPurposePK, glAccountPK, includeShippingCharge, includeProcessingCharge, includeInsuranceCharge, percent, isDefault, sortOrder, fromTime, thruTime);
105    }
106    
107    /** Creates a new instance of TaxDetailValue */
108    public TaxDetailValue(TaxPK taxPK, String taxName, ContactMechanismPurposePK contactMechanismPurposePK, GlAccountPK glAccountPK, Boolean includeShippingCharge, Boolean includeProcessingCharge, Boolean includeInsuranceCharge, Integer percent, Boolean isDefault, Integer sortOrder, Long fromTime, Long thruTime)
109            throws PersistenceNotNullException {
110        super();
111        constructFields(taxPK, taxName, contactMechanismPurposePK, glAccountPK, includeShippingCharge, includeProcessingCharge, includeInsuranceCharge, percent, isDefault, sortOrder, fromTime, thruTime);
112    }
113    
114   @Override
115   public TaxDetailFactory getBaseFactoryInstance() {
116        return TaxDetailFactory.getInstance();
117    }
118    
119    @Override
120    public TaxDetailValue clone() {
121        Object result;
122        
123        try {
124            result = super.clone();
125        } catch (CloneNotSupportedException cnse) {
126            // This shouldn't happen, fail when it does.
127            throw new PersistenceCloneException(cnse);
128        }
129        
130        return (TaxDetailValue)result;
131    }
132    
133   @Override
134    public TaxDetailPK getPrimaryKey() {
135        if(_primaryKey == null) {
136            _primaryKey = new TaxDetailPK(entityId);
137        }
138        
139        return _primaryKey;
140    }
141    
142    private void clearHashAndString() {
143        _hashCode = null;
144        _stringValue = null;
145    }
146    
147    @Override
148    public int hashCode() {
149        if(_hashCode == null) {
150            int hashCode = 17;
151            
152            hashCode = 37 * hashCode + ((entityId != null) ? entityId.hashCode() : 0);
153            
154            hashCode = 37 * hashCode + ((taxPK != null) ? taxPK.hashCode() : 0);
155            hashCode = 37 * hashCode + ((taxName != null) ? taxName.hashCode() : 0);
156            hashCode = 37 * hashCode + ((contactMechanismPurposePK != null) ? contactMechanismPurposePK.hashCode() : 0);
157            hashCode = 37 * hashCode + ((glAccountPK != null) ? glAccountPK.hashCode() : 0);
158            hashCode = 37 * hashCode + ((includeShippingCharge != null) ? includeShippingCharge.hashCode() : 0);
159            hashCode = 37 * hashCode + ((includeProcessingCharge != null) ? includeProcessingCharge.hashCode() : 0);
160            hashCode = 37 * hashCode + ((includeInsuranceCharge != null) ? includeInsuranceCharge.hashCode() : 0);
161            hashCode = 37 * hashCode + ((percent != null) ? percent.hashCode() : 0);
162            hashCode = 37 * hashCode + ((isDefault != null) ? isDefault.hashCode() : 0);
163            hashCode = 37 * hashCode + ((sortOrder != null) ? sortOrder.hashCode() : 0);
164            hashCode = 37 * hashCode + ((fromTime != null) ? fromTime.hashCode() : 0);
165            hashCode = 37 * hashCode + ((thruTime != null) ? thruTime.hashCode() : 0);
166            
167            _hashCode = hashCode;
168        }
169        
170        return _hashCode;
171    }
172    
173    @Override
174    public String toString() {
175        if(_stringValue == null) {
176            StringBuilder stringValue = new StringBuilder("{");
177            
178            stringValue.append("entityId=").append(getEntityId());
179            
180            stringValue.append(", taxPK=").append(getTaxPK());
181            stringValue.append(", taxName=").append(getTaxName());
182            stringValue.append(", contactMechanismPurposePK=").append(getContactMechanismPurposePK());
183            stringValue.append(", glAccountPK=").append(getGlAccountPK());
184            stringValue.append(", includeShippingCharge=").append(getIncludeShippingCharge());
185            stringValue.append(", includeProcessingCharge=").append(getIncludeProcessingCharge());
186            stringValue.append(", includeInsuranceCharge=").append(getIncludeInsuranceCharge());
187            stringValue.append(", percent=").append(getPercent());
188            stringValue.append(", isDefault=").append(getIsDefault());
189            stringValue.append(", sortOrder=").append(getSortOrder());
190            stringValue.append(", fromTime=").append(getFromTime());
191            stringValue.append(", thruTime=").append(getThruTime());
192            
193            stringValue.append('}');
194            
195            _stringValue = stringValue.toString();
196        }
197        return _stringValue;
198    }
199    
200    @Override
201    public boolean equals(Object other) {
202        if(this == other)
203            return true;
204        
205        if(!hasIdentity())
206            return false;
207        
208        if(other instanceof  TaxDetailValue) {
209            TaxDetailValue that = (TaxDetailValue)other;
210            
211            if(!that.hasIdentity())
212                return false;
213            
214            Long thisEntityId = getEntityId();
215            Long thatEntityId = that.getEntityId();
216            
217            boolean objectsEqual = thisEntityId.equals(thatEntityId);
218            if(objectsEqual)
219                objectsEqual = objectsEqual && isIdentical(that);
220            
221            return objectsEqual;
222        } else {
223            return false;
224        }
225    }
226    
227    public boolean isIdentical(Object other) {
228        if(other instanceof TaxDetailValue) {
229            TaxDetailValue that = (TaxDetailValue)other;
230            boolean objectsEqual = true;
231            
232            
233            if(objectsEqual) {
234                TaxPK thisTaxPK = getTaxPK();
235                TaxPK thatTaxPK = that.getTaxPK();
236                
237                if(thisTaxPK == null) {
238                    objectsEqual = objectsEqual && (thatTaxPK == null);
239                } else {
240                    objectsEqual = objectsEqual && thisTaxPK.equals(thatTaxPK);
241                }
242            }
243            
244            if(objectsEqual) {
245                String thisTaxName = getTaxName();
246                String thatTaxName = that.getTaxName();
247                
248                if(thisTaxName == null) {
249                    objectsEqual = objectsEqual && (thatTaxName == null);
250                } else {
251                    objectsEqual = objectsEqual && thisTaxName.equals(thatTaxName);
252                }
253            }
254            
255            if(objectsEqual) {
256                ContactMechanismPurposePK thisContactMechanismPurposePK = getContactMechanismPurposePK();
257                ContactMechanismPurposePK thatContactMechanismPurposePK = that.getContactMechanismPurposePK();
258                
259                if(thisContactMechanismPurposePK == null) {
260                    objectsEqual = objectsEqual && (thatContactMechanismPurposePK == null);
261                } else {
262                    objectsEqual = objectsEqual && thisContactMechanismPurposePK.equals(thatContactMechanismPurposePK);
263                }
264            }
265            
266            if(objectsEqual) {
267                GlAccountPK thisGlAccountPK = getGlAccountPK();
268                GlAccountPK thatGlAccountPK = that.getGlAccountPK();
269                
270                if(thisGlAccountPK == null) {
271                    objectsEqual = objectsEqual && (thatGlAccountPK == null);
272                } else {
273                    objectsEqual = objectsEqual && thisGlAccountPK.equals(thatGlAccountPK);
274                }
275            }
276            
277            if(objectsEqual) {
278                Boolean thisIncludeShippingCharge = getIncludeShippingCharge();
279                Boolean thatIncludeShippingCharge = that.getIncludeShippingCharge();
280                
281                if(thisIncludeShippingCharge == null) {
282                    objectsEqual = objectsEqual && (thatIncludeShippingCharge == null);
283                } else {
284                    objectsEqual = objectsEqual && thisIncludeShippingCharge.equals(thatIncludeShippingCharge);
285                }
286            }
287            
288            if(objectsEqual) {
289                Boolean thisIncludeProcessingCharge = getIncludeProcessingCharge();
290                Boolean thatIncludeProcessingCharge = that.getIncludeProcessingCharge();
291                
292                if(thisIncludeProcessingCharge == null) {
293                    objectsEqual = objectsEqual && (thatIncludeProcessingCharge == null);
294                } else {
295                    objectsEqual = objectsEqual && thisIncludeProcessingCharge.equals(thatIncludeProcessingCharge);
296                }
297            }
298            
299            if(objectsEqual) {
300                Boolean thisIncludeInsuranceCharge = getIncludeInsuranceCharge();
301                Boolean thatIncludeInsuranceCharge = that.getIncludeInsuranceCharge();
302                
303                if(thisIncludeInsuranceCharge == null) {
304                    objectsEqual = objectsEqual && (thatIncludeInsuranceCharge == null);
305                } else {
306                    objectsEqual = objectsEqual && thisIncludeInsuranceCharge.equals(thatIncludeInsuranceCharge);
307                }
308            }
309            
310            if(objectsEqual) {
311                Integer thisPercent = getPercent();
312                Integer thatPercent = that.getPercent();
313                
314                if(thisPercent == null) {
315                    objectsEqual = objectsEqual && (thatPercent == null);
316                } else {
317                    objectsEqual = objectsEqual && thisPercent.equals(thatPercent);
318                }
319            }
320            
321            if(objectsEqual) {
322                Boolean thisIsDefault = getIsDefault();
323                Boolean thatIsDefault = that.getIsDefault();
324                
325                if(thisIsDefault == null) {
326                    objectsEqual = objectsEqual && (thatIsDefault == null);
327                } else {
328                    objectsEqual = objectsEqual && thisIsDefault.equals(thatIsDefault);
329                }
330            }
331            
332            if(objectsEqual) {
333                Integer thisSortOrder = getSortOrder();
334                Integer thatSortOrder = that.getSortOrder();
335                
336                if(thisSortOrder == null) {
337                    objectsEqual = objectsEqual && (thatSortOrder == null);
338                } else {
339                    objectsEqual = objectsEqual && thisSortOrder.equals(thatSortOrder);
340                }
341            }
342            
343            if(objectsEqual) {
344                Long thisFromTime = getFromTime();
345                Long thatFromTime = that.getFromTime();
346                
347                if(thisFromTime == null) {
348                    objectsEqual = objectsEqual && (thatFromTime == null);
349                } else {
350                    objectsEqual = objectsEqual && thisFromTime.equals(thatFromTime);
351                }
352            }
353            
354            if(objectsEqual) {
355                Long thisThruTime = getThruTime();
356                Long thatThruTime = that.getThruTime();
357                
358                if(thisThruTime == null) {
359                    objectsEqual = objectsEqual && (thatThruTime == null);
360                } else {
361                    objectsEqual = objectsEqual && thisThruTime.equals(thatThruTime);
362                }
363            }
364            
365            return objectsEqual;
366        } else {
367            return false;
368        }
369    }
370    
371    @Override
372    public boolean hasBeenModified() {
373        return taxPKHasBeenModified || taxNameHasBeenModified || contactMechanismPurposePKHasBeenModified || glAccountPKHasBeenModified || includeShippingChargeHasBeenModified || includeProcessingChargeHasBeenModified || includeInsuranceChargeHasBeenModified || percentHasBeenModified || isDefaultHasBeenModified || sortOrderHasBeenModified || fromTimeHasBeenModified || thruTimeHasBeenModified;
374    }
375    
376    @Override
377    public void clearHasBeenModified() {
378        taxPKHasBeenModified = false;
379        taxNameHasBeenModified = false;
380        contactMechanismPurposePKHasBeenModified = false;
381        glAccountPKHasBeenModified = false;
382        includeShippingChargeHasBeenModified = false;
383        includeProcessingChargeHasBeenModified = false;
384        includeInsuranceChargeHasBeenModified = false;
385        percentHasBeenModified = false;
386        isDefaultHasBeenModified = false;
387        sortOrderHasBeenModified = false;
388        fromTimeHasBeenModified = false;
389        thruTimeHasBeenModified = false;
390    }
391    
392    public TaxPK getTaxPK() {
393        return taxPK;
394    }
395    
396    public void setTaxPK(TaxPK taxPK)
397            throws PersistenceNotNullException {
398        checkForNull(taxPK);
399        
400        boolean update = true;
401        
402        if(this.taxPK != null) {
403            if(this.taxPK.equals(taxPK)) {
404                update = false;
405            }
406        } else if(taxPK == null) {
407            update = false;
408        }
409        
410        if(update) {
411            this.taxPK = taxPK;
412            taxPKHasBeenModified = true;
413            clearHashAndString();
414        }
415    }
416    
417    public boolean getTaxPKHasBeenModified() {
418        return taxPKHasBeenModified;
419    }
420    
421    public String getTaxName() {
422        return taxName;
423    }
424    
425    public void setTaxName(String taxName)
426            throws PersistenceNotNullException {
427        checkForNull(taxName);
428        
429        boolean update = true;
430        
431        if(this.taxName != null) {
432            if(this.taxName.equals(taxName)) {
433                update = false;
434            }
435        } else if(taxName == null) {
436            update = false;
437        }
438        
439        if(update) {
440            this.taxName = taxName;
441            taxNameHasBeenModified = true;
442            clearHashAndString();
443        }
444    }
445    
446    public boolean getTaxNameHasBeenModified() {
447        return taxNameHasBeenModified;
448    }
449    
450    public ContactMechanismPurposePK getContactMechanismPurposePK() {
451        return contactMechanismPurposePK;
452    }
453    
454    public void setContactMechanismPurposePK(ContactMechanismPurposePK contactMechanismPurposePK)
455            throws PersistenceNotNullException {
456        checkForNull(contactMechanismPurposePK);
457        
458        boolean update = true;
459        
460        if(this.contactMechanismPurposePK != null) {
461            if(this.contactMechanismPurposePK.equals(contactMechanismPurposePK)) {
462                update = false;
463            }
464        } else if(contactMechanismPurposePK == null) {
465            update = false;
466        }
467        
468        if(update) {
469            this.contactMechanismPurposePK = contactMechanismPurposePK;
470            contactMechanismPurposePKHasBeenModified = true;
471            clearHashAndString();
472        }
473    }
474    
475    public boolean getContactMechanismPurposePKHasBeenModified() {
476        return contactMechanismPurposePKHasBeenModified;
477    }
478    
479    public GlAccountPK getGlAccountPK() {
480        return glAccountPK;
481    }
482    
483    public void setGlAccountPK(GlAccountPK glAccountPK)
484            throws PersistenceNotNullException {
485        checkForNull(glAccountPK);
486        
487        boolean update = true;
488        
489        if(this.glAccountPK != null) {
490            if(this.glAccountPK.equals(glAccountPK)) {
491                update = false;
492            }
493        } else if(glAccountPK == null) {
494            update = false;
495        }
496        
497        if(update) {
498            this.glAccountPK = glAccountPK;
499            glAccountPKHasBeenModified = true;
500            clearHashAndString();
501        }
502    }
503    
504    public boolean getGlAccountPKHasBeenModified() {
505        return glAccountPKHasBeenModified;
506    }
507    
508    public Boolean getIncludeShippingCharge() {
509        return includeShippingCharge;
510    }
511    
512    public void setIncludeShippingCharge(Boolean includeShippingCharge)
513            throws PersistenceNotNullException {
514        checkForNull(includeShippingCharge);
515        
516        boolean update = true;
517        
518        if(this.includeShippingCharge != null) {
519            if(this.includeShippingCharge.equals(includeShippingCharge)) {
520                update = false;
521            }
522        } else if(includeShippingCharge == null) {
523            update = false;
524        }
525        
526        if(update) {
527            this.includeShippingCharge = includeShippingCharge;
528            includeShippingChargeHasBeenModified = true;
529            clearHashAndString();
530        }
531    }
532    
533    public boolean getIncludeShippingChargeHasBeenModified() {
534        return includeShippingChargeHasBeenModified;
535    }
536    
537    public Boolean getIncludeProcessingCharge() {
538        return includeProcessingCharge;
539    }
540    
541    public void setIncludeProcessingCharge(Boolean includeProcessingCharge)
542            throws PersistenceNotNullException {
543        checkForNull(includeProcessingCharge);
544        
545        boolean update = true;
546        
547        if(this.includeProcessingCharge != null) {
548            if(this.includeProcessingCharge.equals(includeProcessingCharge)) {
549                update = false;
550            }
551        } else if(includeProcessingCharge == null) {
552            update = false;
553        }
554        
555        if(update) {
556            this.includeProcessingCharge = includeProcessingCharge;
557            includeProcessingChargeHasBeenModified = true;
558            clearHashAndString();
559        }
560    }
561    
562    public boolean getIncludeProcessingChargeHasBeenModified() {
563        return includeProcessingChargeHasBeenModified;
564    }
565    
566    public Boolean getIncludeInsuranceCharge() {
567        return includeInsuranceCharge;
568    }
569    
570    public void setIncludeInsuranceCharge(Boolean includeInsuranceCharge)
571            throws PersistenceNotNullException {
572        checkForNull(includeInsuranceCharge);
573        
574        boolean update = true;
575        
576        if(this.includeInsuranceCharge != null) {
577            if(this.includeInsuranceCharge.equals(includeInsuranceCharge)) {
578                update = false;
579            }
580        } else if(includeInsuranceCharge == null) {
581            update = false;
582        }
583        
584        if(update) {
585            this.includeInsuranceCharge = includeInsuranceCharge;
586            includeInsuranceChargeHasBeenModified = true;
587            clearHashAndString();
588        }
589    }
590    
591    public boolean getIncludeInsuranceChargeHasBeenModified() {
592        return includeInsuranceChargeHasBeenModified;
593    }
594    
595    public Integer getPercent() {
596        return percent;
597    }
598    
599    public void setPercent(Integer percent)
600            throws PersistenceNotNullException {
601        checkForNull(percent);
602        
603        boolean update = true;
604        
605        if(this.percent != null) {
606            if(this.percent.equals(percent)) {
607                update = false;
608            }
609        } else if(percent == null) {
610            update = false;
611        }
612        
613        if(update) {
614            this.percent = percent;
615            percentHasBeenModified = true;
616            clearHashAndString();
617        }
618    }
619    
620    public boolean getPercentHasBeenModified() {
621        return percentHasBeenModified;
622    }
623    
624    public Boolean getIsDefault() {
625        return isDefault;
626    }
627    
628    public void setIsDefault(Boolean isDefault)
629            throws PersistenceNotNullException {
630        checkForNull(isDefault);
631        
632        boolean update = true;
633        
634        if(this.isDefault != null) {
635            if(this.isDefault.equals(isDefault)) {
636                update = false;
637            }
638        } else if(isDefault == null) {
639            update = false;
640        }
641        
642        if(update) {
643            this.isDefault = isDefault;
644            isDefaultHasBeenModified = true;
645            clearHashAndString();
646        }
647    }
648    
649    public boolean getIsDefaultHasBeenModified() {
650        return isDefaultHasBeenModified;
651    }
652    
653    public Integer getSortOrder() {
654        return sortOrder;
655    }
656    
657    public void setSortOrder(Integer sortOrder)
658            throws PersistenceNotNullException {
659        checkForNull(sortOrder);
660        
661        boolean update = true;
662        
663        if(this.sortOrder != null) {
664            if(this.sortOrder.equals(sortOrder)) {
665                update = false;
666            }
667        } else if(sortOrder == null) {
668            update = false;
669        }
670        
671        if(update) {
672            this.sortOrder = sortOrder;
673            sortOrderHasBeenModified = true;
674            clearHashAndString();
675        }
676    }
677    
678    public boolean getSortOrderHasBeenModified() {
679        return sortOrderHasBeenModified;
680    }
681    
682    public Long getFromTime() {
683        return fromTime;
684    }
685    
686    public void setFromTime(Long fromTime)
687            throws PersistenceNotNullException {
688        checkForNull(fromTime);
689        
690        boolean update = true;
691        
692        if(this.fromTime != null) {
693            if(this.fromTime.equals(fromTime)) {
694                update = false;
695            }
696        } else if(fromTime == null) {
697            update = false;
698        }
699        
700        if(update) {
701            this.fromTime = fromTime;
702            fromTimeHasBeenModified = true;
703            clearHashAndString();
704        }
705    }
706    
707    public boolean getFromTimeHasBeenModified() {
708        return fromTimeHasBeenModified;
709    }
710    
711    public Long getThruTime() {
712        return thruTime;
713    }
714    
715    public void setThruTime(Long thruTime)
716            throws PersistenceNotNullException {
717        checkForNull(thruTime);
718        
719        boolean update = true;
720        
721        if(this.thruTime != null) {
722            if(this.thruTime.equals(thruTime)) {
723                update = false;
724            }
725        } else if(thruTime == null) {
726            update = false;
727        }
728        
729        if(update) {
730            this.thruTime = thruTime;
731            thruTimeHasBeenModified = true;
732            clearHashAndString();
733        }
734    }
735    
736    public boolean getThruTimeHasBeenModified() {
737        return thruTimeHasBeenModified;
738    }
739    
740}