1package com.android.hotspot2.omadm;
2
3import java.io.IOException;
4import java.io.OutputStream;
5import java.util.Collection;
6import java.util.Iterator;
7import java.util.Map;
8
9public class OMAScalar extends OMANode {
10    private final String mValue;
11
12    public OMAScalar(OMAConstructed parent, String name, String context, String value,
13                     String ... avps) {
14        this(parent, name, context, value, buildAttributes(avps));
15    }
16
17    public OMAScalar(OMAConstructed parent, String name, String context, String value,
18                     Map<String, String> avps) {
19        super(parent, name, context, avps);
20        mValue = value;
21    }
22
23    @Override
24    public OMAScalar reparent(OMAConstructed parent) {
25        return new OMAScalar(parent, getName(), getContext(), mValue, getAttributes());
26    }
27
28    public String getScalarValue(Iterator<String> path) throws OMAException {
29        return mValue;
30    }
31
32    @Override
33    public OMANode getListValue(Iterator<String> path) throws OMAException {
34        throw new OMAException("Scalar encountered in list path: " + getPathString());
35    }
36
37    @Override
38    public boolean isLeaf() {
39        return true;
40    }
41
42    @Override
43    public Collection<OMANode> getChildren() {
44        throw new UnsupportedOperationException();
45    }
46
47    @Override
48    public String getValue() {
49        return mValue;
50    }
51
52    @Override
53    public OMANode getChild(String name) throws OMAException {
54        throw new OMAException("'" + getName() + "' is a scalar node");
55    }
56
57    @Override
58    public OMANode addChild(String name, String context, String value, String path)
59            throws IOException {
60        throw new UnsupportedOperationException();
61    }
62
63    @Override
64    public void toString(StringBuilder sb, int level) {
65        sb.append(getPathString()).append('=').append(mValue);
66        if (getContext() != null) {
67            sb.append(" (").append(getContext()).append(')');
68        }
69        sb.append('\n');
70    }
71
72    @Override
73    public void marshal(OutputStream out, int level) throws IOException {
74        OMAConstants.indent(level, out);
75        OMAConstants.serializeString(getName(), out);
76        out.write((byte) '=');
77        OMAConstants.serializeString(getValue(), out);
78        out.write((byte) '\n');
79    }
80
81    @Override
82    public void fillPayload(StringBuilder sb) {
83        sb.append('<').append(MOTree.ValueTag).append('>');
84        sb.append(mValue);
85        sb.append("</").append(MOTree.ValueTag).append(">\n");
86    }
87}
88