001
014
015 package com.liferay.exportimport.kernel.lar;
016
017 import aQute.bnd.annotation.ProviderType;
018
019 import com.liferay.portal.kernel.model.StagedGroupedModel;
020 import com.liferay.portal.kernel.model.StagedModel;
021 import com.liferay.portal.kernel.util.CharPool;
022 import com.liferay.portal.kernel.util.PortletKeys;
023 import com.liferay.portal.kernel.util.StringBundler;
024 import com.liferay.portal.kernel.util.StringPool;
025 import com.liferay.portal.kernel.util.Validator;
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(10);
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(StringPool.FORWARD_SLASH);
406 sb.append(getOwnerTypePath(ownerType));
407 sb.append(ownerId);
408 sb.append(CharPool.FORWARD_SLASH);
409 sb.append("portlet-preferences.xml");
410
411 return sb.toString();
412 }
413
414
418 @Deprecated
419 public static String getSourceLayoutPath(
420 PortletDataContext portletDataContext, long layoutId) {
421
422 StringBundler sb = new StringBundler(5);
423
424 sb.append(getSourceRootPath(portletDataContext));
425 sb.append(StringPool.FORWARD_SLASH);
426 sb.append(PATH_PREFIX_LAYOUT);
427 sb.append(StringPool.FORWARD_SLASH);
428 sb.append(layoutId);
429
430 return sb.toString();
431 }
432
433
436 @Deprecated
437 public static String getSourcePortletPath(
438 PortletDataContext portletDataContext, String portletId) {
439
440 StringBundler sb = new StringBundler(5);
441
442 sb.append(getSourceRootPath(portletDataContext));
443 sb.append(StringPool.FORWARD_SLASH);
444 sb.append(PATH_PREFIX_PORTLET);
445 sb.append(StringPool.FORWARD_SLASH);
446 sb.append(portletId);
447
448 return sb.toString();
449 }
450
451
474 public static String getSourceRootPath(
475 PortletDataContext portletDataContext) {
476
477 return getRootPath(
478 PATH_PREFIX_GROUP, portletDataContext.getSourceGroupId());
479 }
480
481 protected static String getModelPath(
482 String pathPrefix, long pathPrimaryKey, String className,
483 Serializable primaryKeyObj, String dependentFileName) {
484
485 StringBundler sb = new StringBundler(7);
486
487 sb.append(getRootPath(pathPrefix, pathPrimaryKey));
488 sb.append(StringPool.FORWARD_SLASH);
489 sb.append(className);
490 sb.append(StringPool.FORWARD_SLASH);
491 sb.append(primaryKeyObj.toString());
492
493 if (dependentFileName == null) {
494 sb.append(_FILE_EXTENSION_XML);
495 }
496 else {
497 sb.append(StringPool.FORWARD_SLASH);
498 sb.append(dependentFileName);
499 }
500
501 return sb.toString();
502 }
503
504 protected static String getOwnerTypePath(int ownerType) {
505 if (ownerType == PortletKeys.PREFS_OWNER_TYPE_ARCHIVED) {
506 return "archived/";
507 }
508 else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_COMPANY) {
509 return "company/";
510 }
511 else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_GROUP) {
512 return "group/";
513 }
514 else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_LAYOUT) {
515 return "layout/";
516 }
517 else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_USER) {
518 return "user/";
519 }
520 else {
521 return StringPool.BLANK;
522 }
523 }
524
525 protected static String getRootPath(
526 String pathPrefix, long pathPrimaryKey) {
527
528 StringBundler sb = new StringBundler(4);
529
530 sb.append(StringPool.FORWARD_SLASH);
531 sb.append(pathPrefix);
532 sb.append(StringPool.FORWARD_SLASH);
533 sb.append(pathPrimaryKey);
534
535 return sb.toString();
536 }
537
538 private static final String _FILE_EXTENSION_XML = ".xml";
539
540 }