001
014
015 package com.liferay.portal.kernel.lar;
016
017 import aQute.bnd.annotation.ProviderType;
018
019 import com.liferay.portal.kernel.util.CharPool;
020 import com.liferay.portal.kernel.util.StringBundler;
021 import com.liferay.portal.kernel.util.StringPool;
022 import com.liferay.portal.kernel.util.Validator;
023 import com.liferay.portal.model.StagedGroupedModel;
024 import com.liferay.portal.model.StagedModel;
025 import com.liferay.portal.util.PortletKeys;
026
027 import java.io.Serializable;
028
029
037 @ProviderType
038 public class ExportImportPathUtil {
039
040
043 public static final String PATH_PREFIX_COMPANY = "company";
044
045
048 public static final String PATH_PREFIX_GROUP = "group";
049
050
053 @Deprecated
054 public static final String PATH_PREFIX_LAYOUT = "layout";
055
056
059 public static final String PATH_PREFIX_PORTLET = "portlet";
060
061
064 public static final String PATH_PREFIX_SERVICE = "service";
065
066 public static String getCompanyModelPath(
067 long companyId, String className, long classPK) {
068
069 return getModelPath(
070 PATH_PREFIX_COMPANY, companyId, className, classPK, null);
071 }
072
073
094 public static String getExpandoPath(String path) {
095 if (!Validator.isFilePath(path, false)) {
096 throw new IllegalArgumentException(
097 path + " is located outside of the LAR");
098 }
099
100 int pos = path.lastIndexOf(_FILE_EXTENSION_XML);
101
102 if (pos == -1) {
103 throw new IllegalArgumentException(path + " is not an XML file");
104 }
105
106 return path.substring(0, pos).concat("-expando").concat(
107 path.substring(pos));
108 }
109
110
113 @Deprecated
114 public static String getLayoutPath(
115 PortletDataContext portletDataContext, long plid) {
116
117 StringBundler sb = new StringBundler(5);
118
119 sb.append(getRootPath(portletDataContext));
120 sb.append(StringPool.FORWARD_SLASH);
121 sb.append(PATH_PREFIX_LAYOUT);
122 sb.append(StringPool.FORWARD_SLASH);
123 sb.append(plid);
124 sb.append(_FILE_EXTENSION_XML);
125
126 return sb.toString();
127 }
128
129
149 public static String getModelPath(
150 long groupId, String className, long classPK) {
151
152 return getModelPath(
153 PATH_PREFIX_GROUP, groupId, className, classPK, null);
154 }
155
156
180 public static String getModelPath(
181 PortletDataContext portletDataContext, String className, long classPK) {
182
183 return getModelPath(portletDataContext, className, classPK, null);
184 }
185
186
210 public static String getModelPath(
211 PortletDataContext portletDataContext, String className, long classPK,
212 String dependentFileName) {
213
214 return getModelPath(
215 PATH_PREFIX_GROUP, portletDataContext.getSourceGroupId(), className,
216 classPK, dependentFileName);
217 }
218
219
239 public static String getModelPath(StagedModel stagedModel) {
240 return getModelPath(stagedModel, null);
241 }
242
243
269 public static String getModelPath(
270 StagedModel stagedModel, String dependentFileName) {
271
272 StagedModelType stagedModelType = stagedModel.getStagedModelType();
273
274 if (stagedModel instanceof StagedGroupedModel) {
275 StagedGroupedModel stagedGroupedModel =
276 (StagedGroupedModel)stagedModel;
277
278 return getModelPath(
279 PATH_PREFIX_GROUP, stagedGroupedModel.getGroupId(),
280 stagedModelType.getClassName(), stagedModel.getPrimaryKeyObj(),
281 dependentFileName);
282 }
283 else {
284 return getModelPath(
285 PATH_PREFIX_COMPANY, stagedModel.getCompanyId(),
286 stagedModelType.getClassName(), stagedModel.getPrimaryKeyObj(),
287 dependentFileName);
288 }
289 }
290
291
311 public static String getPortletPath(
312 PortletDataContext portletDataContext, String portletId) {
313
314 StringBundler sb = new StringBundler(5);
315
316 sb.append(getRootPath(portletDataContext));
317 sb.append(StringPool.FORWARD_SLASH);
318 sb.append(PATH_PREFIX_PORTLET);
319 sb.append(StringPool.FORWARD_SLASH);
320 sb.append(portletId);
321
322 return sb.toString();
323 }
324
325 public static String getPortletPreferencesPath(
326 PortletDataContext portletDataContext, String portletId, long ownerId,
327 int ownerType, long plid) {
328
329 StringBundler sb = new StringBundler(8);
330
331 sb.append(getPortletPath(portletDataContext, portletId));
332 sb.append("/preferences/");
333 sb.append(getOwnerTypePath(ownerType));
334 sb.append(ownerId);
335 sb.append(CharPool.FORWARD_SLASH);
336 sb.append(plid);
337 sb.append(CharPool.FORWARD_SLASH);
338 sb.append("portlet-preferences.xml");
339
340 return sb.toString();
341 }
342
343
365 public static String getRootPath(PortletDataContext portletDataContext) {
366 return getRootPath(
367 PATH_PREFIX_GROUP, portletDataContext.getScopeGroupId());
368 }
369
370 public static String getServicePortletPreferencesPath(
371 PortletDataContext portletDataContext, String serviceName, long ownerId,
372 int ownerType) {
373
374 StringBundler sb = new StringBundler(9);
375
376 sb.append(getRootPath(portletDataContext));
377 sb.append(StringPool.FORWARD_SLASH);
378 sb.append(PATH_PREFIX_SERVICE);
379 sb.append(StringPool.FORWARD_SLASH);
380 sb.append(serviceName);
381 sb.append(getOwnerTypePath(ownerType));
382 sb.append(ownerId);
383 sb.append(CharPool.FORWARD_SLASH);
384 sb.append("portlet-preferences.xml");
385
386 return sb.toString();
387 }
388
389
393 @Deprecated
394 public static String getSourceLayoutPath(
395 PortletDataContext portletDataContext, long layoutId) {
396
397 StringBundler sb = new StringBundler(5);
398
399 sb.append(getSourceRootPath(portletDataContext));
400 sb.append(StringPool.FORWARD_SLASH);
401 sb.append(PATH_PREFIX_LAYOUT);
402 sb.append(StringPool.FORWARD_SLASH);
403 sb.append(layoutId);
404
405 return sb.toString();
406 }
407
408
411 @Deprecated
412 public static String getSourcePortletPath(
413 PortletDataContext portletDataContext, String portletId) {
414
415 StringBundler sb = new StringBundler(5);
416
417 sb.append(getSourceRootPath(portletDataContext));
418 sb.append(StringPool.FORWARD_SLASH);
419 sb.append(PATH_PREFIX_PORTLET);
420 sb.append(StringPool.FORWARD_SLASH);
421 sb.append(portletId);
422
423 return sb.toString();
424 }
425
426
449 public static String getSourceRootPath(
450 PortletDataContext portletDataContext) {
451
452 return getRootPath(
453 PATH_PREFIX_GROUP, portletDataContext.getSourceGroupId());
454 }
455
456 protected static String getModelPath(
457 String pathPrefix, long pathPrimaryKey, String className,
458 Serializable primaryKeyObj, String dependentFileName) {
459
460 StringBundler sb = new StringBundler(7);
461
462 sb.append(getRootPath(pathPrefix, pathPrimaryKey));
463 sb.append(StringPool.FORWARD_SLASH);
464 sb.append(className);
465 sb.append(StringPool.FORWARD_SLASH);
466 sb.append(primaryKeyObj.toString());
467
468 if (dependentFileName == null) {
469 sb.append(_FILE_EXTENSION_XML);
470 }
471 else {
472 sb.append(StringPool.FORWARD_SLASH);
473 sb.append(dependentFileName);
474 }
475
476 return sb.toString();
477 }
478
479 protected static String getOwnerTypePath(int ownerType) {
480 if (ownerType == PortletKeys.PREFS_OWNER_TYPE_ARCHIVED) {
481 return "archived/";
482 }
483 else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_COMPANY) {
484 return "company/";
485 }
486 else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_GROUP) {
487 return "group/";
488 }
489 else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_LAYOUT) {
490 return "layout/";
491 }
492 else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_USER) {
493 return "user/";
494 }
495 else {
496 return StringPool.BLANK;
497 }
498 }
499
500 protected static String getRootPath(
501 String pathPrefix, long pathPrimaryKey) {
502
503 StringBundler sb = new StringBundler(4);
504
505 sb.append(StringPool.FORWARD_SLASH);
506 sb.append(pathPrefix);
507 sb.append(StringPool.FORWARD_SLASH);
508 sb.append(pathPrimaryKey);
509
510 return sb.toString();
511 }
512
513 private static final String _FILE_EXTENSION_XML = ".xml";
514
515 }