Added error count for IntentData (ONOS-1060)

Change-Id: Ida6313603c15fb6c1c1793c298206587b370a13e
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/phase/InstallRequest.java b/core/net/src/main/java/org/onosproject/net/intent/impl/phase/InstallRequest.java
index 03f73eb..a75d7cc 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/phase/InstallRequest.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/phase/InstallRequest.java
@@ -21,6 +21,7 @@
 import java.util.Optional;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static org.onosproject.net.intent.impl.phase.IntentProcessPhase.transferErrorCount;
 
 /**
  * Represents a phase where intent installation has been requested.
@@ -47,6 +48,8 @@
 
     @Override
     public Optional<IntentProcessPhase> execute() {
+        transferErrorCount(data, stored);
+
         return Optional.of(new Compiling(processor, data, stored));
     }
 }
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/phase/IntentProcessPhase.java b/core/net/src/main/java/org/onosproject/net/intent/impl/phase/IntentProcessPhase.java
index 399a307..bce572c 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/phase/IntentProcessPhase.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/phase/IntentProcessPhase.java
@@ -18,6 +18,7 @@
 import org.onosproject.net.intent.IntentData;
 import org.onosproject.net.intent.impl.IntentProcessor;
 
+import java.util.Objects;
 import java.util.Optional;
 
 /**
@@ -57,4 +58,16 @@
         }
     }
 
+    static void transferErrorCount(IntentData data, Optional<IntentData> stored) {
+        if (stored.isPresent()) {
+            IntentData storedData = stored.get();
+            if (Objects.equals(data.intent(), storedData.intent()) &&
+                    Objects.equals(data.request(), storedData.request())) {
+                data.setErrorCount(storedData.errorCount());
+            } else {
+                data.setErrorCount(0);
+            }
+        }
+    }
+
 }
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/phase/WithdrawRequest.java b/core/net/src/main/java/org/onosproject/net/intent/impl/phase/WithdrawRequest.java
index 73a6510..8a0709e 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/phase/WithdrawRequest.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/phase/WithdrawRequest.java
@@ -21,6 +21,7 @@
 import java.util.Optional;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static org.onosproject.net.intent.impl.phase.IntentProcessPhase.transferErrorCount;
 
 /**
  * Represents a phase of requesting a withdraw of an intent.
@@ -51,6 +52,8 @@
         // same version i.e. they are the same
         // Note: this call is not just the symmetric version of submit
 
+        transferErrorCount(data, stored);
+
         if (!stored.isPresent() || stored.get().installables().isEmpty()) {
             switch (data.request()) {
                 case INSTALL_REQ: