PCE update to support constraints
[transportpce.git] / pce / src / main / java / org / opendaylight / transportpce / pce / networkanalyzer / PceResult.java
diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceResult.java b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceResult.java
new file mode 100644 (file)
index 0000000..233d785
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * Copyright © 2017 AT&T, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.transportpce.pce.networkanalyzer;
+
+import org.opendaylight.transportpce.common.ResponseCodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ZToADirection;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class PceResult {
+    private static final Logger LOG = LoggerFactory.getLogger(PceResult.class);
+    private String calcMessage = "503 Calculator Unavailable";
+    private boolean calcStatus = false;
+    private String responseCode = ResponseCodes.RESPONSE_FAILED;
+    private long resultWavelength = -1;
+    // for now it is constant returned as received from A-end
+    private long rate = -1;
+
+    public enum LocalCause {
+        NONE, TOO_HIGH_LATENCY, NO_PATH_EXISTS, INT_PROBLEM;
+    }
+
+    private LocalCause localCause = LocalCause.NONE;
+
+    private AToZDirection atozdirection = null;
+    private ZToADirection ztoadirection = null;
+
+    public PceResult() {
+    }
+
+    public void setRC(String rc) {
+        switch (rc) {
+            case ResponseCodes.RESPONSE_OK :
+                calcMessage = "Path is calculated";
+                calcStatus = true;
+                responseCode = ResponseCodes.RESPONSE_OK;
+                break;
+            case ResponseCodes.RESPONSE_FAILED :
+                responseCode = ResponseCodes.RESPONSE_FAILED;
+                calcStatus = false;
+                calcMessage = "No path available";
+                break;
+            default:
+                LOG.error("setRC: RespondeCodes unknown");
+        }
+    }
+
+    public String toString() {
+        return ("[" + calcMessage + "] code:[" + responseCode + "] wavelength="
+                + resultWavelength + " localCause=" + localCause + " rate="
+                + rate);
+    }
+
+    public boolean getStatus() {
+        return calcStatus;
+    }
+
+    public String getMessage() {
+        return calcMessage;
+    }
+
+    public String getResponseCode() {
+        return responseCode;
+    }
+
+    public long getResultWavelength() {
+        return resultWavelength;
+    }
+
+    public void setResultWavelength(long resultWavelength) {
+        this.resultWavelength = resultWavelength;
+    }
+
+    public AToZDirection getAtoZDirection() {
+        return atozdirection;
+    }
+
+    public ZToADirection getZtoADirection() {
+        return ztoadirection;
+    }
+
+    public void setAtoZDirection(AToZDirection atozDirection) {
+        this.atozdirection = atozDirection;
+    }
+
+    public void setZtoADirection(ZToADirection ztoaDirection) {
+        this.ztoadirection = ztoaDirection;
+    }
+
+    public long getRate() {
+        return rate;
+    }
+
+    public void setRate(long rate) {
+        this.rate = rate;
+    }
+
+    public LocalCause getLocalCause() {
+        return localCause;
+    }
+
+    public void setLocalCause(LocalCause lc) {
+        // For now keep the very first fatal problem
+        // TODO. Later this value might become history of algo if all
+        // significant problems are added here as to List
+        if (localCause == LocalCause.NONE) {
+            this.localCause = lc;
+        }
+    }
+
+    public void setCalcMessage(String calcMessage) {
+        this.calcMessage = calcMessage;
+    }
+
+}