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 * EventValue.java
021 */
022
023package com.echothree.model.data.core.server.value;
024
025import com.echothree.model.data.core.common.pk.EventPK;
026
027import com.echothree.model.data.core.server.factory.EventFactory;
028
029import com.echothree.model.data.core.common.pk.EventGroupPK;
030import com.echothree.model.data.core.common.pk.EntityInstancePK;
031import com.echothree.model.data.core.common.pk.EventTypePK;
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
040import javax.annotation.Nonnull;
041import javax.annotation.Nullable;
042
043public class EventValue
044        extends BaseValue<EventPK>
045        implements Cloneable, Serializable {
046    
047    private EventGroupPK eventGroupPK;
048    private boolean eventGroupPKHasBeenModified = false;
049    private Long eventTime;
050    private boolean eventTimeHasBeenModified = false;
051    private Integer eventTimeSequence;
052    private boolean eventTimeSequenceHasBeenModified = false;
053    private EntityInstancePK entityInstancePK;
054    private boolean entityInstancePKHasBeenModified = false;
055    private EventTypePK eventTypePK;
056    private boolean eventTypePKHasBeenModified = false;
057    private EntityInstancePK relatedEntityInstancePK;
058    private boolean relatedEntityInstancePKHasBeenModified = false;
059    private EventTypePK relatedEventTypePK;
060    private boolean relatedEventTypePKHasBeenModified = false;
061    private EntityInstancePK createdByPK;
062    private boolean createdByPKHasBeenModified = false;
063    
064    private transient Integer _hashCode = null;
065    private transient String _stringValue = null;
066    
067    private void constructFields(EventGroupPK eventGroupPK, Long eventTime, Integer eventTimeSequence, EntityInstancePK entityInstancePK, EventTypePK eventTypePK, EntityInstancePK relatedEntityInstancePK, EventTypePK relatedEventTypePK, EntityInstancePK createdByPK)
068            throws PersistenceNotNullException {
069        this.eventGroupPK = eventGroupPK;
070        checkForNull(eventTime);
071        this.eventTime = eventTime;
072        checkForNull(eventTimeSequence);
073        this.eventTimeSequence = eventTimeSequence;
074        checkForNull(entityInstancePK);
075        this.entityInstancePK = entityInstancePK;
076        checkForNull(eventTypePK);
077        this.eventTypePK = eventTypePK;
078        this.relatedEntityInstancePK = relatedEntityInstancePK;
079        this.relatedEventTypePK = relatedEventTypePK;
080        this.createdByPK = createdByPK;
081    }
082    
083    /** Creates a new instance of EventValue */
084    public EventValue(EventPK eventPK, EventGroupPK eventGroupPK, Long eventTime, Integer eventTimeSequence, EntityInstancePK entityInstancePK, EventTypePK eventTypePK, EntityInstancePK relatedEntityInstancePK, EventTypePK relatedEventTypePK, EntityInstancePK createdByPK)
085            throws PersistenceNotNullException {
086        super(eventPK);
087        constructFields(eventGroupPK, eventTime, eventTimeSequence, entityInstancePK, eventTypePK, relatedEntityInstancePK, relatedEventTypePK, createdByPK);
088    }
089    
090    /** Creates a new instance of EventValue */
091    public EventValue(EventGroupPK eventGroupPK, Long eventTime, Integer eventTimeSequence, EntityInstancePK entityInstancePK, EventTypePK eventTypePK, EntityInstancePK relatedEntityInstancePK, EventTypePK relatedEventTypePK, EntityInstancePK createdByPK)
092            throws PersistenceNotNullException {
093        super();
094        constructFields(eventGroupPK, eventTime, eventTimeSequence, entityInstancePK, eventTypePK, relatedEntityInstancePK, relatedEventTypePK, createdByPK);
095    }
096    
097    @Override
098    @Nonnull
099    public EventFactory getBaseFactoryInstance() {
100        return EventFactory.getInstance();
101    }
102    
103    @Override
104    @Nonnull
105    public EventValue clone() {
106        Object result;
107        
108        try {
109            result = super.clone();
110        } catch (CloneNotSupportedException cnse) {
111            // This shouldn't happen, fail when it does.
112            throw new PersistenceCloneException(cnse);
113        }
114        
115        return (EventValue)result;
116    }
117    
118    @Override
119    @Nonnull
120    public EventPK getPrimaryKey() {
121        if(_primaryKey == null) {
122            _primaryKey = new EventPK(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 + ((eventGroupPK != null) ? eventGroupPK.hashCode() : 0);
141            hashCode = 37 * hashCode + ((eventTime != null) ? eventTime.hashCode() : 0);
142            hashCode = 37 * hashCode + ((eventTimeSequence != null) ? eventTimeSequence.hashCode() : 0);
143            hashCode = 37 * hashCode + ((entityInstancePK != null) ? entityInstancePK.hashCode() : 0);
144            hashCode = 37 * hashCode + ((eventTypePK != null) ? eventTypePK.hashCode() : 0);
145            hashCode = 37 * hashCode + ((relatedEntityInstancePK != null) ? relatedEntityInstancePK.hashCode() : 0);
146            hashCode = 37 * hashCode + ((relatedEventTypePK != null) ? relatedEventTypePK.hashCode() : 0);
147            hashCode = 37 * hashCode + ((createdByPK != null) ? createdByPK.hashCode() : 0);
148            
149            _hashCode = hashCode;
150        }
151        
152        return _hashCode;
153    }
154    
155    @Override
156    @Nonnull
157    public String toString() {
158        if(_stringValue == null) {
159            _stringValue = "{" + 
160                    "entityId=" + getEntityId() +
161                    ", eventGroupPK=" + getEventGroupPK() +
162                    ", eventTime=" + getEventTime() +
163                    ", eventTimeSequence=" + getEventTimeSequence() +
164                    ", entityInstancePK=" + getEntityInstancePK() +
165                    ", eventTypePK=" + getEventTypePK() +
166                    ", relatedEntityInstancePK=" + getRelatedEntityInstancePK() +
167                    ", relatedEventTypePK=" + getRelatedEventTypePK() +
168                    ", createdByPK=" + getCreatedByPK() +
169                    "}";
170        }
171        return _stringValue;
172    }
173    
174    @Override
175    public boolean equals(Object other) {
176        if(this == other)
177            return true;
178        
179        if(!hasIdentity())
180            return false;
181        
182        if(other instanceof  EventValue that) {
183            if(!that.hasIdentity())
184                return false;
185            
186            Long thisEntityId = getEntityId();
187            Long thatEntityId = that.getEntityId();
188            
189            boolean objectsEqual = thisEntityId.equals(thatEntityId);
190            if(objectsEqual)
191                objectsEqual = isIdentical(that);
192            
193            return objectsEqual;
194        } else {
195            return false;
196        }
197    }
198    
199    public boolean isIdentical(Object other) {
200        if(other instanceof EventValue that) {
201            boolean objectsEqual = true;
202            
203            
204            if(objectsEqual) {
205                EventGroupPK thisEventGroupPK = getEventGroupPK();
206                EventGroupPK thatEventGroupPK = that.getEventGroupPK();
207                
208                if(thisEventGroupPK == null) {
209                    objectsEqual = objectsEqual && (thatEventGroupPK == null);
210                } else {
211                    objectsEqual = objectsEqual && thisEventGroupPK.equals(thatEventGroupPK);
212                }
213            }
214            
215            if(objectsEqual) {
216                Long thisEventTime = getEventTime();
217                Long thatEventTime = that.getEventTime();
218                
219                if(thisEventTime == null) {
220                    objectsEqual = objectsEqual && (thatEventTime == null);
221                } else {
222                    objectsEqual = objectsEqual && thisEventTime.equals(thatEventTime);
223                }
224            }
225            
226            if(objectsEqual) {
227                Integer thisEventTimeSequence = getEventTimeSequence();
228                Integer thatEventTimeSequence = that.getEventTimeSequence();
229                
230                if(thisEventTimeSequence == null) {
231                    objectsEqual = objectsEqual && (thatEventTimeSequence == null);
232                } else {
233                    objectsEqual = objectsEqual && thisEventTimeSequence.equals(thatEventTimeSequence);
234                }
235            }
236            
237            if(objectsEqual) {
238                EntityInstancePK thisEntityInstancePK = getEntityInstancePK();
239                EntityInstancePK thatEntityInstancePK = that.getEntityInstancePK();
240                
241                if(thisEntityInstancePK == null) {
242                    objectsEqual = objectsEqual && (thatEntityInstancePK == null);
243                } else {
244                    objectsEqual = objectsEqual && thisEntityInstancePK.equals(thatEntityInstancePK);
245                }
246            }
247            
248            if(objectsEqual) {
249                EventTypePK thisEventTypePK = getEventTypePK();
250                EventTypePK thatEventTypePK = that.getEventTypePK();
251                
252                if(thisEventTypePK == null) {
253                    objectsEqual = objectsEqual && (thatEventTypePK == null);
254                } else {
255                    objectsEqual = objectsEqual && thisEventTypePK.equals(thatEventTypePK);
256                }
257            }
258            
259            if(objectsEqual) {
260                EntityInstancePK thisRelatedEntityInstancePK = getRelatedEntityInstancePK();
261                EntityInstancePK thatRelatedEntityInstancePK = that.getRelatedEntityInstancePK();
262                
263                if(thisRelatedEntityInstancePK == null) {
264                    objectsEqual = objectsEqual && (thatRelatedEntityInstancePK == null);
265                } else {
266                    objectsEqual = objectsEqual && thisRelatedEntityInstancePK.equals(thatRelatedEntityInstancePK);
267                }
268            }
269            
270            if(objectsEqual) {
271                EventTypePK thisRelatedEventTypePK = getRelatedEventTypePK();
272                EventTypePK thatRelatedEventTypePK = that.getRelatedEventTypePK();
273                
274                if(thisRelatedEventTypePK == null) {
275                    objectsEqual = objectsEqual && (thatRelatedEventTypePK == null);
276                } else {
277                    objectsEqual = objectsEqual && thisRelatedEventTypePK.equals(thatRelatedEventTypePK);
278                }
279            }
280            
281            if(objectsEqual) {
282                EntityInstancePK thisCreatedByPK = getCreatedByPK();
283                EntityInstancePK thatCreatedByPK = that.getCreatedByPK();
284                
285                if(thisCreatedByPK == null) {
286                    objectsEqual = objectsEqual && (thatCreatedByPK == null);
287                } else {
288                    objectsEqual = objectsEqual && thisCreatedByPK.equals(thatCreatedByPK);
289                }
290            }
291            
292            return objectsEqual;
293        } else {
294            return false;
295        }
296    }
297    
298    @Override
299    public boolean hasBeenModified() {
300        return eventGroupPKHasBeenModified || eventTimeHasBeenModified || eventTimeSequenceHasBeenModified || entityInstancePKHasBeenModified || eventTypePKHasBeenModified || relatedEntityInstancePKHasBeenModified || relatedEventTypePKHasBeenModified || createdByPKHasBeenModified;
301    }
302    
303    @Override
304    public void clearHasBeenModified() {
305        eventGroupPKHasBeenModified = false;
306        eventTimeHasBeenModified = false;
307        eventTimeSequenceHasBeenModified = false;
308        entityInstancePKHasBeenModified = false;
309        eventTypePKHasBeenModified = false;
310        relatedEntityInstancePKHasBeenModified = false;
311        relatedEventTypePKHasBeenModified = false;
312        createdByPKHasBeenModified = false;
313    }
314    
315    @Nullable
316    public EventGroupPK getEventGroupPK() {
317        return eventGroupPK;
318    }
319    
320    public void setEventGroupPK(@Nullable EventGroupPK eventGroupPK) {
321        boolean update = true;
322        
323        if(this.eventGroupPK != null) {
324            if(this.eventGroupPK.equals(eventGroupPK)) {
325                update = false;
326            }
327        } else if(eventGroupPK == null) {
328            update = false;
329        }
330        
331        if(update) {
332            this.eventGroupPK = eventGroupPK;
333            eventGroupPKHasBeenModified = true;
334            clearHashAndString();
335        }
336    }
337    
338    public boolean getEventGroupPKHasBeenModified() {
339        return eventGroupPKHasBeenModified;
340    }
341    
342    @Nonnull
343    public Long getEventTime() {
344        return eventTime;
345    }
346    
347    public void setEventTime(@Nonnull Long eventTime)
348            throws PersistenceNotNullException {
349        checkForNull(eventTime);
350        
351        boolean update = true;
352        
353        if(this.eventTime != null) {
354            if(this.eventTime.equals(eventTime)) {
355                update = false;
356            }
357        } else if(eventTime == null) {
358            update = false;
359        }
360        
361        if(update) {
362            this.eventTime = eventTime;
363            eventTimeHasBeenModified = true;
364            clearHashAndString();
365        }
366    }
367    
368    public boolean getEventTimeHasBeenModified() {
369        return eventTimeHasBeenModified;
370    }
371    
372    @Nonnull
373    public Integer getEventTimeSequence() {
374        return eventTimeSequence;
375    }
376    
377    public void setEventTimeSequence(@Nonnull Integer eventTimeSequence)
378            throws PersistenceNotNullException {
379        checkForNull(eventTimeSequence);
380        
381        boolean update = true;
382        
383        if(this.eventTimeSequence != null) {
384            if(this.eventTimeSequence.equals(eventTimeSequence)) {
385                update = false;
386            }
387        } else if(eventTimeSequence == null) {
388            update = false;
389        }
390        
391        if(update) {
392            this.eventTimeSequence = eventTimeSequence;
393            eventTimeSequenceHasBeenModified = true;
394            clearHashAndString();
395        }
396    }
397    
398    public boolean getEventTimeSequenceHasBeenModified() {
399        return eventTimeSequenceHasBeenModified;
400    }
401    
402    @Nonnull
403    public EntityInstancePK getEntityInstancePK() {
404        return entityInstancePK;
405    }
406    
407    public void setEntityInstancePK(@Nonnull EntityInstancePK entityInstancePK)
408            throws PersistenceNotNullException {
409        checkForNull(entityInstancePK);
410        
411        boolean update = true;
412        
413        if(this.entityInstancePK != null) {
414            if(this.entityInstancePK.equals(entityInstancePK)) {
415                update = false;
416            }
417        } else if(entityInstancePK == null) {
418            update = false;
419        }
420        
421        if(update) {
422            this.entityInstancePK = entityInstancePK;
423            entityInstancePKHasBeenModified = true;
424            clearHashAndString();
425        }
426    }
427    
428    public boolean getEntityInstancePKHasBeenModified() {
429        return entityInstancePKHasBeenModified;
430    }
431    
432    @Nonnull
433    public EventTypePK getEventTypePK() {
434        return eventTypePK;
435    }
436    
437    public void setEventTypePK(@Nonnull EventTypePK eventTypePK)
438            throws PersistenceNotNullException {
439        checkForNull(eventTypePK);
440        
441        boolean update = true;
442        
443        if(this.eventTypePK != null) {
444            if(this.eventTypePK.equals(eventTypePK)) {
445                update = false;
446            }
447        } else if(eventTypePK == null) {
448            update = false;
449        }
450        
451        if(update) {
452            this.eventTypePK = eventTypePK;
453            eventTypePKHasBeenModified = true;
454            clearHashAndString();
455        }
456    }
457    
458    public boolean getEventTypePKHasBeenModified() {
459        return eventTypePKHasBeenModified;
460    }
461    
462    @Nullable
463    public EntityInstancePK getRelatedEntityInstancePK() {
464        return relatedEntityInstancePK;
465    }
466    
467    public void setRelatedEntityInstancePK(@Nullable EntityInstancePK relatedEntityInstancePK) {
468        boolean update = true;
469        
470        if(this.relatedEntityInstancePK != null) {
471            if(this.relatedEntityInstancePK.equals(relatedEntityInstancePK)) {
472                update = false;
473            }
474        } else if(relatedEntityInstancePK == null) {
475            update = false;
476        }
477        
478        if(update) {
479            this.relatedEntityInstancePK = relatedEntityInstancePK;
480            relatedEntityInstancePKHasBeenModified = true;
481            clearHashAndString();
482        }
483    }
484    
485    public boolean getRelatedEntityInstancePKHasBeenModified() {
486        return relatedEntityInstancePKHasBeenModified;
487    }
488    
489    @Nullable
490    public EventTypePK getRelatedEventTypePK() {
491        return relatedEventTypePK;
492    }
493    
494    public void setRelatedEventTypePK(@Nullable EventTypePK relatedEventTypePK) {
495        boolean update = true;
496        
497        if(this.relatedEventTypePK != null) {
498            if(this.relatedEventTypePK.equals(relatedEventTypePK)) {
499                update = false;
500            }
501        } else if(relatedEventTypePK == null) {
502            update = false;
503        }
504        
505        if(update) {
506            this.relatedEventTypePK = relatedEventTypePK;
507            relatedEventTypePKHasBeenModified = true;
508            clearHashAndString();
509        }
510    }
511    
512    public boolean getRelatedEventTypePKHasBeenModified() {
513        return relatedEventTypePKHasBeenModified;
514    }
515    
516    @Nullable
517    public EntityInstancePK getCreatedByPK() {
518        return createdByPK;
519    }
520    
521    public void setCreatedByPK(@Nullable EntityInstancePK createdByPK) {
522        boolean update = true;
523        
524        if(this.createdByPK != null) {
525            if(this.createdByPK.equals(createdByPK)) {
526                update = false;
527            }
528        } else if(createdByPK == null) {
529            update = false;
530        }
531        
532        if(update) {
533            this.createdByPK = createdByPK;
534            createdByPKHasBeenModified = true;
535            clearHashAndString();
536        }
537    }
538    
539    public boolean getCreatedByPKHasBeenModified() {
540        return createdByPKHasBeenModified;
541    }
542    
543}