/**
* 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.friendly.url.service.impl;
import com.liferay.friendly.url.model.FriendlyURLEntry;
import com.liferay.friendly.url.model.FriendlyURLEntryLocalization;
import com.liferay.friendly.url.service.base.FriendlyURLEntryLocalizationLocalServiceBaseImpl;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.Validator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Map;
/**
* @author Pavel Savinov
*/
public class FriendlyURLEntryLocalizationLocalServiceImpl
extends FriendlyURLEntryLocalizationLocalServiceBaseImpl {
@Override
public FriendlyURLEntryLocalization addFriendlyURLEntryLocalization(
long friendlyURLEntryId, String urlTitle, String languageId)
throws PortalException {
FriendlyURLEntry friendlyURLEntry =
friendlyURLEntryPersistence.fetchByPrimaryKey(friendlyURLEntryId);
if (friendlyURLEntry == null) {
return null;
}
long companyId = friendlyURLEntry.getCompanyId();
long groupId = friendlyURLEntry.getGroupId();
long friendlyURLEntryLocalizationId = counterLocalService.increment();
FriendlyURLEntryLocalization friendlyURLEntryLocalization =
friendlyURLEntryLocalizationPersistence.create(
friendlyURLEntryLocalizationId);
friendlyURLEntryLocalization.setCompanyId(companyId);
friendlyURLEntryLocalization.setGroupId(groupId);
friendlyURLEntryLocalization.setFriendlyURLEntryId(friendlyURLEntryId);
friendlyURLEntryLocalization.setUrlTitle(urlTitle);
friendlyURLEntryLocalization.setLanguageId(languageId);
friendlyURLEntryLocalizationPersistence.update(
friendlyURLEntryLocalization);
return friendlyURLEntryLocalization;
}
@Override
public FriendlyURLEntryLocalization deleteFriendlyURLEntryLocalization(
long friendlyURLEntryId, String languageId)
throws PortalException {
FriendlyURLEntry friendlyURLEntry =
friendlyURLEntryPersistence.fetchByPrimaryKey(friendlyURLEntryId);
if (friendlyURLEntry == null) {
return null;
}
return friendlyURLEntryLocalizationPersistence.removeByG_F_L(
friendlyURLEntry.getGroupId(), friendlyURLEntryId, languageId);
}
@Override
public void deleteFriendlyURLEntryLocalizations(long friendlyURLEntryId)
throws PortalException {
FriendlyURLEntry friendlyURLEntry =
friendlyURLEntryPersistence.fetchByPrimaryKey(friendlyURLEntryId);
if (friendlyURLEntry == null) {
return;
}
friendlyURLEntryLocalizationPersistence.removeByG_F(
friendlyURLEntry.getGroupId(), friendlyURLEntryId);
}
@Override
public FriendlyURLEntryLocalization fetchFriendlyURLEntryLocalization(
long companyId, long groupId, long classNameId, long classPK,
String languageId) {
FriendlyURLEntry friendlyURLEntry =
friendlyURLEntryPersistence.fetchByG_C_C_C_M(
groupId, companyId, classNameId, classPK, true);
if (friendlyURLEntry == null) {
return null;
}
return friendlyURLEntryLocalizationPersistence.fetchByG_F_L(
groupId, friendlyURLEntry.getFriendlyURLEntryId(), languageId);
}
@Override
public FriendlyURLEntryLocalization fetchFriendlyURLEntryLocalization(
long friendlyURLEntryId, String languageId) {
FriendlyURLEntry friendlyURLEntry =
friendlyURLEntryPersistence.fetchByPrimaryKey(friendlyURLEntryId);
if (friendlyURLEntry == null) {
return null;
}
return friendlyURLEntryLocalizationPersistence.fetchByG_F_L(
friendlyURLEntry.getGroupId(), friendlyURLEntryId, languageId);
}
@Override
public FriendlyURLEntryLocalization fetchFriendlyURLEntryLocalization(
long groupId, String urlTitle, String languageId)
throws PortalException {
return friendlyURLEntryLocalizationPersistence.findByG_U_L(
groupId, urlTitle, languageId);
}
@Override
public List<FriendlyURLEntryLocalization> getFriendlyURLEntryLocalizations(
long friendlyURLEntryId) {
FriendlyURLEntry friendlyURLEntry =
friendlyURLEntryPersistence.fetchByPrimaryKey(friendlyURLEntryId);
if (friendlyURLEntry == null) {
return Collections.emptyList();
}
return friendlyURLEntryLocalizationPersistence.findByG_F(
friendlyURLEntry.getGroupId(), friendlyURLEntryId);
}
@Override
public int getFriendlyURLEntryLocalizationsCount(long friendlyURLEntryId) {
FriendlyURLEntry friendlyURLEntry =
friendlyURLEntryPersistence.fetchByPrimaryKey(friendlyURLEntryId);
if (friendlyURLEntry == null) {
return 0;
}
return friendlyURLEntryLocalizationPersistence.countByG_F(
friendlyURLEntry.getGroupId(), friendlyURLEntryId);
}
@Override
public List<FriendlyURLEntryLocalization>
updateFriendlyURLEntryLocalizations(
long friendlyURLEntryId, Map<Locale, String> urlTitleMap)
throws PortalException {
FriendlyURLEntry friendlyURLEntry =
friendlyURLEntryPersistence.fetchByPrimaryKey(friendlyURLEntryId);
if (friendlyURLEntry == null) {
return Collections.emptyList();
}
List<FriendlyURLEntryLocalization> friendlyURLEntryLocalizations =
new ArrayList<>();
long groupId = friendlyURLEntry.getGroupId();
for (Locale locale : LanguageUtil.getAvailableLocales(groupId)) {
String urlTitle = urlTitleMap.get(locale);
String languageId = LocaleUtil.toLanguageId(locale);
if (Validator.isNull(urlTitle)) {
deleteFriendlyURLEntryLocalization(
friendlyURLEntryId, languageId);
continue;
}
FriendlyURLEntryLocalization friendlyURLEntryLocalization =
friendlyURLEntryLocalizationPersistence.fetchByG_U_L(
groupId, urlTitle, languageId);
if (friendlyURLEntryLocalization != null) {
friendlyURLEntryLocalizations.add(friendlyURLEntryLocalization);
continue;
}
friendlyURLEntryLocalization = addFriendlyURLEntryLocalization(
friendlyURLEntryId, urlTitle, languageId);
friendlyURLEntryLocalizations.add(friendlyURLEntryLocalization);
}
return friendlyURLEntryLocalizations;
}
}