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

Reply via email to