97965796caf09c96df2042e348e68b8a0a733c3a
[neutron.git] / neutron-spi / src / main / java / org / opendaylight / neutron / spi / NeutronQosPolicy.java
1 /*
2  * Copyright (c) 2016 Intel Corporation.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.neutron.spi;
10
11 import java.io.Serializable;
12 import java.util.ArrayList;
13 import java.util.List;
14 import javax.xml.bind.annotation.XmlAccessType;
15 import javax.xml.bind.annotation.XmlAccessorType;
16 import javax.xml.bind.annotation.XmlElement;
17 import javax.xml.bind.annotation.XmlRootElement;
18
19 @XmlRootElement
20 @XmlAccessorType(XmlAccessType.NONE)
21 public final class NeutronQosPolicy extends NeutronBaseAttributes<NeutronQosPolicy> implements Serializable {
22     private static final long serialVersionUID = 1L;
23
24     @XmlElement(defaultValue = "false", name = "shared")
25     Boolean shared;
26
27     @XmlElement(name = "bandwidth_limit_rules")
28     List<NeutronQosBandwidthLimitRule> bandwidthLimitRules;
29
30     @XmlElement(name = "dscp_marking_rules")
31     List<NeutronQosDscpMarkingRule> dscpMarkingRules;
32
33     @XmlElement(name = "minimum_bandwidth_rules")
34     List<NeutronQosMinimumBandwidthRule> minimumBandwidthRules;
35
36     public Boolean getPolicyIsShared() {
37         return shared;
38     }
39
40     public void setPolicyIsShared(Boolean qosPolicyIsShared) {
41         this.shared = qosPolicyIsShared;
42     }
43
44     public List<NeutronQosBandwidthLimitRule> getBandwidthLimitRules() {
45         return bandwidthLimitRules;
46     }
47
48     public void setQosBandwidthLimitRules(List<NeutronQosBandwidthLimitRule> qosBandwidthLimitRules) {
49         this.bandwidthLimitRules = qosBandwidthLimitRules;
50     }
51
52     public List<NeutronQosDscpMarkingRule> getDscpMarkingRules() {
53         return dscpMarkingRules;
54     }
55
56     public void setDscpMarkingRules(List<NeutronQosDscpMarkingRule> qosDscpMarkingRules) {
57         this.dscpMarkingRules = qosDscpMarkingRules;
58     }
59
60     public List<NeutronQosMinimumBandwidthRule> getMinimumBandwidthRules() {
61         return minimumBandwidthRules;
62     }
63
64     public void setMinimumBandwidthRules(List<NeutronQosMinimumBandwidthRule> qosMinimumBandwidthRules) {
65         this.minimumBandwidthRules = qosMinimumBandwidthRules;
66     }
67
68     @Override
69     protected boolean extractField(String field, NeutronQosPolicy ans) {
70         switch (field) {
71             case "shared":
72                 ans.setPolicyIsShared(this.getPolicyIsShared());
73                 break;
74             case "bandwidth_limit_rules":
75                 List<NeutronQosBandwidthLimitRule> qosBandwidthRuleList = new ArrayList<>();
76                 qosBandwidthRuleList.addAll(this.getBandwidthLimitRules());
77                 ans.setQosBandwidthLimitRules(qosBandwidthRuleList);
78                 break;
79             case "dscp_marking_rules":
80                 List<NeutronQosDscpMarkingRule> qosDscpMarkingRuleList = new ArrayList<>();
81                 qosDscpMarkingRuleList.addAll(this.getDscpMarkingRules());
82                 ans.setDscpMarkingRules(qosDscpMarkingRuleList);
83                 break;
84             case "minimum_bandwidth_rules":
85                 List<NeutronQosMinimumBandwidthRule> qosMinimumBandwidthRuleList = new ArrayList<>();
86                 qosMinimumBandwidthRuleList.addAll(this.getMinimumBandwidthRules());
87                 ans.setMinimumBandwidthRules(qosMinimumBandwidthRuleList);
88                 break;
89             default:
90                 return super.extractField(field, ans);
91         }
92         return true;
93     }
94
95     @Override
96     public String toString() {
97         return "NeutronQosPolicy{" + "qosPolicyUUID='" + uuid + '\'' + ", qosPolicyTenantID='" + tenantID + '\''
98                 + ", qosPolicyName='" + name + '\'' + ", qosPolicyIsShared='" + shared + '\''
99                 + ", qosbandwidthLimitRules='" + bandwidthLimitRules + '\'' + ", qosDscpMarkingRules='"
100                 + dscpMarkingRules + '\'' + ", qosMinimumBandwidthRules='" + minimumBandwidthRules + '\''
101                 + '}';
102     }
103 }