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