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