Lior Vernia has uploaded a new change for review. Change subject: webadmin: Extracted common code in manage cluster networks ......................................................................
webadmin: Extracted common code in manage cluster networks Code was essentially duplicated in both ClusterNetworkListModel and NetworkClusterListModel, extracted it into the ClusterNetworkManageModel for maintainability. Change-Id: Ifa634f7d8011c25de7b1937984d4ec3627068b31 Signed-off-by: Lior Vernia <lver...@redhat.com> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkManageModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkClusterListModel.java 4 files changed, 136 insertions(+), 237 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/03/22903/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkListModel.java index dfd1508..40f3ccb 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkListModel.java @@ -5,9 +5,7 @@ import java.util.Collections; import java.util.List; -import org.ovirt.engine.core.common.action.AttachNetworkToVdsGroupParameter; import org.ovirt.engine.core.common.action.DisplayNetworkToVdsGroupParameters; -import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.VDSGroup; @@ -28,10 +26,7 @@ import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.ClusterNewNetworkModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; -import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; -import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; -@SuppressWarnings("unused") public class ClusterNetworkListModel extends SearchableListModel { @@ -148,10 +143,8 @@ network, true)); } - public void manage() - { - if (getWindow() != null) - { + public void manage() { + if (getWindow() != null) { return; } @@ -178,7 +171,7 @@ private ClusterNetworkManageModel createNetworkList(List<Network> dcNetworks) { List<ClusterNetworkModel> networkList = new ArrayList<ClusterNetworkModel>(); - java.util.ArrayList<Network> clusterNetworks = Linq.<Network> cast(getItems()); + ArrayList<Network> clusterNetworks = Linq.<Network> cast(getItems()); for (Network network : dcNetworks) { ClusterNetworkModel networkManageModel; int index = clusterNetworks.indexOf(network); @@ -194,92 +187,10 @@ Collections.sort(networkList, new Linq.ClusterNetworkModelComparator()); - ClusterNetworkManageModel listModel = new ClusterNetworkManageModel(); + ClusterNetworkManageModel listModel = new ClusterNetworkManageModel(this); listModel.setItems(networkList); - UICommand cancelCommand = new UICommand("Cancel", this); //$NON-NLS-1$ - cancelCommand.setTitle(ConstantsManager.getInstance().getConstants().cancel()); - cancelCommand.setIsCancel(true); - listModel.getCommands().add(cancelCommand); - - UICommand okCommand = new UICommand("OnManage", this); //$NON-NLS-1$ - okCommand.setTitle(ConstantsManager.getInstance().getConstants().ok()); - okCommand.setIsDefault(true); - listModel.getCommands().add(0, okCommand); - return listModel; - } - - public void onManage() { - final ClusterNetworkManageModel windowModel = (ClusterNetworkManageModel) getWindow(); - - List<ClusterNetworkModel> manageList = windowModel.getItems(); - List<Network> existingClusterNetworks = Linq.<Network> cast(getItems()); - final ArrayList<VdcActionParametersBase> toAttach = new ArrayList<VdcActionParametersBase>(); - final ArrayList<VdcActionParametersBase> toDetach = new ArrayList<VdcActionParametersBase>(); - - for (ClusterNetworkModel networkModel : manageList) { - Network network = networkModel.getEntity(); - boolean contains = existingClusterNetworks.contains(network); - - boolean needsAttach = networkModel.isAttached() && !contains; - boolean needsDetach = !networkModel.isAttached() && contains; - boolean needsUpdate = false; - - if (contains && !needsDetach) { - Network clusterNetwork = existingClusterNetworks.get(existingClusterNetworks.indexOf(network)); - - if ((networkModel.isRequired() != clusterNetwork.getCluster().isRequired()) - || (networkModel.isDisplayNetwork() != clusterNetwork.getCluster().isDisplay()) - || (networkModel.isMigrationNetwork() != clusterNetwork.getCluster().isMigration())) { - needsUpdate = true; - } - } - - if (needsAttach || needsUpdate) { - toAttach.add(new AttachNetworkToVdsGroupParameter(getEntity(), network)); - } - - if (needsDetach) { - toDetach.add(new AttachNetworkToVdsGroupParameter(getEntity(), network)); - } - } - - final IFrontendMultipleActionAsyncCallback callback = new IFrontendMultipleActionAsyncCallback() { - Boolean needsAttach = !toAttach.isEmpty(); - Boolean needsDetach = !toDetach.isEmpty(); - - @Override - public void executed(FrontendMultipleActionAsyncResult result) { - if (result.getActionType() == VdcActionType.DetachNetworkToVdsGroup) { - needsDetach = false; - } - if (result.getActionType() == VdcActionType.AttachNetworkToVdsGroup) { - needsAttach = false; - } - - if (needsAttach) { - Frontend.getInstance().runMultipleAction(VdcActionType.AttachNetworkToVdsGroup, toAttach, this, null); - } - - if (needsDetach) { - Frontend.getInstance().runMultipleAction(VdcActionType.DetachNetworkToVdsGroup, toDetach, this, null); - } - - if (!needsAttach && !needsDetach) { - doFinish(); - } - } - - private void doFinish() { - windowModel.stopProgress(); - cancel(); - forceRefresh(); - } - }; - - callback.executed(new FrontendMultipleActionAsyncResult(null, null, null)); - windowModel.startProgress(null); } public void cancel() @@ -348,29 +259,16 @@ } @Override - public void executeCommand(UICommand command) - { + public void executeCommand(UICommand command) { super.executeCommand(command); - if (command == getManageCommand()) - { + if (command == getManageCommand()) { manage(); - } - else if (command == getSetAsDisplayCommand()) - { + } else if (command == getSetAsDisplayCommand()) { setAsDisplay(); - } - - else if (StringHelper.stringsEqual(command.getName(), "OnManage")) //$NON-NLS-1$ - { - onManage(); - } - else if (StringHelper.stringsEqual(command.getName(), "New")) //$NON-NLS-1$ - { + } else if (StringHelper.stringsEqual(command.getName(), "New")) { //$NON-NLS-1$ newEntity(); - } - else if (StringHelper.stringsEqual(command.getName(), "Cancel")) //$NON-NLS-1$ - { + } else if (StringHelper.stringsEqual(command.getName(), "Cancel")) { //$NON-NLS-1$ cancel(); } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkManageModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkManageModel.java index 5c3e44d..b4507ac 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkManageModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkManageModel.java @@ -1,18 +1,40 @@ package org.ovirt.engine.ui.uicommonweb.models.clusters; -import java.util.List; - +import java.util.ArrayList; +import org.ovirt.engine.core.common.action.AttachNetworkToVdsGroupParameter; +import org.ovirt.engine.core.common.action.VdcActionParametersBase; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.network.NetworkCluster; +import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.ListModel; +import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; +import org.ovirt.engine.ui.uicompat.ConstantsManager; +import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; +import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; -public class ClusterNetworkManageModel extends ListModel{ +public class ClusterNetworkManageModel extends ListModel<ClusterNetworkModel> { - public boolean isMultiCluster(){ - return false; + private final SearchableListModel<?> sourceListModel; + private final UICommand okCommand; + private final UICommand cancelCommand; + + public ClusterNetworkManageModel(SearchableListModel<?> sourceListModel) { + this.sourceListModel = sourceListModel; + + cancelCommand = new UICommand("Cancel", this); //$NON-NLS-1$ + cancelCommand.setTitle(ConstantsManager.getInstance().getConstants().cancel()); + cancelCommand.setIsCancel(true); + getCommands().add(cancelCommand); + + okCommand = new UICommand("OnManage", this); //$NON-NLS-1$ + okCommand.setTitle(ConstantsManager.getInstance().getConstants().ok()); + okCommand.setIsDefault(true); + getCommands().add(0, okCommand); } - @Override - public List<ClusterNetworkModel> getItems() { - return (List<ClusterNetworkModel>) super.getItems(); + public boolean isMultiCluster() { + return false; } private ClusterNetworkModel getDisplayNetwork() { @@ -57,4 +79,87 @@ model.setMigrationNetwork(value); } + private void onManage() { + Iterable<ClusterNetworkModel> manageList = getItems(); + final ArrayList<VdcActionParametersBase> toAttach = new ArrayList<VdcActionParametersBase>(); + final ArrayList<VdcActionParametersBase> toDetach = new ArrayList<VdcActionParametersBase>(); + + for (ClusterNetworkModel manageModel : manageList) { + NetworkCluster networkCluster = manageModel.getOriginalNetworkCluster(); + + boolean wasAttached = (networkCluster != null); + boolean needsAttach = manageModel.isAttached() && !wasAttached; + boolean needsDetach = !manageModel.isAttached() && wasAttached; + boolean needsUpdate = false; + + // Attachment wasn't changed- check if needs update + if (wasAttached && !needsDetach) { + if ((manageModel.isRequired() != networkCluster.isRequired()) + || (manageModel.isDisplayNetwork() != networkCluster.isDisplay()) + || (manageModel.isMigrationNetwork() != networkCluster.isMigration())) { + needsUpdate = true; + } + } + + if (needsAttach || needsUpdate) { + toAttach.add(new AttachNetworkToVdsGroupParameter(manageModel.getCluster(), manageModel.getEntity())); + } + + if (needsDetach) { + toDetach.add(new AttachNetworkToVdsGroupParameter(manageModel.getCluster(), manageModel.getEntity())); + } + } + + final IFrontendMultipleActionAsyncCallback callback = new IFrontendMultipleActionAsyncCallback() { + Boolean needsAttach = !toAttach.isEmpty(); + Boolean needsDetach = !toDetach.isEmpty(); + + @Override + public void executed(FrontendMultipleActionAsyncResult result) { + if (result.getActionType() == VdcActionType.DetachNetworkToVdsGroup) { + needsDetach = false; + } + if (result.getActionType() == VdcActionType.AttachNetworkToVdsGroup) { + needsAttach = false; + } + + if (needsAttach) { + Frontend.getInstance().runMultipleAction(VdcActionType.AttachNetworkToVdsGroup, toAttach, this, null); + } + + if (needsDetach) { + Frontend.getInstance().runMultipleAction(VdcActionType.DetachNetworkToVdsGroup, toDetach, this, null); + } + + if (!needsAttach && !needsDetach) { + doFinish(); + } + } + + private void doFinish() { + stopProgress(); + cancel(); + sourceListModel.forceRefresh(); + } + }; + + callback.executed(new FrontendMultipleActionAsyncResult(null, null, null)); + startProgress(null); + } + + private void cancel() { + sourceListModel.setWindow(null); + } + + @Override + public void executeCommand(UICommand command) { + super.executeCommand(command); + + if (command == okCommand) { + onManage(); + } else if (command == cancelCommand) { + cancel(); + } + } + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkModel.java index 879a5ca..e2c05eb 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterNetworkModel.java @@ -3,21 +3,26 @@ import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.NetworkCluster; +import org.ovirt.engine.ui.uicommonweb.Cloner; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostInterfaceListModel; public class ClusterNetworkModel extends EntityModel { + private final NetworkCluster originalNetworkCluster; private boolean management; private boolean attached = true; private VDSGroup cluster = null; public ClusterNetworkModel(Network network) { setEntity(network); - if (network.getCluster() == null){ + if (network.getCluster() == null) { + originalNetworkCluster = null; attached = false; // Init with default values getEntity().setCluster(new NetworkCluster(!network.isExternal())); + } else { + originalNetworkCluster = (NetworkCluster) Cloner.clone(network.getCluster()); } if (HostInterfaceListModel.ENGINE_NETWORK_NAME.equals(network.getName())) { setManagement(true); @@ -98,4 +103,8 @@ getEntity().getCluster().setMigration(migrationNetwork); } + public NetworkCluster getOriginalNetworkCluster() { + return originalNetworkCluster; + } + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkClusterListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkClusterListModel.java index 11c264a..dbf6ff7 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkClusterListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkClusterListModel.java @@ -5,9 +5,6 @@ import java.util.Comparator; import java.util.List; -import org.ovirt.engine.core.common.action.AttachNetworkToVdsGroupParameter; -import org.ovirt.engine.core.common.action.VdcActionParametersBase; -import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.NetworkCluster; @@ -16,7 +13,6 @@ import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.common.utils.PairQueryable; -import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; @@ -26,11 +22,8 @@ import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterNetworkManageModel; import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterNetworkModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; -import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; -import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; -@SuppressWarnings("unused") public class NetworkClusterListModel extends SearchableListModel { private UICommand manageCommand; @@ -50,10 +43,8 @@ setManageCommand(new UICommand("Manage", this)); //$NON-NLS-1$ } - public void manage() - { - if (getWindow() != null) - { + public void manage() { + if (getWindow() != null) { return; } @@ -86,7 +77,7 @@ Collections.sort(networkManageModelList, manageModelComparator); - ClusterNetworkManageModel listModel = new ClusterNetworkManageModel() { + ClusterNetworkManageModel listModel = new ClusterNetworkManageModel(this) { @Override public boolean isMultiCluster() { return true; @@ -94,102 +85,7 @@ }; listModel.setItems(networkManageModelList); - UICommand cancelCommand = new UICommand("Cancel", this); //$NON-NLS-1$ - cancelCommand.setTitle(ConstantsManager.getInstance().getConstants().cancel()); - cancelCommand.setIsCancel(true); - listModel.getCommands().add(cancelCommand); - - UICommand okCommand = new UICommand("OnManage", this); //$NON-NLS-1$ - okCommand.setTitle(ConstantsManager.getInstance().getConstants().ok()); - okCommand.setIsDefault(true); - listModel.getCommands().add(0, okCommand); - return listModel; - } - - public void onManage() { - final ClusterNetworkManageModel windowModel = (ClusterNetworkManageModel) getWindow(); - - List<ClusterNetworkModel> manageList = windowModel.getItems(); - final ArrayList<VdcActionParametersBase> toAttach = new ArrayList<VdcActionParametersBase>(); - final ArrayList<VdcActionParametersBase> toDetach = new ArrayList<VdcActionParametersBase>(); - - for (ClusterNetworkModel manageModel : manageList) { - PairQueryable<VDSGroup, NetworkCluster> item = getItem(manageModel.getCluster().getName()); - boolean wasAttached = item.getSecond() != null; - - boolean needsAttach = manageModel.isAttached() && !wasAttached; - boolean needsDetach = !manageModel.isAttached() && wasAttached; - boolean needsUpdate = false; - - // Attachment wasn't changed- check if needs update - if (wasAttached && !needsDetach) { - if ((manageModel.isRequired() != item.getSecond().isRequired()) - || (manageModel.isDisplayNetwork() != item.getSecond().isDisplay()) - || (manageModel.isMigrationNetwork() != item.getSecond().isMigration())) { - needsUpdate = true; - } - } - - if (needsAttach || needsUpdate) { - toAttach.add(new AttachNetworkToVdsGroupParameter(manageModel.getCluster(), manageModel.getEntity())); - } - - if (needsDetach) { - toDetach.add(new AttachNetworkToVdsGroupParameter(manageModel.getCluster(), manageModel.getEntity())); - } - } - - final IFrontendMultipleActionAsyncCallback callback = new IFrontendMultipleActionAsyncCallback() { - Boolean needsAttach = !toAttach.isEmpty(); - Boolean needsDetach = !toDetach.isEmpty(); - - @Override - public void executed(FrontendMultipleActionAsyncResult result) { - if (result.getActionType() == VdcActionType.DetachNetworkToVdsGroup) { - needsDetach = false; - } - if (result.getActionType() == VdcActionType.AttachNetworkToVdsGroup) { - needsAttach = false; - } - - if (needsAttach) { - Frontend.getInstance().runMultipleAction(VdcActionType.AttachNetworkToVdsGroup, toAttach, this, null); - } - - if (needsDetach) { - Frontend.getInstance().runMultipleAction(VdcActionType.DetachNetworkToVdsGroup, toDetach, this, null); - } - - if (!needsAttach && !needsDetach) { - doFinish(); - } - } - - private void doFinish() { - windowModel.stopProgress(); - cancel(); - forceRefresh(); - } - }; - - callback.executed(new FrontendMultipleActionAsyncResult(null, null, null)); - windowModel.startProgress(null); - } - - private PairQueryable<VDSGroup, NetworkCluster> getItem(String clusterName) { - List<PairQueryable<VDSGroup, NetworkCluster>> items = - (List<PairQueryable<VDSGroup, NetworkCluster>>) getItems(); - for (PairQueryable<VDSGroup, NetworkCluster> item : items) { - if (item.getFirst().getName().equals(clusterName)) { - return item; - } - } - return null; - } - - public void cancel() { - setWindow(null); } @Override @@ -265,17 +161,8 @@ public void executeCommand(UICommand command) { super.executeCommand(command); - if (command == getManageCommand()) - { + if (command == getManageCommand()) { manage(); - } - else if (StringHelper.stringsEqual(command.getName(), "OnManage")) //$NON-NLS-1$ - { - onManage(); - } - else if (StringHelper.stringsEqual(command.getName(), "Cancel")) //$NON-NLS-1$ - { - cancel(); } } -- To view, visit http://gerrit.ovirt.org/22903 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifa634f7d8011c25de7b1937984d4ec3627068b31 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <lver...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches