001    /**
002     * This software is provided under the terms of the Minecraft Forge Public
003     * License v1.0.
004     */
005    
006    package net.minecraftforge.common;
007    
008    public class Property
009    {
010        public enum Type
011        {
012            STRING,
013            INTEGER,
014            BOOLEAN
015        }
016    
017        private String name;
018        public String value;
019        public String comment;
020        private Type type; //Currently does nothing, need to design a way to save/load from the file.
021        
022        public Property(){}
023        
024        public Property(String name, String value, Type type)
025        {
026            setName(name);
027            this.value = value;
028            this.type = type;
029        }
030        
031        /**
032         * Returns the value in this property as a integer,
033         * if the value is not a valid integer, it will return -1.
034         * 
035         * @return The value
036         */
037        public int getInt()
038        {
039            return getInt(-1);
040        }
041        
042        /**
043         * Returns the value in this property as a integer,
044         * if the value is not a valid integer, it will return the
045         * provided default.
046         * 
047         * @param _default The default to provide if the current value is not a valid integer
048         * @return The value
049         */
050        public int getInt(int _default)
051        {
052            try
053            {
054                return Integer.parseInt(value);
055            }
056            catch (NumberFormatException e)
057            {
058                return _default;
059            }
060        }
061        
062        /**
063         * Checks if the current value stored in this property can be converted to an integer.
064         * @return True if the vslue can be converted to an integer
065         */
066        public boolean isIntValue()
067        {
068            try
069            {
070                Integer.parseInt(value);
071                return true;
072            }
073            catch (NumberFormatException e)
074            {
075                return false;
076            }
077        }
078        
079        /**
080         * Returns the value in this property as a boolean,
081         * if the value is not a valid boolean, it will return the
082         * provided default.
083         * 
084         * @param _default The default to provide
085         * @return The value as a boolean, or the default
086         */
087        public boolean getBoolean(boolean _default)
088        {
089            if (isBooleanValue())
090            {
091                return Boolean.parseBoolean(value);
092            }
093            else
094            {
095                return _default;
096            }
097        }
098        
099        /**
100         * Checks if the current value held by this property is a valid boolean value.
101         * @return True if it is a boolean value
102         */
103        public boolean isBooleanValue()
104        {
105            return ("true".equals(value.toLowerCase()) || "false".equals(value.toLowerCase()));
106        }
107    
108        public String getName()
109        {
110            return name;
111        }
112    
113        public void setName(String name)
114        {
115            this.name = name;
116        }
117    }