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