/*
 * XMLAttributes.java
 * Copyright (C) 2008 Cyber Beans Corporation. All rights reserved.
 */
package jp.co.cybec.cb3.accessor.fileaccess.xml;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;

/**
 * XMLファイルの項目のすべての属性を表すクラス。
 * @author Daisuke Suga
 */
public class XMLAttributes {

	/**
	 * 属性の名前と属性値を保持するMap。
	 */
	private Map<String, XMLAttribute> attributeMap = new LinkedHashMap<String, XMLAttribute>();

	/**
	 * 指定された属性の名前で属性値を取得します。
	 * @param name 属性の名前
	 * @return 属性
	 */
	public XMLAttribute getAttribute(String name) {
		return attributeMap.get(name);
	}

	/**
	 * 指定された属性値を追加します。
	 * @param attribute 属性
	 */
	public void putAttribute(XMLAttribute attribute) {
		attributeMap.put(attribute.getName(), attribute);
	}

	/**
	 * 属性があるかを判定します。
	 *
	 * @return 属性がない場合true、ある場合false
	 */
	public boolean isEmpty() {
		return attributeMap.isEmpty();
	}

	/**
	 * 属性の数を取得します。
	 *
	 * @return 属性の数
	 */
	public int size() {
		return attributeMap.size();
	}

	/**
	 * 属性の名前のSetを取得します。
	 *
	 * @return 属性の名前のSet
	 */
	public Set<String> keySet() {
		return attributeMap.keySet();
	}

	/**
	 * 属性の名前と値のSetを取得します。
	 *
	 * @return 属性の名前と値のSet
	 */
	public Set<Map.Entry<String, XMLAttribute>> entrySet() {
		return attributeMap.entrySet();
	}

	/**
	 * 属性の値のCollectionを取得します。
	 *
	 * @return 属性の値のCollection
	 */
	public Collection<XMLAttribute> values() {
		return attributeMap.values();
	}

}
