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 * PartyTrainingClassSessionQuestionStatusValue.java
021 */
022
023package com.echothree.model.data.training.server.value;
024
025import com.echothree.model.data.training.common.pk.PartyTrainingClassSessionQuestionStatusPK;
026
027import com.echothree.model.data.training.server.factory.PartyTrainingClassSessionQuestionStatusFactory;
028
029import com.echothree.model.data.training.common.pk.PartyTrainingClassSessionQuestionPK;
030
031import com.echothree.util.common.exception.PersistenceCloneException;
032import com.echothree.util.common.exception.PersistenceNotNullException;
033
034import com.echothree.util.server.persistence.BaseValue;
035
036import java.io.Serializable;
037
038import javax.annotation.Nonnull;
039import javax.annotation.Nullable;
040
041public class PartyTrainingClassSessionQuestionStatusValue
042        extends BaseValue<PartyTrainingClassSessionQuestionStatusPK>
043        implements Cloneable, Serializable {
044    
045    private PartyTrainingClassSessionQuestionPK partyTrainingClassSessionQuestionPK;
046    private boolean partyTrainingClassSessionQuestionPKHasBeenModified = false;
047    private Integer partyTrainingClassSessionAnswerSequence;
048    private boolean partyTrainingClassSessionAnswerSequenceHasBeenModified = false;
049    
050    private transient Integer _hashCode = null;
051    private transient String _stringValue = null;
052    
053    private void constructFields(PartyTrainingClassSessionQuestionPK partyTrainingClassSessionQuestionPK, Integer partyTrainingClassSessionAnswerSequence)
054            throws PersistenceNotNullException {
055        checkForNull(partyTrainingClassSessionQuestionPK);
056        this.partyTrainingClassSessionQuestionPK = partyTrainingClassSessionQuestionPK;
057        checkForNull(partyTrainingClassSessionAnswerSequence);
058        this.partyTrainingClassSessionAnswerSequence = partyTrainingClassSessionAnswerSequence;
059    }
060    
061    /** Creates a new instance of PartyTrainingClassSessionQuestionStatusValue */
062    public PartyTrainingClassSessionQuestionStatusValue(PartyTrainingClassSessionQuestionStatusPK partyTrainingClassSessionQuestionStatusPK, PartyTrainingClassSessionQuestionPK partyTrainingClassSessionQuestionPK, Integer partyTrainingClassSessionAnswerSequence)
063            throws PersistenceNotNullException {
064        super(partyTrainingClassSessionQuestionStatusPK);
065        constructFields(partyTrainingClassSessionQuestionPK, partyTrainingClassSessionAnswerSequence);
066    }
067    
068    /** Creates a new instance of PartyTrainingClassSessionQuestionStatusValue */
069    public PartyTrainingClassSessionQuestionStatusValue(PartyTrainingClassSessionQuestionPK partyTrainingClassSessionQuestionPK, Integer partyTrainingClassSessionAnswerSequence)
070            throws PersistenceNotNullException {
071        super();
072        constructFields(partyTrainingClassSessionQuestionPK, partyTrainingClassSessionAnswerSequence);
073    }
074    
075    @Override
076    @Nonnull
077    public PartyTrainingClassSessionQuestionStatusFactory getBaseFactoryInstance() {
078        return PartyTrainingClassSessionQuestionStatusFactory.getInstance();
079    }
080    
081    @Override
082    @Nonnull
083    public PartyTrainingClassSessionQuestionStatusValue clone() {
084        Object result;
085        
086        try {
087            result = super.clone();
088        } catch (CloneNotSupportedException cnse) {
089            // This shouldn't happen, fail when it does.
090            throw new PersistenceCloneException(cnse);
091        }
092        
093        return (PartyTrainingClassSessionQuestionStatusValue)result;
094    }
095    
096    @Override
097    @Nonnull
098    public PartyTrainingClassSessionQuestionStatusPK getPrimaryKey() {
099        if(_primaryKey == null) {
100            _primaryKey = new PartyTrainingClassSessionQuestionStatusPK(entityId);
101        }
102        
103        return _primaryKey;
104    }
105    
106    private void clearHashAndString() {
107        _hashCode = null;
108        _stringValue = null;
109    }
110    
111    @Override
112    public int hashCode() {
113        if(_hashCode == null) {
114            int hashCode = 17;
115            
116            hashCode = 37 * hashCode + ((entityId != null) ? entityId.hashCode() : 0);
117            
118            hashCode = 37 * hashCode + ((partyTrainingClassSessionQuestionPK != null) ? partyTrainingClassSessionQuestionPK.hashCode() : 0);
119            hashCode = 37 * hashCode + ((partyTrainingClassSessionAnswerSequence != null) ? partyTrainingClassSessionAnswerSequence.hashCode() : 0);
120            
121            _hashCode = hashCode;
122        }
123        
124        return _hashCode;
125    }
126    
127    @Override
128    @Nonnull
129    public String toString() {
130        if(_stringValue == null) {
131            _stringValue = "{" + 
132                    "entityId=" + getEntityId() +
133                    ", partyTrainingClassSessionQuestionPK=" + getPartyTrainingClassSessionQuestionPK() +
134                    ", partyTrainingClassSessionAnswerSequence=" + getPartyTrainingClassSessionAnswerSequence() +
135                    "}";
136        }
137        return _stringValue;
138    }
139    
140    @Override
141    public boolean equals(Object other) {
142        if(this == other)
143            return true;
144        
145        if(!hasIdentity())
146            return false;
147        
148        if(other instanceof  PartyTrainingClassSessionQuestionStatusValue that) {
149            if(!that.hasIdentity())
150                return false;
151            
152            Long thisEntityId = getEntityId();
153            Long thatEntityId = that.getEntityId();
154            
155            boolean objectsEqual = thisEntityId.equals(thatEntityId);
156            if(objectsEqual)
157                objectsEqual = isIdentical(that);
158            
159            return objectsEqual;
160        } else {
161            return false;
162        }
163    }
164    
165    public boolean isIdentical(Object other) {
166        if(other instanceof PartyTrainingClassSessionQuestionStatusValue that) {
167            boolean objectsEqual = true;
168            
169            
170            if(objectsEqual) {
171                PartyTrainingClassSessionQuestionPK thisPartyTrainingClassSessionQuestionPK = getPartyTrainingClassSessionQuestionPK();
172                PartyTrainingClassSessionQuestionPK thatPartyTrainingClassSessionQuestionPK = that.getPartyTrainingClassSessionQuestionPK();
173                
174                if(thisPartyTrainingClassSessionQuestionPK == null) {
175                    objectsEqual = objectsEqual && (thatPartyTrainingClassSessionQuestionPK == null);
176                } else {
177                    objectsEqual = objectsEqual && thisPartyTrainingClassSessionQuestionPK.equals(thatPartyTrainingClassSessionQuestionPK);
178                }
179            }
180            
181            if(objectsEqual) {
182                Integer thisPartyTrainingClassSessionAnswerSequence = getPartyTrainingClassSessionAnswerSequence();
183                Integer thatPartyTrainingClassSessionAnswerSequence = that.getPartyTrainingClassSessionAnswerSequence();
184                
185                if(thisPartyTrainingClassSessionAnswerSequence == null) {
186                    objectsEqual = objectsEqual && (thatPartyTrainingClassSessionAnswerSequence == null);
187                } else {
188                    objectsEqual = objectsEqual && thisPartyTrainingClassSessionAnswerSequence.equals(thatPartyTrainingClassSessionAnswerSequence);
189                }
190            }
191            
192            return objectsEqual;
193        } else {
194            return false;
195        }
196    }
197    
198    @Override
199    public boolean hasBeenModified() {
200        return partyTrainingClassSessionQuestionPKHasBeenModified || partyTrainingClassSessionAnswerSequenceHasBeenModified;
201    }
202    
203    @Override
204    public void clearHasBeenModified() {
205        partyTrainingClassSessionQuestionPKHasBeenModified = false;
206        partyTrainingClassSessionAnswerSequenceHasBeenModified = false;
207    }
208    
209    @Nonnull
210    public PartyTrainingClassSessionQuestionPK getPartyTrainingClassSessionQuestionPK() {
211        return partyTrainingClassSessionQuestionPK;
212    }
213    
214    public void setPartyTrainingClassSessionQuestionPK(@Nonnull PartyTrainingClassSessionQuestionPK partyTrainingClassSessionQuestionPK)
215            throws PersistenceNotNullException {
216        checkForNull(partyTrainingClassSessionQuestionPK);
217        
218        boolean update = true;
219        
220        if(this.partyTrainingClassSessionQuestionPK != null) {
221            if(this.partyTrainingClassSessionQuestionPK.equals(partyTrainingClassSessionQuestionPK)) {
222                update = false;
223            }
224        } else if(partyTrainingClassSessionQuestionPK == null) {
225            update = false;
226        }
227        
228        if(update) {
229            this.partyTrainingClassSessionQuestionPK = partyTrainingClassSessionQuestionPK;
230            partyTrainingClassSessionQuestionPKHasBeenModified = true;
231            clearHashAndString();
232        }
233    }
234    
235    public boolean getPartyTrainingClassSessionQuestionPKHasBeenModified() {
236        return partyTrainingClassSessionQuestionPKHasBeenModified;
237    }
238    
239    @Nonnull
240    public Integer getPartyTrainingClassSessionAnswerSequence() {
241        return partyTrainingClassSessionAnswerSequence;
242    }
243    
244    public void setPartyTrainingClassSessionAnswerSequence(@Nonnull Integer partyTrainingClassSessionAnswerSequence)
245            throws PersistenceNotNullException {
246        checkForNull(partyTrainingClassSessionAnswerSequence);
247        
248        boolean update = true;
249        
250        if(this.partyTrainingClassSessionAnswerSequence != null) {
251            if(this.partyTrainingClassSessionAnswerSequence.equals(partyTrainingClassSessionAnswerSequence)) {
252                update = false;
253            }
254        } else if(partyTrainingClassSessionAnswerSequence == null) {
255            update = false;
256        }
257        
258        if(update) {
259            this.partyTrainingClassSessionAnswerSequence = partyTrainingClassSessionAnswerSequence;
260            partyTrainingClassSessionAnswerSequenceHasBeenModified = true;
261            clearHashAndString();
262        }
263    }
264    
265    public boolean getPartyTrainingClassSessionAnswerSequenceHasBeenModified() {
266        return partyTrainingClassSessionAnswerSequenceHasBeenModified;
267    }
268    
269}