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