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