1c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist/*
2c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist * Copyright (C) 2016 The Android Open Source Project
3c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist *
4c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist * Licensed under the Apache License, Version 2.0 (the "License");
5c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist * you may not use this file except in compliance with the License.
6c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist * You may obtain a copy of the License at
7c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist *
8c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist *      http://www.apache.org/licenses/LICENSE-2.0
9c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist *
10c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist * Unless required by applicable law or agreed to in writing, software
11c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist * distributed under the License is distributed on an "AS IS" BASIS,
12c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist * See the License for the specific language governing permissions and
14c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist * limitations under the License.
15c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist */
16c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist
17c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvistpackage com.android.server.wifi.hotspot2.omadm;
18c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist
19c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvistimport java.util.Map;
20c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist
21c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist/**
22c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist * A specialized OMAConstructed OMA-DM node used as the MgmtTree root node in Passpoint
23c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist * management trees.
24c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist */
25c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvistpublic class ManagementTreeRoot extends OMAConstructed {
26c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist    private final String mDtdRev;
27c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist
28c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist    public ManagementTreeRoot(XMLNode node, String dtdRev) {
29c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        super(null, MOTree.MgmtTreeTag, null, new MultiValueMap<OMANode>(),
30c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist                node.getTextualAttributes());
31c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        mDtdRev = dtdRev;
32c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist    }
33c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist
34c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist    public ManagementTreeRoot(String dtdRev) {
35c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        super(null, MOTree.MgmtTreeTag, null, "xmlns", OMAConstants.SyncML);
36c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        mDtdRev = dtdRev;
37c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist    }
38c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist
39c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist    @Override
40c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist    public void toXml(StringBuilder sb) {
41c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        sb.append('<').append(MOTree.MgmtTreeTag);
42c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        if (getAttributes() != null && !getAttributes().isEmpty()) {
43c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist            for (Map.Entry<String, String> avp : getAttributes().entrySet()) {
44c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist                sb.append(' ').append(avp.getKey()).append("=\"")
45c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist                        .append(escape(avp.getValue())).append('"');
46c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist            }
47c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        }
48c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        sb.append(">\n");
49c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist
50c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        sb.append('<').append(OMAConstants.SyncMLVersionTag)
51c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist                .append('>').append(mDtdRev)
52c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist                .append("</").append(OMAConstants.SyncMLVersionTag).append(">\n");
53c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        for (OMANode child : getChildren()) {
54c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist            child.toXml(sb);
55c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        }
56c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist        sb.append("</").append(MOTree.MgmtTreeTag).append(">\n");
57c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist    }
58c9b88562541a0c2acd60d0a01ac1e182e73c79f9Jan Nordqvist}
59