001    /*
002     * To change this template, choose Tools | Templates
003     * and open the template in the editor.
004     */
005    
006    package org.util.xml.element;
007    
008    import java.util.ArrayList;
009    
010    /**
011     *
012     * @author masaru
013     */
014    public class Attributes {
015        
016        ArrayList<Attribute> attribute_list_;
017        
018        public Attributes() {
019            attribute_list_ = new ArrayList<Attribute>();
020        }
021        public Attributes(Attribute... list) {
022            this();
023            for(int i=0;i<list.length;i++)
024                add(list[i]);
025        }
026        /**
027         * lowest method of add
028         * @param attribute
029         */
030        public void add(Attribute attribute) {
031            attribute_list_.add(attribute);
032        }
033        public void add(String name, String value) {
034            attribute_list_.add(new Attribute(name, value));
035        }
036        public void set(Attribute new_attribute) {
037            Attribute attribute = get(new_attribute.getName());
038            if(attribute==null) add(new_attribute);
039            else attribute.setValue(new_attribute.getValue());
040        }
041        public void set(String name, String value) {
042            set(new Attribute(name, value));
043        }
044        
045        public int size() {
046            return attribute_list_.size();
047        }
048        public Attribute get(int index) {
049            return attribute_list_.get(index);
050        }
051        public Attribute get(String name) {
052            for(int i=0;i<attribute_list_.size();i++) {
053                Attribute attribute = attribute_list_.get(i);
054                if(attribute.getName().equals(name))
055                    return attribute;
056            }
057            return null;
058        }
059        public String getValue(String name, String return_if_return_value_is_null) {
060            for(int i=0;i<attribute_list_.size();i++)
061                if(attribute_list_.get(i).getName().toLowerCase().equals(name.toLowerCase()))
062                    return attribute_list_.get(i).getValue();
063            return return_if_return_value_is_null;
064        }
065        public String getValue(String attribute_name) {
066            return getValue(attribute_name, null);
067        }
068        
069        public String toString() {
070            if(attribute_list_.size()==0) return "";
071            StringBuffer sb = new StringBuffer(attribute_list_.get(0).toString());
072            for(int i=1;i<attribute_list_.size();i++) {
073                sb.append(" ").append(attribute_list_.get(i));
074            }
075            return sb.toString();
076        }
077        
078        public static final Attributes EmptySet = new Attributes(){
079            
080            public void add(Attribute attribute){}
081            public Attribute get(int index) {
082                return null;
083            }
084            public String getValue(String name) {
085                return null;
086            }
087        };
088    }