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