/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.uberfire.ext.security.management.client.widgets.management.explorer; import javax.enterprise.context.Dependent; import javax.enterprise.event.Event; import javax.inject.Inject; import org.jboss.errai.common.client.api.RemoteCallback; import org.jboss.errai.security.shared.api.Role; import org.uberfire.ext.security.management.api.AbstractEntityManager; import org.uberfire.ext.security.management.client.ClientUserSystemManager; import org.uberfire.ext.security.management.client.resources.i18n.UsersManagementWidgetsConstants; import org.uberfire.ext.security.management.client.widgets.management.events.OnErrorEvent; import org.uberfire.ext.security.management.client.widgets.management.events.ReadRoleEvent; import org.uberfire.ext.security.management.client.widgets.management.list.EntitiesList; import org.uberfire.ext.security.management.client.widgets.popup.LoadingBox; import org.uberfire.ext.security.management.impl.SearchRequestImpl; /** * <p>Presenter class for roles explorer widget.</p> * <p>By default, the <code>admin</code> identifier is constrained.</p> */ @Dependent public class RolesExplorer extends AbstractEntityExplorer<Role> { private Event<ReadRoleEvent> readRoleEvent; @Inject public RolesExplorer(final ClientUserSystemManager userSystemManager, final Event<OnErrorEvent> errorEvent, final LoadingBox loadingBox, final EntitiesList<Role> entitiesList, final EntitiesExplorerView view, final Event<ReadRoleEvent> readRoleEvent) { super(userSystemManager, errorEvent, loadingBox, entitiesList, view); this.readRoleEvent = readRoleEvent; } @Override protected String getEmptyText() { return UsersManagementWidgetsConstants.INSTANCE.noRoles(); } @Override protected String getEntityType() { return UsersManagementWidgetsConstants.INSTANCE.roles(); } @Override protected String getTitle() { return UsersManagementWidgetsConstants.INSTANCE.role(); } @Override protected String getEntityId(final Role entity) { return entity.getName(); } @Override protected String getEntityName(final Role entity) { return entity.getName(); } @Override protected boolean canSearch() { return true; } @Override protected boolean canCreate() { return false; } @Override protected boolean canRead() { return true; } @Override protected void fireReadEvent(final String identifier) { readRoleEvent.fire(new ReadRoleEvent(identifier)); } @Override protected void showCreate() { throw new RuntimeException("Role creation not supported"); } @Override protected void showSearch() { showLoadingView(); // Call backend service. userSystemManager.roles(new RemoteCallback<AbstractEntityManager.SearchResponse<Role>>() { @Override public void callback(final AbstractEntityManager.SearchResponse<Role> response) { if (response != null) { final EntitiesList.Callback<Role> callback = createCallback(); entitiesList.show(response, callback); // Show the explorer's view. view.show(context, viewCallback); hideLoadingView(); } } }, errorCallback).search(new SearchRequestImpl(searchPattern, currentPage, pageSize, context != null ? context.getConstrainedEntities() : null)); } }