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