Fix to update gateway group only if new gateway is added

Also implemented equals, hashCode, and toString for GatewayNode.

Change-Id: I4c487cafa263833701c5790b2057c1d9c23e33bf
diff --git a/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/impl/ScalableGatewayManager.java b/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/impl/ScalableGatewayManager.java
index adf354e..37e601c 100644
--- a/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/impl/ScalableGatewayManager.java
+++ b/apps/scalablegateway/src/main/java/org/onosproject/scalablegateway/impl/ScalableGatewayManager.java
@@ -203,9 +203,15 @@
 
     @Override
     public boolean addGatewayNode(GatewayNode gatewayNode) {
-        gatewayNodeMap.putIfAbsent(gatewayNode.getGatewayDeviceId(), gatewayNode);
-        updateGatewayLoadBalance(gatewayNode, true);
-        return true;
+        Versioned<GatewayNode> existingNode = gatewayNodeMap.putIfAbsent(
+                gatewayNode.getGatewayDeviceId(), gatewayNode);
+        if (existingNode == null) {
+            updateGatewayLoadBalance(gatewayNode, true);
+            log.info("Added {} to gateway pool", gatewayNode);
+            return true;
+        } else {
+            return false;
+        }
     }
 
     @Override