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(".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 layoutId) {
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(layoutId);
065
066 return sb.toString();
067 }
068
069 public static String getModelPath(
070 long groupId, String className, long classPK) {
071
072 return getModelPath(
073 _PATH_PREFIX_GROUP, groupId, className, classPK, null);
074 }
075
076 public static String getModelPath(
077 PortletDataContext portletDataContext, String className, long classPK) {
078
079 return getModelPath(portletDataContext, className, classPK, null);
080 }
081
082 public static String getModelPath(
083 PortletDataContext portletDataContext, String className, long classPK,
084 String dependentFileName) {
085
086 return getModelPath(
087 _PATH_PREFIX_GROUP, portletDataContext.getSourceGroupId(),
088 className, classPK, dependentFileName);
089 }
090
091 public static String getModelPath(StagedModel stagedModel) {
092 return getModelPath(stagedModel, null);
093 }
094
095 public static String getModelPath(
096 StagedModel stagedModel, String dependentFileName) {
097
098 if (stagedModel instanceof StagedGroupedModel) {
099 StagedGroupedModel stagedGroupedModel =
100 (StagedGroupedModel)stagedModel;
101
102 return getModelPath(
103 _PATH_PREFIX_GROUP, stagedGroupedModel.getGroupId(),
104 stagedModel.getModelClassName(), stagedModel.getPrimaryKeyObj(),
105 dependentFileName);
106 }
107 else {
108 return getModelPath(
109 _PATH_PREFIX_COMPANY, stagedModel.getCompanyId(),
110 stagedModel.getModelClassName(), stagedModel.getPrimaryKeyObj(),
111 dependentFileName);
112 }
113 }
114
115 public static String getPortletPath(
116 PortletDataContext portletDataContext, String portletId) {
117
118 StringBundler sb = new StringBundler(5);
119
120 sb.append(getRootPath(portletDataContext));
121 sb.append(StringPool.FORWARD_SLASH);
122 sb.append(_PATH_PREFIX_PORTLET);
123 sb.append(StringPool.FORWARD_SLASH);
124 sb.append(portletId);
125
126 return sb.toString();
127 }
128
129 public static String getRootPath(PortletDataContext portletDataContext) {
130 return getRootPath(
131 _PATH_PREFIX_GROUP, portletDataContext.getScopeGroupId());
132 }
133
134 public static String getSourceLayoutPath(
135 PortletDataContext portletDataContext, long layoutId) {
136
137 StringBundler sb = new StringBundler(5);
138
139 sb.append(getSourceRootPath(portletDataContext));
140 sb.append(StringPool.FORWARD_SLASH);
141 sb.append(_PATH_PREFIX_LAYOUT);
142 sb.append(StringPool.FORWARD_SLASH);
143 sb.append(layoutId);
144
145 return sb.toString();
146 }
147
148 public static String getSourcePortletPath(
149 PortletDataContext portletDataContext, String portletId) {
150
151 StringBundler sb = new StringBundler(5);
152
153 sb.append(getSourceRootPath(portletDataContext));
154 sb.append(StringPool.FORWARD_SLASH);
155 sb.append(_PATH_PREFIX_PORTLET);
156 sb.append(StringPool.FORWARD_SLASH);
157 sb.append(portletId);
158
159 return sb.toString();
160 }
161
162 public static String getSourceRootPath(
163 PortletDataContext portletDataContext) {
164
165 return getRootPath(
166 _PATH_PREFIX_GROUP, portletDataContext.getSourceGroupId());
167 }
168
169 protected static String getModelPath(
170 String pathPrefix, long pathPrimaryKey, String className,
171 Serializable primaryKeyObj, String dependentFileName) {
172
173 StringBundler sb = new StringBundler(7);
174
175 sb.append(getRootPath(pathPrefix, pathPrimaryKey));
176 sb.append(StringPool.FORWARD_SLASH);
177 sb.append(className);
178 sb.append(StringPool.FORWARD_SLASH);
179 sb.append(primaryKeyObj.toString());
180
181 if (dependentFileName == null) {
182 sb.append(".xml");
183 }
184 else {
185 sb.append(StringPool.FORWARD_SLASH);
186 sb.append(dependentFileName);
187 }
188
189 return sb.toString();
190 }
191
192 protected static String getRootPath(
193 String pathPrefix, long pathPrimaryKey) {
194
195 StringBundler sb = new StringBundler(4);
196
197 sb.append(StringPool.FORWARD_SLASH);
198 sb.append(pathPrefix);
199 sb.append(StringPool.FORWARD_SLASH);
200 sb.append(pathPrimaryKey);
201
202 return sb.toString();
203 }
204
205 }