PrimitiveElement.java
上传用户:szyujian
上传日期:2016-09-20
资源大小:320k
文件大小:4k
源码类别:

android开发

开发平台:

C/C++

  1. /*
  2.  * Copyright (C) 2007 Esmertec AG.
  3.  * Copyright (C) 2007 The Android Open Source Project
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  *      http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package com.android.im.imps;
  18. import java.util.ArrayList;
  19. import java.util.Collections;
  20. import java.util.HashMap;
  21. import java.util.Map;
  22. /**
  23.  * Represents a XML element of Primitive. Note that this class is not
  24.  * thread-safe.
  25.  */
  26. final public class PrimitiveElement {
  27.     private String mTagName;
  28.     private HashMap<String, String> mAttributes;
  29.     private ArrayList<PrimitiveElement> mChildren;
  30.     private String mContents;
  31.     public PrimitiveElement(String tagName) {
  32.         mTagName = tagName;
  33.     }
  34.     public String getTagName() {
  35.         return mTagName;
  36.     }
  37.     public void setTagName(String tagName) {
  38.         this.mTagName = tagName;
  39.     }
  40.     public Map<String, String> getAttributes() {
  41.         if (mAttributes == null) {
  42.             return null;
  43.         }
  44.         return Collections.unmodifiableMap(mAttributes);
  45.     }
  46.     public void setAttribute(String key, String value) {
  47.         if (key != null && value != null) {
  48.             if (mAttributes == null) {
  49.                 mAttributes = new HashMap<String, String>();
  50.             }
  51.             mAttributes.put(key, value);
  52.         }
  53.     }
  54.     public ArrayList<PrimitiveElement> getChildren() {
  55.         if (mChildren == null) {
  56.             mChildren = new ArrayList<PrimitiveElement>();
  57.         }
  58.         return mChildren;
  59.     }
  60.     public ArrayList<PrimitiveElement> getChildren(String tagName) {
  61.         ArrayList<PrimitiveElement> children = new ArrayList<PrimitiveElement>();
  62.         for (PrimitiveElement child : getChildren()) {
  63.             if (tagName.equals(child.getTagName())) {
  64.                 children.add(child);
  65.             }
  66.         }
  67.         return children;
  68.     }
  69.     public PrimitiveElement getChild(String tagName) {
  70.         for (PrimitiveElement child : getChildren()) {
  71.             if (tagName.equals(child.getTagName())) {
  72.                 return child;
  73.             }
  74.         }
  75.         return null;
  76.     }
  77.     public String getChildContents(String tagName) {
  78.         PrimitiveElement child = getChild(tagName);
  79.         return child == null ? null : child.getContents();
  80.     }
  81.     public int getChildCount() {
  82.         if (mChildren == null || mChildren.isEmpty()) {
  83.             return 0;
  84.         } else {
  85.             return mChildren.size();
  86.         }
  87.     }
  88.     public PrimitiveElement getFirstChild() {
  89.         if ((mChildren == null) || mChildren.isEmpty()) {
  90.             return null;
  91.         }
  92.         return mChildren.get(0);
  93.     }
  94.     public PrimitiveElement addChild(PrimitiveElement child) {
  95.         if (child != null) {
  96.             getChildren().add(child);
  97.         }
  98.         return child;
  99.     }
  100.     public PrimitiveElement addChild(String tagName) {
  101.         if (null == tagName) {
  102.             return null;
  103.         }
  104.         PrimitiveElement element = new PrimitiveElement(tagName);
  105.         getChildren().add(element);
  106.         return element;
  107.     }
  108.     public void addChild(String tagName, String contents) {
  109.         PrimitiveElement element = addChild(tagName);
  110.         if (null != contents) {
  111.             element.setContents(contents);
  112.         }
  113.     }
  114.     public void addChild(String tagName, boolean value) {
  115.         addChild(tagName).setContents(value ?
  116.                 ImpsConstants.TRUE : ImpsConstants.FALSE);
  117.     }
  118.     public void addPropertyChild(String name, String value)
  119.     {
  120.         PrimitiveElement ret = addChild(ImpsTags.Property);
  121.         ret.addChild(ImpsTags.Name, name);
  122.         ret.addChild(ImpsTags.Value, value);
  123.     }
  124.     public void addPropertyChild(String name, boolean value)
  125.     {
  126.         PrimitiveElement ret = addChild(ImpsTags.Property);
  127.         ret.addChild(ImpsTags.Name, name);
  128.         ret.addChild(ImpsTags.Value, value);
  129.     }
  130.     public String getContents() {
  131.         return mContents;
  132.     }
  133.     public void setContents(String contents) {
  134.         mContents = contents;
  135.     }
  136. }