001
014
015 package com.liferay.portlet.layoutsadmin.util;
016
017 import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.lar.ExportImportHelperUtil;
020 import com.liferay.portal.kernel.search.BaseIndexer;
021 import com.liferay.portal.kernel.search.Document;
022 import com.liferay.portal.kernel.search.Field;
023 import com.liferay.portal.kernel.search.SearchContext;
024 import com.liferay.portal.kernel.search.SearchEngineUtil;
025 import com.liferay.portal.kernel.search.Summary;
026 import com.liferay.portal.kernel.util.ArrayUtil;
027 import com.liferay.portal.kernel.util.GetterUtil;
028 import com.liferay.portal.kernel.util.MapUtil;
029 import com.liferay.portal.kernel.util.StringPool;
030 import com.liferay.portal.model.ExportImportConfiguration;
031 import com.liferay.portal.service.ExportImportConfigurationLocalServiceUtil;
032 import com.liferay.portal.util.PortletKeys;
033
034 import java.io.Serializable;
035
036 import java.util.Date;
037 import java.util.Locale;
038 import java.util.Map;
039 import java.util.TimeZone;
040
041 import javax.portlet.PortletRequest;
042 import javax.portlet.PortletResponse;
043 import javax.portlet.PortletURL;
044
045
048 public class ExportImportConfigurationIndexer extends BaseIndexer {
049
050 public static final String[] CLASS_NAMES =
051 {ExportImportConfiguration.class.getName()};
052
053 public static final String PORTLET_ID = PortletKeys.LAYOUTS_ADMIN;
054
055 @Override
056 public String[] getClassNames() {
057 return CLASS_NAMES;
058 }
059
060 @Override
061 public String getPortletId() {
062 return PORTLET_ID;
063 }
064
065 @Override
066 protected void doDelete(Object obj) throws Exception {
067 ExportImportConfiguration exportImportConfiguration =
068 (ExportImportConfiguration)obj;
069
070 deleteDocument(
071 exportImportConfiguration.getCompanyId(),
072 exportImportConfiguration.getExportImportConfigurationId());
073 }
074
075 @Override
076 protected Document doGetDocument(Object obj) throws Exception {
077 ExportImportConfiguration exportImportConfiguration =
078 (ExportImportConfiguration)obj;
079
080 Document document = getBaseModelDocument(
081 PORTLET_ID, exportImportConfiguration);
082
083 document.addText(
084 Field.DESCRIPTION, exportImportConfiguration.getDescription());
085 document.addText(Field.NAME, exportImportConfiguration.getName());
086 document.addKeyword(Field.TYPE, exportImportConfiguration.getType());
087
088 Map<String, Serializable> settingsMap =
089 exportImportConfiguration.getSettingsMap();
090
091 populateDates(document, settingsMap);
092 populateLayoutIds(document, settingsMap);
093 populateLocale(document, settingsMap);
094 populateParameterMap(document, settingsMap);
095 populateSiteInformation(document, settingsMap);
096 populateTimeZone(document, settingsMap);
097
098 document.addKeyword(
099 _PREFIX_SETTING + Field.USER_ID,
100 MapUtil.getLong(settingsMap, "userId"));
101
102 return document;
103 }
104
105 @Override
106 protected Summary doGetSummary(
107 Document document, Locale locale, String snippet,
108 PortletURL portletURL, PortletRequest portletRequest,
109 PortletResponse portletResponse)
110 throws Exception {
111
112 String exportImportConfigurationId = document.get(Field.ENTRY_CLASS_PK);
113
114 Summary summary = createSummary(
115 document, Field.TITLE, Field.DESCRIPTION);
116
117 portletURL.setParameter(
118 "struts_action", "/layouts_admin/edit_export_configuration");
119 portletURL.setParameter(
120 "exportImportConfigurationId", exportImportConfigurationId);
121
122 summary.setPortletURL(portletURL);
123
124 return summary;
125 }
126
127 @Override
128 protected void doReindex(Object obj) throws Exception {
129 ExportImportConfiguration exportImportConfiguration =
130 (ExportImportConfiguration)obj;
131
132 Document document = getDocument(exportImportConfiguration);
133
134 SearchEngineUtil.updateDocument(
135 getSearchEngineId(), exportImportConfiguration.getCompanyId(),
136 document, isCommitImmediately());
137 }
138
139 @Override
140 protected void doReindex(String className, long classPK) throws Exception {
141 ExportImportConfiguration exportImportConfiguration =
142 ExportImportConfigurationLocalServiceUtil.
143 getExportImportConfiguration(classPK);
144
145 doReindex(exportImportConfiguration);
146 }
147
148 @Override
149 protected void doReindex(String[] ids) throws Exception {
150 long companyId = GetterUtil.getLong(ids[0]);
151
152 reindexExportImportConfigurations(companyId);
153 }
154
155 @Override
156 protected String getPortletId(SearchContext searchContext) {
157 return PORTLET_ID;
158 }
159
160 protected void populateDates(
161 Document document, Map<String, Serializable> settingsMap) {
162
163 if (settingsMap.containsKey("endDate")) {
164 Date endDate = (Date)settingsMap.get("endDate");
165
166 document.addDate(_PREFIX_SETTING + "endDate", endDate);
167 }
168
169 if (settingsMap.containsKey("startDate")) {
170 Date startDate = (Date)settingsMap.get("startDate");
171
172 document.addDate(_PREFIX_SETTING + "startDate", startDate);
173 }
174 }
175
176 protected void populateLayoutIds(
177 Document document, Map<String, Serializable> settingsMap) {
178
179 if (!settingsMap.containsKey("layoutIdMap") &&
180 !settingsMap.containsKey("layoutIds")) {
181
182 return;
183 }
184
185 long[] layoutIds = GetterUtil.getLongValues(
186 settingsMap.get("layoutIds"));
187
188 if (ArrayUtil.isEmpty(layoutIds)) {
189 Map<Long, Boolean> layoutIdMap =
190 (Map<Long, Boolean>)settingsMap.get("layoutIdMap");
191
192 try {
193 layoutIds = ExportImportHelperUtil.getLayoutIds(layoutIdMap);
194 }
195 catch (PortalException pe) {
196 }
197 }
198
199 document.addKeyword("layoutIds", layoutIds);
200 }
201
202 protected void populateLocale(
203 Document document, Map<String, Serializable> settingsMap) {
204
205 Locale locale = (Locale)settingsMap.get("locale");
206
207 document.addText(_PREFIX_SETTING + "locale", locale.toString());
208 }
209
210 protected void populateParameterMap(
211 Document document, Map<String, Serializable> settingsMap) {
212
213 if (!settingsMap.containsKey("parameterMap")) {
214 return;
215 }
216
217 Map<String, String[]> parameterMap =
218 (Map<String, String[]>)settingsMap.get("parameterMap");
219
220 for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
221 String[] parameterValues = ArrayUtil.clone(entry.getValue());
222
223 for (int i = 0; i < parameterValues.length; i++) {
224 String parameterValue = parameterValues[i];
225
226 if (parameterValue.equals(StringPool.TRUE)) {
227 parameterValues[i] = "on";
228 }
229 else if (parameterValue.equals(StringPool.FALSE)) {
230 parameterValues[i] = "off";
231 }
232 }
233
234 document.addKeyword(
235 _PREFIX_PARAMETER + entry.getKey(), parameterValues);
236 }
237 }
238
239 protected void populateSiteInformation(
240 Document document, Map<String, Serializable> settingsMap) {
241
242 document.addKeyword(
243 _PREFIX_SETTING + "privateLayout",
244 MapUtil.getBoolean(settingsMap, "privateLayout"));
245 document.addKeyword(
246 _PREFIX_SETTING + "sourceGroupId",
247 MapUtil.getLong(settingsMap, "sourceGroupId"));
248 document.addKeyword(
249 _PREFIX_SETTING + "targetGroupId",
250 MapUtil.getLong(settingsMap, "targetGroupId"));
251 }
252
253 protected void populateTimeZone(
254 Document document, Map<String, Serializable> settingsMap) {
255
256 TimeZone timeZone = (TimeZone)settingsMap.get("timeZone");
257
258 if (timeZone != null) {
259 document.addKeyword(
260 _PREFIX_SETTING + "timeZone", timeZone.getDisplayName());
261 }
262 }
263
264 protected void reindexExportImportConfigurations(long companyId)
265 throws PortalException {
266
267 final ActionableDynamicQuery actionableDynamicQuery =
268 ExportImportConfigurationLocalServiceUtil.
269 getActionableDynamicQuery();
270
271 actionableDynamicQuery.setCompanyId(companyId);
272 actionableDynamicQuery.setPerformActionMethod(
273 new ActionableDynamicQuery.PerformActionMethod() {
274
275 @Override
276 public void performAction(Object object)
277 throws PortalException {
278
279 ExportImportConfiguration exportImportConfiguration =
280 (ExportImportConfiguration)object;
281
282 Document document = getDocument(exportImportConfiguration);
283
284 actionableDynamicQuery.addDocument(document);
285 }
286
287 });
288 actionableDynamicQuery.setSearchEngineId(getSearchEngineId());
289
290 actionableDynamicQuery.performActions();
291 }
292
293 private static final String _PREFIX_PARAMETER = "parameter_";
294
295 private static final String _PREFIX_SETTING = "setting_";
296
297 }