/**
     * Initializes the SQL to PHP map so that it
     * can be used by client code.
     */
    public static function initialize()
    {
        if (self::$isInitialized === false) {
        
            self::$TEXT_TYPES = array (
                        self::CHAR, self::VARCHAR, self::LONGVARCHAR, self::CLOB, self::DATE, self::TIME, self::TIMESTAMP, self::BU_DATE, self::BU_TIMESTAMP
                    );
        
            self::$LOB_TYPES = array (
                        self::VARBINARY, self::LONGVARBINARY, self::CLOB, self::BLOB
                    );
            
            /*
             * Create Creole -> native PHP type mappings.
             */
             
            self::$propelToPHPNativeMap = array();

            self::$propelToPHPNativeMap[self::CHAR] = self::CHAR_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::VARCHAR] = self::VARCHAR_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::LONGVARCHAR] = self::LONGVARCHAR_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::CLOB] = self::CLOB_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::NUMERIC] = self::NUMERIC_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::DECIMAL] = self::DECIMAL_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::TINYINT] = self::TINYINT_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::SMALLINT] = self::SMALLINT_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::INTEGER] = self::INTEGER_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::BIGINT] = self::BIGINT_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::REAL] = self::REAL_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::FLOAT] = self::FLOAT_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::DOUBLE] = self::DOUBLE_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::BINARY] = self::BINARY_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::VARBINARY] = self::VARBINARY_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::LONGVARBINARY] = self::LONGVARBINARY_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::BLOB] = self::BLOB_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::DATE] = self::DATE_NATIVE_TYPE;
			self::$propelToPHPNativeMap[self::BU_DATE] = self::BU_DATE_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::TIME] = self::TIME_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::TIMESTAMP] = self::TIMESTAMP_NATIVE_TYPE;
			self::$propelToPHPNativeMap[self::BU_TIMESTAMP] = self::BU_TIMESTAMP_NATIVE_TYPE;
            self::$propelToPHPNativeMap[self::BOOLEAN] = self::BOOLEAN_NATIVE_TYPE;

            /*
             * Create Propel -> Creole _name_ mappings (not CreoleType:: mappings).
             * (this is now pretty useless since we've designed them to be the same!)
             */
            self::$propelTypeToCreoleTypeMap = array();
            self::$propelTypeToCreoleTypeMap[self::CHAR] = self::CHAR;
            self::$propelTypeToCreoleTypeMap[self::VARCHAR] = self::VARCHAR;
            self::$propelTypeToCreoleTypeMap[self::LONGVARCHAR] = self::LONGVARCHAR;
            self::$propelTypeToCreoleTypeMap[self::CLOB] = self::CLOB;
            self::$propelTypeToCreoleTypeMap[self::NUMERIC] = self::NUMERIC;
            self::$propelTypeToCreoleTypeMap[self::DECIMAL] = self::DECIMAL;
            self::$propelTypeToCreoleTypeMap[self::TINYINT] = self::TINYINT;
            self::$propelTypeToCreoleTypeMap[self::SMALLINT] = self::SMALLINT;
            self::$propelTypeToCreoleTypeMap[self::INTEGER] = self::INTEGER;
            self::$propelTypeToCreoleTypeMap[self::BIGINT] = self::BIGINT;
            self::$propelTypeToCreoleTypeMap[self::REAL] = self::REAL;
            self::$propelTypeToCreoleTypeMap[self::FLOAT] = self::FLOAT;
            self::$propelTypeToCreoleTypeMap[self::DOUBLE] = self::DOUBLE;
            self::$propelTypeToCreoleTypeMap[self::BINARY] = self::BINARY;
            self::$propelTypeToCreoleTypeMap[self::VARBINARY] = self::VARBINARY;
            self::$propelTypeToCreoleTypeMap[self::LONGVARBINARY] = self::LONGVARBINARY;
            self::$propelTypeToCreoleTypeMap[self::BLOB] = self::BLOB;
            self::$propelTypeToCreoleTypeMap[self::DATE] = self::DATE;
            self::$propelTypeToCreoleTypeMap[self::TIME] = self::TIME;
            self::$propelTypeToCreoleTypeMap[self::TIMESTAMP] = self::TIMESTAMP;
            self::$propelTypeToCreoleTypeMap[self::BOOLEAN] = self::BOOLEAN;
			
			// These are pre-epoch dates, which we need to map to String type
			// since they cannot be properly handled using strtotime() -- or even numeric
			// timestamps on Windows.
			self::$propelTypeToCreoleTypeMap[self::BU_DATE] = self::VARCHAR;
			self::$propelTypeToCreoleTypeMap[self::BU_TIMESTAMP] = self::VARCHAR;
			

            /*
             * Create Creole type code to Propel type map.
             */
            self::$creoleToPropelTypeMap = array();

            self::$creoleToPropelTypeMap[CreoleTypes::CHAR] = self::CHAR;
            self::$creoleToPropelTypeMap[CreoleTypes::VARCHAR] = self::VARCHAR;
            self::$creoleToPropelTypeMap[CreoleTypes::LONGVARCHAR] = self::LONGVARCHAR;
            self::$creoleToPropelTypeMap[CreoleTypes::CLOB] = self::CLOB;
            self::$creoleToPropelTypeMap[CreoleTypes::NUMERIC] = self::NUMERIC;
            self::$creoleToPropelTypeMap[CreoleTypes::DECIMAL] = self::DECIMAL;
            self::$creoleToPropelTypeMap[CreoleTypes::TINYINT] = self::TINYINT;
            self::$creoleToPropelTypeMap[CreoleTypes::SMALLINT] = self::SMALLINT;
            self::$creoleToPropelTypeMap[CreoleTypes::INTEGER] = self::INTEGER;
            self::$creoleToPropelTypeMap[CreoleTypes::BIGINT] = self::BIGINT;
            self::$creoleToPropelTypeMap[CreoleTypes::REAL] = self::REAL;
            self::$creoleToPropelTypeMap[CreoleTypes::FLOAT] = self::FLOAT;
            self::$creoleToPropelTypeMap[CreoleTypes::DOUBLE] = self::DOUBLE;
            self::$creoleToPropelTypeMap[CreoleTypes::BINARY] = self::BINARY;
            self::$creoleToPropelTypeMap[CreoleTypes::VARBINARY] = self::VARBINARY;
            self::$creoleToPropelTypeMap[CreoleTypes::LONGVARBINARY] = self::LONGVARBINARY;
            self::$creoleToPropelTypeMap[CreoleTypes::BLOB] = self::BLOB;
            self::$creoleToPropelTypeMap[CreoleTypes::DATE] = self::DATE;
            self::$creoleToPropelTypeMap[CreoleTypes::TIME] = self::TIME;
            self::$creoleToPropelTypeMap[CreoleTypes::TIMESTAMP] = self::TIMESTAMP;
            self::$creoleToPropelTypeMap[CreoleTypes::BOOLEAN] = self::BOOLEAN;
            self::$creoleToPropelTypeMap[CreoleTypes::YEAR] = self::INTEGER;
            
            self::$isInitialized = true;
        }
    }