configurable PPPoE flow per service

Change-Id: I71905b183faf700dd087f5bb001f502af27117ee
diff --git a/api/src/main/java/org/opencord/sadis/UniTagInformation.java b/api/src/main/java/org/opencord/sadis/UniTagInformation.java
index 12bbaae..0e5c438 100644
--- a/api/src/main/java/org/opencord/sadis/UniTagInformation.java
+++ b/api/src/main/java/org/opencord/sadis/UniTagInformation.java
@@ -76,6 +76,9 @@
     @JsonProperty(value = "isIgmpRequired")
     private boolean isIgmpRequired;
 
+    @JsonProperty(value = "isPppoeRequired")
+    private boolean isPppoeRequired;
+
     public UniTagInformation() {
 
     }
@@ -90,7 +93,7 @@
                               final String downstreamOltBandwidthProfile,
                               final String serviceName, final boolean enableMacLearning,
                               final String configuredMacAddress, final boolean isDhcpRequired,
-                              final boolean isIgmpRequired) {
+                              final boolean isIgmpRequired, final boolean isPppoeRequired) {
         this.uniTagMatch = uniTagMatch;
         this.ponCTag = ponCTag;
         this.ponSTag = ponSTag;
@@ -108,6 +111,7 @@
         this.configuredMacAddress = configuredMacAddress;
         this.isDhcpRequired = isDhcpRequired;
         this.isIgmpRequired = isIgmpRequired;
+        this.isPppoeRequired = isPppoeRequired;
     }
     //CHECKSTYLE:ON
 
@@ -179,6 +183,10 @@
         return isIgmpRequired;
     }
 
+    public final boolean getIsPppoeRequired() {
+        return isPppoeRequired;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) {
@@ -226,6 +234,9 @@
         if (isIgmpRequired != that.isIgmpRequired) {
             return false;
         }
+        if (isPppoeRequired != that.isPppoeRequired) {
+            return false;
+        }
         if (upstreamBandwidthProfile != null ? !upstreamBandwidthProfile.equals(that.upstreamBandwidthProfile) :
                 that.upstreamBandwidthProfile != null) {
             return false;
@@ -266,6 +277,7 @@
         result = 31 * result + (configuredMacAddress != null ? configuredMacAddress.hashCode() : 0);
         result = 31 * result + (isDhcpRequired ? 1 : 0);
         result = 31 * result + (isIgmpRequired ? 1 : 0);
+        result = 31 * result + (isPppoeRequired ? 1 : 0);
         return result;
     }
 
@@ -289,6 +301,7 @@
         sb.append(", configuredMacAddress='").append(configuredMacAddress).append('\'');
         sb.append(", isDhcpRequired=").append(isDhcpRequired);
         sb.append(", isIgmpRequired=").append(isIgmpRequired);
+        sb.append(", isPppoeRequired=").append(isPppoeRequired);
         sb.append('}');
         return sb.toString();
     }
@@ -312,6 +325,7 @@
         private String configuredMacAddress;
         private boolean isDhcpRequired;
         private boolean isIgmpRequired;
+        private boolean isPppoeRequired;
 
         public final Builder setUniTagMatch(final VlanId uniTagMatch) {
             this.uniTagMatch = uniTagMatch;
@@ -398,14 +412,19 @@
             return this;
         }
 
+        public final Builder setIsPppoeRequired(final boolean isPppoeRequired) {
+            this.isPppoeRequired = isPppoeRequired;
+            return this;
+        }
+
         public final UniTagInformation build() {
             return new UniTagInformation(this.uniTagMatch, this.ponCTag,
                     this.ponSTag, this.usPonCTagPriority, this.usPonSTagPriority,
                     this.dsPonCTagPriority, this.dsPonSTagPriority, this.technologyProfileId,
                     this.upstreamBandwidthProfile, this.downstreamBandwidthProfile,
                     this.upstreamOltBandwidthProfile, this.downstreamOltBandwidthProfile,
-                    this.serviceName, this.enableMacLearning,
-                    this.configuredMacAddress, this.isDhcpRequired, this.isIgmpRequired);
+                    this.serviceName, this.enableMacLearning, this.configuredMacAddress,
+                    this.isDhcpRequired, this.isIgmpRequired, this.isPppoeRequired);
         }
     }
 }