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(ThemeImpl.getDefaultRegularThemeId());
66 layoutSet.setColorSchemeId(
67 ColorSchemeImpl.getDefaultRegularColorSchemeId());
68 layoutSet.setWapThemeId(ThemeImpl.getDefaultWapThemeId());
69 layoutSet.setWapColorSchemeId(
70 ColorSchemeImpl.getDefaultWapColorSchemeId());
71 layoutSet.setCss(StringPool.BLANK);
72
73 layoutSetPersistence.update(layoutSet, false);
74
75 return layoutSet;
76 }
77
78 public void deleteLayoutSet(long groupId, boolean privateLayout)
79 throws PortalException, SystemException {
80
81 LayoutSet layoutSet = layoutSetPersistence.findByG_P(
82 groupId, privateLayout);
83
84
86 List<Layout> layouts = layoutPersistence.findByG_P_P(
87 groupId, privateLayout, LayoutConstants.DEFAULT_PARENT_LAYOUT_ID);
88
89 for (Layout layout : layouts) {
90 try {
91 layoutLocalService.deleteLayout(layout, false);
92 }
93 catch (NoSuchLayoutException nsle) {
94 }
95 }
96
97
99 imageLocalService.deleteImage(layoutSet.getLogoId());
100
101
103 layoutSetPersistence.removeByG_P(groupId, privateLayout);
104
105
107 counterLocalService.reset(
108 LayoutLocalServiceImpl.getCounterName(groupId, privateLayout));
109 }
110
111 public LayoutSet getLayoutSet(long groupId, boolean privateLayout)
112 throws PortalException, SystemException {
113
114 return layoutSetPersistence.findByG_P(groupId, privateLayout);
115 }
116
117 public LayoutSet getLayoutSet(String virtualHost)
118 throws PortalException, SystemException {
119
120 virtualHost = virtualHost.trim().toLowerCase();
121
122 return layoutSetPersistence.findByVirtualHost(virtualHost);
123 }
124
125 public void updateLogo(
126 long groupId, boolean privateLayout, boolean logo, File file)
127 throws PortalException, SystemException {
128
129 InputStream is = null;
130
131 if (logo) {
132 try{
133 is = new FileInputStream(file);
134 }
135 catch (IOException ioe) {
136 throw new SystemException(ioe);
137 }
138 }
139
140 updateLogo(groupId, privateLayout, logo, is);
141 }
142
143 public void updateLogo(
144 long groupId, boolean privateLayout, boolean logo, InputStream is)
145 throws PortalException, SystemException {
146
147 LayoutSet layoutSet = layoutSetPersistence.findByG_P(
148 groupId, privateLayout);
149
150 layoutSet.setLogo(logo);
151
152 if (logo) {
153 long logoId = layoutSet.getLogoId();
154
155 if (logoId <= 0) {
156 logoId = counterLocalService.increment();
157
158 layoutSet.setLogoId(logoId);
159 }
160 }
161
162 layoutSetPersistence.update(layoutSet, false);
163
164 if (logo) {
165 imageLocalService.updateImage(layoutSet.getLogoId(), is);
166 }
167 else {
168 imageLocalService.deleteImage(layoutSet.getLogoId());
169 }
170 }
171
172 public LayoutSet updateLookAndFeel(
173 long groupId, boolean privateLayout, String themeId,
174 String colorSchemeId, String css, boolean wapTheme)
175 throws PortalException, SystemException {
176
177 LayoutSet layoutSet = layoutSetPersistence.findByG_P(
178 groupId, privateLayout);
179
180 if (wapTheme) {
181 layoutSet.setWapThemeId(themeId);
182 layoutSet.setWapColorSchemeId(colorSchemeId);
183 }
184 else {
185 layoutSet.setThemeId(themeId);
186 layoutSet.setColorSchemeId(colorSchemeId);
187 layoutSet.setCss(css);
188 }
189
190 layoutSetPersistence.update(layoutSet, false);
191
192 if (PrefsPropsUtil.getBoolean(
193 PropsKeys.THEME_SYNC_ON_GROUP,
194 PropsValues.THEME_SYNC_ON_GROUP)) {
195
196 LayoutSet otherLayoutSet = layoutSetPersistence.findByG_P(
197 layoutSet.getGroupId(), layoutSet.isPrivateLayout());
198
199 if (wapTheme) {
200 otherLayoutSet.setWapThemeId(themeId);
201 otherLayoutSet.setWapColorSchemeId(colorSchemeId);
202 }
203 else {
204 otherLayoutSet.setThemeId(themeId);
205 otherLayoutSet.setColorSchemeId(colorSchemeId);
206 }
207
208 layoutSetPersistence.update(otherLayoutSet, false);
209 }
210
211 return layoutSet;
212 }
213
214 public LayoutSet updatePageCount(long groupId, boolean privateLayout)
215 throws PortalException, SystemException {
216
217 int pageCount = layoutPersistence.countByG_P(groupId, privateLayout);
218
219 LayoutSet layoutSet = layoutSetPersistence.findByG_P(
220 groupId, privateLayout);
221
222 layoutSet.setPageCount(pageCount);
223
224 layoutSetPersistence.update(layoutSet, false);
225
226 return layoutSet;
227 }
228
229 public LayoutSet updateVirtualHost(
230 long groupId, boolean privateLayout, String virtualHost)
231 throws PortalException, SystemException {
232
233 virtualHost = virtualHost.trim().toLowerCase();
234
235 if (virtualHost.startsWith(Http.HTTP_WITH_SLASH) ||
236 virtualHost.startsWith(Http.HTTPS_WITH_SLASH)) {
237
238 throw new LayoutSetVirtualHostException();
239 }
240
241 LayoutSet layoutSet = layoutSetPersistence.findByG_P(
242 groupId, privateLayout);
243
244 if (Validator.isNotNull(virtualHost)) {
245 try {
246 LayoutSet virtualHostLayoutSet = getLayoutSet(virtualHost);
247
248 if (!layoutSet.equals(virtualHostLayoutSet)) {
249 throw new LayoutSetVirtualHostException();
250 }
251 }
252 catch (NoSuchLayoutSetException nslse) {
253 }
254
255 try {
256 companyLocalService.getCompanyByVirtualHost(virtualHost);
257
258 throw new LayoutSetVirtualHostException();
259 }
260 catch (NoSuchCompanyException nsce) {
261 }
262 }
263
264 layoutSet.setVirtualHost(virtualHost);
265
266 layoutSetPersistence.update(layoutSet, false);
267
268 return layoutSet;
269 }
270
271 }