001
014
015 package com.liferay.portlet.portletdisplaytemplate.lar;
016
017 import com.liferay.portal.kernel.lar.BasePortletDataHandler;
018 import com.liferay.portal.kernel.lar.PortletDataContext;
019 import com.liferay.portal.kernel.lar.PortletDataHandlerBoolean;
020 import com.liferay.portal.kernel.lar.StagedModelDataHandlerUtil;
021 import com.liferay.portal.kernel.portletdisplaytemplate.PortletDisplayTemplateHandlerRegistryUtil;
022 import com.liferay.portal.kernel.util.StringBundler;
023 import com.liferay.portal.kernel.xml.Document;
024 import com.liferay.portal.kernel.xml.Element;
025 import com.liferay.portal.kernel.xml.SAXReaderUtil;
026 import com.liferay.portal.util.PortletKeys;
027 import com.liferay.portlet.dynamicdatamapping.model.DDMTemplate;
028 import com.liferay.portlet.dynamicdatamapping.service.DDMTemplateLocalServiceUtil;
029
030 import java.util.List;
031
032 import javax.portlet.PortletPreferences;
033
034
037 public class PortletDisplayTemplatePortletDataHandler
038 extends BasePortletDataHandler {
039
040 public static final String NAMESPACE = "portlet_display_templates";
041
042 public PortletDisplayTemplatePortletDataHandler() {
043 setAlwaysExportable(true);
044 setExportControls(
045 new PortletDataHandlerBoolean(
046 NAMESPACE, "application-display-templates"));
047 }
048
049 @Override
050 protected String doExportData(
051 PortletDataContext portletDataContext, String portletId,
052 PortletPreferences portletPreferences)
053 throws Exception {
054
055 Element rootElement = addExportRootElement();
056
057 exportPortletDisplayTemplates(portletDataContext, rootElement);
058
059 return rootElement.formattedString();
060 }
061
062 @Override
063 protected PortletPreferences doImportData(
064 PortletDataContext portletDataContext, String portletId,
065 PortletPreferences portletPreferences, String data)
066 throws Exception {
067
068 Document document = SAXReaderUtil.read(data);
069
070 Element rootElement = document.getRootElement();
071
072 List<Element> ddmTemplateElements = rootElement.elements("template");
073
074 for (Element ddmTemplateElement : ddmTemplateElements) {
075 StagedModelDataHandlerUtil.importStagedModel(
076 portletDataContext, ddmTemplateElement);
077 }
078
079 return null;
080 }
081
082 protected void exportPortletDisplayTemplates(
083 PortletDataContext portletDataContext,
084 Element portletDisplayTemplatesElement)
085 throws Exception {
086
087 long[] classNameIds =
088 PortletDisplayTemplateHandlerRegistryUtil.getClassNameIds();
089
090 for (long classNameId : classNameIds) {
091 List<DDMTemplate> ddmTemplates =
092 DDMTemplateLocalServiceUtil.getTemplates(
093 portletDataContext.getScopeGroupId(), classNameId);
094
095 for (DDMTemplate ddmTemplate : ddmTemplates) {
096 StagedModelDataHandlerUtil.exportStagedModel(
097 portletDataContext, portletDisplayTemplatesElement,
098 ddmTemplate);
099 }
100 }
101 }
102
103 protected String getTemplatePath(
104 PortletDataContext portletDataContext, DDMTemplate template) {
105
106 StringBundler sb = new StringBundler(4);
107
108 sb.append(
109 portletDataContext.getPortletPath(
110 PortletKeys.PORTLET_DISPLAY_TEMPLATES));
111 sb.append("/templates/");
112 sb.append(template.getTemplateId());
113 sb.append(".xml");
114
115 return sb.toString();
116 }
117
118 }