/** * 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.dynamic.data.mapping.data.provider.instance; import com.liferay.dynamic.data.mapping.data.provider.DDMDataProvider; import com.liferay.dynamic.data.mapping.data.provider.DDMDataProviderContext; import com.liferay.dynamic.data.mapping.data.provider.DDMDataProviderException; import com.liferay.dynamic.data.mapping.data.provider.DDMDataProviderRequest; import com.liferay.dynamic.data.mapping.data.provider.DDMDataProviderResponse; import com.liferay.dynamic.data.mapping.data.provider.DDMDataProviderResponseOutput; import com.liferay.dynamic.data.mapping.model.DDMDataProviderInstance; import com.liferay.dynamic.data.mapping.service.DDMDataProviderInstanceLocalService; import com.liferay.portal.kernel.theme.ThemeDisplay; import com.liferay.portal.kernel.util.KeyValuePair; import com.liferay.portal.kernel.util.Portal; import com.liferay.portal.kernel.util.WebKeys; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; /** * @author Rafael Praxedes */ @Component( immediate = true, property = "ddm.data.provider.instance.id=getDataProviderInstances" ) public class DDMDataProviderInstancesDataProvider implements DDMDataProvider { @Override public List<KeyValuePair> getData( DDMDataProviderContext ddmDataProviderContext) throws DDMDataProviderException { return Collections.emptyList(); } @Override public DDMDataProviderResponse getData( DDMDataProviderRequest ddmDataProviderRequest) throws DDMDataProviderException { List<KeyValuePair> data = new ArrayList<>(); try { HttpServletRequest request = ddmDataProviderRequest.getHttpServletRequest(); ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute( WebKeys.THEME_DISPLAY); long[] groupIds = _portal.getCurrentAndAncestorSiteGroupIds( themeDisplay.getScopeGroupId()); List<DDMDataProviderInstance> ddmDataProviderInstances = _ddmDataProviderInstanceLocalService.getDataProviderInstances( groupIds); for (DDMDataProviderInstance ddmDataProviderInstance : ddmDataProviderInstances) { long value = ddmDataProviderInstance.getDataProviderInstanceId(); String label = ddmDataProviderInstance.getName( themeDisplay.getLocale()); data.add(new KeyValuePair(String.valueOf(value), label)); } } catch (Exception e) { } return DDMDataProviderResponse.of( DDMDataProviderResponseOutput.of("Default-Output", "list", data)); } @Override public Class<?> getSettings() { throw new UnsupportedOperationException(); } @Reference private DDMDataProviderInstanceLocalService _ddmDataProviderInstanceLocalService; @Reference private Portal _portal; }