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 * HarmonizedTariffScheduleCodeDetailValue.java
021 */
022
023package com.echothree.model.data.item.server.value;
024
025import com.echothree.model.data.item.common.pk.HarmonizedTariffScheduleCodeDetailPK;
026
027import com.echothree.model.data.item.server.factory.HarmonizedTariffScheduleCodeDetailFactory;
028
029import com.echothree.model.data.item.common.pk.HarmonizedTariffScheduleCodePK;
030import com.echothree.model.data.geo.common.pk.GeoCodePK;
031import com.echothree.model.data.item.common.pk.HarmonizedTariffScheduleCodeUnitPK;
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 HarmonizedTariffScheduleCodeDetailValue
041        extends BaseValue<HarmonizedTariffScheduleCodeDetailPK>
042        implements Cloneable, Serializable {
043    
044    private HarmonizedTariffScheduleCodePK harmonizedTariffScheduleCodePK;
045    private boolean harmonizedTariffScheduleCodePKHasBeenModified = false;
046    private GeoCodePK countryGeoCodePK;
047    private boolean countryGeoCodePKHasBeenModified = false;
048    private String harmonizedTariffScheduleCodeName;
049    private boolean harmonizedTariffScheduleCodeNameHasBeenModified = false;
050    private HarmonizedTariffScheduleCodeUnitPK firstHarmonizedTariffScheduleCodeUnitPK;
051    private boolean firstHarmonizedTariffScheduleCodeUnitPKHasBeenModified = false;
052    private HarmonizedTariffScheduleCodeUnitPK secondHarmonizedTariffScheduleCodeUnitPK;
053    private boolean secondHarmonizedTariffScheduleCodeUnitPKHasBeenModified = false;
054    private Boolean isDefault;
055    private boolean isDefaultHasBeenModified = false;
056    private Integer sortOrder;
057    private boolean sortOrderHasBeenModified = false;
058    private Long fromTime;
059    private boolean fromTimeHasBeenModified = false;
060    private Long thruTime;
061    private boolean thruTimeHasBeenModified = false;
062    
063    private transient Integer _hashCode = null;
064    private transient String _stringValue = null;
065    
066    private void constructFields(HarmonizedTariffScheduleCodePK harmonizedTariffScheduleCodePK, GeoCodePK countryGeoCodePK, String harmonizedTariffScheduleCodeName, HarmonizedTariffScheduleCodeUnitPK firstHarmonizedTariffScheduleCodeUnitPK, HarmonizedTariffScheduleCodeUnitPK secondHarmonizedTariffScheduleCodeUnitPK, Boolean isDefault, Integer sortOrder, Long fromTime, Long thruTime)
067            throws PersistenceNotNullException {
068        checkForNull(harmonizedTariffScheduleCodePK);
069        this.harmonizedTariffScheduleCodePK = harmonizedTariffScheduleCodePK;
070        checkForNull(countryGeoCodePK);
071        this.countryGeoCodePK = countryGeoCodePK;
072        checkForNull(harmonizedTariffScheduleCodeName);
073        this.harmonizedTariffScheduleCodeName = harmonizedTariffScheduleCodeName;
074        this.firstHarmonizedTariffScheduleCodeUnitPK = firstHarmonizedTariffScheduleCodeUnitPK;
075        this.secondHarmonizedTariffScheduleCodeUnitPK = secondHarmonizedTariffScheduleCodeUnitPK;
076        checkForNull(isDefault);
077        this.isDefault = isDefault;
078        checkForNull(sortOrder);
079        this.sortOrder = sortOrder;
080        checkForNull(fromTime);
081        this.fromTime = fromTime;
082        checkForNull(thruTime);
083        this.thruTime = thruTime;
084    }
085    
086    /** Creates a new instance of HarmonizedTariffScheduleCodeDetailValue */
087    public HarmonizedTariffScheduleCodeDetailValue(HarmonizedTariffScheduleCodeDetailPK harmonizedTariffScheduleCodeDetailPK, HarmonizedTariffScheduleCodePK harmonizedTariffScheduleCodePK, GeoCodePK countryGeoCodePK, String harmonizedTariffScheduleCodeName, HarmonizedTariffScheduleCodeUnitPK firstHarmonizedTariffScheduleCodeUnitPK, HarmonizedTariffScheduleCodeUnitPK secondHarmonizedTariffScheduleCodeUnitPK, Boolean isDefault, Integer sortOrder, Long fromTime, Long thruTime)
088            throws PersistenceNotNullException {
089        super(harmonizedTariffScheduleCodeDetailPK);
090        constructFields(harmonizedTariffScheduleCodePK, countryGeoCodePK, harmonizedTariffScheduleCodeName, firstHarmonizedTariffScheduleCodeUnitPK, secondHarmonizedTariffScheduleCodeUnitPK, isDefault, sortOrder, fromTime, thruTime);
091    }
092    
093    /** Creates a new instance of HarmonizedTariffScheduleCodeDetailValue */
094    public HarmonizedTariffScheduleCodeDetailValue(HarmonizedTariffScheduleCodePK harmonizedTariffScheduleCodePK, GeoCodePK countryGeoCodePK, String harmonizedTariffScheduleCodeName, HarmonizedTariffScheduleCodeUnitPK firstHarmonizedTariffScheduleCodeUnitPK, HarmonizedTariffScheduleCodeUnitPK secondHarmonizedTariffScheduleCodeUnitPK, Boolean isDefault, Integer sortOrder, Long fromTime, Long thruTime)
095            throws PersistenceNotNullException {
096        super();
097        constructFields(harmonizedTariffScheduleCodePK, countryGeoCodePK, harmonizedTariffScheduleCodeName, firstHarmonizedTariffScheduleCodeUnitPK, secondHarmonizedTariffScheduleCodeUnitPK, isDefault, sortOrder, fromTime, thruTime);
098    }
099    
100   @Override
101   public HarmonizedTariffScheduleCodeDetailFactory getBaseFactoryInstance() {
102        return HarmonizedTariffScheduleCodeDetailFactory.getInstance();
103    }
104    
105    @Override
106    public HarmonizedTariffScheduleCodeDetailValue clone() {
107        Object result;
108        
109        try {
110            result = super.clone();
111        } catch (CloneNotSupportedException cnse) {
112            // This shouldn't happen, fail when it does.
113            throw new PersistenceCloneException(cnse);
114        }
115        
116        return (HarmonizedTariffScheduleCodeDetailValue)result;
117    }
118    
119   @Override
120    public HarmonizedTariffScheduleCodeDetailPK getPrimaryKey() {
121        if(_primaryKey == null) {
122            _primaryKey = new HarmonizedTariffScheduleCodeDetailPK(entityId);
123        }
124        
125        return _primaryKey;
126    }
127    
128    private void clearHashAndString() {
129        _hashCode = null;
130        _stringValue = null;
131    }
132    
133    @Override
134    public int hashCode() {
135        if(_hashCode == null) {
136            int hashCode = 17;
137            
138            hashCode = 37 * hashCode + ((entityId != null) ? entityId.hashCode() : 0);
139            
140            hashCode = 37 * hashCode + ((harmonizedTariffScheduleCodePK != null) ? harmonizedTariffScheduleCodePK.hashCode() : 0);
141            hashCode = 37 * hashCode + ((countryGeoCodePK != null) ? countryGeoCodePK.hashCode() : 0);
142            hashCode = 37 * hashCode + ((harmonizedTariffScheduleCodeName != null) ? harmonizedTariffScheduleCodeName.hashCode() : 0);
143            hashCode = 37 * hashCode + ((firstHarmonizedTariffScheduleCodeUnitPK != null) ? firstHarmonizedTariffScheduleCodeUnitPK.hashCode() : 0);
144            hashCode = 37 * hashCode + ((secondHarmonizedTariffScheduleCodeUnitPK != null) ? secondHarmonizedTariffScheduleCodeUnitPK.hashCode() : 0);
145            hashCode = 37 * hashCode + ((isDefault != null) ? isDefault.hashCode() : 0);
146            hashCode = 37 * hashCode + ((sortOrder != null) ? sortOrder.hashCode() : 0);
147            hashCode = 37 * hashCode + ((fromTime != null) ? fromTime.hashCode() : 0);
148            hashCode = 37 * hashCode + ((thruTime != null) ? thruTime.hashCode() : 0);
149            
150            _hashCode = hashCode;
151        }
152        
153        return _hashCode;
154    }
155    
156    @Override
157    public String toString() {
158        if(_stringValue == null) {
159            _stringValue = "{" + 
160                    "entityId=" + getEntityId() +
161                    ", harmonizedTariffScheduleCodePK=" + getHarmonizedTariffScheduleCodePK() +
162                    ", countryGeoCodePK=" + getCountryGeoCodePK() +
163                    ", harmonizedTariffScheduleCodeName=" + getHarmonizedTariffScheduleCodeName() +
164                    ", firstHarmonizedTariffScheduleCodeUnitPK=" + getFirstHarmonizedTariffScheduleCodeUnitPK() +
165                    ", secondHarmonizedTariffScheduleCodeUnitPK=" + getSecondHarmonizedTariffScheduleCodeUnitPK() +
166                    ", isDefault=" + getIsDefault() +
167                    ", sortOrder=" + getSortOrder() +
168                    ", fromTime=" + getFromTime() +
169                    ", thruTime=" + getThruTime() +
170                    "}";
171        }
172        return _stringValue;
173    }
174    
175    @Override
176    public boolean equals(Object other) {
177        if(this == other)
178            return true;
179        
180        if(!hasIdentity())
181            return false;
182        
183        if(other instanceof  HarmonizedTariffScheduleCodeDetailValue that) {
184            if(!that.hasIdentity())
185                return false;
186            
187            Long thisEntityId = getEntityId();
188            Long thatEntityId = that.getEntityId();
189            
190            boolean objectsEqual = thisEntityId.equals(thatEntityId);
191            if(objectsEqual)
192                objectsEqual = isIdentical(that);
193            
194            return objectsEqual;
195        } else {
196            return false;
197        }
198    }
199    
200    public boolean isIdentical(Object other) {
201        if(other instanceof HarmonizedTariffScheduleCodeDetailValue that) {
202            boolean objectsEqual = true;
203            
204            
205            if(objectsEqual) {
206                HarmonizedTariffScheduleCodePK thisHarmonizedTariffScheduleCodePK = getHarmonizedTariffScheduleCodePK();
207                HarmonizedTariffScheduleCodePK thatHarmonizedTariffScheduleCodePK = that.getHarmonizedTariffScheduleCodePK();
208                
209                if(thisHarmonizedTariffScheduleCodePK == null) {
210                    objectsEqual = objectsEqual && (thatHarmonizedTariffScheduleCodePK == null);
211                } else {
212                    objectsEqual = objectsEqual && thisHarmonizedTariffScheduleCodePK.equals(thatHarmonizedTariffScheduleCodePK);
213                }
214            }
215            
216            if(objectsEqual) {
217                GeoCodePK thisCountryGeoCodePK = getCountryGeoCodePK();
218                GeoCodePK thatCountryGeoCodePK = that.getCountryGeoCodePK();
219                
220                if(thisCountryGeoCodePK == null) {
221                    objectsEqual = objectsEqual && (thatCountryGeoCodePK == null);
222                } else {
223                    objectsEqual = objectsEqual && thisCountryGeoCodePK.equals(thatCountryGeoCodePK);
224                }
225            }
226            
227            if(objectsEqual) {
228                String thisHarmonizedTariffScheduleCodeName = getHarmonizedTariffScheduleCodeName();
229                String thatHarmonizedTariffScheduleCodeName = that.getHarmonizedTariffScheduleCodeName();
230                
231                if(thisHarmonizedTariffScheduleCodeName == null) {
232                    objectsEqual = objectsEqual && (thatHarmonizedTariffScheduleCodeName == null);
233                } else {
234                    objectsEqual = objectsEqual && thisHarmonizedTariffScheduleCodeName.equals(thatHarmonizedTariffScheduleCodeName);
235                }
236            }
237            
238            if(objectsEqual) {
239                HarmonizedTariffScheduleCodeUnitPK thisFirstHarmonizedTariffScheduleCodeUnitPK = getFirstHarmonizedTariffScheduleCodeUnitPK();
240                HarmonizedTariffScheduleCodeUnitPK thatFirstHarmonizedTariffScheduleCodeUnitPK = that.getFirstHarmonizedTariffScheduleCodeUnitPK();
241                
242                if(thisFirstHarmonizedTariffScheduleCodeUnitPK == null) {
243                    objectsEqual = objectsEqual && (thatFirstHarmonizedTariffScheduleCodeUnitPK == null);
244                } else {
245                    objectsEqual = objectsEqual && thisFirstHarmonizedTariffScheduleCodeUnitPK.equals(thatFirstHarmonizedTariffScheduleCodeUnitPK);
246                }
247            }
248            
249            if(objectsEqual) {
250                HarmonizedTariffScheduleCodeUnitPK thisSecondHarmonizedTariffScheduleCodeUnitPK = getSecondHarmonizedTariffScheduleCodeUnitPK();
251                HarmonizedTariffScheduleCodeUnitPK thatSecondHarmonizedTariffScheduleCodeUnitPK = that.getSecondHarmonizedTariffScheduleCodeUnitPK();
252                
253                if(thisSecondHarmonizedTariffScheduleCodeUnitPK == null) {
254                    objectsEqual = objectsEqual && (thatSecondHarmonizedTariffScheduleCodeUnitPK == null);
255                } else {
256                    objectsEqual = objectsEqual && thisSecondHarmonizedTariffScheduleCodeUnitPK.equals(thatSecondHarmonizedTariffScheduleCodeUnitPK);
257                }
258            }
259            
260            if(objectsEqual) {
261                Boolean thisIsDefault = getIsDefault();
262                Boolean thatIsDefault = that.getIsDefault();
263                
264                if(thisIsDefault == null) {
265                    objectsEqual = objectsEqual && (thatIsDefault == null);
266                } else {
267                    objectsEqual = objectsEqual && thisIsDefault.equals(thatIsDefault);
268                }
269            }
270            
271            if(objectsEqual) {
272                Integer thisSortOrder = getSortOrder();
273                Integer thatSortOrder = that.getSortOrder();
274                
275                if(thisSortOrder == null) {
276                    objectsEqual = objectsEqual && (thatSortOrder == null);
277                } else {
278                    objectsEqual = objectsEqual && thisSortOrder.equals(thatSortOrder);
279                }
280            }
281            
282            if(objectsEqual) {
283                Long thisFromTime = getFromTime();
284                Long thatFromTime = that.getFromTime();
285                
286                if(thisFromTime == null) {
287                    objectsEqual = objectsEqual && (thatFromTime == null);
288                } else {
289                    objectsEqual = objectsEqual && thisFromTime.equals(thatFromTime);
290                }
291            }
292            
293            if(objectsEqual) {
294                Long thisThruTime = getThruTime();
295                Long thatThruTime = that.getThruTime();
296                
297                if(thisThruTime == null) {
298                    objectsEqual = objectsEqual && (thatThruTime == null);
299                } else {
300                    objectsEqual = objectsEqual && thisThruTime.equals(thatThruTime);
301                }
302            }
303            
304            return objectsEqual;
305        } else {
306            return false;
307        }
308    }
309    
310    @Override
311    public boolean hasBeenModified() {
312        return harmonizedTariffScheduleCodePKHasBeenModified || countryGeoCodePKHasBeenModified || harmonizedTariffScheduleCodeNameHasBeenModified || firstHarmonizedTariffScheduleCodeUnitPKHasBeenModified || secondHarmonizedTariffScheduleCodeUnitPKHasBeenModified || isDefaultHasBeenModified || sortOrderHasBeenModified || fromTimeHasBeenModified || thruTimeHasBeenModified;
313    }
314    
315    @Override
316    public void clearHasBeenModified() {
317        harmonizedTariffScheduleCodePKHasBeenModified = false;
318        countryGeoCodePKHasBeenModified = false;
319        harmonizedTariffScheduleCodeNameHasBeenModified = false;
320        firstHarmonizedTariffScheduleCodeUnitPKHasBeenModified = false;
321        secondHarmonizedTariffScheduleCodeUnitPKHasBeenModified = false;
322        isDefaultHasBeenModified = false;
323        sortOrderHasBeenModified = false;
324        fromTimeHasBeenModified = false;
325        thruTimeHasBeenModified = false;
326    }
327    
328    public HarmonizedTariffScheduleCodePK getHarmonizedTariffScheduleCodePK() {
329        return harmonizedTariffScheduleCodePK;
330    }
331    
332    public void setHarmonizedTariffScheduleCodePK(HarmonizedTariffScheduleCodePK harmonizedTariffScheduleCodePK)
333            throws PersistenceNotNullException {
334        checkForNull(harmonizedTariffScheduleCodePK);
335        
336        boolean update = true;
337        
338        if(this.harmonizedTariffScheduleCodePK != null) {
339            if(this.harmonizedTariffScheduleCodePK.equals(harmonizedTariffScheduleCodePK)) {
340                update = false;
341            }
342        } else if(harmonizedTariffScheduleCodePK == null) {
343            update = false;
344        }
345        
346        if(update) {
347            this.harmonizedTariffScheduleCodePK = harmonizedTariffScheduleCodePK;
348            harmonizedTariffScheduleCodePKHasBeenModified = true;
349            clearHashAndString();
350        }
351    }
352    
353    public boolean getHarmonizedTariffScheduleCodePKHasBeenModified() {
354        return harmonizedTariffScheduleCodePKHasBeenModified;
355    }
356    
357    public GeoCodePK getCountryGeoCodePK() {
358        return countryGeoCodePK;
359    }
360    
361    public void setCountryGeoCodePK(GeoCodePK countryGeoCodePK)
362            throws PersistenceNotNullException {
363        checkForNull(countryGeoCodePK);
364        
365        boolean update = true;
366        
367        if(this.countryGeoCodePK != null) {
368            if(this.countryGeoCodePK.equals(countryGeoCodePK)) {
369                update = false;
370            }
371        } else if(countryGeoCodePK == null) {
372            update = false;
373        }
374        
375        if(update) {
376            this.countryGeoCodePK = countryGeoCodePK;
377            countryGeoCodePKHasBeenModified = true;
378            clearHashAndString();
379        }
380    }
381    
382    public boolean getCountryGeoCodePKHasBeenModified() {
383        return countryGeoCodePKHasBeenModified;
384    }
385    
386    public String getHarmonizedTariffScheduleCodeName() {
387        return harmonizedTariffScheduleCodeName;
388    }
389    
390    public void setHarmonizedTariffScheduleCodeName(String harmonizedTariffScheduleCodeName)
391            throws PersistenceNotNullException {
392        checkForNull(harmonizedTariffScheduleCodeName);
393        
394        boolean update = true;
395        
396        if(this.harmonizedTariffScheduleCodeName != null) {
397            if(this.harmonizedTariffScheduleCodeName.equals(harmonizedTariffScheduleCodeName)) {
398                update = false;
399            }
400        } else if(harmonizedTariffScheduleCodeName == null) {
401            update = false;
402        }
403        
404        if(update) {
405            this.harmonizedTariffScheduleCodeName = harmonizedTariffScheduleCodeName;
406            harmonizedTariffScheduleCodeNameHasBeenModified = true;
407            clearHashAndString();
408        }
409    }
410    
411    public boolean getHarmonizedTariffScheduleCodeNameHasBeenModified() {
412        return harmonizedTariffScheduleCodeNameHasBeenModified;
413    }
414    
415    public HarmonizedTariffScheduleCodeUnitPK getFirstHarmonizedTariffScheduleCodeUnitPK() {
416        return firstHarmonizedTariffScheduleCodeUnitPK;
417    }
418    
419    public void setFirstHarmonizedTariffScheduleCodeUnitPK(HarmonizedTariffScheduleCodeUnitPK firstHarmonizedTariffScheduleCodeUnitPK) {
420        boolean update = true;
421        
422        if(this.firstHarmonizedTariffScheduleCodeUnitPK != null) {
423            if(this.firstHarmonizedTariffScheduleCodeUnitPK.equals(firstHarmonizedTariffScheduleCodeUnitPK)) {
424                update = false;
425            }
426        } else if(firstHarmonizedTariffScheduleCodeUnitPK == null) {
427            update = false;
428        }
429        
430        if(update) {
431            this.firstHarmonizedTariffScheduleCodeUnitPK = firstHarmonizedTariffScheduleCodeUnitPK;
432            firstHarmonizedTariffScheduleCodeUnitPKHasBeenModified = true;
433            clearHashAndString();
434        }
435    }
436    
437    public boolean getFirstHarmonizedTariffScheduleCodeUnitPKHasBeenModified() {
438        return firstHarmonizedTariffScheduleCodeUnitPKHasBeenModified;
439    }
440    
441    public HarmonizedTariffScheduleCodeUnitPK getSecondHarmonizedTariffScheduleCodeUnitPK() {
442        return secondHarmonizedTariffScheduleCodeUnitPK;
443    }
444    
445    public void setSecondHarmonizedTariffScheduleCodeUnitPK(HarmonizedTariffScheduleCodeUnitPK secondHarmonizedTariffScheduleCodeUnitPK) {
446        boolean update = true;
447        
448        if(this.secondHarmonizedTariffScheduleCodeUnitPK != null) {
449            if(this.secondHarmonizedTariffScheduleCodeUnitPK.equals(secondHarmonizedTariffScheduleCodeUnitPK)) {
450                update = false;
451            }
452        } else if(secondHarmonizedTariffScheduleCodeUnitPK == null) {
453            update = false;
454        }
455        
456        if(update) {
457            this.secondHarmonizedTariffScheduleCodeUnitPK = secondHarmonizedTariffScheduleCodeUnitPK;
458            secondHarmonizedTariffScheduleCodeUnitPKHasBeenModified = true;
459            clearHashAndString();
460        }
461    }
462    
463    public boolean getSecondHarmonizedTariffScheduleCodeUnitPKHasBeenModified() {
464        return secondHarmonizedTariffScheduleCodeUnitPKHasBeenModified;
465    }
466    
467    public Boolean getIsDefault() {
468        return isDefault;
469    }
470    
471    public void setIsDefault(Boolean isDefault)
472            throws PersistenceNotNullException {
473        checkForNull(isDefault);
474        
475        boolean update = true;
476        
477        if(this.isDefault != null) {
478            if(this.isDefault.equals(isDefault)) {
479                update = false;
480            }
481        } else if(isDefault == null) {
482            update = false;
483        }
484        
485        if(update) {
486            this.isDefault = isDefault;
487            isDefaultHasBeenModified = true;
488            clearHashAndString();
489        }
490    }
491    
492    public boolean getIsDefaultHasBeenModified() {
493        return isDefaultHasBeenModified;
494    }
495    
496    public Integer getSortOrder() {
497        return sortOrder;
498    }
499    
500    public void setSortOrder(Integer sortOrder)
501            throws PersistenceNotNullException {
502        checkForNull(sortOrder);
503        
504        boolean update = true;
505        
506        if(this.sortOrder != null) {
507            if(this.sortOrder.equals(sortOrder)) {
508                update = false;
509            }
510        } else if(sortOrder == null) {
511            update = false;
512        }
513        
514        if(update) {
515            this.sortOrder = sortOrder;
516            sortOrderHasBeenModified = true;
517            clearHashAndString();
518        }
519    }
520    
521    public boolean getSortOrderHasBeenModified() {
522        return sortOrderHasBeenModified;
523    }
524    
525    public Long getFromTime() {
526        return fromTime;
527    }
528    
529    public void setFromTime(Long fromTime)
530            throws PersistenceNotNullException {
531        checkForNull(fromTime);
532        
533        boolean update = true;
534        
535        if(this.fromTime != null) {
536            if(this.fromTime.equals(fromTime)) {
537                update = false;
538            }
539        } else if(fromTime == null) {
540            update = false;
541        }
542        
543        if(update) {
544            this.fromTime = fromTime;
545            fromTimeHasBeenModified = true;
546            clearHashAndString();
547        }
548    }
549    
550    public boolean getFromTimeHasBeenModified() {
551        return fromTimeHasBeenModified;
552    }
553    
554    public Long getThruTime() {
555        return thruTime;
556    }
557    
558    public void setThruTime(Long thruTime)
559            throws PersistenceNotNullException {
560        checkForNull(thruTime);
561        
562        boolean update = true;
563        
564        if(this.thruTime != null) {
565            if(this.thruTime.equals(thruTime)) {
566                update = false;
567            }
568        } else if(thruTime == null) {
569            update = false;
570        }
571        
572        if(update) {
573            this.thruTime = thruTime;
574            thruTimeHasBeenModified = true;
575            clearHashAndString();
576        }
577    }
578    
579    public boolean getThruTimeHasBeenModified() {
580        return thruTimeHasBeenModified;
581    }
582    
583}