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 if (stagedModel instanceof StagedGroupedModel) {
100 StagedGroupedModel stagedGroupedModel =
101 (StagedGroupedModel)stagedModel;
102
103 return getModelPath(
104 PATH_PREFIX_GROUP, stagedGroupedModel.getGroupId(),
105 stagedModel.getModelClassName(), stagedModel.getPrimaryKeyObj(),
106 dependentFileName);
107 }
108 else {
109 return getModelPath(
110 PATH_PREFIX_COMPANY, stagedModel.getCompanyId(),
111 stagedModel.getModelClassName(), stagedModel.getPrimaryKeyObj(),
112 dependentFileName);
113 }
114 }
115
116 public static String getPortletPath(
117 PortletDataContext portletDataContext, String portletId) {
118
119 StringBundler sb = new StringBundler(5);
120
121 sb.append(getRootPath(portletDataContext));
122 sb.append(StringPool.FORWARD_SLASH);
123 sb.append(PATH_PREFIX_PORTLET);
124 sb.append(StringPool.FORWARD_SLASH);
125 sb.append(portletId);
126
127 return sb.toString();
128 }
129
130 public static String getRootPath(PortletDataContext portletDataContext) {
131 return getRootPath(
132 PATH_PREFIX_GROUP, portletDataContext.getScopeGroupId());
133 }
134
135 public static String getSourceLayoutPath(
136 PortletDataContext portletDataContext, long layoutId) {
137
138 StringBundler sb = new StringBundler(5);
139
140 sb.append(getSourceRootPath(portletDataContext));
141 sb.append(StringPool.FORWARD_SLASH);
142 sb.append(PATH_PREFIX_LAYOUT);
143 sb.append(StringPool.FORWARD_SLASH);
144 sb.append(layoutId);
145
146 return sb.toString();
147 }
148
149 public static String getSourcePortletPath(
150 PortletDataContext portletDataContext, String portletId) {
151
152 StringBundler sb = new StringBundler(5);
153
154 sb.append(getSourceRootPath(portletDataContext));
155 sb.append(StringPool.FORWARD_SLASH);
156 sb.append(PATH_PREFIX_PORTLET);
157 sb.append(StringPool.FORWARD_SLASH);
158 sb.append(portletId);
159
160 return sb.toString();
161 }
162
163 public static String getSourceRootPath(
164 PortletDataContext portletDataContext) {
165
166 return getRootPath(
167 PATH_PREFIX_GROUP, portletDataContext.getSourceGroupId());
168 }
169
170 protected static String getModelPath(
171 String pathPrefix, long pathPrimaryKey, String className,
172 Serializable primaryKeyObj, String dependentFileName) {
173
174 StringBundler sb = new StringBundler(7);
175
176 sb.append(getRootPath(pathPrefix, pathPrimaryKey));
177 sb.append(StringPool.FORWARD_SLASH);
178 sb.append(className);
179 sb.append(StringPool.FORWARD_SLASH);
180 sb.append(primaryKeyObj.toString());
181
182 if (dependentFileName == null) {
183 sb.append(_FILE_EXTENSION_XML);
184 }
185 else {
186 sb.append(StringPool.FORWARD_SLASH);
187 sb.append(dependentFileName);
188 }
189
190 return sb.toString();
191 }
192
193 protected static String getRootPath(
194 String pathPrefix, long pathPrimaryKey) {
195
196 StringBundler sb = new StringBundler(4);
197
198 sb.append(StringPool.FORWARD_SLASH);
199 sb.append(pathPrefix);
200 sb.append(StringPool.FORWARD_SLASH);
201 sb.append(pathPrimaryKey);
202
203 return sb.toString();
204 }
205
206 private static final String _FILE_EXTENSION_XML = ".xml";
207
208 }