001
014
015 package com.liferay.portlet.polls.lar;
016
017 import com.liferay.portal.kernel.lar.BaseStagedModelDataHandler;
018 import com.liferay.portal.kernel.lar.ExportImportPathUtil;
019 import com.liferay.portal.kernel.lar.PortletDataContext;
020 import com.liferay.portal.kernel.util.CalendarFactoryUtil;
021 import com.liferay.portal.kernel.xml.Element;
022 import com.liferay.portal.service.ServiceContext;
023 import com.liferay.portlet.polls.model.PollsQuestion;
024 import com.liferay.portlet.polls.service.PollsQuestionLocalServiceUtil;
025 import com.liferay.portlet.polls.service.persistence.PollsQuestionUtil;
026
027 import java.util.Calendar;
028 import java.util.Date;
029
030
033 public class PollsQuestionStagedModelDataHandler
034 extends BaseStagedModelDataHandler<PollsQuestion> {
035
036 public static final String[] CLASS_NAMES = {PollsQuestion.class.getName()};
037
038 @Override
039 public String[] getClassNames() {
040 return CLASS_NAMES;
041 }
042
043 @Override
044 protected void doExportStagedModel(
045 PortletDataContext portletDataContext, PollsQuestion question)
046 throws Exception {
047
048 Element questionElement =
049 portletDataContext.getExportDataStagedModelElement(question);
050
051 portletDataContext.addClassedModel(
052 questionElement, ExportImportPathUtil.getModelPath(question),
053 question, PollsPortletDataHandler.NAMESPACE);
054 }
055
056 @Override
057 protected void doImportStagedModel(
058 PortletDataContext portletDataContext, PollsQuestion question)
059 throws Exception {
060
061 long userId = portletDataContext.getUserId(question.getUserUuid());
062
063 int expirationMonth = 0;
064 int expirationDay = 0;
065 int expirationYear = 0;
066 int expirationHour = 0;
067 int expirationMinute = 0;
068 boolean neverExpire = true;
069
070 Date expirationDate = question.getExpirationDate();
071
072 if (expirationDate != null) {
073 Calendar expirationCal = CalendarFactoryUtil.getCalendar();
074
075 expirationCal.setTime(expirationDate);
076
077 expirationMonth = expirationCal.get(Calendar.MONTH);
078 expirationDay = expirationCal.get(Calendar.DATE);
079 expirationYear = expirationCal.get(Calendar.YEAR);
080 expirationHour = expirationCal.get(Calendar.HOUR);
081 expirationMinute = expirationCal.get(Calendar.MINUTE);
082 neverExpire = false;
083
084 if (expirationCal.get(Calendar.AM_PM) == Calendar.PM) {
085 expirationHour += 12;
086 }
087 }
088
089 ServiceContext serviceContext = portletDataContext.createServiceContext(
090 question, PollsPortletDataHandler.NAMESPACE);
091
092 PollsQuestion importedQuestion = null;
093
094 if (portletDataContext.isDataStrategyMirror()) {
095 PollsQuestion existingQuestion = PollsQuestionUtil.fetchByUUID_G(
096 question.getUuid(), portletDataContext.getScopeGroupId());
097
098 if (existingQuestion == null) {
099 serviceContext.setUuid(question.getUuid());
100
101 importedQuestion = PollsQuestionLocalServiceUtil.addQuestion(
102 userId, question.getTitleMap(),
103 question.getDescriptionMap(), expirationMonth,
104 expirationDay, expirationYear, expirationHour,
105 expirationMinute, neverExpire, null, serviceContext);
106 }
107 else {
108 importedQuestion = PollsQuestionLocalServiceUtil.updateQuestion(
109 userId, existingQuestion.getQuestionId(),
110 question.getTitleMap(), question.getDescriptionMap(),
111 expirationMonth, expirationDay, expirationYear,
112 expirationHour, expirationMinute, neverExpire, null,
113 serviceContext);
114 }
115 }
116 else {
117 importedQuestion = PollsQuestionLocalServiceUtil.addQuestion(
118 userId, question.getTitleMap(), question.getDescriptionMap(),
119 expirationMonth, expirationDay, expirationYear, expirationHour,
120 expirationMinute, neverExpire, null, serviceContext);
121 }
122
123 portletDataContext.importClassedModel(
124 question, importedQuestion, PollsPortletDataHandler.NAMESPACE);
125 }
126
127 }