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 * TransactionGlAccountCategoryDetailValue.java
021 */
022
023package com.echothree.model.data.accounting.server.value;
024
025import com.echothree.model.data.accounting.common.pk.TransactionGlAccountCategoryDetailPK;
026
027import com.echothree.model.data.accounting.server.factory.TransactionGlAccountCategoryDetailFactory;
028
029import com.echothree.model.data.accounting.common.pk.TransactionGlAccountCategoryPK;
030import com.echothree.model.data.accounting.common.pk.TransactionTypePK;
031import com.echothree.model.data.accounting.common.pk.GlAccountCategoryPK;
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
040public class TransactionGlAccountCategoryDetailValue
041        extends BaseValue<TransactionGlAccountCategoryDetailPK>
042        implements Cloneable, Serializable {
043    
044    private TransactionGlAccountCategoryPK transactionGlAccountCategoryPK;
045    private boolean transactionGlAccountCategoryPKHasBeenModified = false;
046    private TransactionTypePK transactionTypePK;
047    private boolean transactionTypePKHasBeenModified = false;
048    private String transactionGlAccountCategoryName;
049    private boolean transactionGlAccountCategoryNameHasBeenModified = false;
050    private GlAccountCategoryPK glAccountCategoryPK;
051    private boolean glAccountCategoryPKHasBeenModified = false;
052    private Integer sortOrder;
053    private boolean sortOrderHasBeenModified = false;
054    private Long fromTime;
055    private boolean fromTimeHasBeenModified = false;
056    private Long thruTime;
057    private boolean thruTimeHasBeenModified = false;
058    
059    private transient Integer _hashCode = null;
060    private transient String _stringValue = null;
061    
062    private void constructFields(TransactionGlAccountCategoryPK transactionGlAccountCategoryPK, TransactionTypePK transactionTypePK, String transactionGlAccountCategoryName, GlAccountCategoryPK glAccountCategoryPK, Integer sortOrder, Long fromTime, Long thruTime)
063            throws PersistenceNotNullException {
064        checkForNull(transactionGlAccountCategoryPK);
065        this.transactionGlAccountCategoryPK = transactionGlAccountCategoryPK;
066        checkForNull(transactionTypePK);
067        this.transactionTypePK = transactionTypePK;
068        checkForNull(transactionGlAccountCategoryName);
069        this.transactionGlAccountCategoryName = transactionGlAccountCategoryName;
070        this.glAccountCategoryPK = glAccountCategoryPK;
071        checkForNull(sortOrder);
072        this.sortOrder = sortOrder;
073        checkForNull(fromTime);
074        this.fromTime = fromTime;
075        checkForNull(thruTime);
076        this.thruTime = thruTime;
077    }
078    
079    /** Creates a new instance of TransactionGlAccountCategoryDetailValue */
080    public TransactionGlAccountCategoryDetailValue(TransactionGlAccountCategoryDetailPK transactionGlAccountCategoryDetailPK, TransactionGlAccountCategoryPK transactionGlAccountCategoryPK, TransactionTypePK transactionTypePK, String transactionGlAccountCategoryName, GlAccountCategoryPK glAccountCategoryPK, Integer sortOrder, Long fromTime, Long thruTime)
081            throws PersistenceNotNullException {
082        super(transactionGlAccountCategoryDetailPK);
083        constructFields(transactionGlAccountCategoryPK, transactionTypePK, transactionGlAccountCategoryName, glAccountCategoryPK, sortOrder, fromTime, thruTime);
084    }
085    
086    /** Creates a new instance of TransactionGlAccountCategoryDetailValue */
087    public TransactionGlAccountCategoryDetailValue(TransactionGlAccountCategoryPK transactionGlAccountCategoryPK, TransactionTypePK transactionTypePK, String transactionGlAccountCategoryName, GlAccountCategoryPK glAccountCategoryPK, Integer sortOrder, Long fromTime, Long thruTime)
088            throws PersistenceNotNullException {
089        super();
090        constructFields(transactionGlAccountCategoryPK, transactionTypePK, transactionGlAccountCategoryName, glAccountCategoryPK, sortOrder, fromTime, thruTime);
091    }
092    
093   @Override
094   public TransactionGlAccountCategoryDetailFactory getBaseFactoryInstance() {
095        return TransactionGlAccountCategoryDetailFactory.getInstance();
096    }
097    
098    @Override
099    public TransactionGlAccountCategoryDetailValue clone() {
100        Object result;
101        
102        try {
103            result = super.clone();
104        } catch (CloneNotSupportedException cnse) {
105            // This shouldn't happen, fail when it does.
106            throw new PersistenceCloneException(cnse);
107        }
108        
109        return (TransactionGlAccountCategoryDetailValue)result;
110    }
111    
112   @Override
113    public TransactionGlAccountCategoryDetailPK getPrimaryKey() {
114        if(_primaryKey == null) {
115            _primaryKey = new TransactionGlAccountCategoryDetailPK(entityId);
116        }
117        
118        return _primaryKey;
119    }
120    
121    private void clearHashAndString() {
122        _hashCode = null;
123        _stringValue = null;
124    }
125    
126    @Override
127    public int hashCode() {
128        if(_hashCode == null) {
129            int hashCode = 17;
130            
131            hashCode = 37 * hashCode + ((entityId != null) ? entityId.hashCode() : 0);
132            
133            hashCode = 37 * hashCode + ((transactionGlAccountCategoryPK != null) ? transactionGlAccountCategoryPK.hashCode() : 0);
134            hashCode = 37 * hashCode + ((transactionTypePK != null) ? transactionTypePK.hashCode() : 0);
135            hashCode = 37 * hashCode + ((transactionGlAccountCategoryName != null) ? transactionGlAccountCategoryName.hashCode() : 0);
136            hashCode = 37 * hashCode + ((glAccountCategoryPK != null) ? glAccountCategoryPK.hashCode() : 0);
137            hashCode = 37 * hashCode + ((sortOrder != null) ? sortOrder.hashCode() : 0);
138            hashCode = 37 * hashCode + ((fromTime != null) ? fromTime.hashCode() : 0);
139            hashCode = 37 * hashCode + ((thruTime != null) ? thruTime.hashCode() : 0);
140            
141            _hashCode = hashCode;
142        }
143        
144        return _hashCode;
145    }
146    
147    @Override
148    public String toString() {
149        if(_stringValue == null) {
150            StringBuilder stringValue = new StringBuilder("{");
151            
152            stringValue.append("entityId=").append(getEntityId());
153            
154            stringValue.append(", transactionGlAccountCategoryPK=").append(getTransactionGlAccountCategoryPK());
155            stringValue.append(", transactionTypePK=").append(getTransactionTypePK());
156            stringValue.append(", transactionGlAccountCategoryName=").append(getTransactionGlAccountCategoryName());
157            stringValue.append(", glAccountCategoryPK=").append(getGlAccountCategoryPK());
158            stringValue.append(", sortOrder=").append(getSortOrder());
159            stringValue.append(", fromTime=").append(getFromTime());
160            stringValue.append(", thruTime=").append(getThruTime());
161            
162            stringValue.append('}');
163            
164            _stringValue = stringValue.toString();
165        }
166        return _stringValue;
167    }
168    
169    @Override
170    public boolean equals(Object other) {
171        if(this == other)
172            return true;
173        
174        if(!hasIdentity())
175            return false;
176        
177        if(other instanceof  TransactionGlAccountCategoryDetailValue) {
178            TransactionGlAccountCategoryDetailValue that = (TransactionGlAccountCategoryDetailValue)other;
179            
180            if(!that.hasIdentity())
181                return false;
182            
183            Long thisEntityId = getEntityId();
184            Long thatEntityId = that.getEntityId();
185            
186            boolean objectsEqual = thisEntityId.equals(thatEntityId);
187            if(objectsEqual)
188                objectsEqual = objectsEqual && isIdentical(that);
189            
190            return objectsEqual;
191        } else {
192            return false;
193        }
194    }
195    
196    public boolean isIdentical(Object other) {
197        if(other instanceof TransactionGlAccountCategoryDetailValue) {
198            TransactionGlAccountCategoryDetailValue that = (TransactionGlAccountCategoryDetailValue)other;
199            boolean objectsEqual = true;
200            
201            
202            if(objectsEqual) {
203                TransactionGlAccountCategoryPK thisTransactionGlAccountCategoryPK = getTransactionGlAccountCategoryPK();
204                TransactionGlAccountCategoryPK thatTransactionGlAccountCategoryPK = that.getTransactionGlAccountCategoryPK();
205                
206                if(thisTransactionGlAccountCategoryPK == null) {
207                    objectsEqual = objectsEqual && (thatTransactionGlAccountCategoryPK == null);
208                } else {
209                    objectsEqual = objectsEqual && thisTransactionGlAccountCategoryPK.equals(thatTransactionGlAccountCategoryPK);
210                }
211            }
212            
213            if(objectsEqual) {
214                TransactionTypePK thisTransactionTypePK = getTransactionTypePK();
215                TransactionTypePK thatTransactionTypePK = that.getTransactionTypePK();
216                
217                if(thisTransactionTypePK == null) {
218                    objectsEqual = objectsEqual && (thatTransactionTypePK == null);
219                } else {
220                    objectsEqual = objectsEqual && thisTransactionTypePK.equals(thatTransactionTypePK);
221                }
222            }
223            
224            if(objectsEqual) {
225                String thisTransactionGlAccountCategoryName = getTransactionGlAccountCategoryName();
226                String thatTransactionGlAccountCategoryName = that.getTransactionGlAccountCategoryName();
227                
228                if(thisTransactionGlAccountCategoryName == null) {
229                    objectsEqual = objectsEqual && (thatTransactionGlAccountCategoryName == null);
230                } else {
231                    objectsEqual = objectsEqual && thisTransactionGlAccountCategoryName.equals(thatTransactionGlAccountCategoryName);
232                }
233            }
234            
235            if(objectsEqual) {
236                GlAccountCategoryPK thisGlAccountCategoryPK = getGlAccountCategoryPK();
237                GlAccountCategoryPK thatGlAccountCategoryPK = that.getGlAccountCategoryPK();
238                
239                if(thisGlAccountCategoryPK == null) {
240                    objectsEqual = objectsEqual && (thatGlAccountCategoryPK == null);
241                } else {
242                    objectsEqual = objectsEqual && thisGlAccountCategoryPK.equals(thatGlAccountCategoryPK);
243                }
244            }
245            
246            if(objectsEqual) {
247                Integer thisSortOrder = getSortOrder();
248                Integer thatSortOrder = that.getSortOrder();
249                
250                if(thisSortOrder == null) {
251                    objectsEqual = objectsEqual && (thatSortOrder == null);
252                } else {
253                    objectsEqual = objectsEqual && thisSortOrder.equals(thatSortOrder);
254                }
255            }
256            
257            if(objectsEqual) {
258                Long thisFromTime = getFromTime();
259                Long thatFromTime = that.getFromTime();
260                
261                if(thisFromTime == null) {
262                    objectsEqual = objectsEqual && (thatFromTime == null);
263                } else {
264                    objectsEqual = objectsEqual && thisFromTime.equals(thatFromTime);
265                }
266            }
267            
268            if(objectsEqual) {
269                Long thisThruTime = getThruTime();
270                Long thatThruTime = that.getThruTime();
271                
272                if(thisThruTime == null) {
273                    objectsEqual = objectsEqual && (thatThruTime == null);
274                } else {
275                    objectsEqual = objectsEqual && thisThruTime.equals(thatThruTime);
276                }
277            }
278            
279            return objectsEqual;
280        } else {
281            return false;
282        }
283    }
284    
285    @Override
286    public boolean hasBeenModified() {
287        return transactionGlAccountCategoryPKHasBeenModified || transactionTypePKHasBeenModified || transactionGlAccountCategoryNameHasBeenModified || glAccountCategoryPKHasBeenModified || sortOrderHasBeenModified || fromTimeHasBeenModified || thruTimeHasBeenModified;
288    }
289    
290    @Override
291    public void clearHasBeenModified() {
292        transactionGlAccountCategoryPKHasBeenModified = false;
293        transactionTypePKHasBeenModified = false;
294        transactionGlAccountCategoryNameHasBeenModified = false;
295        glAccountCategoryPKHasBeenModified = false;
296        sortOrderHasBeenModified = false;
297        fromTimeHasBeenModified = false;
298        thruTimeHasBeenModified = false;
299    }
300    
301    public TransactionGlAccountCategoryPK getTransactionGlAccountCategoryPK() {
302        return transactionGlAccountCategoryPK;
303    }
304    
305    public void setTransactionGlAccountCategoryPK(TransactionGlAccountCategoryPK transactionGlAccountCategoryPK)
306            throws PersistenceNotNullException {
307        checkForNull(transactionGlAccountCategoryPK);
308        
309        boolean update = true;
310        
311        if(this.transactionGlAccountCategoryPK != null) {
312            if(this.transactionGlAccountCategoryPK.equals(transactionGlAccountCategoryPK)) {
313                update = false;
314            }
315        } else if(transactionGlAccountCategoryPK == null) {
316            update = false;
317        }
318        
319        if(update) {
320            this.transactionGlAccountCategoryPK = transactionGlAccountCategoryPK;
321            transactionGlAccountCategoryPKHasBeenModified = true;
322            clearHashAndString();
323        }
324    }
325    
326    public boolean getTransactionGlAccountCategoryPKHasBeenModified() {
327        return transactionGlAccountCategoryPKHasBeenModified;
328    }
329    
330    public TransactionTypePK getTransactionTypePK() {
331        return transactionTypePK;
332    }
333    
334    public void setTransactionTypePK(TransactionTypePK transactionTypePK)
335            throws PersistenceNotNullException {
336        checkForNull(transactionTypePK);
337        
338        boolean update = true;
339        
340        if(this.transactionTypePK != null) {
341            if(this.transactionTypePK.equals(transactionTypePK)) {
342                update = false;
343            }
344        } else if(transactionTypePK == null) {
345            update = false;
346        }
347        
348        if(update) {
349            this.transactionTypePK = transactionTypePK;
350            transactionTypePKHasBeenModified = true;
351            clearHashAndString();
352        }
353    }
354    
355    public boolean getTransactionTypePKHasBeenModified() {
356        return transactionTypePKHasBeenModified;
357    }
358    
359    public String getTransactionGlAccountCategoryName() {
360        return transactionGlAccountCategoryName;
361    }
362    
363    public void setTransactionGlAccountCategoryName(String transactionGlAccountCategoryName)
364            throws PersistenceNotNullException {
365        checkForNull(transactionGlAccountCategoryName);
366        
367        boolean update = true;
368        
369        if(this.transactionGlAccountCategoryName != null) {
370            if(this.transactionGlAccountCategoryName.equals(transactionGlAccountCategoryName)) {
371                update = false;
372            }
373        } else if(transactionGlAccountCategoryName == null) {
374            update = false;
375        }
376        
377        if(update) {
378            this.transactionGlAccountCategoryName = transactionGlAccountCategoryName;
379            transactionGlAccountCategoryNameHasBeenModified = true;
380            clearHashAndString();
381        }
382    }
383    
384    public boolean getTransactionGlAccountCategoryNameHasBeenModified() {
385        return transactionGlAccountCategoryNameHasBeenModified;
386    }
387    
388    public GlAccountCategoryPK getGlAccountCategoryPK() {
389        return glAccountCategoryPK;
390    }
391    
392    public void setGlAccountCategoryPK(GlAccountCategoryPK glAccountCategoryPK) {
393        boolean update = true;
394        
395        if(this.glAccountCategoryPK != null) {
396            if(this.glAccountCategoryPK.equals(glAccountCategoryPK)) {
397                update = false;
398            }
399        } else if(glAccountCategoryPK == null) {
400            update = false;
401        }
402        
403        if(update) {
404            this.glAccountCategoryPK = glAccountCategoryPK;
405            glAccountCategoryPKHasBeenModified = true;
406            clearHashAndString();
407        }
408    }
409    
410    public boolean getGlAccountCategoryPKHasBeenModified() {
411        return glAccountCategoryPKHasBeenModified;
412    }
413    
414    public Integer getSortOrder() {
415        return sortOrder;
416    }
417    
418    public void setSortOrder(Integer sortOrder)
419            throws PersistenceNotNullException {
420        checkForNull(sortOrder);
421        
422        boolean update = true;
423        
424        if(this.sortOrder != null) {
425            if(this.sortOrder.equals(sortOrder)) {
426                update = false;
427            }
428        } else if(sortOrder == null) {
429            update = false;
430        }
431        
432        if(update) {
433            this.sortOrder = sortOrder;
434            sortOrderHasBeenModified = true;
435            clearHashAndString();
436        }
437    }
438    
439    public boolean getSortOrderHasBeenModified() {
440        return sortOrderHasBeenModified;
441    }
442    
443    public Long getFromTime() {
444        return fromTime;
445    }
446    
447    public void setFromTime(Long fromTime)
448            throws PersistenceNotNullException {
449        checkForNull(fromTime);
450        
451        boolean update = true;
452        
453        if(this.fromTime != null) {
454            if(this.fromTime.equals(fromTime)) {
455                update = false;
456            }
457        } else if(fromTime == null) {
458            update = false;
459        }
460        
461        if(update) {
462            this.fromTime = fromTime;
463            fromTimeHasBeenModified = true;
464            clearHashAndString();
465        }
466    }
467    
468    public boolean getFromTimeHasBeenModified() {
469        return fromTimeHasBeenModified;
470    }
471    
472    public Long getThruTime() {
473        return thruTime;
474    }
475    
476    public void setThruTime(Long thruTime)
477            throws PersistenceNotNullException {
478        checkForNull(thruTime);
479        
480        boolean update = true;
481        
482        if(this.thruTime != null) {
483            if(this.thruTime.equals(thruTime)) {
484                update = false;
485            }
486        } else if(thruTime == null) {
487            update = false;
488        }
489        
490        if(update) {
491            this.thruTime = thruTime;
492            thruTimeHasBeenModified = true;
493            clearHashAndString();
494        }
495    }
496    
497    public boolean getThruTimeHasBeenModified() {
498        return thruTimeHasBeenModified;
499    }
500    
501}