/* * 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.enterprise.event.Observes; import javax.inject.Inject; import org.jboss.errai.common.client.api.RemoteCallback; import org.jboss.errai.security.shared.api.identity.User; import org.uberfire.ext.security.management.api.AbstractEntityManager; import org.uberfire.ext.security.management.api.Capability; 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.CreateUserEvent; import org.uberfire.ext.security.management.client.widgets.management.events.DeleteUserEvent; import org.uberfire.ext.security.management.client.widgets.management.events.NewUserEvent; import org.uberfire.ext.security.management.client.widgets.management.events.OnErrorEvent; import org.uberfire.ext.security.management.client.widgets.management.events.ReadUserEvent; import org.uberfire.ext.security.management.client.widgets.management.events.SaveUserEvent; 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 users explorer widget.</p> */ @Dependent public class UsersExplorer extends AbstractEntityExplorer<User> { Event<ReadUserEvent> readUserEvent; Event<NewUserEvent> newUserEvent; @Inject public UsersExplorer(final ClientUserSystemManager userSystemManager, final Event<OnErrorEvent> errorEvent, final LoadingBox loadingBox, final EntitiesList<User> entitiesList, final EntitiesExplorerView view, final Event<ReadUserEvent> readUserEvent, final Event<NewUserEvent> newUserEvent) { super(userSystemManager, errorEvent, loadingBox, entitiesList, view); this.readUserEvent = readUserEvent; this.newUserEvent = newUserEvent; } @Override protected String getEmptyText() { return UsersManagementWidgetsConstants.INSTANCE.noUsers(); } @Override protected String getEntityType() { return UsersManagementWidgetsConstants.INSTANCE.users(); } @Override protected String getTitle() { return UsersManagementWidgetsConstants.INSTANCE.user(); } @Override protected String getEntityId(final User entity) { return entity.getIdentifier(); } @Override protected String getEntityName(final User entity) { return entity.getIdentifier(); } @Override protected boolean canSearch() { return userSystemManager.isUserCapabilityEnabled(Capability.CAN_SEARCH_USERS); } @Override protected boolean canCreate() { return userSystemManager.isUserCapabilityEnabled(Capability.CAN_ADD_USER); } @Override protected boolean canRead() { return userSystemManager.isUserCapabilityEnabled(Capability.CAN_READ_USER); } @Override protected void fireReadEvent(final String identifier) { readUserEvent.fire(new ReadUserEvent(identifier)); } @Override protected void showCreate() { newUserEvent.fire(new NewUserEvent()); } @Override protected void showSearch() { showLoadingView(); // Call backend service. userSystemManager.users(new RemoteCallback<AbstractEntityManager.SearchResponse<User>>() { @Override public void callback(final AbstractEntityManager.SearchResponse<User> response) { // Configure the entities list view. final EntitiesList.Callback<User> callback = createCallback(); entitiesList.show(response, callback); // Show the explorer view. view.show(context, viewCallback); hideLoadingView(); } }, errorCallback).search(new SearchRequestImpl(searchPattern, currentPage, PAGE_SIZE)); } void onUserDeleted(@Observes final DeleteUserEvent deleteUserEvent) { showSearch(); } void onUserCreated(@Observes final CreateUserEvent createUserEvent) { showSearch(); } void onUserSaved(@Observes final SaveUserEvent saveUserEvent) { showSearch(); } }