001// --------------------------------------------------------------------------------
002// Copyright 2002-2026 Echo Three, LLC
003//
004// Licensed under the Apache License, Version 2.0 (the "License");
005// you may not use this file except in compliance with the License.
006// You may obtain a copy of the License at
007//
008//     http://www.apache.org/licenses/LICENSE-2.0
009//
010// Unless required by applicable law or agreed to in writing, software
011// distributed under the License is distributed on an "AS IS" BASIS,
012// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013// See the License for the specific language governing permissions and
014// limitations under the License.
015// --------------------------------------------------------------------------------
016// Generated File -- DO NOT EDIT BY HAND
017// --------------------------------------------------------------------------------
018
019/**
020 * TrainingClassDetailValue.java
021 */
022
023package com.echothree.model.data.training.server.value;
024
025import com.echothree.model.data.training.common.pk.TrainingClassDetailPK;
026
027import com.echothree.model.data.training.server.factory.TrainingClassDetailFactory;
028
029import com.echothree.model.data.training.common.pk.TrainingClassPK;
030import com.echothree.model.data.workeffort.common.pk.WorkEffortScopePK;
031
032import com.echothree.util.common.exception.PersistenceCloneException;
033import com.echothree.util.common.exception.PersistenceNotNullException;
034
035import com.echothree.util.server.persistence.BaseValue;
036
037import java.io.Serializable;
038
039import javax.annotation.Nonnull;
040import javax.annotation.Nullable;
041
042public class TrainingClassDetailValue
043        extends BaseValue<TrainingClassDetailPK>
044        implements Cloneable, Serializable {
045    
046    private TrainingClassPK trainingClassPK;
047    private boolean trainingClassPKHasBeenModified = false;
048    private String trainingClassName;
049    private boolean trainingClassNameHasBeenModified = false;
050    private Long estimatedReadingTime;
051    private boolean estimatedReadingTimeHasBeenModified = false;
052    private Long readingTimeAllowed;
053    private boolean readingTimeAllowedHasBeenModified = false;
054    private Long estimatedTestingTime;
055    private boolean estimatedTestingTimeHasBeenModified = false;
056    private Long testingTimeAllowed;
057    private boolean testingTimeAllowedHasBeenModified = false;
058    private Long requiredCompletionTime;
059    private boolean requiredCompletionTimeHasBeenModified = false;
060    private WorkEffortScopePK workEffortScopePK;
061    private boolean workEffortScopePKHasBeenModified = false;
062    private Integer defaultPercentageToPass;
063    private boolean defaultPercentageToPassHasBeenModified = false;
064    private Integer overallQuestionCount;
065    private boolean overallQuestionCountHasBeenModified = false;
066    private Long testingValidityTime;
067    private boolean testingValidityTimeHasBeenModified = false;
068    private Long expiredRetentionTime;
069    private boolean expiredRetentionTimeHasBeenModified = false;
070    private Boolean alwaysReassignOnExpiration;
071    private boolean alwaysReassignOnExpirationHasBeenModified = false;
072    private Boolean isDefault;
073    private boolean isDefaultHasBeenModified = false;
074    private Integer sortOrder;
075    private boolean sortOrderHasBeenModified = false;
076    private Long fromTime;
077    private boolean fromTimeHasBeenModified = false;
078    private Long thruTime;
079    private boolean thruTimeHasBeenModified = false;
080    
081    private transient Integer _hashCode = null;
082    private transient String _stringValue = null;
083    
084    private void constructFields(TrainingClassPK trainingClassPK, String trainingClassName, Long estimatedReadingTime, Long readingTimeAllowed, Long estimatedTestingTime, Long testingTimeAllowed, Long requiredCompletionTime, WorkEffortScopePK workEffortScopePK, Integer defaultPercentageToPass, Integer overallQuestionCount, Long testingValidityTime, Long expiredRetentionTime, Boolean alwaysReassignOnExpiration, Boolean isDefault, Integer sortOrder, Long fromTime, Long thruTime)
085            throws PersistenceNotNullException {
086        checkForNull(trainingClassPK);
087        this.trainingClassPK = trainingClassPK;
088        checkForNull(trainingClassName);
089        this.trainingClassName = trainingClassName;
090        this.estimatedReadingTime = estimatedReadingTime;
091        this.readingTimeAllowed = readingTimeAllowed;
092        this.estimatedTestingTime = estimatedTestingTime;
093        this.testingTimeAllowed = testingTimeAllowed;
094        this.requiredCompletionTime = requiredCompletionTime;
095        this.workEffortScopePK = workEffortScopePK;
096        this.defaultPercentageToPass = defaultPercentageToPass;
097        this.overallQuestionCount = overallQuestionCount;
098        this.testingValidityTime = testingValidityTime;
099        this.expiredRetentionTime = expiredRetentionTime;
100        checkForNull(alwaysReassignOnExpiration);
101        this.alwaysReassignOnExpiration = alwaysReassignOnExpiration;
102        checkForNull(isDefault);
103        this.isDefault = isDefault;
104        checkForNull(sortOrder);
105        this.sortOrder = sortOrder;
106        checkForNull(fromTime);
107        this.fromTime = fromTime;
108        checkForNull(thruTime);
109        this.thruTime = thruTime;
110    }
111    
112    /** Creates a new instance of TrainingClassDetailValue */
113    public TrainingClassDetailValue(TrainingClassDetailPK trainingClassDetailPK, TrainingClassPK trainingClassPK, String trainingClassName, Long estimatedReadingTime, Long readingTimeAllowed, Long estimatedTestingTime, Long testingTimeAllowed, Long requiredCompletionTime, WorkEffortScopePK workEffortScopePK, Integer defaultPercentageToPass, Integer overallQuestionCount, Long testingValidityTime, Long expiredRetentionTime, Boolean alwaysReassignOnExpiration, Boolean isDefault, Integer sortOrder, Long fromTime, Long thruTime)
114            throws PersistenceNotNullException {
115        super(trainingClassDetailPK);
116        constructFields(trainingClassPK, trainingClassName, estimatedReadingTime, readingTimeAllowed, estimatedTestingTime, testingTimeAllowed, requiredCompletionTime, workEffortScopePK, defaultPercentageToPass, overallQuestionCount, testingValidityTime, expiredRetentionTime, alwaysReassignOnExpiration, isDefault, sortOrder, fromTime, thruTime);
117    }
118    
119    /** Creates a new instance of TrainingClassDetailValue */
120    public TrainingClassDetailValue(TrainingClassPK trainingClassPK, String trainingClassName, Long estimatedReadingTime, Long readingTimeAllowed, Long estimatedTestingTime, Long testingTimeAllowed, Long requiredCompletionTime, WorkEffortScopePK workEffortScopePK, Integer defaultPercentageToPass, Integer overallQuestionCount, Long testingValidityTime, Long expiredRetentionTime, Boolean alwaysReassignOnExpiration, Boolean isDefault, Integer sortOrder, Long fromTime, Long thruTime)
121            throws PersistenceNotNullException {
122        super();
123        constructFields(trainingClassPK, trainingClassName, estimatedReadingTime, readingTimeAllowed, estimatedTestingTime, testingTimeAllowed, requiredCompletionTime, workEffortScopePK, defaultPercentageToPass, overallQuestionCount, testingValidityTime, expiredRetentionTime, alwaysReassignOnExpiration, isDefault, sortOrder, fromTime, thruTime);
124    }
125    
126    @Override
127    @Nonnull
128    public TrainingClassDetailFactory getBaseFactoryInstance() {
129        return TrainingClassDetailFactory.getInstance();
130    }
131    
132    @Override
133    @Nonnull
134    public TrainingClassDetailValue clone() {
135        Object result;
136        
137        try {
138            result = super.clone();
139        } catch (CloneNotSupportedException cnse) {
140            // This shouldn't happen, fail when it does.
141            throw new PersistenceCloneException(cnse);
142        }
143        
144        return (TrainingClassDetailValue)result;
145    }
146    
147    @Override
148    @Nonnull
149    public TrainingClassDetailPK getPrimaryKey() {
150        if(_primaryKey == null) {
151            _primaryKey = new TrainingClassDetailPK(entityId);
152        }
153        
154        return _primaryKey;
155    }
156    
157    private void clearHashAndString() {
158        _hashCode = null;
159        _stringValue = null;
160    }
161    
162    @Override
163    public int hashCode() {
164        if(_hashCode == null) {
165            int hashCode = 17;
166            
167            hashCode = 37 * hashCode + ((entityId != null) ? entityId.hashCode() : 0);
168            
169            hashCode = 37 * hashCode + ((trainingClassPK != null) ? trainingClassPK.hashCode() : 0);
170            hashCode = 37 * hashCode + ((trainingClassName != null) ? trainingClassName.hashCode() : 0);
171            hashCode = 37 * hashCode + ((estimatedReadingTime != null) ? estimatedReadingTime.hashCode() : 0);
172            hashCode = 37 * hashCode + ((readingTimeAllowed != null) ? readingTimeAllowed.hashCode() : 0);
173            hashCode = 37 * hashCode + ((estimatedTestingTime != null) ? estimatedTestingTime.hashCode() : 0);
174            hashCode = 37 * hashCode + ((testingTimeAllowed != null) ? testingTimeAllowed.hashCode() : 0);
175            hashCode = 37 * hashCode + ((requiredCompletionTime != null) ? requiredCompletionTime.hashCode() : 0);
176            hashCode = 37 * hashCode + ((workEffortScopePK != null) ? workEffortScopePK.hashCode() : 0);
177            hashCode = 37 * hashCode + ((defaultPercentageToPass != null) ? defaultPercentageToPass.hashCode() : 0);
178            hashCode = 37 * hashCode + ((overallQuestionCount != null) ? overallQuestionCount.hashCode() : 0);
179            hashCode = 37 * hashCode + ((testingValidityTime != null) ? testingValidityTime.hashCode() : 0);
180            hashCode = 37 * hashCode + ((expiredRetentionTime != null) ? expiredRetentionTime.hashCode() : 0);
181            hashCode = 37 * hashCode + ((alwaysReassignOnExpiration != null) ? alwaysReassignOnExpiration.hashCode() : 0);
182            hashCode = 37 * hashCode + ((isDefault != null) ? isDefault.hashCode() : 0);
183            hashCode = 37 * hashCode + ((sortOrder != null) ? sortOrder.hashCode() : 0);
184            hashCode = 37 * hashCode + ((fromTime != null) ? fromTime.hashCode() : 0);
185            hashCode = 37 * hashCode + ((thruTime != null) ? thruTime.hashCode() : 0);
186            
187            _hashCode = hashCode;
188        }
189        
190        return _hashCode;
191    }
192    
193    @Override
194    @Nonnull
195    public String toString() {
196        if(_stringValue == null) {
197            _stringValue = "{" + 
198                    "entityId=" + getEntityId() +
199                    ", trainingClassPK=" + getTrainingClassPK() +
200                    ", trainingClassName=" + getTrainingClassName() +
201                    ", estimatedReadingTime=" + getEstimatedReadingTime() +
202                    ", readingTimeAllowed=" + getReadingTimeAllowed() +
203                    ", estimatedTestingTime=" + getEstimatedTestingTime() +
204                    ", testingTimeAllowed=" + getTestingTimeAllowed() +
205                    ", requiredCompletionTime=" + getRequiredCompletionTime() +
206                    ", workEffortScopePK=" + getWorkEffortScopePK() +
207                    ", defaultPercentageToPass=" + getDefaultPercentageToPass() +
208                    ", overallQuestionCount=" + getOverallQuestionCount() +
209                    ", testingValidityTime=" + getTestingValidityTime() +
210                    ", expiredRetentionTime=" + getExpiredRetentionTime() +
211                    ", alwaysReassignOnExpiration=" + getAlwaysReassignOnExpiration() +
212                    ", isDefault=" + getIsDefault() +
213                    ", sortOrder=" + getSortOrder() +
214                    ", fromTime=" + getFromTime() +
215                    ", thruTime=" + getThruTime() +
216                    "}";
217        }
218        return _stringValue;
219    }
220    
221    @Override
222    public boolean equals(Object other) {
223        if(this == other)
224            return true;
225        
226        if(!hasIdentity())
227            return false;
228        
229        if(other instanceof  TrainingClassDetailValue that) {
230            if(!that.hasIdentity())
231                return false;
232            
233            Long thisEntityId = getEntityId();
234            Long thatEntityId = that.getEntityId();
235            
236            boolean objectsEqual = thisEntityId.equals(thatEntityId);
237            if(objectsEqual)
238                objectsEqual = isIdentical(that);
239            
240            return objectsEqual;
241        } else {
242            return false;
243        }
244    }
245    
246    public boolean isIdentical(Object other) {
247        if(other instanceof TrainingClassDetailValue that) {
248            boolean objectsEqual = true;
249            
250            
251            if(objectsEqual) {
252                TrainingClassPK thisTrainingClassPK = getTrainingClassPK();
253                TrainingClassPK thatTrainingClassPK = that.getTrainingClassPK();
254                
255                if(thisTrainingClassPK == null) {
256                    objectsEqual = objectsEqual && (thatTrainingClassPK == null);
257                } else {
258                    objectsEqual = objectsEqual && thisTrainingClassPK.equals(thatTrainingClassPK);
259                }
260            }
261            
262            if(objectsEqual) {
263                String thisTrainingClassName = getTrainingClassName();
264                String thatTrainingClassName = that.getTrainingClassName();
265                
266                if(thisTrainingClassName == null) {
267                    objectsEqual = objectsEqual && (thatTrainingClassName == null);
268                } else {
269                    objectsEqual = objectsEqual && thisTrainingClassName.equals(thatTrainingClassName);
270                }
271            }
272            
273            if(objectsEqual) {
274                Long thisEstimatedReadingTime = getEstimatedReadingTime();
275                Long thatEstimatedReadingTime = that.getEstimatedReadingTime();
276                
277                if(thisEstimatedReadingTime == null) {
278                    objectsEqual = objectsEqual && (thatEstimatedReadingTime == null);
279                } else {
280                    objectsEqual = objectsEqual && thisEstimatedReadingTime.equals(thatEstimatedReadingTime);
281                }
282            }
283            
284            if(objectsEqual) {
285                Long thisReadingTimeAllowed = getReadingTimeAllowed();
286                Long thatReadingTimeAllowed = that.getReadingTimeAllowed();
287                
288                if(thisReadingTimeAllowed == null) {
289                    objectsEqual = objectsEqual && (thatReadingTimeAllowed == null);
290                } else {
291                    objectsEqual = objectsEqual && thisReadingTimeAllowed.equals(thatReadingTimeAllowed);
292                }
293            }
294            
295            if(objectsEqual) {
296                Long thisEstimatedTestingTime = getEstimatedTestingTime();
297                Long thatEstimatedTestingTime = that.getEstimatedTestingTime();
298                
299                if(thisEstimatedTestingTime == null) {
300                    objectsEqual = objectsEqual && (thatEstimatedTestingTime == null);
301                } else {
302                    objectsEqual = objectsEqual && thisEstimatedTestingTime.equals(thatEstimatedTestingTime);
303                }
304            }
305            
306            if(objectsEqual) {
307                Long thisTestingTimeAllowed = getTestingTimeAllowed();
308                Long thatTestingTimeAllowed = that.getTestingTimeAllowed();
309                
310                if(thisTestingTimeAllowed == null) {
311                    objectsEqual = objectsEqual && (thatTestingTimeAllowed == null);
312                } else {
313                    objectsEqual = objectsEqual && thisTestingTimeAllowed.equals(thatTestingTimeAllowed);
314                }
315            }
316            
317            if(objectsEqual) {
318                Long thisRequiredCompletionTime = getRequiredCompletionTime();
319                Long thatRequiredCompletionTime = that.getRequiredCompletionTime();
320                
321                if(thisRequiredCompletionTime == null) {
322                    objectsEqual = objectsEqual && (thatRequiredCompletionTime == null);
323                } else {
324                    objectsEqual = objectsEqual && thisRequiredCompletionTime.equals(thatRequiredCompletionTime);
325                }
326            }
327            
328            if(objectsEqual) {
329                WorkEffortScopePK thisWorkEffortScopePK = getWorkEffortScopePK();
330                WorkEffortScopePK thatWorkEffortScopePK = that.getWorkEffortScopePK();
331                
332                if(thisWorkEffortScopePK == null) {
333                    objectsEqual = objectsEqual && (thatWorkEffortScopePK == null);
334                } else {
335                    objectsEqual = objectsEqual && thisWorkEffortScopePK.equals(thatWorkEffortScopePK);
336                }
337            }
338            
339            if(objectsEqual) {
340                Integer thisDefaultPercentageToPass = getDefaultPercentageToPass();
341                Integer thatDefaultPercentageToPass = that.getDefaultPercentageToPass();
342                
343                if(thisDefaultPercentageToPass == null) {
344                    objectsEqual = objectsEqual && (thatDefaultPercentageToPass == null);
345                } else {
346                    objectsEqual = objectsEqual && thisDefaultPercentageToPass.equals(thatDefaultPercentageToPass);
347                }
348            }
349            
350            if(objectsEqual) {
351                Integer thisOverallQuestionCount = getOverallQuestionCount();
352                Integer thatOverallQuestionCount = that.getOverallQuestionCount();
353                
354                if(thisOverallQuestionCount == null) {
355                    objectsEqual = objectsEqual && (thatOverallQuestionCount == null);
356                } else {
357                    objectsEqual = objectsEqual && thisOverallQuestionCount.equals(thatOverallQuestionCount);
358                }
359            }
360            
361            if(objectsEqual) {
362                Long thisTestingValidityTime = getTestingValidityTime();
363                Long thatTestingValidityTime = that.getTestingValidityTime();
364                
365                if(thisTestingValidityTime == null) {
366                    objectsEqual = objectsEqual && (thatTestingValidityTime == null);
367                } else {
368                    objectsEqual = objectsEqual && thisTestingValidityTime.equals(thatTestingValidityTime);
369                }
370            }
371            
372            if(objectsEqual) {
373                Long thisExpiredRetentionTime = getExpiredRetentionTime();
374                Long thatExpiredRetentionTime = that.getExpiredRetentionTime();
375                
376                if(thisExpiredRetentionTime == null) {
377                    objectsEqual = objectsEqual && (thatExpiredRetentionTime == null);
378                } else {
379                    objectsEqual = objectsEqual && thisExpiredRetentionTime.equals(thatExpiredRetentionTime);
380                }
381            }
382            
383            if(objectsEqual) {
384                Boolean thisAlwaysReassignOnExpiration = getAlwaysReassignOnExpiration();
385                Boolean thatAlwaysReassignOnExpiration = that.getAlwaysReassignOnExpiration();
386                
387                if(thisAlwaysReassignOnExpiration == null) {
388                    objectsEqual = objectsEqual && (thatAlwaysReassignOnExpiration == null);
389                } else {
390                    objectsEqual = objectsEqual && thisAlwaysReassignOnExpiration.equals(thatAlwaysReassignOnExpiration);
391                }
392            }
393            
394            if(objectsEqual) {
395                Boolean thisIsDefault = getIsDefault();
396                Boolean thatIsDefault = that.getIsDefault();
397                
398                if(thisIsDefault == null) {
399                    objectsEqual = objectsEqual && (thatIsDefault == null);
400                } else {
401                    objectsEqual = objectsEqual && thisIsDefault.equals(thatIsDefault);
402                }
403            }
404            
405            if(objectsEqual) {
406                Integer thisSortOrder = getSortOrder();
407                Integer thatSortOrder = that.getSortOrder();
408                
409                if(thisSortOrder == null) {
410                    objectsEqual = objectsEqual && (thatSortOrder == null);
411                } else {
412                    objectsEqual = objectsEqual && thisSortOrder.equals(thatSortOrder);
413                }
414            }
415            
416            if(objectsEqual) {
417                Long thisFromTime = getFromTime();
418                Long thatFromTime = that.getFromTime();
419                
420                if(thisFromTime == null) {
421                    objectsEqual = objectsEqual && (thatFromTime == null);
422                } else {
423                    objectsEqual = objectsEqual && thisFromTime.equals(thatFromTime);
424                }
425            }
426            
427            if(objectsEqual) {
428                Long thisThruTime = getThruTime();
429                Long thatThruTime = that.getThruTime();
430                
431                if(thisThruTime == null) {
432                    objectsEqual = objectsEqual && (thatThruTime == null);
433                } else {
434                    objectsEqual = objectsEqual && thisThruTime.equals(thatThruTime);
435                }
436            }
437            
438            return objectsEqual;
439        } else {
440            return false;
441        }
442    }
443    
444    @Override
445    public boolean hasBeenModified() {
446        return trainingClassPKHasBeenModified || trainingClassNameHasBeenModified || estimatedReadingTimeHasBeenModified || readingTimeAllowedHasBeenModified || estimatedTestingTimeHasBeenModified || testingTimeAllowedHasBeenModified || requiredCompletionTimeHasBeenModified || workEffortScopePKHasBeenModified || defaultPercentageToPassHasBeenModified || overallQuestionCountHasBeenModified || testingValidityTimeHasBeenModified || expiredRetentionTimeHasBeenModified || alwaysReassignOnExpirationHasBeenModified || isDefaultHasBeenModified || sortOrderHasBeenModified || fromTimeHasBeenModified || thruTimeHasBeenModified;
447    }
448    
449    @Override
450    public void clearHasBeenModified() {
451        trainingClassPKHasBeenModified = false;
452        trainingClassNameHasBeenModified = false;
453        estimatedReadingTimeHasBeenModified = false;
454        readingTimeAllowedHasBeenModified = false;
455        estimatedTestingTimeHasBeenModified = false;
456        testingTimeAllowedHasBeenModified = false;
457        requiredCompletionTimeHasBeenModified = false;
458        workEffortScopePKHasBeenModified = false;
459        defaultPercentageToPassHasBeenModified = false;
460        overallQuestionCountHasBeenModified = false;
461        testingValidityTimeHasBeenModified = false;
462        expiredRetentionTimeHasBeenModified = false;
463        alwaysReassignOnExpirationHasBeenModified = false;
464        isDefaultHasBeenModified = false;
465        sortOrderHasBeenModified = false;
466        fromTimeHasBeenModified = false;
467        thruTimeHasBeenModified = false;
468    }
469    
470    @Nonnull
471    public TrainingClassPK getTrainingClassPK() {
472        return trainingClassPK;
473    }
474    
475    public void setTrainingClassPK(@Nonnull TrainingClassPK trainingClassPK)
476            throws PersistenceNotNullException {
477        checkForNull(trainingClassPK);
478        
479        boolean update = true;
480        
481        if(this.trainingClassPK != null) {
482            if(this.trainingClassPK.equals(trainingClassPK)) {
483                update = false;
484            }
485        } else if(trainingClassPK == null) {
486            update = false;
487        }
488        
489        if(update) {
490            this.trainingClassPK = trainingClassPK;
491            trainingClassPKHasBeenModified = true;
492            clearHashAndString();
493        }
494    }
495    
496    public boolean getTrainingClassPKHasBeenModified() {
497        return trainingClassPKHasBeenModified;
498    }
499    
500    @Nonnull
501    public String getTrainingClassName() {
502        return trainingClassName;
503    }
504    
505    public void setTrainingClassName(@Nonnull String trainingClassName)
506            throws PersistenceNotNullException {
507        checkForNull(trainingClassName);
508        
509        boolean update = true;
510        
511        if(this.trainingClassName != null) {
512            if(this.trainingClassName.equals(trainingClassName)) {
513                update = false;
514            }
515        } else if(trainingClassName == null) {
516            update = false;
517        }
518        
519        if(update) {
520            this.trainingClassName = trainingClassName;
521            trainingClassNameHasBeenModified = true;
522            clearHashAndString();
523        }
524    }
525    
526    public boolean getTrainingClassNameHasBeenModified() {
527        return trainingClassNameHasBeenModified;
528    }
529    
530    @Nullable
531    public Long getEstimatedReadingTime() {
532        return estimatedReadingTime;
533    }
534    
535    public void setEstimatedReadingTime(@Nullable Long estimatedReadingTime) {
536        boolean update = true;
537        
538        if(this.estimatedReadingTime != null) {
539            if(this.estimatedReadingTime.equals(estimatedReadingTime)) {
540                update = false;
541            }
542        } else if(estimatedReadingTime == null) {
543            update = false;
544        }
545        
546        if(update) {
547            this.estimatedReadingTime = estimatedReadingTime;
548            estimatedReadingTimeHasBeenModified = true;
549            clearHashAndString();
550        }
551    }
552    
553    public boolean getEstimatedReadingTimeHasBeenModified() {
554        return estimatedReadingTimeHasBeenModified;
555    }
556    
557    @Nullable
558    public Long getReadingTimeAllowed() {
559        return readingTimeAllowed;
560    }
561    
562    public void setReadingTimeAllowed(@Nullable Long readingTimeAllowed) {
563        boolean update = true;
564        
565        if(this.readingTimeAllowed != null) {
566            if(this.readingTimeAllowed.equals(readingTimeAllowed)) {
567                update = false;
568            }
569        } else if(readingTimeAllowed == null) {
570            update = false;
571        }
572        
573        if(update) {
574            this.readingTimeAllowed = readingTimeAllowed;
575            readingTimeAllowedHasBeenModified = true;
576            clearHashAndString();
577        }
578    }
579    
580    public boolean getReadingTimeAllowedHasBeenModified() {
581        return readingTimeAllowedHasBeenModified;
582    }
583    
584    @Nullable
585    public Long getEstimatedTestingTime() {
586        return estimatedTestingTime;
587    }
588    
589    public void setEstimatedTestingTime(@Nullable Long estimatedTestingTime) {
590        boolean update = true;
591        
592        if(this.estimatedTestingTime != null) {
593            if(this.estimatedTestingTime.equals(estimatedTestingTime)) {
594                update = false;
595            }
596        } else if(estimatedTestingTime == null) {
597            update = false;
598        }
599        
600        if(update) {
601            this.estimatedTestingTime = estimatedTestingTime;
602            estimatedTestingTimeHasBeenModified = true;
603            clearHashAndString();
604        }
605    }
606    
607    public boolean getEstimatedTestingTimeHasBeenModified() {
608        return estimatedTestingTimeHasBeenModified;
609    }
610    
611    @Nullable
612    public Long getTestingTimeAllowed() {
613        return testingTimeAllowed;
614    }
615    
616    public void setTestingTimeAllowed(@Nullable Long testingTimeAllowed) {
617        boolean update = true;
618        
619        if(this.testingTimeAllowed != null) {
620            if(this.testingTimeAllowed.equals(testingTimeAllowed)) {
621                update = false;
622            }
623        } else if(testingTimeAllowed == null) {
624            update = false;
625        }
626        
627        if(update) {
628            this.testingTimeAllowed = testingTimeAllowed;
629            testingTimeAllowedHasBeenModified = true;
630            clearHashAndString();
631        }
632    }
633    
634    public boolean getTestingTimeAllowedHasBeenModified() {
635        return testingTimeAllowedHasBeenModified;
636    }
637    
638    @Nullable
639    public Long getRequiredCompletionTime() {
640        return requiredCompletionTime;
641    }
642    
643    public void setRequiredCompletionTime(@Nullable Long requiredCompletionTime) {
644        boolean update = true;
645        
646        if(this.requiredCompletionTime != null) {
647            if(this.requiredCompletionTime.equals(requiredCompletionTime)) {
648                update = false;
649            }
650        } else if(requiredCompletionTime == null) {
651            update = false;
652        }
653        
654        if(update) {
655            this.requiredCompletionTime = requiredCompletionTime;
656            requiredCompletionTimeHasBeenModified = true;
657            clearHashAndString();
658        }
659    }
660    
661    public boolean getRequiredCompletionTimeHasBeenModified() {
662        return requiredCompletionTimeHasBeenModified;
663    }
664    
665    @Nullable
666    public WorkEffortScopePK getWorkEffortScopePK() {
667        return workEffortScopePK;
668    }
669    
670    public void setWorkEffortScopePK(@Nullable WorkEffortScopePK workEffortScopePK) {
671        boolean update = true;
672        
673        if(this.workEffortScopePK != null) {
674            if(this.workEffortScopePK.equals(workEffortScopePK)) {
675                update = false;
676            }
677        } else if(workEffortScopePK == null) {
678            update = false;
679        }
680        
681        if(update) {
682            this.workEffortScopePK = workEffortScopePK;
683            workEffortScopePKHasBeenModified = true;
684            clearHashAndString();
685        }
686    }
687    
688    public boolean getWorkEffortScopePKHasBeenModified() {
689        return workEffortScopePKHasBeenModified;
690    }
691    
692    @Nullable
693    public Integer getDefaultPercentageToPass() {
694        return defaultPercentageToPass;
695    }
696    
697    public void setDefaultPercentageToPass(@Nullable Integer defaultPercentageToPass) {
698        boolean update = true;
699        
700        if(this.defaultPercentageToPass != null) {
701            if(this.defaultPercentageToPass.equals(defaultPercentageToPass)) {
702                update = false;
703            }
704        } else if(defaultPercentageToPass == null) {
705            update = false;
706        }
707        
708        if(update) {
709            this.defaultPercentageToPass = defaultPercentageToPass;
710            defaultPercentageToPassHasBeenModified = true;
711            clearHashAndString();
712        }
713    }
714    
715    public boolean getDefaultPercentageToPassHasBeenModified() {
716        return defaultPercentageToPassHasBeenModified;
717    }
718    
719    @Nullable
720    public Integer getOverallQuestionCount() {
721        return overallQuestionCount;
722    }
723    
724    public void setOverallQuestionCount(@Nullable Integer overallQuestionCount) {
725        boolean update = true;
726        
727        if(this.overallQuestionCount != null) {
728            if(this.overallQuestionCount.equals(overallQuestionCount)) {
729                update = false;
730            }
731        } else if(overallQuestionCount == null) {
732            update = false;
733        }
734        
735        if(update) {
736            this.overallQuestionCount = overallQuestionCount;
737            overallQuestionCountHasBeenModified = true;
738            clearHashAndString();
739        }
740    }
741    
742    public boolean getOverallQuestionCountHasBeenModified() {
743        return overallQuestionCountHasBeenModified;
744    }
745    
746    @Nullable
747    public Long getTestingValidityTime() {
748        return testingValidityTime;
749    }
750    
751    public void setTestingValidityTime(@Nullable Long testingValidityTime) {
752        boolean update = true;
753        
754        if(this.testingValidityTime != null) {
755            if(this.testingValidityTime.equals(testingValidityTime)) {
756                update = false;
757            }
758        } else if(testingValidityTime == null) {
759            update = false;
760        }
761        
762        if(update) {
763            this.testingValidityTime = testingValidityTime;
764            testingValidityTimeHasBeenModified = true;
765            clearHashAndString();
766        }
767    }
768    
769    public boolean getTestingValidityTimeHasBeenModified() {
770        return testingValidityTimeHasBeenModified;
771    }
772    
773    @Nullable
774    public Long getExpiredRetentionTime() {
775        return expiredRetentionTime;
776    }
777    
778    public void setExpiredRetentionTime(@Nullable Long expiredRetentionTime) {
779        boolean update = true;
780        
781        if(this.expiredRetentionTime != null) {
782            if(this.expiredRetentionTime.equals(expiredRetentionTime)) {
783                update = false;
784            }
785        } else if(expiredRetentionTime == null) {
786            update = false;
787        }
788        
789        if(update) {
790            this.expiredRetentionTime = expiredRetentionTime;
791            expiredRetentionTimeHasBeenModified = true;
792            clearHashAndString();
793        }
794    }
795    
796    public boolean getExpiredRetentionTimeHasBeenModified() {
797        return expiredRetentionTimeHasBeenModified;
798    }
799    
800    @Nonnull
801    public Boolean getAlwaysReassignOnExpiration() {
802        return alwaysReassignOnExpiration;
803    }
804    
805    public void setAlwaysReassignOnExpiration(@Nonnull Boolean alwaysReassignOnExpiration)
806            throws PersistenceNotNullException {
807        checkForNull(alwaysReassignOnExpiration);
808        
809        boolean update = true;
810        
811        if(this.alwaysReassignOnExpiration != null) {
812            if(this.alwaysReassignOnExpiration.equals(alwaysReassignOnExpiration)) {
813                update = false;
814            }
815        } else if(alwaysReassignOnExpiration == null) {
816            update = false;
817        }
818        
819        if(update) {
820            this.alwaysReassignOnExpiration = alwaysReassignOnExpiration;
821            alwaysReassignOnExpirationHasBeenModified = true;
822            clearHashAndString();
823        }
824    }
825    
826    public boolean getAlwaysReassignOnExpirationHasBeenModified() {
827        return alwaysReassignOnExpirationHasBeenModified;
828    }
829    
830    @Nonnull
831    public Boolean getIsDefault() {
832        return isDefault;
833    }
834    
835    public void setIsDefault(@Nonnull Boolean isDefault)
836            throws PersistenceNotNullException {
837        checkForNull(isDefault);
838        
839        boolean update = true;
840        
841        if(this.isDefault != null) {
842            if(this.isDefault.equals(isDefault)) {
843                update = false;
844            }
845        } else if(isDefault == null) {
846            update = false;
847        }
848        
849        if(update) {
850            this.isDefault = isDefault;
851            isDefaultHasBeenModified = true;
852            clearHashAndString();
853        }
854    }
855    
856    public boolean getIsDefaultHasBeenModified() {
857        return isDefaultHasBeenModified;
858    }
859    
860    @Nonnull
861    public Integer getSortOrder() {
862        return sortOrder;
863    }
864    
865    public void setSortOrder(@Nonnull Integer sortOrder)
866            throws PersistenceNotNullException {
867        checkForNull(sortOrder);
868        
869        boolean update = true;
870        
871        if(this.sortOrder != null) {
872            if(this.sortOrder.equals(sortOrder)) {
873                update = false;
874            }
875        } else if(sortOrder == null) {
876            update = false;
877        }
878        
879        if(update) {
880            this.sortOrder = sortOrder;
881            sortOrderHasBeenModified = true;
882            clearHashAndString();
883        }
884    }
885    
886    public boolean getSortOrderHasBeenModified() {
887        return sortOrderHasBeenModified;
888    }
889    
890    @Nonnull
891    public Long getFromTime() {
892        return fromTime;
893    }
894    
895    public void setFromTime(@Nonnull Long fromTime)
896            throws PersistenceNotNullException {
897        checkForNull(fromTime);
898        
899        boolean update = true;
900        
901        if(this.fromTime != null) {
902            if(this.fromTime.equals(fromTime)) {
903                update = false;
904            }
905        } else if(fromTime == null) {
906            update = false;
907        }
908        
909        if(update) {
910            this.fromTime = fromTime;
911            fromTimeHasBeenModified = true;
912            clearHashAndString();
913        }
914    }
915    
916    public boolean getFromTimeHasBeenModified() {
917        return fromTimeHasBeenModified;
918    }
919    
920    @Nonnull
921    public Long getThruTime() {
922        return thruTime;
923    }
924    
925    public void setThruTime(@Nonnull Long thruTime)
926            throws PersistenceNotNullException {
927        checkForNull(thruTime);
928        
929        boolean update = true;
930        
931        if(this.thruTime != null) {
932            if(this.thruTime.equals(thruTime)) {
933                update = false;
934            }
935        } else if(thruTime == null) {
936            update = false;
937        }
938        
939        if(update) {
940            this.thruTime = thruTime;
941            thruTimeHasBeenModified = true;
942            clearHashAndString();
943        }
944    }
945    
946    public boolean getThruTimeHasBeenModified() {
947        return thruTimeHasBeenModified;
948    }
949    
950}