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