171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistpackage com.android.server.wifi.hotspot2.omadm;
271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist
371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistimport java.io.IOException;
471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistimport java.io.OutputStream;
571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistimport java.util.Collection;
671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistimport java.util.Iterator;
71d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistimport java.util.Map;
871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist
971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvistpublic class OMAScalar extends OMANode {
1071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    private final String mValue;
1171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist
121d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist    public OMAScalar(OMAConstructed parent, String name, String context, String value,
131d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist                     String ... avps) {
141d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist        this(parent, name, context, value, buildAttributes(avps));
151d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist    }
161d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist
171d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist    public OMAScalar(OMAConstructed parent, String name, String context, String value,
181d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist                     Map<String, String> avps) {
191d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist        super(parent, name, context, avps);
2071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        mValue = value;
2171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    }
2271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist
231d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist    @Override
241d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist    public OMAScalar reparent(OMAConstructed parent) {
251d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist        return new OMAScalar(parent, getName(), getContext(), mValue, getAttributes());
261d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist    }
271d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist
2871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    public String getScalarValue(Iterator<String> path) throws OMAException {
2971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        return mValue;
3071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    }
3171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist
3271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    @Override
331d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist    public OMANode getListValue(Iterator<String> path) throws OMAException {
3471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        throw new OMAException("Scalar encountered in list path: " + getPathString());
3571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    }
3671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist
3771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    @Override
3871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    public boolean isLeaf() {
3971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        return true;
4071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    }
4171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist
4271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    @Override
4371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    public Collection<OMANode> getChildren() {
4471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        throw new UnsupportedOperationException();
4571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    }
4671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist
4771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    @Override
4871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    public String getValue() {
4971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        return mValue;
5071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    }
5171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist
5271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    @Override
531d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist    public OMANode getChild(String name) throws OMAException {
541d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist        throw new OMAException("'" + getName() + "' is a scalar node");
5571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    }
5671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist
5771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    @Override
5871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    public OMANode addChild(String name, String context, String value, String path)
5971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist            throws IOException {
6071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        throw new UnsupportedOperationException();
6171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    }
6271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist
6371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    @Override
6471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    public void toString(StringBuilder sb, int level) {
6571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        sb.append(getPathString()).append('=').append(mValue);
6671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        if (getContext() != null) {
6771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist            sb.append(" (").append(getContext()).append(')');
6871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        }
6971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        sb.append('\n');
7071a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    }
7171a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist
7271a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    @Override
7371a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    public void marshal(OutputStream out, int level) throws IOException {
7471a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        OMAConstants.indent(level, out);
7571a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        OMAConstants.serializeString(getName(), out);
7671a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        out.write((byte) '=');
7771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        OMAConstants.serializeString(getValue(), out);
7871a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist        out.write((byte) '\n');
7971a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist    }
801d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist
811d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist    @Override
821d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist    public void fillPayload(StringBuilder sb) {
831d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist        sb.append('<').append(MOTree.ValueTag).append('>');
84c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        sb.append(escape(mValue));
851d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist        sb.append("</").append(MOTree.ValueTag).append(">\n");
861d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist    }
8771a988c8e9859244b83cd55bb6b6ee913fcaf95cJan Nordqvist}
88