package flare.data
{
    /**
     * A data field stores metadata for an individual data variable.
     */
    public class DataField
    {
        private var _id:String;
        private var _name:String;
        private var _format:String;
        private var _label:String;
        private var _type:int;
        private var _def:Object;
        
        /** A unique id for the data field, often the name. */
        public function get id():String { return _id; }
        /** The name of the data field. */
        public function get name():String { return _name; }
        /** A formatting string for printing values of this field.
         *  @see flare.util.Stings#format
         */
        public function get format():String { return _format; }
        /** A label describing this data field, useful for axis titles. */
        public function get label():String { return _label; }
        /** The data type of this field.
         *  @see flare.data.DataUtil. */
        public function get type():int { return _type; }
        /** The default value for this data field. */
        public function get defaultValue():Object { return _def; }
        
        /**
         * Creates a new DataField.
         * @param name the name of the data field
         * @param type the data type of this field
         * @param def the default value of this field
         * @param id a unique id for the field. If null, the name will be used
         * @param format a formatting string for printing values of this field
         * @param label a label describing this data field
         */
        public function DataField(name:String, type:int, def:Object=null,
                   id:String=null, format:String=null, label:String=null)
        {
            _name = name;
            _type = type;
            _def = def;
            _id = (id==null ? name : id);
            _format = format;
            _label = label==null ? name : _label;
        }
        
    } // end of class DataField
}