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