[ONOS-4164] Failed path info store
Change-Id: I8e16493ce479d2489b16fc76b56f55455927cb56
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java
new file mode 100644
index 0000000..3b7b47e
--- /dev/null
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright 2016-present 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.pce.pcestore;
+
+import com.google.common.base.MoreObjects;
+
+import java.util.List;
+import java.util.Objects;
+
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.intent.Constraint;
+import org.onosproject.pce.pceservice.LspType;
+
+/**
+ * Input path information to compute CSPF path.
+ * This path information will be stored in pce store and will be used later to recalculate the path.
+ */
+public final class PcePathInfo {
+
+ private DeviceId src; // source path
+
+ private DeviceId dst; // destination path
+
+ private String name; // tunnel name
+
+ private List<Constraint> constraints; // list of constraints (cost, bandwidth, etc.)
+
+ private LspType lspType; // lsp type
+
+ /**
+ * Initialization of member variables.
+ *
+ * @param src source device id
+ * @param dst destination device id
+ * @param name tunnel name
+ * @param constraints list of constraints
+ * @param lspType lsp type
+ */
+ public PcePathInfo(DeviceId src,
+ DeviceId dst,
+ String name,
+ List<Constraint> constraints,
+ LspType lspType) {
+ this.src = src;
+ this.dst = dst;
+ this.name = name;
+ this.constraints = constraints;
+ this.lspType = lspType;
+ }
+
+ /**
+ * Initialization for serialization.
+ */
+ public PcePathInfo() {
+ this.src = null;
+ this.dst = null;
+ this.name = null;
+ this.constraints = null;
+ this.lspType = null;
+ }
+
+ /**
+ * Returns source device id.
+ *
+ * @return source device id
+ */
+ public DeviceId src() {
+ return src;
+ }
+
+ /**
+ * Sets source device id.
+ *
+ * @param id source device id
+ */
+ public void src(DeviceId id) {
+ this.src = id;
+ }
+
+ /**
+ * Returns destination device id.
+ *
+ * @return destination device id
+ */
+ public DeviceId dst() {
+ return dst;
+ }
+
+ /**
+ * Sets destination device id.
+ *
+ * @param id destination device id
+ */
+ public void dst(DeviceId id) {
+ this.dst = id;
+ }
+
+
+ /**
+ * Returns tunnel name.
+ *
+ * @return name
+ */
+ public String name() {
+ return name;
+ }
+
+ /**
+ * Sets tunnel name.
+ *
+ * @param name tunnel name
+ */
+ public void name(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Returns list of constraints including cost, bandwidth, etc.
+ *
+ * @return list of constraints
+ */
+ public List<Constraint> constraints() {
+ return constraints;
+ }
+
+ /**
+ * Sets list of constraints.
+ * @param constraints list of constraints
+ */
+ public void constraints(List<Constraint> constraints) {
+ this.constraints = constraints;
+ }
+
+ /**
+ * Returns lsp type.
+ *
+ * @return lsp type
+ */
+ public LspType lspType() {
+ return lspType;
+ }
+
+ /**
+ * Sets lsp type.
+ *
+ * @param lspType lsp type
+ */
+ public void lspType(LspType lspType) {
+ this.lspType = lspType;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(src, dst, name, constraints, lspType);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof PcePathInfo) {
+ final PcePathInfo other = (PcePathInfo) obj;
+ return Objects.equals(this.src, other.src) &&
+ Objects.equals(this.dst, other.dst) &&
+ Objects.equals(this.name, other.name) &&
+ Objects.equals(this.constraints, other.constraints) &&
+ Objects.equals(this.lspType, other.lspType);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(getClass())
+ .omitNullValues()
+ .add("Source", src.toString())
+ .add("Destination", dst.toString())
+ .add("Name", name.toString())
+ .add("Constraints", constraints.toString())
+ .add("LspType", lspType.toString())
+ .toString();
+ }
+}