/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.site.service.impl;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.site.model.SiteFriendlyURL;
import com.liferay.site.service.base.SiteFriendlyURLLocalServiceBaseImpl;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
/**
* @author Pavel Savinov
*/
public class SiteFriendlyURLLocalServiceImpl
extends SiteFriendlyURLLocalServiceBaseImpl {
@Override
public SiteFriendlyURL addSiteFriendlyURL(
long userId, long companyId, long groupId, String friendlyURL,
String languageId, ServiceContext serviceContext)
throws PortalException {
User user = userLocalService.getUser(userId);
long siteFriendlyURLId = counterLocalService.increment();
SiteFriendlyURL siteFriendlyURL = siteFriendlyURLPersistence.create(
siteFriendlyURLId);
if (serviceContext != null) {
siteFriendlyURL.setUuid(serviceContext.getUuid());
}
siteFriendlyURL.setGroupId(groupId);
siteFriendlyURL.setCompanyId(companyId);
siteFriendlyURL.setUserId(user.getUserId());
siteFriendlyURL.setUserName(user.getFullName());
siteFriendlyURL.setFriendlyURL(friendlyURL);
siteFriendlyURL.setLanguageId(languageId);
return siteFriendlyURLPersistence.update(siteFriendlyURL);
}
@Override
public List<SiteFriendlyURL> addSiteFriendlyURLs(
long userId, long companyId, long groupId,
Map<Locale, String> friendlyURLMap, ServiceContext serviceContext)
throws PortalException {
List<SiteFriendlyURL> siteFriendlyURLs = new ArrayList<>();
for (Locale locale : LanguageUtil.getAvailableLocales(groupId)) {
String friendlyURL = friendlyURLMap.get(locale);
if (Validator.isNull(friendlyURL)) {
continue;
}
SiteFriendlyURL siteFriendlyURL = addSiteFriendlyURL(
userId, companyId, groupId, friendlyURL,
LocaleUtil.toLanguageId(locale), serviceContext);
siteFriendlyURLs.add(siteFriendlyURL);
}
return siteFriendlyURLs;
}
@Override
public SiteFriendlyURL deleteSiteFriendlyURL(
long companyId, long groupId, String languageId)
throws PortalException {
return siteFriendlyURLPersistence.removeByC_G_L(
companyId, groupId, languageId);
}
@Override
public SiteFriendlyURL deleteSiteFriendlyURL(
SiteFriendlyURL siteFriendlyURL) {
return siteFriendlyURLPersistence.remove(siteFriendlyURL);
}
@Override
public void deleteSiteFriendlyURLs(long companyId, long groupId) {
siteFriendlyURLPersistence.removeByC_G(companyId, groupId);
}
@Override
public SiteFriendlyURL fetchSiteFriendlyURL(
long companyId, long groupId, String languageId) {
return siteFriendlyURLPersistence.fetchByC_G_L(
companyId, groupId, languageId);
}
@Override
public SiteFriendlyURL fetchSiteFriendlyURLByFriendlyURL(
long companyId, String friendlyURL) {
return siteFriendlyURLPersistence.fetchByC_F(companyId, friendlyURL);
}
@Override
public List<SiteFriendlyURL> getSiteFriendlyURLs(
long companyId, long groupId) {
return siteFriendlyURLPersistence.findByC_G(companyId, groupId);
}
@Override
public SiteFriendlyURL updateSiteFriendlyURL(
long userId, long companyId, long groupId, String friendlyURL,
String languageId, ServiceContext serviceContext)
throws PortalException {
SiteFriendlyURL siteFriendlyURL =
siteFriendlyURLPersistence.fetchByC_G_L(
companyId, groupId, languageId);
if (siteFriendlyURL == null) {
siteFriendlyURL = addSiteFriendlyURL(
userId, companyId, groupId, friendlyURL, languageId,
serviceContext);
}
siteFriendlyURL.setFriendlyURL(friendlyURL);
return siteFriendlyURLPersistence.update(siteFriendlyURL);
}
@Override
public List<SiteFriendlyURL> updateSiteFriendlyURLs(
long userId, long companyId, long groupId,
Map<Locale, String> friendlyURLMap, ServiceContext serviceContext)
throws PortalException {
List<SiteFriendlyURL> siteFriendlyURLs = new ArrayList<>();
for (Locale locale : LanguageUtil.getAvailableLocales(groupId)) {
String friendlyURL = friendlyURLMap.get(locale);
String languageId = LocaleUtil.toLanguageId(locale);
SiteFriendlyURL siteFriendlyURL =
siteFriendlyURLPersistence.fetchByC_G_L(
companyId, groupId, languageId);
if (Validator.isNull(friendlyURL) && (siteFriendlyURL != null)) {
deleteSiteFriendlyURL(companyId, groupId, languageId);
}
siteFriendlyURL = updateSiteFriendlyURL(
userId, companyId, groupId, friendlyURL, languageId,
serviceContext);
siteFriendlyURLs.add(siteFriendlyURL);
}
return siteFriendlyURLs;
}
}