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