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