PageRenderTime 51ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/modules/apps/site-navigation/site-navigation-service/src/main/java/com/liferay/site/navigation/service/impl/SiteNavigationMenuLocalServiceImpl.java

http://github.com/liferay/liferay-portal
Java | 367 lines | 262 code | 84 blank | 21 comment | 12 complexity | 5b796350d2189a57d4403fc4eba21a2e MD5 | raw file
Possible License(s): LGPL-2.0
  1. /**
  2. * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
  3. *
  4. * This library is free software; you can redistribute it and/or modify it under
  5. * the terms of the GNU Lesser General Public License as published by the Free
  6. * Software Foundation; either version 2.1 of the License, or (at your option)
  7. * any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  11. * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
  12. * details.
  13. */
  14. package com.liferay.site.navigation.service.impl;
  15. import com.liferay.portal.aop.AopService;
  16. import com.liferay.portal.dao.orm.custom.sql.CustomSQL;
  17. import com.liferay.portal.kernel.dao.orm.WildcardMode;
  18. import com.liferay.portal.kernel.exception.PortalException;
  19. import com.liferay.portal.kernel.model.ModelHintsUtil;
  20. import com.liferay.portal.kernel.model.ResourceConstants;
  21. import com.liferay.portal.kernel.model.SystemEventConstants;
  22. import com.liferay.portal.kernel.model.User;
  23. import com.liferay.portal.kernel.service.ResourceLocalService;
  24. import com.liferay.portal.kernel.service.ServiceContext;
  25. import com.liferay.portal.kernel.service.UserLocalService;
  26. import com.liferay.portal.kernel.systemevent.SystemEvent;
  27. import com.liferay.portal.kernel.util.OrderByComparator;
  28. import com.liferay.portal.kernel.util.Validator;
  29. import com.liferay.site.navigation.constants.SiteNavigationConstants;
  30. import com.liferay.site.navigation.exception.DuplicateSiteNavigationMenuException;
  31. import com.liferay.site.navigation.exception.SiteNavigationMenuNameException;
  32. import com.liferay.site.navigation.model.SiteNavigationMenu;
  33. import com.liferay.site.navigation.model.SiteNavigationMenuItem;
  34. import com.liferay.site.navigation.service.SiteNavigationMenuItemLocalService;
  35. import com.liferay.site.navigation.service.base.SiteNavigationMenuLocalServiceBaseImpl;
  36. import java.util.Date;
  37. import java.util.List;
  38. import java.util.Objects;
  39. import org.osgi.service.component.annotations.Component;
  40. import org.osgi.service.component.annotations.Reference;
  41. /**
  42. * @author Pavel Savinov
  43. */
  44. @Component(
  45. property = "model.class.name=com.liferay.site.navigation.model.SiteNavigationMenu",
  46. service = AopService.class
  47. )
  48. public class SiteNavigationMenuLocalServiceImpl
  49. extends SiteNavigationMenuLocalServiceBaseImpl {
  50. @Override
  51. public SiteNavigationMenu addSiteNavigationMenu(
  52. long userId, long groupId, String name, int type, boolean auto,
  53. ServiceContext serviceContext)
  54. throws PortalException {
  55. // Site navigation menu
  56. validate(groupId, name);
  57. User user = _userLocalService.getUser(userId);
  58. long siteNavigationMenuId = counterLocalService.increment();
  59. SiteNavigationMenu siteNavigationMenu =
  60. siteNavigationMenuPersistence.create(siteNavigationMenuId);
  61. siteNavigationMenu.setUuid(serviceContext.getUuid());
  62. siteNavigationMenu.setGroupId(groupId);
  63. siteNavigationMenu.setCompanyId(user.getCompanyId());
  64. siteNavigationMenu.setUserId(userId);
  65. siteNavigationMenu.setUserName(user.getFullName());
  66. siteNavigationMenu.setName(name);
  67. siteNavigationMenu.setType(type);
  68. siteNavigationMenu.setAuto(auto);
  69. siteNavigationMenu = siteNavigationMenuPersistence.update(
  70. siteNavigationMenu);
  71. // Resources
  72. _resourceLocalService.addResources(
  73. siteNavigationMenu.getCompanyId(), siteNavigationMenu.getGroupId(),
  74. siteNavigationMenu.getUserId(), SiteNavigationMenu.class.getName(),
  75. siteNavigationMenu.getSiteNavigationMenuId(), false, true, true);
  76. _updateOldSiteNavigationMenuType(siteNavigationMenu, type);
  77. return siteNavigationMenu;
  78. }
  79. @Override
  80. public SiteNavigationMenu addSiteNavigationMenu(
  81. long userId, long groupId, String name, int type,
  82. ServiceContext serviceContext)
  83. throws PortalException {
  84. return addSiteNavigationMenu(
  85. userId, groupId, name, type, false, serviceContext);
  86. }
  87. @Override
  88. public SiteNavigationMenu addSiteNavigationMenu(
  89. long userId, long groupId, String name,
  90. ServiceContext serviceContext)
  91. throws PortalException {
  92. return addSiteNavigationMenu(
  93. userId, groupId, name, SiteNavigationConstants.TYPE_DEFAULT,
  94. serviceContext);
  95. }
  96. @Override
  97. public SiteNavigationMenu deleteSiteNavigationMenu(
  98. long siteNavigationMenuId)
  99. throws PortalException {
  100. return siteNavigationMenuLocalService.deleteSiteNavigationMenu(
  101. getSiteNavigationMenu(siteNavigationMenuId));
  102. }
  103. @Override
  104. @SystemEvent(type = SystemEventConstants.TYPE_DELETE)
  105. public SiteNavigationMenu deleteSiteNavigationMenu(
  106. SiteNavigationMenu siteNavigationMenu)
  107. throws PortalException {
  108. // Site navigation menu
  109. siteNavigationMenuPersistence.remove(
  110. siteNavigationMenu.getSiteNavigationMenuId());
  111. // Resources
  112. _resourceLocalService.deleteResource(
  113. siteNavigationMenu.getCompanyId(),
  114. SiteNavigationMenu.class.getName(),
  115. ResourceConstants.SCOPE_INDIVIDUAL,
  116. siteNavigationMenu.getSiteNavigationMenuId());
  117. // Site navigation menu items
  118. List<SiteNavigationMenuItem> siteNavigationMenuItems =
  119. _siteNavigationMenuItemLocalService.getSiteNavigationMenuItems(
  120. siteNavigationMenu.getSiteNavigationMenuId());
  121. for (SiteNavigationMenuItem siteNavigationMenuItem :
  122. siteNavigationMenuItems) {
  123. _siteNavigationMenuItemLocalService.deleteSiteNavigationMenuItem(
  124. siteNavigationMenuItem.getSiteNavigationMenuItemId());
  125. }
  126. return siteNavigationMenu;
  127. }
  128. @Override
  129. public void deleteSiteNavigationMenus(long groupId) {
  130. siteNavigationMenuPersistence.removeByGroupId(groupId);
  131. }
  132. @Override
  133. public SiteNavigationMenu fetchPrimarySiteNavigationMenu(long groupId) {
  134. return fetchSiteNavigationMenu(
  135. groupId, SiteNavigationConstants.TYPE_PRIMARY);
  136. }
  137. @Override
  138. public SiteNavigationMenu fetchSiteNavigationMenu(long groupId, int type) {
  139. List<SiteNavigationMenu> siteNavigationMenus =
  140. siteNavigationMenuPersistence.findByG_T(groupId, type, 0, 1);
  141. if (siteNavigationMenus.isEmpty()) {
  142. return null;
  143. }
  144. return siteNavigationMenus.get(0);
  145. }
  146. @Override
  147. public SiteNavigationMenu fetchSiteNavigationMenuByName(
  148. long groupId, String name) {
  149. return siteNavigationMenuPersistence.fetchByG_N(groupId, name);
  150. }
  151. @Override
  152. public List<SiteNavigationMenu> getAutoSiteNavigationMenus(long groupId) {
  153. return siteNavigationMenuPersistence.findByG_A(groupId, true);
  154. }
  155. @Override
  156. public List<SiteNavigationMenu> getSiteNavigationMenus(long groupId) {
  157. return siteNavigationMenuPersistence.findByGroupId(groupId);
  158. }
  159. @Override
  160. public List<SiteNavigationMenu> getSiteNavigationMenus(
  161. long groupId, int start, int end,
  162. OrderByComparator<SiteNavigationMenu> orderByComparator) {
  163. return siteNavigationMenuPersistence.findByGroupId(
  164. groupId, start, end, orderByComparator);
  165. }
  166. @Override
  167. public List<SiteNavigationMenu> getSiteNavigationMenus(
  168. long groupId, String keywords, int start, int end,
  169. OrderByComparator<SiteNavigationMenu> orderByComparator) {
  170. return siteNavigationMenuPersistence.findByG_LikeN(
  171. groupId,
  172. _customSQL.keywords(keywords, false, WildcardMode.SURROUND)[0],
  173. start, end, orderByComparator);
  174. }
  175. @Override
  176. public int getSiteNavigationMenusCount(long groupId) {
  177. return siteNavigationMenuPersistence.countByGroupId(groupId);
  178. }
  179. @Override
  180. public int getSiteNavigationMenusCount(long groupId, String keywords) {
  181. return siteNavigationMenuPersistence.countByG_LikeN(
  182. groupId,
  183. _customSQL.keywords(keywords, false, WildcardMode.SURROUND)[0]);
  184. }
  185. @Override
  186. public SiteNavigationMenu updateSiteNavigationMenu(
  187. long userId, long siteNavigationMenuId, int type, boolean auto,
  188. ServiceContext serviceContext)
  189. throws PortalException {
  190. SiteNavigationMenu siteNavigationMenu = getSiteNavigationMenu(
  191. siteNavigationMenuId);
  192. _updateOldSiteNavigationMenuType(siteNavigationMenu, type);
  193. User user = _userLocalService.getUser(userId);
  194. siteNavigationMenu.setUserId(userId);
  195. siteNavigationMenu.setUserName(user.getFullName());
  196. siteNavigationMenu.setModifiedDate(
  197. serviceContext.getModifiedDate(new Date()));
  198. siteNavigationMenu.setType(type);
  199. siteNavigationMenu.setAuto(auto);
  200. return siteNavigationMenuPersistence.update(siteNavigationMenu);
  201. }
  202. @Override
  203. public SiteNavigationMenu updateSiteNavigationMenu(
  204. long userId, long siteNavigationMenuId, long groupId, String name,
  205. int type, boolean auto)
  206. throws PortalException {
  207. SiteNavigationMenu siteNavigationMenu =
  208. siteNavigationMenuPersistence.findByPrimaryKey(
  209. siteNavigationMenuId);
  210. siteNavigationMenu.setGroupId(groupId);
  211. siteNavigationMenu.setUserId(userId);
  212. siteNavigationMenu.setName(name);
  213. siteNavigationMenu.setType(type);
  214. siteNavigationMenu.setAuto(auto);
  215. return siteNavigationMenuPersistence.update(siteNavigationMenu);
  216. }
  217. @Override
  218. public SiteNavigationMenu updateSiteNavigationMenu(
  219. long userId, long siteNavigationMenuId, String name,
  220. ServiceContext serviceContext)
  221. throws PortalException {
  222. SiteNavigationMenu siteNavigationMenu = getSiteNavigationMenu(
  223. siteNavigationMenuId);
  224. if (Objects.equals(siteNavigationMenu.getName(), name)) {
  225. return siteNavigationMenu;
  226. }
  227. User user = _userLocalService.getUser(userId);
  228. validate(siteNavigationMenu.getGroupId(), name);
  229. siteNavigationMenu.setUserId(userId);
  230. siteNavigationMenu.setUserName(user.getFullName());
  231. siteNavigationMenu.setModifiedDate(
  232. serviceContext.getModifiedDate(new Date()));
  233. siteNavigationMenu.setName(name);
  234. return siteNavigationMenuPersistence.update(siteNavigationMenu);
  235. }
  236. protected void validate(long groupId, String name) throws PortalException {
  237. if (Validator.isNull(name)) {
  238. throw new SiteNavigationMenuNameException();
  239. }
  240. int nameMaxLength = ModelHintsUtil.getMaxLength(
  241. SiteNavigationMenu.class.getName(), "name");
  242. if (name.length() > nameMaxLength) {
  243. throw new SiteNavigationMenuNameException(
  244. "Maximum length of name exceeded");
  245. }
  246. SiteNavigationMenu siteNavigationMenu =
  247. siteNavigationMenuPersistence.fetchByG_N(groupId, name);
  248. if (siteNavigationMenu != null) {
  249. throw new DuplicateSiteNavigationMenuException(name);
  250. }
  251. }
  252. private void _updateOldSiteNavigationMenuType(
  253. SiteNavigationMenu siteNavigationMenu, int type) {
  254. if (type == SiteNavigationConstants.TYPE_DEFAULT) {
  255. return;
  256. }
  257. List<SiteNavigationMenu> siteNavigationMenus =
  258. siteNavigationMenuPersistence.findByG_T(
  259. siteNavigationMenu.getGroupId(), type, 0, 1);
  260. if (siteNavigationMenus.isEmpty()) {
  261. return;
  262. }
  263. SiteNavigationMenu actualTypeSiteNavigationMenu =
  264. siteNavigationMenus.get(0);
  265. if ((actualTypeSiteNavigationMenu.getType() == type) &&
  266. (actualTypeSiteNavigationMenu.getSiteNavigationMenuId() ==
  267. siteNavigationMenu.getSiteNavigationMenuId())) {
  268. return;
  269. }
  270. actualTypeSiteNavigationMenu.setType(
  271. SiteNavigationConstants.TYPE_DEFAULT);
  272. siteNavigationMenuPersistence.update(actualTypeSiteNavigationMenu);
  273. }
  274. @Reference
  275. private CustomSQL _customSQL;
  276. @Reference
  277. private ResourceLocalService _resourceLocalService;
  278. @Reference
  279. private SiteNavigationMenuItemLocalService
  280. _siteNavigationMenuItemLocalService;
  281. @Reference
  282. private UserLocalService _userLocalService;
  283. }