Example usage for com.liferay.portal.kernel.dao.orm ExportActionableDynamicQuery.AddCriteriaMethod addCriteria

List of usage examples for com.liferay.portal.kernel.dao.orm ExportActionableDynamicQuery.AddCriteriaMethod addCriteria

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.dao.orm ExportActionableDynamicQuery.AddCriteriaMethod addCriteria.

Prototype

protected void addCriteria(DynamicQuery dynamicQuery) 

Source Link

Usage

From source file:com.liferay.journal.exportimport.data.handler.JournalPortletDataHandler.java

License:Open Source License

protected ActionableDynamicQuery getArticleActionableDynamicQuery(final PortletDataContext portletDataContext) {

    ExportActionableDynamicQuery exportActionableDynamicQuery = _journalArticleLocalService
            .getExportActionableDynamicQuery(portletDataContext);

    final ExportActionableDynamicQuery.AddCriteriaMethod addCriteriaMethod = exportActionableDynamicQuery
            .getAddCriteriaMethod();// ww  w. j  a v  a  2  s.  c o m

    exportActionableDynamicQuery.setAddCriteriaMethod(new ActionableDynamicQuery.AddCriteriaMethod() {

        @Override
        public void addCriteria(DynamicQuery dynamicQuery) {
            addCriteriaMethod.addCriteria(dynamicQuery);

            if (portletDataContext.getBooleanParameter(NAMESPACE, "version-history")) {

                return;
            }

            Class<?> clazz = getClass();

            DynamicQuery versionArticleDynamicQuery = DynamicQueryFactoryUtil.forClass(JournalArticle.class,
                    "versionArticle", clazz.getClassLoader());

            versionArticleDynamicQuery.setProjection(ProjectionFactoryUtil
                    .alias(ProjectionFactoryUtil.max("versionArticle.version"), "versionArticle.version"));

            // We need to use the "this" default alias to make sure the
            // database engine handles this subquery as a correlated
            // subquery

            versionArticleDynamicQuery.add(RestrictionsFactoryUtil.eqProperty("this.resourcePrimKey",
                    "versionArticle.resourcePrimKey"));

            Property workflowStatusProperty = PropertyFactoryUtil.forName("status");

            versionArticleDynamicQuery.add(
                    workflowStatusProperty.in(_journalArticleStagedModelDataHandler.getExportableStatuses()));

            Property versionProperty = PropertyFactoryUtil.forName("version");

            dynamicQuery.add(versionProperty.eq(versionArticleDynamicQuery));
        }

    });

    exportActionableDynamicQuery.setStagedModelType(new StagedModelType(JournalArticle.class.getName()));

    return exportActionableDynamicQuery;
}