001// --------------------------------------------------------------------------------
002// Copyright 2002-2026 Echo Three, LLC
003//
004// Licensed under the Apache License, Version 2.0 (the "License");
005// you may not use this file except in compliance with the License.
006// You may obtain a copy of the License at
007//
008//     http://www.apache.org/licenses/LICENSE-2.0
009//
010// Unless required by applicable law or agreed to in writing, software
011// distributed under the License is distributed on an "AS IS" BASIS,
012// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013// See the License for the specific language governing permissions and
014// limitations under the License.
015// --------------------------------------------------------------------------------
016// Generated File -- DO NOT EDIT BY HAND
017// --------------------------------------------------------------------------------
018
019/**
020 * CachedExecutedSearchResultFactory.java
021 */
022
023package com.echothree.model.data.search.server.factory;
024
025import com.echothree.model.data.search.common.pk.CachedExecutedSearchPK;
026import com.echothree.model.data.core.common.pk.EntityInstancePK;
027
028import com.echothree.model.data.search.server.entity.CachedExecutedSearch;
029import com.echothree.model.data.core.server.entity.EntityInstance;
030
031import com.echothree.model.data.search.common.CachedExecutedSearchResultConstants;
032import com.echothree.model.data.search.common.pk.CachedExecutedSearchResultPK;
033import com.echothree.model.data.search.server.value.CachedExecutedSearchResultValue;
034import com.echothree.model.data.search.server.entity.CachedExecutedSearchResult;
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 java.sql.PreparedStatement;
044import java.sql.ResultSet;
045import java.sql.SQLException;
046import java.sql.Types;
047import java.io.ByteArrayInputStream;
048import java.io.StringReader;
049import java.util.ArrayList;
050import java.util.Collection;
051import java.util.HashSet;
052import java.util.List;
053import java.util.Map;
054import java.util.Set;
055import javax.enterprise.context.ApplicationScoped;
056import javax.enterprise.inject.spi.CDI;
057import javax.inject.Inject;
058import org.jooq.ResultQuery;
059import org.slf4j.Logger;
060import org.slf4j.LoggerFactory;
061
062@ApplicationScoped
063public class CachedExecutedSearchResultFactory
064        implements BaseFactory<CachedExecutedSearchResultPK, CachedExecutedSearchResult> {
065    
066    @Inject
067    Session session;
068    
069    //private static final Logger log = LoggerFactory.getLogger(CachedExecutedSearchResultFactory.class);
070    
071    final private static String SQL_SELECT_READ_ONLY = "SELECT cxsrchr_cachedexecutedsearchresultid, cxsrchr_cxsrch_cachedexecutedsearchid, cxsrchr_eni_entityinstanceid, cxsrchr_sortorder FROM cachedexecutedsearchresults WHERE cxsrchr_cachedexecutedsearchresultid = ?";
072    final private static String SQL_SELECT_READ_WRITE = "SELECT cxsrchr_cachedexecutedsearchresultid, cxsrchr_cxsrch_cachedexecutedsearchid, cxsrchr_eni_entityinstanceid, cxsrchr_sortorder FROM cachedexecutedsearchresults WHERE cxsrchr_cachedexecutedsearchresultid = ? FOR UPDATE";
073    final private static String SQL_INSERT = "INSERT INTO cachedexecutedsearchresults (cxsrchr_cachedexecutedsearchresultid, cxsrchr_cxsrch_cachedexecutedsearchid, cxsrchr_eni_entityinstanceid, cxsrchr_sortorder) VALUES (?, ?, ?, ?)";
074    final private static String SQL_UPDATE = "UPDATE cachedexecutedsearchresults SET cxsrchr_cxsrch_cachedexecutedsearchid = ?, cxsrchr_eni_entityinstanceid = ?, cxsrchr_sortorder = ? WHERE cxsrchr_cachedexecutedsearchresultid = ?";
075    final private static String SQL_DELETE = "DELETE FROM cachedexecutedsearchresults WHERE cxsrchr_cachedexecutedsearchresultid = ?";
076    final private static String SQL_VALID = "SELECT COUNT(*) FROM cachedexecutedsearchresults WHERE cxsrchr_cachedexecutedsearchresultid = ?";
077    
078    final private static String PK_COLUMN = "cxsrchr_cachedexecutedsearchresultid";
079    final private static String ALL_COLUMNS = "cxsrchr_cachedexecutedsearchresultid, cxsrchr_cxsrch_cachedexecutedsearchid, cxsrchr_eni_entityinstanceid, cxsrchr_sortorder";
080    final public static String TABLE_NAME = "cachedexecutedsearchresults";
081    
082    final public static String CXSRCHR_CACHEDEXECUTEDSEARCHRESULTID = "cxsrchr_cachedexecutedsearchresultid";
083    final public static String CXSRCHR_CXSRCH_CACHEDEXECUTEDSEARCHID = "cxsrchr_cxsrch_cachedexecutedsearchid";
084    final public static String CXSRCHR_ENI_ENTITYINSTANCEID = "cxsrchr_eni_entityinstanceid";
085    final public static String CXSRCHR_SORTORDER = "cxsrchr_sortorder";
086    
087    final private static EntityIdGenerator entityIdGenerator = new EntityIdGenerator(CachedExecutedSearchResultConstants.COMPONENT_VENDOR_NAME, CachedExecutedSearchResultConstants.ENTITY_TYPE_NAME, 10000);
088    
089    /** Creates a new instance of CachedExecutedSearchResultFactory */
090    protected CachedExecutedSearchResultFactory() {
091        super();
092    }
093    
094    public static CachedExecutedSearchResultFactory getInstance() {
095        return CDI.current().select(CachedExecutedSearchResultFactory.class).get();
096    }
097    
098    @Override
099    public String getPKColumn() {
100        return PK_COLUMN;
101    }
102    
103    @Override
104    public String getAllColumns() {
105        return ALL_COLUMNS;
106    }
107    
108    @Override
109    public String getTableName() {
110        return TABLE_NAME;
111    }
112    
113    @Override
114    public String getComponentVendorName() {
115        return CachedExecutedSearchResultConstants.COMPONENT_VENDOR_NAME;
116    }
117    
118    @Override
119    public String getEntityTypeName() {
120        return CachedExecutedSearchResultConstants.ENTITY_TYPE_NAME;
121    }
122    
123    public PreparedStatement prepareStatement(String query) {
124        return session.prepareStatement(CachedExecutedSearchResultFactory.class, query);
125    }
126    
127    public CachedExecutedSearchResultPK getNextPK() {
128        return new CachedExecutedSearchResultPK(entityIdGenerator.getNextEntityId());
129    }
130    
131    public Set<CachedExecutedSearchResultPK> getPKsFromResultSetAsSet(ResultSet rs)
132            throws PersistenceDatabaseException {
133        Set<CachedExecutedSearchResultPK> _result = new HashSet<>();
134        
135        try {
136            while(rs.next()) {
137                _result.add(getPKFromResultSet(rs));
138            }
139        } catch (SQLException se) {
140            throw new PersistenceDatabaseException(se);
141        }
142        
143        return _result;
144    }
145    
146    public java.util.List<CachedExecutedSearchResultPK> getPKsFromResultSetAsList(ResultSet rs)
147            throws PersistenceDatabaseException {
148        java.util.List<CachedExecutedSearchResultPK> _result = new ArrayList<>();
149        
150        try {
151            while(rs.next()) {
152                _result.add(getPKFromResultSet(rs));
153            }
154        } catch (SQLException se) {
155            throw new PersistenceDatabaseException(se);
156        }
157        
158        return _result;
159    }
160    
161    public CachedExecutedSearchResultPK getPKFromResultSet(ResultSet rs)
162            throws PersistenceDatabaseException {
163        CachedExecutedSearchResultPK _result;
164        
165        try {
166            long cxsrchr_cachedexecutedsearchresultid = rs.getLong(CXSRCHR_CACHEDEXECUTEDSEARCHRESULTID);
167            Long _entityId = rs.wasNull() ? null : cxsrchr_cachedexecutedsearchresultid;
168            
169            _result = new CachedExecutedSearchResultPK(_entityId);
170        } catch (SQLException se) {
171            throw new PersistenceDatabaseException(se);
172        }
173        
174        return _result;
175    }
176    
177    public java.util.List<CachedExecutedSearchResultValue> getValuesFromPKs(Collection<CachedExecutedSearchResultPK> pks)
178            throws PersistenceDatabaseException {
179        java.util.List<CachedExecutedSearchResultValue> _values = new ArrayList<>(pks.size());
180        
181        for(CachedExecutedSearchResultPK _pk: pks) {
182            _values.add(getValueFromPK(_pk));
183        }
184        
185        return _values;
186    }
187    
188    public CachedExecutedSearchResultValue getValueFromPK(CachedExecutedSearchResultPK pk)
189            throws PersistenceDatabaseException {
190        CachedExecutedSearchResultValue _value;
191        
192        // See if we already have the entity in the session cache
193        CachedExecutedSearchResult _entity = (CachedExecutedSearchResult)session.getEntity(pk);
194        if(_entity == null)
195            _value = getEntityFromPK(EntityPermission.READ_ONLY, pk).getCachedExecutedSearchResultValue();
196        else
197            _value = _entity.getCachedExecutedSearchResultValue();
198        
199        return _value;
200    }
201    
202    public java.util.List<CachedExecutedSearchResultValue> getValuesFromResultSet(ResultSet rs)
203            throws PersistenceDatabaseException {
204        java.util.List<CachedExecutedSearchResultValue> _result = new ArrayList<>();
205        
206        try {
207            while(rs.next()) {
208                _result.add(getValueFromResultSet(rs));
209            }
210        } catch (SQLException se) {
211            throw new PersistenceDatabaseException(se);
212        }
213        
214        return _result;
215    }
216    
217    public CachedExecutedSearchResultValue getValueFromResultSet(ResultSet rs)
218            throws PersistenceDatabaseException {
219        CachedExecutedSearchResultValue _value;
220        
221        try {
222            Long cxsrchr_cachedexecutedsearchresultid = rs.getLong(CXSRCHR_CACHEDEXECUTEDSEARCHRESULTID);
223            CachedExecutedSearchResultPK _pk = new CachedExecutedSearchResultPK(cxsrchr_cachedexecutedsearchresultid);
224            
225            // See if we already have the entity in the session cache
226            CachedExecutedSearchResult _entity = (CachedExecutedSearchResult)session.getEntity(_pk);
227            
228            if(_entity == null) {
229                Long cxsrchr_cxsrch_cachedexecutedsearchid = rs.getLong(CXSRCHR_CXSRCH_CACHEDEXECUTEDSEARCHID);
230                if(rs.wasNull())
231                    cxsrchr_cxsrch_cachedexecutedsearchid = null;
232                
233                Long cxsrchr_eni_entityinstanceid = rs.getLong(CXSRCHR_ENI_ENTITYINSTANCEID);
234                if(rs.wasNull())
235                    cxsrchr_eni_entityinstanceid = null;
236                
237                Integer cxsrchr_sortorder = rs.getInt(CXSRCHR_SORTORDER);
238                if(rs.wasNull())
239                    cxsrchr_sortorder = null;
240                
241                _value = new CachedExecutedSearchResultValue(_pk, new CachedExecutedSearchPK(cxsrchr_cxsrch_cachedexecutedsearchid), new EntityInstancePK(cxsrchr_eni_entityinstanceid), cxsrchr_sortorder);
242            } else
243                _value = _entity.getCachedExecutedSearchResultValue();
244        } catch (SQLException se) {
245            throw new PersistenceDatabaseException(se);
246        }
247        
248        return _value;
249    }
250    
251    public java.util.List<CachedExecutedSearchResult> getEntitiesFromPKs(EntityPermission entityPermission, Collection<CachedExecutedSearchResultPK> pks)
252            throws PersistenceDatabaseException {
253        java.util.List<CachedExecutedSearchResult> _entities = new ArrayList<>(pks.size());
254        
255        for(CachedExecutedSearchResultPK _pk: pks) {
256            _entities.add(getEntityFromPK(entityPermission, _pk));
257        }
258        
259        return _entities;
260    }
261    
262    public CachedExecutedSearchResult getEntityFromValue(EntityPermission entityPermission, CachedExecutedSearchResultValue value) {
263        return getEntityFromPK(entityPermission, value.getPrimaryKey());
264    }
265    
266    public CachedExecutedSearchResult getEntityFromCache(CachedExecutedSearchResultPK pk) {
267        CachedExecutedSearchResultValue _value = (CachedExecutedSearchResultValue)session.getValueCache().get(pk);
268    
269        return _value == null ? null : new CachedExecutedSearchResult(_value, EntityPermission.READ_ONLY);
270    }
271    
272    public CachedExecutedSearchResult getEntityFromPK(EntityPermission entityPermission, CachedExecutedSearchResultPK pk)
273            throws PersistenceDatabaseException {
274        CachedExecutedSearchResult _entity;
275        
276        // See if we already have the entity in the session cache
277        _entity = (CachedExecutedSearchResult)session.getEntity(pk);
278        if(_entity != null) {
279            // If the requested permission is READ_WRITE, and the cached permission is
280            // READ_ONLY, then pretend that the cached object wasn't found, and create
281            // a new entity that is READ_WRITE.
282            if(entityPermission.equals(EntityPermission.READ_WRITE)) {
283                if(_entity.getEntityPermission().equals(EntityPermission.READ_ONLY))
284                    _entity = null;
285            }
286        }
287        
288        if(_entity == null && entityPermission.equals(EntityPermission.READ_ONLY)) {
289            _entity = getEntityFromCache(pk);
290        }
291        
292        if(_entity == null) {
293            PreparedStatement _ps = session.prepareStatement(entityPermission.equals(EntityPermission.READ_ONLY)? SQL_SELECT_READ_ONLY: SQL_SELECT_READ_WRITE);
294            long _entityId = pk.getEntityId();
295            ResultSet _rs = null;
296            
297            try {
298                _ps.setLong(1, _entityId);
299                _rs = _ps.executeQuery();
300                if(_rs.next()) {
301                    _entity = getEntityFromResultSet(entityPermission, _rs);
302                }
303            } catch (SQLException se) {
304                throw new PersistenceDatabaseException(se);
305            } finally {
306                if(_rs != null) {
307                    try {
308                        _rs.close();
309                    } catch (SQLException se) {
310                        // do nothing
311                    }
312                }
313            }
314        }
315        
316        return _entity;
317    }
318    
319    public Set<CachedExecutedSearchResultPK> getPKsFromQueryAsSet(PreparedStatement ps, final Object... params)
320            throws PersistenceDatabaseException {
321        Set<CachedExecutedSearchResultPK> _pks;
322        ResultSet _rs = null;
323        
324        try {
325            if(params.length != 0) {
326                Session.setQueryParams(ps, params);
327            }
328            
329            _rs = ps.executeQuery();
330            _pks = getPKsFromResultSetAsSet(_rs);
331            _rs.close();
332        } catch (SQLException se) {
333            throw new PersistenceDatabaseException(se);
334        } finally {
335            if(_rs != null) {
336                try {
337                    _rs.close();
338                } catch (SQLException se) {
339                    // do nothing
340                }
341            }
342        }
343        
344        return _pks;
345    }
346    
347    public java.util.List<CachedExecutedSearchResultPK> getPKsFromQueryAsList(PreparedStatement ps, final Object... params)
348            throws PersistenceDatabaseException {
349        java.util.List<CachedExecutedSearchResultPK> _pks;
350        ResultSet _rs = null;
351        
352        try {
353            if(params.length != 0) {
354                Session.setQueryParams(ps, params);
355            }
356            
357            _rs = ps.executeQuery();
358            _pks = getPKsFromResultSetAsList(_rs);
359            _rs.close();
360        } catch (SQLException se) {
361            throw new PersistenceDatabaseException(se);
362        } finally {
363            if(_rs != null) {
364                try {
365                    _rs.close();
366                } catch (SQLException se) {
367                    // do nothing
368                }
369            }
370        }
371        
372        return _pks;
373    }
374    
375    public CachedExecutedSearchResultPK getPKFromQuery(PreparedStatement ps, final Object... params)
376            throws PersistenceDatabaseException {
377        CachedExecutedSearchResultPK _pk = null;
378        ResultSet _rs = null;
379        
380        try {
381            if(params.length != 0) {
382                Session.setQueryParams(ps, params);
383            }
384            
385            _rs = ps.executeQuery();
386            if(_rs.next()) {
387                _pk = getPKFromResultSet(_rs);
388            }
389            _rs.close();
390        } catch (SQLException se) {
391            throw new PersistenceDatabaseException(se);
392        } finally {
393            if(_rs != null) {
394                try {
395                    _rs.close();
396                } catch (SQLException se) {
397                    // do nothing
398                }
399            }
400        }
401        
402        return _pk;
403    }
404    
405    public java.util.List<CachedExecutedSearchResult> getEntitiesFromQuery(EntityPermission entityPermission, Map<EntityPermission, String>queryMap, final Object... params)
406            throws PersistenceDatabaseException {
407        PreparedStatement ps = session.prepareStatement(CachedExecutedSearchResultFactory.class, queryMap.get(entityPermission));
408        
409        return getEntitiesFromQuery(entityPermission, ps, params);
410    }
411    
412    public java.util.List<CachedExecutedSearchResult> getEntitiesFromQuery(EntityPermission entityPermission, Map<EntityPermission, String>queryMap)
413            throws PersistenceDatabaseException {
414        PreparedStatement ps = session.prepareStatement(CachedExecutedSearchResultFactory.class, queryMap.get(entityPermission));
415        
416        return getEntitiesFromQuery(entityPermission, ps);
417    }
418    
419    public java.util.List<CachedExecutedSearchResult> getEntitiesFromQuery(EntityPermission entityPermission, ResultQuery<?> query)
420            throws PersistenceDatabaseException {
421        PreparedStatement ps = session.prepareStatement(CachedExecutedSearchResultFactory.class, query.getSQL());
422        
423        return getEntitiesFromQuery(entityPermission, ps, query.getBindValues().toArray());
424    }
425    
426    public java.util.List<CachedExecutedSearchResult> getEntitiesFromQuery(EntityPermission entityPermission, PreparedStatement ps, final Object... params)
427            throws PersistenceDatabaseException {
428        java.util.List<CachedExecutedSearchResult> _entities;
429        ResultSet _rs = null;
430        
431        try {
432            if(params.length != 0) {
433                Session.setQueryParams(ps, params);
434            }
435            
436            _rs = ps.executeQuery();
437            _entities = getEntitiesFromResultSet(entityPermission, _rs);
438            _rs.close();
439        } catch (SQLException se) {
440            throw new PersistenceDatabaseException(se);
441        } finally {
442            if(_rs != null) {
443                try {
444                    _rs.close();
445                } catch (SQLException se) {
446                    // do nothing
447                }
448            }
449        }
450        
451        return _entities;
452    }
453    
454    public CachedExecutedSearchResult getEntityFromQuery(EntityPermission entityPermission, Map<EntityPermission, String>queryMap, final Object... params)
455            throws PersistenceDatabaseException {
456        PreparedStatement ps = session.prepareStatement(CachedExecutedSearchResultFactory.class, queryMap.get(entityPermission));
457        
458        return getEntityFromQuery(entityPermission, ps, params);
459    }
460    
461    public CachedExecutedSearchResult getEntityFromQuery(EntityPermission entityPermission, Map<EntityPermission, String>queryMap)
462            throws PersistenceDatabaseException {
463        PreparedStatement ps = session.prepareStatement(CachedExecutedSearchResultFactory.class, queryMap.get(entityPermission));
464        
465        return getEntityFromQuery(entityPermission, ps);
466    }
467    
468    public CachedExecutedSearchResult getEntityFromQuery(EntityPermission entityPermission, ResultQuery<?> query)
469            throws PersistenceDatabaseException {
470        PreparedStatement ps = session.prepareStatement(CachedExecutedSearchResultFactory.class, query.getSQL());
471        
472        return getEntityFromQuery(entityPermission, ps, query.getBindValues().toArray());
473    }
474    
475    public CachedExecutedSearchResult getEntityFromQuery(EntityPermission entityPermission, PreparedStatement ps, final Object... params)
476            throws PersistenceDatabaseException {
477        CachedExecutedSearchResult _entity = null;
478        ResultSet _rs = null;
479        
480        try {
481            if(params.length != 0) {
482                Session.setQueryParams(ps, params);
483            }
484            
485            _rs = ps.executeQuery();
486            if(_rs.next()) {
487                _entity = getEntityFromResultSet(entityPermission, _rs);
488            }
489            _rs.close();
490        } catch (SQLException se) {
491            throw new PersistenceDatabaseException(se);
492        } finally {
493            if(_rs != null) {
494                try {
495                    _rs.close();
496                } catch (SQLException se) {
497                    // do nothing
498                }
499            }
500        }
501        
502        return _entity;
503    }
504    
505    public java.util.List<CachedExecutedSearchResult> getEntitiesFromResultSet(EntityPermission entityPermission, ResultSet rs)
506            throws PersistenceDatabaseException {
507        java.util.List<CachedExecutedSearchResult> _result = new ArrayList<>();
508        
509        try {
510            while(rs.next()) {
511                _result.add(getEntityFromResultSet(entityPermission, rs));
512            }
513        } catch (SQLException se) {
514            throw new PersistenceDatabaseException(se);
515        }
516        
517        return _result;
518    }
519    
520    public CachedExecutedSearchResult getEntityFromResultSet(EntityPermission entityPermission, ResultSet rs)
521            throws PersistenceDatabaseException {
522        CachedExecutedSearchResult _entity;
523        
524        try {
525            Long cxsrchr_cachedexecutedsearchresultid = rs.getLong(CXSRCHR_CACHEDEXECUTEDSEARCHRESULTID);
526            CachedExecutedSearchResultPK _pk = new CachedExecutedSearchResultPK(cxsrchr_cachedexecutedsearchresultid);
527            
528            // See if we already have the entity in the session cache
529            _entity = (CachedExecutedSearchResult)session.getEntity(_pk);
530            if(_entity != null) {
531                // If the requested permission is READ_WRITE, and the cached permission is
532                // READ_ONLY, then pretend that the cached object wasn't found, and create
533                // a new entity that is READ_WRITE.
534                if(entityPermission.equals(EntityPermission.READ_WRITE)) {
535                    if(_entity.getEntityPermission().equals(EntityPermission.READ_ONLY))
536                        _entity = null;
537                }
538            }
539            boolean foundInSessionCache = _entity != null;
540            
541            if(_entity == null && entityPermission.equals(EntityPermission.READ_ONLY)) {
542                _entity = getEntityFromCache(_pk);
543            }
544            
545            if(_entity == null) {
546                Long cxsrchr_cxsrch_cachedexecutedsearchid = rs.getLong(CXSRCHR_CXSRCH_CACHEDEXECUTEDSEARCHID);
547                if(rs.wasNull())
548                    cxsrchr_cxsrch_cachedexecutedsearchid = null;
549                
550                Long cxsrchr_eni_entityinstanceid = rs.getLong(CXSRCHR_ENI_ENTITYINSTANCEID);
551                if(rs.wasNull())
552                    cxsrchr_eni_entityinstanceid = null;
553                
554                Integer cxsrchr_sortorder = rs.getInt(CXSRCHR_SORTORDER);
555                if(rs.wasNull())
556                    cxsrchr_sortorder = null;
557                
558                CachedExecutedSearchResultValue _value = new CachedExecutedSearchResultValue(_pk, cxsrchr_cxsrch_cachedexecutedsearchid == null? null: new CachedExecutedSearchPK(cxsrchr_cxsrch_cachedexecutedsearchid), cxsrchr_eni_entityinstanceid == null? null: new EntityInstancePK(cxsrchr_eni_entityinstanceid), cxsrchr_sortorder);
559                _entity = new CachedExecutedSearchResult(_value, entityPermission);
560            }
561            
562            if(!foundInSessionCache) {
563                if(entityPermission.equals(EntityPermission.READ_ONLY)) {
564                    session.putReadOnlyEntity(_pk, _entity);
565                    session.getValueCache().put(_entity.getCachedExecutedSearchResultValue());
566                } else {
567                    session.putReadWriteEntity(_pk, _entity);
568                }
569            }
570        } catch (SQLException se) {
571            throw new PersistenceDatabaseException(se);
572        }
573        
574        return _entity;
575    }
576    
577    public CachedExecutedSearchResult create(CachedExecutedSearch cachedExecutedSearch, EntityInstance entityInstance, Integer sortOrder)
578            throws PersistenceDatabaseException, PersistenceNotNullException {
579        return create(cachedExecutedSearch == null ? null : cachedExecutedSearch.getPrimaryKey(), entityInstance == null ? null : entityInstance.getPrimaryKey(), sortOrder);
580    }
581    
582    private void bindForCreate(PreparedStatement _ps, CachedExecutedSearchResultValue _value)
583            throws SQLException {
584        _ps.setLong(1, _value.getEntityId());
585        
586        CachedExecutedSearchPK cxsrchr_cxsrch_cachedexecutedsearchid = _value.getCachedExecutedSearchPK();
587        if(cxsrchr_cxsrch_cachedexecutedsearchid == null)
588            _ps.setNull(2, Types.BIGINT);
589        else
590            _ps.setLong(2, cxsrchr_cxsrch_cachedexecutedsearchid.getEntityId());
591            
592        EntityInstancePK cxsrchr_eni_entityinstanceid = _value.getEntityInstancePK();
593        if(cxsrchr_eni_entityinstanceid == null)
594            _ps.setNull(3, Types.BIGINT);
595        else
596            _ps.setLong(3, cxsrchr_eni_entityinstanceid.getEntityId());
597            
598        Integer cxsrchr_sortorder = _value.getSortOrder();
599        if(cxsrchr_sortorder == null)
600            _ps.setNull(4, Types.INTEGER);
601        else
602            _ps.setInt(4, cxsrchr_sortorder);
603            
604    }
605    
606    public CachedExecutedSearchResult create(CachedExecutedSearchPK cachedExecutedSearchPK, EntityInstancePK entityInstancePK, Integer sortOrder)
607            throws PersistenceDatabaseException, PersistenceNotNullException {
608        CachedExecutedSearchResultPK _pk = getNextPK();
609        CachedExecutedSearchResultValue _value = new CachedExecutedSearchResultValue(_pk, cachedExecutedSearchPK, entityInstancePK, sortOrder);
610        
611        PreparedStatement _ps = session.prepareStatement(SQL_INSERT);
612        
613        try {
614            bindForCreate(_ps, _value);
615            
616            if(PersistenceDebugFlags.CheckEntityInsertRowCount) {
617                int _count = _ps.executeUpdate();
618                
619                if(_count != 1) {
620                    throw new PersistenceDatabaseUpdateException("insert failed, _count = " + _count);
621                }
622            } else {
623                 _ps.executeUpdate();
624            }
625            
626            session.getValueCache().put(_value);
627        } catch (SQLException se) {
628            throw new PersistenceDatabaseException(se);
629        }
630        
631        CachedExecutedSearchResult _entity = new CachedExecutedSearchResult(_value, EntityPermission.READ_ONLY);
632        session.putReadOnlyEntity(_pk, _entity);
633        
634        return _entity;
635    }
636    
637    public void create(Collection<CachedExecutedSearchResultValue> _values)
638            throws PersistenceDatabaseException, PersistenceNotNullException {
639        int _size = _values.size();
640        
641        if(_size > 0) {
642            PreparedStatement _ps = session.prepareStatement(SQL_INSERT);
643            List<CachedExecutedSearchResultValue> _cacheValues = new ArrayList<>(_size);
644            
645            try {
646                for(CachedExecutedSearchResultValue _value : _values) {
647                    _value.setEntityId(entityIdGenerator.getNextEntityId());
648                    bindForCreate(_ps, _value);
649                    
650                    _ps.addBatch();
651                    
652                    _cacheValues.add(_value);
653                }
654                
655                if(PersistenceDebugFlags.CheckEntityInsertRowCount) {
656                    int[] _counts = _ps.executeBatch();
657                    
658                    for(int _countOffset = 0 ; _countOffset < _size ; _countOffset++) {
659                        if(_counts[_countOffset] != 1 && _counts[_countOffset] != PreparedStatement.SUCCESS_NO_INFO) {
660                            throw new PersistenceDatabaseUpdateException("batch insert failed, _counts[" + _countOffset + "] = " + _counts[_countOffset]);
661                        }
662                    }
663                } else {
664                     _ps.executeBatch();
665                }
666                
667                _ps.clearBatch();
668            } catch (SQLException se) {
669                throw new PersistenceDatabaseException(se);
670            }
671            
672            _cacheValues.forEach((_cacheValue) -> {
673                CachedExecutedSearchResult _cacheEntity = new CachedExecutedSearchResult(_cacheValue, EntityPermission.READ_ONLY);
674                
675                session.putReadOnlyEntity(_cacheValue.getPrimaryKey(), _cacheEntity);
676            });
677        }
678    }
679    
680    private boolean bindForStore(PreparedStatement _ps, CachedExecutedSearchResultValue _value)
681            throws SQLException {
682        boolean _hasBeenModified = _value.hasBeenModified();
683        
684        if(_hasBeenModified) {
685            CachedExecutedSearchPK cxsrchr_cxsrch_cachedexecutedsearchid = _value.getCachedExecutedSearchPK();
686            if(cxsrchr_cxsrch_cachedexecutedsearchid == null)
687                _ps.setNull(1, Types.BIGINT);
688            else
689                _ps.setLong(1, cxsrchr_cxsrch_cachedexecutedsearchid.getEntityId());
690            
691            EntityInstancePK cxsrchr_eni_entityinstanceid = _value.getEntityInstancePK();
692            if(cxsrchr_eni_entityinstanceid == null)
693                _ps.setNull(2, Types.BIGINT);
694            else
695                _ps.setLong(2, cxsrchr_eni_entityinstanceid.getEntityId());
696            
697            Integer cxsrchr_sortorder = _value.getSortOrder();
698            if(cxsrchr_sortorder == null)
699                _ps.setNull(3, Types.INTEGER);
700            else
701                _ps.setInt(3, cxsrchr_sortorder);
702            
703            _ps.setLong(4, _value.getPrimaryKey().getEntityId());
704            
705            _value.clearHasBeenModified();
706        }
707        
708        return _hasBeenModified;
709    }
710    
711    @Override
712    public void store(CachedExecutedSearchResult entity)
713            throws PersistenceDatabaseException {
714        PreparedStatement _ps = session.prepareStatement(SQL_UPDATE);
715        
716        try {
717            CachedExecutedSearchResultValue _value = entity.getCachedExecutedSearchResultValue();
718            
719            if(bindForStore(_ps, _value)) {
720                if(PersistenceDebugFlags.CheckEntityUpdateRowCount) {
721                    int _count = _ps.executeUpdate();
722                    
723                    if(_count != 1) {
724                        throw new PersistenceDatabaseUpdateException("update failed, _count = " + _count);
725                    }
726                } else {
727                     _ps.executeUpdate();
728                }
729                
730                session.getValueCache().put(_value);
731            }
732        } catch (SQLException se) {
733            throw new PersistenceDatabaseException(se);
734        }
735    }
736    
737    @Override
738    public void store(Collection<CachedExecutedSearchResult> entities)
739            throws PersistenceDatabaseException {
740        if(entities.size() > 0) {
741            PreparedStatement _ps = session.prepareStatement(SQL_UPDATE);
742            int _modifiedEntities = 0;
743            
744            try {
745                for(CachedExecutedSearchResult entity : entities) {
746                    if(bindForStore(_ps, entity.getCachedExecutedSearchResultValue())) {
747                        _ps.addBatch();
748                        _modifiedEntities++;
749                    }
750                }
751                
752                if(_modifiedEntities != 0) {
753                    if(PersistenceDebugFlags.CheckEntityUpdateRowCount) {
754                        int[] _counts = _ps.executeBatch();
755                        
756                        for(int _countOffset = 0 ; _countOffset < _modifiedEntities  ; _countOffset++) {
757                            if(_counts[_countOffset] != 1 && _counts[_countOffset] != PreparedStatement.SUCCESS_NO_INFO) {
758                                throw new PersistenceDatabaseUpdateException("batch update failed, _counts[" + _countOffset + "] = " + _counts[_countOffset]);
759                            }
760                        }
761                    } else {
762                         _ps.executeBatch();
763                    }
764                    
765                    _ps.clearBatch();
766                    
767                    entities.forEach((entity) -> {
768                        session.getValueCache().put(entity.getCachedExecutedSearchResultValue());
769                    });
770                }
771            } catch (SQLException se) {
772                throw new PersistenceDatabaseException(se);
773            }
774        }
775    }
776    
777    @Override
778    public void remove(CachedExecutedSearchResult entity)
779            throws PersistenceDatabaseException {
780        remove(entity.getPrimaryKey());
781    }
782    
783    @Override
784    public void remove(CachedExecutedSearchResultPK pk)
785            throws PersistenceDatabaseException {
786        PreparedStatement _ps = session.prepareStatement(SQL_DELETE);
787        long _entityId = pk.getEntityId();
788        
789        try {
790            _ps.setLong(1, _entityId);
791            
792            if(PersistenceDebugFlags.CheckEntityDeleteRowCount) {
793                int _count = _ps.executeUpdate();
794                
795                if(_count != 1) {
796                    throw new PersistenceDatabaseUpdateException("remove failed, _count = " + _count);
797                }
798            } else {
799                 _ps.executeUpdate();
800            }
801            
802            session.getValueCache().remove(pk);
803        } catch (SQLException se) {
804            throw new PersistenceDatabaseException(se);
805        }
806        
807        session.removed(pk, false);
808    }
809    
810    @Override
811    public void remove(Collection<CachedExecutedSearchResultPK> pks)
812            throws PersistenceDatabaseException {
813        if(pks.size() > 0) {
814            PreparedStatement _ps = session.prepareStatement(SQL_DELETE);
815            int _modifiedEntities = 0;
816            
817            try {
818                for(CachedExecutedSearchResultPK pk : pks) {
819                    long _entityId = pk.getEntityId();
820                    
821                    _ps.setLong(1, _entityId);
822                    
823                    _ps.addBatch();
824                    _modifiedEntities++;
825                }
826                
827                if(_modifiedEntities != 0) {
828                    if(PersistenceDebugFlags.CheckEntityDeleteRowCount) {
829                        int[] _counts = _ps.executeBatch();
830                        
831                        for(int _countOffset = 0 ; _countOffset < _modifiedEntities  ; _countOffset++) {
832                            if(_counts[_countOffset] != 1 && _counts[_countOffset] != PreparedStatement.SUCCESS_NO_INFO) {
833                                throw new PersistenceDatabaseUpdateException("batch remove failed, _counts[" + _countOffset + "] = " + _counts[_countOffset]);
834                            }
835                        }
836                    } else {
837                        _ps.executeBatch();
838                    }
839                    
840                    _ps.clearBatch();
841                    
842                    pks.forEach((pk) -> {
843                        session.getValueCache().remove(pk);
844                    });
845                }
846            } catch (SQLException se) {
847                throw new PersistenceDatabaseException(se);
848            }
849            
850            pks.forEach((pk) -> {
851                session.removed(pk, true);
852            });
853        }
854    }
855    
856    @Override
857    public boolean validPK(CachedExecutedSearchResultPK pk)
858            throws PersistenceDatabaseException {
859        boolean valid = false;
860        PreparedStatement _ps = session.prepareStatement(SQL_VALID);
861        ResultSet _rs = null;
862        
863        try {
864            _ps.setLong(1, pk.getEntityId());
865            
866            _rs = _ps.executeQuery();
867            if(_rs.next()) {
868                long _count = _rs.getLong(1);
869                if(_rs.wasNull())
870                    _count = 0;
871                
872                if(_count == 1)
873                    valid = true;
874            }
875        } catch (SQLException se) {
876            throw new PersistenceDatabaseException(se);
877        } finally {
878            if(_rs != null) {
879                try {
880                    _rs.close();
881                } catch (SQLException se) {
882                    // do nothing
883                }
884            }
885        }
886        
887        return valid;
888    }
889    
890}