001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.exportimport.configuration;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.util.ParamUtil;
019    import com.liferay.portal.kernel.util.WebKeys;
020    import com.liferay.portal.model.User;
021    import com.liferay.portal.theme.ThemeDisplay;
022    import com.liferay.portlet.exportimport.lar.ExportImportDateUtil;
023    import com.liferay.portlet.exportimport.lar.ExportImportHelperUtil;
024    import com.liferay.portlet.exportimport.lar.PortletDataHandlerKeys;
025    import com.liferay.portlet.exportimport.model.ExportImportConfiguration;
026    import com.liferay.portlet.exportimport.service.ExportImportConfigurationLocalServiceUtil;
027    
028    import java.io.Serializable;
029    
030    import java.util.Map;
031    
032    import javax.portlet.PortletRequest;
033    
034    /**
035     * @author Levente Hud??k
036     */
037    public class ExportImportConfigurationFactory {
038    
039            public static ExportImportConfiguration
040                            buildDefaultLocalPublishingExportImportConfiguration(
041                                    PortletRequest portletRequest)
042                    throws PortalException {
043    
044                    ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
045                            WebKeys.THEME_DISPLAY);
046    
047                    long sourceGroupId = ParamUtil.getLong(portletRequest, "sourceGroupId");
048                    long targetGroupId = ParamUtil.getLong(portletRequest, "targetGroupId");
049                    boolean privateLayout = ParamUtil.getBoolean(
050                            portletRequest, "privateLayout");
051    
052                    Map<String, String[]> parameterMap = getDefaultPublishingParameters(
053                            portletRequest);
054    
055                    return buildDefaultLocalPublishingExportImportConfiguration(
056                            themeDisplay.getUser(), sourceGroupId, targetGroupId, privateLayout,
057                            parameterMap);
058            }
059    
060            public static ExportImportConfiguration
061                            buildDefaultLocalPublishingExportImportConfiguration(
062                                    User user, long sourceGroupId, long targetGroupId,
063                                    boolean privateLayout)
064                    throws PortalException {
065    
066                    return buildDefaultLocalPublishingExportImportConfiguration(
067                            user, sourceGroupId, targetGroupId, privateLayout,
068                            getDefaultPublishingParameters());
069            }
070    
071            public static ExportImportConfiguration
072                            buildDefaultLocalPublishingExportImportConfiguration(
073                                    User user, long sourceGroupId, long targetGroupId,
074                                    boolean privateLayout, Map<String, String[]> parameterMap)
075                    throws PortalException {
076    
077                    Map<String, Serializable> publishLayoutLocalSettingsMap =
078                            ExportImportConfigurationSettingsMapFactory.
079                                    buildPublishLayoutLocalSettingsMap(
080                                            user, sourceGroupId, targetGroupId, privateLayout,
081                                            ExportImportHelperUtil.getAllLayoutIds(
082                                                    sourceGroupId, privateLayout),
083                                            parameterMap);
084    
085                    return ExportImportConfigurationLocalServiceUtil.
086                            addDraftExportImportConfiguration(
087                                    user.getUserId(),
088                                    ExportImportConfigurationConstants.TYPE_PUBLISH_LAYOUT_LOCAL,
089                                    publishLayoutLocalSettingsMap);
090            }
091    
092            public static ExportImportConfiguration
093                            buildDefaultRemotePublishingExportImportConfiguration(
094                                    PortletRequest portletRequest)
095                    throws PortalException {
096    
097                    ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
098                            WebKeys.THEME_DISPLAY);
099    
100                    long sourceGroupId = ParamUtil.getLong(portletRequest, "sourceGroupId");
101                    boolean privateLayout = ParamUtil.getBoolean(
102                            portletRequest, "privateLayout");
103                    String remoteAddress = ParamUtil.getString(
104                            portletRequest, "remoteAddress");
105                    int remotePort = ParamUtil.getInteger(portletRequest, "remotePort");
106                    String remotePathContext = ParamUtil.getString(
107                            portletRequest, "remotePathContext");
108                    boolean secureConnection = ParamUtil.getBoolean(
109                            portletRequest, "secureConnection");
110                    long remoteGroupId = ParamUtil.getLong(portletRequest, "remoteGroupId");
111    
112                    Map<String, String[]> parameterMap = getDefaultPublishingParameters(
113                            portletRequest);
114    
115                    return buildDefaultRemotePublishingExportImportConfiguration(
116                            themeDisplay.getUser(), sourceGroupId, privateLayout, remoteAddress,
117                            remotePort, remotePathContext, secureConnection, remoteGroupId,
118                            parameterMap);
119            }
120    
121            public static ExportImportConfiguration
122                            buildDefaultRemotePublishingExportImportConfiguration(
123                                    User user, long sourceGroupId, boolean privateLayout,
124                                    String remoteAddress, int remotePort, String remotePathContext,
125                                    boolean secureConnection, long remoteGroupId)
126                    throws PortalException {
127    
128                    return buildDefaultRemotePublishingExportImportConfiguration(
129                            user, sourceGroupId, privateLayout, remoteAddress, remotePort,
130                            remotePathContext, secureConnection, remoteGroupId,
131                            getDefaultPublishingParameters());
132            }
133    
134            public static Map<String, String[]> getDefaultPublishingParameters(
135                    PortletRequest portletRequest) {
136    
137                    Map<String, String[]> parameterMap =
138                            ExportImportConfigurationParameterMapFactory.buildParameterMap(
139                                    portletRequest);
140    
141                    return addDefaultPublishingParameters(parameterMap);
142            }
143    
144            protected static Map<String, String[]> addDefaultPublishingParameters(
145                    Map<String, String[]> parameterMap) {
146    
147                    parameterMap.put(
148                            PortletDataHandlerKeys.DELETIONS,
149                            new String[] {Boolean.TRUE.toString()});
150                    parameterMap.put(
151                            PortletDataHandlerKeys.IGNORE_LAST_PUBLISH_DATE,
152                            new String[] {Boolean.FALSE.toString()});
153                    parameterMap.put(
154                            PortletDataHandlerKeys.LAYOUT_SET_SETTINGS,
155                            new String[] {Boolean.TRUE.toString()});
156                    parameterMap.put(
157                            PortletDataHandlerKeys.LOGO,
158                            new String[] {Boolean.TRUE.toString()});
159                    parameterMap.put(
160                            PortletDataHandlerKeys.PORTLET_CONFIGURATION,
161                            new String[] {Boolean.TRUE.toString()});
162                    parameterMap.put(
163                            PortletDataHandlerKeys.PORTLET_CONFIGURATION_ALL,
164                            new String[] {Boolean.TRUE.toString()});
165                    parameterMap.put(
166                            PortletDataHandlerKeys.PORTLET_DATA,
167                            new String[] {Boolean.TRUE.toString()});
168                    parameterMap.put(
169                            PortletDataHandlerKeys.PORTLET_DATA_ALL,
170                            new String[] {Boolean.TRUE.toString()});
171                    parameterMap.put(
172                            PortletDataHandlerKeys.PORTLET_SETUP_ALL,
173                            new String[] {Boolean.TRUE.toString()});
174                    parameterMap.put(
175                            ExportImportDateUtil.RANGE,
176                            new String[] {ExportImportDateUtil.RANGE_FROM_LAST_PUBLISH_DATE});
177    
178                    return parameterMap;
179            }
180    
181            protected static ExportImportConfiguration
182                            buildDefaultRemotePublishingExportImportConfiguration(
183                                    User user, long sourceGroupId, boolean privateLayout,
184                                    String remoteAddress, int remotePort, String remotePathContext,
185                                    boolean secureConnection, long remoteGroupId,
186                                    Map<String, String[]> parameterMap)
187                    throws PortalException {
188    
189                    Map<String, Serializable> publishLayoutRemoteSettingsMap =
190                            ExportImportConfigurationSettingsMapFactory.
191                                    buildPublishLayoutRemoteSettingsMap(
192                                            user.getUserId(), sourceGroupId, privateLayout,
193                                            ExportImportHelperUtil.getAllLayoutIdsMap(
194                                                    sourceGroupId, privateLayout),
195                                            parameterMap, remoteAddress, remotePort, remotePathContext,
196                                            secureConnection, remoteGroupId, privateLayout,
197                                            user.getLocale(), user.getTimeZone());
198    
199                    return ExportImportConfigurationLocalServiceUtil.
200                            addDraftExportImportConfiguration(
201                                    user.getUserId(),
202                                    ExportImportConfigurationConstants.TYPE_PUBLISH_LAYOUT_REMOTE,
203                                    publishLayoutRemoteSettingsMap);
204            }
205    
206            protected static Map<String, String[]> getDefaultPublishingParameters() {
207                    Map<String, String[]> parameterMap =
208                            ExportImportConfigurationParameterMapFactory.buildParameterMap();
209    
210                    return addDefaultPublishingParameters(parameterMap);
211            }
212    
213    }