1
22
23 package com.liferay.portal.service.impl;
24
25 import com.liferay.portal.LayoutSetVirtualHostException;
26 import com.liferay.portal.NoSuchCompanyException;
27 import com.liferay.portal.NoSuchLayoutException;
28 import com.liferay.portal.NoSuchLayoutSetException;
29 import com.liferay.portal.PortalException;
30 import com.liferay.portal.SystemException;
31 import com.liferay.portal.kernel.util.Http;
32 import com.liferay.portal.kernel.util.StringPool;
33 import com.liferay.portal.kernel.util.Validator;
34 import com.liferay.portal.model.Group;
35 import com.liferay.portal.model.Layout;
36 import com.liferay.portal.model.LayoutConstants;
37 import com.liferay.portal.model.LayoutSet;
38 import com.liferay.portal.model.impl.ColorSchemeImpl;
39 import com.liferay.portal.model.impl.ThemeImpl;
40 import com.liferay.portal.service.base.LayoutSetLocalServiceBaseImpl;
41 import com.liferay.portal.util.PrefsPropsUtil;
42 import com.liferay.portal.util.PropsKeys;
43 import com.liferay.portal.util.PropsValues;
44
45 import java.io.File;
46 import java.io.FileInputStream;
47 import java.io.IOException;
48 import java.io.InputStream;
49
50 import java.util.List;
51
52
60 public class LayoutSetLocalServiceImpl extends LayoutSetLocalServiceBaseImpl {
61
62 public LayoutSet addLayoutSet(long groupId, boolean privateLayout)
63 throws PortalException, SystemException {
64
65 Group group = groupPersistence.findByPrimaryKey(groupId);
66
67 long layoutSetId = counterLocalService.increment();
68
69 LayoutSet layoutSet = layoutSetPersistence.create(layoutSetId);
70
71 layoutSet.setGroupId(groupId);
72 layoutSet.setCompanyId(group.getCompanyId());
73 layoutSet.setPrivateLayout(privateLayout);
74 layoutSet.setThemeId(
75 ThemeImpl.getDefaultRegularThemeId(group.getCompanyId()));
76 layoutSet.setColorSchemeId(
77 ColorSchemeImpl.getDefaultRegularColorSchemeId());
78 layoutSet.setWapThemeId(
79 ThemeImpl.getDefaultWapThemeId(group.getCompanyId()));
80 layoutSet.setWapColorSchemeId(
81 ColorSchemeImpl.getDefaultWapColorSchemeId());
82 layoutSet.setCss(StringPool.BLANK);
83
84 layoutSetPersistence.update(layoutSet, false);
85
86 return layoutSet;
87 }
88
89 public void deleteLayoutSet(long groupId, boolean privateLayout)
90 throws PortalException, SystemException {
91
92 LayoutSet layoutSet = layoutSetPersistence.findByG_P(
93 groupId, privateLayout);
94
95
97 List<Layout> layouts = layoutPersistence.findByG_P_P(
98 groupId, privateLayout, LayoutConstants.DEFAULT_PARENT_LAYOUT_ID);
99
100 for (Layout layout : layouts) {
101 try {
102 layoutLocalService.deleteLayout(layout, false);
103 }
104 catch (NoSuchLayoutException nsle) {
105 }
106 }
107
108
110 imageLocalService.deleteImage(layoutSet.getLogoId());
111
112
114 layoutSetPersistence.removeByG_P(groupId, privateLayout);
115 }
116
117 public LayoutSet getLayoutSet(long groupId, boolean privateLayout)
118 throws PortalException, SystemException {
119
120 return layoutSetPersistence.findByG_P(groupId, privateLayout);
121 }
122
123 public LayoutSet getLayoutSet(String virtualHost)
124 throws PortalException, SystemException {
125
126 virtualHost = virtualHost.trim().toLowerCase();
127
128 return layoutSetPersistence.findByVirtualHost(virtualHost);
129 }
130
131 public void updateLogo(
132 long groupId, boolean privateLayout, boolean logo, File file)
133 throws PortalException, SystemException {
134
135 InputStream is = null;
136
137 if (logo) {
138 try{
139 is = new FileInputStream(file);
140 }
141 catch (IOException ioe) {
142 throw new SystemException(ioe);
143 }
144 }
145
146 updateLogo(groupId, privateLayout, logo, is);
147 }
148
149 public void updateLogo(
150 long groupId, boolean privateLayout, boolean logo, InputStream is)
151 throws PortalException, SystemException {
152
153 LayoutSet layoutSet = layoutSetPersistence.findByG_P(
154 groupId, privateLayout);
155
156 layoutSet.setLogo(logo);
157
158 if (logo) {
159 long logoId = layoutSet.getLogoId();
160
161 if (logoId <= 0) {
162 logoId = counterLocalService.increment();
163
164 layoutSet.setLogoId(logoId);
165 }
166 }
167
168 layoutSetPersistence.update(layoutSet, false);
169
170 if (logo) {
171 imageLocalService.updateImage(layoutSet.getLogoId(), is);
172 }
173 else {
174 imageLocalService.deleteImage(layoutSet.getLogoId());
175 }
176 }
177
178 public void updateLookAndFeel(
179 long groupId, String themeId, String colorSchemeId, String css,
180 boolean wapTheme)
181 throws PortalException, SystemException {
182
183 updateLookAndFeel(
184 groupId, false, themeId, colorSchemeId, css, wapTheme);
185 updateLookAndFeel(
186 groupId, true, themeId, colorSchemeId, css, wapTheme);
187 }
188
189 public LayoutSet updateLookAndFeel(
190 long groupId, boolean privateLayout, String themeId,
191 String colorSchemeId, String css, boolean wapTheme)
192 throws PortalException, SystemException {
193
194 LayoutSet layoutSet = layoutSetPersistence.findByG_P(
195 groupId, privateLayout);
196
197 if (wapTheme) {
198 layoutSet.setWapThemeId(themeId);
199 layoutSet.setWapColorSchemeId(colorSchemeId);
200 }
201 else {
202 layoutSet.setThemeId(themeId);
203 layoutSet.setColorSchemeId(colorSchemeId);
204 layoutSet.setCss(css);
205 }
206
207 layoutSetPersistence.update(layoutSet, false);
208
209 if (PrefsPropsUtil.getBoolean(
210 PropsKeys.THEME_SYNC_ON_GROUP,
211 PropsValues.THEME_SYNC_ON_GROUP)) {
212
213 LayoutSet otherLayoutSet = layoutSetPersistence.findByG_P(
214 layoutSet.getGroupId(), layoutSet.isPrivateLayout());
215
216 if (wapTheme) {
217 otherLayoutSet.setWapThemeId(themeId);
218 otherLayoutSet.setWapColorSchemeId(colorSchemeId);
219 }
220 else {
221 otherLayoutSet.setThemeId(themeId);
222 otherLayoutSet.setColorSchemeId(colorSchemeId);
223 }
224
225 layoutSetPersistence.update(otherLayoutSet, false);
226 }
227
228 return layoutSet;
229 }
230
231 public LayoutSet updatePageCount(long groupId, boolean privateLayout)
232 throws PortalException, SystemException {
233
234 int pageCount = layoutPersistence.countByG_P(groupId, privateLayout);
235
236 LayoutSet layoutSet = layoutSetPersistence.findByG_P(
237 groupId, privateLayout);
238
239 layoutSet.setPageCount(pageCount);
240
241 layoutSetPersistence.update(layoutSet, false);
242
243 return layoutSet;
244 }
245
246 public LayoutSet updateVirtualHost(
247 long groupId, boolean privateLayout, String virtualHost)
248 throws PortalException, SystemException {
249
250 virtualHost = virtualHost.trim().toLowerCase();
251
252 if (virtualHost.startsWith(Http.HTTP_WITH_SLASH) ||
253 virtualHost.startsWith(Http.HTTPS_WITH_SLASH)) {
254
255 throw new LayoutSetVirtualHostException();
256 }
257
258 LayoutSet layoutSet = layoutSetPersistence.findByG_P(
259 groupId, privateLayout);
260
261 if (Validator.isNotNull(virtualHost)) {
262 try {
263 LayoutSet virtualHostLayoutSet = getLayoutSet(virtualHost);
264
265 if (!layoutSet.equals(virtualHostLayoutSet)) {
266 throw new LayoutSetVirtualHostException();
267 }
268 }
269 catch (NoSuchLayoutSetException nslse) {
270 }
271
272 try {
273 companyLocalService.getCompanyByVirtualHost(virtualHost);
274
275 throw new LayoutSetVirtualHostException();
276 }
277 catch (NoSuchCompanyException nsce) {
278 }
279 }
280
281 layoutSet.setVirtualHost(virtualHost);
282
283 layoutSetPersistence.update(layoutSet, false);
284
285 return layoutSet;
286 }
287
288 }