001
014
015 package com.liferay.portal.kernel.lar;
016
017 import com.liferay.portal.kernel.util.StringBundler;
018 import com.liferay.portal.kernel.util.StringPool;
019 import com.liferay.portal.kernel.util.Validator;
020 import com.liferay.portal.model.StagedGroupedModel;
021 import com.liferay.portal.model.StagedModel;
022
023 import java.io.Serializable;
024
025
029 public class ExportImportPathUtil {
030
031 public static final String PATH_PREFIX_COMPANY = "company";
032
033 public static final String PATH_PREFIX_GROUP = "group";
034
035 public static final String PATH_PREFIX_LAYOUT = "layout";
036
037 public static final String PATH_PREFIX_PORTLET = "portlet";
038
039 public static String getExpandoPath(String path) {
040 if (!Validator.isFilePath(path, false)) {
041 throw new IllegalArgumentException(
042 path + " is located outside of the LAR");
043 }
044
045 int pos = path.lastIndexOf(_FILE_EXTENSION_XML);
046
047 if (pos == -1) {
048 throw new IllegalArgumentException(path + " is not an XML file");
049 }
050
051 return path.substring(0, pos).concat("-expando").concat(
052 path.substring(pos));
053 }
054
055 public static String getLayoutPath(
056 PortletDataContext portletDataContext, long plid) {
057
058 StringBundler sb = new StringBundler(5);
059
060 sb.append(getRootPath(portletDataContext));
061 sb.append(StringPool.FORWARD_SLASH);
062 sb.append(PATH_PREFIX_LAYOUT);
063 sb.append(StringPool.FORWARD_SLASH);
064 sb.append(plid);
065 sb.append(_FILE_EXTENSION_XML);
066
067 return sb.toString();
068 }
069
070 public static String getModelPath(
071 long groupId, String className, long classPK) {
072
073 return getModelPath(
074 PATH_PREFIX_GROUP, groupId, className, classPK, null);
075 }
076
077 public static String getModelPath(
078 PortletDataContext portletDataContext, String className, long classPK) {
079
080 return getModelPath(portletDataContext, className, classPK, null);
081 }
082
083 public static String getModelPath(
084 PortletDataContext portletDataContext, String className, long classPK,
085 String dependentFileName) {
086
087 return getModelPath(
088 PATH_PREFIX_GROUP, portletDataContext.getSourceGroupId(), className,
089 classPK, dependentFileName);
090 }
091
092 public static String getModelPath(StagedModel stagedModel) {
093 return getModelPath(stagedModel, null);
094 }
095
096 public static String getModelPath(
097 StagedModel stagedModel, String dependentFileName) {
098
099 StagedModelType stagedModelType = stagedModel.getStagedModelType();
100
101 if (stagedModel instanceof StagedGroupedModel) {
102 StagedGroupedModel stagedGroupedModel =
103 (StagedGroupedModel)stagedModel;
104
105 return getModelPath(
106 PATH_PREFIX_GROUP, stagedGroupedModel.getGroupId(),
107 stagedModelType.getClassName(), stagedModel.getPrimaryKeyObj(),
108 dependentFileName);
109 }
110 else {
111 return getModelPath(
112 PATH_PREFIX_COMPANY, stagedModel.getCompanyId(),
113 stagedModelType.getClassName(), stagedModel.getPrimaryKeyObj(),
114 dependentFileName);
115 }
116 }
117
118 public static String getPortletPath(
119 PortletDataContext portletDataContext, String portletId) {
120
121 StringBundler sb = new StringBundler(5);
122
123 sb.append(getRootPath(portletDataContext));
124 sb.append(StringPool.FORWARD_SLASH);
125 sb.append(PATH_PREFIX_PORTLET);
126 sb.append(StringPool.FORWARD_SLASH);
127 sb.append(portletId);
128
129 return sb.toString();
130 }
131
132 public static String getRootPath(PortletDataContext portletDataContext) {
133 return getRootPath(
134 PATH_PREFIX_GROUP, portletDataContext.getScopeGroupId());
135 }
136
137 public static String getSourceLayoutPath(
138 PortletDataContext portletDataContext, long layoutId) {
139
140 StringBundler sb = new StringBundler(5);
141
142 sb.append(getSourceRootPath(portletDataContext));
143 sb.append(StringPool.FORWARD_SLASH);
144 sb.append(PATH_PREFIX_LAYOUT);
145 sb.append(StringPool.FORWARD_SLASH);
146 sb.append(layoutId);
147
148 return sb.toString();
149 }
150
151 public static String getSourcePortletPath(
152 PortletDataContext portletDataContext, String portletId) {
153
154 StringBundler sb = new StringBundler(5);
155
156 sb.append(getSourceRootPath(portletDataContext));
157 sb.append(StringPool.FORWARD_SLASH);
158 sb.append(PATH_PREFIX_PORTLET);
159 sb.append(StringPool.FORWARD_SLASH);
160 sb.append(portletId);
161
162 return sb.toString();
163 }
164
165 public static String getSourceRootPath(
166 PortletDataContext portletDataContext) {
167
168 return getRootPath(
169 PATH_PREFIX_GROUP, portletDataContext.getSourceGroupId());
170 }
171
172 protected static String getModelPath(
173 String pathPrefix, long pathPrimaryKey, String className,
174 Serializable primaryKeyObj, String dependentFileName) {
175
176 StringBundler sb = new StringBundler(7);
177
178 sb.append(getRootPath(pathPrefix, pathPrimaryKey));
179 sb.append(StringPool.FORWARD_SLASH);
180 sb.append(className);
181 sb.append(StringPool.FORWARD_SLASH);
182 sb.append(primaryKeyObj.toString());
183
184 if (dependentFileName == null) {
185 sb.append(_FILE_EXTENSION_XML);
186 }
187 else {
188 sb.append(StringPool.FORWARD_SLASH);
189 sb.append(dependentFileName);
190 }
191
192 return sb.toString();
193 }
194
195 protected static String getRootPath(
196 String pathPrefix, long pathPrimaryKey) {
197
198 StringBundler sb = new StringBundler(4);
199
200 sb.append(StringPool.FORWARD_SLASH);
201 sb.append(pathPrefix);
202 sb.append(StringPool.FORWARD_SLASH);
203 sb.append(pathPrimaryKey);
204
205 return sb.toString();
206 }
207
208 private static final String _FILE_EXTENSION_XML = ".xml";
209
210 }