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 * PartyResponsibilityValue.java
021 */
022
023package com.echothree.model.data.employee.server.value;
024
025import com.echothree.model.data.employee.common.pk.PartyResponsibilityPK;
026
027import com.echothree.model.data.employee.server.factory.PartyResponsibilityFactory;
028
029import com.echothree.model.data.party.common.pk.PartyPK;
030import com.echothree.model.data.employee.common.pk.ResponsibilityTypePK;
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 PartyResponsibilityValue
040        extends BaseValue<PartyResponsibilityPK>
041        implements Cloneable, Serializable {
042    
043    private PartyPK partyPK;
044    private boolean partyPKHasBeenModified = false;
045    private ResponsibilityTypePK responsibilityTypePK;
046    private boolean responsibilityTypePKHasBeenModified = false;
047    private Long fromTime;
048    private boolean fromTimeHasBeenModified = false;
049    private Long thruTime;
050    private boolean thruTimeHasBeenModified = false;
051    
052    private transient Integer _hashCode = null;
053    private transient String _stringValue = null;
054    
055    private void constructFields(PartyPK partyPK, ResponsibilityTypePK responsibilityTypePK, Long fromTime, Long thruTime)
056            throws PersistenceNotNullException {
057        checkForNull(partyPK);
058        this.partyPK = partyPK;
059        checkForNull(responsibilityTypePK);
060        this.responsibilityTypePK = responsibilityTypePK;
061        checkForNull(fromTime);
062        this.fromTime = fromTime;
063        checkForNull(thruTime);
064        this.thruTime = thruTime;
065    }
066    
067    /** Creates a new instance of PartyResponsibilityValue */
068    public PartyResponsibilityValue(PartyResponsibilityPK partyResponsibilityPK, PartyPK partyPK, ResponsibilityTypePK responsibilityTypePK, Long fromTime, Long thruTime)
069            throws PersistenceNotNullException {
070        super(partyResponsibilityPK);
071        constructFields(partyPK, responsibilityTypePK, fromTime, thruTime);
072    }
073    
074    /** Creates a new instance of PartyResponsibilityValue */
075    public PartyResponsibilityValue(PartyPK partyPK, ResponsibilityTypePK responsibilityTypePK, Long fromTime, Long thruTime)
076            throws PersistenceNotNullException {
077        super();
078        constructFields(partyPK, responsibilityTypePK, fromTime, thruTime);
079    }
080    
081   @Override
082   public PartyResponsibilityFactory getBaseFactoryInstance() {
083        return PartyResponsibilityFactory.getInstance();
084    }
085    
086    @Override
087    public PartyResponsibilityValue clone() {
088        Object result;
089        
090        try {
091            result = super.clone();
092        } catch (CloneNotSupportedException cnse) {
093            // This shouldn't happen, fail when it does.
094            throw new PersistenceCloneException(cnse);
095        }
096        
097        return (PartyResponsibilityValue)result;
098    }
099    
100   @Override
101    public PartyResponsibilityPK getPrimaryKey() {
102        if(_primaryKey == null) {
103            _primaryKey = new PartyResponsibilityPK(entityId);
104        }
105        
106        return _primaryKey;
107    }
108    
109    private void clearHashAndString() {
110        _hashCode = null;
111        _stringValue = null;
112    }
113    
114    @Override
115    public int hashCode() {
116        if(_hashCode == null) {
117            int hashCode = 17;
118            
119            hashCode = 37 * hashCode + ((entityId != null) ? entityId.hashCode() : 0);
120            
121            hashCode = 37 * hashCode + ((partyPK != null) ? partyPK.hashCode() : 0);
122            hashCode = 37 * hashCode + ((responsibilityTypePK != null) ? responsibilityTypePK.hashCode() : 0);
123            hashCode = 37 * hashCode + ((fromTime != null) ? fromTime.hashCode() : 0);
124            hashCode = 37 * hashCode + ((thruTime != null) ? thruTime.hashCode() : 0);
125            
126            _hashCode = hashCode;
127        }
128        
129        return _hashCode;
130    }
131    
132    @Override
133    public String toString() {
134        if(_stringValue == null) {
135            _stringValue = "{" + 
136                    "entityId=" + getEntityId() +
137                    ", partyPK=" + getPartyPK() +
138                    ", responsibilityTypePK=" + getResponsibilityTypePK() +
139                    ", fromTime=" + getFromTime() +
140                    ", thruTime=" + getThruTime() +
141                    "}";
142        }
143        return _stringValue;
144    }
145    
146    @Override
147    public boolean equals(Object other) {
148        if(this == other)
149            return true;
150        
151        if(!hasIdentity())
152            return false;
153        
154        if(other instanceof  PartyResponsibilityValue that) {
155            if(!that.hasIdentity())
156                return false;
157            
158            Long thisEntityId = getEntityId();
159            Long thatEntityId = that.getEntityId();
160            
161            boolean objectsEqual = thisEntityId.equals(thatEntityId);
162            if(objectsEqual)
163                objectsEqual = isIdentical(that);
164            
165            return objectsEqual;
166        } else {
167            return false;
168        }
169    }
170    
171    public boolean isIdentical(Object other) {
172        if(other instanceof PartyResponsibilityValue that) {
173            boolean objectsEqual = true;
174            
175            
176            if(objectsEqual) {
177                PartyPK thisPartyPK = getPartyPK();
178                PartyPK thatPartyPK = that.getPartyPK();
179                
180                if(thisPartyPK == null) {
181                    objectsEqual = objectsEqual && (thatPartyPK == null);
182                } else {
183                    objectsEqual = objectsEqual && thisPartyPK.equals(thatPartyPK);
184                }
185            }
186            
187            if(objectsEqual) {
188                ResponsibilityTypePK thisResponsibilityTypePK = getResponsibilityTypePK();
189                ResponsibilityTypePK thatResponsibilityTypePK = that.getResponsibilityTypePK();
190                
191                if(thisResponsibilityTypePK == null) {
192                    objectsEqual = objectsEqual && (thatResponsibilityTypePK == null);
193                } else {
194                    objectsEqual = objectsEqual && thisResponsibilityTypePK.equals(thatResponsibilityTypePK);
195                }
196            }
197            
198            if(objectsEqual) {
199                Long thisFromTime = getFromTime();
200                Long thatFromTime = that.getFromTime();
201                
202                if(thisFromTime == null) {
203                    objectsEqual = objectsEqual && (thatFromTime == null);
204                } else {
205                    objectsEqual = objectsEqual && thisFromTime.equals(thatFromTime);
206                }
207            }
208            
209            if(objectsEqual) {
210                Long thisThruTime = getThruTime();
211                Long thatThruTime = that.getThruTime();
212                
213                if(thisThruTime == null) {
214                    objectsEqual = objectsEqual && (thatThruTime == null);
215                } else {
216                    objectsEqual = objectsEqual && thisThruTime.equals(thatThruTime);
217                }
218            }
219            
220            return objectsEqual;
221        } else {
222            return false;
223        }
224    }
225    
226    @Override
227    public boolean hasBeenModified() {
228        return partyPKHasBeenModified || responsibilityTypePKHasBeenModified || fromTimeHasBeenModified || thruTimeHasBeenModified;
229    }
230    
231    @Override
232    public void clearHasBeenModified() {
233        partyPKHasBeenModified = false;
234        responsibilityTypePKHasBeenModified = false;
235        fromTimeHasBeenModified = false;
236        thruTimeHasBeenModified = false;
237    }
238    
239    public PartyPK getPartyPK() {
240        return partyPK;
241    }
242    
243    public void setPartyPK(PartyPK partyPK)
244            throws PersistenceNotNullException {
245        checkForNull(partyPK);
246        
247        boolean update = true;
248        
249        if(this.partyPK != null) {
250            if(this.partyPK.equals(partyPK)) {
251                update = false;
252            }
253        } else if(partyPK == null) {
254            update = false;
255        }
256        
257        if(update) {
258            this.partyPK = partyPK;
259            partyPKHasBeenModified = true;
260            clearHashAndString();
261        }
262    }
263    
264    public boolean getPartyPKHasBeenModified() {
265        return partyPKHasBeenModified;
266    }
267    
268    public ResponsibilityTypePK getResponsibilityTypePK() {
269        return responsibilityTypePK;
270    }
271    
272    public void setResponsibilityTypePK(ResponsibilityTypePK responsibilityTypePK)
273            throws PersistenceNotNullException {
274        checkForNull(responsibilityTypePK);
275        
276        boolean update = true;
277        
278        if(this.responsibilityTypePK != null) {
279            if(this.responsibilityTypePK.equals(responsibilityTypePK)) {
280                update = false;
281            }
282        } else if(responsibilityTypePK == null) {
283            update = false;
284        }
285        
286        if(update) {
287            this.responsibilityTypePK = responsibilityTypePK;
288            responsibilityTypePKHasBeenModified = true;
289            clearHashAndString();
290        }
291    }
292    
293    public boolean getResponsibilityTypePKHasBeenModified() {
294        return responsibilityTypePKHasBeenModified;
295    }
296    
297    public Long getFromTime() {
298        return fromTime;
299    }
300    
301    public void setFromTime(Long fromTime)
302            throws PersistenceNotNullException {
303        checkForNull(fromTime);
304        
305        boolean update = true;
306        
307        if(this.fromTime != null) {
308            if(this.fromTime.equals(fromTime)) {
309                update = false;
310            }
311        } else if(fromTime == null) {
312            update = false;
313        }
314        
315        if(update) {
316            this.fromTime = fromTime;
317            fromTimeHasBeenModified = true;
318            clearHashAndString();
319        }
320    }
321    
322    public boolean getFromTimeHasBeenModified() {
323        return fromTimeHasBeenModified;
324    }
325    
326    public Long getThruTime() {
327        return thruTime;
328    }
329    
330    public void setThruTime(Long thruTime)
331            throws PersistenceNotNullException {
332        checkForNull(thruTime);
333        
334        boolean update = true;
335        
336        if(this.thruTime != null) {
337            if(this.thruTime.equals(thruTime)) {
338                update = false;
339            }
340        } else if(thruTime == null) {
341            update = false;
342        }
343        
344        if(update) {
345            this.thruTime = thruTime;
346            thruTimeHasBeenModified = true;
347            clearHashAndString();
348        }
349    }
350    
351    public boolean getThruTimeHasBeenModified() {
352        return thruTimeHasBeenModified;
353    }
354    
355}