Application manages the IP layer topology information - Interfaces

Change-Id: Ie1dea035674ee98583e98a82cca7e33ab0858b92
diff --git a/apps/iptopology-api/src/main/java/org/onosproject/iptopology/api/IpDeviceIdentifier.java b/apps/iptopology-api/src/main/java/org/onosproject/iptopology/api/IpDeviceIdentifier.java
new file mode 100644
index 0000000..472fe00
--- /dev/null
+++ b/apps/iptopology-api/src/main/java/org/onosproject/iptopology/api/IpDeviceIdentifier.java
@@ -0,0 +1,141 @@
+/*

+ * Copyright 2015 Open Networking Laboratory

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+package org.onosproject.iptopology.api;

+

+import static com.google.common.base.MoreObjects.toStringHelper;

+

+import java.util.Objects;

+

+/**

+ * Represents IP Device Identifiers.

+ */

+public class IpDeviceIdentifier {

+

+    private final RouteDistinguisher routeDish;

+    private final RouteInstance routeInstance;

+    private final AsNumber asNum;

+    private final DomainId domainIdentifier;

+    private final AreaId areaId;

+    private final RouteIdentifier routerIdentifier;

+

+    /**

+     * Constructor to initialize parameters.

+     *

+     * @param routeInstance routing protocol instance

+     * @param asNum AS number

+     * @param domainIdentifier BGP-LS domain

+     * @param areaId Area ID

+     * @param routerIdentifier IGP router ID

+     */

+    public IpDeviceIdentifier(RouteDistinguisher routeDish, RouteInstance routeInstance, AsNumber asNum,

+                           DomainId domainIdentifier, AreaId areaId, RouteIdentifier routerIdentifier) {

+        this.routeDish = routeDish;

+        this.areaId = areaId;

+        this.asNum = asNum;

+        this.domainIdentifier = domainIdentifier;

+        this.routeInstance = routeInstance;

+        this.routerIdentifier = routerIdentifier;

+    }

+

+    /**

+     * Obtains Route Distinguisher of Ip Device.

+     *

+     * @return Area ID

+     */

+    public RouteDistinguisher routeDish() {

+        return routeDish;

+    }

+

+    /**

+     * Obtains Area ID if Ip Device.

+     *

+     * @return Area ID

+     */

+    public AreaId areaId() {

+        return areaId;

+    }

+

+    /**

+     * Obtains AS number of Ip Device.

+     *

+     * @return AS number

+     */

+    public AsNumber asNum() {

+        return asNum;

+    }

+

+    /**

+     * Obtains domain identifier of Ip Device.

+     *

+     * @return domain identifier

+     */

+    public DomainId domainIdentifier() {

+        return domainIdentifier;

+    }

+

+    /**

+     * Obtains Router id of Ip Device.

+     *

+     * @return Router id

+     */

+    public RouteIdentifier routerIdentifier() {

+        return routerIdentifier;

+    }

+

+    /**

+     * Obtains routing protocol instance.

+     *

+     * @return routing protocol instance

+     */

+    public RouteInstance routeInstance() {

+        return routeInstance;

+    }

+

+    @Override

+    public int hashCode() {

+        return Objects.hash(routeDish, areaId, asNum, domainIdentifier, routerIdentifier, routeInstance);

+    }

+

+    @Override

+    public boolean equals(Object obj) {

+        if (this == obj) {

+            return true;

+        }

+

+        if (obj instanceof IpDeviceIdentifier) {

+            IpDeviceIdentifier other = (IpDeviceIdentifier) obj;

+            return Objects.equals(areaId, other.areaId) && Objects.equals(asNum, other.asNum)

+                    && Objects.equals(domainIdentifier, other.domainIdentifier)

+                    && Objects.equals(routerIdentifier, other.routerIdentifier)

+                    && Objects.equals(routeInstance, other.routeInstance)

+                    && Objects.equals(routeDish, other.routeDish);

+        }

+        return false;

+    }

+

+    @Override

+    public String toString() {

+        return toStringHelper(this)

+                .omitNullValues()

+                .add("areaId", areaId)

+                .add("asNum", asNum)

+                .add("domainIdentifier", domainIdentifier)

+                .add("routerIdentifier", routerIdentifier)

+                .add("routeInstance", routeInstance)

+                .add("routeDish", routeDish)

+                .toString();

+    }

+}
\ No newline at end of file