Merge "Gerrit contains following fixes: 1) Fix for bug 284 - Added custom ip matching...
[controller.git] / opendaylight / md-sal / sal-rest-connector / src / main / java / org / opendaylight / controller / sal / restconf / impl / IdentityValuesDTO.java
1 package org.opendaylight.controller.sal.restconf.impl;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.List;
6
7 public final class IdentityValuesDTO {
8
9     private final List<IdentityValue> elementData = new ArrayList<>();
10
11     public IdentityValuesDTO(String namespace, String value, String prefix) {
12         elementData.add(new IdentityValue(namespace, value, prefix));
13     }
14     
15     public IdentityValuesDTO() {
16         
17     }
18
19     public void add(String namespace, String value, String prefix) {
20         elementData.add(new IdentityValue(namespace, value, prefix));
21     }
22     
23     public void add(IdentityValue identityValue) {
24         elementData.add(identityValue);
25     }
26     
27
28     public List<IdentityValue> getValuesWithNamespaces() {
29         return Collections.unmodifiableList(elementData);
30     }
31     
32     @Override
33     public String toString() {
34         return elementData.toString();
35     }
36
37     public static final class IdentityValue {
38
39         private final String namespace;
40         private final String value;
41         private final String prefix;
42         private List<Predicate> predicates;
43
44         public IdentityValue(String namespace, String value, String prefix) {
45             this.namespace = namespace;
46             this.value = value;
47             this.prefix = prefix;
48         }
49
50         public String getNamespace() {
51             return namespace;
52         }
53
54         public String getValue() {
55             return value;
56         }
57
58         public String getPrefix() {
59             return prefix;
60         }
61
62         public List<Predicate> getPredicates() {
63             if (predicates == null) {
64                 return Collections.emptyList();
65             }
66             return Collections.unmodifiableList(predicates);
67         }
68
69         public void setPredicates(List<Predicate> predicates) {
70             this.predicates = predicates;
71         }
72         
73         @Override
74         public String toString() {
75             StringBuilder sb = new StringBuilder();
76             if (namespace != null) {
77                 sb.append(namespace);
78             }
79             if (prefix != null) {
80                 sb.append("(").append(prefix).append(")");
81             }
82             if (value != null) {
83                 sb.append(" - ").append(value);
84             }
85             if (predicates != null && !predicates.isEmpty()) {
86                 for (Predicate predicate : predicates) {
87                     sb.append("[");
88                     predicate.toString();
89                     sb.append("]");
90                 }
91             }
92             return sb.toString();
93         }
94
95     }
96     
97     public static final class Predicate {
98         
99         private final IdentityValue name;
100         private final String value;
101         
102         public Predicate(IdentityValue name, String value) {
103             super();
104             this.name = name;
105             this.value = value;
106         }
107         
108         public IdentityValue getName() {
109             return name;
110         }
111         
112         public String getValue() {
113             return value;
114         }
115
116         @Override
117         public String toString() {
118             StringBuilder sb = new StringBuilder();
119             if (name != null) {
120                 sb.append(name.toString());
121             }
122             if (value != null) {
123                 sb.append("=").append(value);
124             }
125             return sb.toString();
126         }
127         
128         public boolean isLeafList() {
129             return name == null ? true : false;
130         }
131         
132     }
133 }