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