/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.knowledge.base.internal.upgrade.v1_1_0;
import com.liferay.portal.kernel.model.PortletConstants;
import com.liferay.portal.kernel.portlet.PortletPreferencesFactoryUtil;
import com.liferay.portal.kernel.upgrade.CamelCaseUpgradePortletPreferences;
import com.liferay.portal.kernel.util.StringUtil;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javax.portlet.PortletPreferences;
/**
* @author Peter Shin
*/
public class UpgradePortletPreferences
extends CamelCaseUpgradePortletPreferences {
protected Map<String, String> getDefaultPreferencesMap(
String rootPortletId) {
if (rootPortletId.equals("1_WAR_knowledgebaseportlet")) {
return _adminDefaultPreferencesMap;
}
else if (rootPortletId.equals("2_WAR_knowledgebaseportlet")) {
return _displayDefaultPreferencesMap;
}
else if (rootPortletId.equals("3_WAR_knowledgebaseportlet")) {
return _articleDefaultPreferencesMap;
}
return Collections.emptyMap();
}
protected String getName(String rootPortletId, String oldName) {
if (rootPortletId.equals("1_WAR_knowledgebaseportlet")) {
return _oldAdminPreferenceNamesMap.get(oldName);
}
else if (rootPortletId.equals("2_WAR_knowledgebaseportlet")) {
return _oldDisplayPreferenceNamesMap.get(oldName);
}
else if (rootPortletId.equals("3_WAR_knowledgebaseportlet")) {
return _oldArticlePreferenceNamesMap.get(oldName);
}
return null;
}
@Override
protected String[] getPortletIds() {
return _PORTLET_IDS;
}
protected String updatePreferences(
long companyId, long ownerId, int ownerType, long plid,
String portletId, String xml)
throws Exception {
PortletPreferences preferences = PortletPreferencesFactoryUtil.fromXML(
companyId, ownerId, ownerType, plid, portletId, xml);
Map<String, String[]> preferencesMap = preferences.getMap();
String rootPortletId = PortletConstants.getRootPortletId(portletId);
for (String oldName : preferencesMap.keySet()) {
String newName = getName(rootPortletId, oldName);
String[] oldValues = preferencesMap.get(oldName);
preferences.reset(oldName);
if (newName != null) {
preferences.setValues(newName, oldValues);
}
}
Map<String, String> defaultPreferencesMap = getDefaultPreferencesMap(
rootPortletId);
for (String name : defaultPreferencesMap.keySet()) {
if (preferences.getValues(name, null) == null) {
preferences.setValues(
name, StringUtil.split(defaultPreferencesMap.get(name)));
}
}
return PortletPreferencesFactoryUtil.toXML(preferences);
}
@Override
protected String upgradePreferences(
long companyId, long ownerId, int ownerType, long plid,
String portletId, String xml)
throws Exception {
String preferences = super.upgradePreferences(
companyId, ownerId, ownerType, plid, portletId, xml);
return updatePreferences(
companyId, ownerId, ownerType, plid, portletId, preferences);
}
private static final String[] _PORTLET_IDS = new String[] {
"1_WAR_knowledgebaseportlet", "2_WAR_knowledgebaseportlet",
"3_WAR_knowledgebaseportlet_INSTANCE_%"
};
private static final Map<String, String> _adminDefaultPreferencesMap;
private static final Map<String, String> _articleDefaultPreferencesMap;
private static final Map<String, String> _displayDefaultPreferencesMap;
private static final Map<String, String> _oldAdminPreferenceNamesMap;
private static final Map<String, String> _oldArticlePreferenceNamesMap;
private static final Map<String, String> _oldDisplayPreferenceNamesMap;
static {
_adminDefaultPreferencesMap = new HashMap<>();
_adminDefaultPreferencesMap.put(
"enableKBArticleAssetCategories", "false");
_adminDefaultPreferencesMap.put("enableKBArticleAssetTags", "true");
_adminDefaultPreferencesMap.put("enableKBArticleDescription", "false");
_adminDefaultPreferencesMap.put("enableKBArticleKBComments", "true");
_adminDefaultPreferencesMap.put("enableKBArticleRatings", "false");
_adminDefaultPreferencesMap.put(
"enableKBArticleViewCountIncrement", "true");
_adminDefaultPreferencesMap.put("enableKBStructureKBComments", "true");
_adminDefaultPreferencesMap.put("enableKBTemplateKBComments", "true");
_adminDefaultPreferencesMap.put("kbArticlesOrderByCol", "priority");
_adminDefaultPreferencesMap.put("kbArticlesOrderByType", "desc");
_adminDefaultPreferencesMap.put("showKBArticleAssetEntries", "true");
_adminDefaultPreferencesMap.put("showKBArticleKBComments", "true");
_adminDefaultPreferencesMap.put("showKBStructureKBComments", "true");
_adminDefaultPreferencesMap.put("showKBTemplateKBComments", "true");
_articleDefaultPreferencesMap = new HashMap<>();
_articleDefaultPreferencesMap.put(
"enableKBArticleAssetCategories", "false");
_articleDefaultPreferencesMap.put("enableKBArticleAssetTags", "true");
_articleDefaultPreferencesMap.put(
"enableKBArticleDescription", "false");
_articleDefaultPreferencesMap.put("enableKBArticleKBComments", "true");
_articleDefaultPreferencesMap.put("enableKBArticleRatings", "false");
_articleDefaultPreferencesMap.put(
"enableKBArticleViewCountIncrement", "true");
_articleDefaultPreferencesMap.put("resourcePrimKey", "0");
_articleDefaultPreferencesMap.put("rssDelta", "20");
_articleDefaultPreferencesMap.put("rssDisplayStyle", "full-content");
_articleDefaultPreferencesMap.put("rssFormat", "atom10");
_articleDefaultPreferencesMap.put("showKBArticleAssetEntries", "true");
_articleDefaultPreferencesMap.put("showKBArticleKBComments", "true");
_displayDefaultPreferencesMap = new HashMap<>();
_displayDefaultPreferencesMap.put(
"enableKBArticleAssetCategories", "false");
_displayDefaultPreferencesMap.put("enableKBArticleAssetTags", "true");
_displayDefaultPreferencesMap.put(
"enableKBArticleDescription", "false");
_displayDefaultPreferencesMap.put("enableKBArticleKBComments", "true");
_displayDefaultPreferencesMap.put("enableKBArticleRatings", "false");
_displayDefaultPreferencesMap.put(
"enableKBArticleViewCountIncrement", "true");
_displayDefaultPreferencesMap.put("enableKBTemplateKBComments", "true");
_displayDefaultPreferencesMap.put("kbArticlesOrderByCol", "priority");
_displayDefaultPreferencesMap.put("kbArticlesOrderByType", "desc");
_displayDefaultPreferencesMap.put("rssDelta", "20");
_displayDefaultPreferencesMap.put("rssDisplayStyle", "full-content");
_displayDefaultPreferencesMap.put("rssFormat", "atom10");
_displayDefaultPreferencesMap.put("showKBArticleAssetEntries", "true");
_displayDefaultPreferencesMap.put("showKBArticleAuthorColumn", "true");
_displayDefaultPreferencesMap.put(
"showKBArticleCreateDateColumn", "true");
_displayDefaultPreferencesMap.put("showKBArticleKBComments", "true");
_displayDefaultPreferencesMap.put(
"showKBArticleModifiedDateColumn", "true");
_displayDefaultPreferencesMap.put(
"showKBArticlePriorityColumn", "true");
_displayDefaultPreferencesMap.put("showKBArticleStatusColumn", "true");
_displayDefaultPreferencesMap.put("showKBArticleViewsColumn", "true");
_displayDefaultPreferencesMap.put("showKBTemplateKBComments", "true");
_oldAdminPreferenceNamesMap = new HashMap<>();
_oldAdminPreferenceNamesMap.put(
"articlesOrderByCol", "kbArticlesOrderByCol");
_oldAdminPreferenceNamesMap.put(
"articlesOrderByType", "kbArticlesOrderByType");
_oldAdminPreferenceNamesMap.put(
"enableArticleAssetCategories", "enableKBArticleAssetCategories");
_oldAdminPreferenceNamesMap.put(
"enableArticleAssetTags", "enableKBArticleAssetTags");
_oldAdminPreferenceNamesMap.put(
"enableArticleComments", "enableKBArticleKBComments");
_oldAdminPreferenceNamesMap.put(
"enableArticleDescription", "enableKBArticleDescription");
_oldAdminPreferenceNamesMap.put(
"enableArticleRatings", "enableKBArticleRatings");
_oldAdminPreferenceNamesMap.put(
"enableArticleViewCountIncrement",
"enableKBArticleViewCountIncrement");
_oldAdminPreferenceNamesMap.put(
"enableTemplateComments", "enableKBTemplateKBComments");
_oldAdminPreferenceNamesMap.put(
"showArticleComments", "showKBArticleKBComments");
_oldAdminPreferenceNamesMap.put(
"showTemplateComments", "showKBTemplateKBComments");
_oldArticlePreferenceNamesMap = new HashMap<>();
_oldArticlePreferenceNamesMap.put(
"enableArticleAssetCategories", "enableKBArticleAssetCategories");
_oldArticlePreferenceNamesMap.put(
"enableArticleAssetTags", "enableKBArticleAssetTags");
_oldArticlePreferenceNamesMap.put(
"enableArticleComments", "enableKBArticleKBComments");
_oldArticlePreferenceNamesMap.put(
"enableArticleDescription", "enableKBArticleDescription");
_oldArticlePreferenceNamesMap.put(
"enableArticleRatings", "enableKBArticleRatings");
_oldArticlePreferenceNamesMap.put(
"enableArticleViewCountIncrement",
"enableKBArticleViewCountIncrement");
_oldArticlePreferenceNamesMap.put(
"showArticleComments", "showKBArticleKBComments");
_oldDisplayPreferenceNamesMap = new HashMap<>();
_oldDisplayPreferenceNamesMap.put(
"articlesOrderByCol", "kbArticlesOrderByCol");
_oldDisplayPreferenceNamesMap.put(
"articlesOrderByType", "kbArticlesOrderByType");
_oldDisplayPreferenceNamesMap.put(
"enableArticleAssetCategories", "enableKBArticleAssetCategories");
_oldDisplayPreferenceNamesMap.put(
"enableArticleAssetTags", "enableKBArticleAssetTags");
_oldDisplayPreferenceNamesMap.put(
"enableArticleComments", "enableKBArticleKBComments");
_oldDisplayPreferenceNamesMap.put(
"enableArticleDescription", "enableKBArticleDescription");
_oldDisplayPreferenceNamesMap.put(
"enableArticleRatings", "enableKBArticleRatings");
_oldDisplayPreferenceNamesMap.put(
"enableArticleViewCountIncrement",
"enableKBArticleViewCountIncrement");
_oldDisplayPreferenceNamesMap.put(
"enableTemplateComments", "enableKBTemplateKBComments");
_oldDisplayPreferenceNamesMap.put(
"showArticleComments", "showKBArticleKBComments");
_oldDisplayPreferenceNamesMap.put(
"showTemplateComments", "showKBTemplateKBComments");
}
}