
com.liferay.headless.delivery.internal.resource.v1_0.LanguageResourceImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.headless.delivery.impl
Show all versions of com.liferay.headless.delivery.impl
Liferay Headless Delivery Implementation
The newest version!
/**
* SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
package com.liferay.headless.delivery.internal.resource.v1_0;
import com.liferay.headless.delivery.dto.v1_0.Language;
import com.liferay.headless.delivery.resource.v1_0.LanguageResource;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.service.GroupService;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.Localization;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.vulcan.pagination.Page;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ServiceScope;
/**
* @author Javier Gamarra
*/
@Component(
properties = "OSGI-INF/liferay/rest/v1_0/language.properties",
scope = ServiceScope.PROTOTYPE, service = LanguageResource.class
)
public class LanguageResourceImpl extends BaseLanguageResourceImpl {
@Override
public Page getAssetLibraryLanguagesPage(Long assetLibraryId)
throws Exception {
return getSiteLanguagesPage(assetLibraryId);
}
@Override
public Page getSiteLanguagesPage(Long siteId) throws Exception {
Set availableLocales = _language.getAvailableLocales(siteId);
Locale defaultLocale = _getDefaultLocale(siteId);
return Page.of(
transform(
availableLocales,
availableLocale -> _toLanguage(
contextAcceptLanguage.isAcceptAllLanguages(),
availableLocales, defaultLocale, availableLocale,
contextAcceptLanguage.getPreferredLocale())));
}
private Locale _getDefaultLocale(long groupId) throws Exception {
Group group = _groupService.getGroup(groupId);
String defaultLanguageId = _localization.getDefaultLanguageId(
group.getName());
if (Validator.isNotNull(defaultLanguageId)) {
return LocaleUtil.fromLanguageId(defaultLanguageId);
}
return LocaleUtil.getSiteDefault();
}
private Language _toLanguage(
boolean acceptAllLanguages, Set availableLocales,
Locale defaultLocale, Locale locale, Locale preferredLocale) {
return new Language() {
{
setCountryName(() -> locale.getDisplayCountry(preferredLocale));
setCountryName_i18n(
() -> {
if (!acceptAllLanguages) {
return null;
}
Map map = new HashMap<>();
for (Locale availableLocale : availableLocales) {
map.put(
LocaleUtil.toBCP47LanguageId(availableLocale),
locale.getDisplayCountry(availableLocale));
}
return map;
});
setId(locale::toLanguageTag);
setMarkedAsDefault(() -> Objects.equals(defaultLocale, locale));
setName(() -> locale.getDisplayLanguage(preferredLocale));
setName_i18n(
() -> {
if (!acceptAllLanguages) {
return null;
}
Map map = new HashMap<>();
for (Locale availableLocale : availableLocales) {
map.put(
LocaleUtil.toBCP47LanguageId(availableLocale),
locale.getDisplayLanguage(availableLocale));
}
return map;
});
}
};
}
@Reference
private GroupService _groupService;
@Reference
private com.liferay.portal.kernel.language.Language _language;
@Reference
private Localization _localization;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy