001
014
015 package com.liferay.portlet.polls.lar;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.lar.BaseStagedModelDataHandler;
020 import com.liferay.portal.kernel.lar.ExportImportPathUtil;
021 import com.liferay.portal.kernel.lar.PortletDataContext;
022 import com.liferay.portal.kernel.util.CalendarFactoryUtil;
023 import com.liferay.portal.kernel.xml.Element;
024 import com.liferay.portal.service.ServiceContext;
025 import com.liferay.portlet.polls.model.PollsQuestion;
026 import com.liferay.portlet.polls.service.PollsQuestionLocalServiceUtil;
027
028 import java.util.Calendar;
029 import java.util.Date;
030 import java.util.Map;
031
032
036 public class PollsQuestionStagedModelDataHandler
037 extends BaseStagedModelDataHandler<PollsQuestion> {
038
039 public static final String[] CLASS_NAMES = {PollsQuestion.class.getName()};
040
041 @Override
042 public void deleteStagedModel(
043 String uuid, long groupId, String className, String extraData)
044 throws PortalException, SystemException {
045
046 PollsQuestion question =
047 PollsQuestionLocalServiceUtil.fetchPollsQuestionByUuidAndGroupId(
048 uuid, groupId);
049
050 if (question != null) {
051 PollsQuestionLocalServiceUtil.deleteQuestion(question);
052 }
053 }
054
055 @Override
056 public String[] getClassNames() {
057 return CLASS_NAMES;
058 }
059
060 @Override
061 public String getDisplayName(PollsQuestion question) {
062 return question.getTitle();
063 }
064
065 @Override
066 protected void doExportStagedModel(
067 PortletDataContext portletDataContext, PollsQuestion question)
068 throws Exception {
069
070 Element questionElement = portletDataContext.getExportDataElement(
071 question);
072
073 portletDataContext.addClassedModel(
074 questionElement, ExportImportPathUtil.getModelPath(question),
075 question);
076 }
077
078 @Override
079 protected void doImportCompanyStagedModel(
080 PortletDataContext portletDataContext, String uuid, long questionId)
081 throws Exception {
082
083 PollsQuestion existingQuestion =
084 PollsQuestionLocalServiceUtil.fetchPollsQuestionByUuidAndGroupId(
085 uuid, portletDataContext.getCompanyGroupId());
086
087 Map<Long, Long> questionIds =
088 (Map<Long, Long>)portletDataContext.getNewPrimaryKeysMap(
089 PollsQuestion.class);
090
091 questionIds.put(questionId, existingQuestion.getQuestionId());
092 }
093
094 @Override
095 protected void doImportStagedModel(
096 PortletDataContext portletDataContext, PollsQuestion question)
097 throws Exception {
098
099 long userId = portletDataContext.getUserId(question.getUserUuid());
100
101 int expirationMonth = 0;
102 int expirationDay = 0;
103 int expirationYear = 0;
104 int expirationHour = 0;
105 int expirationMinute = 0;
106 boolean neverExpire = true;
107
108 Date expirationDate = question.getExpirationDate();
109
110 if (expirationDate != null) {
111 Calendar expirationCal = CalendarFactoryUtil.getCalendar();
112
113 expirationCal.setTime(expirationDate);
114
115 expirationMonth = expirationCal.get(Calendar.MONTH);
116 expirationDay = expirationCal.get(Calendar.DATE);
117 expirationYear = expirationCal.get(Calendar.YEAR);
118 expirationHour = expirationCal.get(Calendar.HOUR);
119 expirationMinute = expirationCal.get(Calendar.MINUTE);
120 neverExpire = false;
121
122 if (expirationCal.get(Calendar.AM_PM) == Calendar.PM) {
123 expirationHour += 12;
124 }
125 }
126
127 ServiceContext serviceContext = portletDataContext.createServiceContext(
128 question);
129
130 PollsQuestion importedQuestion = null;
131
132 if (portletDataContext.isDataStrategyMirror()) {
133 PollsQuestion existingQuestion =
134 PollsQuestionLocalServiceUtil.
135 fetchPollsQuestionByUuidAndGroupId(
136 question.getUuid(),
137 portletDataContext.getScopeGroupId());
138
139 if (existingQuestion == null) {
140 serviceContext.setUuid(question.getUuid());
141
142 importedQuestion = PollsQuestionLocalServiceUtil.addQuestion(
143 userId, question.getTitleMap(),
144 question.getDescriptionMap(), expirationMonth,
145 expirationDay, expirationYear, expirationHour,
146 expirationMinute, neverExpire, null, serviceContext);
147 }
148 else {
149 importedQuestion = PollsQuestionLocalServiceUtil.updateQuestion(
150 userId, existingQuestion.getQuestionId(),
151 question.getTitleMap(), question.getDescriptionMap(),
152 expirationMonth, expirationDay, expirationYear,
153 expirationHour, expirationMinute, neverExpire, null,
154 serviceContext);
155 }
156 }
157 else {
158 importedQuestion = PollsQuestionLocalServiceUtil.addQuestion(
159 userId, question.getTitleMap(), question.getDescriptionMap(),
160 expirationMonth, expirationDay, expirationYear, expirationHour,
161 expirationMinute, neverExpire, null, serviceContext);
162 }
163
164 portletDataContext.importClassedModel(question, importedQuestion);
165 }
166
167 @Override
168 protected boolean validateMissingReference(
169 String uuid, long companyId, long groupId)
170 throws Exception {
171
172 PollsQuestion question =
173 PollsQuestionLocalServiceUtil.fetchPollsQuestionByUuidAndGroupId(
174 uuid, groupId);
175
176 if (question == null) {
177 return false;
178 }
179
180 return true;
181 }
182
183 }