Lior Vernia has uploaded a new change for review. Change subject: webadmin: Validate no duplicate network names on import ......................................................................
webadmin: Validate no duplicate network names on import It is quite easy to detect whether networks with duplicate names are attempted to be imported, so this can be checked before the action is sent to the backend. Change-Id: If63d450bfc8d666ebb383e29fdfe43fcf879db78 Bug-Url: https://bugzilla.redhat.com/1048752 Signed-off-by: Lior Vernia <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/ImportNetworksModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/external/StringUtils.java 3 files changed, 38 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/50/30650/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/ImportNetworksModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/ImportNetworksModel.java index 9bc7b6f..71cb0d5 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/ImportNetworksModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/ImportNetworksModel.java @@ -3,6 +3,7 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -25,7 +26,9 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.frontend.FrontendFailureEventArgs; import org.ovirt.engine.ui.frontend.INewAsyncCallback; +import org.ovirt.engine.ui.frontend.Message; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.Linq.IPredicate; import org.ovirt.engine.ui.uicommonweb.UICommand; @@ -44,6 +47,7 @@ import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; import org.ovirt.engine.ui.uicompat.IEventListener; import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback; +import org.ovirt.engine.ui.uicompat.external.StringUtils; public class ImportNetworksModel extends Model { @@ -191,11 +195,41 @@ AsyncDataProvider.getInstance().getDataCenterList(dcQuery); } + private boolean validate() { + boolean valid = true; + Set<String> encounteredNames = new HashSet<String>(); + Set<String> duplicateNames = new HashSet<String>(); + for (ExternalNetwork network : (Iterable<ExternalNetwork>) importedNetworks.getItems()) { + String networkName = network.getDisplayName(); + if (encounteredNames.contains(networkName)) { + duplicateNames.add(networkName); + valid = false; + } else { + encounteredNames.add(networkName); + } + } + + if (!valid) { + Frontend.getInstance() + .getFrontendFailureEvent() + .raise(this, + new FrontendFailureEventArgs(Collections.singletonList(new Message(ConstantsManager.getInstance() + .getMessages() + .duplicateNetworkNamesOnImport(StringUtils.join(duplicateNames, ", ")))))); //$NON-NLS-1$ + } + + return valid; + } + public void cancel() { sourceListModel.setWindow(null); } public void onImport() { + if (!validate()) { + return; + } + List<VdcActionParametersBase> multipleActionParameters = new LinkedList<VdcActionParametersBase>(); List<IFrontendActionAsyncCallback> callbacks = new LinkedList<IFrontendActionAsyncCallback>(); diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java index a77a7b9..51612a1 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java @@ -281,6 +281,9 @@ @DefaultMessage("Changing the URL of this provider might hurt the proper functioning of the following entities provided by it.\n\n{0}") String providerUrlWarningText(String providedEntities); + + @DefaultMessage("Cannot import networks, the following network names appear more than once: {0}. Either change their names or decide which of them should not be imported.") + String duplicateNetworkNamesOnImport(String networkNames); // Vnic @DefaultMessage("The virtual machine is running and NIC Hot Plug is not supported on cluster version {0} or by the operating system.") diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/external/StringUtils.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/external/StringUtils.java index 2c9b91f..f3e14fe 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/external/StringUtils.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/external/StringUtils.java @@ -17,7 +17,6 @@ * limitations under the License. */ import java.util.Iterator; -import java.util.List; public class StringUtils { @@ -75,7 +74,7 @@ * @param delimiter the separator string to use * @return */ - public static String join(List<String> list, String delimiter) { + public static String join(Iterable<String> list, String delimiter) { if (list == null) { return ""; } -- To view, visit http://gerrit.ovirt.org/30650 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If63d450bfc8d666ebb383e29fdfe43fcf879db78 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
