001
014
015 package com.liferay.portal.kernel.lar;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.util.GetterUtil;
020 import com.liferay.portal.kernel.util.StringPool;
021 import com.liferay.portal.kernel.util.Time;
022 import com.liferay.portal.kernel.util.Validator;
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
027 import java.io.IOException;
028
029 import javax.portlet.PortletPreferences;
030
031
034 public abstract class BasePortletDataHandler implements PortletDataHandler {
035
036 public PortletPreferences deleteData(
037 PortletDataContext portletDataContext, String portletId,
038 PortletPreferences portletPreferences)
039 throws PortletDataException {
040
041 long startTime = 0;
042
043 if (_log.isInfoEnabled()) {
044 _log.info("Deleting portlet " + portletId);
045
046 startTime = System.currentTimeMillis();
047 }
048
049 try {
050 return doDeleteData(
051 portletDataContext, portletId, portletPreferences);
052 }
053 catch (Exception e) {
054 throw new PortletDataException(e);
055 }
056 finally {
057 if (_log.isInfoEnabled()) {
058 long duration = System.currentTimeMillis() - startTime;
059
060 _log.info("Deleted portlet in " + Time.getDuration(duration));
061 }
062 }
063 }
064
065 public String exportData(
066 PortletDataContext portletDataContext, String portletId,
067 PortletPreferences portletPreferences)
068 throws PortletDataException {
069
070 long startTime = 0;
071
072 if (_log.isInfoEnabled()) {
073 _log.info("Exporting portlet " + portletId);
074
075 startTime = System.currentTimeMillis();
076 }
077
078 try {
079 return doExportData(
080 portletDataContext, portletId, portletPreferences);
081 }
082 catch (Exception e) {
083 throw new PortletDataException(e);
084 }
085 finally {
086 if (_log.isInfoEnabled()) {
087 long duration = System.currentTimeMillis() - startTime;
088
089 _log.info("Exported portlet in " + Time.getDuration(duration));
090 }
091 }
092 }
093
094 public String[] getDataPortletPreferences() {
095 return _dataPortletPreferences;
096 }
097
098 public PortletDataHandlerControl[] getExportControls() {
099 return _exportControls;
100 }
101
102 public PortletDataHandlerControl[] getExportMetadataControls() {
103 return _exportMetadataControls;
104 }
105
106 public PortletDataHandlerControl[] getImportControls() {
107 return _importControls;
108 }
109
110 public PortletDataHandlerControl[] getImportMetadataControls() {
111 return _importMetadataControls;
112 }
113
114 public PortletPreferences importData(
115 PortletDataContext portletDataContext, String portletId,
116 PortletPreferences portletPreferences, String data)
117 throws PortletDataException {
118
119 long startTime = 0;
120
121 if (_log.isInfoEnabled()) {
122 _log.info("Importing portlet " + portletId);
123
124 startTime = System.currentTimeMillis();
125 }
126
127 long sourceGroupId = portletDataContext.getSourceGroupId();
128
129 try {
130 if (Validator.isXml(data)) {
131 Document document = SAXReaderUtil.read(data);
132
133 Element rootElement = document.getRootElement();
134
135 portletDataContext.setImportDataRootElement(rootElement);
136
137 long portletSourceGroupId = GetterUtil.getLong(
138 rootElement.attributeValue("group-id"));
139
140 if (portletSourceGroupId != 0) {
141 portletDataContext.setSourceGroupId(portletSourceGroupId);
142 }
143 }
144
145 return doImportData(
146 portletDataContext, portletId, portletPreferences, data);
147 }
148 catch (Exception e) {
149 throw new PortletDataException(e);
150 }
151 finally {
152 portletDataContext.setSourceGroupId(sourceGroupId);
153
154 if (_log.isInfoEnabled()) {
155 long duration = System.currentTimeMillis() - startTime;
156
157 _log.info("Imported portlet in " + Time.getDuration(duration));
158 }
159 }
160 }
161
162 public boolean isAlwaysExportable() {
163 return _alwaysExportable;
164 }
165
166 public boolean isAlwaysStaged() {
167 return _alwaysStaged;
168 }
169
170 public boolean isDataLocalized() {
171 return _dataLocalized;
172 }
173
174 public boolean isPublishToLiveByDefault() {
175 return _publishToLiveByDefault;
176 }
177
178 protected Element addExportDataRootElement(
179 PortletDataContext portletDataContext) {
180
181 Document document = SAXReaderUtil.createDocument();
182
183 Class<?> clazz = getClass();
184
185 Element rootElement = document.addElement(clazz.getSimpleName());
186
187 portletDataContext.setExportDataRootElement(rootElement);
188
189 return rootElement;
190 }
191
192 protected PortletPreferences doDeleteData(
193 PortletDataContext portletDataContext, String portletId,
194 PortletPreferences portletPreferences)
195 throws Exception {
196
197 return portletPreferences;
198 }
199
200 protected String doExportData(
201 PortletDataContext portletDataContext, String portletId,
202 PortletPreferences portletPreferences)
203 throws Exception {
204
205 return null;
206 }
207
208 protected PortletPreferences doImportData(
209 PortletDataContext portletDataContext, String portletId,
210 PortletPreferences portletPreferences, String data)
211 throws Exception {
212
213 return null;
214 }
215
216 protected String getExportDataRootElementString(Element rootElement) {
217 if (rootElement == null) {
218 return StringPool.BLANK;
219 }
220
221 try {
222 Document document = rootElement.getDocument();
223
224 return document.formattedString();
225 }
226 catch (IOException ioe) {
227 return StringPool.BLANK;
228 }
229 }
230
231 protected void setAlwaysExportable(boolean alwaysExportable) {
232 _alwaysExportable = alwaysExportable;
233 }
234
235 protected void setAlwaysStaged(boolean alwaysStaged) {
236 _alwaysStaged = alwaysStaged;
237 }
238
239 protected void setDataLocalized(boolean dataLocalized) {
240 _dataLocalized = dataLocalized;
241 }
242
243 protected void setDataPortletPreferences(String... dataPortletPreferences) {
244 _dataPortletPreferences = dataPortletPreferences;
245 }
246
247 protected void setExportControls(
248 PortletDataHandlerControl... exportControls) {
249
250 _exportControls = exportControls;
251
252 setImportControls(exportControls);
253 }
254
255 protected void setExportMetadataControls(
256 PortletDataHandlerControl... exportMetadataControls) {
257
258 _exportMetadataControls = exportMetadataControls;
259
260 setImportMetadataControls(exportMetadataControls);
261 }
262
263 protected void setImportControls(
264 PortletDataHandlerControl... importControls) {
265
266 _importControls = importControls;
267 }
268
269 protected void setImportMetadataControls(
270 PortletDataHandlerControl... importMetadataControls) {
271
272 _importMetadataControls = importMetadataControls;
273 }
274
275 protected void setPublishToLiveByDefault(boolean publishToLiveByDefault) {
276 _publishToLiveByDefault = publishToLiveByDefault;
277 }
278
279 private static Log _log = LogFactoryUtil.getLog(
280 BasePortletDataHandler.class);
281
282 private boolean _alwaysExportable;
283 private boolean _alwaysStaged;
284 private boolean _dataLocalized;
285 private String[] _dataPortletPreferences = new String[0];
286 private PortletDataHandlerControl[] _exportControls =
287 new PortletDataHandlerControl[0];
288 private PortletDataHandlerControl[] _exportMetadataControls =
289 new PortletDataHandlerControl[0];
290 private PortletDataHandlerControl[] _importControls =
291 new PortletDataHandlerControl[0];
292 private PortletDataHandlerControl[] _importMetadataControls =
293 new PortletDataHandlerControl[0];
294 private boolean _publishToLiveByDefault;
295
296 }