001// --------------------------------------------------------------------------------
002// Copyright 2002-2024 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 * CachedExecutedSearchValue.java
021 */
022
023package com.echothree.model.data.search.server.value;
024
025import com.echothree.model.data.search.common.pk.CachedExecutedSearchPK;
026
027import com.echothree.model.data.search.server.factory.CachedExecutedSearchFactory;
028
029import com.echothree.model.data.search.common.pk.CachedSearchPK;
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
038public class CachedExecutedSearchValue
039        extends BaseValue<CachedExecutedSearchPK>
040        implements Cloneable, Serializable {
041    
042    private CachedSearchPK cachedSearchPK;
043    private boolean cachedSearchPKHasBeenModified = false;
044    private Long fromTime;
045    private boolean fromTimeHasBeenModified = false;
046    private Long thruTime;
047    private boolean thruTimeHasBeenModified = false;
048    
049    private transient Integer _hashCode = null;
050    private transient String _stringValue = null;
051    
052    private void constructFields(CachedSearchPK cachedSearchPK, Long fromTime, Long thruTime)
053            throws PersistenceNotNullException {
054        checkForNull(cachedSearchPK);
055        this.cachedSearchPK = cachedSearchPK;
056        checkForNull(fromTime);
057        this.fromTime = fromTime;
058        checkForNull(thruTime);
059        this.thruTime = thruTime;
060    }
061    
062    /** Creates a new instance of CachedExecutedSearchValue */
063    public CachedExecutedSearchValue(CachedExecutedSearchPK cachedExecutedSearchPK, CachedSearchPK cachedSearchPK, Long fromTime, Long thruTime)
064            throws PersistenceNotNullException {
065        super(cachedExecutedSearchPK);
066        constructFields(cachedSearchPK, fromTime, thruTime);
067    }
068    
069    /** Creates a new instance of CachedExecutedSearchValue */
070    public CachedExecutedSearchValue(CachedSearchPK cachedSearchPK, Long fromTime, Long thruTime)
071            throws PersistenceNotNullException {
072        super();
073        constructFields(cachedSearchPK, fromTime, thruTime);
074    }
075    
076   @Override
077   public CachedExecutedSearchFactory getBaseFactoryInstance() {
078        return CachedExecutedSearchFactory.getInstance();
079    }
080    
081    @Override
082    public CachedExecutedSearchValue clone() {
083        Object result;
084        
085        try {
086            result = super.clone();
087        } catch (CloneNotSupportedException cnse) {
088            // This shouldn't happen, fail when it does.
089            throw new PersistenceCloneException(cnse);
090        }
091        
092        return (CachedExecutedSearchValue)result;
093    }
094    
095   @Override
096    public CachedExecutedSearchPK getPrimaryKey() {
097        if(_primaryKey == null) {
098            _primaryKey = new CachedExecutedSearchPK(entityId);
099        }
100        
101        return _primaryKey;
102    }
103    
104    private void clearHashAndString() {
105        _hashCode = null;
106        _stringValue = null;
107    }
108    
109    @Override
110    public int hashCode() {
111        if(_hashCode == null) {
112            int hashCode = 17;
113            
114            hashCode = 37 * hashCode + ((entityId != null) ? entityId.hashCode() : 0);
115            
116            hashCode = 37 * hashCode + ((cachedSearchPK != null) ? cachedSearchPK.hashCode() : 0);
117            hashCode = 37 * hashCode + ((fromTime != null) ? fromTime.hashCode() : 0);
118            hashCode = 37 * hashCode + ((thruTime != null) ? thruTime.hashCode() : 0);
119            
120            _hashCode = hashCode;
121        }
122        
123        return _hashCode;
124    }
125    
126    @Override
127    public String toString() {
128        if(_stringValue == null) {
129            StringBuilder stringValue = new StringBuilder("{");
130            
131            stringValue.append("entityId=").append(getEntityId());
132            
133            stringValue.append(", cachedSearchPK=").append(getCachedSearchPK());
134            stringValue.append(", fromTime=").append(getFromTime());
135            stringValue.append(", thruTime=").append(getThruTime());
136            
137            stringValue.append('}');
138            
139            _stringValue = stringValue.toString();
140        }
141        return _stringValue;
142    }
143    
144    @Override
145    public boolean equals(Object other) {
146        if(this == other)
147            return true;
148        
149        if(!hasIdentity())
150            return false;
151        
152        if(other instanceof  CachedExecutedSearchValue) {
153            CachedExecutedSearchValue that = (CachedExecutedSearchValue)other;
154            
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 = 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 CachedExecutedSearchValue) {
173            CachedExecutedSearchValue that = (CachedExecutedSearchValue)other;
174            boolean objectsEqual = true;
175            
176            
177            if(objectsEqual) {
178                CachedSearchPK thisCachedSearchPK = getCachedSearchPK();
179                CachedSearchPK thatCachedSearchPK = that.getCachedSearchPK();
180                
181                if(thisCachedSearchPK == null) {
182                    objectsEqual = objectsEqual && (thatCachedSearchPK == null);
183                } else {
184                    objectsEqual = objectsEqual && thisCachedSearchPK.equals(thatCachedSearchPK);
185                }
186            }
187            
188            if(objectsEqual) {
189                Long thisFromTime = getFromTime();
190                Long thatFromTime = that.getFromTime();
191                
192                if(thisFromTime == null) {
193                    objectsEqual = objectsEqual && (thatFromTime == null);
194                } else {
195                    objectsEqual = objectsEqual && thisFromTime.equals(thatFromTime);
196                }
197            }
198            
199            if(objectsEqual) {
200                Long thisThruTime = getThruTime();
201                Long thatThruTime = that.getThruTime();
202                
203                if(thisThruTime == null) {
204                    objectsEqual = objectsEqual && (thatThruTime == null);
205                } else {
206                    objectsEqual = objectsEqual && thisThruTime.equals(thatThruTime);
207                }
208            }
209            
210            return objectsEqual;
211        } else {
212            return false;
213        }
214    }
215    
216    @Override
217    public boolean hasBeenModified() {
218        return cachedSearchPKHasBeenModified || fromTimeHasBeenModified || thruTimeHasBeenModified;
219    }
220    
221    @Override
222    public void clearHasBeenModified() {
223        cachedSearchPKHasBeenModified = false;
224        fromTimeHasBeenModified = false;
225        thruTimeHasBeenModified = false;
226    }
227    
228    public CachedSearchPK getCachedSearchPK() {
229        return cachedSearchPK;
230    }
231    
232    public void setCachedSearchPK(CachedSearchPK cachedSearchPK)
233            throws PersistenceNotNullException {
234        checkForNull(cachedSearchPK);
235        
236        boolean update = true;
237        
238        if(this.cachedSearchPK != null) {
239            if(this.cachedSearchPK.equals(cachedSearchPK)) {
240                update = false;
241            }
242        } else if(cachedSearchPK == null) {
243            update = false;
244        }
245        
246        if(update) {
247            this.cachedSearchPK = cachedSearchPK;
248            cachedSearchPKHasBeenModified = true;
249            clearHashAndString();
250        }
251    }
252    
253    public boolean getCachedSearchPKHasBeenModified() {
254        return cachedSearchPKHasBeenModified;
255    }
256    
257    public Long getFromTime() {
258        return fromTime;
259    }
260    
261    public void setFromTime(Long fromTime)
262            throws PersistenceNotNullException {
263        checkForNull(fromTime);
264        
265        boolean update = true;
266        
267        if(this.fromTime != null) {
268            if(this.fromTime.equals(fromTime)) {
269                update = false;
270            }
271        } else if(fromTime == null) {
272            update = false;
273        }
274        
275        if(update) {
276            this.fromTime = fromTime;
277            fromTimeHasBeenModified = true;
278            clearHashAndString();
279        }
280    }
281    
282    public boolean getFromTimeHasBeenModified() {
283        return fromTimeHasBeenModified;
284    }
285    
286    public Long getThruTime() {
287        return thruTime;
288    }
289    
290    public void setThruTime(Long thruTime)
291            throws PersistenceNotNullException {
292        checkForNull(thruTime);
293        
294        boolean update = true;
295        
296        if(this.thruTime != null) {
297            if(this.thruTime.equals(thruTime)) {
298                update = false;
299            }
300        } else if(thruTime == null) {
301            update = false;
302        }
303        
304        if(update) {
305            this.thruTime = thruTime;
306            thruTimeHasBeenModified = true;
307            clearHashAndString();
308        }
309    }
310    
311    public boolean getThruTimeHasBeenModified() {
312        return thruTimeHasBeenModified;
313    }
314    
315}