1 <#if entity.isHierarchicalTree()>
\r
2 <#if entity.hasColumn("groupId")>
\r
3 <#assign scopeColumn = entity.getColumn("groupId")>
\r
5 <#assign scopeColumn = entity.getColumn("companyId")>
\r
8 <#assign pkColumn = entity.getPKList()?first>
\r
11 package ${packagePath}.service.persistence;
\r
13 <#assign noSuchEntity = serviceBuilder.getNoSuchEntityException(entity)>
\r
15 import ${packagePath}.${noSuchEntity}Exception;
\r
16 import ${packagePath}.model.${entity.name};
\r
17 import ${packagePath}.model.impl.${entity.name}Impl;
\r
18 import ${packagePath}.model.impl.${entity.name}ModelImpl;
\r
20 import com.liferay.portal.NoSuchModelException;
\r
21 import com.liferay.portal.kernel.bean.BeanReference;
\r
22 import com.liferay.portal.kernel.cache.CacheRegistryUtil;
\r
23 import com.liferay.portal.kernel.dao.jdbc.MappingSqlQuery;
\r
24 import com.liferay.portal.kernel.dao.jdbc.MappingSqlQueryFactoryUtil;
\r
25 import com.liferay.portal.kernel.dao.jdbc.RowMapper;
\r
26 import com.liferay.portal.kernel.dao.jdbc.SqlUpdate;
\r
27 import com.liferay.portal.kernel.dao.jdbc.SqlUpdateFactoryUtil;
\r
28 import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
\r
29 import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
\r
30 import com.liferay.portal.kernel.dao.orm.FinderPath;
\r
31 import com.liferay.portal.kernel.dao.orm.Query;
\r
32 import com.liferay.portal.kernel.dao.orm.QueryPos;
\r
33 import com.liferay.portal.kernel.dao.orm.QueryUtil;
\r
34 import com.liferay.portal.kernel.dao.orm.Session;
\r
35 import com.liferay.portal.kernel.dao.orm.SQLQuery;
\r
36 import com.liferay.portal.kernel.exception.SystemException;
\r
37 import com.liferay.portal.kernel.log.Log;
\r
38 import com.liferay.portal.kernel.log.LogFactoryUtil;
\r
39 import com.liferay.portal.kernel.portlet.PortletClassLoaderUtil;
\r
40 import com.liferay.portal.kernel.sanitizer.Sanitizer;
\r
41 import com.liferay.portal.kernel.sanitizer.SanitizerException;
\r
42 import com.liferay.portal.kernel.sanitizer.SanitizerUtil;
\r
43 import com.liferay.portal.kernel.util.ArrayUtil;
\r
44 import com.liferay.portal.kernel.util.ContentTypes;
\r
45 import com.liferay.portal.kernel.util.CalendarUtil;
\r
46 import com.liferay.portal.kernel.util.GetterUtil;
\r
47 import com.liferay.portal.kernel.util.InstanceFactory;
\r
48 import com.liferay.portal.kernel.util.OrderByComparator;
\r
49 import com.liferay.portal.kernel.util.PropsKeys;
\r
50 import com.liferay.portal.kernel.util.PropsUtil;
\r
51 import com.liferay.portal.kernel.util.SetUtil;
\r
52 import com.liferay.portal.kernel.util.StringBundler;
\r
53 import com.liferay.portal.kernel.util.StringPool;
\r
54 import com.liferay.portal.kernel.util.StringUtil;
\r
55 import com.liferay.portal.kernel.util.Validator;
\r
56 import com.liferay.portal.kernel.uuid.PortalUUIDUtil;
\r
57 import com.liferay.portal.model.CacheModel;
\r
58 import com.liferay.portal.model.ModelListener;
\r
59 import com.liferay.portal.security.auth.PrincipalThreadLocal;
\r
60 import com.liferay.portal.security.permission.InlineSQLHelperUtil;
\r
61 import com.liferay.portal.service.persistence.BatchSessionUtil;
\r
62 import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
\r
64 import java.io.Serializable;
\r
66 import java.sql.ResultSet;
\r
67 import java.sql.SQLException;
\r
69 import java.util.ArrayList;
\r
70 import java.util.Collections;
\r
71 import java.util.Date;
\r
72 import java.util.Iterator;
\r
73 import java.util.List;
\r
74 import java.util.Set;
\r
76 <#list referenceList as tempEntity>
\r
77 <#if tempEntity.hasColumns() && (entity.name == "Counter" || tempEntity.name != "Counter")>
\r
78 import ${tempEntity.packagePath}.service.persistence.${tempEntity.name}Persistence;
\r
83 * The persistence implementation for the ${entity.humanName} service.
\r
86 * Caching information and settings can be found in <code>portal.properties</code>
\r
90 * @see ${entity.name}Persistence
\r
91 * @see ${entity.name}Util
\r
94 public class ${entity.name}PersistenceImpl extends BasePersistenceImpl<${entity.name}> implements ${entity.name}Persistence {
\r
97 * NOTE FOR DEVELOPERS:
\r
99 * Never modify or reference this class directly. Always use {@link ${entity.name}Util} to access the ${entity.humanName} persistence. Modify <code>service.xml</code> and rerun ServiceBuilder to regenerate this class.
\r
102 public static final String FINDER_CLASS_NAME_ENTITY = ${entity.name}Impl.class.getName();
\r
104 public static final String FINDER_CLASS_NAME_LIST_WITH_PAGINATION = FINDER_CLASS_NAME_ENTITY + ".List1";
\r
106 public static final String FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION = FINDER_CLASS_NAME_ENTITY + ".List2";
\r
108 <#assign columnBitmaskEnabled = (entity.finderColumnsList?size > 0) && (entity.finderColumnsList?size < 64)>
\r
110 <#list entity.getFinderList() as finder>
\r
111 <#assign finderColsList = finder.getColumns()>
\r
113 <#if finder.isCollection()>
\r
114 public static final FinderPath FINDER_PATH_WITH_PAGINATION_FIND_BY_${finder.name?upper_case} = new FinderPath(
\r
115 ${entity.name}ModelImpl.ENTITY_CACHE_ENABLED,
\r
116 ${entity.name}ModelImpl.FINDER_CACHE_ENABLED,
\r
117 ${entity.name}Impl.class,
\r
118 FINDER_CLASS_NAME_LIST_WITH_PAGINATION,
\r
119 "findBy${finder.name}",
\r
121 <#list finderColsList as finderCol>
\r
122 ${serviceBuilder.getPrimitiveObj("${finderCol.type}")}.class.getName(),
\r
125 "java.lang.Integer", "java.lang.Integer", "com.liferay.portal.kernel.util.OrderByComparator"
\r
128 <#if !finder.hasCustomComparator()>
\r
129 public static final FinderPath FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_${finder.name?upper_case} = new FinderPath(
\r
130 ${entity.name}ModelImpl.ENTITY_CACHE_ENABLED,
\r
131 ${entity.name}ModelImpl.FINDER_CACHE_ENABLED,
\r
132 ${entity.name}Impl.class,
\r
133 FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
\r
134 "findBy${finder.name}",
\r
136 <#list finderColsList as finderCol>
\r
137 ${serviceBuilder.getPrimitiveObj("${finderCol.type}")}.class.getName()
\r
139 <#if finderCol_has_next>
\r
145 <#if columnBitmaskEnabled>
\r
148 <#list finderColsList as finderCol>
\r
149 ${entity.name}ModelImpl.${finderCol.name?upper_case}_COLUMN_BITMASK
\r
151 <#if finderCol_has_next>
\r
160 public static final FinderPath FINDER_PATH_FETCH_BY_${finder.name?upper_case} = new FinderPath(
\r
161 ${entity.name}ModelImpl.ENTITY_CACHE_ENABLED,
\r
162 ${entity.name}ModelImpl.FINDER_CACHE_ENABLED,
\r
163 ${entity.name}Impl.class,
\r
164 FINDER_CLASS_NAME_ENTITY,
\r
165 "fetchBy${finder.name}",
\r
167 <#list finderColsList as finderCol>
\r
168 ${serviceBuilder.getPrimitiveObj("${finderCol.type}")}.class.getName()
\r
170 <#if finderCol_has_next>
\r
176 <#if columnBitmaskEnabled>
\r
179 <#list finderColsList as finderCol>
\r
180 ${entity.name}ModelImpl.${finderCol.name?upper_case}_COLUMN_BITMASK
\r
182 <#if finderCol_has_next>
\r
191 <#if !finder.hasCustomComparator()>
\r
192 public static final FinderPath FINDER_PATH_COUNT_BY_${finder.name?upper_case} = new FinderPath(
\r
193 ${entity.name}ModelImpl.ENTITY_CACHE_ENABLED,
\r
194 ${entity.name}ModelImpl.FINDER_CACHE_ENABLED,
\r
196 FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
\r
197 "countBy${finder.name}",
\r
199 <#list finderColsList as finderCol>
\r
200 ${serviceBuilder.getPrimitiveObj("${finderCol.type}")}.class.getName()
\r
202 <#if finderCol_has_next>
\r
209 <#if finder.hasArrayableOperator() || finder.hasCustomComparator()>
\r
210 public static final FinderPath FINDER_PATH_WITH_PAGINATION_COUNT_BY_${finder.name?upper_case} = new FinderPath(
\r
211 ${entity.name}ModelImpl.ENTITY_CACHE_ENABLED,
\r
212 ${entity.name}ModelImpl.FINDER_CACHE_ENABLED,
\r
214 FINDER_CLASS_NAME_LIST_WITH_PAGINATION,
\r
215 "countBy${finder.name}",
\r
217 <#list finderColsList as finderCol>
\r
218 ${serviceBuilder.getPrimitiveObj("${finderCol.type}")}.class.getName()
\r
220 <#if finderCol_has_next>
\r
228 public static final FinderPath FINDER_PATH_WITH_PAGINATION_FIND_ALL = new FinderPath(
\r
229 ${entity.name}ModelImpl.ENTITY_CACHE_ENABLED,
\r
230 ${entity.name}ModelImpl.FINDER_CACHE_ENABLED,
\r
231 ${entity.name}Impl.class,
\r
232 FINDER_CLASS_NAME_LIST_WITH_PAGINATION,
\r
236 public static final FinderPath FINDER_PATH_WITHOUT_PAGINATION_FIND_ALL = new FinderPath(
\r
237 ${entity.name}ModelImpl.ENTITY_CACHE_ENABLED,
\r
238 ${entity.name}ModelImpl.FINDER_CACHE_ENABLED,
\r
239 ${entity.name}Impl.class,
\r
240 FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
\r
244 public static final FinderPath FINDER_PATH_COUNT_ALL = new FinderPath(
\r
245 ${entity.name}ModelImpl.ENTITY_CACHE_ENABLED,
\r
246 ${entity.name}ModelImpl.FINDER_CACHE_ENABLED,
\r
248 FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
\r
253 * Caches the ${entity.humanName} in the entity cache if it is enabled.
\r
255 * @param ${entity.varName} the ${entity.humanName}
\r
257 public void cacheResult(${entity.name} ${entity.varName}) {
\r
258 EntityCacheUtil.putResult(${entity.name}ModelImpl.ENTITY_CACHE_ENABLED, ${entity.name}Impl.class, ${entity.varName}.getPrimaryKey(), ${entity.varName});
\r
260 <#list entity.getUniqueFinderList() as finder>
\r
261 <#assign finderColsList = finder.getColumns()>
\r
263 FinderCacheUtil.putResult(
\r
264 FINDER_PATH_FETCH_BY_${finder.name?upper_case},
\r
266 <#list finderColsList as finderCol>
\r
267 <#if finderCol.isPrimitiveType()>
\r
268 ${serviceBuilder.getPrimitiveObj("${finderCol.type}")}.valueOf(
\r
271 ${entity.varName}.get${finderCol.methodName}()
\r
273 <#if finderCol.isPrimitiveType()>
\r
277 <#if finderCol_has_next>
\r
282 ${entity.varName});
\r
285 ${entity.varName}.resetOriginalValues();
\r
289 * Caches the ${entity.humanNames} in the entity cache if it is enabled.
\r
291 * @param ${entity.varNames} the ${entity.humanNames}
\r
293 public void cacheResult(List<${entity.name}> ${entity.varNames}) {
\r
294 for (${entity.name} ${entity.varName} : ${entity.varNames}) {
\r
295 if (EntityCacheUtil.getResult(${entity.name}ModelImpl.ENTITY_CACHE_ENABLED, ${entity.name}Impl.class, ${entity.varName}.getPrimaryKey()) == null) {
\r
296 cacheResult(${entity.varName});
\r
299 ${entity.varName}.resetOriginalValues();
\r
305 * Clears the cache for all ${entity.humanNames}.
\r
308 * The {@link com.liferay.portal.kernel.dao.orm.EntityCache} and {@link com.liferay.portal.kernel.dao.orm.FinderCache} are both cleared by this method.
\r
312 public void clearCache() {
\r
313 if (_HIBERNATE_CACHE_USE_SECOND_LEVEL_CACHE) {
\r
314 CacheRegistryUtil.clear(${entity.name}Impl.class.getName());
\r
317 EntityCacheUtil.clearCache(${entity.name}Impl.class.getName());
\r
319 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
\r
320 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITH_PAGINATION);
\r
321 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
\r
325 * Clears the cache for the ${entity.humanName}.
\r
328 * The {@link com.liferay.portal.kernel.dao.orm.EntityCache} and {@link com.liferay.portal.kernel.dao.orm.FinderCache} are both cleared by this method.
\r
332 public void clearCache(${entity.name} ${entity.varName}) {
\r
333 EntityCacheUtil.removeResult(${entity.name}ModelImpl.ENTITY_CACHE_ENABLED, ${entity.name}Impl.class, ${entity.varName}.getPrimaryKey());
\r
335 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITH_PAGINATION);
\r
336 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
\r
338 <#if entity.getUniqueFinderList()?size > 0>
\r
339 clearUniqueFindersCache(${entity.varName});
\r
344 public void clearCache(List<${entity.name}> ${entity.varNames}) {
\r
345 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITH_PAGINATION);
\r
346 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
\r
348 for (${entity.name} ${entity.varName} : ${entity.varNames}) {
\r
349 EntityCacheUtil.removeResult(${entity.name}ModelImpl.ENTITY_CACHE_ENABLED, ${entity.name}Impl.class, ${entity.varName}.getPrimaryKey());
\r
351 <#if entity.getUniqueFinderList()?size > 0>
\r
352 clearUniqueFindersCache(${entity.varName});
\r
357 <#if entity.getUniqueFinderList()?size > 0>
\r
358 protected void clearUniqueFindersCache(${entity.name} ${entity.varName}) {
\r
359 <#list entity.getUniqueFinderList() as finder>
\r
360 <#assign finderColsList = finder.getColumns()>
\r
362 FinderCacheUtil.removeResult(
\r
363 FINDER_PATH_FETCH_BY_${finder.name?upper_case},
\r
365 <#list finderColsList as finderCol>
\r
366 <#if finderCol.isPrimitiveType()>
\r
367 ${serviceBuilder.getPrimitiveObj("${finderCol.type}")}.valueOf(
\r
370 ${entity.varName}.get${finderCol.methodName}()
\r
372 <#if finderCol.isPrimitiveType()>
\r
376 <#if finderCol_has_next>
\r
386 * Creates a new ${entity.humanName} with the primary key. Does not add the ${entity.humanName} to the database.
\r
388 * @param ${entity.PKVarName} the primary key for the new ${entity.humanName}
\r
389 * @return the new ${entity.humanName}
\r
391 public ${entity.name} create(${entity.PKClassName} ${entity.PKVarName}) {
\r
392 ${entity.name} ${entity.varName} = new ${entity.name}Impl();
\r
394 ${entity.varName}.setNew(true);
\r
395 ${entity.varName}.setPrimaryKey(${entity.PKVarName});
\r
397 <#if entity.hasUuid()>
\r
398 String uuid = PortalUUIDUtil.generate();
\r
400 ${entity.varName}.setUuid(uuid);
\r
403 return ${entity.varName};
\r
407 * Removes the ${entity.humanName} with the primary key from the database. Also notifies the appropriate model listeners.
\r
409 * @param ${entity.PKVarName} the primary key of the ${entity.humanName}
\r
410 * @return the ${entity.humanName} that was removed
\r
411 * @throws ${packagePath}.${noSuchEntity}Exception if a ${entity.humanName} with the primary key could not be found
\r
412 * @throws SystemException if a system exception occurred
\r
414 public ${entity.name} remove(${entity.PKClassName} ${entity.PKVarName}) throws ${noSuchEntity}Exception, SystemException {
\r
415 <#if entity.hasPrimitivePK(false)>
\r
416 return remove(${serviceBuilder.getPrimitiveObj("${entity.PKClassName}")}.valueOf(${entity.PKVarName}));
\r
418 return remove((Serializable)${entity.PKVarName});
\r
423 * Removes the ${entity.humanName} with the primary key from the database. Also notifies the appropriate model listeners.
\r
425 * @param primaryKey the primary key of the ${entity.humanName}
\r
426 * @return the ${entity.humanName} that was removed
\r
427 * @throws ${packagePath}.${noSuchEntity}Exception if a ${entity.humanName} with the primary key could not be found
\r
428 * @throws SystemException if a system exception occurred
\r
431 public ${entity.name} remove(Serializable primaryKey) throws ${noSuchEntity}Exception, SystemException {
\r
432 Session session = null;
\r
435 session = openSession();
\r
437 ${entity.name} ${entity.varName} = (${entity.name})session.get(${entity.name}Impl.class, primaryKey);
\r
439 if (${entity.varName} == null) {
\r
440 if (_log.isWarnEnabled()) {
\r
441 _log.warn(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY + primaryKey);
\r
444 throw new ${noSuchEntity}Exception(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY + primaryKey);
\r
447 return remove(${entity.varName});
\r
449 catch (${noSuchEntity}Exception nsee) {
\r
452 catch (Exception e) {
\r
453 throw processException(e);
\r
456 closeSession(session);
\r
461 protected ${entity.name} removeImpl(${entity.name} ${entity.varName}) throws SystemException {
\r
462 ${entity.varName} = toUnwrappedModel(${entity.varName});
\r
464 <#list entity.columnList as column>
\r
465 <#if column.isCollection() && column.isMappingManyToMany()>
\r
466 <#assign tempEntity = serviceBuilder.getEntity(column.getEJBName())>
\r
469 clear${tempEntity.names}.clear(${entity.varName}.getPrimaryKey());
\r
471 catch (Exception e) {
\r
472 throw processException(e);
\r
475 FinderCacheUtil.clearCache(${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME);
\r
480 <#if entity.isHierarchicalTree()>
\r
481 shrinkTree(${entity.varName});
\r
484 Session session = null;
\r
487 session = openSession();
\r
489 BatchSessionUtil.delete(session, ${entity.varName});
\r
491 catch (Exception e) {
\r
492 throw processException(e);
\r
495 closeSession(session);
\r
498 clearCache(${entity.varName});
\r
500 return ${entity.varName};
\r
504 public ${entity.name} updateImpl(${packagePath}.model.${entity.name} ${entity.varName}, boolean merge) throws SystemException {
\r
505 ${entity.varName} = toUnwrappedModel(${entity.varName});
\r
507 boolean isNew = ${entity.varName}.isNew();
\r
509 <#assign collectionFinderList = entity.getCollectionFinderList()>
\r
511 <#assign castEntityModelImpl = false>
\r
513 <#if entity.isHierarchicalTree()>
\r
514 <#assign castEntityModelImpl = true>
\r
517 <#if collectionFinderList?size != 0>
\r
518 <#list collectionFinderList as finder>
\r
519 <#if !finder.hasCustomComparator()>
\r
520 <#assign castEntityModelImpl = true>
\r
525 <#assign uniqueFinderList = entity.getUniqueFinderList()>
\r
527 <#if uniqueFinderList?size != 0>
\r
528 <#assign castEntityModelImpl = true>
\r
531 <#if castEntityModelImpl>
\r
532 ${entity.name}ModelImpl ${entity.varName}ModelImpl = (${entity.name}ModelImpl)${entity.varName};
\r
535 <#if entity.hasUuid()>
\r
536 if (Validator.isNull(${entity.varName}.getUuid())) {
\r
537 String uuid = PortalUUIDUtil.generate();
\r
539 ${entity.varName}.setUuid(uuid);
\r
543 <#if entity.isHierarchicalTree()>
\r
545 expandTree(${entity.varName}, null);
\r
548 if (${entity.varName}.getParent${pkColumn.methodName}() != ${entity.varName}ModelImpl.getOriginalParent${pkColumn.methodName}()) {
\r
549 List<Long> children${pkColumn.methodNames} = getChildrenTree${pkColumn.methodNames}(${entity.varName});
\r
551 shrinkTree(${entity.varName});
\r
552 expandTree(${entity.varName}, children${pkColumn.methodNames});
\r
557 <#assign sanitizeTuples = modelHintsUtil.getSanitizeTuples("${packagePath}.model.${entity.name}")>
\r
559 <#if sanitizeTuples?size != 0>
\r
560 long userId = GetterUtil.getLong(PrincipalThreadLocal.getName());
\r
563 <#assign companyId = 0>
\r
565 <#if entity.hasColumn("companyId")>
\r
566 long companyId = ${entity.varName}.getCompanyId();
\r
568 long companyId = 0;
\r
571 <#if entity.hasColumn("groupId")>
\r
572 long groupId = ${entity.varName}.getGroupId();
\r
577 long ${entity.PKVarName} = 0;
\r
580 ${entity.PKVarName} = ${entity.varName}.getPrimaryKey();
\r
584 <#list sanitizeTuples as sanitizeTuple>
\r
585 <#assign colMethodName = textFormatter.format(sanitizeTuple.getObject(0), 6)>
\r
587 <#assign contentType = "\"" + sanitizeTuple.getObject(1) + "\"">
\r
589 <#if contentType == "\"text/html\"">
\r
590 <#assign contentType = "ContentTypes.TEXT_HTML">
\r
591 <#elseif contentType == "\"text/plain\"">
\r
592 <#assign contentType = "ContentTypes.TEXT_PLAIN">
\r
595 <#assign modes = "\"" + sanitizeTuple.getObject(2) + "\"">
\r
597 <#if modes == "\"ALL\"">
\r
598 <#assign modes = "Sanitizer.MODE_ALL">
\r
599 <#elseif modes == "\"BAD_WORDS\"">
\r
600 <#assign modes = "Sanitizer.MODE_BAD_WORDS">
\r
601 <#elseif modes == "\"XSS\"">
\r
602 <#assign modes = "Sanitizer.MODE_XSS">
\r
604 <#assign modes = "StringUtil.split(\"" + sanitizeTuple.getObject(2) + "\")">
\r
607 ${entity.varName}.set${colMethodName}(SanitizerUtil.sanitize(companyId, groupId, userId, ${packagePath}.model.${entity.name}.class.getName(), ${entity.PKVarName}, ${contentType}, ${modes}, ${entity.varName}.get${colMethodName}(), null));
\r
610 catch (SanitizerException se) {
\r
611 throw new SystemException(se);
\r
616 Session session = null;
\r
619 session = openSession();
\r
621 BatchSessionUtil.update(session, ${entity.varName}, merge);
\r
623 ${entity.varName}.setNew(false);
\r
625 <#if entity.hasLazyBlobColumn()>
\r
630 catch (Exception e) {
\r
631 throw processException(e);
\r
634 closeSession(session);
\r
637 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITH_PAGINATION);
\r
640 <#if columnBitmaskEnabled>
\r
641 || !${entity.name}ModelImpl.COLUMN_BITMASK_ENABLED
\r
645 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
\r
648 <#if collectionFinderList?size != 0>
\r
649 <#assign hasEqualComparator = false>
\r
651 <#list collectionFinderList as finder>
\r
652 <#assign finderColsList = finder.getColumns()>
\r
654 <#if !finder.hasCustomComparator()>
\r
655 <#if !hasEqualComparator>
\r
656 <#assign hasEqualComparator = true>
\r
662 <#if columnBitmaskEnabled>
\r
663 (${entity.varName}ModelImpl.getColumnBitmask() & FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_${finder.name?upper_case}.getColumnBitmask()) != 0
\r
665 <#list finderColsList as finderCol>
\r
666 <#if finderCol.isPrimitiveType()>
\r
667 (${entity.varName}.get${finderCol.methodName}() != ${entity.varName}ModelImpl.getOriginal${finderCol.methodName}())
\r
669 !Validator.equals(${entity.varName}.get${finderCol.methodName}(), ${entity.varName}ModelImpl.getOriginal${finderCol.methodName}())
\r
672 <#if finderCol_has_next>
\r
679 Object[] args = new Object[] {
\r
680 <#list finderColsList as finderCol>
\r
681 <#if finderCol.isPrimitiveType()>
\r
682 ${serviceBuilder.getPrimitiveObj("${finderCol.type}")}.valueOf(
\r
685 ${entity.varName}ModelImpl.getOriginal${finderCol.methodName}()
\r
687 <#if finderCol.isPrimitiveType()>
\r
691 <#if finderCol_has_next>
\r
697 FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_${finder.name?upper_case}, args);
\r
698 FinderCacheUtil.removeResult(FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_${finder.name?upper_case}, args);
\r
700 args = new Object[] {
\r
701 <#list finderColsList as finderCol>
\r
702 <#if finderCol.isPrimitiveType()>
\r
703 ${serviceBuilder.getPrimitiveObj("${finderCol.type}")}.valueOf(
\r
706 ${entity.varName}ModelImpl.get${finderCol.methodName}()
\r
708 <#if finderCol.isPrimitiveType()>
\r
712 <#if finderCol_has_next>
\r
718 FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_${finder.name?upper_case}, args);
\r
719 FinderCacheUtil.removeResult(FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_${finder.name?upper_case}, args);
\r
724 <#if hasEqualComparator>
\r
729 EntityCacheUtil.putResult(${entity.name}ModelImpl.ENTITY_CACHE_ENABLED, ${entity.name}Impl.class, ${entity.varName}.getPrimaryKey(), ${entity.varName});
\r
731 <#if uniqueFinderList?size > 0>
\r
733 <#list uniqueFinderList as finder>
\r
734 <#assign finderColsList = finder.getColumns()>
\r
736 FinderCacheUtil.putResult(
\r
737 FINDER_PATH_FETCH_BY_${finder.name?upper_case},
\r
739 <#list finderColsList as finderCol>
\r
740 <#if finderCol.isPrimitiveType()>
\r
741 ${serviceBuilder.getPrimitiveObj("${finderCol.type}")}.valueOf(
\r
744 ${entity.varName}.get${finderCol.methodName}()
\r
746 <#if finderCol.isPrimitiveType()>
\r
750 <#if finderCol_has_next>
\r
755 ${entity.varName});
\r
759 <#list uniqueFinderList as finder>
\r
760 <#assign finderColsList = finder.getColumns()>
\r
762 if ((${entity.varName}ModelImpl.getColumnBitmask() & FINDER_PATH_FETCH_BY_${finder.name?upper_case}.getColumnBitmask()) != 0) {
\r
763 Object[] args = new Object[] {
\r
764 <#list finderColsList as finderCol>
\r
765 <#if finderCol.isPrimitiveType()>
\r
766 ${serviceBuilder.getPrimitiveObj("${finderCol.type}")}.valueOf(
\r
769 ${entity.varName}ModelImpl.getOriginal${finderCol.methodName}()
\r
771 <#if finderCol.isPrimitiveType()>
\r
775 <#if finderCol_has_next>
\r
781 <#if !finder.hasCustomComparator()>
\r
782 FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_${finder.name?upper_case}, args);
\r
785 FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_${finder.name?upper_case}, args);
\r
787 FinderCacheUtil.putResult(
\r
788 FINDER_PATH_FETCH_BY_${finder.name?upper_case},
\r
790 <#list finderColsList as finderCol>
\r
791 <#if finderCol.isPrimitiveType()>
\r
792 ${serviceBuilder.getPrimitiveObj("${finderCol.type}")}.valueOf(
\r
795 ${entity.varName}.get${finderCol.methodName}()
\r
797 <#if finderCol.isPrimitiveType()>
\r
801 <#if finderCol_has_next>
\r
806 ${entity.varName});
\r
812 <#if entity.hasLazyBlobColumn()>
\r
813 ${entity.varName}.resetOriginalValues();
\r
816 return ${entity.varName};
\r
819 protected ${entity.name} toUnwrappedModel(${entity.name} ${entity.varName}) {
\r
820 if (${entity.varName} instanceof ${entity.name}Impl) {
\r
821 return ${entity.varName};
\r
824 ${entity.name}Impl ${entity.varName}Impl = new ${entity.name}Impl();
\r
826 ${entity.varName}Impl.setNew(${entity.varName}.isNew());
\r
827 ${entity.varName}Impl.setPrimaryKey(${entity.varName}.getPrimaryKey());
\r
829 <#list entity.regularColList as column>
\r
830 ${entity.varName}Impl.set${column.methodName}(
\r
832 <#if column.type == "boolean">
\r
833 ${entity.varName}.is${column.methodName}()
\r
835 ${entity.varName}.get${column.methodName}()
\r
841 return ${entity.varName}Impl;
\r
845 * Returns the ${entity.humanName} with the primary key or throws a {@link com.liferay.portal.NoSuchModelException} if it could not be found.
\r
847 * @param primaryKey the primary key of the ${entity.humanName}
\r
848 * @return the ${entity.humanName}
\r
849 * @throws com.liferay.portal.NoSuchModelException if a ${entity.humanName} with the primary key could not be found
\r
850 * @throws SystemException if a system exception occurred
\r
853 public ${entity.name} findByPrimaryKey(Serializable primaryKey) throws NoSuchModelException, SystemException {
\r
854 <#if entity.hasPrimitivePK(false)>
\r
855 return findByPrimaryKey(((${serviceBuilder.getPrimitiveObj("${entity.PKClassName}")})primaryKey).${entity.PKClassName}Value());
\r
857 return findByPrimaryKey((${entity.PKClassName})primaryKey);
\r
862 * Returns the ${entity.humanName} with the primary key or throws a {@link ${packagePath}.${noSuchEntity}Exception} if it could not be found.
\r
864 * @param ${entity.PKVarName} the primary key of the ${entity.humanName}
\r
865 * @return the ${entity.humanName}
\r
866 * @throws ${packagePath}.${noSuchEntity}Exception if a ${entity.humanName} with the primary key could not be found
\r
867 * @throws SystemException if a system exception occurred
\r
869 public ${entity.name} findByPrimaryKey(${entity.PKClassName} ${entity.PKVarName}) throws ${noSuchEntity}Exception, SystemException {
\r
870 ${entity.name} ${entity.varName} = fetchByPrimaryKey(${entity.PKVarName});
\r
872 if (${entity.varName} == null) {
\r
873 if (_log.isWarnEnabled()) {
\r
874 _log.warn(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY + ${entity.PKVarName});
\r
877 throw new ${noSuchEntity}Exception(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY + ${entity.PKVarName});
\r
880 return ${entity.varName};
\r
884 * Returns the ${entity.humanName} with the primary key or returns <code>null</code> if it could not be found.
\r
886 * @param primaryKey the primary key of the ${entity.humanName}
\r
887 * @return the ${entity.humanName}, or <code>null</code> if a ${entity.humanName} with the primary key could not be found
\r
888 * @throws SystemException if a system exception occurred
\r
891 public ${entity.name} fetchByPrimaryKey(Serializable primaryKey) throws SystemException {
\r
892 <#if entity.hasPrimitivePK(false)>
\r
893 return fetchByPrimaryKey(((${serviceBuilder.getPrimitiveObj("${entity.PKClassName}")})primaryKey).${entity.PKClassName}Value());
\r
895 return fetchByPrimaryKey((${entity.PKClassName})primaryKey);
\r
900 * Returns the ${entity.humanName} with the primary key or returns <code>null</code> if it could not be found.
\r
902 * @param ${entity.PKVarName} the primary key of the ${entity.humanName}
\r
903 * @return the ${entity.humanName}, or <code>null</code> if a ${entity.humanName} with the primary key could not be found
\r
904 * @throws SystemException if a system exception occurred
\r
906 public ${entity.name} fetchByPrimaryKey(${entity.PKClassName} ${entity.PKVarName}) throws SystemException {
\r
907 ${entity.name} ${entity.varName} = (${entity.name})EntityCacheUtil.getResult(${entity.name}ModelImpl.ENTITY_CACHE_ENABLED, ${entity.name}Impl.class, ${entity.PKVarName});
\r
909 if (${entity.varName} == _null${entity.name}) {
\r
913 if (${entity.varName} == null) {
\r
914 Session session = null;
\r
916 boolean hasException = false;
\r
919 session = openSession();
\r
921 ${entity.varName} = (${entity.name})session.get(${entity.name}Impl.class,
\r
923 <#if entity.hasPrimitivePK()>
\r
924 ${serviceBuilder.getPrimitiveObj("${entity.PKClassName}")}.valueOf(
\r
927 ${entity.PKVarName}
\r
929 <#if entity.hasPrimitivePK()>
\r
935 catch (Exception e) {
\r
936 hasException = true;
\r
938 throw processException(e);
\r
941 if (${entity.varName} != null) {
\r
942 cacheResult(${entity.varName});
\r
944 else if (!hasException) {
\r
945 EntityCacheUtil.putResult(${entity.name}ModelImpl.ENTITY_CACHE_ENABLED, ${entity.name}Impl.class, ${entity.PKVarName}, _null${entity.name});
\r
948 closeSession(session);
\r
952 return ${entity.varName};
\r
955 <#list entity.getFinderList() as finder>
\r
956 <#assign finderColsList = finder.getColumns()>
\r
958 <#if finder.isCollection()>
\r
960 * Returns all the ${entity.humanNames} where ${finder.getHumanConditions(false)}.
\r
962 <#list finderColsList as finderCol>
\r
963 * @param ${finderCol.name} the ${finderCol.humanName}
\r
965 * @return the matching ${entity.humanNames}
\r
966 * @throws SystemException if a system exception occurred
\r
968 public List<${entity.name}> findBy${finder.name}(
\r
970 <#list finderColsList as finderCol>
\r
971 ${finderCol.type} ${finderCol.name}
\r
973 <#if finderCol_has_next>
\r
978 ) throws SystemException {
\r
979 return findBy${finder.name}(
\r
981 <#list finderColsList as finderCol>
\r
985 QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
\r
989 * Returns a range of all the ${entity.humanNames} where ${finder.getHumanConditions(false)}.
\r
992 * <#include "range_comment.ftl">
\r
995 <#list finderColsList as finderCol>
\r
996 * @param ${finderCol.name} the ${finderCol.humanName}
\r
998 * @param start the lower bound of the range of ${entity.humanNames}
\r
999 * @param end the upper bound of the range of ${entity.humanNames} (not inclusive)
\r
1000 * @return the range of matching ${entity.humanNames}
\r
1001 * @throws SystemException if a system exception occurred
\r
1003 public List<${entity.name}> findBy${finder.name}(
\r
1005 <#list finderColsList as finderCol>
\r
1006 ${finderCol.type} ${finderCol.name},
\r
1009 int start, int end) throws SystemException {
\r
1010 return findBy${finder.name}(
\r
1012 <#list finderColsList as finderCol>
\r
1013 ${finderCol.name},
\r
1016 start, end, null);
\r
1020 * Returns an ordered range of all the ${entity.humanNames} where ${finder.getHumanConditions(false)}.
\r
1023 * <#include "range_comment.ftl">
\r
1026 <#list finderColsList as finderCol>
\r
1027 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1029 * @param start the lower bound of the range of ${entity.humanNames}
\r
1030 * @param end the upper bound of the range of ${entity.humanNames} (not inclusive)
\r
1031 * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
\r
1032 * @return the ordered range of matching ${entity.humanNames}
\r
1033 * @throws SystemException if a system exception occurred
\r
1035 public List<${entity.name}> findBy${finder.name}(
\r
1037 <#list finderColsList as finderCol>
\r
1038 ${finderCol.type} ${finderCol.name},
\r
1041 int start, int end, OrderByComparator orderByComparator) throws SystemException {
\r
1042 FinderPath finderPath = null;
\r
1043 Object[] finderArgs = null;
\r
1045 <#if !finder.hasCustomComparator()>
\r
1046 if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS) && (orderByComparator == null)) {
\r
1047 finderPath = FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_${finder.name?upper_case};
\r
1048 finderArgs = new Object[] {
\r
1049 <#list finderColsList as finderCol>
\r
1052 <#if finderCol_has_next>
\r
1061 finderPath = FINDER_PATH_WITH_PAGINATION_FIND_BY_${finder.name?upper_case};
\r
1062 finderArgs = new Object[] {
\r
1063 <#list finderColsList as finderCol>
\r
1064 ${finderCol.name},
\r
1067 start, end, orderByComparator
\r
1070 <#if !finder.hasCustomComparator()>
\r
1074 List<${entity.name}> list = (List<${entity.name}>)FinderCacheUtil.getResult(finderPath, finderArgs, this);
\r
1076 if ((list != null) && !list.isEmpty()) {
\r
1077 for (${entity.name} ${entity.varName} : list) {
\r
1079 <#list finderColsList as finderCol>
\r
1080 <#if finderCol.isPrimitiveType(false)>
\r
1081 (${finderCol.name} != ${entity.varName}.get${finderCol.methodName}())
\r
1083 !Validator.equals(${finderCol.name}, ${entity.varName}.get${finderCol.methodName}())
\r
1086 <#if finderCol_has_next>
\r
1098 if (list == null) {
\r
1099 <#include "persistence_impl_find_by_query.ftl">
\r
1101 String sql = query.toString();
\r
1103 Session session = null;
\r
1106 session = openSession();
\r
1108 Query q = session.createQuery(sql);
\r
1110 QueryPos qPos = QueryPos.getInstance(q);
\r
1112 <#include "persistence_impl_finder_qpos.ftl">
\r
1114 list = (List<${entity.name}>)QueryUtil.list(q, getDialect(), start, end);
\r
1116 catch (Exception e) {
\r
1117 throw processException(e);
\r
1120 if (list == null) {
\r
1121 FinderCacheUtil.removeResult(finderPath, finderArgs);
\r
1124 cacheResult(list);
\r
1126 FinderCacheUtil.putResult(finderPath, finderArgs, list);
\r
1129 closeSession(session);
\r
1137 * Returns the first ${entity.humanName} in the ordered set where ${finder.getHumanConditions(false)}.
\r
1139 <#list finderColsList as finderCol>
\r
1140 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1142 * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
\r
1143 * @return the first matching ${entity.humanName}
\r
1144 * @throws ${packagePath}.${noSuchEntity}Exception if a matching ${entity.humanName} could not be found
\r
1145 * @throws SystemException if a system exception occurred
\r
1147 public ${entity.name} findBy${finder.name}_First(
\r
1149 <#list finderColsList as finderCol>
\r
1150 ${finderCol.type} ${finderCol.name},
\r
1153 OrderByComparator orderByComparator) throws ${noSuchEntity}Exception, SystemException {
\r
1154 ${entity.name} ${entity.varName} = fetchBy${finder.name}_First(
\r
1156 <#list finderColsList as finderCol>
\r
1157 ${finderCol.name},
\r
1160 orderByComparator);
\r
1162 if (${entity.varName} != null) {
\r
1163 return ${entity.varName};
\r
1166 StringBundler msg = new StringBundler(${(finderColsList?size * 2) + 2});
\r
1168 msg.append(_NO_SUCH_ENTITY_WITH_KEY);
\r
1170 <#list finderColsList as finderCol>
\r
1171 msg.append("<#if finderCol_index != 0>, </#if>${finderCol.name}=");
\r
1172 msg.append(${finderCol.name});
\r
1174 <#if !finderCol_has_next>
\r
1175 msg.append(StringPool.CLOSE_CURLY_BRACE);
\r
1179 throw new ${noSuchEntity}Exception(msg.toString());
\r
1183 * Returns the first ${entity.humanName} in the ordered set where ${finder.getHumanConditions(false)}.
\r
1185 <#list finderColsList as finderCol>
\r
1186 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1188 * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
\r
1189 * @return the first matching ${entity.humanName}, or <code>null</code> if a matching ${entity.humanName} could not be found
\r
1190 * @throws SystemException if a system exception occurred
\r
1192 public ${entity.name} fetchBy${finder.name}_First(
\r
1194 <#list finderColsList as finderCol>
\r
1195 ${finderCol.type} ${finderCol.name},
\r
1198 OrderByComparator orderByComparator) throws SystemException {
\r
1199 List<${entity.name}> list = findBy${finder.name}(
\r
1201 <#list finderColsList as finderCol>
\r
1202 ${finderCol.name},
\r
1205 0, 1, orderByComparator);
\r
1207 if (!list.isEmpty()) {
\r
1208 return list.get(0);
\r
1215 * Returns the last ${entity.humanName} in the ordered set where ${finder.getHumanConditions(false)}.
\r
1217 <#list finderColsList as finderCol>
\r
1218 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1220 * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
\r
1221 * @return the last matching ${entity.humanName}
\r
1222 * @throws ${packagePath}.${noSuchEntity}Exception if a matching ${entity.humanName} could not be found
\r
1223 * @throws SystemException if a system exception occurred
\r
1225 public ${entity.name} findBy${finder.name}_Last(
\r
1227 <#list finderColsList as finderCol>
\r
1228 ${finderCol.type} ${finderCol.name},
\r
1231 OrderByComparator orderByComparator) throws ${noSuchEntity}Exception, SystemException {
\r
1232 ${entity.name} ${entity.varName} = fetchBy${finder.name}_Last(
\r
1234 <#list finderColsList as finderCol>
\r
1235 ${finderCol.name},
\r
1238 orderByComparator);
\r
1240 if (${entity.varName} != null) {
\r
1241 return ${entity.varName};
\r
1244 StringBundler msg = new StringBundler(${(finderColsList?size * 2) + 2});
\r
1246 msg.append(_NO_SUCH_ENTITY_WITH_KEY);
\r
1248 <#list finderColsList as finderCol>
\r
1249 msg.append("<#if finderCol_index != 0>, </#if>${finderCol.name}=");
\r
1250 msg.append(${finderCol.name});
\r
1252 <#if !finderCol_has_next>
\r
1253 msg.append(StringPool.CLOSE_CURLY_BRACE);
\r
1257 throw new ${noSuchEntity}Exception(msg.toString());
\r
1261 * Returns the last ${entity.humanName} in the ordered set where ${finder.getHumanConditions(false)}.
\r
1263 <#list finderColsList as finderCol>
\r
1264 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1266 * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
\r
1267 * @return the last matching ${entity.humanName}, or <code>null</code> if a matching ${entity.humanName} could not be found
\r
1268 * @throws SystemException if a system exception occurred
\r
1270 public ${entity.name} fetchBy${finder.name}_Last(
\r
1272 <#list finderColsList as finderCol>
\r
1273 ${finderCol.type} ${finderCol.name},
\r
1276 OrderByComparator orderByComparator) throws SystemException {
\r
1277 int count = countBy${finder.name}(
\r
1279 <#list finderColsList as finderCol>
\r
1282 <#if finderCol_has_next>
\r
1289 List<${entity.name}> list = findBy${finder.name}(
\r
1291 <#list finderColsList as finderCol>
\r
1292 ${finderCol.name},
\r
1295 count - 1, count, orderByComparator);
\r
1297 if (!list.isEmpty()) {
\r
1298 return list.get(0);
\r
1305 * Returns the ${entity.humanNames} before and after the current ${entity.humanName} in the ordered set where ${finder.getHumanConditions(false)}.
\r
1307 * @param ${entity.PKVarName} the primary key of the current ${entity.humanName}
\r
1308 <#list finderColsList as finderCol>
\r
1309 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1311 * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
\r
1312 * @return the previous, current, and next ${entity.humanName}
\r
1313 * @throws ${packagePath}.${noSuchEntity}Exception if a ${entity.humanName} with the primary key could not be found
\r
1314 * @throws SystemException if a system exception occurred
\r
1316 public ${entity.name}[] findBy${finder.name}_PrevAndNext(${entity.PKClassName} ${entity.PKVarName},
\r
1318 <#list finderColsList as finderCol>
\r
1319 ${finderCol.type} ${finderCol.name},
\r
1322 OrderByComparator orderByComparator) throws ${noSuchEntity}Exception, SystemException {
\r
1323 ${entity.name} ${entity.varName} = findByPrimaryKey(${entity.PKVarName});
\r
1325 Session session = null;
\r
1328 session = openSession();
\r
1330 ${entity.name}[] array = new ${entity.name}Impl[3];
\r
1333 getBy${finder.name}_PrevAndNext(
\r
1334 session, ${entity.varName},
\r
1336 <#list finderColsList as finderCol>
\r
1337 ${finderCol.name},
\r
1340 orderByComparator, true);
\r
1342 array[1] = ${entity.varName};
\r
1345 getBy${finder.name}_PrevAndNext(
\r
1346 session, ${entity.varName},
\r
1348 <#list finderColsList as finderCol>
\r
1349 ${finderCol.name},
\r
1352 orderByComparator, false);
\r
1356 catch (Exception e) {
\r
1357 throw processException(e);
\r
1360 closeSession(session);
\r
1364 protected ${entity.name} getBy${finder.name}_PrevAndNext(
\r
1365 Session session, ${entity.name} ${entity.varName},
\r
1367 <#list finderColsList as finderCol>
\r
1368 ${finderCol.type} ${finderCol.name},
\r
1371 OrderByComparator orderByComparator, boolean previous) {
\r
1373 <#include "persistence_impl_get_by_prev_and_next_query.ftl">
\r
1375 String sql = query.toString();
\r
1377 Query q = session.createQuery(sql);
\r
1379 q.setFirstResult(0);
\r
1380 q.setMaxResults(2);
\r
1382 QueryPos qPos = QueryPos.getInstance(q);
\r
1384 <#include "persistence_impl_finder_qpos.ftl">
\r
1386 if (orderByComparator != null) {
\r
1387 Object[] values = orderByComparator.getOrderByConditionValues(${entity.varName});
\r
1389 for (Object value : values) {
\r
1394 List<${entity.name}> list = q.list();
\r
1396 if (list.size() == 2) {
\r
1397 return list.get(1);
\r
1404 <#if finder.hasArrayableOperator()>
\r
1406 * Returns all the ${entity.humanNames} where ${finder.getHumanConditions(true)}.
\r
1409 * <#include "range_comment.ftl">
\r
1412 <#list finderColsList as finderCol>
\r
1413 <#if finderCol.hasArrayableOperator()>
\r
1414 * @param ${finderCol.names} the ${finderCol.humanNames}
\r
1416 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1419 * @return the matching ${entity.humanNames}
\r
1420 * @throws SystemException if a system exception occurred
\r
1422 public List<${entity.name}> findBy${finder.name}(
\r
1424 <#list finderColsList as finderCol>
\r
1425 <#if finderCol.hasArrayableOperator()>
\r
1426 ${finderCol.type}[] ${finderCol.names}
\r
1428 ${finderCol.type} ${finderCol.name}
\r
1431 <#if finderCol_has_next>
\r
1436 ) throws SystemException {
\r
1437 return findBy${finder.name}(
\r
1439 <#list finderColsList as finderCol>
\r
1440 <#if finderCol.hasArrayableOperator()>
\r
1441 ${finderCol.names},
\r
1443 ${finderCol.name},
\r
1447 QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
\r
1451 * Returns a range of all the ${entity.humanNames} where ${finder.getHumanConditions(true)}.
\r
1454 * <#include "range_comment.ftl">
\r
1457 <#list finderColsList as finderCol>
\r
1458 <#if finderCol.hasArrayableOperator()>
\r
1459 * @param ${finderCol.names} the ${finderCol.humanNames}
\r
1461 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1464 * @param start the lower bound of the range of ${entity.humanNames}
\r
1465 * @param end the upper bound of the range of ${entity.humanNames} (not inclusive)
\r
1466 * @return the range of matching ${entity.humanNames}
\r
1467 * @throws SystemException if a system exception occurred
\r
1469 public List<${entity.name}> findBy${finder.name}(
\r
1471 <#list finderColsList as finderCol>
\r
1472 <#if finderCol.hasArrayableOperator()>
\r
1473 ${finderCol.type}[] ${finderCol.names},
\r
1475 ${finderCol.type} ${finderCol.name},
\r
1479 int start, int end) throws SystemException {
\r
1480 return findBy${finder.name}(
\r
1482 <#list finderColsList as finderCol>
\r
1483 <#if finderCol.hasArrayableOperator()>
\r
1484 ${finderCol.names},
\r
1486 ${finderCol.name},
\r
1490 start, end, null);
\r
1494 * Returns an ordered range of all the ${entity.humanNames} where ${finder.getHumanConditions(true)}.
\r
1497 * <#include "range_comment.ftl">
\r
1500 <#list finderColsList as finderCol>
\r
1501 <#if finderCol.hasArrayableOperator()>
\r
1502 * @param ${finderCol.names} the ${finderCol.humanNames}
\r
1504 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1507 * @param start the lower bound of the range of ${entity.humanNames}
\r
1508 * @param end the upper bound of the range of ${entity.humanNames} (not inclusive)
\r
1509 * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
\r
1510 * @return the ordered range of matching ${entity.humanNames}
\r
1511 * @throws SystemException if a system exception occurred
\r
1513 public List<${entity.name}> findBy${finder.name}(
\r
1515 <#list finderColsList as finderCol>
\r
1516 <#if finderCol.hasArrayableOperator()>
\r
1517 ${finderCol.type}[] ${finderCol.names},
\r
1519 ${finderCol.type} ${finderCol.name},
\r
1523 int start, int end, OrderByComparator orderByComparator) throws SystemException {
\r
1524 FinderPath finderPath = FINDER_PATH_WITH_PAGINATION_FIND_BY_${finder.name?upper_case};
\r
1525 Object[] finderArgs = null;
\r
1527 if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS) && (orderByComparator == null)) {
\r
1528 finderArgs = new Object[] {
\r
1529 <#list finderColsList as finderCol>
\r
1530 <#if finderCol.hasArrayableOperator()>
\r
1531 StringUtil.merge(${finderCol.names})
\r
1536 <#if finderCol_has_next>
\r
1543 finderArgs = new Object[] {
\r
1544 <#list finderColsList as finderCol>
\r
1545 <#if finderCol.hasArrayableOperator()>
\r
1546 StringUtil.merge(${finderCol.names}),
\r
1548 ${finderCol.name},
\r
1552 start, end, orderByComparator
\r
1556 List<${entity.name}> list = (List<${entity.name}>)FinderCacheUtil.getResult(finderPath, finderArgs, this);
\r
1558 if ((list != null) && !list.isEmpty()) {
\r
1559 for (${entity.name} ${entity.varName} : list) {
\r
1561 <#list finderColsList as finderCol>
\r
1562 <#if finderCol.hasArrayableOperator()>
\r
1563 !ArrayUtil.contains(${finderCol.names}, ${entity.varName}.get${finderCol.methodName}())
\r
1565 <#if finderCol.isPrimitiveType(false)>
\r
1566 (${finderCol.name} != ${entity.varName}.get${finderCol.methodName}())
\r
1568 !Validator.equals(${finderCol.name}, ${entity.varName}.get${finderCol.methodName}())
\r
1572 <#if finderCol_has_next>
\r
1584 if (list == null) {
\r
1585 <#include "persistence_impl_find_by_arrayable_query.ftl">
\r
1587 String sql = query.toString();
\r
1589 Session session = null;
\r
1592 session = openSession();
\r
1594 Query q = session.createQuery(sql);
\r
1596 QueryPos qPos = QueryPos.getInstance(q);
\r
1598 <#include "persistence_impl_finder_arrayable_qpos.ftl">
\r
1600 list = (List<${entity.name}>)QueryUtil.list(q, getDialect(), start, end);
\r
1602 catch (Exception e) {
\r
1603 throw processException(e);
\r
1606 if (list == null) {
\r
1607 FinderCacheUtil.removeResult(finderPath, finderArgs);
\r
1610 cacheResult(list);
\r
1612 FinderCacheUtil.putResult(finderPath, finderArgs, list);
\r
1615 closeSession(session);
\r
1623 <#if entity.isPermissionCheckEnabled(finder)>
\r
1625 * Returns all the ${entity.humanNames} that the user has permission to view where ${finder.getHumanConditions(false)}.
\r
1627 <#list finderColsList as finderCol>
\r
1628 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1630 * @return the matching ${entity.humanNames} that the user has permission to view
\r
1631 * @throws SystemException if a system exception occurred
\r
1633 public List<${entity.name}> filterFindBy${finder.name}(
\r
1635 <#list finderColsList as finderCol>
\r
1636 ${finderCol.type} ${finderCol.name}
\r
1638 <#if finderCol_has_next>
\r
1643 ) throws SystemException {
\r
1644 return filterFindBy${finder.name}(
\r
1646 <#list finderColsList as finderCol>
\r
1647 ${finderCol.name},
\r
1650 QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
\r
1654 * Returns a range of all the ${entity.humanNames} that the user has permission to view where ${finder.getHumanConditions(false)}.
\r
1657 * <#include "range_comment.ftl">
\r
1660 <#list finderColsList as finderCol>
\r
1661 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1663 * @param start the lower bound of the range of ${entity.humanNames}
\r
1664 * @param end the upper bound of the range of ${entity.humanNames} (not inclusive)
\r
1665 * @return the range of matching ${entity.humanNames} that the user has permission to view
\r
1666 * @throws SystemException if a system exception occurred
\r
1668 public List<${entity.name}> filterFindBy${finder.name}(
\r
1670 <#list finderColsList as finderCol>
\r
1671 ${finderCol.type} ${finderCol.name},
\r
1674 int start, int end) throws SystemException {
\r
1675 return filterFindBy${finder.name}(
\r
1677 <#list finderColsList as finderCol>
\r
1678 ${finderCol.name},
\r
1681 start, end, null);
\r
1685 * Returns an ordered range of all the ${entity.humanNames} that the user has permissions to view where ${finder.getHumanConditions(false)}.
\r
1688 * <#include "range_comment.ftl">
\r
1691 <#list finderColsList as finderCol>
\r
1692 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1694 * @param start the lower bound of the range of ${entity.humanNames}
\r
1695 * @param end the upper bound of the range of ${entity.humanNames} (not inclusive)
\r
1696 * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
\r
1697 * @return the ordered range of matching ${entity.humanNames} that the user has permission to view
\r
1698 * @throws SystemException if a system exception occurred
\r
1700 public List<${entity.name}> filterFindBy${finder.name}(
\r
1702 <#list finderColsList as finderCol>
\r
1703 ${finderCol.type} ${finderCol.name},
\r
1706 int start, int end, OrderByComparator orderByComparator) throws SystemException {
\r
1707 if (!InlineSQLHelperUtil.isEnabled(<#if finder.hasColumn("groupId")>groupId</#if>)) {
\r
1708 return findBy${finder.name}(
\r
1710 <#list finderColsList as finderCol>
\r
1711 ${finderCol.name},
\r
1714 start, end, orderByComparator);
\r
1717 <#if entity.isPermissionedModel()>
\r
1718 <#include "persistence_impl_find_by_query.ftl">
\r
1720 String sql = InlineSQLHelperUtil.replacePermissionCheck(query.toString(), ${entity.name}.class.getName(), _FILTER_ENTITY_TABLE_FILTER_PK_COLUMN, _FILTER_ENTITY_TABLE_FILTER_USERID_COLUMN<#if finder.hasColumn("groupId")>, groupId</#if>);
\r
1722 Session session = null;
\r
1725 session = openSession();
\r
1727 Query q = session.createQuery(sql);
\r
1729 QueryPos qPos = QueryPos.getInstance(q);
\r
1731 <#include "persistence_impl_finder_qpos.ftl">
\r
1733 return (List<${entity.name}>)QueryUtil.list(q, getDialect(), start, end);
\r
1735 catch (Exception e) {
\r
1736 throw processException(e);
\r
1739 closeSession(session);
\r
1742 StringBundler query = null;
\r
1744 if (orderByComparator != null) {
\r
1745 query = new StringBundler(${finderColsList?size + 2} + (orderByComparator.getOrderByFields().length * 3));
\r
1748 query = new StringBundler(<#if entity.getOrder()??>${finderColsList?size + 2}<#else>${finderColsList?size + 1}</#if>);
\r
1751 if (getDB().isSupportsInlineDistinct()) {
\r
1752 query.append(_FILTER_SQL_SELECT_${entity.alias?upper_case}_WHERE);
\r
1755 query.append(_FILTER_SQL_SELECT_${entity.alias?upper_case}_NO_INLINE_DISTINCT_WHERE_1);
\r
1758 <#include "persistence_impl_finder_cols.ftl">
\r
1760 if (!getDB().isSupportsInlineDistinct()) {
\r
1761 query.append(_FILTER_SQL_SELECT_${entity.alias?upper_case}_NO_INLINE_DISTINCT_WHERE_2);
\r
1764 if (orderByComparator != null) {
\r
1765 if (getDB().isSupportsInlineDistinct()) {
\r
1766 appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, orderByComparator);
\r
1769 appendOrderByComparator(query, _ORDER_BY_ENTITY_TABLE, orderByComparator);
\r
1773 <#if entity.getOrder()??>
\r
1775 if (getDB().isSupportsInlineDistinct()) {
\r
1776 query.append(${entity.name}ModelImpl.ORDER_BY_JPQL);
\r
1779 query.append(${entity.name}ModelImpl.ORDER_BY_SQL);
\r
1784 String sql = InlineSQLHelperUtil.replacePermissionCheck(query.toString(), ${entity.name}.class.getName(), _FILTER_ENTITY_TABLE_FILTER_PK_COLUMN<#if finder.hasColumn("groupId")>, groupId</#if>);
\r
1786 Session session = null;
\r
1789 session = openSession();
\r
1791 SQLQuery q = session.createSQLQuery(sql);
\r
1793 if (getDB().isSupportsInlineDistinct()) {
\r
1794 q.addEntity(_FILTER_ENTITY_ALIAS, ${entity.name}Impl.class);
\r
1797 q.addEntity(_FILTER_ENTITY_TABLE, ${entity.name}Impl.class);
\r
1800 QueryPos qPos = QueryPos.getInstance(q);
\r
1802 <#include "persistence_impl_finder_qpos.ftl">
\r
1804 return (List<${entity.name}>)QueryUtil.list(q, getDialect(), start, end);
\r
1806 catch (Exception e) {
\r
1807 throw processException(e);
\r
1810 closeSession(session);
\r
1816 * Returns the ${entity.humanNames} before and after the current ${entity.humanName} in the ordered set of ${entity.humanNames} that the user has permission to view where ${finder.getHumanConditions(false)}.
\r
1818 * @param ${entity.PKVarName} the primary key of the current ${entity.humanName}
\r
1819 <#list finderColsList as finderCol>
\r
1820 * @param ${finderCol.name} the ${finderCol.humanName}
\r
1822 * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
\r
1823 * @return the previous, current, and next ${entity.humanName}
\r
1824 * @throws ${packagePath}.${noSuchEntity}Exception if a ${entity.humanName} with the primary key could not be found
\r
1825 * @throws SystemException if a system exception occurred
\r
1827 public ${entity.name}[] filterFindBy${finder.name}_PrevAndNext(${entity.PKClassName} ${entity.PKVarName},
\r
1829 <#list finderColsList as finderCol>
\r
1830 ${finderCol.type} ${finderCol.name},
\r
1833 OrderByComparator orderByComparator) throws ${noSuchEntity}Exception, SystemException {
\r
1834 if (!InlineSQLHelperUtil.isEnabled(<#if finder.hasColumn("groupId")>groupId</#if>)) {
\r
1835 return findBy${finder.name}_PrevAndNext(${entity.PKVarName},
\r
1837 <#list finderColsList as finderCol>
\r
1838 ${finderCol.name},
\r
1841 orderByComparator);
\r
1844 ${entity.name} ${entity.varName} = findByPrimaryKey(${entity.PKVarName});
\r
1846 Session session = null;
\r
1849 session = openSession();
\r
1851 ${entity.name}[] array = new ${entity.name}Impl[3];
\r
1854 filterGetBy${finder.name}_PrevAndNext(
\r
1855 session, ${entity.varName},
\r
1857 <#list finderColsList as finderCol>
\r
1858 ${finderCol.name},
\r
1861 orderByComparator, true);
\r
1863 array[1] = ${entity.varName};
\r
1866 filterGetBy${finder.name}_PrevAndNext(
\r
1867 session, ${entity.varName},
\r
1869 <#list finderColsList as finderCol>
\r
1870 ${finderCol.name},
\r
1873 orderByComparator, false);
\r
1877 catch (Exception e) {
\r
1878 throw processException(e);
\r
1881 closeSession(session);
\r
1885 protected ${entity.name} filterGetBy${finder.name}_PrevAndNext(
\r
1886 Session session, ${entity.name} ${entity.varName},
\r
1888 <#list finderColsList as finderCol>
\r
1889 ${finderCol.type} ${finderCol.name},
\r
1892 OrderByComparator orderByComparator, boolean previous) {
\r
1894 <#if entity.isPermissionedModel()>
\r
1895 <#include "persistence_impl_get_by_prev_and_next_query.ftl">
\r
1897 String sql = InlineSQLHelperUtil.replacePermissionCheck(query.toString(), ${entity.name}.class.getName(), _FILTER_ENTITY_TABLE_FILTER_PK_COLUMN, _FILTER_ENTITY_TABLE_FILTER_USERID_COLUMN<#if finder.hasColumn("groupId")>, groupId</#if>);
\r
1899 Query q = session.createQuery(sql);
\r
1901 q.setFirstResult(0);
\r
1902 q.setMaxResults(2);
\r
1904 QueryPos qPos = QueryPos.getInstance(q);
\r
1906 <#include "persistence_impl_finder_qpos.ftl">
\r
1908 if (orderByComparator != null) {
\r
1909 Object[] values = orderByComparator.getOrderByConditionValues(${entity.varName});
\r
1911 for (Object value : values) {
\r
1916 List<${entity.name}> list = q.list();
\r
1918 if (list.size() == 2) {
\r
1919 return list.get(1);
\r
1925 StringBundler query = null;
\r
1927 if (orderByComparator != null) {
\r
1928 query = new StringBundler(6 + (orderByComparator.getOrderByFields().length * 6));
\r
1931 query = new StringBundler(3);
\r
1934 if (getDB().isSupportsInlineDistinct()) {
\r
1935 query.append(_FILTER_SQL_SELECT_${entity.alias?upper_case}_WHERE);
\r
1938 query.append(_FILTER_SQL_SELECT_${entity.alias?upper_case}_NO_INLINE_DISTINCT_WHERE_1);
\r
1941 <#include "persistence_impl_finder_cols.ftl">
\r
1943 if (!getDB().isSupportsInlineDistinct()) {
\r
1944 query.append(_FILTER_SQL_SELECT_${entity.alias?upper_case}_NO_INLINE_DISTINCT_WHERE_2);
\r
1947 if (orderByComparator != null) {
\r
1948 String[] orderByConditionFields = orderByComparator.getOrderByConditionFields();
\r
1950 if (orderByConditionFields.length > 0) {
\r
1951 query.append(WHERE_AND);
\r
1954 for (int i = 0; i < orderByConditionFields.length; i++) {
\r
1955 if (getDB().isSupportsInlineDistinct()) {
\r
1956 query.append(_ORDER_BY_ENTITY_ALIAS);
\r
1959 query.append(_ORDER_BY_ENTITY_TABLE);
\r
1962 query.append(orderByConditionFields[i]);
\r
1964 if ((i + 1) < orderByConditionFields.length) {
\r
1965 if (orderByComparator.isAscending() ^ previous) {
\r
1966 query.append(WHERE_GREATER_THAN_HAS_NEXT);
\r
1969 query.append(WHERE_LESSER_THAN_HAS_NEXT);
\r
1973 if (orderByComparator.isAscending() ^ previous) {
\r
1974 query.append(WHERE_GREATER_THAN);
\r
1977 query.append(WHERE_LESSER_THAN);
\r
1982 query.append(ORDER_BY_CLAUSE);
\r
1984 String[] orderByFields = orderByComparator.getOrderByFields();
\r
1986 for (int i = 0; i < orderByFields.length; i++) {
\r
1987 if (getDB().isSupportsInlineDistinct()) {
\r
1988 query.append(_ORDER_BY_ENTITY_ALIAS);
\r
1991 query.append(_ORDER_BY_ENTITY_TABLE);
\r
1994 query.append(orderByFields[i]);
\r
1996 if ((i + 1) < orderByFields.length) {
\r
1997 if (orderByComparator.isAscending() ^ previous) {
\r
1998 query.append(ORDER_BY_ASC_HAS_NEXT);
\r
2001 query.append(ORDER_BY_DESC_HAS_NEXT);
\r
2005 if (orderByComparator.isAscending() ^ previous) {
\r
2006 query.append(ORDER_BY_ASC);
\r
2009 query.append(ORDER_BY_DESC);
\r
2015 <#if entity.getOrder()??>
\r
2017 if (getDB().isSupportsInlineDistinct()) {
\r
2018 query.append(${entity.name}ModelImpl.ORDER_BY_JPQL);
\r
2021 query.append(${entity.name}ModelImpl.ORDER_BY_SQL);
\r
2026 String sql = InlineSQLHelperUtil.replacePermissionCheck(query.toString(), ${entity.name}.class.getName(), _FILTER_ENTITY_TABLE_FILTER_PK_COLUMN<#if finder.hasColumn("groupId")>, groupId</#if>);
\r
2028 SQLQuery q = session.createSQLQuery(sql);
\r
2030 q.setFirstResult(0);
\r
2031 q.setMaxResults(2);
\r
2033 if (getDB().isSupportsInlineDistinct()) {
\r
2034 q.addEntity(_FILTER_ENTITY_ALIAS, ${entity.name}Impl.class);
\r
2037 q.addEntity(_FILTER_ENTITY_TABLE, ${entity.name}Impl.class);
\r
2040 QueryPos qPos = QueryPos.getInstance(q);
\r
2042 <#include "persistence_impl_finder_qpos.ftl">
\r
2044 if (orderByComparator != null) {
\r
2045 Object[] values = orderByComparator.getOrderByConditionValues(${entity.varName});
\r
2047 for (Object value : values) {
\r
2052 List<${entity.name}> list = q.list();
\r
2054 if (list.size() == 2) {
\r
2055 return list.get(1);
\r
2063 <#if finder.hasArrayableOperator()>
\r
2065 * Returns all the ${entity.humanNames} that the user has permission to view where ${finder.getHumanConditions(true)}.
\r
2067 <#list finderColsList as finderCol>
\r
2068 <#if finderCol.hasArrayableOperator()>
\r
2069 * @param ${finderCol.names} the ${finderCol.humanNames}
\r
2071 * @param ${finderCol.name} the ${finderCol.humanName}
\r
2074 * @return the matching ${entity.humanNames} that the user has permission to view
\r
2075 * @throws SystemException if a system exception occurred
\r
2077 public List<${entity.name}> filterFindBy${finder.name}(
\r
2079 <#list finderColsList as finderCol>
\r
2080 <#if finderCol.hasArrayableOperator()>
\r
2081 ${finderCol.type}[] ${finderCol.names}
\r
2083 ${finderCol.type} ${finderCol.name}
\r
2086 <#if finderCol_has_next>
\r
2091 ) throws SystemException {
\r
2092 return filterFindBy${finder.name}(
\r
2094 <#list finderColsList as finderCol>
\r
2095 <#if finderCol.hasArrayableOperator()>
\r
2096 ${finderCol.names},
\r
2098 ${finderCol.name},
\r
2102 QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
\r
2106 * Returns a range of all the ${entity.humanNames} that the user has permission to view where ${finder.getHumanConditions(true)}.
\r
2109 * <#include "range_comment.ftl">
\r
2112 <#list finderColsList as finderCol>
\r
2113 <#if finderCol.hasArrayableOperator()>
\r
2114 * @param ${finderCol.names} the ${finderCol.humanNames}
\r
2116 * @param ${finderCol.name} the ${finderCol.humanName}
\r
2119 * @param start the lower bound of the range of ${entity.humanNames}
\r
2120 * @param end the upper bound of the range of ${entity.humanNames} (not inclusive)
\r
2121 * @return the range of matching ${entity.humanNames} that the user has permission to view
\r
2122 * @throws SystemException if a system exception occurred
\r
2124 public List<${entity.name}> filterFindBy${finder.name}(
\r
2126 <#list finderColsList as finderCol>
\r
2127 <#if finderCol.hasArrayableOperator()>
\r
2128 ${finderCol.type}[] ${finderCol.names},
\r
2130 ${finderCol.type} ${finderCol.name},
\r
2134 int start, int end) throws SystemException {
\r
2135 return filterFindBy${finder.name}(
\r
2137 <#list finderColsList as finderCol>
\r
2138 <#if finderCol.hasArrayableOperator()>
\r
2139 ${finderCol.names},
\r
2141 ${finderCol.name},
\r
2145 start, end, null);
\r
2149 * Returns an ordered range of all the ${entity.humanNames} that the user has permission to view where ${finder.getHumanConditions(true)}.
\r
2152 * <#include "range_comment.ftl">
\r
2155 <#list finderColsList as finderCol>
\r
2156 <#if finderCol.hasArrayableOperator()>
\r
2157 * @param ${finderCol.names} the ${finderCol.humanNames}
\r
2159 * @param ${finderCol.name} the ${finderCol.humanName}
\r
2162 * @param start the lower bound of the range of ${entity.humanNames}
\r
2163 * @param end the upper bound of the range of ${entity.humanNames} (not inclusive)
\r
2164 * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
\r
2165 * @return the ordered range of matching ${entity.humanNames} that the user has permission to view
\r
2166 * @throws SystemException if a system exception occurred
\r
2168 public List<${entity.name}> filterFindBy${finder.name}(
\r
2170 <#list finderColsList as finderCol>
\r
2171 <#if finderCol.hasArrayableOperator()>
\r
2172 ${finderCol.type}[] ${finderCol.names},
\r
2174 ${finderCol.type} ${finderCol.name},
\r
2178 int start, int end, OrderByComparator orderByComparator) throws SystemException {
\r
2179 if (!InlineSQLHelperUtil.isEnabled(
\r
2180 <#if finder.hasColumn("groupId")>
\r
2181 <#if finder.getColumn("groupId").hasArrayableOperator()>
\r
2188 return findBy${finder.name}(
\r
2190 <#list finderColsList as finderCol>
\r
2191 <#if finderCol.hasArrayableOperator()>
\r
2192 ${finderCol.names},
\r
2194 ${finderCol.name},
\r
2198 start, end, orderByComparator);
\r
2201 <#if entity.isPermissionedModel()>
\r
2202 <#include "persistence_impl_find_by_arrayable_query.ftl">
\r
2204 String sql = InlineSQLHelperUtil.replacePermissionCheck(query.toString(), ${entity.name}.class.getName(), _FILTER_ENTITY_TABLE_FILTER_PK_COLUMN, _FILTER_ENTITY_TABLE_FILTER_USERID_COLUMN
\r
2206 <#if finder.hasColumn("groupId")>,
\r
2207 <#if finder.getColumn("groupId").hasArrayableOperator()>
\r
2214 Session session = null;
\r
2217 session = openSession();
\r
2219 Query q = session.createQuery(sql);
\r
2221 QueryPos qPos = QueryPos.getInstance(q);
\r
2223 <#include "persistence_impl_finder_arrayable_qpos.ftl">
\r
2225 return (List<${entity.name}>)QueryUtil.list(q, getDialect(), start, end);
\r
2227 catch (Exception e) {
\r
2228 throw processException(e);
\r
2231 closeSession(session);
\r
2234 StringBundler query = new StringBundler();
\r
2236 if (getDB().isSupportsInlineDistinct()) {
\r
2237 query.append(_FILTER_SQL_SELECT_${entity.alias?upper_case}_WHERE);
\r
2240 query.append(_FILTER_SQL_SELECT_${entity.alias?upper_case}_NO_INLINE_DISTINCT_WHERE_1);
\r
2243 <#include "persistence_impl_finder_arrayable_cols.ftl">
\r
2245 if (!getDB().isSupportsInlineDistinct()) {
\r
2246 query.append(_FILTER_SQL_SELECT_${entity.alias?upper_case}_NO_INLINE_DISTINCT_WHERE_2);
\r
2249 if (orderByComparator != null) {
\r
2250 if (getDB().isSupportsInlineDistinct()) {
\r
2251 appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, orderByComparator);
\r
2254 appendOrderByComparator(query, _ORDER_BY_ENTITY_TABLE, orderByComparator);
\r
2258 <#if entity.getOrder()??>
\r
2260 if (getDB().isSupportsInlineDistinct()) {
\r
2261 query.append(${entity.name}ModelImpl.ORDER_BY_JPQL);
\r
2264 query.append(${entity.name}ModelImpl.ORDER_BY_SQL);
\r
2269 String sql = InlineSQLHelperUtil.replacePermissionCheck(query.toString(), ${entity.name}.class.getName(), _FILTER_ENTITY_TABLE_FILTER_PK_COLUMN
\r
2271 <#if finder.hasColumn("groupId")>,
\r
2272 <#if finder.getColumn("groupId").hasArrayableOperator()>
\r
2279 Session session = null;
\r
2282 session = openSession();
\r
2284 SQLQuery q = session.createSQLQuery(sql);
\r
2286 if (getDB().isSupportsInlineDistinct()) {
\r
2287 q.addEntity(_FILTER_ENTITY_ALIAS, ${entity.name}Impl.class);
\r
2290 q.addEntity(_FILTER_ENTITY_TABLE, ${entity.name}Impl.class);
\r
2293 QueryPos qPos = QueryPos.getInstance(q);
\r
2295 <#include "persistence_impl_finder_arrayable_qpos.ftl">
\r
2297 return (List<${entity.name}>)QueryUtil.list(q, getDialect(), start, end);
\r
2299 catch (Exception e) {
\r
2300 throw processException(e);
\r
2303 closeSession(session);
\r
2311 * Returns the ${entity.humanName} where ${finder.getHumanConditions(false)} or throws a {@link ${packagePath}.${noSuchEntity}Exception} if it could not be found.
\r
2313 <#list finderColsList as finderCol>
\r
2314 * @param ${finderCol.name} the ${finderCol.humanName}
\r
2316 * @return the matching ${entity.humanName}
\r
2317 * @throws ${packagePath}.${noSuchEntity}Exception if a matching ${entity.humanName} could not be found
\r
2318 * @throws SystemException if a system exception occurred
\r
2320 public ${entity.name} findBy${finder.name}(
\r
2322 <#list finderColsList as finderCol>
\r
2323 ${finderCol.type} ${finderCol.name}
\r
2325 <#if finderCol_has_next>
\r
2330 ) throws ${noSuchEntity}Exception, SystemException {
\r
2331 ${entity.name} ${entity.varName} = fetchBy${finder.name}(
\r
2333 <#list finderColsList as finderCol>
\r
2336 <#if finderCol_has_next>
\r
2343 if ( ${entity.varName} == null) {
\r
2344 StringBundler msg = new StringBundler(${(finderColsList?size * 2) + 2});
\r
2346 msg.append(_NO_SUCH_ENTITY_WITH_KEY);
\r
2348 <#list finderColsList as finderCol>
\r
2349 msg.append("<#if finderCol_index != 0>, </#if>${finderCol.name}=");
\r
2350 msg.append(${finderCol.name});
\r
2352 <#if !finderCol_has_next>
\r
2353 msg.append(StringPool.CLOSE_CURLY_BRACE);
\r
2357 if (_log.isWarnEnabled()) {
\r
2358 _log.warn(msg.toString());
\r
2361 throw new ${noSuchEntity}Exception(msg.toString());
\r
2364 return ${entity.varName};
\r
2368 * Returns the ${entity.humanName} where ${finder.getHumanConditions(false)} or returns <code>null</code> if it could not be found. Uses the finder cache.
\r
2370 <#list finderColsList as finderCol>
\r
2371 * @param ${finderCol.name} the ${finderCol.humanName}
\r
2373 * @return the matching ${entity.humanName}, or <code>null</code> if a matching ${entity.humanName} could not be found
\r
2374 * @throws SystemException if a system exception occurred
\r
2376 public ${entity.name} fetchBy${finder.name}(
\r
2378 <#list finderColsList as finderCol>
\r
2379 ${finderCol.type} ${finderCol.name}
\r
2381 <#if finderCol_has_next>
\r
2386 ) throws SystemException {
\r
2387 return fetchBy${finder.name}(
\r
2389 <#list finderColsList as finderCol>
\r
2390 ${finderCol.name},
\r
2397 * Returns the ${entity.humanName} where ${finder.getHumanConditions(false)} or returns <code>null</code> if it could not be found, optionally using the finder cache.
\r
2399 <#list finderColsList as finderCol>
\r
2400 * @param ${finderCol.name} the ${finderCol.humanName}
\r
2402 * @param retrieveFromCache whether to use the finder cache
\r
2403 * @return the matching ${entity.humanName}, or <code>null</code> if a matching ${entity.humanName} could not be found
\r
2404 * @throws SystemException if a system exception occurred
\r
2406 public ${entity.name} fetchBy${finder.name}(
\r
2408 <#list finderColsList as finderCol>
\r
2409 ${finderCol.type} ${finderCol.name}
\r
2414 boolean retrieveFromCache) throws SystemException {
\r
2415 Object[] finderArgs = new Object[] {
\r
2416 <#list finderColsList as finderCol>
\r
2419 <#if finderCol_has_next>
\r
2425 Object result = null;
\r
2427 if (retrieveFromCache) {
\r
2428 result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_${finder.name?upper_case}, finderArgs, this);
\r
2431 if (result instanceof ${entity.name}) {
\r
2432 ${entity.name} ${entity.varName} = (${entity.name})result;
\r
2435 <#list finderColsList as finderCol>
\r
2436 <#if finderCol.isPrimitiveType(false)>
\r
2437 (${finderCol.name} != ${entity.varName}.get${finderCol.methodName}())
\r
2439 !Validator.equals(${finderCol.name}, ${entity.varName}.get${finderCol.methodName}())
\r
2442 <#if finderCol_has_next>
\r
2451 if (result == null) {
\r
2452 StringBundler query = new StringBundler(<#if entity.getOrder()??>${finderColsList?size + 2}<#else>${finderColsList?size + 1}</#if>);
\r
2454 query.append(_SQL_SELECT_${entity.alias?upper_case}_WHERE);
\r
2456 <#include "persistence_impl_finder_cols.ftl">
\r
2458 <#if entity.getOrder()??>
\r
2459 query.append(${entity.name}ModelImpl.ORDER_BY_JPQL);
\r
2462 String sql = query.toString();
\r
2464 Session session = null;
\r
2467 session = openSession();
\r
2469 Query q = session.createQuery(sql);
\r
2471 QueryPos qPos = QueryPos.getInstance(q);
\r
2473 <#include "persistence_impl_finder_qpos.ftl">
\r
2475 List<${entity.name}> list = q.list();
\r
2479 ${entity.name} ${entity.varName} = null;
\r
2481 if (list.isEmpty()) {
\r
2482 FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_${finder.name?upper_case}, finderArgs, list);
\r
2485 ${entity.varName} = list.get(0);
\r
2487 cacheResult(${entity.varName});
\r
2490 <#list finderColsList as finderCol>
\r
2491 <#if finderCol.isPrimitiveType()>
\r
2492 (${entity.varName}.get${finderCol.methodName}() != ${finderCol.name})
\r
2494 (${entity.varName}.get${finderCol.methodName}() == null) || !${entity.varName}.get${finderCol.methodName}().equals(${finderCol.name})
\r
2497 <#if finderCol_has_next>
\r
2502 FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_${finder.name?upper_case}, finderArgs, ${entity.varName});
\r
2506 return ${entity.varName};
\r
2508 catch (Exception e) {
\r
2509 throw processException(e);
\r
2512 if (result == null) {
\r
2513 FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_${finder.name?upper_case}, finderArgs);
\r
2516 closeSession(session);
\r
2520 if (result instanceof List<?>) {
\r
2524 return (${entity.name})result;
\r
2532 * Returns all the ${entity.humanNames}.
\r
2534 * @return the ${entity.humanNames}
\r
2535 * @throws SystemException if a system exception occurred
\r
2537 public List<${entity.name}> findAll() throws SystemException {
\r
2538 return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
\r
2542 * Returns a range of all the ${entity.humanNames}.
\r
2545 * <#include "range_comment.ftl">
\r
2548 * @param start the lower bound of the range of ${entity.humanNames}
\r
2549 * @param end the upper bound of the range of ${entity.humanNames} (not inclusive)
\r
2550 * @return the range of ${entity.humanNames}
\r
2551 * @throws SystemException if a system exception occurred
\r
2553 public List<${entity.name}> findAll(int start, int end) throws SystemException {
\r
2554 return findAll(start, end, null);
\r
2558 * Returns an ordered range of all the ${entity.humanNames}.
\r
2561 * <#include "range_comment.ftl">
\r
2564 * @param start the lower bound of the range of ${entity.humanNames}
\r
2565 * @param end the upper bound of the range of ${entity.humanNames} (not inclusive)
\r
2566 * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
\r
2567 * @return the ordered range of ${entity.humanNames}
\r
2568 * @throws SystemException if a system exception occurred
\r
2570 public List<${entity.name}> findAll(int start, int end, OrderByComparator orderByComparator) throws SystemException {
\r
2571 FinderPath finderPath = null;
\r
2572 Object[] finderArgs = new Object[] {start, end, orderByComparator};
\r
2574 if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS) && (orderByComparator == null)) {
\r
2575 finderPath = FINDER_PATH_WITHOUT_PAGINATION_FIND_ALL;
\r
2576 finderArgs = FINDER_ARGS_EMPTY;
\r
2579 finderPath = FINDER_PATH_WITH_PAGINATION_FIND_ALL;
\r
2580 finderArgs = new Object[] {start, end, orderByComparator};
\r
2583 List<${entity.name}> list = (List<${entity.name}>)FinderCacheUtil.getResult(finderPath, finderArgs, this);
\r
2585 if (list == null) {
\r
2586 StringBundler query = null;
\r
2587 String sql = null;
\r
2589 if (orderByComparator != null) {
\r
2590 query = new StringBundler(2 + (orderByComparator.getOrderByFields().length * 3));
\r
2592 query.append(_SQL_SELECT_${entity.alias?upper_case});
\r
2594 appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, orderByComparator);
\r
2596 sql = query.toString();
\r
2599 <#if entity.getOrder()??>
\r
2600 sql = _SQL_SELECT_${entity.alias?upper_case}.concat(${entity.name}ModelImpl.ORDER_BY_JPQL);
\r
2602 sql = _SQL_SELECT_${entity.alias?upper_case};
\r
2606 Session session = null;
\r
2609 session = openSession();
\r
2611 Query q = session.createQuery(sql);
\r
2613 if (orderByComparator == null) {
\r
2614 list = (List<${entity.name}>)QueryUtil.list(q, getDialect(), start, end, false);
\r
2616 Collections.sort(list);
\r
2619 list = (List<${entity.name}>)QueryUtil.list(q, getDialect(), start, end);
\r
2622 catch (Exception e) {
\r
2623 throw processException(e);
\r
2626 if (list == null) {
\r
2627 FinderCacheUtil.removeResult(finderPath, finderArgs);
\r
2630 cacheResult(list);
\r
2632 FinderCacheUtil.putResult(finderPath, finderArgs, list);
\r
2635 closeSession(session);
\r
2642 <#list entity.getFinderList() as finder>
\r
2643 <#assign finderColsList = finder.getColumns()>
\r
2645 <#if finder.isCollection()>
\r
2647 * Removes all the ${entity.humanNames} where ${finder.getHumanConditions(false)} from the database.
\r
2649 <#list finderColsList as finderCol>
\r
2650 * @param ${finderCol.name} the ${finderCol.humanName}
\r
2652 * @throws SystemException if a system exception occurred
\r
2654 public void removeBy${finder.name}(
\r
2656 <#list finderColsList as finderCol>
\r
2657 ${finderCol.type} ${finderCol.name}<#if finderCol_has_next>,</#if>
\r
2660 ) throws SystemException {
\r
2661 for (${entity.name} ${entity.varName} : findBy${finder.name}(
\r
2663 <#list finderColsList as finderCol>
\r
2666 <#if finderCol_has_next>
\r
2672 remove(${entity.varName});
\r
2677 * Removes the ${entity.humanName} where ${finder.getHumanConditions(false)} from the database.
\r
2679 <#list finderColsList as finderCol>
\r
2680 * @param ${finderCol.name} the ${finderCol.humanName}
\r
2682 * @return the ${entity.humanName} that was removed
\r
2683 * @throws SystemException if a system exception occurred
\r
2685 public ${entity.name} removeBy${finder.name}(
\r
2687 <#list finderColsList as finderCol>
\r
2688 ${finderCol.type} ${finderCol.name}
\r
2690 <#if finderCol_has_next>
\r
2695 ) throws ${noSuchEntity}Exception, SystemException {
\r
2696 ${entity.name} ${entity.varName} = findBy${finder.name}(
\r
2698 <#list finderColsList as finderCol>
\r
2701 <#if finderCol_has_next>
\r
2708 return remove(${entity.varName});
\r
2714 * Removes all the ${entity.humanNames} from the database.
\r
2716 * @throws SystemException if a system exception occurred
\r
2718 public void removeAll() throws SystemException {
\r
2719 for (${entity.name} ${entity.varName} : findAll()) {
\r
2720 remove(${entity.varName});
\r
2724 <#list entity.getFinderList() as finder>
\r
2725 <#assign finderColsList = finder.getColumns()>
\r
2728 * Returns the number of ${entity.humanNames} where ${finder.getHumanConditions(false)}.
\r
2730 <#list finderColsList as finderCol>
\r
2731 * @param ${finderCol.name} the ${finderCol.humanName}
\r
2733 * @return the number of matching ${entity.humanNames}
\r
2734 * @throws SystemException if a system exception occurred
\r
2736 public int countBy${finder.name}(
\r
2738 <#list finderColsList as finderCol>
\r
2739 ${finderCol.type} ${finderCol.name}
\r
2741 <#if finderCol_has_next>
\r
2746 ) throws SystemException {
\r
2747 Object[] finderArgs = new Object[] {
\r
2748 <#list finderColsList as finderCol>
\r
2751 <#if finderCol_has_next>
\r
2757 Long count = (Long)FinderCacheUtil.getResult(
\r
2758 <#if !finder.hasCustomComparator()>
\r
2759 FINDER_PATH_COUNT_BY_${finder.name?upper_case},
\r
2761 FINDER_PATH_WITH_PAGINATION_COUNT_BY_${finder.name?upper_case},
\r
2763 finderArgs, this);
\r
2765 if (count == null) {
\r
2766 <#include "persistence_impl_count_by_query.ftl">
\r
2768 String sql = query.toString();
\r
2770 Session session = null;
\r
2773 session = openSession();
\r
2775 Query q = session.createQuery(sql);
\r
2777 QueryPos qPos = QueryPos.getInstance(q);
\r
2779 <#include "persistence_impl_finder_qpos.ftl">
\r
2781 count = (Long)q.uniqueResult();
\r
2783 catch (Exception e) {
\r
2784 throw processException(e);
\r
2787 if (count == null) {
\r
2788 count = Long.valueOf(0);
\r
2791 FinderCacheUtil.putResult(
\r
2792 <#if !finder.hasCustomComparator()>
\r
2793 FINDER_PATH_COUNT_BY_${finder.name?upper_case},
\r
2795 FINDER_PATH_WITH_PAGINATION_COUNT_BY_${finder.name?upper_case},
\r
2797 finderArgs, count);
\r
2799 closeSession(session);
\r
2803 return count.intValue();
\r
2806 <#if finder.hasArrayableOperator()>
\r
2808 * Returns the number of ${entity.humanNames} where ${finder.getHumanConditions(true)}.
\r
2810 <#list finderColsList as finderCol>
\r
2811 <#if finderCol.hasArrayableOperator()>
\r
2812 * @param ${finderCol.names} the ${finderCol.humanNames}
\r
2814 * @param ${finderCol.name} the ${finderCol.humanName}
\r
2817 * @return the number of matching ${entity.humanNames}
\r
2818 * @throws SystemException if a system exception occurred
\r
2820 public int countBy${finder.name}(
\r
2822 <#list finderColsList as finderCol>
\r
2823 <#if finderCol.hasArrayableOperator()>
\r
2824 ${finderCol.type}[] ${finderCol.names}
\r
2826 ${finderCol.type} ${finderCol.name}
\r
2829 <#if finderCol_has_next>
\r
2834 ) throws SystemException {
\r
2835 Object[] finderArgs = new Object[] {
\r
2836 <#list finderColsList as finderCol>
\r
2837 <#if finderCol.hasArrayableOperator()>
\r
2838 StringUtil.merge(${finderCol.names})
\r
2843 <#if finderCol_has_next>
\r
2849 Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_WITH_PAGINATION_COUNT_BY_${finder.name?upper_case}, finderArgs, this);
\r
2851 if (count == null) {
\r
2852 <#include "persistence_impl_count_by_arrayable_query.ftl">
\r
2854 String sql = query.toString();
\r
2856 Session session = null;
\r
2859 session = openSession();
\r
2861 Query q = session.createQuery(sql);
\r
2863 QueryPos qPos = QueryPos.getInstance(q);
\r
2865 <#include "persistence_impl_finder_arrayable_qpos.ftl">
\r
2867 count = (Long)q.uniqueResult();
\r
2869 catch (Exception e) {
\r
2870 throw processException(e);
\r
2873 if (count == null) {
\r
2874 count = Long.valueOf(0);
\r
2877 FinderCacheUtil.putResult(FINDER_PATH_WITH_PAGINATION_COUNT_BY_${finder.name?upper_case}, finderArgs, count);
\r
2879 closeSession(session);
\r
2883 return count.intValue();
\r
2887 <#if entity.isPermissionCheckEnabled(finder)>
\r
2889 * Returns the number of ${entity.humanNames} that the user has permission to view where ${finder.getHumanConditions(false)}.
\r
2891 <#list finderColsList as finderCol>
\r
2892 * @param ${finderCol.name} the ${finderCol.humanName}
\r
2894 * @return the number of matching ${entity.humanNames} that the user has permission to view
\r
2895 * @throws SystemException if a system exception occurred
\r
2897 public int filterCountBy${finder.name}(
\r
2899 <#list finderColsList as finderCol>
\r
2900 ${finderCol.type} ${finderCol.name}
\r
2902 <#if finderCol_has_next>
\r
2907 ) throws SystemException {
\r
2908 if (!InlineSQLHelperUtil.isEnabled(<#if finder.hasColumn("groupId")>groupId</#if>)) {
\r
2909 return countBy${finder.name}(
\r
2911 <#list finderColsList as finderCol>
\r
2914 <#if finderCol_has_next>
\r
2922 <#if entity.isPermissionedModel()>
\r
2923 <#include "persistence_impl_count_by_query.ftl">
\r
2925 String sql = InlineSQLHelperUtil.replacePermissionCheck(query.toString(), ${entity.name}.class.getName(), _FILTER_ENTITY_TABLE_FILTER_PK_COLUMN, _FILTER_ENTITY_TABLE_FILTER_USERID_COLUMN<#if finder.hasColumn("groupId")>, groupId</#if>);
\r
2927 Session session = null;
\r
2930 session = openSession();
\r
2932 Query q = session.createQuery(sql);
\r
2934 QueryPos qPos = QueryPos.getInstance(q);
\r
2936 <#include "persistence_impl_finder_qpos.ftl">
\r
2938 Long count = (Long)q.uniqueResult();
\r
2940 return count.intValue();
\r
2942 catch (Exception e) {
\r
2943 throw processException(e);
\r
2946 closeSession(session);
\r
2949 StringBundler query = new StringBundler(${finderColsList?size + 1});
\r
2951 query.append(_FILTER_SQL_COUNT_${entity.alias?upper_case}_WHERE);
\r
2953 <#include "persistence_impl_finder_cols.ftl">
\r
2955 String sql = InlineSQLHelperUtil.replacePermissionCheck(query.toString(), ${entity.name}.class.getName(), _FILTER_ENTITY_TABLE_FILTER_PK_COLUMN<#if finder.hasColumn("groupId")>, groupId</#if>);
\r
2957 Session session = null;
\r
2960 session = openSession();
\r
2962 SQLQuery q = session.createSQLQuery(sql);
\r
2964 q.addScalar(COUNT_COLUMN_NAME, com.liferay.portal.kernel.dao.orm.Type.LONG);
\r
2966 QueryPos qPos = QueryPos.getInstance(q);
\r
2968 <#include "persistence_impl_finder_qpos.ftl">
\r
2970 Long count = (Long)q.uniqueResult();
\r
2972 return count.intValue();
\r
2974 catch (Exception e) {
\r
2975 throw processException(e);
\r
2978 closeSession(session);
\r
2983 <#if finder.hasArrayableOperator()>
\r
2985 * Returns the number of ${entity.humanNames} that the user has permission to view where ${finder.getHumanConditions(true)}.
\r
2987 <#list finderColsList as finderCol>
\r
2988 <#if finderCol.hasArrayableOperator()>
\r
2989 * @param ${finderCol.names} the ${finderCol.humanNames}
\r
2991 * @param ${finderCol.name} the ${finderCol.humanName}
\r
2994 * @return the number of matching ${entity.humanNames} that the user has permission to view
\r
2995 * @throws SystemException if a system exception occurred
\r
2997 public int filterCountBy${finder.name}(
\r
2999 <#list finderColsList as finderCol>
\r
3000 <#if finderCol.hasArrayableOperator()>
\r
3001 ${finderCol.type}[] ${finderCol.names}
\r
3003 ${finderCol.type} ${finderCol.name}
\r
3006 <#if finderCol_has_next>
\r
3011 ) throws SystemException {
\r
3012 if (!InlineSQLHelperUtil.isEnabled(
\r
3013 <#if finder.hasColumn("groupId")>
\r
3014 <#if finder.getColumn("groupId").hasArrayableOperator()>
\r
3021 return countBy${finder.name}(
\r
3023 <#list finderColsList as finderCol>
\r
3024 <#if finderCol.hasArrayableOperator()>
\r
3025 ${finderCol.names}
\r
3030 <#if finderCol_has_next>
\r
3038 <#if entity.isPermissionedModel()>
\r
3039 <#include "persistence_impl_count_by_arrayable_query.ftl">
\r
3041 String sql = InlineSQLHelperUtil.replacePermissionCheck(query.toString(), ${entity.name}.class.getName(), _FILTER_ENTITY_TABLE_FILTER_PK_COLUMN, _FILTER_ENTITY_TABLE_FILTER_USERID_COLUMN
\r
3043 <#if finder.hasColumn("groupId")>,
\r
3044 <#if finder.getColumn("groupId").hasArrayableOperator()>
\r
3051 Session session = null;
\r
3054 session = openSession();
\r
3056 Query q = session.createQuery(sql);
\r
3058 QueryPos qPos = QueryPos.getInstance(q);
\r
3060 <#include "persistence_impl_finder_arrayable_qpos.ftl">
\r
3062 Long count = (Long)q.uniqueResult();
\r
3064 return count.intValue();
\r
3066 catch (Exception e) {
\r
3067 throw processException(e);
\r
3070 closeSession(session);
\r
3073 StringBundler query = new StringBundler();
\r
3075 query.append(_FILTER_SQL_COUNT_${entity.alias?upper_case}_WHERE);
\r
3077 <#include "persistence_impl_finder_arrayable_cols.ftl">
\r
3079 String sql = InlineSQLHelperUtil.replacePermissionCheck(query.toString(), ${entity.name}.class.getName(), _FILTER_ENTITY_TABLE_FILTER_PK_COLUMN
\r
3081 <#if finder.hasColumn("groupId")>,
\r
3082 <#if finder.getColumn("groupId").hasArrayableOperator()>
\r
3089 Session session = null;
\r
3092 session = openSession();
\r
3094 SQLQuery q = session.createSQLQuery(sql);
\r
3096 q.addScalar(COUNT_COLUMN_NAME, com.liferay.portal.kernel.dao.orm.Type.LONG);
\r
3098 QueryPos qPos = QueryPos.getInstance(q);
\r
3100 <#include "persistence_impl_finder_arrayable_qpos.ftl">
\r
3102 Long count = (Long)q.uniqueResult();
\r
3104 return count.intValue();
\r
3106 catch (Exception e) {
\r
3107 throw processException(e);
\r
3110 closeSession(session);
\r
3119 * Returns the number of ${entity.humanNames}.
\r
3121 * @return the number of ${entity.humanNames}
\r
3122 * @throws SystemException if a system exception occurred
\r
3124 public int countAll() throws SystemException {
\r
3125 Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL, FINDER_ARGS_EMPTY, this);
\r
3127 if (count == null) {
\r
3128 Session session = null;
\r
3131 session = openSession();
\r
3133 Query q = session.createQuery(_SQL_COUNT_${entity.alias?upper_case});
\r
3135 count = (Long)q.uniqueResult();
\r
3137 catch (Exception e) {
\r
3138 throw processException(e);
\r
3141 if (count == null) {
\r
3142 count = Long.valueOf(0);
\r
3145 FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL, FINDER_ARGS_EMPTY, count);
\r
3147 closeSession(session);
\r
3151 return count.intValue();
\r
3154 <#list entity.columnList as column>
\r
3155 <#if column.isCollection() && (column.isMappingManyToMany() || column.isMappingOneToMany())>
\r
3156 <#assign tempEntity = serviceBuilder.getEntity(column.getEJBName())>
\r
3159 * Returns all the ${tempEntity.humanNames} associated with the ${entity.humanName}.
\r
3161 * @param pk the primary key of the ${entity.humanName}
\r
3162 * @return the ${tempEntity.humanNames} associated with the ${entity.humanName}
\r
3163 * @throws SystemException if a system exception occurred
\r
3165 public List<${tempEntity.packagePath}.model.${tempEntity.name}> get${tempEntity.names}(${entity.PKClassName} pk) throws SystemException {
\r
3166 return get${tempEntity.names}(pk, QueryUtil.ALL_POS, QueryUtil.ALL_POS);
\r
3170 * Returns a range of all the ${tempEntity.humanNames} associated with the ${entity.humanName}.
\r
3173 * <#include "range_comment.ftl">
\r
3176 * @param pk the primary key of the ${entity.humanName}
\r
3177 * @param start the lower bound of the range of ${entity.humanNames}
\r
3178 * @param end the upper bound of the range of ${entity.humanNames} (not inclusive)
\r
3179 * @return the range of ${tempEntity.humanNames} associated with the ${entity.humanName}
\r
3180 * @throws SystemException if a system exception occurred
\r
3182 public List<${tempEntity.packagePath}.model.${tempEntity.name}> get${tempEntity.names}(${entity.PKClassName} pk, int start, int end) throws SystemException {
\r
3183 return get${tempEntity.names}(pk, start, end, null);
\r
3186 public static final FinderPath FINDER_PATH_GET_${tempEntity.names?upper_case} = new FinderPath(
\r
3187 ${tempEntity.packagePath}.model.impl.${tempEntity.name}ModelImpl.ENTITY_CACHE_ENABLED,
\r
3189 <#if column.mappingTable??>
\r
3190 ${entity.name}ModelImpl.FINDER_CACHE_ENABLED_${stringUtil.upperCase(column.mappingTable)},
\r
3191 ${tempEntity.packagePath}.model.impl.${tempEntity.name}Impl.class,
\r
3192 ${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME,
\r
3194 ${tempEntity.packagePath}.model.impl.${tempEntity.name}ModelImpl.FINDER_CACHE_ENABLED,
\r
3195 ${tempEntity.packagePath}.model.impl.${tempEntity.name}Impl.class,
\r
3196 ${tempEntity.packagePath}.service.persistence.${tempEntity.name}PersistenceImpl.FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
\r
3199 "get${tempEntity.names}",
\r
3201 <#if entity.hasPrimitivePK()>
\r
3202 ${serviceBuilder.getPrimitiveObj(entity.getPKClassName())}
\r
3204 ${entity.PKClassName}
\r
3207 .class.getName(), "java.lang.Integer", "java.lang.Integer", "com.liferay.portal.kernel.util.OrderByComparator"
\r
3211 FINDER_PATH_GET_${tempEntity.names?upper_case}.setCacheKeyGeneratorCacheName(null);
\r
3215 * Returns an ordered range of all the ${tempEntity.humanNames} associated with the ${entity.humanName}.
\r
3218 * <#include "range_comment.ftl">
\r
3221 * @param pk the primary key of the ${entity.humanName}
\r
3222 * @param start the lower bound of the range of ${entity.humanNames}
\r
3223 * @param end the upper bound of the range of ${entity.humanNames} (not inclusive)
\r
3224 * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
\r
3225 * @return the ordered range of ${tempEntity.humanNames} associated with the ${entity.humanName}
\r
3226 * @throws SystemException if a system exception occurred
\r
3228 public List<${tempEntity.packagePath}.model.${tempEntity.name}> get${tempEntity.names}(${entity.PKClassName} pk, int start, int end, OrderByComparator orderByComparator) throws SystemException {
\r
3229 Object[] finderArgs = new Object[] {
\r
3230 pk, start, end, orderByComparator
\r
3233 List<${tempEntity.packagePath}.model.${tempEntity.name}> list = (List<${tempEntity.packagePath}.model.${tempEntity.name}>)FinderCacheUtil.getResult(FINDER_PATH_GET_${tempEntity.names?upper_case}, finderArgs, this);
\r
3235 if (list == null) {
\r
3236 Session session = null;
\r
3239 session = openSession();
\r
3241 String sql = null;
\r
3243 if (orderByComparator != null) {
\r
3244 sql = _SQL_GET${tempEntity.names?upper_case}.concat(ORDER_BY_CLAUSE).concat(orderByComparator.getOrderBy());
\r
3247 <#if tempEntity.getOrder()??>
\r
3248 sql = _SQL_GET${tempEntity.names?upper_case}.concat(${tempEntity.packagePath}.model.impl.${tempEntity.name}ModelImpl.ORDER_BY_SQL);
\r
3250 sql = _SQL_GET${tempEntity.names?upper_case};
\r
3254 SQLQuery q = session.createSQLQuery(sql);
\r
3256 q.addEntity("${tempEntity.table}", ${tempEntity.packagePath}.model.impl.${tempEntity.name}Impl.class);
\r
3258 QueryPos qPos = QueryPos.getInstance(q);
\r
3262 list = (List<${tempEntity.packagePath}.model.${tempEntity.name}>)QueryUtil.list(q, getDialect(), start, end);
\r
3264 catch (Exception e) {
\r
3265 throw processException(e);
\r
3268 if (list == null) {
\r
3269 FinderCacheUtil.removeResult(FINDER_PATH_GET_${tempEntity.names?upper_case}, finderArgs);
\r
3272 ${tempEntity.varName}Persistence.cacheResult(list);
\r
3274 FinderCacheUtil.putResult(FINDER_PATH_GET_${tempEntity.names?upper_case}, finderArgs, list);
\r
3277 closeSession(session);
\r
3284 public static final FinderPath FINDER_PATH_GET_${tempEntity.names?upper_case}_SIZE = new FinderPath(
\r
3285 ${tempEntity.packagePath}.model.impl.${tempEntity.name}ModelImpl.ENTITY_CACHE_ENABLED,
\r
3287 <#if column.mappingTable??>
\r
3288 ${entity.name}ModelImpl.FINDER_CACHE_ENABLED_${stringUtil.upperCase(column.mappingTable)},
\r
3290 ${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME,
\r
3292 ${tempEntity.packagePath}.model.impl.${tempEntity.name}ModelImpl.FINDER_CACHE_ENABLED,
\r
3293 ${tempEntity.packagePath}.model.impl.${tempEntity.name}Impl.class,
\r
3294 ${tempEntity.packagePath}.service.persistence.${tempEntity.name}PersistenceImpl.FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
\r
3297 "get${tempEntity.names}Size",
\r
3299 <#if entity.hasPrimitivePK()>
\r
3300 ${serviceBuilder.getPrimitiveObj(entity.getPKClassName())}
\r
3302 ${entity.PKClassName}
\r
3309 FINDER_PATH_GET_${tempEntity.names?upper_case}_SIZE.setCacheKeyGeneratorCacheName(null);
\r
3313 * Returns the number of ${tempEntity.humanNames} associated with the ${entity.humanName}.
\r
3315 * @param pk the primary key of the ${entity.humanName}
\r
3316 * @return the number of ${tempEntity.humanNames} associated with the ${entity.humanName}
\r
3317 * @throws SystemException if a system exception occurred
\r
3319 public int get${tempEntity.names}Size(${entity.PKClassName} pk) throws SystemException {
\r
3320 Object[] finderArgs = new Object[] {pk};
\r
3322 Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_GET_${tempEntity.names?upper_case}_SIZE, finderArgs, this);
\r
3324 if (count == null) {
\r
3325 Session session = null;
\r
3328 session = openSession();
\r
3330 SQLQuery q = session.createSQLQuery(_SQL_GET${tempEntity.names?upper_case}SIZE);
\r
3332 q.addScalar(COUNT_COLUMN_NAME, com.liferay.portal.kernel.dao.orm.Type.LONG);
\r
3334 QueryPos qPos = QueryPos.getInstance(q);
\r
3338 count = (Long)q.uniqueResult();
\r
3340 catch (Exception e) {
\r
3341 throw processException(e);
\r
3344 if (count == null) {
\r
3345 count = Long.valueOf(0);
\r
3348 FinderCacheUtil.putResult(FINDER_PATH_GET_${tempEntity.names?upper_case}_SIZE, finderArgs, count);
\r
3350 closeSession(session);
\r
3354 return count.intValue();
\r
3357 public static final FinderPath FINDER_PATH_CONTAINS_${tempEntity.name?upper_case} = new FinderPath(
\r
3358 ${tempEntity.packagePath}.model.impl.${tempEntity.name}ModelImpl.ENTITY_CACHE_ENABLED,
\r
3360 <#if column.mappingTable??>
\r
3361 ${entity.name}ModelImpl.FINDER_CACHE_ENABLED_${stringUtil.upperCase(column.mappingTable)},
\r
3363 ${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME,
\r
3365 ${tempEntity.packagePath}.model.impl.${tempEntity.name}ModelImpl.FINDER_CACHE_ENABLED,
\r
3366 ${tempEntity.packagePath}.model.impl.${tempEntity.name}Impl.class,
\r
3367 ${tempEntity.packagePath}.service.persistence.${tempEntity.name}PersistenceImpl.FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
\r
3370 "contains${tempEntity.name}",
\r
3372 <#if entity.hasPrimitivePK()>
\r
3373 ${serviceBuilder.getPrimitiveObj(entity.getPKClassName())}
\r
3375 ${entity.PKClassName}
\r
3380 <#if tempEntity.hasPrimitivePK()>
\r
3381 ${serviceBuilder.getPrimitiveObj(tempEntity.getPKClassName())}
\r
3383 ${tempEntity.PKClassName}
\r
3390 * Returns <code>true</code> if the ${tempEntity.humanName} is associated with the ${entity.humanName}.
\r
3392 * @param pk the primary key of the ${entity.humanName}
\r
3393 * @param ${tempEntity.varName}PK the primary key of the ${tempEntity.humanName}
\r
3394 * @return <code>true</code> if the ${tempEntity.humanName} is associated with the ${entity.humanName}; <code>false</code> otherwise
\r
3395 * @throws SystemException if a system exception occurred
\r
3397 public boolean contains${tempEntity.name}(${entity.PKClassName} pk, ${tempEntity.PKClassName} ${tempEntity.varName}PK) throws SystemException {
\r
3398 Object[] finderArgs = new Object[] {pk, ${tempEntity.varName}PK};
\r
3400 Boolean value = (Boolean)FinderCacheUtil.getResult(FINDER_PATH_CONTAINS_${tempEntity.name?upper_case}, finderArgs, this);
\r
3402 if (value == null) {
\r
3404 value = Boolean.valueOf(contains${tempEntity.name}.contains(pk, ${tempEntity.varName}PK));
\r
3406 catch (Exception e) {
\r
3407 throw processException(e);
\r
3410 if (value == null) {
\r
3411 value = Boolean.FALSE;
\r
3414 FinderCacheUtil.putResult(FINDER_PATH_CONTAINS_${tempEntity.name?upper_case}, finderArgs, value);
\r
3418 return value.booleanValue();
\r
3422 * Returns <code>true</code> if the ${entity.humanName} has any ${tempEntity.humanNames} associated with it.
\r
3424 * @param pk the primary key of the ${entity.humanName} to check for associations with ${tempEntity.humanNames}
\r
3425 * @return <code>true</code> if the ${entity.humanName} has any ${tempEntity.humanNames} associated with it; <code>false</code> otherwise
\r
3426 * @throws SystemException if a system exception occurred
\r
3428 public boolean contains${tempEntity.names}(${entity.PKClassName} pk) throws SystemException {
\r
3429 if (get${tempEntity.names}Size(pk)> 0) {
\r
3437 <#if column.isMappingManyToMany()>
\r
3438 <#assign noSuchTempEntity = serviceBuilder.getNoSuchEntityException(tempEntity)>
\r
3441 * Adds an association between the ${entity.humanName} and the ${tempEntity.humanName}. Also notifies the appropriate model listeners and clears the mapping table finder cache.
\r
3443 * @param pk the primary key of the ${entity.humanName}
\r
3444 * @param ${tempEntity.varName}PK the primary key of the ${tempEntity.humanName}
\r
3445 * @throws SystemException if a system exception occurred
\r
3447 public void add${tempEntity.name}(${entity.PKClassName} pk, ${tempEntity.PKClassName} ${tempEntity.varName}PK) throws SystemException {
\r
3449 add${tempEntity.name}.add(pk, ${tempEntity.varName}PK);
\r
3451 catch (Exception e) {
\r
3452 throw processException(e);
\r
3455 FinderCacheUtil.clearCache(${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME);
\r
3460 * Adds an association between the ${entity.humanName} and the ${tempEntity.humanName}. Also notifies the appropriate model listeners and clears the mapping table finder cache.
\r
3462 * @param pk the primary key of the ${entity.humanName}
\r
3463 * @param ${tempEntity.varName} the ${tempEntity.humanName}
\r
3464 * @throws SystemException if a system exception occurred
\r
3466 public void add${tempEntity.name}(${entity.PKClassName} pk, ${tempEntity.packagePath}.model.${tempEntity.name} ${tempEntity.varName}) throws SystemException {
\r
3468 add${tempEntity.name}.add(pk, ${tempEntity.varName}.getPrimaryKey());
\r
3470 catch (Exception e) {
\r
3471 throw processException(e);
\r
3474 FinderCacheUtil.clearCache(${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME);
\r
3479 * Adds an association between the ${entity.humanName} and the ${tempEntity.humanNames}. Also notifies the appropriate model listeners and clears the mapping table finder cache.
\r
3481 * @param pk the primary key of the ${entity.humanName}
\r
3482 * @param ${tempEntity.varName}PKs the primary keys of the ${tempEntity.humanNames}
\r
3483 * @throws SystemException if a system exception occurred
\r
3485 public void add${tempEntity.names}(${entity.PKClassName} pk, ${tempEntity.PKClassName}[] ${tempEntity.varName}PKs) throws SystemException {
\r
3487 for (${tempEntity.PKClassName} ${tempEntity.varName}PK : ${tempEntity.varName}PKs) {
\r
3488 add${tempEntity.name}.add(pk, ${tempEntity.varName}PK);
\r
3491 catch (Exception e) {
\r
3492 throw processException(e);
\r
3495 FinderCacheUtil.clearCache(${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME);
\r
3500 * Adds an association between the ${entity.humanName} and the ${tempEntity.humanNames}. Also notifies the appropriate model listeners and clears the mapping table finder cache.
\r
3502 * @param pk the primary key of the ${entity.humanName}
\r
3503 * @param ${tempEntity.varNames} the ${tempEntity.humanNames}
\r
3504 * @throws SystemException if a system exception occurred
\r
3506 public void add${tempEntity.names}(${entity.PKClassName} pk, List<${tempEntity.packagePath}.model.${tempEntity.name}> ${tempEntity.varNames}) throws SystemException {
\r
3508 for (${tempEntity.packagePath}.model.${tempEntity.name} ${tempEntity.varName} : ${tempEntity.varNames}) {
\r
3509 add${tempEntity.name}.add(pk, ${tempEntity.varName}.getPrimaryKey());
\r
3512 catch (Exception e) {
\r
3513 throw processException(e);
\r
3516 FinderCacheUtil.clearCache(${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME);
\r
3521 * Clears all associations between the ${entity.humanName} and its ${tempEntity.humanNames}. Also notifies the appropriate model listeners and clears the mapping table finder cache.
\r
3523 * @param pk the primary key of the ${entity.humanName} to clear the associated ${tempEntity.humanNames} from
\r
3524 * @throws SystemException if a system exception occurred
\r
3526 public void clear${tempEntity.names}(${entity.PKClassName} pk) throws SystemException {
\r
3528 clear${tempEntity.names}.clear(pk);
\r
3530 catch (Exception e) {
\r
3531 throw processException(e);
\r
3534 FinderCacheUtil.clearCache(${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME);
\r
3539 * Removes the association between the ${entity.humanName} and the ${tempEntity.humanName}. Also notifies the appropriate model listeners and clears the mapping table finder cache.
\r
3541 * @param pk the primary key of the ${entity.humanName}
\r
3542 * @param ${tempEntity.varName}PK the primary key of the ${tempEntity.humanName}
\r
3543 * @throws SystemException if a system exception occurred
\r
3545 public void remove${tempEntity.name}(${entity.PKClassName} pk, ${tempEntity.PKClassName} ${tempEntity.varName}PK) throws SystemException {
\r
3547 remove${tempEntity.name}.remove(pk, ${tempEntity.varName}PK);
\r
3549 catch (Exception e) {
\r
3550 throw processException(e);
\r
3553 FinderCacheUtil.clearCache(${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME);
\r
3558 * Removes the association between the ${entity.humanName} and the ${tempEntity.humanName}. Also notifies the appropriate model listeners and clears the mapping table finder cache.
\r
3560 * @param pk the primary key of the ${entity.humanName}
\r
3561 * @param ${tempEntity.varName} the ${tempEntity.humanName}
\r
3562 * @throws SystemException if a system exception occurred
\r
3564 public void remove${tempEntity.name}(${entity.PKClassName} pk, ${tempEntity.packagePath}.model.${tempEntity.name} ${tempEntity.varName}) throws SystemException {
\r
3566 remove${tempEntity.name}.remove(pk, ${tempEntity.varName}.getPrimaryKey());
\r
3568 catch (Exception e) {
\r
3569 throw processException(e);
\r
3572 FinderCacheUtil.clearCache(${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME);
\r
3577 * Removes the association between the ${entity.humanName} and the ${tempEntity.humanNames}. Also notifies the appropriate model listeners and clears the mapping table finder cache.
\r
3579 * @param pk the primary key of the ${entity.humanName}
\r
3580 * @param ${tempEntity.varName}PKs the primary keys of the ${tempEntity.humanNames}
\r
3581 * @throws SystemException if a system exception occurred
\r
3583 public void remove${tempEntity.names}(${entity.PKClassName} pk, ${tempEntity.PKClassName}[] ${tempEntity.varName}PKs) throws SystemException {
\r
3585 for (${tempEntity.PKClassName} ${tempEntity.varName}PK : ${tempEntity.varName}PKs) {
\r
3586 remove${tempEntity.name}.remove(pk, ${tempEntity.varName}PK);
\r
3589 catch (Exception e) {
\r
3590 throw processException(e);
\r
3593 FinderCacheUtil.clearCache(${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME);
\r
3598 * Removes the association between the ${entity.humanName} and the ${tempEntity.humanNames}. Also notifies the appropriate model listeners and clears the mapping table finder cache.
\r
3600 * @param pk the primary key of the ${entity.humanName}
\r
3601 * @param ${tempEntity.varNames} the ${tempEntity.humanNames}
\r
3602 * @throws SystemException if a system exception occurred
\r
3604 public void remove${tempEntity.names}(${entity.PKClassName} pk, List<${tempEntity.packagePath}.model.${tempEntity.name}> ${tempEntity.varNames}) throws SystemException {
\r
3606 for (${tempEntity.packagePath}.model.${tempEntity.name} ${tempEntity.varName} : ${tempEntity.varNames}) {
\r
3607 remove${tempEntity.name}.remove(pk, ${tempEntity.varName}.getPrimaryKey());
\r
3610 catch (Exception e) {
\r
3611 throw processException(e);
\r
3614 FinderCacheUtil.clearCache(${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME);
\r
3619 * Sets the ${tempEntity.humanNames} associated with the ${entity.humanName}, removing and adding associations as necessary. Also notifies the appropriate model listeners and clears the mapping table finder cache.
\r
3621 * @param pk the primary key of the ${entity.humanName}
\r
3622 * @param ${tempEntity.varName}PKs the primary keys of the ${tempEntity.humanNames} to be associated with the ${entity.humanName}
\r
3623 * @throws SystemException if a system exception occurred
\r
3625 public void set${tempEntity.names}(${entity.PKClassName} pk, ${tempEntity.PKClassName}[] ${tempEntity.varName}PKs) throws SystemException {
\r
3627 Set<${serviceBuilder.getPrimitiveObj("${tempEntity.PKClassName}")}> ${tempEntity.varName}PKSet = SetUtil.fromArray(${tempEntity.varName}PKs);
\r
3629 List<${tempEntity.packagePath}.model.${tempEntity.name}> ${tempEntity.varNames} = get${tempEntity.names}(pk);
\r
3631 for (${tempEntity.packagePath}.model.${tempEntity.name} ${tempEntity.varName} : ${tempEntity.varNames}) {
\r
3632 if (!${tempEntity.varName}PKSet.remove(${tempEntity.varName}.getPrimaryKey())) {
\r
3633 remove${tempEntity.name}.remove(pk, ${tempEntity.varName}.getPrimaryKey());
\r
3637 for (${serviceBuilder.getPrimitiveObj("${tempEntity.PKClassName}")} ${tempEntity.varName}PK : ${tempEntity.varName}PKSet) {
\r
3638 add${tempEntity.name}.add(pk, ${tempEntity.varName}PK);
\r
3641 catch (Exception e) {
\r
3642 throw processException(e);
\r
3645 FinderCacheUtil.clearCache(${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME);
\r
3650 * Sets the ${tempEntity.humanNames} associated with the ${entity.humanName}, removing and adding associations as necessary. Also notifies the appropriate model listeners and clears the mapping table finder cache.
\r
3652 * @param pk the primary key of the ${entity.humanName}
\r
3653 * @param ${tempEntity.varNames} the ${tempEntity.humanNames} to be associated with the ${entity.humanName}
\r
3654 * @throws SystemException if a system exception occurred
\r
3656 public void set${tempEntity.names}(${entity.PKClassName} pk, List<${tempEntity.packagePath}.model.${tempEntity.name}> ${tempEntity.varNames}) throws SystemException {
\r
3658 ${tempEntity.PKClassName}[] ${tempEntity.varName}PKs = new ${tempEntity.PKClassName}[${tempEntity.varNames}.size()];
\r
3660 for (int i = 0; i < ${tempEntity.varNames}.size(); i++) {
\r
3661 ${tempEntity.packagePath}.model.${tempEntity.name} ${tempEntity.varName} = ${tempEntity.varNames}.get(i);
\r
3663 ${tempEntity.varName}PKs[i] = ${tempEntity.varName}.getPrimaryKey();
\r
3666 set${tempEntity.names}(pk, ${tempEntity.varName}PKs);
\r
3668 catch (Exception e) {
\r
3669 throw processException(e);
\r
3672 FinderCacheUtil.clearCache(${entity.name}ModelImpl.MAPPING_TABLE_${stringUtil.upperCase(column.mappingTable)}_NAME);
\r
3679 <#if entity.isHierarchicalTree()>
\r
3681 * Rebuilds the ${entity.humanNames} tree for the scope using the modified pre-order tree traversal algorithm.
\r
3684 * Only call this method if the tree has become stale through operations other than normal CRUD. Under normal circumstances the tree is automatically rebuilt whenver necessary.
\r
3687 * @param ${scopeColumn.name} the ID of the scope
\r
3688 * @param force whether to force the rebuild even if the tree is not stale
\r
3690 public void rebuildTree(long ${scopeColumn.name}, boolean force) throws SystemException {
\r
3691 if (!rebuildTreeEnabled) {
\r
3695 if (force || (countOrphanTreeNodes(${scopeColumn.name}) > 0)) {
\r
3696 rebuildTree(${scopeColumn.name}, 0, 1);
\r
3698 CacheRegistryUtil.clear(${entity.name}Impl.class.getName());
\r
3699 EntityCacheUtil.clearCache(${entity.name}Impl.class.getName());
\r
3700 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
\r
3701 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
\r
3705 public void setRebuildTreeEnabled(boolean rebuildTreeEnabled) {
\r
3706 this.rebuildTreeEnabled = rebuildTreeEnabled;
\r
3709 protected long countOrphanTreeNodes(long ${scopeColumn.name}) throws SystemException {
\r
3710 Session session = null;
\r
3713 session = openSession();
\r
3715 SQLQuery q = session.createSQLQuery("SELECT COUNT(*) AS COUNT_VALUE FROM ${entity.table} WHERE ${scopeColumn.name} = ? AND (left${pkColumn.methodName} = 0 OR left${pkColumn.methodName} IS NULL OR right${pkColumn.methodName} = 0 OR right${pkColumn.methodName} IS NULL)");
\r
3717 q.addScalar(COUNT_COLUMN_NAME, com.liferay.portal.kernel.dao.orm.Type.LONG);
\r
3719 QueryPos qPos = QueryPos.getInstance(q);
\r
3721 qPos.add(${scopeColumn.name});
\r
3723 return (Long)q.uniqueResult();
\r
3725 catch (Exception e) {
\r
3726 throw processException(e);
\r
3729 closeSession(session);
\r
3733 protected void expandNoChildrenLeft${pkColumn.methodName}(long ${scopeColumn.name}, long left${pkColumn.methodName}, List<Long> children${pkColumn.methodNames}, long delta) {
\r
3734 String sql = "UPDATE ${entity.table} SET left${entity.PKDBName} = (left${entity.PKDBName} + ?) WHERE (${scopeColumn.DBName} = ?) AND (left${entity.PKDBName} > ?) AND (${entity.PKDBName} NOT IN (" + StringUtil.merge(children${pkColumn.methodNames}) + "))";
\r
3736 SqlUpdate _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(), sql, new int[] {java.sql.Types.BIGINT, java.sql.Types.BIGINT, java.sql.Types.BIGINT});
\r
3738 _sqlUpdate.update(new Object[] {delta, ${scopeColumn.name}, left${pkColumn.methodName} });
\r
3741 protected void expandNoChildrenRight${pkColumn.methodName}(long ${scopeColumn.name}, long right${pkColumn.methodName}, List<Long> children${pkColumn.methodNames}, long delta) {
\r
3742 String sql = "UPDATE ${entity.table} SET right${entity.PKDBName} = (right${entity.PKDBName} + ?) WHERE (${scopeColumn.DBName} = ?) AND (right${entity.PKDBName} > ?) AND (${entity.PKDBName} NOT IN (" + StringUtil.merge(children${pkColumn.methodNames}) + "))";
\r
3744 SqlUpdate _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(), sql, new int[] {java.sql.Types.BIGINT, java.sql.Types.BIGINT, java.sql.Types.BIGINT});
\r
3746 _sqlUpdate.update(new Object[] {delta, ${scopeColumn.name}, right${pkColumn.methodName} });
\r
3749 protected void expandTree(${entity.name} ${entity.varName}, List<Long> children${pkColumn.methodNames}) throws SystemException {
\r
3750 if (!rebuildTreeEnabled) {
\r
3754 long ${scopeColumn.name} = ${entity.varName}.get${scopeColumn.methodName}();
\r
3756 long lastRight${pkColumn.methodName} = getLastRight${pkColumn.methodName}(${scopeColumn.name}, ${entity.varName}.getParent${pkColumn.methodName}());
\r
3758 long left${pkColumn.methodName} = 2;
\r
3759 long right${pkColumn.methodName} = 3;
\r
3761 if (lastRight${pkColumn.methodName} > 0) {
\r
3762 left${pkColumn.methodName} = lastRight${pkColumn.methodName} + 1;
\r
3764 long childrenDistance = ${entity.varName}.getRight${pkColumn.methodName}() - ${entity.varName}.getLeft${pkColumn.methodName}();
\r
3766 if (childrenDistance > 1) {
\r
3767 right${pkColumn.methodName} = left${pkColumn.methodName} + childrenDistance;
\r
3769 updateChildrenTree(${scopeColumn.name}, children${pkColumn.methodNames}, left${pkColumn.methodName} - ${entity.varName}.getLeft${pkColumn.methodName}());
\r
3771 expandNoChildrenLeft${pkColumn.methodName}(${scopeColumn.name}, lastRight${pkColumn.methodName}, children${pkColumn.methodNames}, childrenDistance + 1);
\r
3772 expandNoChildrenRight${pkColumn.methodName}(${scopeColumn.name}, lastRight${pkColumn.methodName}, children${pkColumn.methodNames}, childrenDistance + 1);
\r
3775 right${pkColumn.methodName} = lastRight${pkColumn.methodName} + 2;
\r
3777 expandTreeLeft${pkColumn.methodName}.expand(${scopeColumn.name}, lastRight${pkColumn.methodName});
\r
3778 expandTreeRight${pkColumn.methodName}.expand(${scopeColumn.name}, lastRight${pkColumn.methodName});
\r
3781 CacheRegistryUtil.clear(${entity.name}Impl.class.getName());
\r
3782 EntityCacheUtil.clearCache(${entity.name}Impl.class.getName());
\r
3783 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
\r
3784 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
\r
3787 ${entity.varName}.setLeft${pkColumn.methodName}(left${pkColumn.methodName});
\r
3788 ${entity.varName}.setRight${pkColumn.methodName}(right${pkColumn.methodName});
\r
3791 protected List<Long> getChildrenTree${pkColumn.methodNames}(${entity.name} parent${entity.name}) throws SystemException {
\r
3792 Session session = null;
\r
3795 session = openSession();
\r
3797 SQLQuery q = session.createSQLQuery("SELECT ${entity.PKDBName} FROM ${entity.table} WHERE (${scopeColumn.DBName} = ?) AND (left${entity.PKDBName} BETWEEN ? AND ?)");
\r
3799 q.addScalar("${pkColumn.methodName}", com.liferay.portal.kernel.dao.orm.Type.LONG);
\r
3801 QueryPos qPos = QueryPos.getInstance(q);
\r
3803 qPos.add(parent${entity.name}.get${scopeColumn.methodName}());
\r
3804 qPos.add(parent${entity.name}.getLeft${pkColumn.methodName}() + 1);
\r
3805 qPos.add(parent${entity.name}.getRight${pkColumn.methodName}());
\r
3809 catch (Exception e) {
\r
3810 throw processException(e);
\r
3813 closeSession(session);
\r
3817 protected long getLastRight${pkColumn.methodName}(long ${scopeColumn.name}, long parent${pkColumn.methodName}) throws SystemException {
\r
3818 Session session = null;
\r
3821 session = openSession();
\r
3823 SQLQuery q = session.createSQLQuery("SELECT right${pkColumn.methodName} FROM ${entity.table} WHERE (${scopeColumn.DBName} = ?) AND (parent${pkColumn.methodName} = ?) ORDER BY right${pkColumn.methodName} DESC");
\r
3825 q.addScalar("right${pkColumn.methodName}", com.liferay.portal.kernel.dao.orm.Type.LONG);
\r
3827 QueryPos qPos = QueryPos.getInstance(q);
\r
3829 qPos.add(${scopeColumn.name});
\r
3830 qPos.add(parent${pkColumn.methodName});
\r
3832 List<Long> list = (List<Long>)QueryUtil.list(q, getDialect(), 0, 1);
\r
3834 if (list.isEmpty()) {
\r
3835 if (parent${pkColumn.methodName} > 0) {
\r
3838 ${entity.name} parent${entity.name} = findByPrimaryKey(parent${pkColumn.methodName});
\r
3840 return parent${entity.name}.getLeft${pkColumn.methodName}();
\r
3846 return list.get(0);
\r
3849 catch (Exception e) {
\r
3850 throw processException(e);
\r
3853 closeSession(session);
\r
3857 protected long rebuildTree(long ${scopeColumn.name}, long parent${pkColumn.methodName}, long left${pkColumn.methodName}) throws SystemException {
\r
3858 if (!rebuildTreeEnabled) {
\r
3862 List<Long> ${pkColumn.names} = null;
\r
3864 Session session = null;
\r
3867 session = openSession();
\r
3869 SQLQuery q = session.createSQLQuery("SELECT ${pkColumn.name} FROM ${entity.table} WHERE ${scopeColumn.name} = ? AND parent${pkColumn.methodName} = ? ORDER BY ${pkColumn.name} ASC");
\r
3871 q.addScalar("${pkColumn.name}", com.liferay.portal.kernel.dao.orm.Type.LONG);
\r
3873 QueryPos qPos = QueryPos.getInstance(q);
\r
3875 qPos.add(${scopeColumn.name});
\r
3876 qPos.add(parent${pkColumn.methodName});
\r
3878 ${pkColumn.names} = q.list();
\r
3880 catch (Exception e) {
\r
3881 throw processException(e);
\r
3884 closeSession(session);
\r
3887 long right${pkColumn.methodName} = left${pkColumn.methodName} + 1;
\r
3889 for (long ${pkColumn.name} : ${pkColumn.names}) {
\r
3890 right${pkColumn.methodName} = rebuildTree(${scopeColumn.name}, ${pkColumn.name}, right${pkColumn.methodName});
\r
3893 if (parent${pkColumn.methodName} > 0) {
\r
3894 updateTree.update(parent${pkColumn.methodName}, left${pkColumn.methodName}, right${pkColumn.methodName});
\r
3897 return right${pkColumn.methodName} + 1;
\r
3900 protected void shrinkTree(${entity.name} ${entity.varName}) {
\r
3901 if (!rebuildTreeEnabled) {
\r
3905 long ${scopeColumn.name} = ${entity.varName}.get${scopeColumn.methodName}();
\r
3907 long left${pkColumn.methodName} = ${entity.varName}.getLeft${pkColumn.methodName}();
\r
3908 long right${pkColumn.methodName} = ${entity.varName}.getRight${pkColumn.methodName}();
\r
3910 long delta = (right${pkColumn.methodName} - left${pkColumn.methodName}) + 1;
\r
3912 shrinkTreeLeft${pkColumn.methodName}.shrink(${scopeColumn.name}, right${pkColumn.methodName}, delta);
\r
3913 shrinkTreeRight${pkColumn.methodName}.shrink(${scopeColumn.name}, right${pkColumn.methodName}, delta);
\r
3915 CacheRegistryUtil.clear(${entity.name}Impl.class.getName());
\r
3916 EntityCacheUtil.clearCache(${entity.name}Impl.class.getName());
\r
3917 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
\r
3918 FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
\r
3921 protected void updateChildrenTree(long ${scopeColumn.name}, List<Long> children${pkColumn.methodNames}, long delta) {
\r
3922 String sql = "UPDATE ${entity.table} SET left${entity.PKDBName} = (left${entity.PKDBName} + ?), right${entity.PKDBName} = (right${entity.PKDBName} + ?) WHERE (${scopeColumn.DBName} = ?) AND (${entity.PKDBName} IN (" + StringUtil.merge(children${pkColumn.methodNames}) + "))";
\r
3924 SqlUpdate _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(), sql, new int[] {java.sql.Types.BIGINT, java.sql.Types.BIGINT, java.sql.Types.BIGINT});
\r
3926 _sqlUpdate.update(new Object[] {delta, delta, ${scopeColumn.name} });
\r
3931 * Initializes the ${entity.humanName} persistence.
\r
3933 public void afterPropertiesSet() {
\r
3934 String[] listenerClassNames = StringUtil.split(GetterUtil.getString(${propsUtil}.get("value.object.listener.${packagePath}.model.${entity.name}")));
\r
3936 if (listenerClassNames.length > 0) {
\r
3938 List<ModelListener<${entity.name}>> listenersList = new ArrayList<ModelListener<${entity.name}>>();
\r
3940 for (String listenerClassName : listenerClassNames) {
\r
3941 listenersList.add((ModelListener<${entity.name}>)InstanceFactory.newInstance(PortletClassLoaderUtil.getClassLoader(), listenerClassName, (Class<?>[])null, (Object[])null));
\r
3944 listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
\r
3946 catch (Exception e) {
\r
3951 <#list entity.columnList as column>
\r
3952 <#if column.isCollection() && (column.isMappingManyToMany() || column.isMappingOneToMany())>
\r
3953 <#assign tempEntity = serviceBuilder.getEntity(column.getEJBName())>
\r
3955 contains${tempEntity.name} = new Contains${tempEntity.name}();
\r
3957 <#if column.isMappingManyToMany()>
\r
3958 add${tempEntity.name} = new Add${tempEntity.name}();
\r
3959 clear${tempEntity.names} = new Clear${tempEntity.names}();
\r
3960 remove${tempEntity.name} = new Remove${tempEntity.name}();
\r
3965 <#if entity.isHierarchicalTree()>
\r
3966 expandTreeLeft${pkColumn.methodName} = new ExpandTreeLeft${pkColumn.methodName}();
\r
3967 expandTreeRight${pkColumn.methodName} = new ExpandTreeRight${pkColumn.methodName}();
\r
3968 shrinkTreeLeft${pkColumn.methodName} = new ShrinkTreeLeft${pkColumn.methodName}();
\r
3969 shrinkTreeRight${pkColumn.methodName} = new ShrinkTreeRight${pkColumn.methodName}();
\r
3970 updateTree = new UpdateTree();
\r
3974 public void destroy() {
\r
3975 EntityCacheUtil.removeCache(${entity.name}Impl.class.getName());
\r
3976 FinderCacheUtil.removeCache(FINDER_CLASS_NAME_ENTITY);
\r
3977 FinderCacheUtil.removeCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
\r
3980 <#list referenceList as tempEntity>
\r
3981 <#if tempEntity.hasColumns() && (entity.name == "Counter" || tempEntity.name != "Counter")>
\r
3982 @BeanReference(type = ${tempEntity.name}Persistence.class)
\r
3983 protected ${tempEntity.name}Persistence ${tempEntity.varName}Persistence;
\r
3987 <#list entity.columnList as column>
\r
3988 <#if column.isCollection() && (column.isMappingManyToMany() || column.isMappingOneToMany())>
\r
3989 <#assign tempEntity = serviceBuilder.getEntity(column.getEJBName())>
\r
3991 protected Contains${tempEntity.name} contains${tempEntity.name};
\r
3993 <#if column.isMappingManyToMany()>
\r
3994 protected Add${tempEntity.name} add${tempEntity.name};
\r
3995 protected Clear${tempEntity.names} clear${tempEntity.names};
\r
3996 protected Remove${tempEntity.name} remove${tempEntity.name};
\r
4001 <#list entity.columnList as column>
\r
4002 <#if column.isCollection() && (column.isMappingManyToMany() || column.isMappingOneToMany())>
\r
4003 <#assign tempEntity = serviceBuilder.getEntity(column.getEJBName())>
\r
4004 <#assign entitySqlType = serviceBuilder.getSqlType(packagePath + ".model." + entity.getName(), entity.getPKVarName(), entity.getPKClassName())>
\r
4005 <#assign tempEntitySqlType = serviceBuilder.getSqlType(tempEntity.getPackagePath() + ".model." + entity.getName(), tempEntity.getPKVarName(), tempEntity.getPKClassName())>
\r
4007 <#if entity.hasPrimitivePK()>
\r
4008 <#assign pkVarNameWrapper = "new " + serviceBuilder.getPrimitiveObj(entity.getPKClassName()) + "("+ entity.getPKVarName() + ")">
\r
4010 <#assign pkVarNameWrapper = entity.getPKVarName()>
\r
4013 <#if tempEntity.hasPrimitivePK()>
\r
4014 <#assign tempEntityPkVarNameWrapper = "new " + serviceBuilder.getPrimitiveObj(tempEntity.getPKClassName()) + "("+ tempEntity.getPKVarName() + ")">
\r
4016 <#assign tempEntityPkVarNameWrapper = tempEntity.getPKVarName()>
\r
4019 protected class Contains${tempEntity.name} {
\r
4021 protected Contains${tempEntity.name}() {
\r
4022 _mappingSqlQuery = MappingSqlQueryFactoryUtil.getMappingSqlQuery(getDataSource(), _SQL_CONTAINS${tempEntity.name?upper_case}, new int[] {java.sql.Types.${entitySqlType}, java.sql.Types.${tempEntitySqlType}}, RowMapper.COUNT);
\r
4025 protected boolean contains(${entity.PKClassName} ${entity.PKVarName}, ${tempEntity.PKClassName} ${tempEntity.PKVarName}) {
\r
4026 List<Integer> results = _mappingSqlQuery.execute(new Object[] {${pkVarNameWrapper}, ${tempEntityPkVarNameWrapper}});
\r
4028 if (results.size()> 0) {
\r
4029 Integer count = results.get(0);
\r
4031 if (count.intValue()> 0) {
\r
4039 private MappingSqlQuery<Integer> _mappingSqlQuery;
\r
4043 <#if column.isMappingManyToMany()>
\r
4044 protected class Add${tempEntity.name} {
\r
4046 protected Add${tempEntity.name}() {
\r
4047 _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(), "INSERT INTO ${column.mappingTable} (${entity.PKVarName}, ${tempEntity.PKVarName}) VALUES (?, ?)", new int[] {java.sql.Types.${entitySqlType}, java.sql.Types.${tempEntitySqlType}});
\r
4050 protected void add(${entity.PKClassName} ${entity.PKVarName}, ${tempEntity.PKClassName} ${tempEntity.PKVarName}) throws SystemException {
\r
4051 if (!contains${tempEntity.name}.contains(${entity.PKVarName}, ${tempEntity.PKVarName})) {
\r
4052 ModelListener<${tempEntity.packagePath}.model.${tempEntity.name}>[] ${tempEntity.varName}Listeners = ${tempEntity.varName}Persistence.getListeners();
\r
4054 for (ModelListener<${entity.name}> listener : listeners) {
\r
4055 listener.onBeforeAddAssociation(${entity.PKVarName}, ${tempEntity.packagePath}.model.${tempEntity.name}.class.getName(), ${tempEntity.PKVarName});
\r
4058 for (ModelListener<${tempEntity.packagePath}.model.${tempEntity.name}> listener : ${tempEntity.varName}Listeners) {
\r
4059 listener.onBeforeAddAssociation(${tempEntity.PKVarName}, ${entity.name}.class.getName(), ${entity.PKVarName});
\r
4062 _sqlUpdate.update(new Object[] {${pkVarNameWrapper}, ${tempEntityPkVarNameWrapper}});
\r
4064 for (ModelListener<${entity.name}> listener : listeners) {
\r
4065 listener.onAfterAddAssociation(${entity.PKVarName}, ${tempEntity.packagePath}.model.${tempEntity.name}.class.getName(), ${tempEntity.PKVarName});
\r
4068 for (ModelListener<${tempEntity.packagePath}.model.${tempEntity.name}> listener : ${tempEntity.varName}Listeners) {
\r
4069 listener.onAfterAddAssociation(${tempEntity.PKVarName}, ${entity.name}.class.getName(), ${entity.PKVarName});
\r
4074 private SqlUpdate _sqlUpdate;
\r
4078 protected class Clear${tempEntity.names} {
\r
4080 protected Clear${tempEntity.names}() {
\r
4081 _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(), "DELETE FROM ${column.mappingTable} WHERE ${entity.PKVarName} = ?", new int[] {java.sql.Types.${entitySqlType}});
\r
4084 protected void clear(${entity.PKClassName} ${entity.PKVarName}) throws SystemException {
\r
4085 ModelListener<${tempEntity.packagePath}.model.${tempEntity.name}>[] ${tempEntity.varName}Listeners = ${tempEntity.varName}Persistence.getListeners();
\r
4087 List<${tempEntity.packagePath}.model.${tempEntity.name}> ${tempEntity.varNames} = null;
\r
4089 if ((listeners.length > 0) || (${tempEntity.varName}Listeners.length > 0)) {
\r
4090 ${tempEntity.varNames} = get${tempEntity.names}(${entity.PKVarName});
\r
4092 for (${tempEntity.packagePath}.model.${tempEntity.name} ${tempEntity.varName} : ${tempEntity.varNames}) {
\r
4093 for (ModelListener<${entity.name}> listener : listeners) {
\r
4094 listener.onBeforeRemoveAssociation(${entity.PKVarName}, ${tempEntity.packagePath}.model.${tempEntity.name}.class.getName(), ${tempEntity.varName}.getPrimaryKey());
\r
4097 for (ModelListener<${tempEntity.packagePath}.model.${tempEntity.name}> listener : ${tempEntity.varName}Listeners) {
\r
4098 listener.onBeforeRemoveAssociation(${tempEntity.varName}.getPrimaryKey(), ${entity.name}.class.getName(), ${entity.PKVarName});
\r
4103 _sqlUpdate.update(new Object[] {${pkVarNameWrapper}});
\r
4105 if ((listeners.length > 0) || (${tempEntity.varName}Listeners.length > 0)) {
\r
4106 for (${tempEntity.packagePath}.model.${tempEntity.name} ${tempEntity.varName} : ${tempEntity.varNames}) {
\r
4107 for (ModelListener<${entity.name}> listener : listeners) {
\r
4108 listener.onAfterRemoveAssociation(${entity.PKVarName}, ${tempEntity.packagePath}.model.${tempEntity.name}.class.getName(), ${tempEntity.varName}.getPrimaryKey());
\r
4111 for (ModelListener<${tempEntity.packagePath}.model.${tempEntity.name}> listener : ${tempEntity.varName}Listeners) {
\r
4112 listener.onAfterRemoveAssociation(${tempEntity.varName}.getPrimaryKey(), ${entity.name}.class.getName(), ${entity.PKVarName});
\r
4118 private SqlUpdate _sqlUpdate;
\r
4122 protected class Remove${tempEntity.name} {
\r
4124 protected Remove${tempEntity.name}() {
\r
4125 _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(), "DELETE FROM ${column.mappingTable} WHERE ${entity.PKVarName} = ? AND ${tempEntity.PKVarName} = ?", new int[] {java.sql.Types.${entitySqlType}, java.sql.Types.${tempEntitySqlType}});
\r
4128 protected void remove(${entity.PKClassName} ${entity.PKVarName}, ${tempEntity.PKClassName} ${tempEntity.PKVarName}) throws SystemException {
\r
4129 if (contains${tempEntity.name}.contains(${entity.PKVarName}, ${tempEntity.PKVarName})) {
\r
4130 ModelListener<${tempEntity.packagePath}.model.${tempEntity.name}>[] ${tempEntity.varName}Listeners = ${tempEntity.varName}Persistence.getListeners();
\r
4132 for (ModelListener<${entity.name}> listener : listeners) {
\r
4133 listener.onBeforeRemoveAssociation(${entity.PKVarName}, ${tempEntity.packagePath}.model.${tempEntity.name}.class.getName(), ${tempEntity.PKVarName});
\r
4136 for (ModelListener<${tempEntity.packagePath}.model.${tempEntity.name}> listener : ${tempEntity.varName}Listeners) {
\r
4137 listener.onBeforeRemoveAssociation(${tempEntity.PKVarName}, ${entity.name}.class.getName(), ${entity.PKVarName});
\r
4140 _sqlUpdate.update(new Object[] {${pkVarNameWrapper}, ${tempEntityPkVarNameWrapper}});
\r
4142 for (ModelListener<${entity.name}> listener : listeners) {
\r
4143 listener.onAfterRemoveAssociation(${entity.PKVarName}, ${tempEntity.packagePath}.model.${tempEntity.name}.class.getName(), ${tempEntity.PKVarName});
\r
4146 for (ModelListener<${tempEntity.packagePath}.model.${tempEntity.name}> listener : ${tempEntity.varName}Listeners) {
\r
4147 listener.onAfterRemoveAssociation(${tempEntity.PKVarName}, ${entity.name}.class.getName(), ${entity.PKVarName});
\r
4152 private SqlUpdate _sqlUpdate;
\r
4159 <#if entity.isHierarchicalTree()>
\r
4160 protected boolean rebuildTreeEnabled = true;
\r
4161 protected ExpandTreeLeft${pkColumn.methodName} expandTreeLeft${pkColumn.methodName};
\r
4162 protected ExpandTreeRight${pkColumn.methodName} expandTreeRight${pkColumn.methodName};
\r
4163 protected ShrinkTreeLeft${pkColumn.methodName} shrinkTreeLeft${pkColumn.methodName};
\r
4164 protected ShrinkTreeRight${pkColumn.methodName} shrinkTreeRight${pkColumn.methodName};
\r
4165 protected UpdateTree updateTree;
\r
4167 protected class ExpandTreeLeft${pkColumn.methodName} {
\r
4169 protected ExpandTreeLeft${pkColumn.methodName}() {
\r
4170 _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(), "UPDATE ${entity.table} SET left${pkColumn.methodName} = (left${pkColumn.methodName} + 2) WHERE (${scopeColumn.DBName} = ?) AND (left${pkColumn.methodName} > ?)", new int[] {java.sql.Types.${serviceBuilder.getSqlType("long")}, java.sql.Types.${serviceBuilder.getSqlType("long")}});
\r
4173 protected void expand(long ${scopeColumn.name}, long left${pkColumn.methodName}) {
\r
4174 _sqlUpdate.update(new Object[] {${scopeColumn.name}, left${pkColumn.methodName}});
\r
4177 private SqlUpdate _sqlUpdate;
\r
4181 protected class ExpandTreeRight${pkColumn.methodName} {
\r
4183 protected ExpandTreeRight${pkColumn.methodName}() {
\r
4184 _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(), "UPDATE ${entity.table} SET right${pkColumn.methodName} = (right${pkColumn.methodName} + 2) WHERE (${scopeColumn.DBName} = ?) AND (right${pkColumn.methodName} > ?)", new int[] {java.sql.Types.${serviceBuilder.getSqlType("long")}, java.sql.Types.${serviceBuilder.getSqlType("long")}});
\r
4187 protected void expand(long ${scopeColumn.name}, long right${pkColumn.methodName}) {
\r
4188 _sqlUpdate.update(new Object[] {${scopeColumn.name}, right${pkColumn.methodName}});
\r
4191 private SqlUpdate _sqlUpdate;
\r
4195 protected class ShrinkTreeLeft${pkColumn.methodName} {
\r
4197 protected ShrinkTreeLeft${pkColumn.methodName}() {
\r
4198 _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(), "UPDATE ${entity.table} SET left${pkColumn.methodName} = (left${pkColumn.methodName} - ?) WHERE (${scopeColumn.DBName} = ?) AND (left${pkColumn.methodName} > ?)", new int[] {java.sql.Types.${serviceBuilder.getSqlType("long")}, java.sql.Types.${serviceBuilder.getSqlType("long")}, java.sql.Types.${serviceBuilder.getSqlType("long")}});
\r
4201 protected void shrink(long ${scopeColumn.name}, long left${pkColumn.methodName}, long delta) {
\r
4202 _sqlUpdate.update(new Object[] {delta, ${scopeColumn.name}, left${pkColumn.methodName}});
\r
4205 private SqlUpdate _sqlUpdate;
\r
4209 protected class ShrinkTreeRight${pkColumn.methodName} {
\r
4211 protected ShrinkTreeRight${pkColumn.methodName}() {
\r
4212 _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(), "UPDATE ${entity.table} SET right${pkColumn.methodName} = (right${pkColumn.methodName} - ?) WHERE (${scopeColumn.DBName} = ?) AND (right${pkColumn.methodName} > ?)", new int[] {java.sql.Types.${serviceBuilder.getSqlType("long")}, java.sql.Types.${serviceBuilder.getSqlType("long")}, java.sql.Types.${serviceBuilder.getSqlType("long")}});
\r
4215 protected void shrink(long ${scopeColumn.name}, long right${pkColumn.methodName}, long delta) {
\r
4216 _sqlUpdate.update(new Object[] {delta, ${scopeColumn.name}, right${pkColumn.methodName}});
\r
4219 private SqlUpdate _sqlUpdate;
\r
4223 protected class UpdateTree {
\r
4225 protected UpdateTree() {
\r
4226 _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(), "UPDATE ${entity.table} SET left${pkColumn.methodName} = ?, right${pkColumn.methodName} = ? WHERE ${pkColumn.name} = ?", new int[] {java.sql.Types.${serviceBuilder.getSqlType("long")}, java.sql.Types.${serviceBuilder.getSqlType("long")}, java.sql.Types.${serviceBuilder.getSqlType("long")}});
\r
4229 protected void update(long ${pkColumn.name}, long left${pkColumn.methodName}, long right${pkColumn.methodName}) {
\r
4230 _sqlUpdate.update(new Object[] {left${pkColumn.methodName}, right${pkColumn.methodName}, ${pkColumn.name}});
\r
4233 private SqlUpdate _sqlUpdate;
\r
4238 private static final String _SQL_SELECT_${entity.alias?upper_case} = "SELECT ${entity.alias} FROM ${entity.name} ${entity.alias}";
\r
4240 <#if entity.getFinderList()?size != 0>
\r
4241 private static final String _SQL_SELECT_${entity.alias?upper_case}_WHERE = "SELECT ${entity.alias} FROM ${entity.name} ${entity.alias} WHERE ";
\r
4244 private static final String _SQL_COUNT_${entity.alias?upper_case} = "SELECT COUNT(${entity.alias}) FROM ${entity.name} ${entity.alias}";
\r
4246 <#if entity.getFinderList()?size != 0>
\r
4247 private static final String _SQL_COUNT_${entity.alias?upper_case}_WHERE = "SELECT COUNT(${entity.alias}) FROM ${entity.name} ${entity.alias} WHERE ";
\r
4250 <#list entity.columnList as column>
\r
4251 <#if column.isCollection()>
\r
4252 <#assign tempEntity = serviceBuilder.getEntity(column.getEJBName())>
\r
4254 <#if column.isMappingManyToMany()>
\r
4255 private static final String _SQL_GET${tempEntity.names?upper_case} = "SELECT {${tempEntity.table}.*} FROM ${tempEntity.table} INNER JOIN ${column.mappingTable} ON (${column.mappingTable}.${tempEntity.PKDBName} = ${tempEntity.table}.${tempEntity.PKDBName}) WHERE (${column.mappingTable}.${entity.PKDBName} = ?)";
\r
4257 private static final String _SQL_GET${tempEntity.names?upper_case}SIZE = "SELECT COUNT(*) AS COUNT_VALUE FROM ${column.mappingTable} WHERE ${entity.PKDBName} = ?";
\r
4259 private static final String _SQL_CONTAINS${tempEntity.name?upper_case} = "SELECT COUNT(*) AS COUNT_VALUE FROM ${column.mappingTable} WHERE ${entity.PKDBName} = ? AND ${tempEntity.PKDBName} = ?";
\r
4260 <#elseif column.isMappingOneToMany()>
\r
4261 private static final String _SQL_GET${tempEntity.names?upper_case} = "SELECT {${tempEntity.table}.*} FROM ${tempEntity.table} INNER JOIN ${entity.table} ON (${entity.table}.${entity.PKDBName} = ${tempEntity.table}.${entity.PKDBName}) WHERE (${entity.table}.${entity.PKDBName} = ?)";
\r
4263 private static final String _SQL_GET${tempEntity.names?upper_case}SIZE = "SELECT COUNT(*) AS COUNT_VALUE FROM ${tempEntity.table} WHERE ${entity.PKDBName} = ?";
\r
4265 private static final String _SQL_CONTAINS${tempEntity.name?upper_case} = "SELECT COUNT(*) AS COUNT_VALUE FROM ${tempEntity.table} WHERE ${entity.PKDBName} = ? AND ${tempEntity.PKDBName} = ?";
\r
4270 <#list entity.getFinderList() as finder>
\r
4271 <#assign finderColsList = finder.getColumns()>
\r
4273 <#list finderColsList as finderCol>
\r
4274 <#assign finderColConjunction = "">
\r
4276 <#if finderCol_has_next>
\r
4277 <#assign finderColConjunction = " AND ">
\r
4278 <#elseif finder.where?? && validator.isNotNull(finder.getWhere())>
\r
4279 <#assign finderColConjunction = " AND " + finder.where>
\r
4282 <#if !finderCol.isPrimitiveType()>
\r
4283 private static final String _FINDER_COLUMN_${finder.name?upper_case}_${finderCol.name?upper_case}_1 =
\r
4285 <#if finderCol.comparator == "=">
\r
4286 "${entity.alias}<#if entity.hasCompoundPK() && finderCol.isPrimary()>.id</#if>.${finderCol.name} IS NULL${finderColConjunction}"
\r
4287 <#elseif finderCol.comparator == "<>" || finderCol.comparator = "!=">
\r
4288 "${entity.alias}<#if entity.hasCompoundPK() && finderCol.isPrimary()>.id</#if>.${finderCol.name} IS NOT NULL${finderColConjunction}"
\r
4290 "${entity.alias}<#if entity.hasCompoundPK() && finderCol.isPrimary()>.id</#if>.${finderCol.name} ${finderCol.comparator} NULL${finderColConjunction}"
\r
4296 <#if finderCol.type == "String" && !finderCol.isCaseSensitive()>
\r
4297 <#if entity.hasCompoundPK() && finderCol.isPrimary()>
\r
4298 <#assign finderColExpression = "lower(" + entity.alias + ".id." + finderCol.name + ") " + finderCol.comparator + " lower(CAST_TEXT(?))">
\r
4300 <#assign finderColExpression = "lower(" + entity.alias + "." + finderCol.name + ") " + finderCol.comparator + " lower(CAST_TEXT(?))">
\r
4303 <#if entity.hasCompoundPK() && finderCol.isPrimary()>
\r
4304 <#assign finderColExpression = entity.alias + ".id." + finderCol.name + " " + finderCol.comparator + " ?">
\r
4306 <#assign finderColExpression = entity.alias + "." + finderCol.name + " " + finderCol.comparator + " ?">
\r
4310 private static final String _FINDER_COLUMN_${finder.name?upper_case}_${finderCol.name?upper_case}_2 = "${finderColExpression}${finderColConjunction}";
\r
4312 <#if finderCol.type == "String">
\r
4313 private static final String _FINDER_COLUMN_${finder.name?upper_case}_${finderCol.name?upper_case}_3 = "(${entity.alias}<#if entity.hasCompoundPK() && finderCol.isPrimary()>.id</#if>.${finderCol.name} IS NULL OR ${finderColExpression})${finderColConjunction}";
\r
4316 <#if finder.hasArrayableOperator()>
\r
4317 <#if !finderCol.isPrimitiveType()>
\r
4318 private static final String _FINDER_COLUMN_${finder.name?upper_case}_${finderCol.name?upper_case}_4 = "(" + _removeConjunction(_FINDER_COLUMN_${finder.name?upper_case}_${finderCol.name?upper_case}_1) + ")";
\r
4321 private static final String _FINDER_COLUMN_${finder.name?upper_case}_${finderCol.name?upper_case}_5 = "(" + _removeConjunction(_FINDER_COLUMN_${finder.name?upper_case}_${finderCol.name?upper_case}_2) + ")";
\r
4323 <#if finderCol.type == "String">
\r
4324 private static final String _FINDER_COLUMN_${finder.name?upper_case}_${finderCol.name?upper_case}_6 = "(" + _removeConjunction(_FINDER_COLUMN_${finder.name?upper_case}_${finderCol.name?upper_case}_3) + ")";
\r
4330 <#if entity.hasArrayableOperator()>
\r
4331 private static String _removeConjunction(String sql) {
\r
4332 int pos = sql.indexOf(" AND ");
\r
4335 sql = sql.substring(0, pos);
\r
4342 <#if entity.isPermissionCheckEnabled()>
\r
4343 private static final String _FILTER_ENTITY_TABLE_FILTER_PK_COLUMN = "${entity.alias}.${entity.filterPKColumn.DBName}";
\r
4345 <#if entity.isPermissionedModel()>
\r
4346 <#if entity.hasColumn("userId") >
\r
4347 private static final String _FILTER_ENTITY_TABLE_FILTER_USERID_COLUMN = "${entity.alias}.userId";
\r
4349 private static final String _FILTER_ENTITY_TABLE_FILTER_USERID_COLUMN = null;
\r
4352 private static final String _FILTER_SQL_SELECT_${entity.alias?upper_case}_WHERE = "SELECT DISTINCT {${entity.alias}.*} FROM ${entity.table} ${entity.alias} WHERE ";
\r
4354 private static final String _FILTER_SQL_SELECT_${entity.alias?upper_case}_NO_INLINE_DISTINCT_WHERE_1 = "SELECT {${entity.table}.*} FROM (SELECT DISTINCT ${entity.alias}.${entity.PKDBName} FROM ${entity.table} ${entity.alias} WHERE ";
\r
4356 private static final String _FILTER_SQL_SELECT_${entity.alias?upper_case}_NO_INLINE_DISTINCT_WHERE_2 = ") TEMP_TABLE INNER JOIN ${entity.table} ON TEMP_TABLE.${entity.PKDBName} = ${entity.table}.${entity.PKDBName}";
\r
4358 private static final String _FILTER_SQL_COUNT_${entity.alias?upper_case}_WHERE = "SELECT COUNT(DISTINCT ${entity.alias}.${entity.PKDBName}) AS COUNT_VALUE FROM ${entity.table} ${entity.alias} WHERE ";
\r
4360 private static final String _FILTER_ENTITY_ALIAS = "${entity.alias}";
\r
4362 private static final String _FILTER_ENTITY_TABLE = "${entity.table}";
\r
4366 private static final String _ORDER_BY_ENTITY_ALIAS = "${entity.alias}.";
\r
4368 <#if entity.isPermissionCheckEnabled() && !entity.isPermissionedModel()>
\r
4369 private static final String _ORDER_BY_ENTITY_TABLE = "${entity.table}.";
\r
4372 private static final String _NO_SUCH_ENTITY_WITH_PRIMARY_KEY = "No ${entity.name} exists with the primary key ";
\r
4374 <#if entity.getFinderList()?size != 0>
\r
4375 private static final String _NO_SUCH_ENTITY_WITH_KEY = "No ${entity.name} exists with the key {";
\r
4378 private static final boolean _HIBERNATE_CACHE_USE_SECOND_LEVEL_CACHE = <#if pluginName != "">GetterUtil.getBoolean(PropsUtil.get(PropsKeys.HIBERNATE_CACHE_USE_SECOND_LEVEL_CACHE))<#else>com.liferay.portal.util.PropsValues.HIBERNATE_CACHE_USE_SECOND_LEVEL_CACHE</#if>;
\r
4380 private static Log _log = LogFactoryUtil.getLog(${entity.name}PersistenceImpl.class);
\r
4382 private static ${entity.name} _null${entity.name} = new ${entity.name}Impl() {
\r
4385 public Object clone() {
\r
4390 public CacheModel<${entity.name}> toCacheModel() {
\r
4391 return _null${entity.name}CacheModel;
\r
4396 private static CacheModel<${entity.name}> _null${entity.name}CacheModel = new CacheModel<${entity.name}>() {
\r
4397 public ${entity.name} toEntityModel() {
\r
4398 return _null${entity.name};
\r