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