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 * OrderPaymentPreferenceDetailFactory.java
021 */
022
023package com.echothree.model.data.order.server.factory;
024
025import com.echothree.model.data.order.common.pk.OrderPaymentPreferencePK;
026import com.echothree.model.data.order.common.pk.OrderPK;
027import com.echothree.model.data.payment.common.pk.PaymentMethodPK;
028import com.echothree.model.data.payment.common.pk.PartyPaymentMethodPK;
029
030import com.echothree.model.data.order.server.entity.OrderPaymentPreference;
031import com.echothree.model.data.order.server.entity.Order;
032import com.echothree.model.data.payment.server.entity.PaymentMethod;
033import com.echothree.model.data.payment.server.entity.PartyPaymentMethod;
034
035import com.echothree.model.data.order.common.OrderPaymentPreferenceDetailConstants;
036import com.echothree.model.data.order.common.pk.OrderPaymentPreferenceDetailPK;
037import com.echothree.model.data.order.server.value.OrderPaymentPreferenceDetailValue;
038import com.echothree.model.data.order.server.entity.OrderPaymentPreferenceDetail;
039import com.echothree.util.common.exception.PersistenceDatabaseException;
040import com.echothree.util.common.exception.PersistenceDatabaseUpdateException;
041import com.echothree.util.common.exception.PersistenceNotNullException;
042import com.echothree.util.server.persistence.BaseFactory;
043import com.echothree.util.server.persistence.EntityIdGenerator;
044import com.echothree.util.server.persistence.EntityPermission;
045import com.echothree.util.server.persistence.PersistenceDebugFlags;
046import com.echothree.util.server.persistence.Session;
047import java.sql.PreparedStatement;
048import java.sql.ResultSet;
049import java.sql.SQLException;
050import java.sql.Types;
051import java.io.ByteArrayInputStream;
052import java.io.StringReader;
053import java.util.ArrayList;
054import java.util.Collection;
055import java.util.HashSet;
056import java.util.List;
057import java.util.Map;
058import java.util.Set;
059import javax.enterprise.context.ApplicationScoped;
060import javax.enterprise.inject.spi.CDI;
061import javax.inject.Inject;
062import org.slf4j.Logger;
063import org.slf4j.LoggerFactory;
064
065@ApplicationScoped
066public class OrderPaymentPreferenceDetailFactory
067        implements BaseFactory<OrderPaymentPreferenceDetailPK, OrderPaymentPreferenceDetail> {
068    
069    @Inject
070    Session session;
071    
072    //private static final Logger log = LoggerFactory.getLogger(OrderPaymentPreferenceDetailFactory.class);
073    
074    final private static String SQL_SELECT_READ_ONLY = "SELECT ordpymtprfdt_orderpaymentpreferencedetailid, ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid, ordpymtprfdt_ord_orderid, ordpymtprfdt_orderpaymentpreferencesequence, ordpymtprfdt_pm_paymentmethodid, ordpymtprfdt_parpm_partypaymentmethodid, ordpymtprfdt_waspresent, ordpymtprfdt_maximumamount, ordpymtprfdt_sortorder, ordpymtprfdt_fromtime, ordpymtprfdt_thrutime FROM orderpaymentpreferencedetails WHERE ordpymtprfdt_orderpaymentpreferencedetailid = ?";
075    final private static String SQL_SELECT_READ_WRITE = "SELECT ordpymtprfdt_orderpaymentpreferencedetailid, ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid, ordpymtprfdt_ord_orderid, ordpymtprfdt_orderpaymentpreferencesequence, ordpymtprfdt_pm_paymentmethodid, ordpymtprfdt_parpm_partypaymentmethodid, ordpymtprfdt_waspresent, ordpymtprfdt_maximumamount, ordpymtprfdt_sortorder, ordpymtprfdt_fromtime, ordpymtprfdt_thrutime FROM orderpaymentpreferencedetails WHERE ordpymtprfdt_orderpaymentpreferencedetailid = ? FOR UPDATE";
076    final private static String SQL_INSERT = "INSERT INTO orderpaymentpreferencedetails (ordpymtprfdt_orderpaymentpreferencedetailid, ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid, ordpymtprfdt_ord_orderid, ordpymtprfdt_orderpaymentpreferencesequence, ordpymtprfdt_pm_paymentmethodid, ordpymtprfdt_parpm_partypaymentmethodid, ordpymtprfdt_waspresent, ordpymtprfdt_maximumamount, ordpymtprfdt_sortorder, ordpymtprfdt_fromtime, ordpymtprfdt_thrutime) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
077    final private static String SQL_UPDATE = "UPDATE orderpaymentpreferencedetails SET ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid = ?, ordpymtprfdt_ord_orderid = ?, ordpymtprfdt_orderpaymentpreferencesequence = ?, ordpymtprfdt_pm_paymentmethodid = ?, ordpymtprfdt_parpm_partypaymentmethodid = ?, ordpymtprfdt_waspresent = ?, ordpymtprfdt_maximumamount = ?, ordpymtprfdt_sortorder = ?, ordpymtprfdt_fromtime = ?, ordpymtprfdt_thrutime = ? WHERE ordpymtprfdt_orderpaymentpreferencedetailid = ?";
078    final private static String SQL_DELETE = "DELETE FROM orderpaymentpreferencedetails WHERE ordpymtprfdt_orderpaymentpreferencedetailid = ?";
079    final private static String SQL_VALID = "SELECT COUNT(*) FROM orderpaymentpreferencedetails WHERE ordpymtprfdt_orderpaymentpreferencedetailid = ?";
080    
081    final private static String PK_COLUMN = "ordpymtprfdt_orderpaymentpreferencedetailid";
082    final private static String ALL_COLUMNS = "ordpymtprfdt_orderpaymentpreferencedetailid, ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid, ordpymtprfdt_ord_orderid, ordpymtprfdt_orderpaymentpreferencesequence, ordpymtprfdt_pm_paymentmethodid, ordpymtprfdt_parpm_partypaymentmethodid, ordpymtprfdt_waspresent, ordpymtprfdt_maximumamount, ordpymtprfdt_sortorder, ordpymtprfdt_fromtime, ordpymtprfdt_thrutime";
083    final public static String TABLE_NAME = "orderpaymentpreferencedetails";
084    
085    final public static String ORDPYMTPRFDT_ORDERPAYMENTPREFERENCEDETAILID = "ordpymtprfdt_orderpaymentpreferencedetailid";
086    final public static String ORDPYMTPRFDT_ORDPYMTPRF_ORDERPAYMENTPREFERENCEID = "ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid";
087    final public static String ORDPYMTPRFDT_ORD_ORDERID = "ordpymtprfdt_ord_orderid";
088    final public static String ORDPYMTPRFDT_ORDERPAYMENTPREFERENCESEQUENCE = "ordpymtprfdt_orderpaymentpreferencesequence";
089    final public static String ORDPYMTPRFDT_PM_PAYMENTMETHODID = "ordpymtprfdt_pm_paymentmethodid";
090    final public static String ORDPYMTPRFDT_PARPM_PARTYPAYMENTMETHODID = "ordpymtprfdt_parpm_partypaymentmethodid";
091    final public static String ORDPYMTPRFDT_WASPRESENT = "ordpymtprfdt_waspresent";
092    final public static String ORDPYMTPRFDT_MAXIMUMAMOUNT = "ordpymtprfdt_maximumamount";
093    final public static String ORDPYMTPRFDT_SORTORDER = "ordpymtprfdt_sortorder";
094    final public static String ORDPYMTPRFDT_FROMTIME = "ordpymtprfdt_fromtime";
095    final public static String ORDPYMTPRFDT_THRUTIME = "ordpymtprfdt_thrutime";
096    
097    final private static EntityIdGenerator entityIdGenerator = new EntityIdGenerator(OrderPaymentPreferenceDetailConstants.COMPONENT_VENDOR_NAME, OrderPaymentPreferenceDetailConstants.ENTITY_TYPE_NAME);
098    
099    /** Creates a new instance of OrderPaymentPreferenceDetailFactory */
100    protected OrderPaymentPreferenceDetailFactory() {
101        super();
102    }
103    
104    public static OrderPaymentPreferenceDetailFactory getInstance() {
105        return CDI.current().select(OrderPaymentPreferenceDetailFactory.class).get();
106    }
107    
108    @Override
109    public String getPKColumn() {
110        return PK_COLUMN;
111    }
112    
113    @Override
114    public String getAllColumns() {
115        return ALL_COLUMNS;
116    }
117    
118    @Override
119    public String getTableName() {
120        return TABLE_NAME;
121    }
122    
123    @Override
124    public String getComponentVendorName() {
125        return OrderPaymentPreferenceDetailConstants.COMPONENT_VENDOR_NAME;
126    }
127    
128    @Override
129    public String getEntityTypeName() {
130        return OrderPaymentPreferenceDetailConstants.ENTITY_TYPE_NAME;
131    }
132    
133    public PreparedStatement prepareStatement(String query) {
134        return session.prepareStatement(OrderPaymentPreferenceDetailFactory.class, query);
135    }
136    
137    public OrderPaymentPreferenceDetailPK getNextPK() {
138        return new OrderPaymentPreferenceDetailPK(entityIdGenerator.getNextEntityId());
139    }
140    
141    public Set<OrderPaymentPreferenceDetailPK> getPKsFromResultSetAsSet(ResultSet rs)
142            throws PersistenceDatabaseException {
143        Set<OrderPaymentPreferenceDetailPK> _result = new HashSet<>();
144        
145        try {
146            while(rs.next()) {
147                _result.add(getPKFromResultSet(rs));
148            }
149        } catch (SQLException se) {
150            throw new PersistenceDatabaseException(se);
151        }
152        
153        return _result;
154    }
155    
156    public java.util.List<OrderPaymentPreferenceDetailPK> getPKsFromResultSetAsList(ResultSet rs)
157            throws PersistenceDatabaseException {
158        java.util.List<OrderPaymentPreferenceDetailPK> _result = new ArrayList<>();
159        
160        try {
161            while(rs.next()) {
162                _result.add(getPKFromResultSet(rs));
163            }
164        } catch (SQLException se) {
165            throw new PersistenceDatabaseException(se);
166        }
167        
168        return _result;
169    }
170    
171    public OrderPaymentPreferenceDetailPK getPKFromResultSet(ResultSet rs)
172            throws PersistenceDatabaseException {
173        OrderPaymentPreferenceDetailPK _result;
174        
175        try {
176            long ordpymtprfdt_orderpaymentpreferencedetailid = rs.getLong(ORDPYMTPRFDT_ORDERPAYMENTPREFERENCEDETAILID);
177            Long _entityId = rs.wasNull() ? null : ordpymtprfdt_orderpaymentpreferencedetailid;
178            
179            _result = new OrderPaymentPreferenceDetailPK(_entityId);
180        } catch (SQLException se) {
181            throw new PersistenceDatabaseException(se);
182        }
183        
184        return _result;
185    }
186    
187    public java.util.List<OrderPaymentPreferenceDetailValue> getValuesFromPKs(Collection<OrderPaymentPreferenceDetailPK> pks)
188            throws PersistenceDatabaseException {
189        java.util.List<OrderPaymentPreferenceDetailValue> _values = new ArrayList<>(pks.size());
190        
191        for(OrderPaymentPreferenceDetailPK _pk: pks) {
192            _values.add(getValueFromPK(_pk));
193        }
194        
195        return _values;
196    }
197    
198    public OrderPaymentPreferenceDetailValue getValueFromPK(OrderPaymentPreferenceDetailPK pk)
199            throws PersistenceDatabaseException {
200        OrderPaymentPreferenceDetailValue _value;
201        
202        // See if we already have the entity in the session cache
203        OrderPaymentPreferenceDetail _entity = (OrderPaymentPreferenceDetail)session.getEntity(pk);
204        if(_entity == null)
205            _value = getEntityFromPK(EntityPermission.READ_ONLY, pk).getOrderPaymentPreferenceDetailValue();
206        else
207            _value = _entity.getOrderPaymentPreferenceDetailValue();
208        
209        return _value;
210    }
211    
212    public java.util.List<OrderPaymentPreferenceDetailValue> getValuesFromResultSet(ResultSet rs)
213            throws PersistenceDatabaseException {
214        java.util.List<OrderPaymentPreferenceDetailValue> _result = new ArrayList<>();
215        
216        try {
217            while(rs.next()) {
218                _result.add(getValueFromResultSet(rs));
219            }
220        } catch (SQLException se) {
221            throw new PersistenceDatabaseException(se);
222        }
223        
224        return _result;
225    }
226    
227    public OrderPaymentPreferenceDetailValue getValueFromResultSet(ResultSet rs)
228            throws PersistenceDatabaseException {
229        OrderPaymentPreferenceDetailValue _value;
230        
231        try {
232            Long ordpymtprfdt_orderpaymentpreferencedetailid = rs.getLong(ORDPYMTPRFDT_ORDERPAYMENTPREFERENCEDETAILID);
233            OrderPaymentPreferenceDetailPK _pk = new OrderPaymentPreferenceDetailPK(ordpymtprfdt_orderpaymentpreferencedetailid);
234            
235            // See if we already have the entity in the session cache
236            OrderPaymentPreferenceDetail _entity = (OrderPaymentPreferenceDetail)session.getEntity(_pk);
237            
238            if(_entity == null) {
239                Long ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid = rs.getLong(ORDPYMTPRFDT_ORDPYMTPRF_ORDERPAYMENTPREFERENCEID);
240                if(rs.wasNull())
241                    ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid = null;
242                
243                Long ordpymtprfdt_ord_orderid = rs.getLong(ORDPYMTPRFDT_ORD_ORDERID);
244                if(rs.wasNull())
245                    ordpymtprfdt_ord_orderid = null;
246                
247                Integer ordpymtprfdt_orderpaymentpreferencesequence = rs.getInt(ORDPYMTPRFDT_ORDERPAYMENTPREFERENCESEQUENCE);
248                if(rs.wasNull())
249                    ordpymtprfdt_orderpaymentpreferencesequence = null;
250                
251                Long ordpymtprfdt_pm_paymentmethodid = rs.getLong(ORDPYMTPRFDT_PM_PAYMENTMETHODID);
252                if(rs.wasNull())
253                    ordpymtprfdt_pm_paymentmethodid = null;
254                
255                Long ordpymtprfdt_parpm_partypaymentmethodid = rs.getLong(ORDPYMTPRFDT_PARPM_PARTYPAYMENTMETHODID);
256                if(rs.wasNull())
257                    ordpymtprfdt_parpm_partypaymentmethodid = null;
258                
259                Boolean ordpymtprfdt_waspresent = rs.getInt(ORDPYMTPRFDT_WASPRESENT) == 1;
260                if(rs.wasNull())
261                    ordpymtprfdt_waspresent = null;
262                
263                Long ordpymtprfdt_maximumamount = rs.getLong(ORDPYMTPRFDT_MAXIMUMAMOUNT);
264                if(rs.wasNull())
265                    ordpymtprfdt_maximumamount = null;
266                
267                Integer ordpymtprfdt_sortorder = rs.getInt(ORDPYMTPRFDT_SORTORDER);
268                if(rs.wasNull())
269                    ordpymtprfdt_sortorder = null;
270                
271                Long ordpymtprfdt_fromtime = rs.getLong(ORDPYMTPRFDT_FROMTIME);
272                if(rs.wasNull())
273                    ordpymtprfdt_fromtime = null;
274                
275                Long ordpymtprfdt_thrutime = rs.getLong(ORDPYMTPRFDT_THRUTIME);
276                if(rs.wasNull())
277                    ordpymtprfdt_thrutime = null;
278                
279                _value = new OrderPaymentPreferenceDetailValue(_pk, new OrderPaymentPreferencePK(ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid), new OrderPK(ordpymtprfdt_ord_orderid), ordpymtprfdt_orderpaymentpreferencesequence, new PaymentMethodPK(ordpymtprfdt_pm_paymentmethodid), new PartyPaymentMethodPK(ordpymtprfdt_parpm_partypaymentmethodid), ordpymtprfdt_waspresent, ordpymtprfdt_maximumamount, ordpymtprfdt_sortorder, ordpymtprfdt_fromtime, ordpymtprfdt_thrutime);
280            } else
281                _value = _entity.getOrderPaymentPreferenceDetailValue();
282        } catch (SQLException se) {
283            throw new PersistenceDatabaseException(se);
284        }
285        
286        return _value;
287    }
288    
289    public java.util.List<OrderPaymentPreferenceDetail> getEntitiesFromPKs(EntityPermission entityPermission, Collection<OrderPaymentPreferenceDetailPK> pks)
290            throws PersistenceDatabaseException {
291        java.util.List<OrderPaymentPreferenceDetail> _entities = new ArrayList<>(pks.size());
292        
293        for(OrderPaymentPreferenceDetailPK _pk: pks) {
294            _entities.add(getEntityFromPK(entityPermission, _pk));
295        }
296        
297        return _entities;
298    }
299    
300    public OrderPaymentPreferenceDetail getEntityFromValue(EntityPermission entityPermission, OrderPaymentPreferenceDetailValue value) {
301        return getEntityFromPK(entityPermission, value.getPrimaryKey());
302    }
303    
304    public OrderPaymentPreferenceDetail getEntityFromCache(OrderPaymentPreferenceDetailPK pk) {
305        OrderPaymentPreferenceDetailValue _value = (OrderPaymentPreferenceDetailValue)session.getValueCache().get(pk);
306    
307        return _value == null ? null : new OrderPaymentPreferenceDetail(_value, EntityPermission.READ_ONLY);
308    }
309    
310    public OrderPaymentPreferenceDetail getEntityFromPK(EntityPermission entityPermission, OrderPaymentPreferenceDetailPK pk)
311            throws PersistenceDatabaseException {
312        OrderPaymentPreferenceDetail _entity;
313        
314        // See if we already have the entity in the session cache
315        _entity = (OrderPaymentPreferenceDetail)session.getEntity(pk);
316        if(_entity != null) {
317            // If the requested permission is READ_WRITE, and the cached permission is
318            // READ_ONLY, then pretend that the cached object wasn't found, and create
319            // a new entity that is READ_WRITE.
320            if(entityPermission.equals(EntityPermission.READ_WRITE)) {
321                if(_entity.getEntityPermission().equals(EntityPermission.READ_ONLY))
322                    _entity = null;
323            }
324        }
325        
326        if(_entity == null && entityPermission.equals(EntityPermission.READ_ONLY)) {
327            _entity = getEntityFromCache(pk);
328        }
329        
330        if(_entity == null) {
331            PreparedStatement _ps = session.prepareStatement(entityPermission.equals(EntityPermission.READ_ONLY)? SQL_SELECT_READ_ONLY: SQL_SELECT_READ_WRITE);
332            long _entityId = pk.getEntityId();
333            ResultSet _rs = null;
334            
335            try {
336                _ps.setLong(1, _entityId);
337                _rs = _ps.executeQuery();
338                if(_rs.next()) {
339                    _entity = getEntityFromResultSet(entityPermission, _rs);
340                }
341            } catch (SQLException se) {
342                throw new PersistenceDatabaseException(se);
343            } finally {
344                if(_rs != null) {
345                    try {
346                        _rs.close();
347                    } catch (SQLException se) {
348                        // do nothing
349                    }
350                }
351            }
352        }
353        
354        return _entity;
355    }
356    
357    public Set<OrderPaymentPreferenceDetailPK> getPKsFromQueryAsSet(PreparedStatement ps, final Object... params)
358            throws PersistenceDatabaseException {
359        Set<OrderPaymentPreferenceDetailPK> _pks;
360        ResultSet _rs = null;
361        
362        try {
363            if(params.length != 0) {
364                Session.setQueryParams(ps, params);
365            }
366            
367            _rs = ps.executeQuery();
368            _pks = getPKsFromResultSetAsSet(_rs);
369            _rs.close();
370        } catch (SQLException se) {
371            throw new PersistenceDatabaseException(se);
372        } finally {
373            if(_rs != null) {
374                try {
375                    _rs.close();
376                } catch (SQLException se) {
377                    // do nothing
378                }
379            }
380        }
381        
382        return _pks;
383    }
384    
385    public java.util.List<OrderPaymentPreferenceDetailPK> getPKsFromQueryAsList(PreparedStatement ps, final Object... params)
386            throws PersistenceDatabaseException {
387        java.util.List<OrderPaymentPreferenceDetailPK> _pks;
388        ResultSet _rs = null;
389        
390        try {
391            if(params.length != 0) {
392                Session.setQueryParams(ps, params);
393            }
394            
395            _rs = ps.executeQuery();
396            _pks = getPKsFromResultSetAsList(_rs);
397            _rs.close();
398        } catch (SQLException se) {
399            throw new PersistenceDatabaseException(se);
400        } finally {
401            if(_rs != null) {
402                try {
403                    _rs.close();
404                } catch (SQLException se) {
405                    // do nothing
406                }
407            }
408        }
409        
410        return _pks;
411    }
412    
413    public OrderPaymentPreferenceDetailPK getPKFromQuery(PreparedStatement ps, final Object... params)
414            throws PersistenceDatabaseException {
415        OrderPaymentPreferenceDetailPK _pk = null;
416        ResultSet _rs = null;
417        
418        try {
419            if(params.length != 0) {
420                Session.setQueryParams(ps, params);
421            }
422            
423            _rs = ps.executeQuery();
424            if(_rs.next()) {
425                _pk = getPKFromResultSet(_rs);
426            }
427            _rs.close();
428        } catch (SQLException se) {
429            throw new PersistenceDatabaseException(se);
430        } finally {
431            if(_rs != null) {
432                try {
433                    _rs.close();
434                } catch (SQLException se) {
435                    // do nothing
436                }
437            }
438        }
439        
440        return _pk;
441    }
442    
443    public java.util.List<OrderPaymentPreferenceDetail> getEntitiesFromQuery(EntityPermission entityPermission, Map<EntityPermission, String>queryMap, final Object... params)
444            throws PersistenceDatabaseException {
445        PreparedStatement ps = session.prepareStatement(OrderPaymentPreferenceDetailFactory.class, queryMap.get(entityPermission));
446        
447        return getEntitiesFromQuery(entityPermission, ps, params);
448    }
449    
450    public java.util.List<OrderPaymentPreferenceDetail> getEntitiesFromQuery(EntityPermission entityPermission, Map<EntityPermission, String>queryMap)
451            throws PersistenceDatabaseException {
452        PreparedStatement ps = session.prepareStatement(OrderPaymentPreferenceDetailFactory.class, queryMap.get(entityPermission));
453        
454        return getEntitiesFromQuery(entityPermission, ps);
455    }
456    
457    public java.util.List<OrderPaymentPreferenceDetail> getEntitiesFromQuery(EntityPermission entityPermission, PreparedStatement ps, final Object... params)
458            throws PersistenceDatabaseException {
459        java.util.List<OrderPaymentPreferenceDetail> _entities;
460        ResultSet _rs = null;
461        
462        try {
463            if(params.length != 0) {
464                Session.setQueryParams(ps, params);
465            }
466            
467            _rs = ps.executeQuery();
468            _entities = getEntitiesFromResultSet(entityPermission, _rs);
469            _rs.close();
470        } catch (SQLException se) {
471            throw new PersistenceDatabaseException(se);
472        } finally {
473            if(_rs != null) {
474                try {
475                    _rs.close();
476                } catch (SQLException se) {
477                    // do nothing
478                }
479            }
480        }
481        
482        return _entities;
483    }
484    
485    public OrderPaymentPreferenceDetail getEntityFromQuery(EntityPermission entityPermission, Map<EntityPermission, String>queryMap, final Object... params)
486            throws PersistenceDatabaseException {
487        PreparedStatement ps = session.prepareStatement(OrderPaymentPreferenceDetailFactory.class, queryMap.get(entityPermission));
488        
489        return getEntityFromQuery(entityPermission, ps, params);
490    }
491    
492    public OrderPaymentPreferenceDetail getEntityFromQuery(EntityPermission entityPermission, Map<EntityPermission, String>queryMap)
493            throws PersistenceDatabaseException {
494        PreparedStatement ps = session.prepareStatement(OrderPaymentPreferenceDetailFactory.class, queryMap.get(entityPermission));
495        
496        return getEntityFromQuery(entityPermission, ps);
497    }
498    
499    public OrderPaymentPreferenceDetail getEntityFromQuery(EntityPermission entityPermission, PreparedStatement ps, final Object... params)
500            throws PersistenceDatabaseException {
501        OrderPaymentPreferenceDetail _entity = null;
502        ResultSet _rs = null;
503        
504        try {
505            if(params.length != 0) {
506                Session.setQueryParams(ps, params);
507            }
508            
509            _rs = ps.executeQuery();
510            if(_rs.next()) {
511                _entity = getEntityFromResultSet(entityPermission, _rs);
512            }
513            _rs.close();
514        } catch (SQLException se) {
515            throw new PersistenceDatabaseException(se);
516        } finally {
517            if(_rs != null) {
518                try {
519                    _rs.close();
520                } catch (SQLException se) {
521                    // do nothing
522                }
523            }
524        }
525        
526        return _entity;
527    }
528    
529    public java.util.List<OrderPaymentPreferenceDetail> getEntitiesFromResultSet(EntityPermission entityPermission, ResultSet rs)
530            throws PersistenceDatabaseException {
531        java.util.List<OrderPaymentPreferenceDetail> _result = new ArrayList<>();
532        
533        try {
534            while(rs.next()) {
535                _result.add(getEntityFromResultSet(entityPermission, rs));
536            }
537        } catch (SQLException se) {
538            throw new PersistenceDatabaseException(se);
539        }
540        
541        return _result;
542    }
543    
544    public OrderPaymentPreferenceDetail getEntityFromResultSet(EntityPermission entityPermission, ResultSet rs)
545            throws PersistenceDatabaseException {
546        OrderPaymentPreferenceDetail _entity;
547        
548        try {
549            Long ordpymtprfdt_orderpaymentpreferencedetailid = rs.getLong(ORDPYMTPRFDT_ORDERPAYMENTPREFERENCEDETAILID);
550            OrderPaymentPreferenceDetailPK _pk = new OrderPaymentPreferenceDetailPK(ordpymtprfdt_orderpaymentpreferencedetailid);
551            
552            // See if we already have the entity in the session cache
553            _entity = (OrderPaymentPreferenceDetail)session.getEntity(_pk);
554            if(_entity != null) {
555                // If the requested permission is READ_WRITE, and the cached permission is
556                // READ_ONLY, then pretend that the cached object wasn't found, and create
557                // a new entity that is READ_WRITE.
558                if(entityPermission.equals(EntityPermission.READ_WRITE)) {
559                    if(_entity.getEntityPermission().equals(EntityPermission.READ_ONLY))
560                        _entity = null;
561                }
562            }
563            boolean foundInSessionCache = _entity != null;
564            
565            if(_entity == null && entityPermission.equals(EntityPermission.READ_ONLY)) {
566                _entity = getEntityFromCache(_pk);
567            }
568            
569            if(_entity == null) {
570                Long ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid = rs.getLong(ORDPYMTPRFDT_ORDPYMTPRF_ORDERPAYMENTPREFERENCEID);
571                if(rs.wasNull())
572                    ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid = null;
573                
574                Long ordpymtprfdt_ord_orderid = rs.getLong(ORDPYMTPRFDT_ORD_ORDERID);
575                if(rs.wasNull())
576                    ordpymtprfdt_ord_orderid = null;
577                
578                Integer ordpymtprfdt_orderpaymentpreferencesequence = rs.getInt(ORDPYMTPRFDT_ORDERPAYMENTPREFERENCESEQUENCE);
579                if(rs.wasNull())
580                    ordpymtprfdt_orderpaymentpreferencesequence = null;
581                
582                Long ordpymtprfdt_pm_paymentmethodid = rs.getLong(ORDPYMTPRFDT_PM_PAYMENTMETHODID);
583                if(rs.wasNull())
584                    ordpymtprfdt_pm_paymentmethodid = null;
585                
586                Long ordpymtprfdt_parpm_partypaymentmethodid = rs.getLong(ORDPYMTPRFDT_PARPM_PARTYPAYMENTMETHODID);
587                if(rs.wasNull())
588                    ordpymtprfdt_parpm_partypaymentmethodid = null;
589                
590                Boolean ordpymtprfdt_waspresent = rs.getInt(ORDPYMTPRFDT_WASPRESENT) == 1;
591                if(rs.wasNull())
592                    ordpymtprfdt_waspresent = null;
593                
594                Long ordpymtprfdt_maximumamount = rs.getLong(ORDPYMTPRFDT_MAXIMUMAMOUNT);
595                if(rs.wasNull())
596                    ordpymtprfdt_maximumamount = null;
597                
598                Integer ordpymtprfdt_sortorder = rs.getInt(ORDPYMTPRFDT_SORTORDER);
599                if(rs.wasNull())
600                    ordpymtprfdt_sortorder = null;
601                
602                Long ordpymtprfdt_fromtime = rs.getLong(ORDPYMTPRFDT_FROMTIME);
603                if(rs.wasNull())
604                    ordpymtprfdt_fromtime = null;
605                
606                Long ordpymtprfdt_thrutime = rs.getLong(ORDPYMTPRFDT_THRUTIME);
607                if(rs.wasNull())
608                    ordpymtprfdt_thrutime = null;
609                
610                OrderPaymentPreferenceDetailValue _value = new OrderPaymentPreferenceDetailValue(_pk, ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid == null? null: new OrderPaymentPreferencePK(ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid), ordpymtprfdt_ord_orderid == null? null: new OrderPK(ordpymtprfdt_ord_orderid), ordpymtprfdt_orderpaymentpreferencesequence, ordpymtprfdt_pm_paymentmethodid == null? null: new PaymentMethodPK(ordpymtprfdt_pm_paymentmethodid), ordpymtprfdt_parpm_partypaymentmethodid == null? null: new PartyPaymentMethodPK(ordpymtprfdt_parpm_partypaymentmethodid), ordpymtprfdt_waspresent, ordpymtprfdt_maximumamount, ordpymtprfdt_sortorder, ordpymtprfdt_fromtime, ordpymtprfdt_thrutime);
611                _entity = new OrderPaymentPreferenceDetail(_value, entityPermission);
612            }
613            
614            if(!foundInSessionCache) {
615                if(entityPermission.equals(EntityPermission.READ_ONLY)) {
616                    session.putReadOnlyEntity(_pk, _entity);
617                    session.getValueCache().put(_entity.getOrderPaymentPreferenceDetailValue());
618                } else {
619                    session.putReadWriteEntity(_pk, _entity);
620                }
621            }
622        } catch (SQLException se) {
623            throw new PersistenceDatabaseException(se);
624        }
625        
626        return _entity;
627    }
628    
629    public OrderPaymentPreferenceDetail create(OrderPaymentPreference orderPaymentPreference, Order order, Integer orderPaymentPreferenceSequence, PaymentMethod paymentMethod, PartyPaymentMethod partyPaymentMethod, Boolean wasPresent, Long maximumAmount, Integer sortOrder, Long fromTime, Long thruTime)
630            throws PersistenceDatabaseException, PersistenceNotNullException {
631        return create(orderPaymentPreference == null ? null : orderPaymentPreference.getPrimaryKey(), order == null ? null : order.getPrimaryKey(), orderPaymentPreferenceSequence, paymentMethod == null ? null : paymentMethod.getPrimaryKey(), partyPaymentMethod == null ? null : partyPaymentMethod.getPrimaryKey(), wasPresent, maximumAmount, sortOrder, fromTime, thruTime);
632    }
633    
634    private void bindForCreate(PreparedStatement _ps, OrderPaymentPreferenceDetailValue _value)
635            throws SQLException {
636        _ps.setLong(1, _value.getEntityId());
637        
638        OrderPaymentPreferencePK ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid = _value.getOrderPaymentPreferencePK();
639        if(ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid == null)
640            _ps.setNull(2, Types.BIGINT);
641        else
642            _ps.setLong(2, ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid.getEntityId());
643            
644        OrderPK ordpymtprfdt_ord_orderid = _value.getOrderPK();
645        if(ordpymtprfdt_ord_orderid == null)
646            _ps.setNull(3, Types.BIGINT);
647        else
648            _ps.setLong(3, ordpymtprfdt_ord_orderid.getEntityId());
649            
650        Integer ordpymtprfdt_orderpaymentpreferencesequence = _value.getOrderPaymentPreferenceSequence();
651        if(ordpymtprfdt_orderpaymentpreferencesequence == null)
652            _ps.setNull(4, Types.INTEGER);
653        else
654            _ps.setInt(4, ordpymtprfdt_orderpaymentpreferencesequence);
655            
656        PaymentMethodPK ordpymtprfdt_pm_paymentmethodid = _value.getPaymentMethodPK();
657        if(ordpymtprfdt_pm_paymentmethodid == null)
658            _ps.setNull(5, Types.BIGINT);
659        else
660            _ps.setLong(5, ordpymtprfdt_pm_paymentmethodid.getEntityId());
661            
662        PartyPaymentMethodPK ordpymtprfdt_parpm_partypaymentmethodid = _value.getPartyPaymentMethodPK();
663        if(ordpymtprfdt_parpm_partypaymentmethodid == null)
664            _ps.setNull(6, Types.BIGINT);
665        else
666            _ps.setLong(6, ordpymtprfdt_parpm_partypaymentmethodid.getEntityId());
667            
668        Boolean ordpymtprfdt_waspresent = _value.getWasPresent();
669        if(ordpymtprfdt_waspresent == null)
670            _ps.setNull(7, Types.BIT);
671        else
672            _ps.setInt(7, ordpymtprfdt_waspresent? 1: 0);
673            
674        Long ordpymtprfdt_maximumamount = _value.getMaximumAmount();
675        if(ordpymtprfdt_maximumamount == null)
676            _ps.setNull(8, Types.BIGINT);
677        else
678            _ps.setLong(8, ordpymtprfdt_maximumamount);
679            
680        Integer ordpymtprfdt_sortorder = _value.getSortOrder();
681        if(ordpymtprfdt_sortorder == null)
682            _ps.setNull(9, Types.INTEGER);
683        else
684            _ps.setInt(9, ordpymtprfdt_sortorder);
685            
686        Long ordpymtprfdt_fromtime = _value.getFromTime();
687        if(ordpymtprfdt_fromtime == null)
688            _ps.setNull(10, Types.BIGINT);
689        else
690            _ps.setLong(10, ordpymtprfdt_fromtime);
691            
692        Long ordpymtprfdt_thrutime = _value.getThruTime();
693        if(ordpymtprfdt_thrutime == null)
694            _ps.setNull(11, Types.BIGINT);
695        else
696            _ps.setLong(11, ordpymtprfdt_thrutime);
697            
698    }
699    
700    public OrderPaymentPreferenceDetail create(OrderPaymentPreferencePK orderPaymentPreferencePK, OrderPK orderPK, Integer orderPaymentPreferenceSequence, PaymentMethodPK paymentMethodPK, PartyPaymentMethodPK partyPaymentMethodPK, Boolean wasPresent, Long maximumAmount, Integer sortOrder, Long fromTime, Long thruTime)
701            throws PersistenceDatabaseException, PersistenceNotNullException {
702        OrderPaymentPreferenceDetailPK _pk = getNextPK();
703        OrderPaymentPreferenceDetailValue _value = new OrderPaymentPreferenceDetailValue(_pk, orderPaymentPreferencePK, orderPK, orderPaymentPreferenceSequence, paymentMethodPK, partyPaymentMethodPK, wasPresent, maximumAmount, sortOrder, fromTime, thruTime);
704        
705        PreparedStatement _ps = session.prepareStatement(SQL_INSERT);
706        
707        try {
708            bindForCreate(_ps, _value);
709            
710            if(PersistenceDebugFlags.CheckEntityInsertRowCount) {
711                int _count = _ps.executeUpdate();
712                
713                if(_count != 1) {
714                    throw new PersistenceDatabaseUpdateException("insert failed, _count = " + _count);
715                }
716            } else {
717                 _ps.executeUpdate();
718            }
719            
720            session.getValueCache().put(_value);
721        } catch (SQLException se) {
722            throw new PersistenceDatabaseException(se);
723        }
724        
725        OrderPaymentPreferenceDetail _entity = new OrderPaymentPreferenceDetail(_value, EntityPermission.READ_ONLY);
726        session.putReadOnlyEntity(_pk, _entity);
727        
728        return _entity;
729    }
730    
731    public void create(Collection<OrderPaymentPreferenceDetailValue> _values)
732            throws PersistenceDatabaseException, PersistenceNotNullException {
733        int _size = _values.size();
734        
735        if(_size > 0) {
736            PreparedStatement _ps = session.prepareStatement(SQL_INSERT);
737            List<OrderPaymentPreferenceDetailValue> _cacheValues = new ArrayList<>(_size);
738            
739            try {
740                for(OrderPaymentPreferenceDetailValue _value : _values) {
741                    _value.setEntityId(entityIdGenerator.getNextEntityId());
742                    bindForCreate(_ps, _value);
743                    
744                    _ps.addBatch();
745                    
746                    _cacheValues.add(_value);
747                }
748                
749                if(PersistenceDebugFlags.CheckEntityInsertRowCount) {
750                    int[] _counts = _ps.executeBatch();
751                    
752                    for(int _countOffset = 0 ; _countOffset < _size ; _countOffset++) {
753                        if(_counts[_countOffset] != 1 && _counts[_countOffset] != PreparedStatement.SUCCESS_NO_INFO) {
754                            throw new PersistenceDatabaseUpdateException("batch insert failed, _counts[" + _countOffset + "] = " + _counts[_countOffset]);
755                        }
756                    }
757                } else {
758                     _ps.executeBatch();
759                }
760                
761                _ps.clearBatch();
762            } catch (SQLException se) {
763                throw new PersistenceDatabaseException(se);
764            }
765            
766            _cacheValues.forEach((_cacheValue) -> {
767                OrderPaymentPreferenceDetail _cacheEntity = new OrderPaymentPreferenceDetail(_cacheValue, EntityPermission.READ_ONLY);
768                
769                session.putReadOnlyEntity(_cacheValue.getPrimaryKey(), _cacheEntity);
770            });
771        }
772    }
773    
774    private boolean bindForStore(PreparedStatement _ps, OrderPaymentPreferenceDetailValue _value)
775            throws SQLException {
776        boolean _hasBeenModified = _value.hasBeenModified();
777        
778        if(_hasBeenModified) {
779            OrderPaymentPreferencePK ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid = _value.getOrderPaymentPreferencePK();
780            if(ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid == null)
781                _ps.setNull(1, Types.BIGINT);
782            else
783                _ps.setLong(1, ordpymtprfdt_ordpymtprf_orderpaymentpreferenceid.getEntityId());
784            
785            OrderPK ordpymtprfdt_ord_orderid = _value.getOrderPK();
786            if(ordpymtprfdt_ord_orderid == null)
787                _ps.setNull(2, Types.BIGINT);
788            else
789                _ps.setLong(2, ordpymtprfdt_ord_orderid.getEntityId());
790            
791            Integer ordpymtprfdt_orderpaymentpreferencesequence = _value.getOrderPaymentPreferenceSequence();
792            if(ordpymtprfdt_orderpaymentpreferencesequence == null)
793                _ps.setNull(3, Types.INTEGER);
794            else
795                _ps.setInt(3, ordpymtprfdt_orderpaymentpreferencesequence);
796            
797            PaymentMethodPK ordpymtprfdt_pm_paymentmethodid = _value.getPaymentMethodPK();
798            if(ordpymtprfdt_pm_paymentmethodid == null)
799                _ps.setNull(4, Types.BIGINT);
800            else
801                _ps.setLong(4, ordpymtprfdt_pm_paymentmethodid.getEntityId());
802            
803            PartyPaymentMethodPK ordpymtprfdt_parpm_partypaymentmethodid = _value.getPartyPaymentMethodPK();
804            if(ordpymtprfdt_parpm_partypaymentmethodid == null)
805                _ps.setNull(5, Types.BIGINT);
806            else
807                _ps.setLong(5, ordpymtprfdt_parpm_partypaymentmethodid.getEntityId());
808            
809            Boolean ordpymtprfdt_waspresent = _value.getWasPresent();
810            if(ordpymtprfdt_waspresent == null)
811                _ps.setNull(6, Types.BIT);
812            else
813                _ps.setInt(6, ordpymtprfdt_waspresent? 1: 0);
814            
815            Long ordpymtprfdt_maximumamount = _value.getMaximumAmount();
816            if(ordpymtprfdt_maximumamount == null)
817                _ps.setNull(7, Types.BIGINT);
818            else
819                _ps.setLong(7, ordpymtprfdt_maximumamount);
820            
821            Integer ordpymtprfdt_sortorder = _value.getSortOrder();
822            if(ordpymtprfdt_sortorder == null)
823                _ps.setNull(8, Types.INTEGER);
824            else
825                _ps.setInt(8, ordpymtprfdt_sortorder);
826            
827            Long ordpymtprfdt_fromtime = _value.getFromTime();
828            if(ordpymtprfdt_fromtime == null)
829                _ps.setNull(9, Types.BIGINT);
830            else
831                _ps.setLong(9, ordpymtprfdt_fromtime);
832            
833            Long ordpymtprfdt_thrutime = _value.getThruTime();
834            if(ordpymtprfdt_thrutime == null)
835                _ps.setNull(10, Types.BIGINT);
836            else
837                _ps.setLong(10, ordpymtprfdt_thrutime);
838            
839            _ps.setLong(11, _value.getPrimaryKey().getEntityId());
840            
841            _value.clearHasBeenModified();
842        }
843        
844        return _hasBeenModified;
845    }
846    
847    @Override
848    public void store(OrderPaymentPreferenceDetail entity)
849            throws PersistenceDatabaseException {
850        PreparedStatement _ps = session.prepareStatement(SQL_UPDATE);
851        
852        try {
853            OrderPaymentPreferenceDetailValue _value = entity.getOrderPaymentPreferenceDetailValue();
854            
855            if(bindForStore(_ps, _value)) {
856                if(PersistenceDebugFlags.CheckEntityUpdateRowCount) {
857                    int _count = _ps.executeUpdate();
858                    
859                    if(_count != 1) {
860                        throw new PersistenceDatabaseUpdateException("update failed, _count = " + _count);
861                    }
862                } else {
863                     _ps.executeUpdate();
864                }
865                
866                session.getValueCache().put(_value);
867            }
868        } catch (SQLException se) {
869            throw new PersistenceDatabaseException(se);
870        }
871    }
872    
873    @Override
874    public void store(Collection<OrderPaymentPreferenceDetail> entities)
875            throws PersistenceDatabaseException {
876        if(entities.size() > 0) {
877            PreparedStatement _ps = session.prepareStatement(SQL_UPDATE);
878            int _modifiedEntities = 0;
879            
880            try {
881                for(OrderPaymentPreferenceDetail entity : entities) {
882                    if(bindForStore(_ps, entity.getOrderPaymentPreferenceDetailValue())) {
883                        _ps.addBatch();
884                        _modifiedEntities++;
885                    }
886                }
887                
888                if(_modifiedEntities != 0) {
889                    if(PersistenceDebugFlags.CheckEntityUpdateRowCount) {
890                        int[] _counts = _ps.executeBatch();
891                        
892                        for(int _countOffset = 0 ; _countOffset < _modifiedEntities  ; _countOffset++) {
893                            if(_counts[_countOffset] != 1 && _counts[_countOffset] != PreparedStatement.SUCCESS_NO_INFO) {
894                                throw new PersistenceDatabaseUpdateException("batch update failed, _counts[" + _countOffset + "] = " + _counts[_countOffset]);
895                            }
896                        }
897                    } else {
898                         _ps.executeBatch();
899                    }
900                    
901                    _ps.clearBatch();
902                    
903                    entities.forEach((entity) -> {
904                        session.getValueCache().put(entity.getOrderPaymentPreferenceDetailValue());
905                    });
906                }
907            } catch (SQLException se) {
908                throw new PersistenceDatabaseException(se);
909            }
910        }
911    }
912    
913    @Override
914    public void remove(OrderPaymentPreferenceDetail entity)
915            throws PersistenceDatabaseException {
916        remove(entity.getPrimaryKey());
917    }
918    
919    @Override
920    public void remove(OrderPaymentPreferenceDetailPK pk)
921            throws PersistenceDatabaseException {
922        PreparedStatement _ps = session.prepareStatement(SQL_DELETE);
923        long _entityId = pk.getEntityId();
924        
925        try {
926            _ps.setLong(1, _entityId);
927            
928            if(PersistenceDebugFlags.CheckEntityDeleteRowCount) {
929                int _count = _ps.executeUpdate();
930                
931                if(_count != 1) {
932                    throw new PersistenceDatabaseUpdateException("remove failed, _count = " + _count);
933                }
934            } else {
935                 _ps.executeUpdate();
936            }
937            
938            session.getValueCache().remove(pk);
939        } catch (SQLException se) {
940            throw new PersistenceDatabaseException(se);
941        }
942        
943        session.removed(pk, false);
944    }
945    
946    @Override
947    public void remove(Collection<OrderPaymentPreferenceDetailPK> pks)
948            throws PersistenceDatabaseException {
949        if(pks.size() > 0) {
950            PreparedStatement _ps = session.prepareStatement(SQL_DELETE);
951            int _modifiedEntities = 0;
952            
953            try {
954                for(OrderPaymentPreferenceDetailPK pk : pks) {
955                    long _entityId = pk.getEntityId();
956                    
957                    _ps.setLong(1, _entityId);
958                    
959                    _ps.addBatch();
960                    _modifiedEntities++;
961                }
962                
963                if(_modifiedEntities != 0) {
964                    if(PersistenceDebugFlags.CheckEntityDeleteRowCount) {
965                        int[] _counts = _ps.executeBatch();
966                        
967                        for(int _countOffset = 0 ; _countOffset < _modifiedEntities  ; _countOffset++) {
968                            if(_counts[_countOffset] != 1 && _counts[_countOffset] != PreparedStatement.SUCCESS_NO_INFO) {
969                                throw new PersistenceDatabaseUpdateException("batch remove failed, _counts[" + _countOffset + "] = " + _counts[_countOffset]);
970                            }
971                        }
972                    } else {
973                        _ps.executeBatch();
974                    }
975                    
976                    _ps.clearBatch();
977                    
978                    pks.forEach((pk) -> {
979                        session.getValueCache().remove(pk);
980                    });
981                }
982            } catch (SQLException se) {
983                throw new PersistenceDatabaseException(se);
984            }
985            
986            pks.forEach((pk) -> {
987                session.removed(pk, true);
988            });
989        }
990    }
991    
992    @Override
993    public boolean validPK(OrderPaymentPreferenceDetailPK pk)
994            throws PersistenceDatabaseException {
995        boolean valid = false;
996        PreparedStatement _ps = session.prepareStatement(SQL_VALID);
997        ResultSet _rs = null;
998        
999        try {
1000            _ps.setLong(1, pk.getEntityId());
1001            
1002            _rs = _ps.executeQuery();
1003            if(_rs.next()) {
1004                long _count = _rs.getLong(1);
1005                if(_rs.wasNull())
1006                    _count = 0;
1007                
1008                if(_count == 1)
1009                    valid = true;
1010            }
1011        } catch (SQLException se) {
1012            throw new PersistenceDatabaseException(se);
1013        } finally {
1014            if(_rs != null) {
1015                try {
1016                    _rs.close();
1017                } catch (SQLException se) {
1018                    // do nothing
1019                }
1020            }
1021        }
1022        
1023        return valid;
1024    }
1025    
1026}