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