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 * UserVisitCampaignFactory.java
021 */
022
023package com.echothree.model.data.campaign.server.factory;
024
025import com.echothree.model.data.user.common.pk.UserVisitPK;
026import com.echothree.model.data.campaign.common.pk.CampaignPK;
027import com.echothree.model.data.campaign.common.pk.CampaignSourcePK;
028import com.echothree.model.data.campaign.common.pk.CampaignMediumPK;
029import com.echothree.model.data.campaign.common.pk.CampaignTermPK;
030import com.echothree.model.data.campaign.common.pk.CampaignContentPK;
031
032import com.echothree.model.data.user.server.entity.UserVisit;
033import com.echothree.model.data.campaign.server.entity.Campaign;
034import com.echothree.model.data.campaign.server.entity.CampaignSource;
035import com.echothree.model.data.campaign.server.entity.CampaignMedium;
036import com.echothree.model.data.campaign.server.entity.CampaignTerm;
037import com.echothree.model.data.campaign.server.entity.CampaignContent;
038
039import com.echothree.model.data.campaign.common.UserVisitCampaignConstants;
040import com.echothree.model.data.campaign.common.pk.UserVisitCampaignPK;
041import com.echothree.model.data.campaign.server.value.UserVisitCampaignValue;
042import com.echothree.model.data.campaign.server.entity.UserVisitCampaign;
043import com.echothree.util.common.exception.PersistenceDatabaseException;
044import com.echothree.util.common.exception.PersistenceDatabaseUpdateException;
045import com.echothree.util.common.exception.PersistenceNotNullException;
046import com.echothree.util.server.persistence.BaseFactory;
047import com.echothree.util.server.persistence.EntityIdGenerator;
048import com.echothree.util.server.persistence.EntityPermission;
049import com.echothree.util.server.persistence.PersistenceDebugFlags;
050import com.echothree.util.server.persistence.Session;
051import java.sql.PreparedStatement;
052import java.sql.ResultSet;
053import java.sql.SQLException;
054import java.sql.Types;
055import java.io.ByteArrayInputStream;
056import java.io.StringReader;
057import java.util.ArrayList;
058import java.util.Collection;
059import java.util.HashSet;
060import java.util.List;
061import java.util.Map;
062import java.util.Set;
063import javax.enterprise.context.ApplicationScoped;
064import javax.enterprise.inject.spi.CDI;
065import javax.inject.Inject;
066import org.jooq.ResultQuery;
067import org.slf4j.Logger;
068import org.slf4j.LoggerFactory;
069
070@ApplicationScoped
071public class UserVisitCampaignFactory
072        implements BaseFactory<UserVisitCampaignPK, UserVisitCampaign> {
073    
074    @Inject
075    Session session;
076    
077    //private static final Logger log = LoggerFactory.getLogger(UserVisitCampaignFactory.class);
078    
079    final private static String SQL_SELECT_READ_ONLY = "SELECT uviscmpgn_uservisitcampaignid, uviscmpgn_uvis_uservisitid, uviscmpgn_uservisitcampaignsequence, uviscmpgn_time, uviscmpgn_cmpgn_campaignid, uviscmpgn_cmpgnsrc_campaignsourceid, uviscmpgn_cmpgnmdm_campaignmediumid, uviscmpgn_cmpgntrm_campaigntermid, uviscmpgn_cmpgncnt_campaigncontentid, uviscmpgn_fromtime, uviscmpgn_thrutime FROM uservisitcampaigns WHERE uviscmpgn_uservisitcampaignid = ?";
080    final private static String SQL_SELECT_READ_WRITE = "SELECT uviscmpgn_uservisitcampaignid, uviscmpgn_uvis_uservisitid, uviscmpgn_uservisitcampaignsequence, uviscmpgn_time, uviscmpgn_cmpgn_campaignid, uviscmpgn_cmpgnsrc_campaignsourceid, uviscmpgn_cmpgnmdm_campaignmediumid, uviscmpgn_cmpgntrm_campaigntermid, uviscmpgn_cmpgncnt_campaigncontentid, uviscmpgn_fromtime, uviscmpgn_thrutime FROM uservisitcampaigns WHERE uviscmpgn_uservisitcampaignid = ? FOR UPDATE";
081    final private static String SQL_INSERT = "INSERT INTO uservisitcampaigns (uviscmpgn_uservisitcampaignid, uviscmpgn_uvis_uservisitid, uviscmpgn_uservisitcampaignsequence, uviscmpgn_time, uviscmpgn_cmpgn_campaignid, uviscmpgn_cmpgnsrc_campaignsourceid, uviscmpgn_cmpgnmdm_campaignmediumid, uviscmpgn_cmpgntrm_campaigntermid, uviscmpgn_cmpgncnt_campaigncontentid, uviscmpgn_fromtime, uviscmpgn_thrutime) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
082    final private static String SQL_UPDATE = "UPDATE uservisitcampaigns SET uviscmpgn_uvis_uservisitid = ?, uviscmpgn_uservisitcampaignsequence = ?, uviscmpgn_time = ?, uviscmpgn_cmpgn_campaignid = ?, uviscmpgn_cmpgnsrc_campaignsourceid = ?, uviscmpgn_cmpgnmdm_campaignmediumid = ?, uviscmpgn_cmpgntrm_campaigntermid = ?, uviscmpgn_cmpgncnt_campaigncontentid = ?, uviscmpgn_fromtime = ?, uviscmpgn_thrutime = ? WHERE uviscmpgn_uservisitcampaignid = ?";
083    final private static String SQL_DELETE = "DELETE FROM uservisitcampaigns WHERE uviscmpgn_uservisitcampaignid = ?";
084    final private static String SQL_VALID = "SELECT COUNT(*) FROM uservisitcampaigns WHERE uviscmpgn_uservisitcampaignid = ?";
085    
086    final private static String PK_COLUMN = "uviscmpgn_uservisitcampaignid";
087    final private static String ALL_COLUMNS = "uviscmpgn_uservisitcampaignid, uviscmpgn_uvis_uservisitid, uviscmpgn_uservisitcampaignsequence, uviscmpgn_time, uviscmpgn_cmpgn_campaignid, uviscmpgn_cmpgnsrc_campaignsourceid, uviscmpgn_cmpgnmdm_campaignmediumid, uviscmpgn_cmpgntrm_campaigntermid, uviscmpgn_cmpgncnt_campaigncontentid, uviscmpgn_fromtime, uviscmpgn_thrutime";
088    final public static String TABLE_NAME = "uservisitcampaigns";
089    
090    final public static String UVISCMPGN_USERVISITCAMPAIGNID = "uviscmpgn_uservisitcampaignid";
091    final public static String UVISCMPGN_UVIS_USERVISITID = "uviscmpgn_uvis_uservisitid";
092    final public static String UVISCMPGN_USERVISITCAMPAIGNSEQUENCE = "uviscmpgn_uservisitcampaignsequence";
093    final public static String UVISCMPGN_TIME = "uviscmpgn_time";
094    final public static String UVISCMPGN_CMPGN_CAMPAIGNID = "uviscmpgn_cmpgn_campaignid";
095    final public static String UVISCMPGN_CMPGNSRC_CAMPAIGNSOURCEID = "uviscmpgn_cmpgnsrc_campaignsourceid";
096    final public static String UVISCMPGN_CMPGNMDM_CAMPAIGNMEDIUMID = "uviscmpgn_cmpgnmdm_campaignmediumid";
097    final public static String UVISCMPGN_CMPGNTRM_CAMPAIGNTERMID = "uviscmpgn_cmpgntrm_campaigntermid";
098    final public static String UVISCMPGN_CMPGNCNT_CAMPAIGNCONTENTID = "uviscmpgn_cmpgncnt_campaigncontentid";
099    final public static String UVISCMPGN_FROMTIME = "uviscmpgn_fromtime";
100    final public static String UVISCMPGN_THRUTIME = "uviscmpgn_thrutime";
101    
102    final private static EntityIdGenerator entityIdGenerator = new EntityIdGenerator(UserVisitCampaignConstants.COMPONENT_VENDOR_NAME, UserVisitCampaignConstants.ENTITY_TYPE_NAME);
103    
104    /** Creates a new instance of UserVisitCampaignFactory */
105    protected UserVisitCampaignFactory() {
106        super();
107    }
108    
109    public static UserVisitCampaignFactory getInstance() {
110        return CDI.current().select(UserVisitCampaignFactory.class).get();
111    }
112    
113    @Override
114    public String getPKColumn() {
115        return PK_COLUMN;
116    }
117    
118    @Override
119    public String getAllColumns() {
120        return ALL_COLUMNS;
121    }
122    
123    @Override
124    public String getTableName() {
125        return TABLE_NAME;
126    }
127    
128    @Override
129    public String getComponentVendorName() {
130        return UserVisitCampaignConstants.COMPONENT_VENDOR_NAME;
131    }
132    
133    @Override
134    public String getEntityTypeName() {
135        return UserVisitCampaignConstants.ENTITY_TYPE_NAME;
136    }
137    
138    public PreparedStatement prepareStatement(String query) {
139        return session.prepareStatement(UserVisitCampaignFactory.class, query);
140    }
141    
142    public UserVisitCampaignPK getNextPK() {
143        return new UserVisitCampaignPK(entityIdGenerator.getNextEntityId());
144    }
145    
146    public Set<UserVisitCampaignPK> getPKsFromResultSetAsSet(ResultSet rs)
147            throws PersistenceDatabaseException {
148        Set<UserVisitCampaignPK> _result = new HashSet<>();
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 java.util.List<UserVisitCampaignPK> getPKsFromResultSetAsList(ResultSet rs)
162            throws PersistenceDatabaseException {
163        java.util.List<UserVisitCampaignPK> _result = new ArrayList<>();
164        
165        try {
166            while(rs.next()) {
167                _result.add(getPKFromResultSet(rs));
168            }
169        } catch (SQLException se) {
170            throw new PersistenceDatabaseException(se);
171        }
172        
173        return _result;
174    }
175    
176    public UserVisitCampaignPK getPKFromResultSet(ResultSet rs)
177            throws PersistenceDatabaseException {
178        UserVisitCampaignPK _result;
179        
180        try {
181            long uviscmpgn_uservisitcampaignid = rs.getLong(UVISCMPGN_USERVISITCAMPAIGNID);
182            Long _entityId = rs.wasNull() ? null : uviscmpgn_uservisitcampaignid;
183            
184            _result = new UserVisitCampaignPK(_entityId);
185        } catch (SQLException se) {
186            throw new PersistenceDatabaseException(se);
187        }
188        
189        return _result;
190    }
191    
192    public java.util.List<UserVisitCampaignValue> getValuesFromPKs(Collection<UserVisitCampaignPK> pks)
193            throws PersistenceDatabaseException {
194        java.util.List<UserVisitCampaignValue> _values = new ArrayList<>(pks.size());
195        
196        for(UserVisitCampaignPK _pk: pks) {
197            _values.add(getValueFromPK(_pk));
198        }
199        
200        return _values;
201    }
202    
203    public UserVisitCampaignValue getValueFromPK(UserVisitCampaignPK pk)
204            throws PersistenceDatabaseException {
205        UserVisitCampaignValue _value;
206        
207        // See if we already have the entity in the session cache
208        UserVisitCampaign _entity = (UserVisitCampaign)session.getEntity(pk);
209        if(_entity == null)
210            _value = getEntityFromPK(EntityPermission.READ_ONLY, pk).getUserVisitCampaignValue();
211        else
212            _value = _entity.getUserVisitCampaignValue();
213        
214        return _value;
215    }
216    
217    public java.util.List<UserVisitCampaignValue> getValuesFromResultSet(ResultSet rs)
218            throws PersistenceDatabaseException {
219        java.util.List<UserVisitCampaignValue> _result = new ArrayList<>();
220        
221        try {
222            while(rs.next()) {
223                _result.add(getValueFromResultSet(rs));
224            }
225        } catch (SQLException se) {
226            throw new PersistenceDatabaseException(se);
227        }
228        
229        return _result;
230    }
231    
232    public UserVisitCampaignValue getValueFromResultSet(ResultSet rs)
233            throws PersistenceDatabaseException {
234        UserVisitCampaignValue _value;
235        
236        try {
237            Long uviscmpgn_uservisitcampaignid = rs.getLong(UVISCMPGN_USERVISITCAMPAIGNID);
238            UserVisitCampaignPK _pk = new UserVisitCampaignPK(uviscmpgn_uservisitcampaignid);
239            
240            // See if we already have the entity in the session cache
241            UserVisitCampaign _entity = (UserVisitCampaign)session.getEntity(_pk);
242            
243            if(_entity == null) {
244                Long uviscmpgn_uvis_uservisitid = rs.getLong(UVISCMPGN_UVIS_USERVISITID);
245                if(rs.wasNull())
246                    uviscmpgn_uvis_uservisitid = null;
247                
248                Integer uviscmpgn_uservisitcampaignsequence = rs.getInt(UVISCMPGN_USERVISITCAMPAIGNSEQUENCE);
249                if(rs.wasNull())
250                    uviscmpgn_uservisitcampaignsequence = null;
251                
252                Long uviscmpgn_time = rs.getLong(UVISCMPGN_TIME);
253                if(rs.wasNull())
254                    uviscmpgn_time = null;
255                
256                Long uviscmpgn_cmpgn_campaignid = rs.getLong(UVISCMPGN_CMPGN_CAMPAIGNID);
257                if(rs.wasNull())
258                    uviscmpgn_cmpgn_campaignid = null;
259                
260                Long uviscmpgn_cmpgnsrc_campaignsourceid = rs.getLong(UVISCMPGN_CMPGNSRC_CAMPAIGNSOURCEID);
261                if(rs.wasNull())
262                    uviscmpgn_cmpgnsrc_campaignsourceid = null;
263                
264                Long uviscmpgn_cmpgnmdm_campaignmediumid = rs.getLong(UVISCMPGN_CMPGNMDM_CAMPAIGNMEDIUMID);
265                if(rs.wasNull())
266                    uviscmpgn_cmpgnmdm_campaignmediumid = null;
267                
268                Long uviscmpgn_cmpgntrm_campaigntermid = rs.getLong(UVISCMPGN_CMPGNTRM_CAMPAIGNTERMID);
269                if(rs.wasNull())
270                    uviscmpgn_cmpgntrm_campaigntermid = null;
271                
272                Long uviscmpgn_cmpgncnt_campaigncontentid = rs.getLong(UVISCMPGN_CMPGNCNT_CAMPAIGNCONTENTID);
273                if(rs.wasNull())
274                    uviscmpgn_cmpgncnt_campaigncontentid = null;
275                
276                Long uviscmpgn_fromtime = rs.getLong(UVISCMPGN_FROMTIME);
277                if(rs.wasNull())
278                    uviscmpgn_fromtime = null;
279                
280                Long uviscmpgn_thrutime = rs.getLong(UVISCMPGN_THRUTIME);
281                if(rs.wasNull())
282                    uviscmpgn_thrutime = null;
283                
284                _value = new UserVisitCampaignValue(_pk, new UserVisitPK(uviscmpgn_uvis_uservisitid), uviscmpgn_uservisitcampaignsequence, uviscmpgn_time, new CampaignPK(uviscmpgn_cmpgn_campaignid), new CampaignSourcePK(uviscmpgn_cmpgnsrc_campaignsourceid), new CampaignMediumPK(uviscmpgn_cmpgnmdm_campaignmediumid), new CampaignTermPK(uviscmpgn_cmpgntrm_campaigntermid), new CampaignContentPK(uviscmpgn_cmpgncnt_campaigncontentid), uviscmpgn_fromtime, uviscmpgn_thrutime);
285            } else
286                _value = _entity.getUserVisitCampaignValue();
287        } catch (SQLException se) {
288            throw new PersistenceDatabaseException(se);
289        }
290        
291        return _value;
292    }
293    
294    public java.util.List<UserVisitCampaign> getEntitiesFromPKs(EntityPermission entityPermission, Collection<UserVisitCampaignPK> pks)
295            throws PersistenceDatabaseException {
296        java.util.List<UserVisitCampaign> _entities = new ArrayList<>(pks.size());
297        
298        for(UserVisitCampaignPK _pk: pks) {
299            _entities.add(getEntityFromPK(entityPermission, _pk));
300        }
301        
302        return _entities;
303    }
304    
305    public UserVisitCampaign getEntityFromValue(EntityPermission entityPermission, UserVisitCampaignValue value) {
306        return getEntityFromPK(entityPermission, value.getPrimaryKey());
307    }
308    
309    public UserVisitCampaign getEntityFromCache(UserVisitCampaignPK pk) {
310        UserVisitCampaignValue _value = (UserVisitCampaignValue)session.getValueCache().get(pk);
311    
312        return _value == null ? null : new UserVisitCampaign(_value, EntityPermission.READ_ONLY);
313    }
314    
315    public UserVisitCampaign getEntityFromPK(EntityPermission entityPermission, UserVisitCampaignPK pk)
316            throws PersistenceDatabaseException {
317        UserVisitCampaign _entity;
318        
319        // See if we already have the entity in the session cache
320        _entity = (UserVisitCampaign)session.getEntity(pk);
321        if(_entity != null) {
322            // If the requested permission is READ_WRITE, and the cached permission is
323            // READ_ONLY, then pretend that the cached object wasn't found, and create
324            // a new entity that is READ_WRITE.
325            if(entityPermission.equals(EntityPermission.READ_WRITE)) {
326                if(_entity.getEntityPermission().equals(EntityPermission.READ_ONLY))
327                    _entity = null;
328            }
329        }
330        
331        if(_entity == null && entityPermission.equals(EntityPermission.READ_ONLY)) {
332            _entity = getEntityFromCache(pk);
333        }
334        
335        if(_entity == null) {
336            PreparedStatement _ps = session.prepareStatement(entityPermission.equals(EntityPermission.READ_ONLY)? SQL_SELECT_READ_ONLY: SQL_SELECT_READ_WRITE);
337            long _entityId = pk.getEntityId();
338            ResultSet _rs = null;
339            
340            try {
341                _ps.setLong(1, _entityId);
342                _rs = _ps.executeQuery();
343                if(_rs.next()) {
344                    _entity = getEntityFromResultSet(entityPermission, _rs);
345                }
346            } catch (SQLException se) {
347                throw new PersistenceDatabaseException(se);
348            } finally {
349                if(_rs != null) {
350                    try {
351                        _rs.close();
352                    } catch (SQLException se) {
353                        // do nothing
354                    }
355                }
356            }
357        }
358        
359        return _entity;
360    }
361    
362    public Set<UserVisitCampaignPK> getPKsFromQueryAsSet(PreparedStatement ps, final Object... params)
363            throws PersistenceDatabaseException {
364        Set<UserVisitCampaignPK> _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 = getPKsFromResultSetAsSet(_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 java.util.List<UserVisitCampaignPK> getPKsFromQueryAsList(PreparedStatement ps, final Object... params)
391            throws PersistenceDatabaseException {
392        java.util.List<UserVisitCampaignPK> _pks;
393        ResultSet _rs = null;
394        
395        try {
396            if(params.length != 0) {
397                Session.setQueryParams(ps, params);
398            }
399            
400            _rs = ps.executeQuery();
401            _pks = getPKsFromResultSetAsList(_rs);
402            _rs.close();
403        } catch (SQLException se) {
404            throw new PersistenceDatabaseException(se);
405        } finally {
406            if(_rs != null) {
407                try {
408                    _rs.close();
409                } catch (SQLException se) {
410                    // do nothing
411                }
412            }
413        }
414        
415        return _pks;
416    }
417    
418    public UserVisitCampaignPK getPKFromQuery(PreparedStatement ps, final Object... params)
419            throws PersistenceDatabaseException {
420        UserVisitCampaignPK _pk = null;
421        ResultSet _rs = null;
422        
423        try {
424            if(params.length != 0) {
425                Session.setQueryParams(ps, params);
426            }
427            
428            _rs = ps.executeQuery();
429            if(_rs.next()) {
430                _pk = getPKFromResultSet(_rs);
431            }
432            _rs.close();
433        } catch (SQLException se) {
434            throw new PersistenceDatabaseException(se);
435        } finally {
436            if(_rs != null) {
437                try {
438                    _rs.close();
439                } catch (SQLException se) {
440                    // do nothing
441                }
442            }
443        }
444        
445        return _pk;
446    }
447    
448    public java.util.List<UserVisitCampaign> getEntitiesFromQuery(EntityPermission entityPermission, Map<EntityPermission, String>queryMap, final Object... params)
449            throws PersistenceDatabaseException {
450        PreparedStatement ps = session.prepareStatement(UserVisitCampaignFactory.class, queryMap.get(entityPermission));
451        
452        return getEntitiesFromQuery(entityPermission, ps, params);
453    }
454    
455    public java.util.List<UserVisitCampaign> getEntitiesFromQuery(EntityPermission entityPermission, Map<EntityPermission, String>queryMap)
456            throws PersistenceDatabaseException {
457        PreparedStatement ps = session.prepareStatement(UserVisitCampaignFactory.class, queryMap.get(entityPermission));
458        
459        return getEntitiesFromQuery(entityPermission, ps);
460    }
461    
462    public java.util.List<UserVisitCampaign> getEntitiesFromQuery(EntityPermission entityPermission, ResultQuery<?> query)
463            throws PersistenceDatabaseException {
464        PreparedStatement ps = session.prepareStatement(UserVisitCampaignFactory.class, query.getSQL());
465        
466        return getEntitiesFromQuery(entityPermission, ps, query.getBindValues().toArray());
467    }
468    
469    public java.util.List<UserVisitCampaign> getEntitiesFromQuery(EntityPermission entityPermission, PreparedStatement ps, final Object... params)
470            throws PersistenceDatabaseException {
471        java.util.List<UserVisitCampaign> _entities;
472        ResultSet _rs = null;
473        
474        try {
475            if(params.length != 0) {
476                Session.setQueryParams(ps, params);
477            }
478            
479            _rs = ps.executeQuery();
480            _entities = getEntitiesFromResultSet(entityPermission, _rs);
481            _rs.close();
482        } catch (SQLException se) {
483            throw new PersistenceDatabaseException(se);
484        } finally {
485            if(_rs != null) {
486                try {
487                    _rs.close();
488                } catch (SQLException se) {
489                    // do nothing
490                }
491            }
492        }
493        
494        return _entities;
495    }
496    
497    public UserVisitCampaign getEntityFromQuery(EntityPermission entityPermission, Map<EntityPermission, String>queryMap, final Object... params)
498            throws PersistenceDatabaseException {
499        PreparedStatement ps = session.prepareStatement(UserVisitCampaignFactory.class, queryMap.get(entityPermission));
500        
501        return getEntityFromQuery(entityPermission, ps, params);
502    }
503    
504    public UserVisitCampaign getEntityFromQuery(EntityPermission entityPermission, Map<EntityPermission, String>queryMap)
505            throws PersistenceDatabaseException {
506        PreparedStatement ps = session.prepareStatement(UserVisitCampaignFactory.class, queryMap.get(entityPermission));
507        
508        return getEntityFromQuery(entityPermission, ps);
509    }
510    
511    public UserVisitCampaign getEntityFromQuery(EntityPermission entityPermission, ResultQuery<?> query)
512            throws PersistenceDatabaseException {
513        PreparedStatement ps = session.prepareStatement(UserVisitCampaignFactory.class, query.getSQL());
514        
515        return getEntityFromQuery(entityPermission, ps, query.getBindValues().toArray());
516    }
517    
518    public UserVisitCampaign getEntityFromQuery(EntityPermission entityPermission, PreparedStatement ps, final Object... params)
519            throws PersistenceDatabaseException {
520        UserVisitCampaign _entity = null;
521        ResultSet _rs = null;
522        
523        try {
524            if(params.length != 0) {
525                Session.setQueryParams(ps, params);
526            }
527            
528            _rs = ps.executeQuery();
529            if(_rs.next()) {
530                _entity = getEntityFromResultSet(entityPermission, _rs);
531            }
532            _rs.close();
533        } catch (SQLException se) {
534            throw new PersistenceDatabaseException(se);
535        } finally {
536            if(_rs != null) {
537                try {
538                    _rs.close();
539                } catch (SQLException se) {
540                    // do nothing
541                }
542            }
543        }
544        
545        return _entity;
546    }
547    
548    public java.util.List<UserVisitCampaign> getEntitiesFromResultSet(EntityPermission entityPermission, ResultSet rs)
549            throws PersistenceDatabaseException {
550        java.util.List<UserVisitCampaign> _result = new ArrayList<>();
551        
552        try {
553            while(rs.next()) {
554                _result.add(getEntityFromResultSet(entityPermission, rs));
555            }
556        } catch (SQLException se) {
557            throw new PersistenceDatabaseException(se);
558        }
559        
560        return _result;
561    }
562    
563    public UserVisitCampaign getEntityFromResultSet(EntityPermission entityPermission, ResultSet rs)
564            throws PersistenceDatabaseException {
565        UserVisitCampaign _entity;
566        
567        try {
568            Long uviscmpgn_uservisitcampaignid = rs.getLong(UVISCMPGN_USERVISITCAMPAIGNID);
569            UserVisitCampaignPK _pk = new UserVisitCampaignPK(uviscmpgn_uservisitcampaignid);
570            
571            // See if we already have the entity in the session cache
572            _entity = (UserVisitCampaign)session.getEntity(_pk);
573            if(_entity != null) {
574                // If the requested permission is READ_WRITE, and the cached permission is
575                // READ_ONLY, then pretend that the cached object wasn't found, and create
576                // a new entity that is READ_WRITE.
577                if(entityPermission.equals(EntityPermission.READ_WRITE)) {
578                    if(_entity.getEntityPermission().equals(EntityPermission.READ_ONLY))
579                        _entity = null;
580                }
581            }
582            boolean foundInSessionCache = _entity != null;
583            
584            if(_entity == null && entityPermission.equals(EntityPermission.READ_ONLY)) {
585                _entity = getEntityFromCache(_pk);
586            }
587            
588            if(_entity == null) {
589                Long uviscmpgn_uvis_uservisitid = rs.getLong(UVISCMPGN_UVIS_USERVISITID);
590                if(rs.wasNull())
591                    uviscmpgn_uvis_uservisitid = null;
592                
593                Integer uviscmpgn_uservisitcampaignsequence = rs.getInt(UVISCMPGN_USERVISITCAMPAIGNSEQUENCE);
594                if(rs.wasNull())
595                    uviscmpgn_uservisitcampaignsequence = null;
596                
597                Long uviscmpgn_time = rs.getLong(UVISCMPGN_TIME);
598                if(rs.wasNull())
599                    uviscmpgn_time = null;
600                
601                Long uviscmpgn_cmpgn_campaignid = rs.getLong(UVISCMPGN_CMPGN_CAMPAIGNID);
602                if(rs.wasNull())
603                    uviscmpgn_cmpgn_campaignid = null;
604                
605                Long uviscmpgn_cmpgnsrc_campaignsourceid = rs.getLong(UVISCMPGN_CMPGNSRC_CAMPAIGNSOURCEID);
606                if(rs.wasNull())
607                    uviscmpgn_cmpgnsrc_campaignsourceid = null;
608                
609                Long uviscmpgn_cmpgnmdm_campaignmediumid = rs.getLong(UVISCMPGN_CMPGNMDM_CAMPAIGNMEDIUMID);
610                if(rs.wasNull())
611                    uviscmpgn_cmpgnmdm_campaignmediumid = null;
612                
613                Long uviscmpgn_cmpgntrm_campaigntermid = rs.getLong(UVISCMPGN_CMPGNTRM_CAMPAIGNTERMID);
614                if(rs.wasNull())
615                    uviscmpgn_cmpgntrm_campaigntermid = null;
616                
617                Long uviscmpgn_cmpgncnt_campaigncontentid = rs.getLong(UVISCMPGN_CMPGNCNT_CAMPAIGNCONTENTID);
618                if(rs.wasNull())
619                    uviscmpgn_cmpgncnt_campaigncontentid = null;
620                
621                Long uviscmpgn_fromtime = rs.getLong(UVISCMPGN_FROMTIME);
622                if(rs.wasNull())
623                    uviscmpgn_fromtime = null;
624                
625                Long uviscmpgn_thrutime = rs.getLong(UVISCMPGN_THRUTIME);
626                if(rs.wasNull())
627                    uviscmpgn_thrutime = null;
628                
629                UserVisitCampaignValue _value = new UserVisitCampaignValue(_pk, uviscmpgn_uvis_uservisitid == null? null: new UserVisitPK(uviscmpgn_uvis_uservisitid), uviscmpgn_uservisitcampaignsequence, uviscmpgn_time, uviscmpgn_cmpgn_campaignid == null? null: new CampaignPK(uviscmpgn_cmpgn_campaignid), uviscmpgn_cmpgnsrc_campaignsourceid == null? null: new CampaignSourcePK(uviscmpgn_cmpgnsrc_campaignsourceid), uviscmpgn_cmpgnmdm_campaignmediumid == null? null: new CampaignMediumPK(uviscmpgn_cmpgnmdm_campaignmediumid), uviscmpgn_cmpgntrm_campaigntermid == null? null: new CampaignTermPK(uviscmpgn_cmpgntrm_campaigntermid), uviscmpgn_cmpgncnt_campaigncontentid == null? null: new CampaignContentPK(uviscmpgn_cmpgncnt_campaigncontentid), uviscmpgn_fromtime, uviscmpgn_thrutime);
630                _entity = new UserVisitCampaign(_value, entityPermission);
631            }
632            
633            if(!foundInSessionCache) {
634                if(entityPermission.equals(EntityPermission.READ_ONLY)) {
635                    session.putReadOnlyEntity(_pk, _entity);
636                    session.getValueCache().put(_entity.getUserVisitCampaignValue());
637                } else {
638                    session.putReadWriteEntity(_pk, _entity);
639                }
640            }
641        } catch (SQLException se) {
642            throw new PersistenceDatabaseException(se);
643        }
644        
645        return _entity;
646    }
647    
648    public UserVisitCampaign create(UserVisit userVisit, Integer userVisitCampaignSequence, Long time, Campaign campaign, CampaignSource campaignSource, CampaignMedium campaignMedium, CampaignTerm campaignTerm, CampaignContent campaignContent, Long fromTime, Long thruTime)
649            throws PersistenceDatabaseException, PersistenceNotNullException {
650        return create(userVisit == null ? null : userVisit.getPrimaryKey(), userVisitCampaignSequence, time, campaign == null ? null : campaign.getPrimaryKey(), campaignSource == null ? null : campaignSource.getPrimaryKey(), campaignMedium == null ? null : campaignMedium.getPrimaryKey(), campaignTerm == null ? null : campaignTerm.getPrimaryKey(), campaignContent == null ? null : campaignContent.getPrimaryKey(), fromTime, thruTime);
651    }
652    
653    private void bindForCreate(PreparedStatement _ps, UserVisitCampaignValue _value)
654            throws SQLException {
655        _ps.setLong(1, _value.getEntityId());
656        
657        UserVisitPK uviscmpgn_uvis_uservisitid = _value.getUserVisitPK();
658        if(uviscmpgn_uvis_uservisitid == null)
659            _ps.setNull(2, Types.BIGINT);
660        else
661            _ps.setLong(2, uviscmpgn_uvis_uservisitid.getEntityId());
662            
663        Integer uviscmpgn_uservisitcampaignsequence = _value.getUserVisitCampaignSequence();
664        if(uviscmpgn_uservisitcampaignsequence == null)
665            _ps.setNull(3, Types.INTEGER);
666        else
667            _ps.setInt(3, uviscmpgn_uservisitcampaignsequence);
668            
669        Long uviscmpgn_time = _value.getTime();
670        if(uviscmpgn_time == null)
671            _ps.setNull(4, Types.BIGINT);
672        else
673            _ps.setLong(4, uviscmpgn_time);
674            
675        CampaignPK uviscmpgn_cmpgn_campaignid = _value.getCampaignPK();
676        if(uviscmpgn_cmpgn_campaignid == null)
677            _ps.setNull(5, Types.BIGINT);
678        else
679            _ps.setLong(5, uviscmpgn_cmpgn_campaignid.getEntityId());
680            
681        CampaignSourcePK uviscmpgn_cmpgnsrc_campaignsourceid = _value.getCampaignSourcePK();
682        if(uviscmpgn_cmpgnsrc_campaignsourceid == null)
683            _ps.setNull(6, Types.BIGINT);
684        else
685            _ps.setLong(6, uviscmpgn_cmpgnsrc_campaignsourceid.getEntityId());
686            
687        CampaignMediumPK uviscmpgn_cmpgnmdm_campaignmediumid = _value.getCampaignMediumPK();
688        if(uviscmpgn_cmpgnmdm_campaignmediumid == null)
689            _ps.setNull(7, Types.BIGINT);
690        else
691            _ps.setLong(7, uviscmpgn_cmpgnmdm_campaignmediumid.getEntityId());
692            
693        CampaignTermPK uviscmpgn_cmpgntrm_campaigntermid = _value.getCampaignTermPK();
694        if(uviscmpgn_cmpgntrm_campaigntermid == null)
695            _ps.setNull(8, Types.BIGINT);
696        else
697            _ps.setLong(8, uviscmpgn_cmpgntrm_campaigntermid.getEntityId());
698            
699        CampaignContentPK uviscmpgn_cmpgncnt_campaigncontentid = _value.getCampaignContentPK();
700        if(uviscmpgn_cmpgncnt_campaigncontentid == null)
701            _ps.setNull(9, Types.BIGINT);
702        else
703            _ps.setLong(9, uviscmpgn_cmpgncnt_campaigncontentid.getEntityId());
704            
705        Long uviscmpgn_fromtime = _value.getFromTime();
706        if(uviscmpgn_fromtime == null)
707            _ps.setNull(10, Types.BIGINT);
708        else
709            _ps.setLong(10, uviscmpgn_fromtime);
710            
711        Long uviscmpgn_thrutime = _value.getThruTime();
712        if(uviscmpgn_thrutime == null)
713            _ps.setNull(11, Types.BIGINT);
714        else
715            _ps.setLong(11, uviscmpgn_thrutime);
716            
717    }
718    
719    public UserVisitCampaign create(UserVisitPK userVisitPK, Integer userVisitCampaignSequence, Long time, CampaignPK campaignPK, CampaignSourcePK campaignSourcePK, CampaignMediumPK campaignMediumPK, CampaignTermPK campaignTermPK, CampaignContentPK campaignContentPK, Long fromTime, Long thruTime)
720            throws PersistenceDatabaseException, PersistenceNotNullException {
721        UserVisitCampaignPK _pk = getNextPK();
722        UserVisitCampaignValue _value = new UserVisitCampaignValue(_pk, userVisitPK, userVisitCampaignSequence, time, campaignPK, campaignSourcePK, campaignMediumPK, campaignTermPK, campaignContentPK, fromTime, thruTime);
723        
724        PreparedStatement _ps = session.prepareStatement(SQL_INSERT);
725        
726        try {
727            bindForCreate(_ps, _value);
728            
729            if(PersistenceDebugFlags.CheckEntityInsertRowCount) {
730                int _count = _ps.executeUpdate();
731                
732                if(_count != 1) {
733                    throw new PersistenceDatabaseUpdateException("insert failed, _count = " + _count);
734                }
735            } else {
736                 _ps.executeUpdate();
737            }
738            
739            session.getValueCache().put(_value);
740        } catch (SQLException se) {
741            throw new PersistenceDatabaseException(se);
742        }
743        
744        UserVisitCampaign _entity = new UserVisitCampaign(_value, EntityPermission.READ_ONLY);
745        session.putReadOnlyEntity(_pk, _entity);
746        
747        return _entity;
748    }
749    
750    public void create(Collection<UserVisitCampaignValue> _values)
751            throws PersistenceDatabaseException, PersistenceNotNullException {
752        int _size = _values.size();
753        
754        if(_size > 0) {
755            PreparedStatement _ps = session.prepareStatement(SQL_INSERT);
756            List<UserVisitCampaignValue> _cacheValues = new ArrayList<>(_size);
757            
758            try {
759                for(UserVisitCampaignValue _value : _values) {
760                    _value.setEntityId(entityIdGenerator.getNextEntityId());
761                    bindForCreate(_ps, _value);
762                    
763                    _ps.addBatch();
764                    
765                    _cacheValues.add(_value);
766                }
767                
768                if(PersistenceDebugFlags.CheckEntityInsertRowCount) {
769                    int[] _counts = _ps.executeBatch();
770                    
771                    for(int _countOffset = 0 ; _countOffset < _size ; _countOffset++) {
772                        if(_counts[_countOffset] != 1 && _counts[_countOffset] != PreparedStatement.SUCCESS_NO_INFO) {
773                            throw new PersistenceDatabaseUpdateException("batch insert failed, _counts[" + _countOffset + "] = " + _counts[_countOffset]);
774                        }
775                    }
776                } else {
777                     _ps.executeBatch();
778                }
779                
780                _ps.clearBatch();
781            } catch (SQLException se) {
782                throw new PersistenceDatabaseException(se);
783            }
784            
785            _cacheValues.forEach((_cacheValue) -> {
786                UserVisitCampaign _cacheEntity = new UserVisitCampaign(_cacheValue, EntityPermission.READ_ONLY);
787                
788                session.putReadOnlyEntity(_cacheValue.getPrimaryKey(), _cacheEntity);
789            });
790        }
791    }
792    
793    private boolean bindForStore(PreparedStatement _ps, UserVisitCampaignValue _value)
794            throws SQLException {
795        boolean _hasBeenModified = _value.hasBeenModified();
796        
797        if(_hasBeenModified) {
798            UserVisitPK uviscmpgn_uvis_uservisitid = _value.getUserVisitPK();
799            if(uviscmpgn_uvis_uservisitid == null)
800                _ps.setNull(1, Types.BIGINT);
801            else
802                _ps.setLong(1, uviscmpgn_uvis_uservisitid.getEntityId());
803            
804            Integer uviscmpgn_uservisitcampaignsequence = _value.getUserVisitCampaignSequence();
805            if(uviscmpgn_uservisitcampaignsequence == null)
806                _ps.setNull(2, Types.INTEGER);
807            else
808                _ps.setInt(2, uviscmpgn_uservisitcampaignsequence);
809            
810            Long uviscmpgn_time = _value.getTime();
811            if(uviscmpgn_time == null)
812                _ps.setNull(3, Types.BIGINT);
813            else
814                _ps.setLong(3, uviscmpgn_time);
815            
816            CampaignPK uviscmpgn_cmpgn_campaignid = _value.getCampaignPK();
817            if(uviscmpgn_cmpgn_campaignid == null)
818                _ps.setNull(4, Types.BIGINT);
819            else
820                _ps.setLong(4, uviscmpgn_cmpgn_campaignid.getEntityId());
821            
822            CampaignSourcePK uviscmpgn_cmpgnsrc_campaignsourceid = _value.getCampaignSourcePK();
823            if(uviscmpgn_cmpgnsrc_campaignsourceid == null)
824                _ps.setNull(5, Types.BIGINT);
825            else
826                _ps.setLong(5, uviscmpgn_cmpgnsrc_campaignsourceid.getEntityId());
827            
828            CampaignMediumPK uviscmpgn_cmpgnmdm_campaignmediumid = _value.getCampaignMediumPK();
829            if(uviscmpgn_cmpgnmdm_campaignmediumid == null)
830                _ps.setNull(6, Types.BIGINT);
831            else
832                _ps.setLong(6, uviscmpgn_cmpgnmdm_campaignmediumid.getEntityId());
833            
834            CampaignTermPK uviscmpgn_cmpgntrm_campaigntermid = _value.getCampaignTermPK();
835            if(uviscmpgn_cmpgntrm_campaigntermid == null)
836                _ps.setNull(7, Types.BIGINT);
837            else
838                _ps.setLong(7, uviscmpgn_cmpgntrm_campaigntermid.getEntityId());
839            
840            CampaignContentPK uviscmpgn_cmpgncnt_campaigncontentid = _value.getCampaignContentPK();
841            if(uviscmpgn_cmpgncnt_campaigncontentid == null)
842                _ps.setNull(8, Types.BIGINT);
843            else
844                _ps.setLong(8, uviscmpgn_cmpgncnt_campaigncontentid.getEntityId());
845            
846            Long uviscmpgn_fromtime = _value.getFromTime();
847            if(uviscmpgn_fromtime == null)
848                _ps.setNull(9, Types.BIGINT);
849            else
850                _ps.setLong(9, uviscmpgn_fromtime);
851            
852            Long uviscmpgn_thrutime = _value.getThruTime();
853            if(uviscmpgn_thrutime == null)
854                _ps.setNull(10, Types.BIGINT);
855            else
856                _ps.setLong(10, uviscmpgn_thrutime);
857            
858            _ps.setLong(11, _value.getPrimaryKey().getEntityId());
859            
860            _value.clearHasBeenModified();
861        }
862        
863        return _hasBeenModified;
864    }
865    
866    @Override
867    public void store(UserVisitCampaign entity)
868            throws PersistenceDatabaseException {
869        PreparedStatement _ps = session.prepareStatement(SQL_UPDATE);
870        
871        try {
872            UserVisitCampaignValue _value = entity.getUserVisitCampaignValue();
873            
874            if(bindForStore(_ps, _value)) {
875                if(PersistenceDebugFlags.CheckEntityUpdateRowCount) {
876                    int _count = _ps.executeUpdate();
877                    
878                    if(_count != 1) {
879                        throw new PersistenceDatabaseUpdateException("update failed, _count = " + _count);
880                    }
881                } else {
882                     _ps.executeUpdate();
883                }
884                
885                session.getValueCache().put(_value);
886            }
887        } catch (SQLException se) {
888            throw new PersistenceDatabaseException(se);
889        }
890    }
891    
892    @Override
893    public void store(Collection<UserVisitCampaign> entities)
894            throws PersistenceDatabaseException {
895        if(entities.size() > 0) {
896            PreparedStatement _ps = session.prepareStatement(SQL_UPDATE);
897            int _modifiedEntities = 0;
898            
899            try {
900                for(UserVisitCampaign entity : entities) {
901                    if(bindForStore(_ps, entity.getUserVisitCampaignValue())) {
902                        _ps.addBatch();
903                        _modifiedEntities++;
904                    }
905                }
906                
907                if(_modifiedEntities != 0) {
908                    if(PersistenceDebugFlags.CheckEntityUpdateRowCount) {
909                        int[] _counts = _ps.executeBatch();
910                        
911                        for(int _countOffset = 0 ; _countOffset < _modifiedEntities  ; _countOffset++) {
912                            if(_counts[_countOffset] != 1 && _counts[_countOffset] != PreparedStatement.SUCCESS_NO_INFO) {
913                                throw new PersistenceDatabaseUpdateException("batch update failed, _counts[" + _countOffset + "] = " + _counts[_countOffset]);
914                            }
915                        }
916                    } else {
917                         _ps.executeBatch();
918                    }
919                    
920                    _ps.clearBatch();
921                    
922                    entities.forEach((entity) -> {
923                        session.getValueCache().put(entity.getUserVisitCampaignValue());
924                    });
925                }
926            } catch (SQLException se) {
927                throw new PersistenceDatabaseException(se);
928            }
929        }
930    }
931    
932    @Override
933    public void remove(UserVisitCampaign entity)
934            throws PersistenceDatabaseException {
935        remove(entity.getPrimaryKey());
936    }
937    
938    @Override
939    public void remove(UserVisitCampaignPK pk)
940            throws PersistenceDatabaseException {
941        PreparedStatement _ps = session.prepareStatement(SQL_DELETE);
942        long _entityId = pk.getEntityId();
943        
944        try {
945            _ps.setLong(1, _entityId);
946            
947            if(PersistenceDebugFlags.CheckEntityDeleteRowCount) {
948                int _count = _ps.executeUpdate();
949                
950                if(_count != 1) {
951                    throw new PersistenceDatabaseUpdateException("remove failed, _count = " + _count);
952                }
953            } else {
954                 _ps.executeUpdate();
955            }
956            
957            session.getValueCache().remove(pk);
958        } catch (SQLException se) {
959            throw new PersistenceDatabaseException(se);
960        }
961        
962        session.removed(pk, false);
963    }
964    
965    @Override
966    public void remove(Collection<UserVisitCampaignPK> pks)
967            throws PersistenceDatabaseException {
968        if(pks.size() > 0) {
969            PreparedStatement _ps = session.prepareStatement(SQL_DELETE);
970            int _modifiedEntities = 0;
971            
972            try {
973                for(UserVisitCampaignPK pk : pks) {
974                    long _entityId = pk.getEntityId();
975                    
976                    _ps.setLong(1, _entityId);
977                    
978                    _ps.addBatch();
979                    _modifiedEntities++;
980                }
981                
982                if(_modifiedEntities != 0) {
983                    if(PersistenceDebugFlags.CheckEntityDeleteRowCount) {
984                        int[] _counts = _ps.executeBatch();
985                        
986                        for(int _countOffset = 0 ; _countOffset < _modifiedEntities  ; _countOffset++) {
987                            if(_counts[_countOffset] != 1 && _counts[_countOffset] != PreparedStatement.SUCCESS_NO_INFO) {
988                                throw new PersistenceDatabaseUpdateException("batch remove failed, _counts[" + _countOffset + "] = " + _counts[_countOffset]);
989                            }
990                        }
991                    } else {
992                        _ps.executeBatch();
993                    }
994                    
995                    _ps.clearBatch();
996                    
997                    pks.forEach((pk) -> {
998                        session.getValueCache().remove(pk);
999                    });
1000                }
1001            } catch (SQLException se) {
1002                throw new PersistenceDatabaseException(se);
1003            }
1004            
1005            pks.forEach((pk) -> {
1006                session.removed(pk, true);
1007            });
1008        }
1009    }
1010    
1011    @Override
1012    public boolean validPK(UserVisitCampaignPK pk)
1013            throws PersistenceDatabaseException {
1014        boolean valid = false;
1015        PreparedStatement _ps = session.prepareStatement(SQL_VALID);
1016        ResultSet _rs = null;
1017        
1018        try {
1019            _ps.setLong(1, pk.getEntityId());
1020            
1021            _rs = _ps.executeQuery();
1022            if(_rs.next()) {
1023                long _count = _rs.getLong(1);
1024                if(_rs.wasNull())
1025                    _count = 0;
1026                
1027                if(_count == 1)
1028                    valid = true;
1029            }
1030        } catch (SQLException se) {
1031            throw new PersistenceDatabaseException(se);
1032        } finally {
1033            if(_rs != null) {
1034                try {
1035                    _rs.close();
1036                } catch (SQLException se) {
1037                    // do nothing
1038                }
1039            }
1040        }
1041        
1042        return valid;
1043    }
1044    
1045}