package org.ovirt.engine.ui.uicommon.models.configure.roles_ui; import java.util.Collections; import org.ovirt.engine.core.compat.*; import org.ovirt.engine.ui.uicompat.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.core.common.vdscommands.*; import org.ovirt.engine.core.common.queries.*; import org.ovirt.engine.core.common.action.*; import org.ovirt.engine.ui.frontend.*; import org.ovirt.engine.ui.uicommon.*; import org.ovirt.engine.ui.uicommon.models.*; import org.ovirt.engine.core.common.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.ui.uicommon.*; import org.ovirt.engine.ui.uicommon.models.*; import org.ovirt.engine.ui.uicommon.models.configure.*; @SuppressWarnings("unused") public class RolePermissionListModel extends SearchableListModel { private UICommand privateRemoveCommand; public UICommand getRemoveCommand() { return privateRemoveCommand; } private void setRemoveCommand(UICommand value) { privateRemoveCommand = value; } public roles getEntity() { return (roles)super.getEntity(); } public void setEntity(roles value) { super.setEntity(value); } private Model window; public Model getWindow() { return window; } public void setWindow(Model value) { if (window != value) { window = value; OnPropertyChanged(new PropertyChangedEventArgs("Window")); } } public RolePermissionListModel() { setTitle("Role's Permissions"); setRemoveCommand(new UICommand("Remove", this)); getSearchCommand().Execute(); UpdateActionAvailability(); } @Override protected void SyncSearch() { super.SyncSearch(); VdcQueryReturnValue retValue = Frontend.RunQuery(VdcQueryType.GetPermissionByRoleId, new MultilevelAdministrationByRoleIdParameters(getEntity().getId())); if (retValue != null && retValue.getSucceeded()) { //Items = ((List<IVdcQueryable>)retValue.ReturnValue).Cast<roles>().ToList(); setItems(Linq.<permissions>Cast((java.util.ArrayList<permissions>)retValue.getReturnValue())); } else { setItems(new java.util.ArrayList<roles>()); } } @Override protected void OnEntityChanged() { super.OnEntityChanged(); AsyncSearch(); } @Override protected void AsyncSearch() { super.AsyncSearch(); if (getEntity() == null) { return; } setAsyncResult(Frontend.RegisterQuery(VdcQueryType.GetPermissionByRoleId, new MultilevelAdministrationByRoleIdParameters(getEntity().getId()))); setItems(getAsyncResult().getData()); } private void UpdateActionAvailability() { getRemoveCommand().setIsExecutionAllowed(getSelectedItem() != null || (getSelectedItems() != null && getSelectedItems().size() > 0)); } @Override protected void OnSelectedItemChanged() { super.OnSelectedItemChanged(); UpdateActionAvailability(); } @Override protected void SelectedItemsChanged() { super.SelectedItemsChanged(); UpdateActionAvailability(); } public void Cancel() { setWindow(null); } private void remove() { if (getWindow() != null) { return; } ConfirmationModel model = new ConfirmationModel(); setWindow(model); model.setTitle("Remove Permission"); model.setHashName("remove_permission"); model.setMessage("Permission"); java.util.ArrayList<String> items = new java.util.ArrayList<String>(); for (Object a : getSelectedItems()) { items.add("Role " + ((permissions)a).getRoleName() + " on User " + ((permissions)a).getOwnerName()); } model.setItems(items); UICommand tempVar = new UICommand("OnRemove", this); tempVar.setTitle("OK"); tempVar.setIsDefault(true); model.getCommands().add(tempVar); UICommand tempVar2 = new UICommand("Cancel", this); tempVar2.setTitle("Cancel"); tempVar2.setIsCancel(true); model.getCommands().add(tempVar2); } private void OnRemove() { if (getSelectedItems() != null && getSelectedItems().size() > 0) { ConfirmationModel model = (ConfirmationModel)getWindow(); if (model.getProgress() != null) { return; } java.util.ArrayList<VdcActionParametersBase> list = new java.util.ArrayList<VdcActionParametersBase>(); for (Object perm : getSelectedItems()) { PermissionsOperationsParametes tempVar = new PermissionsOperationsParametes(); tempVar.setPermission((permissions)perm); list.add(tempVar); } model.StartProgress(null); Frontend.RunMultipleAction(VdcActionType.RemovePermission, list, new IFrontendMultipleActionAsyncCallback() { @Override public void Executed(FrontendMultipleActionAsyncResult result) { ConfirmationModel localModel = (ConfirmationModel)result.getState(); localModel.StopProgress(); Cancel(); } }, model); } } @Override public void ExecuteCommand(UICommand command) { super.ExecuteCommand(command); if (command == getRemoveCommand()) { remove(); } else if (StringHelper.stringsEqual(command.getName(), "OnRemove")) { OnRemove(); } else if (StringHelper.stringsEqual(command.getName(), "Cancel")) { Cancel(); } } }