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}