6cca3ae52b2e619b93eb63f02b5f75970d9b555f
[netconf.git] / restconf / restconf-common / src / main / java / org / opendaylight / restconf / common / util / 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.restconf.common.util;
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(
20             final String namespace, final String value, final String prefix, final String originValue) {
21         elementData.add(new IdentityValue(namespace, value));
22         this.originValue = originValue;
23     }
24
25     public IdentityValuesDTO(final String originValue) {
26         this.originValue = originValue;
27     }
28
29     public IdentityValuesDTO() {
30         originValue = null;
31     }
32
33     public void add(final String namespace, final String value, final String prefix) {
34         elementData.add(new IdentityValue(namespace, value));
35     }
36
37     public void add(final IdentityValue identityValue) {
38         elementData.add(identityValue);
39     }
40
41     public List<IdentityValue> getValuesWithNamespaces() {
42         return Collections.unmodifiableList(elementData);
43     }
44
45     @Override
46     public String toString() {
47         return elementData.toString();
48     }
49
50     public String getOriginValue() {
51         return originValue;
52     }
53
54     public static final class IdentityValue {
55
56         private final String namespace;
57         private final String value;
58         private List<Predicate> predicates;
59
60         public IdentityValue(final String namespace, final String value) {
61             this.namespace = namespace;
62             this.value = value;
63         }
64
65         public String getNamespace() {
66             return namespace;
67         }
68
69         public String getValue() {
70             return value;
71         }
72
73
74         public List<Predicate> getPredicates() {
75             if (predicates == null) {
76                 return Collections.emptyList();
77             }
78             return Collections.unmodifiableList(predicates);
79         }
80
81         public void setPredicates(final List<Predicate> predicates) {
82             this.predicates = predicates;
83         }
84
85         @Override
86         public String toString() {
87             final StringBuilder sb = new StringBuilder();
88             if (namespace != null) {
89                 sb.append(namespace);
90             }
91             if (value != null) {
92                 sb.append(" - ").append(value);
93             }
94             if (predicates != null && !predicates.isEmpty()) {
95                 for (final Predicate predicate : predicates) {
96                     sb.append("[").append(predicate.toString()).append("]");
97                 }
98             }
99             return sb.toString();
100         }
101
102     }
103
104     public static final class Predicate {
105
106         private final IdentityValue name;
107         private final String value;
108
109         public Predicate(final IdentityValue name, final String value) {
110             this.name = name;
111             this.value = value;
112         }
113
114         public IdentityValue getName() {
115             return name;
116         }
117
118         public String getValue() {
119             return value;
120         }
121
122         @Override
123         public String toString() {
124             final StringBuilder sb = new StringBuilder();
125             if (name != null) {
126                 sb.append(name.toString());
127             }
128             if (value != null) {
129                 sb.append("=").append(value);
130             }
131             return sb.toString();
132         }
133
134         public boolean isLeafList() {
135             return name == null;
136         }
137
138     }
139 }