package org.ovirt.engine.ui.uicommonweb.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.uicommonweb.*; import org.ovirt.engine.ui.uicommonweb.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.uicommonweb.dataprovider.*; import org.ovirt.engine.ui.uicommonweb.*; import org.ovirt.engine.ui.uicommonweb.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); } 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() { if (getEntity() == null) { return; } 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()); }}; VdsGroupQueryParamenters tempVar = new VdsGroupQueryParamenters(getEntity().getID()); tempVar.setRefresh(getIsQueryFirstTime()); Frontend.RunQuery(VdcQueryType.GetAllNetworksByClusterId, tempVar, _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; } Guid storagePoolId = (getEntity().getstorage_pool_id() != null) ? getEntity().getstorage_pool_id().getValue() : Guid.Empty; AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object result) { ClusterNetworkListModel clusterNetworkListModel = (ClusterNetworkListModel)model; java.util.ArrayList<network> networkList = (java.util.ArrayList<network>)result; ListModel listModel = new ListModel(); clusterNetworkListModel.setWindow(listModel); listModel.setTitle("Assign/Detach Networks"); listModel.setHashName("assign_networks"); clusterNetworkListModel.PostManage(networkList, listModel); }}; AsyncDataProvider.GetNetworkList(_asyncQuery, storagePoolId); } public void PostManage(java.util.ArrayList<network> networkList, ListModel model) { 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); tempVar.setTitle(a.getname()); items.add(tempVar); } } model.setItems(items); boolean noItems = items.isEmpty(); java.util.ArrayList<network> networks = Linq.<network>Cast(getItems()); java.util.ArrayList<EntityModel> selectedItems = new java.util.ArrayList<EntityModel>(); for (EntityModel item : items) { network net = (network)item.getEntity(); boolean value = false; for (network a : networks) { if (a.getId().equals(net.getId())) { value = true; break; } } item.setIsSelected(value); if (value) { selectedItems.add(item); } } model.setSelectedItems(selectedItems); 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) { boolean value = true; for (network b : networks) { if (b.getId().equals(((network)a.getEntity()).getId())) { value = false; break; } } if (!a.getIsSelected() && !value ) { 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 clusterModel = new ClusterNetworkModel(); setWindow(clusterModel); clusterModel.setTitle("New Logical Network"); clusterModel.setHashName("new_logical_network"); clusterModel.setIsNew(true); if (getEntity().getstorage_pool_id() != null) { AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(clusterModel); _asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object result) { ClusterNetworkModel clusterNetworkModel = (ClusterNetworkModel)model; storage_pool dataCenter = (storage_pool)result; clusterNetworkModel.setDataCenterName(dataCenter.getname()); }}; AsyncDataProvider.GetDataCenterById(_asyncQuery, getEntity().getstorage_pool_id().getValue()); } UICommand tempVar = new UICommand("OnSave", this); tempVar.setTitle("OK"); tempVar.setIsDefault(true); clusterModel.getCommands().add(tempVar); UICommand tempVar2 = new UICommand("Cancel", this); tempVar2.setTitle("Cancel"); tempVar2.setIsCancel(true); clusterModel.getCommands().add(tempVar2); } public void OnSave() { ClusterNetworkModel model = (ClusterNetworkModel)getWindow(); network network = new network(null); 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((Boolean)model.getIsStpEnabled().getEntity()); network.setdescription((String)model.getDescription().getEntity()); network.setvlan_id(null); if ((Boolean)model.getHasVLanTag().getEntity()) { network.setvlan_id(Integer.parseInt(model.getVLanTag().getEntity().toString())); } Frontend.RunAction(VdcActionType.AddNetwork, new AddNetworkStoragePoolParameters(network.getstorage_pool_id().getValue(), network), new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult result) { Object[] data = (Object[])result.getState(); ClusterNetworkListModel networkListModel = (ClusterNetworkListModel)data[0]; VdcReturnValueBase retVal = result.getReturnValue(); if (retVal != null && retVal.getSucceeded()) { network tempVar = new network(null); tempVar.setId((Guid)retVal.getActionReturnValue()); tempVar.setname(((network)data[1]).getname()); Frontend.RunAction(VdcActionType.AttachNetworkToVdsGroup, new AttachNetworkToVdsGroupParameter(networkListModel.getEntity(), tempVar)); } networkListModel.Cancel(); } }, new Object[] { this, network }); } @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(); } } @Override protected String getListName() { return "ClusterNetworkListModel"; } }