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 * AssociateProgramDetailValue.java
021 */
022
023package com.echothree.model.data.associate.server.value;
024
025import com.echothree.model.data.associate.common.pk.AssociateProgramDetailPK;
026
027import com.echothree.model.data.associate.server.factory.AssociateProgramDetailFactory;
028
029import com.echothree.model.data.associate.common.pk.AssociateProgramPK;
030import com.echothree.model.data.sequence.common.pk.SequencePK;
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
039public class AssociateProgramDetailValue
040        extends BaseValue<AssociateProgramDetailPK>
041        implements Cloneable, Serializable {
042    
043    private AssociateProgramPK associateProgramPK;
044    private boolean associateProgramPKHasBeenModified = false;
045    private String associateProgramName;
046    private boolean associateProgramNameHasBeenModified = false;
047    private SequencePK associateSequencePK;
048    private boolean associateSequencePKHasBeenModified = false;
049    private SequencePK associatePartyContactMechanismSequencePK;
050    private boolean associatePartyContactMechanismSequencePKHasBeenModified = false;
051    private SequencePK associateReferralSequencePK;
052    private boolean associateReferralSequencePKHasBeenModified = false;
053    private Integer itemIndirectSalePercent;
054    private boolean itemIndirectSalePercentHasBeenModified = false;
055    private Integer itemDirectSalePercent;
056    private boolean itemDirectSalePercentHasBeenModified = false;
057    private Boolean isDefault;
058    private boolean isDefaultHasBeenModified = false;
059    private Integer sortOrder;
060    private boolean sortOrderHasBeenModified = false;
061    private Long fromTime;
062    private boolean fromTimeHasBeenModified = false;
063    private Long thruTime;
064    private boolean thruTimeHasBeenModified = false;
065    
066    private transient Integer _hashCode = null;
067    private transient String _stringValue = null;
068    
069    private void constructFields(AssociateProgramPK associateProgramPK, String associateProgramName, SequencePK associateSequencePK, SequencePK associatePartyContactMechanismSequencePK, SequencePK associateReferralSequencePK, Integer itemIndirectSalePercent, Integer itemDirectSalePercent, Boolean isDefault, Integer sortOrder, Long fromTime, Long thruTime)
070            throws PersistenceNotNullException {
071        this.associateProgramPK = associateProgramPK;
072        checkForNull(associateProgramName);
073        this.associateProgramName = associateProgramName;
074        this.associateSequencePK = associateSequencePK;
075        this.associatePartyContactMechanismSequencePK = associatePartyContactMechanismSequencePK;
076        this.associateReferralSequencePK = associateReferralSequencePK;
077        this.itemIndirectSalePercent = itemIndirectSalePercent;
078        this.itemDirectSalePercent = itemDirectSalePercent;
079        checkForNull(isDefault);
080        this.isDefault = isDefault;
081        checkForNull(sortOrder);
082        this.sortOrder = sortOrder;
083        checkForNull(fromTime);
084        this.fromTime = fromTime;
085        checkForNull(thruTime);
086        this.thruTime = thruTime;
087    }
088    
089    /** Creates a new instance of AssociateProgramDetailValue */
090    public AssociateProgramDetailValue(AssociateProgramDetailPK associateProgramDetailPK, AssociateProgramPK associateProgramPK, String associateProgramName, SequencePK associateSequencePK, SequencePK associatePartyContactMechanismSequencePK, SequencePK associateReferralSequencePK, Integer itemIndirectSalePercent, Integer itemDirectSalePercent, Boolean isDefault, Integer sortOrder, Long fromTime, Long thruTime)
091            throws PersistenceNotNullException {
092        super(associateProgramDetailPK);
093        constructFields(associateProgramPK, associateProgramName, associateSequencePK, associatePartyContactMechanismSequencePK, associateReferralSequencePK, itemIndirectSalePercent, itemDirectSalePercent, isDefault, sortOrder, fromTime, thruTime);
094    }
095    
096    /** Creates a new instance of AssociateProgramDetailValue */
097    public AssociateProgramDetailValue(AssociateProgramPK associateProgramPK, String associateProgramName, SequencePK associateSequencePK, SequencePK associatePartyContactMechanismSequencePK, SequencePK associateReferralSequencePK, Integer itemIndirectSalePercent, Integer itemDirectSalePercent, Boolean isDefault, Integer sortOrder, Long fromTime, Long thruTime)
098            throws PersistenceNotNullException {
099        super();
100        constructFields(associateProgramPK, associateProgramName, associateSequencePK, associatePartyContactMechanismSequencePK, associateReferralSequencePK, itemIndirectSalePercent, itemDirectSalePercent, isDefault, sortOrder, fromTime, thruTime);
101    }
102    
103   @Override
104   public AssociateProgramDetailFactory getBaseFactoryInstance() {
105        return AssociateProgramDetailFactory.getInstance();
106    }
107    
108    @Override
109    public AssociateProgramDetailValue clone() {
110        Object result;
111        
112        try {
113            result = super.clone();
114        } catch (CloneNotSupportedException cnse) {
115            // This shouldn't happen, fail when it does.
116            throw new PersistenceCloneException(cnse);
117        }
118        
119        return (AssociateProgramDetailValue)result;
120    }
121    
122   @Override
123    public AssociateProgramDetailPK getPrimaryKey() {
124        if(_primaryKey == null) {
125            _primaryKey = new AssociateProgramDetailPK(entityId);
126        }
127        
128        return _primaryKey;
129    }
130    
131    private void clearHashAndString() {
132        _hashCode = null;
133        _stringValue = null;
134    }
135    
136    @Override
137    public int hashCode() {
138        if(_hashCode == null) {
139            int hashCode = 17;
140            
141            hashCode = 37 * hashCode + ((entityId != null) ? entityId.hashCode() : 0);
142            
143            hashCode = 37 * hashCode + ((associateProgramPK != null) ? associateProgramPK.hashCode() : 0);
144            hashCode = 37 * hashCode + ((associateProgramName != null) ? associateProgramName.hashCode() : 0);
145            hashCode = 37 * hashCode + ((associateSequencePK != null) ? associateSequencePK.hashCode() : 0);
146            hashCode = 37 * hashCode + ((associatePartyContactMechanismSequencePK != null) ? associatePartyContactMechanismSequencePK.hashCode() : 0);
147            hashCode = 37 * hashCode + ((associateReferralSequencePK != null) ? associateReferralSequencePK.hashCode() : 0);
148            hashCode = 37 * hashCode + ((itemIndirectSalePercent != null) ? itemIndirectSalePercent.hashCode() : 0);
149            hashCode = 37 * hashCode + ((itemDirectSalePercent != null) ? itemDirectSalePercent.hashCode() : 0);
150            hashCode = 37 * hashCode + ((isDefault != null) ? isDefault.hashCode() : 0);
151            hashCode = 37 * hashCode + ((sortOrder != null) ? sortOrder.hashCode() : 0);
152            hashCode = 37 * hashCode + ((fromTime != null) ? fromTime.hashCode() : 0);
153            hashCode = 37 * hashCode + ((thruTime != null) ? thruTime.hashCode() : 0);
154            
155            _hashCode = hashCode;
156        }
157        
158        return _hashCode;
159    }
160    
161    @Override
162    public String toString() {
163        if(_stringValue == null) {
164            _stringValue = "{" + 
165                    "entityId=" + getEntityId() +
166                    ", associateProgramPK=" + getAssociateProgramPK() +
167                    ", associateProgramName=" + getAssociateProgramName() +
168                    ", associateSequencePK=" + getAssociateSequencePK() +
169                    ", associatePartyContactMechanismSequencePK=" + getAssociatePartyContactMechanismSequencePK() +
170                    ", associateReferralSequencePK=" + getAssociateReferralSequencePK() +
171                    ", itemIndirectSalePercent=" + getItemIndirectSalePercent() +
172                    ", itemDirectSalePercent=" + getItemDirectSalePercent() +
173                    ", isDefault=" + getIsDefault() +
174                    ", sortOrder=" + getSortOrder() +
175                    ", fromTime=" + getFromTime() +
176                    ", thruTime=" + getThruTime() +
177                    "}";
178        }
179        return _stringValue;
180    }
181    
182    @Override
183    public boolean equals(Object other) {
184        if(this == other)
185            return true;
186        
187        if(!hasIdentity())
188            return false;
189        
190        if(other instanceof  AssociateProgramDetailValue that) {
191            if(!that.hasIdentity())
192                return false;
193            
194            Long thisEntityId = getEntityId();
195            Long thatEntityId = that.getEntityId();
196            
197            boolean objectsEqual = thisEntityId.equals(thatEntityId);
198            if(objectsEqual)
199                objectsEqual = isIdentical(that);
200            
201            return objectsEqual;
202        } else {
203            return false;
204        }
205    }
206    
207    public boolean isIdentical(Object other) {
208        if(other instanceof AssociateProgramDetailValue that) {
209            boolean objectsEqual = true;
210            
211            
212            if(objectsEqual) {
213                AssociateProgramPK thisAssociateProgramPK = getAssociateProgramPK();
214                AssociateProgramPK thatAssociateProgramPK = that.getAssociateProgramPK();
215                
216                if(thisAssociateProgramPK == null) {
217                    objectsEqual = objectsEqual && (thatAssociateProgramPK == null);
218                } else {
219                    objectsEqual = objectsEqual && thisAssociateProgramPK.equals(thatAssociateProgramPK);
220                }
221            }
222            
223            if(objectsEqual) {
224                String thisAssociateProgramName = getAssociateProgramName();
225                String thatAssociateProgramName = that.getAssociateProgramName();
226                
227                if(thisAssociateProgramName == null) {
228                    objectsEqual = objectsEqual && (thatAssociateProgramName == null);
229                } else {
230                    objectsEqual = objectsEqual && thisAssociateProgramName.equals(thatAssociateProgramName);
231                }
232            }
233            
234            if(objectsEqual) {
235                SequencePK thisAssociateSequencePK = getAssociateSequencePK();
236                SequencePK thatAssociateSequencePK = that.getAssociateSequencePK();
237                
238                if(thisAssociateSequencePK == null) {
239                    objectsEqual = objectsEqual && (thatAssociateSequencePK == null);
240                } else {
241                    objectsEqual = objectsEqual && thisAssociateSequencePK.equals(thatAssociateSequencePK);
242                }
243            }
244            
245            if(objectsEqual) {
246                SequencePK thisAssociatePartyContactMechanismSequencePK = getAssociatePartyContactMechanismSequencePK();
247                SequencePK thatAssociatePartyContactMechanismSequencePK = that.getAssociatePartyContactMechanismSequencePK();
248                
249                if(thisAssociatePartyContactMechanismSequencePK == null) {
250                    objectsEqual = objectsEqual && (thatAssociatePartyContactMechanismSequencePK == null);
251                } else {
252                    objectsEqual = objectsEqual && thisAssociatePartyContactMechanismSequencePK.equals(thatAssociatePartyContactMechanismSequencePK);
253                }
254            }
255            
256            if(objectsEqual) {
257                SequencePK thisAssociateReferralSequencePK = getAssociateReferralSequencePK();
258                SequencePK thatAssociateReferralSequencePK = that.getAssociateReferralSequencePK();
259                
260                if(thisAssociateReferralSequencePK == null) {
261                    objectsEqual = objectsEqual && (thatAssociateReferralSequencePK == null);
262                } else {
263                    objectsEqual = objectsEqual && thisAssociateReferralSequencePK.equals(thatAssociateReferralSequencePK);
264                }
265            }
266            
267            if(objectsEqual) {
268                Integer thisItemIndirectSalePercent = getItemIndirectSalePercent();
269                Integer thatItemIndirectSalePercent = that.getItemIndirectSalePercent();
270                
271                if(thisItemIndirectSalePercent == null) {
272                    objectsEqual = objectsEqual && (thatItemIndirectSalePercent == null);
273                } else {
274                    objectsEqual = objectsEqual && thisItemIndirectSalePercent.equals(thatItemIndirectSalePercent);
275                }
276            }
277            
278            if(objectsEqual) {
279                Integer thisItemDirectSalePercent = getItemDirectSalePercent();
280                Integer thatItemDirectSalePercent = that.getItemDirectSalePercent();
281                
282                if(thisItemDirectSalePercent == null) {
283                    objectsEqual = objectsEqual && (thatItemDirectSalePercent == null);
284                } else {
285                    objectsEqual = objectsEqual && thisItemDirectSalePercent.equals(thatItemDirectSalePercent);
286                }
287            }
288            
289            if(objectsEqual) {
290                Boolean thisIsDefault = getIsDefault();
291                Boolean thatIsDefault = that.getIsDefault();
292                
293                if(thisIsDefault == null) {
294                    objectsEqual = objectsEqual && (thatIsDefault == null);
295                } else {
296                    objectsEqual = objectsEqual && thisIsDefault.equals(thatIsDefault);
297                }
298            }
299            
300            if(objectsEqual) {
301                Integer thisSortOrder = getSortOrder();
302                Integer thatSortOrder = that.getSortOrder();
303                
304                if(thisSortOrder == null) {
305                    objectsEqual = objectsEqual && (thatSortOrder == null);
306                } else {
307                    objectsEqual = objectsEqual && thisSortOrder.equals(thatSortOrder);
308                }
309            }
310            
311            if(objectsEqual) {
312                Long thisFromTime = getFromTime();
313                Long thatFromTime = that.getFromTime();
314                
315                if(thisFromTime == null) {
316                    objectsEqual = objectsEqual && (thatFromTime == null);
317                } else {
318                    objectsEqual = objectsEqual && thisFromTime.equals(thatFromTime);
319                }
320            }
321            
322            if(objectsEqual) {
323                Long thisThruTime = getThruTime();
324                Long thatThruTime = that.getThruTime();
325                
326                if(thisThruTime == null) {
327                    objectsEqual = objectsEqual && (thatThruTime == null);
328                } else {
329                    objectsEqual = objectsEqual && thisThruTime.equals(thatThruTime);
330                }
331            }
332            
333            return objectsEqual;
334        } else {
335            return false;
336        }
337    }
338    
339    @Override
340    public boolean hasBeenModified() {
341        return associateProgramPKHasBeenModified || associateProgramNameHasBeenModified || associateSequencePKHasBeenModified || associatePartyContactMechanismSequencePKHasBeenModified || associateReferralSequencePKHasBeenModified || itemIndirectSalePercentHasBeenModified || itemDirectSalePercentHasBeenModified || isDefaultHasBeenModified || sortOrderHasBeenModified || fromTimeHasBeenModified || thruTimeHasBeenModified;
342    }
343    
344    @Override
345    public void clearHasBeenModified() {
346        associateProgramPKHasBeenModified = false;
347        associateProgramNameHasBeenModified = false;
348        associateSequencePKHasBeenModified = false;
349        associatePartyContactMechanismSequencePKHasBeenModified = false;
350        associateReferralSequencePKHasBeenModified = false;
351        itemIndirectSalePercentHasBeenModified = false;
352        itemDirectSalePercentHasBeenModified = false;
353        isDefaultHasBeenModified = false;
354        sortOrderHasBeenModified = false;
355        fromTimeHasBeenModified = false;
356        thruTimeHasBeenModified = false;
357    }
358    
359    public AssociateProgramPK getAssociateProgramPK() {
360        return associateProgramPK;
361    }
362    
363    public void setAssociateProgramPK(AssociateProgramPK associateProgramPK) {
364        boolean update = true;
365        
366        if(this.associateProgramPK != null) {
367            if(this.associateProgramPK.equals(associateProgramPK)) {
368                update = false;
369            }
370        } else if(associateProgramPK == null) {
371            update = false;
372        }
373        
374        if(update) {
375            this.associateProgramPK = associateProgramPK;
376            associateProgramPKHasBeenModified = true;
377            clearHashAndString();
378        }
379    }
380    
381    public boolean getAssociateProgramPKHasBeenModified() {
382        return associateProgramPKHasBeenModified;
383    }
384    
385    public String getAssociateProgramName() {
386        return associateProgramName;
387    }
388    
389    public void setAssociateProgramName(String associateProgramName)
390            throws PersistenceNotNullException {
391        checkForNull(associateProgramName);
392        
393        boolean update = true;
394        
395        if(this.associateProgramName != null) {
396            if(this.associateProgramName.equals(associateProgramName)) {
397                update = false;
398            }
399        } else if(associateProgramName == null) {
400            update = false;
401        }
402        
403        if(update) {
404            this.associateProgramName = associateProgramName;
405            associateProgramNameHasBeenModified = true;
406            clearHashAndString();
407        }
408    }
409    
410    public boolean getAssociateProgramNameHasBeenModified() {
411        return associateProgramNameHasBeenModified;
412    }
413    
414    public SequencePK getAssociateSequencePK() {
415        return associateSequencePK;
416    }
417    
418    public void setAssociateSequencePK(SequencePK associateSequencePK) {
419        boolean update = true;
420        
421        if(this.associateSequencePK != null) {
422            if(this.associateSequencePK.equals(associateSequencePK)) {
423                update = false;
424            }
425        } else if(associateSequencePK == null) {
426            update = false;
427        }
428        
429        if(update) {
430            this.associateSequencePK = associateSequencePK;
431            associateSequencePKHasBeenModified = true;
432            clearHashAndString();
433        }
434    }
435    
436    public boolean getAssociateSequencePKHasBeenModified() {
437        return associateSequencePKHasBeenModified;
438    }
439    
440    public SequencePK getAssociatePartyContactMechanismSequencePK() {
441        return associatePartyContactMechanismSequencePK;
442    }
443    
444    public void setAssociatePartyContactMechanismSequencePK(SequencePK associatePartyContactMechanismSequencePK) {
445        boolean update = true;
446        
447        if(this.associatePartyContactMechanismSequencePK != null) {
448            if(this.associatePartyContactMechanismSequencePK.equals(associatePartyContactMechanismSequencePK)) {
449                update = false;
450            }
451        } else if(associatePartyContactMechanismSequencePK == null) {
452            update = false;
453        }
454        
455        if(update) {
456            this.associatePartyContactMechanismSequencePK = associatePartyContactMechanismSequencePK;
457            associatePartyContactMechanismSequencePKHasBeenModified = true;
458            clearHashAndString();
459        }
460    }
461    
462    public boolean getAssociatePartyContactMechanismSequencePKHasBeenModified() {
463        return associatePartyContactMechanismSequencePKHasBeenModified;
464    }
465    
466    public SequencePK getAssociateReferralSequencePK() {
467        return associateReferralSequencePK;
468    }
469    
470    public void setAssociateReferralSequencePK(SequencePK associateReferralSequencePK) {
471        boolean update = true;
472        
473        if(this.associateReferralSequencePK != null) {
474            if(this.associateReferralSequencePK.equals(associateReferralSequencePK)) {
475                update = false;
476            }
477        } else if(associateReferralSequencePK == null) {
478            update = false;
479        }
480        
481        if(update) {
482            this.associateReferralSequencePK = associateReferralSequencePK;
483            associateReferralSequencePKHasBeenModified = true;
484            clearHashAndString();
485        }
486    }
487    
488    public boolean getAssociateReferralSequencePKHasBeenModified() {
489        return associateReferralSequencePKHasBeenModified;
490    }
491    
492    public Integer getItemIndirectSalePercent() {
493        return itemIndirectSalePercent;
494    }
495    
496    public void setItemIndirectSalePercent(Integer itemIndirectSalePercent) {
497        boolean update = true;
498        
499        if(this.itemIndirectSalePercent != null) {
500            if(this.itemIndirectSalePercent.equals(itemIndirectSalePercent)) {
501                update = false;
502            }
503        } else if(itemIndirectSalePercent == null) {
504            update = false;
505        }
506        
507        if(update) {
508            this.itemIndirectSalePercent = itemIndirectSalePercent;
509            itemIndirectSalePercentHasBeenModified = true;
510            clearHashAndString();
511        }
512    }
513    
514    public boolean getItemIndirectSalePercentHasBeenModified() {
515        return itemIndirectSalePercentHasBeenModified;
516    }
517    
518    public Integer getItemDirectSalePercent() {
519        return itemDirectSalePercent;
520    }
521    
522    public void setItemDirectSalePercent(Integer itemDirectSalePercent) {
523        boolean update = true;
524        
525        if(this.itemDirectSalePercent != null) {
526            if(this.itemDirectSalePercent.equals(itemDirectSalePercent)) {
527                update = false;
528            }
529        } else if(itemDirectSalePercent == null) {
530            update = false;
531        }
532        
533        if(update) {
534            this.itemDirectSalePercent = itemDirectSalePercent;
535            itemDirectSalePercentHasBeenModified = true;
536            clearHashAndString();
537        }
538    }
539    
540    public boolean getItemDirectSalePercentHasBeenModified() {
541        return itemDirectSalePercentHasBeenModified;
542    }
543    
544    public Boolean getIsDefault() {
545        return isDefault;
546    }
547    
548    public void setIsDefault(Boolean isDefault)
549            throws PersistenceNotNullException {
550        checkForNull(isDefault);
551        
552        boolean update = true;
553        
554        if(this.isDefault != null) {
555            if(this.isDefault.equals(isDefault)) {
556                update = false;
557            }
558        } else if(isDefault == null) {
559            update = false;
560        }
561        
562        if(update) {
563            this.isDefault = isDefault;
564            isDefaultHasBeenModified = true;
565            clearHashAndString();
566        }
567    }
568    
569    public boolean getIsDefaultHasBeenModified() {
570        return isDefaultHasBeenModified;
571    }
572    
573    public Integer getSortOrder() {
574        return sortOrder;
575    }
576    
577    public void setSortOrder(Integer sortOrder)
578            throws PersistenceNotNullException {
579        checkForNull(sortOrder);
580        
581        boolean update = true;
582        
583        if(this.sortOrder != null) {
584            if(this.sortOrder.equals(sortOrder)) {
585                update = false;
586            }
587        } else if(sortOrder == null) {
588            update = false;
589        }
590        
591        if(update) {
592            this.sortOrder = sortOrder;
593            sortOrderHasBeenModified = true;
594            clearHashAndString();
595        }
596    }
597    
598    public boolean getSortOrderHasBeenModified() {
599        return sortOrderHasBeenModified;
600    }
601    
602    public Long getFromTime() {
603        return fromTime;
604    }
605    
606    public void setFromTime(Long fromTime)
607            throws PersistenceNotNullException {
608        checkForNull(fromTime);
609        
610        boolean update = true;
611        
612        if(this.fromTime != null) {
613            if(this.fromTime.equals(fromTime)) {
614                update = false;
615            }
616        } else if(fromTime == null) {
617            update = false;
618        }
619        
620        if(update) {
621            this.fromTime = fromTime;
622            fromTimeHasBeenModified = true;
623            clearHashAndString();
624        }
625    }
626    
627    public boolean getFromTimeHasBeenModified() {
628        return fromTimeHasBeenModified;
629    }
630    
631    public Long getThruTime() {
632        return thruTime;
633    }
634    
635    public void setThruTime(Long thruTime)
636            throws PersistenceNotNullException {
637        checkForNull(thruTime);
638        
639        boolean update = true;
640        
641        if(this.thruTime != null) {
642            if(this.thruTime.equals(thruTime)) {
643                update = false;
644            }
645        } else if(thruTime == null) {
646            update = false;
647        }
648        
649        if(update) {
650            this.thruTime = thruTime;
651            thruTimeHasBeenModified = true;
652            clearHashAndString();
653        }
654    }
655    
656    public boolean getThruTimeHasBeenModified() {
657        return thruTimeHasBeenModified;
658    }
659    
660}