Added Intent PURGED events to the collected Intent Event metrics.

Change-Id: Ibe641b91ffe68e8699d6a21a430ea772a7cb7e7a
diff --git a/apps/metrics/intent/src/main/java/org/onosproject/metrics/intent/IntentMetrics.java b/apps/metrics/intent/src/main/java/org/onosproject/metrics/intent/IntentMetrics.java
index 81cc415..237fd17 100644
--- a/apps/metrics/intent/src/main/java/org/onosproject/metrics/intent/IntentMetrics.java
+++ b/apps/metrics/intent/src/main/java/org/onosproject/metrics/intent/IntentMetrics.java
@@ -69,6 +69,7 @@
     private static final String FEATURE_WITHDRAW_REQUESTED_NAME =
         "WithdrawRequested";
     private static final String FEATURE_WITHDRAWN_NAME = "Withdrawn";
+    private static final String FEATURE_PURGED_NAME = "Purged";
     //
     // Event metrics:
     //  - Intent Submitted API operation
@@ -76,12 +77,14 @@
     //  - Intent Failed compilation or installation
     //  - Intent Withdraw Requested API operation
     //  - Intent Withdrawn operation completion
+    //  - Intent Purged operation completion
     //
     private EventMetric intentSubmittedEventMetric;
     private EventMetric intentInstalledEventMetric;
     private EventMetric intentFailedEventMetric;
     private EventMetric intentWithdrawRequestedEventMetric;
     private EventMetric intentWithdrawnEventMetric;
+    private EventMetric intentPurgedEventMetric;
 
     @Activate
     protected void activate() {
@@ -135,6 +138,11 @@
     }
 
     @Override
+    public EventMetric intentPurgedEventMetric() {
+        return intentPurgedEventMetric;
+    }
+
+    @Override
     public void event(IntentEvent event) {
         synchronized (lastEvents) {
             switch (event.type()) {
@@ -153,6 +161,9 @@
             case WITHDRAWN:
                 intentWithdrawnEventMetric.eventReceived();
                 break;
+            case PURGED:
+                intentPurgedEventMetric.eventReceived();
+                break;
             default:
                 break;
             }
@@ -198,12 +209,16 @@
         intentWithdrawnEventMetric =
             new EventMetric(metricsService, COMPONENT_NAME,
                             FEATURE_WITHDRAWN_NAME);
+        intentPurgedEventMetric =
+            new EventMetric(metricsService, COMPONENT_NAME,
+                            FEATURE_PURGED_NAME);
 
         intentSubmittedEventMetric.registerMetrics();
         intentInstalledEventMetric.registerMetrics();
         intentFailedEventMetric.registerMetrics();
         intentWithdrawRequestedEventMetric.registerMetrics();
         intentWithdrawnEventMetric.registerMetrics();
+        intentPurgedEventMetric.registerMetrics();
     }
 
     /**
@@ -215,5 +230,6 @@
         intentFailedEventMetric.removeMetrics();
         intentWithdrawRequestedEventMetric.removeMetrics();
         intentWithdrawnEventMetric.removeMetrics();
+        intentPurgedEventMetric.removeMetrics();
     }
 }
diff --git a/apps/metrics/intent/src/main/java/org/onosproject/metrics/intent/IntentMetricsService.java b/apps/metrics/intent/src/main/java/org/onosproject/metrics/intent/IntentMetricsService.java
index ef5a6a7..d349417 100644
--- a/apps/metrics/intent/src/main/java/org/onosproject/metrics/intent/IntentMetricsService.java
+++ b/apps/metrics/intent/src/main/java/org/onosproject/metrics/intent/IntentMetricsService.java
@@ -26,42 +26,49 @@
     /**
      * Gets the last saved intent events.
      *
-     * @return the last saved intent events.
+     * @return the last saved intent events
      */
     public List<IntentEvent> getEvents();
 
     /**
      * Gets the Event Metric for the intent INSTALL_REQ events.
      *
-     * @return the Event Metric for the intent INSTALL_REQ events.
+     * @return the Event Metric for the intent INSTALL_REQ events
      */
     public EventMetric intentSubmittedEventMetric();
 
     /**
      * Gets the Event Metric for the intent INSTALLED events.
      *
-     * @return the Event Metric for the intent INSTALLED events.
+     * @return the Event Metric for the intent INSTALLED events
      */
     public EventMetric intentInstalledEventMetric();
 
     /**
      * Gets the Event Metric for the intent FAILED events.
      *
-     * @return the Event Metric for the intent FAILED events.
+     * @return the Event Metric for the intent FAILED events
      */
     public EventMetric intentFailedEventMetric();
 
     /**
      * Gets the Event Metric for the intent WITHDRAW_REQ events.
      *
-     * @return the Event Metric for the intent WITHDRAW_REQ events.
+     * @return the Event Metric for the intent WITHDRAW_REQ events
      */
     public EventMetric intentWithdrawRequestedEventMetric();
 
     /**
      * Gets the Event Metric for the intent WITHDRAWN events.
      *
-     * @return the Event Metric for the intent WITHDRAWN events.
+     * @return the Event Metric for the intent WITHDRAWN events
      */
     public EventMetric intentWithdrawnEventMetric();
+
+    /**
+     * Gets the Event Metric for the intent PURGED events.
+     *
+     * @return the Event Metric for the intent PURGED events
+     */
+    public EventMetric intentPurgedEventMetric();
 }
diff --git a/apps/metrics/intent/src/main/java/org/onosproject/metrics/intent/cli/IntentEventsMetricsCommand.java b/apps/metrics/intent/src/main/java/org/onosproject/metrics/intent/cli/IntentEventsMetricsCommand.java
index 75e3f27..a6f396c 100644
--- a/apps/metrics/intent/src/main/java/org/onosproject/metrics/intent/cli/IntentEventsMetricsCommand.java
+++ b/apps/metrics/intent/src/main/java/org/onosproject/metrics/intent/cli/IntentEventsMetricsCommand.java
@@ -62,6 +62,8 @@
                           service.intentWithdrawRequestedEventMetric());
             result = json(mapper, result, "intentWithdrawn",
                           service.intentWithdrawnEventMetric());
+            result = json(mapper, result, "intentPurged",
+                          service.intentPurgedEventMetric());
             print("%s", result);
         } else {
             printEventMetric("Submitted",
@@ -74,6 +76,8 @@
                              service.intentWithdrawRequestedEventMetric());
             printEventMetric("Withdrawn",
                              service.intentWithdrawnEventMetric());
+            printEventMetric("Purged",
+                             service.intentPurgedEventMetric());
         }
     }