001
014
015 package com.liferay.portlet.exportimport.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(6);
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
310 public static String getPortletPath(PortletDataContext portletDataContext) {
311 return getPortletPath(
312 portletDataContext, portletDataContext.getPortletId());
313 }
314
315
335 public static String getPortletPath(
336 PortletDataContext portletDataContext, String portletId) {
337
338 StringBundler sb = new StringBundler(5);
339
340 sb.append(getRootPath(portletDataContext));
341 sb.append(StringPool.FORWARD_SLASH);
342 sb.append(PATH_PREFIX_PORTLET);
343 sb.append(StringPool.FORWARD_SLASH);
344 sb.append(portletId);
345
346 return sb.toString();
347 }
348
349 public static String getPortletPreferencesPath(
350 PortletDataContext portletDataContext, String portletId, long ownerId,
351 int ownerType, long plid) {
352
353 StringBundler sb = new StringBundler(8);
354
355 sb.append(getPortletPath(portletDataContext, portletId));
356 sb.append("/preferences/");
357 sb.append(getOwnerTypePath(ownerType));
358 sb.append(ownerId);
359 sb.append(CharPool.FORWARD_SLASH);
360 sb.append(plid);
361 sb.append(CharPool.FORWARD_SLASH);
362 sb.append("portlet-preferences.xml");
363
364 return sb.toString();
365 }
366
367
389 public static String getRootPath(PortletDataContext portletDataContext) {
390 return getRootPath(
391 PATH_PREFIX_GROUP, portletDataContext.getScopeGroupId());
392 }
393
394 public static String getServicePortletPreferencesPath(
395 PortletDataContext portletDataContext, String serviceName, long ownerId,
396 int ownerType) {
397
398 StringBundler sb = new StringBundler(9);
399
400 sb.append(getRootPath(portletDataContext));
401 sb.append(StringPool.FORWARD_SLASH);
402 sb.append(PATH_PREFIX_SERVICE);
403 sb.append(StringPool.FORWARD_SLASH);
404 sb.append(serviceName);
405 sb.append(getOwnerTypePath(ownerType));
406 sb.append(ownerId);
407 sb.append(CharPool.FORWARD_SLASH);
408 sb.append("portlet-preferences.xml");
409
410 return sb.toString();
411 }
412
413
417 @Deprecated
418 public static String getSourceLayoutPath(
419 PortletDataContext portletDataContext, long layoutId) {
420
421 StringBundler sb = new StringBundler(5);
422
423 sb.append(getSourceRootPath(portletDataContext));
424 sb.append(StringPool.FORWARD_SLASH);
425 sb.append(PATH_PREFIX_LAYOUT);
426 sb.append(StringPool.FORWARD_SLASH);
427 sb.append(layoutId);
428
429 return sb.toString();
430 }
431
432
435 @Deprecated
436 public static String getSourcePortletPath(
437 PortletDataContext portletDataContext, String portletId) {
438
439 StringBundler sb = new StringBundler(5);
440
441 sb.append(getSourceRootPath(portletDataContext));
442 sb.append(StringPool.FORWARD_SLASH);
443 sb.append(PATH_PREFIX_PORTLET);
444 sb.append(StringPool.FORWARD_SLASH);
445 sb.append(portletId);
446
447 return sb.toString();
448 }
449
450
473 public static String getSourceRootPath(
474 PortletDataContext portletDataContext) {
475
476 return getRootPath(
477 PATH_PREFIX_GROUP, portletDataContext.getSourceGroupId());
478 }
479
480 protected static String getModelPath(
481 String pathPrefix, long pathPrimaryKey, String className,
482 Serializable primaryKeyObj, String dependentFileName) {
483
484 StringBundler sb = new StringBundler(7);
485
486 sb.append(getRootPath(pathPrefix, pathPrimaryKey));
487 sb.append(StringPool.FORWARD_SLASH);
488 sb.append(className);
489 sb.append(StringPool.FORWARD_SLASH);
490 sb.append(primaryKeyObj.toString());
491
492 if (dependentFileName == null) {
493 sb.append(_FILE_EXTENSION_XML);
494 }
495 else {
496 sb.append(StringPool.FORWARD_SLASH);
497 sb.append(dependentFileName);
498 }
499
500 return sb.toString();
501 }
502
503 protected static String getOwnerTypePath(int ownerType) {
504 if (ownerType == PortletKeys.PREFS_OWNER_TYPE_ARCHIVED) {
505 return "archived/";
506 }
507 else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_COMPANY) {
508 return "company/";
509 }
510 else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_GROUP) {
511 return "group/";
512 }
513 else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_LAYOUT) {
514 return "layout/";
515 }
516 else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_USER) {
517 return "user/";
518 }
519 else {
520 return StringPool.BLANK;
521 }
522 }
523
524 protected static String getRootPath(
525 String pathPrefix, long pathPrimaryKey) {
526
527 StringBundler sb = new StringBundler(4);
528
529 sb.append(StringPool.FORWARD_SLASH);
530 sb.append(pathPrefix);
531 sb.append(StringPool.FORWARD_SLASH);
532 sb.append(pathPrimaryKey);
533
534 return sb.toString();
535 }
536
537 private static final String _FILE_EXTENSION_XML = ".xml";
538
539 }