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 * TransactionGlEntryValue.java
021 */
022
023package com.echothree.model.data.accounting.server.value;
024
025import com.echothree.model.data.accounting.common.pk.TransactionGlEntryPK;
026
027import com.echothree.model.data.accounting.server.factory.TransactionGlEntryFactory;
028
029import com.echothree.model.data.accounting.common.pk.TransactionPK;
030import com.echothree.model.data.party.common.pk.PartyPK;
031import com.echothree.model.data.accounting.common.pk.TransactionGlAccountCategoryPK;
032import com.echothree.model.data.accounting.common.pk.GlAccountPK;
033import com.echothree.model.data.accounting.common.pk.CurrencyPK;
034
035import com.echothree.util.common.exception.PersistenceCloneException;
036import com.echothree.util.common.exception.PersistenceNotNullException;
037
038import com.echothree.util.server.persistence.BaseValue;
039
040import java.io.Serializable;
041
042public class TransactionGlEntryValue
043        extends BaseValue<TransactionGlEntryPK>
044        implements Cloneable, Serializable {
045    
046    private TransactionPK transactionPK;
047    private boolean transactionPKHasBeenModified = false;
048    private Integer transactionGlEntrySequence;
049    private boolean transactionGlEntrySequenceHasBeenModified = false;
050    private TransactionGlEntryPK parentTransactionGlEntryPK;
051    private boolean parentTransactionGlEntryPKHasBeenModified = false;
052    private PartyPK groupPartyPK;
053    private boolean groupPartyPKHasBeenModified = false;
054    private TransactionGlAccountCategoryPK transactionGlAccountCategoryPK;
055    private boolean transactionGlAccountCategoryPKHasBeenModified = false;
056    private GlAccountPK glAccountPK;
057    private boolean glAccountPKHasBeenModified = false;
058    private CurrencyPK originalCurrencyPK;
059    private boolean originalCurrencyPKHasBeenModified = false;
060    private Long originalAmount;
061    private boolean originalAmountHasBeenModified = false;
062    private Long amount;
063    private boolean amountHasBeenModified = 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(TransactionPK transactionPK, Integer transactionGlEntrySequence, TransactionGlEntryPK parentTransactionGlEntryPK, PartyPK groupPartyPK, TransactionGlAccountCategoryPK transactionGlAccountCategoryPK, GlAccountPK glAccountPK, CurrencyPK originalCurrencyPK, Long originalAmount, Long amount, Long fromTime, Long thruTime)
073            throws PersistenceNotNullException {
074        checkForNull(transactionPK);
075        this.transactionPK = transactionPK;
076        checkForNull(transactionGlEntrySequence);
077        this.transactionGlEntrySequence = transactionGlEntrySequence;
078        this.parentTransactionGlEntryPK = parentTransactionGlEntryPK;
079        checkForNull(groupPartyPK);
080        this.groupPartyPK = groupPartyPK;
081        this.transactionGlAccountCategoryPK = transactionGlAccountCategoryPK;
082        checkForNull(glAccountPK);
083        this.glAccountPK = glAccountPK;
084        this.originalCurrencyPK = originalCurrencyPK;
085        this.originalAmount = originalAmount;
086        checkForNull(amount);
087        this.amount = amount;
088        checkForNull(fromTime);
089        this.fromTime = fromTime;
090        checkForNull(thruTime);
091        this.thruTime = thruTime;
092    }
093    
094    /** Creates a new instance of TransactionGlEntryValue */
095    public TransactionGlEntryValue(TransactionGlEntryPK transactionGlEntryPK, TransactionPK transactionPK, Integer transactionGlEntrySequence, TransactionGlEntryPK parentTransactionGlEntryPK, PartyPK groupPartyPK, TransactionGlAccountCategoryPK transactionGlAccountCategoryPK, GlAccountPK glAccountPK, CurrencyPK originalCurrencyPK, Long originalAmount, Long amount, Long fromTime, Long thruTime)
096            throws PersistenceNotNullException {
097        super(transactionGlEntryPK);
098        constructFields(transactionPK, transactionGlEntrySequence, parentTransactionGlEntryPK, groupPartyPK, transactionGlAccountCategoryPK, glAccountPK, originalCurrencyPK, originalAmount, amount, fromTime, thruTime);
099    }
100    
101    /** Creates a new instance of TransactionGlEntryValue */
102    public TransactionGlEntryValue(TransactionPK transactionPK, Integer transactionGlEntrySequence, TransactionGlEntryPK parentTransactionGlEntryPK, PartyPK groupPartyPK, TransactionGlAccountCategoryPK transactionGlAccountCategoryPK, GlAccountPK glAccountPK, CurrencyPK originalCurrencyPK, Long originalAmount, Long amount, Long fromTime, Long thruTime)
103            throws PersistenceNotNullException {
104        super();
105        constructFields(transactionPK, transactionGlEntrySequence, parentTransactionGlEntryPK, groupPartyPK, transactionGlAccountCategoryPK, glAccountPK, originalCurrencyPK, originalAmount, amount, fromTime, thruTime);
106    }
107    
108   @Override
109   public TransactionGlEntryFactory getBaseFactoryInstance() {
110        return TransactionGlEntryFactory.getInstance();
111    }
112    
113    @Override
114    public TransactionGlEntryValue clone() {
115        Object result;
116        
117        try {
118            result = super.clone();
119        } catch (CloneNotSupportedException cnse) {
120            // This shouldn't happen, fail when it does.
121            throw new PersistenceCloneException(cnse);
122        }
123        
124        return (TransactionGlEntryValue)result;
125    }
126    
127   @Override
128    public TransactionGlEntryPK getPrimaryKey() {
129        if(_primaryKey == null) {
130            _primaryKey = new TransactionGlEntryPK(entityId);
131        }
132        
133        return _primaryKey;
134    }
135    
136    private void clearHashAndString() {
137        _hashCode = null;
138        _stringValue = null;
139    }
140    
141    @Override
142    public int hashCode() {
143        if(_hashCode == null) {
144            int hashCode = 17;
145            
146            hashCode = 37 * hashCode + ((entityId != null) ? entityId.hashCode() : 0);
147            
148            hashCode = 37 * hashCode + ((transactionPK != null) ? transactionPK.hashCode() : 0);
149            hashCode = 37 * hashCode + ((transactionGlEntrySequence != null) ? transactionGlEntrySequence.hashCode() : 0);
150            hashCode = 37 * hashCode + ((parentTransactionGlEntryPK != null) ? parentTransactionGlEntryPK.hashCode() : 0);
151            hashCode = 37 * hashCode + ((groupPartyPK != null) ? groupPartyPK.hashCode() : 0);
152            hashCode = 37 * hashCode + ((transactionGlAccountCategoryPK != null) ? transactionGlAccountCategoryPK.hashCode() : 0);
153            hashCode = 37 * hashCode + ((glAccountPK != null) ? glAccountPK.hashCode() : 0);
154            hashCode = 37 * hashCode + ((originalCurrencyPK != null) ? originalCurrencyPK.hashCode() : 0);
155            hashCode = 37 * hashCode + ((originalAmount != null) ? originalAmount.hashCode() : 0);
156            hashCode = 37 * hashCode + ((amount != null) ? amount.hashCode() : 0);
157            hashCode = 37 * hashCode + ((fromTime != null) ? fromTime.hashCode() : 0);
158            hashCode = 37 * hashCode + ((thruTime != null) ? thruTime.hashCode() : 0);
159            
160            _hashCode = hashCode;
161        }
162        
163        return _hashCode;
164    }
165    
166    @Override
167    public String toString() {
168        if(_stringValue == null) {
169            StringBuilder stringValue = new StringBuilder("{");
170            
171            stringValue.append("entityId=").append(getEntityId());
172            
173            stringValue.append(", transactionPK=").append(getTransactionPK());
174            stringValue.append(", transactionGlEntrySequence=").append(getTransactionGlEntrySequence());
175            stringValue.append(", parentTransactionGlEntryPK=").append(getParentTransactionGlEntryPK());
176            stringValue.append(", groupPartyPK=").append(getGroupPartyPK());
177            stringValue.append(", transactionGlAccountCategoryPK=").append(getTransactionGlAccountCategoryPK());
178            stringValue.append(", glAccountPK=").append(getGlAccountPK());
179            stringValue.append(", originalCurrencyPK=").append(getOriginalCurrencyPK());
180            stringValue.append(", originalAmount=").append(getOriginalAmount());
181            stringValue.append(", amount=").append(getAmount());
182            stringValue.append(", fromTime=").append(getFromTime());
183            stringValue.append(", thruTime=").append(getThruTime());
184            
185            stringValue.append('}');
186            
187            _stringValue = stringValue.toString();
188        }
189        return _stringValue;
190    }
191    
192    @Override
193    public boolean equals(Object other) {
194        if(this == other)
195            return true;
196        
197        if(!hasIdentity())
198            return false;
199        
200        if(other instanceof  TransactionGlEntryValue) {
201            TransactionGlEntryValue that = (TransactionGlEntryValue)other;
202            
203            if(!that.hasIdentity())
204                return false;
205            
206            Long thisEntityId = getEntityId();
207            Long thatEntityId = that.getEntityId();
208            
209            boolean objectsEqual = thisEntityId.equals(thatEntityId);
210            if(objectsEqual)
211                objectsEqual = objectsEqual && isIdentical(that);
212            
213            return objectsEqual;
214        } else {
215            return false;
216        }
217    }
218    
219    public boolean isIdentical(Object other) {
220        if(other instanceof TransactionGlEntryValue) {
221            TransactionGlEntryValue that = (TransactionGlEntryValue)other;
222            boolean objectsEqual = true;
223            
224            
225            if(objectsEqual) {
226                TransactionPK thisTransactionPK = getTransactionPK();
227                TransactionPK thatTransactionPK = that.getTransactionPK();
228                
229                if(thisTransactionPK == null) {
230                    objectsEqual = objectsEqual && (thatTransactionPK == null);
231                } else {
232                    objectsEqual = objectsEqual && thisTransactionPK.equals(thatTransactionPK);
233                }
234            }
235            
236            if(objectsEqual) {
237                Integer thisTransactionGlEntrySequence = getTransactionGlEntrySequence();
238                Integer thatTransactionGlEntrySequence = that.getTransactionGlEntrySequence();
239                
240                if(thisTransactionGlEntrySequence == null) {
241                    objectsEqual = objectsEqual && (thatTransactionGlEntrySequence == null);
242                } else {
243                    objectsEqual = objectsEqual && thisTransactionGlEntrySequence.equals(thatTransactionGlEntrySequence);
244                }
245            }
246            
247            if(objectsEqual) {
248                TransactionGlEntryPK thisParentTransactionGlEntryPK = getParentTransactionGlEntryPK();
249                TransactionGlEntryPK thatParentTransactionGlEntryPK = that.getParentTransactionGlEntryPK();
250                
251                if(thisParentTransactionGlEntryPK == null) {
252                    objectsEqual = objectsEqual && (thatParentTransactionGlEntryPK == null);
253                } else {
254                    objectsEqual = objectsEqual && thisParentTransactionGlEntryPK.equals(thatParentTransactionGlEntryPK);
255                }
256            }
257            
258            if(objectsEqual) {
259                PartyPK thisGroupPartyPK = getGroupPartyPK();
260                PartyPK thatGroupPartyPK = that.getGroupPartyPK();
261                
262                if(thisGroupPartyPK == null) {
263                    objectsEqual = objectsEqual && (thatGroupPartyPK == null);
264                } else {
265                    objectsEqual = objectsEqual && thisGroupPartyPK.equals(thatGroupPartyPK);
266                }
267            }
268            
269            if(objectsEqual) {
270                TransactionGlAccountCategoryPK thisTransactionGlAccountCategoryPK = getTransactionGlAccountCategoryPK();
271                TransactionGlAccountCategoryPK thatTransactionGlAccountCategoryPK = that.getTransactionGlAccountCategoryPK();
272                
273                if(thisTransactionGlAccountCategoryPK == null) {
274                    objectsEqual = objectsEqual && (thatTransactionGlAccountCategoryPK == null);
275                } else {
276                    objectsEqual = objectsEqual && thisTransactionGlAccountCategoryPK.equals(thatTransactionGlAccountCategoryPK);
277                }
278            }
279            
280            if(objectsEqual) {
281                GlAccountPK thisGlAccountPK = getGlAccountPK();
282                GlAccountPK thatGlAccountPK = that.getGlAccountPK();
283                
284                if(thisGlAccountPK == null) {
285                    objectsEqual = objectsEqual && (thatGlAccountPK == null);
286                } else {
287                    objectsEqual = objectsEqual && thisGlAccountPK.equals(thatGlAccountPK);
288                }
289            }
290            
291            if(objectsEqual) {
292                CurrencyPK thisOriginalCurrencyPK = getOriginalCurrencyPK();
293                CurrencyPK thatOriginalCurrencyPK = that.getOriginalCurrencyPK();
294                
295                if(thisOriginalCurrencyPK == null) {
296                    objectsEqual = objectsEqual && (thatOriginalCurrencyPK == null);
297                } else {
298                    objectsEqual = objectsEqual && thisOriginalCurrencyPK.equals(thatOriginalCurrencyPK);
299                }
300            }
301            
302            if(objectsEqual) {
303                Long thisOriginalAmount = getOriginalAmount();
304                Long thatOriginalAmount = that.getOriginalAmount();
305                
306                if(thisOriginalAmount == null) {
307                    objectsEqual = objectsEqual && (thatOriginalAmount == null);
308                } else {
309                    objectsEqual = objectsEqual && thisOriginalAmount.equals(thatOriginalAmount);
310                }
311            }
312            
313            if(objectsEqual) {
314                Long thisAmount = getAmount();
315                Long thatAmount = that.getAmount();
316                
317                if(thisAmount == null) {
318                    objectsEqual = objectsEqual && (thatAmount == null);
319                } else {
320                    objectsEqual = objectsEqual && thisAmount.equals(thatAmount);
321                }
322            }
323            
324            if(objectsEqual) {
325                Long thisFromTime = getFromTime();
326                Long thatFromTime = that.getFromTime();
327                
328                if(thisFromTime == null) {
329                    objectsEqual = objectsEqual && (thatFromTime == null);
330                } else {
331                    objectsEqual = objectsEqual && thisFromTime.equals(thatFromTime);
332                }
333            }
334            
335            if(objectsEqual) {
336                Long thisThruTime = getThruTime();
337                Long thatThruTime = that.getThruTime();
338                
339                if(thisThruTime == null) {
340                    objectsEqual = objectsEqual && (thatThruTime == null);
341                } else {
342                    objectsEqual = objectsEqual && thisThruTime.equals(thatThruTime);
343                }
344            }
345            
346            return objectsEqual;
347        } else {
348            return false;
349        }
350    }
351    
352    @Override
353    public boolean hasBeenModified() {
354        return transactionPKHasBeenModified || transactionGlEntrySequenceHasBeenModified || parentTransactionGlEntryPKHasBeenModified || groupPartyPKHasBeenModified || transactionGlAccountCategoryPKHasBeenModified || glAccountPKHasBeenModified || originalCurrencyPKHasBeenModified || originalAmountHasBeenModified || amountHasBeenModified || fromTimeHasBeenModified || thruTimeHasBeenModified;
355    }
356    
357    @Override
358    public void clearHasBeenModified() {
359        transactionPKHasBeenModified = false;
360        transactionGlEntrySequenceHasBeenModified = false;
361        parentTransactionGlEntryPKHasBeenModified = false;
362        groupPartyPKHasBeenModified = false;
363        transactionGlAccountCategoryPKHasBeenModified = false;
364        glAccountPKHasBeenModified = false;
365        originalCurrencyPKHasBeenModified = false;
366        originalAmountHasBeenModified = false;
367        amountHasBeenModified = false;
368        fromTimeHasBeenModified = false;
369        thruTimeHasBeenModified = false;
370    }
371    
372    public TransactionPK getTransactionPK() {
373        return transactionPK;
374    }
375    
376    public void setTransactionPK(TransactionPK transactionPK)
377            throws PersistenceNotNullException {
378        checkForNull(transactionPK);
379        
380        boolean update = true;
381        
382        if(this.transactionPK != null) {
383            if(this.transactionPK.equals(transactionPK)) {
384                update = false;
385            }
386        } else if(transactionPK == null) {
387            update = false;
388        }
389        
390        if(update) {
391            this.transactionPK = transactionPK;
392            transactionPKHasBeenModified = true;
393            clearHashAndString();
394        }
395    }
396    
397    public boolean getTransactionPKHasBeenModified() {
398        return transactionPKHasBeenModified;
399    }
400    
401    public Integer getTransactionGlEntrySequence() {
402        return transactionGlEntrySequence;
403    }
404    
405    public void setTransactionGlEntrySequence(Integer transactionGlEntrySequence)
406            throws PersistenceNotNullException {
407        checkForNull(transactionGlEntrySequence);
408        
409        boolean update = true;
410        
411        if(this.transactionGlEntrySequence != null) {
412            if(this.transactionGlEntrySequence.equals(transactionGlEntrySequence)) {
413                update = false;
414            }
415        } else if(transactionGlEntrySequence == null) {
416            update = false;
417        }
418        
419        if(update) {
420            this.transactionGlEntrySequence = transactionGlEntrySequence;
421            transactionGlEntrySequenceHasBeenModified = true;
422            clearHashAndString();
423        }
424    }
425    
426    public boolean getTransactionGlEntrySequenceHasBeenModified() {
427        return transactionGlEntrySequenceHasBeenModified;
428    }
429    
430    public TransactionGlEntryPK getParentTransactionGlEntryPK() {
431        return parentTransactionGlEntryPK;
432    }
433    
434    public void setParentTransactionGlEntryPK(TransactionGlEntryPK parentTransactionGlEntryPK) {
435        boolean update = true;
436        
437        if(this.parentTransactionGlEntryPK != null) {
438            if(this.parentTransactionGlEntryPK.equals(parentTransactionGlEntryPK)) {
439                update = false;
440            }
441        } else if(parentTransactionGlEntryPK == null) {
442            update = false;
443        }
444        
445        if(update) {
446            this.parentTransactionGlEntryPK = parentTransactionGlEntryPK;
447            parentTransactionGlEntryPKHasBeenModified = true;
448            clearHashAndString();
449        }
450    }
451    
452    public boolean getParentTransactionGlEntryPKHasBeenModified() {
453        return parentTransactionGlEntryPKHasBeenModified;
454    }
455    
456    public PartyPK getGroupPartyPK() {
457        return groupPartyPK;
458    }
459    
460    public void setGroupPartyPK(PartyPK groupPartyPK)
461            throws PersistenceNotNullException {
462        checkForNull(groupPartyPK);
463        
464        boolean update = true;
465        
466        if(this.groupPartyPK != null) {
467            if(this.groupPartyPK.equals(groupPartyPK)) {
468                update = false;
469            }
470        } else if(groupPartyPK == null) {
471            update = false;
472        }
473        
474        if(update) {
475            this.groupPartyPK = groupPartyPK;
476            groupPartyPKHasBeenModified = true;
477            clearHashAndString();
478        }
479    }
480    
481    public boolean getGroupPartyPKHasBeenModified() {
482        return groupPartyPKHasBeenModified;
483    }
484    
485    public TransactionGlAccountCategoryPK getTransactionGlAccountCategoryPK() {
486        return transactionGlAccountCategoryPK;
487    }
488    
489    public void setTransactionGlAccountCategoryPK(TransactionGlAccountCategoryPK transactionGlAccountCategoryPK) {
490        boolean update = true;
491        
492        if(this.transactionGlAccountCategoryPK != null) {
493            if(this.transactionGlAccountCategoryPK.equals(transactionGlAccountCategoryPK)) {
494                update = false;
495            }
496        } else if(transactionGlAccountCategoryPK == null) {
497            update = false;
498        }
499        
500        if(update) {
501            this.transactionGlAccountCategoryPK = transactionGlAccountCategoryPK;
502            transactionGlAccountCategoryPKHasBeenModified = true;
503            clearHashAndString();
504        }
505    }
506    
507    public boolean getTransactionGlAccountCategoryPKHasBeenModified() {
508        return transactionGlAccountCategoryPKHasBeenModified;
509    }
510    
511    public GlAccountPK getGlAccountPK() {
512        return glAccountPK;
513    }
514    
515    public void setGlAccountPK(GlAccountPK glAccountPK)
516            throws PersistenceNotNullException {
517        checkForNull(glAccountPK);
518        
519        boolean update = true;
520        
521        if(this.glAccountPK != null) {
522            if(this.glAccountPK.equals(glAccountPK)) {
523                update = false;
524            }
525        } else if(glAccountPK == null) {
526            update = false;
527        }
528        
529        if(update) {
530            this.glAccountPK = glAccountPK;
531            glAccountPKHasBeenModified = true;
532            clearHashAndString();
533        }
534    }
535    
536    public boolean getGlAccountPKHasBeenModified() {
537        return glAccountPKHasBeenModified;
538    }
539    
540    public CurrencyPK getOriginalCurrencyPK() {
541        return originalCurrencyPK;
542    }
543    
544    public void setOriginalCurrencyPK(CurrencyPK originalCurrencyPK) {
545        boolean update = true;
546        
547        if(this.originalCurrencyPK != null) {
548            if(this.originalCurrencyPK.equals(originalCurrencyPK)) {
549                update = false;
550            }
551        } else if(originalCurrencyPK == null) {
552            update = false;
553        }
554        
555        if(update) {
556            this.originalCurrencyPK = originalCurrencyPK;
557            originalCurrencyPKHasBeenModified = true;
558            clearHashAndString();
559        }
560    }
561    
562    public boolean getOriginalCurrencyPKHasBeenModified() {
563        return originalCurrencyPKHasBeenModified;
564    }
565    
566    public Long getOriginalAmount() {
567        return originalAmount;
568    }
569    
570    public void setOriginalAmount(Long originalAmount) {
571        boolean update = true;
572        
573        if(this.originalAmount != null) {
574            if(this.originalAmount.equals(originalAmount)) {
575                update = false;
576            }
577        } else if(originalAmount == null) {
578            update = false;
579        }
580        
581        if(update) {
582            this.originalAmount = originalAmount;
583            originalAmountHasBeenModified = true;
584            clearHashAndString();
585        }
586    }
587    
588    public boolean getOriginalAmountHasBeenModified() {
589        return originalAmountHasBeenModified;
590    }
591    
592    public Long getAmount() {
593        return amount;
594    }
595    
596    public void setAmount(Long amount)
597            throws PersistenceNotNullException {
598        checkForNull(amount);
599        
600        boolean update = true;
601        
602        if(this.amount != null) {
603            if(this.amount.equals(amount)) {
604                update = false;
605            }
606        } else if(amount == null) {
607            update = false;
608        }
609        
610        if(update) {
611            this.amount = amount;
612            amountHasBeenModified = true;
613            clearHashAndString();
614        }
615    }
616    
617    public boolean getAmountHasBeenModified() {
618        return amountHasBeenModified;
619    }
620    
621    public Long getFromTime() {
622        return fromTime;
623    }
624    
625    public void setFromTime(Long fromTime)
626            throws PersistenceNotNullException {
627        checkForNull(fromTime);
628        
629        boolean update = true;
630        
631        if(this.fromTime != null) {
632            if(this.fromTime.equals(fromTime)) {
633                update = false;
634            }
635        } else if(fromTime == null) {
636            update = false;
637        }
638        
639        if(update) {
640            this.fromTime = fromTime;
641            fromTimeHasBeenModified = true;
642            clearHashAndString();
643        }
644    }
645    
646    public boolean getFromTimeHasBeenModified() {
647        return fromTimeHasBeenModified;
648    }
649    
650    public Long getThruTime() {
651        return thruTime;
652    }
653    
654    public void setThruTime(Long thruTime)
655            throws PersistenceNotNullException {
656        checkForNull(thruTime);
657        
658        boolean update = true;
659        
660        if(this.thruTime != null) {
661            if(this.thruTime.equals(thruTime)) {
662                update = false;
663            }
664        } else if(thruTime == null) {
665            update = false;
666        }
667        
668        if(update) {
669            this.thruTime = thruTime;
670            thruTimeHasBeenModified = true;
671            clearHashAndString();
672        }
673    }
674    
675    public boolean getThruTimeHasBeenModified() {
676        return thruTimeHasBeenModified;
677    }
678    
679}