package org.ovirt.engine.ui.uicommon.models.clusters; 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.interfaces.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.core.common.queries.*; import org.ovirt.engine.ui.uicommon.*; import org.ovirt.engine.ui.uicommon.models.*; @SuppressWarnings("unused") public class ClusterNetworkListModel extends SearchableListModel { private UICommand privateNewNetworkCommand; public UICommand getNewNetworkCommand() { return privateNewNetworkCommand; } private void setNewNetworkCommand(UICommand value) { privateNewNetworkCommand = value; } private UICommand privateManageCommand; public UICommand getManageCommand() { return privateManageCommand; } private void setManageCommand(UICommand value) { privateManageCommand = value; } private UICommand privateSetAsDisplayCommand; public UICommand getSetAsDisplayCommand() { return privateSetAsDisplayCommand; } private void setSetAsDisplayCommand(UICommand value) { privateSetAsDisplayCommand = value; } public VDSGroup getEntity() { return (VDSGroup)((super.getEntity() instanceof VDSGroup) ? super.getEntity() : null); } public void setEntity(VDSGroup 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 ClusterNetworkListModel() { setTitle("Logical Networks"); setManageCommand(new UICommand("Manage", this)); setSetAsDisplayCommand(new UICommand("SetAsDisplay", this)); setNewNetworkCommand(new UICommand("New", this)); UpdateActionAvailability(); } @Override protected void OnEntityChanged() { super.OnEntityChanged(); getSearchCommand().Execute(); } @Override public void Search() { if (getEntity() != null) { super.Search(); } } @Override protected void SyncSearch() { super.SyncSearch(); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object ReturnValue) { SearchableListModel searchableListModel = (SearchableListModel)model; searchableListModel.setItems((java.util.ArrayList<network>)((VdcQueryReturnValue)ReturnValue).getReturnValue()); }}; Frontend.RunQuery(VdcQueryType.GetAllNetworksByClusterId, new VdsGroupQueryParamenters(getEntity().getID()), _asyncQuery); } @Override protected void AsyncSearch() { super.AsyncSearch(); setAsyncResult(Frontend.RegisterQuery(VdcQueryType.GetAllNetworksByClusterId, new VdsGroupQueryParamenters(getEntity().getID()))); setItems(getAsyncResult().getData()); } public void SetAsDisplay() { network network = (network)getSelectedItem(); Frontend.RunAction(VdcActionType.UpdateDisplayToVdsGroup, new DisplayNetworkToVdsGroupParameters(getEntity(), network, true)); } public void Manage() { if (getWindow() != null) { return; } ListModel model = new ListModel(); setWindow(model); model.setTitle("Assign/Detach Networks"); model.setHashName("assign_networks"); //var items = DataProvider.GetNetworkList(Entity.storage_pool_id.GetValueOrDefault()) // .Where(a => !a.name.Equals("engine", StringComparison.CurrentCulture)) // .Select(a => new EntityModel() { Entity = a }) // .ToList(); Guid storagePoolId = (getEntity().getstorage_pool_id() != null) ? getEntity().getstorage_pool_id().getValue() : Guid.Empty; java.util.ArrayList<network> networkList = DataProvider.GetNetworkList(storagePoolId); Collections.sort(networkList, new Linq.NetworkByNameComparer()); java.util.ArrayList<EntityModel> items = new java.util.ArrayList<EntityModel>(); for (network a : networkList) { if (!a.getname().equals("engine")) { EntityModel tempVar = new EntityModel(); tempVar.setEntity(a); items.add(tempVar); } } model.setItems(items); boolean noItems = items.isEmpty(); java.util.ArrayList<network> networks = Linq.<network>Cast(getItems()); for (EntityModel item : items) { network net = (network)item.getEntity(); // Selector.SetIsSelected(item, networks.Any(a => a.id == network.id)); boolean value = false; for (network a : networks) { if (a.getId().equals(net.getId())) { value = true; break; } } item.setIsSelected(value); } UICommand tempVar2 = new UICommand("Cancel", this); tempVar2.setTitle("Cancel"); tempVar2.setIsDefault(noItems); tempVar2.setIsCancel(true); model.getCommands().add(tempVar2); if (!noItems) { UICommand tempVar3 = new UICommand("OnManage", this); tempVar3.setTitle("OK"); tempVar3.setIsDefault(true); model.getCommands().add(0, tempVar3); } } public void OnManage() { ListModel model = (ListModel)getWindow(); java.util.ArrayList<EntityModel> items = Linq.<EntityModel>Cast(model.getItems()); java.util.ArrayList<network> networks = Linq.<network>Cast(getItems()); if (getEntity() == null) { Cancel(); return; } java.util.ArrayList<VdcActionParametersBase> prms1 = new java.util.ArrayList<VdcActionParametersBase>(); for (EntityModel a : items) { boolean value = false; for (network b : networks) { if (b.getId().equals(((network)a.getEntity()).getId())) { value = true; break; } } if (a.getIsSelected() && !value) { prms1.add(new AttachNetworkToVdsGroupParameter(getEntity(), (network)a.getEntity())); } } // Call the command only if necessary (i.e. only if there are paramters): if (prms1.size() > 0) { Frontend.RunMultipleAction(VdcActionType.AttachNetworkToVdsGroup, prms1); } java.util.ArrayList<VdcActionParametersBase> prms2 = new java.util.ArrayList<VdcActionParametersBase>(); for (EntityModel a : items) { if (!a.getIsSelected()) { prms2.add(new AttachNetworkToVdsGroupParameter(getEntity(), (network)a.getEntity())); } } // Call the command only if necessary (i.e. only if there are paramters): if (prms2.size() > 0) { Frontend.RunMultipleAction(VdcActionType.DetachNetworkToVdsGroup, prms2); } Cancel(); } public void Cancel() { setWindow(null); } @Override protected void EntityChanging(Object newValue, Object oldValue) { VDSGroup vdsGroup = (VDSGroup)newValue; getNewNetworkCommand().setIsExecutionAllowed(vdsGroup != null && vdsGroup.getstorage_pool_id() != null); } @Override protected void OnSelectedItemChanged() { super.OnSelectedItemChanged(); UpdateActionAvailability(); } @Override protected void SelectedItemsChanged() { super.SelectedItemsChanged(); UpdateActionAvailability(); } private void UpdateActionAvailability() { network network = (network)getSelectedItem(); //CanRemove = SelectedItems != null && SelectedItems.Count > 0; getSetAsDisplayCommand().setIsExecutionAllowed(getSelectedItems() != null && getSelectedItems().size() == 1 && network != null && !(network.getis_display() == null ? false : network.getis_display()) && network.getStatus() != NetworkStatus.NonOperational); } public void New() { if (getWindow() != null) { return; } ClusterNetworkModel model = new ClusterNetworkModel(); setWindow(model); model.setTitle("New Logical Network"); model.setHashName("new_logical_network"); model.setIsNew(true); if (getEntity().getstorage_pool_id() != null) { storage_pool dataCenter = DataProvider.GetDataCenterById(getEntity().getstorage_pool_id().getValue()); if (dataCenter != null) { model.setDataCenterName(dataCenter.getname()); } } UICommand tempVar = new UICommand("OnSave", 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); } public void OnSave() { ClusterNetworkModel model = (ClusterNetworkModel)getWindow(); network network = new network(); if (getEntity() == null) { Cancel(); return; } if (!model.Validate() || getEntity().getstorage_pool_id() == null) { return; } network.setstorage_pool_id(getEntity().getstorage_pool_id()); network.setname((String)model.getName().getEntity()); network.setstp(model.getIsStpEnabled()); network.setdescription((String)model.getDescription().getEntity()); network.setvlan_id(null); if (model.getHasVLanTag()) { network.setvlan_id(Integer.parseInt(model.getVLanTag().getEntity().toString())); } VdcReturnValueBase returnValue = Frontend.RunAction(VdcActionType.AddNetwork, new AddNetworkStoragePoolParameters(network.getstorage_pool_id().getValue(), network)); if (returnValue != null && returnValue.getSucceeded()) { network tempVar = new network(); tempVar.setId((Guid)returnValue.getActionReturnValue()); tempVar.setname(network.getname()); Frontend.RunAction(VdcActionType.AttachNetworkToVdsGroup, new AttachNetworkToVdsGroupParameter(getEntity(), tempVar)); Cancel(); } } @Override public void ExecuteCommand(UICommand command) { super.ExecuteCommand(command); if (command == getManageCommand()) { Manage(); } else if (command == getSetAsDisplayCommand()) { SetAsDisplay(); } else if (StringHelper.stringsEqual(command.getName(), "OnManage")) { OnManage(); } else if (StringHelper.stringsEqual(command.getName(), "New")) { New(); } else if (StringHelper.stringsEqual(command.getName(), "OnSave")) { OnSave(); } else if (StringHelper.stringsEqual(command.getName(), "Cancel")) { Cancel(); } } }