001
014
015 package com.liferay.portlet.journal.service.persistence;
016
017 import com.liferay.portal.kernel.dao.orm.Criterion;
018 import com.liferay.portal.kernel.dao.orm.Disjunction;
019 import com.liferay.portal.kernel.dao.orm.DynamicQuery;
020 import com.liferay.portal.kernel.dao.orm.Projection;
021 import com.liferay.portal.kernel.dao.orm.ProjectionFactoryUtil;
022 import com.liferay.portal.kernel.dao.orm.Property;
023 import com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil;
024 import com.liferay.portal.kernel.dao.orm.RestrictionsFactoryUtil;
025 import com.liferay.portal.kernel.exception.PortalException;
026 import com.liferay.portal.kernel.exception.SystemException;
027 import com.liferay.portal.kernel.lar.ExportImportHelperUtil;
028 import com.liferay.portal.kernel.lar.ManifestSummary;
029 import com.liferay.portal.kernel.lar.PortletDataContext;
030 import com.liferay.portal.kernel.lar.StagedModelDataHandler;
031 import com.liferay.portal.kernel.lar.StagedModelDataHandlerRegistryUtil;
032 import com.liferay.portal.kernel.lar.StagedModelDataHandlerUtil;
033 import com.liferay.portal.kernel.lar.StagedModelType;
034 import com.liferay.portal.util.PortalUtil;
035
036 import com.liferay.portlet.journal.model.JournalArticle;
037
038
042 public class JournalArticleExportActionableDynamicQuery
043 extends JournalArticleActionableDynamicQuery {
044 public JournalArticleExportActionableDynamicQuery(
045 PortletDataContext portletDataContext) throws SystemException {
046 _portletDataContext = portletDataContext;
047
048 setCompanyId(_portletDataContext.getCompanyId());
049
050 setGroupId(_portletDataContext.getScopeGroupId());
051 }
052
053 @Override
054 public long performCount() throws PortalException, SystemException {
055 ManifestSummary manifestSummary = _portletDataContext.getManifestSummary();
056
057 StagedModelType stagedModelType = getStagedModelType();
058
059 long modelAdditionCount = super.performCount();
060
061 manifestSummary.addModelAdditionCount(stagedModelType.toString(),
062 modelAdditionCount);
063
064 long modelDeletionCount = ExportImportHelperUtil.getModelDeletionCount(_portletDataContext,
065 stagedModelType);
066
067 manifestSummary.addModelDeletionCount(stagedModelType.toString(),
068 modelDeletionCount);
069
070 return modelAdditionCount;
071 }
072
073 @Override
074 protected void addCriteria(DynamicQuery dynamicQuery) {
075 Criterion modifiedDateCriterion = _portletDataContext.getDateRangeCriteria(
076 "modifiedDate");
077 Criterion statusDateCriterion = _portletDataContext.getDateRangeCriteria(
078 "statusDate");
079
080 if ((modifiedDateCriterion != null) && (statusDateCriterion != null)) {
081 Disjunction disjunction = RestrictionsFactoryUtil.disjunction();
082
083 disjunction.add(modifiedDateCriterion);
084 disjunction.add(statusDateCriterion);
085
086 dynamicQuery.add(disjunction);
087 }
088
089 if (getStagedModelType().getReferrerClassNameId() >= 0) {
090 Property classNameIdProperty = PropertyFactoryUtil.forName(
091 "classNameId");
092
093 dynamicQuery.add(classNameIdProperty.eq(getStagedModelType()
094 .getReferrerClassNameId()));
095 }
096
097 StagedModelDataHandler<?> stagedModelDataHandler = StagedModelDataHandlerRegistryUtil.getStagedModelDataHandler(JournalArticle.class.getName());
098
099 Property workflowStatusProperty = PropertyFactoryUtil.forName("status");
100
101 dynamicQuery.add(workflowStatusProperty.in(
102 stagedModelDataHandler.getExportableStatuses()));
103 }
104
105 @Override
106 protected Projection getCountProjection() {
107 return ProjectionFactoryUtil.countDistinct("resourcePrimKey");
108 }
109
110 protected StagedModelType getStagedModelType() {
111 return new StagedModelType(PortalUtil.getClassNameId(
112 JournalArticle.class.getName()));
113 }
114
115 @Override
116 @SuppressWarnings("unused")
117 protected void performAction(Object object)
118 throws PortalException, SystemException {
119 JournalArticle stagedModel = (JournalArticle)object;
120
121 StagedModelDataHandlerUtil.exportStagedModel(_portletDataContext,
122 stagedModel);
123 }
124
125 private PortletDataContext _portletDataContext;
126 }