package org.ovirt.engine.ui.uicommonweb.models.datacenters; 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.ui.uicommonweb.models.common.*; import org.ovirt.engine.ui.uicompat.*; 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 DataCenterNetworkListModel extends SearchableListModel implements IFrontendMultipleQueryAsyncCallback { private static final String ENGINE_NETWORK = "engine"; private UICommand privateNewCommand; public UICommand getNewCommand() { return privateNewCommand; } private void setNewCommand(UICommand value) { privateNewCommand = value; } private UICommand privateEditCommand; public UICommand getEditCommand() { return privateEditCommand; } private void setEditCommand(UICommand value) { privateEditCommand = value; } private UICommand privateRemoveCommand; public UICommand getRemoveCommand() { return privateRemoveCommand; } private void setRemoveCommand(UICommand value) { privateRemoveCommand = value; } public storage_pool getEntity() { return (storage_pool)super.getEntity(); } public void setEntity(storage_pool value) { super.setEntity(value); } private java.util.ArrayList<VDSGroup> privateClusterList; public java.util.ArrayList<VDSGroup> getClusterList() { return privateClusterList; } public void setClusterList(java.util.ArrayList<VDSGroup> value) { privateClusterList = value; } private java.util.ArrayList<SelectionTreeNodeModel> privateSelectionNodeList; public java.util.ArrayList<SelectionTreeNodeModel> getSelectionNodeList() { return privateSelectionNodeList; } public void setSelectionNodeList(java.util.ArrayList<SelectionTreeNodeModel> value) { privateSelectionNodeList = value; } public DataCenterNetworkListModel() { setTitle("Logical Networks"); setNewCommand(new UICommand("New", this)); setEditCommand(new UICommand("Edit", this)); setRemoveCommand(new UICommand("Remove", 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()); }}; GetAllNetworkQueryParamenters tempVar = new GetAllNetworkQueryParamenters(getEntity().getId()); tempVar.setRefresh(getIsQueryFirstTime()); Frontend.RunQuery(VdcQueryType.GetAllNetworks, tempVar, _asyncQuery); } @Override protected void AsyncSearch() { super.AsyncSearch(); setAsyncResult(Frontend.RegisterQuery(VdcQueryType.GetAllNetworks, new GetAllNetworkQueryParamenters(getEntity().getId()))); setItems(getAsyncResult().getData()); } public void remove() { if (getWindow() != null) { return; } ConfirmationModel model = new ConfirmationModel(); setWindow(model); model.setTitle("Remove Logical Network(s)"); model.setHashName("remove_logical_network"); model.setMessage("Logical Network(s)"); java.util.ArrayList<String> list = new java.util.ArrayList<String>(); for (network a : Linq.<network>Cast(getSelectedItems())) { list.add(a.getname()); } model.setItems(list); 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); } public void OnRemove() { java.util.ArrayList<VdcActionParametersBase> pb = new java.util.ArrayList<VdcActionParametersBase>(); for (network a : Linq.<network>Cast(getSelectedItems())) { pb.add((VdcActionParametersBase)new AddNetworkStoragePoolParameters(getEntity().getId(), a)); } Frontend.RunMultipleAction(VdcActionType.RemoveNetwork, pb); Cancel(); } public void Edit() { network network = (network)getSelectedItem(); if (getWindow() != null) { return; } DataCenterNetworkModel networkModel = new DataCenterNetworkModel(); setWindow(networkModel); networkModel.setTitle("Edit Logical Network"); networkModel.setHashName("edit_logical_network"); networkModel.getName().setEntity(network.getname()); networkModel.getDescription().setEntity(network.getdescription()); networkModel.getIsStpEnabled().setEntity(network.getstp()); networkModel.getHasVLanTag().setEntity(network.getvlan_id() != null); networkModel.getVLanTag().setEntity((network.getvlan_id() == null ? 0 : network.getvlan_id())); networkModel.setDetachAllCommand(new UICommand("DetachClusters", this)); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object ReturnValue) { DataCenterNetworkListModel dcNetworkModel = (DataCenterNetworkListModel)model; dcNetworkModel.setClusterList((java.util.ArrayList<VDSGroup>)ReturnValue); dcNetworkModel.setSelectionNodeList(new java.util.ArrayList<SelectionTreeNodeModel>()); java.util.ArrayList<VdcQueryParametersBase> parametersList = new java.util.ArrayList<VdcQueryParametersBase>(); java.util.ArrayList<VdcQueryType> queryTypeList = new java.util.ArrayList<VdcQueryType>(); for (VDSGroup vdsGroup : dcNetworkModel.getClusterList()) { queryTypeList.add(VdcQueryType.GetAllNetworksByClusterId); parametersList.add(new VdsGroupQueryParamenters(vdsGroup.getID())); SelectionTreeNodeModel tempVar = new SelectionTreeNodeModel(); tempVar.setIsSelectedNullable(false); tempVar.setEntity(vdsGroup); tempVar.setDescription(vdsGroup.getname()); dcNetworkModel.getSelectionNodeList().add(tempVar); } Frontend.RunMultipleQueries(queryTypeList, parametersList, dcNetworkModel); DataCenterNetworkModel networkModel1 = (DataCenterNetworkModel)dcNetworkModel.getWindow(); //cannot detach engine networks from clusters network network1 = (network)dcNetworkModel.getSelectedItem(); if (StringHelper.stringsEqual(network1.getname(), ENGINE_NETWORK)) { for (SelectionTreeNodeModel nodeModel : dcNetworkModel.getSelectionNodeList()) { nodeModel.setIsChangable(false); } networkModel1.getDetachAllCommand().setIsAvailable(false); networkModel1.getName().setIsChangable(false); networkModel1.setMessage("Cannot detach Management Network from Clusters"); } }}; AsyncDataProvider.GetClusterList(_asyncQuery, getEntity().getId()); } public void New() { if (getWindow() != null) { return; } DataCenterNetworkModel networkModel = new DataCenterNetworkModel(); setWindow(networkModel); networkModel.setTitle("New Logical Network"); networkModel.setHashName("new_logical_network"); networkModel.setIsNew(true); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object ReturnValue) { DataCenterNetworkListModel networkListModel = (DataCenterNetworkListModel)model; DataCenterNetworkModel networkModel1 = (DataCenterNetworkModel)networkListModel.getWindow(); //networkModel1.ClusterTreeNodes java.util.ArrayList<VDSGroup> clusterList = (java.util.ArrayList<VDSGroup>)ReturnValue; SelectionTreeNodeModel nodeModel; java.util.ArrayList<SelectionTreeNodeModel> clusterTreeNodes = new java.util.ArrayList<SelectionTreeNodeModel>(); for (VDSGroup selectionTreeNodeModel : clusterList) { nodeModel = new SelectionTreeNodeModel(); nodeModel.setEntity(selectionTreeNodeModel); nodeModel.setDescription(selectionTreeNodeModel.getname()); nodeModel.setIsSelectedNullable(false); clusterTreeNodes.add(nodeModel); } networkModel1.setClusterTreeNodes(clusterTreeNodes); UICommand tempVar = new UICommand("OnSave", networkListModel); tempVar.setTitle("OK"); tempVar.setIsDefault(true); networkModel1.getCommands().add(tempVar); networkModel1.setDetachAllCommand(new UICommand("DetachClusters", networkListModel)); networkModel1.getDetachAllAvailable().setEntity(false); UICommand tempVar2 = new UICommand("Cancel", networkListModel); tempVar2.setTitle("Cancel"); tempVar2.setIsCancel(true); networkModel1.getCommands().add(tempVar2); }}; AsyncDataProvider.GetClusterList(_asyncQuery, getEntity().getId()); } public void OnSave() { DataCenterNetworkModel model = (DataCenterNetworkModel)getWindow(); if (getEntity() == null || (!model.getIsNew() && getSelectedItem() == null)) { Cancel(); return; } model.setcurrentNetwork(model.getIsNew() ? new network(null) : (network)Cloner.clone(getSelectedItem())); if (!model.Validate()) { return; } //Save changes. model.getcurrentNetwork().setstorage_pool_id(getEntity().getId()); model.getcurrentNetwork().setname((String)model.getName().getEntity()); model.getcurrentNetwork().setstp((Boolean)model.getIsStpEnabled().getEntity()); model.getcurrentNetwork().setdescription((String)model.getDescription().getEntity()); model.getcurrentNetwork().setvlan_id(null); if ((Boolean)model.getHasVLanTag().getEntity()) { model.getcurrentNetwork().setvlan_id(Integer.parseInt(model.getVLanTag().getEntity().toString())); } model.setnewClusters(new java.util.ArrayList<VDSGroup>()); for (SelectionTreeNodeModel selectionTreeNodeModel : model.getClusterTreeNodes()) { //C# TO JAVA CONVERTER TODO TASK: Comparisons involving nullable type instances are not converted to null-value logic: if (selectionTreeNodeModel.getIsSelectedNullable() != null && selectionTreeNodeModel.getIsSelectedNullable().equals(true)) { model.getnewClusters().add((VDSGroup)selectionTreeNodeModel.getEntity()); } } java.util.ArrayList<VDSGroup> detachNetworkFromClusters = Linq.Except(model.getOriginalClusters(), model.getnewClusters()); java.util.ArrayList<VdcActionParametersBase> actionParameters = new java.util.ArrayList<VdcActionParametersBase>(); for (VDSGroup detachNetworkFromCluster : detachNetworkFromClusters) { actionParameters.add((VdcActionParametersBase) new AttachNetworkToVdsGroupParameter(detachNetworkFromCluster, model.getcurrentNetwork())); } model.StartProgress(null); Frontend.RunMultipleAction(VdcActionType.DetachNetworkToVdsGroup, actionParameters, new IFrontendMultipleActionAsyncCallback() { @Override public void Executed(FrontendMultipleActionAsyncResult result) { DataCenterNetworkListModel networkListModel = (DataCenterNetworkListModel)result.getState(); DataCenterNetworkModel networkModel = (DataCenterNetworkModel)networkListModel.getWindow(); network network = networkModel.getcurrentNetwork(); if (networkModel.getIsNew()) { Frontend.RunAction(VdcActionType.AddNetwork, new AddNetworkStoragePoolParameters(getEntity().getId(), network), new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult result1) { DataCenterNetworkListModel networkListModel1 = (DataCenterNetworkListModel)result1.getState(); VdcReturnValueBase retVal = result1.getReturnValue(); boolean succeeded = false; if (retVal != null && retVal.getSucceeded()) { succeeded = true; } networkListModel1.PostNetworkAction(succeeded ? (Guid)retVal.getActionReturnValue() : null, succeeded); } }, networkListModel); } else { if ((Boolean)networkModel.getIsEnabled().getEntity()) { Frontend.RunAction(VdcActionType.UpdateNetwork, new AddNetworkStoragePoolParameters(getEntity().getId(), network), new IFrontendActionAsyncCallback() { @Override public void Executed(FrontendActionAsyncResult result1) { DataCenterNetworkListModel networkListModel1 = (DataCenterNetworkListModel)result1.getState(); VdcReturnValueBase retVal = result1.getReturnValue(); networkListModel1.PostNetworkAction(null, retVal != null && retVal.getSucceeded()); } }, networkListModel); } else { PostNetworkAction(null, true); } } } }, this); } public void PostNetworkAction(Guid networkGuid, boolean succeeded) { DataCenterNetworkModel networkModel = (DataCenterNetworkModel)getWindow(); if (succeeded) { Cancel(); } else { networkModel.StopProgress(); return; } networkModel.StopProgress(); network network = networkModel.getcurrentNetwork(); Guid networkId = networkModel.getIsNew() ? networkGuid : network.getId(); java.util.ArrayList<VDSGroup> attachNetworkToClusters = Linq.Except(networkModel.getnewClusters(), networkModel.getOriginalClusters()); java.util.ArrayList<VdcActionParametersBase> actionParameters1 = new java.util.ArrayList<VdcActionParametersBase>(); for (VDSGroup attachNetworkToCluster : attachNetworkToClusters) { network tempVar = new network(null); tempVar.setId(networkId); tempVar.setname(network.getname()); actionParameters1.add((VdcActionParametersBase) new AttachNetworkToVdsGroupParameter(attachNetworkToCluster, tempVar)); } Frontend.RunMultipleAction(VdcActionType.AttachNetworkToVdsGroup, actionParameters1); } public void DetachClusters() { ConfirmationModel confirmModel = new ConfirmationModel(); setConfirmWindow(confirmModel); confirmModel.setTitle("Detach Network from ALL Clusters"); confirmModel.setHashName("detach_network_from_all_clusters"); confirmModel.setMessage("You are about to detach the Network from all of the Clusters to which it is currentlyattached.\nAs a result, the Clusters' Hosts might become unreachable.\n\nAre you sure you want to continue?"); confirmModel.getLatch().setIsAvailable(true); UICommand tempVar = new UICommand("OnDetachClusters", this); tempVar.setTitle("OK"); tempVar.setIsDefault(true); confirmModel.getCommands().add(tempVar); UICommand tempVar2 = new UICommand("CancelConfirmation", this); tempVar2.setTitle("Cancel"); tempVar2.setIsCancel(true); confirmModel.getCommands().add(tempVar2); } public void CancelConfirmation() { setConfirmWindow(null); } public void OnDetachClusters() { ConfirmationModel confirmationModel = (ConfirmationModel)getConfirmWindow(); if (!confirmationModel.Validate()) { return; } DataCenterNetworkModel model = (DataCenterNetworkModel)getWindow(); network network = (network)getSelectedItem(); java.util.ArrayList<VdcActionParametersBase> actionParameters = new java.util.ArrayList<VdcActionParametersBase>(); for (SelectionTreeNodeModel selectionTreeNodeModel : model.getClusterTreeNodes()) { //C# TO JAVA CONVERTER TODO TASK: Comparisons involving nullable type instances are not converted to null-value logic: if (selectionTreeNodeModel.getIsSelectedNullable() != null && selectionTreeNodeModel.getIsSelectedNullable().equals(true)) { selectionTreeNodeModel.setIsSelectedNullable(false); actionParameters.add((VdcActionParametersBase)new AttachNetworkToVdsGroupParameter((VDSGroup)selectionTreeNodeModel.getEntity(), network)); } } Frontend.RunMultipleAction(VdcActionType.DetachNetworkToVdsGroup, actionParameters, new IFrontendMultipleActionAsyncCallback() { @Override public void Executed(FrontendMultipleActionAsyncResult result) { DataCenterNetworkListModel networkListModel = (DataCenterNetworkListModel)result.getState(); DataCenterNetworkModel networkModel = (DataCenterNetworkModel)networkListModel.getWindow(); boolean isSucceded = true; networkListModel.CancelConfirmation(); if (isSucceded) { networkModel.setOriginalClusters(new java.util.ArrayList<VDSGroup>()); networkModel.getIsEnabled().setEntity(true); networkModel.getDetachAllAvailable().setEntity(!(Boolean)networkModel.getIsEnabled().getEntity()); } else { networkListModel.Cancel(); } } }, this); } public void Cancel() { setWindow(null); } @Override protected void OnSelectedItemChanged() { super.OnSelectedItemChanged(); UpdateActionAvailability(); } @Override protected void SelectedItemsChanged() { super.SelectedItemsChanged(); UpdateActionAvailability(); } private void UpdateActionAvailability() { java.util.List tempVar = getSelectedItems(); java.util.ArrayList selectedItems = (java.util.ArrayList)((tempVar != null) ? tempVar : new java.util.ArrayList()); boolean anyEngine = false; for (Object item : selectedItems) { network network = (network)item; if (StringHelper.stringsEqual(network.getname(), ENGINE_NETWORK)) { anyEngine = true; break; } } getEditCommand().setIsExecutionAllowed(selectedItems.size() == 1); getRemoveCommand().setIsExecutionAllowed(selectedItems.size() > 0 && !anyEngine); } @Override public void ExecuteCommand(UICommand command) { super.ExecuteCommand(command); if (command == getNewCommand()) { New(); } else if (command == getEditCommand()) { Edit(); } else if (command == getRemoveCommand()) { remove(); } else if (StringHelper.stringsEqual(command.getName(), "OnSave")) { OnSave(); } else if (StringHelper.stringsEqual(command.getName(), "Cancel")) { Cancel(); } else if (StringHelper.stringsEqual(command.getName(), "OnRemove")) { OnRemove(); } else if(StringHelper.stringsEqual(command.getName(), "DetachClusters")) { DetachClusters(); } else if(StringHelper.stringsEqual(command.getName(), "OnDetachClusters")) { OnDetachClusters(); } else if (StringHelper.stringsEqual(command.getName(), "CancelConfirmation")) { CancelConfirmation(); } } public void Executed(FrontendMultipleQueryAsyncResult result) { network network = (network)getSelectedItem(); java.util.List<VdcQueryReturnValue> returnValueList = result.getReturnValues(); DataCenterNetworkModel model = (DataCenterNetworkModel)getWindow(); java.util.ArrayList<network> clusterNetworkList = null; boolean networkHasAttachedClusters = false; for (int i = 0; i < returnValueList.size(); i++) { VdcQueryReturnValue returnValue = returnValueList.get(i); if (returnValue.getSucceeded() && returnValue.getReturnValue() != null) { clusterNetworkList = (java.util.ArrayList<network>)returnValue.getReturnValue(); for (network clusterNetwork : clusterNetworkList) { if (clusterNetwork.getId().equals(network.getId())) { model.getOriginalClusters().add((VDSGroup)getSelectionNodeList().get(i).getEntity()); getSelectionNodeList().get(i).setIsSelectedNullable(true); networkHasAttachedClusters = true; break; } } } } if (networkHasAttachedClusters) { model.getIsEnabled().setEntity(false); if (!StringHelper.stringsEqual(network.getname(), ENGINE_NETWORK)) { model.getDetachAllAvailable().setEntity(!(Boolean)model.getIsEnabled().getEntity()); } } model.setClusterTreeNodes(getSelectionNodeList()); if (StringHelper.stringsEqual(network.getname(), ENGINE_NETWORK) && getSelectionNodeList().size() > 0) { UICommand tempVar = new UICommand("Cancel", this); tempVar.setTitle("Close"); tempVar.setIsDefault(true); tempVar.setIsCancel(true); model.getCommands().add(tempVar); } else { UICommand tempVar2 = new UICommand("OnSave", this); tempVar2.setTitle("OK"); tempVar2.setIsDefault(true); model.getCommands().add(tempVar2); UICommand tempVar3 = new UICommand("Cancel", this); tempVar3.setTitle("Cancel"); tempVar3.setIsCancel(true); model.getCommands().add(tempVar3); } } @Override protected String getListName() { return "DataCenterNetworkListModel"; } }