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