00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00030 abstract class CreoleTypes {
00031
00032 const BOOLEAN = 1;
00033 const BIGINT = 2;
00034 const SMALLINT = 3;
00035 const TINYINT = 4;
00036 const INTEGER = 5;
00037 const CHAR = 6;
00038 const VARCHAR = 7;
00039 const TEXT = 17;
00040 const FLOAT = 8;
00041 const DOUBLE = 9;
00042 const DATE = 10;
00043 const TIME = 11;
00044 const TIMESTAMP = 12;
00045 const VARBINARY = 13;
00046 const NUMERIC = 14;
00047 const BLOB = 15;
00048 const CLOB = 16;
00049 const LONGVARCHAR = 17;
00050 const DECIMAL = 18;
00051 const REAL = 19;
00052 const BINARY = 20;
00053 const LONGVARBINARY = 21;
00054 const YEAR = 22;
00055
00057 const ARR = 23;
00058
00059 const OTHER = -1;
00060
00062 protected static $affixMap = array(
00063 self::BOOLEAN => 'Boolean',
00064 self::BIGINT => 'String',
00065 self::CHAR => 'String',
00066 self::DATE => 'Date',
00067 self::DOUBLE => 'Float',
00068 self::FLOAT => 'Float',
00069 self::INTEGER => 'Int',
00070 self::SMALLINT => 'Int',
00071 self::TINYINT => 'Int',
00072 self::TIME => 'Time',
00073 self::TIMESTAMP => 'Timestamp',
00074 self::VARCHAR => 'String',
00075 self::VARBINARY => 'Blob',
00076 self::NUMERIC => 'Float',
00077 self::BLOB => 'Blob',
00078 self::CLOB => 'Clob',
00079 self::LONGVARCHAR => 'String',
00080 self::DECIMAL => 'Float',
00081 self::REAL => 'Float',
00082 self::BINARY => 'Blob',
00083 self::LONGVARBINARY => 'Blob',
00084 self::YEAR => 'Int',
00085 self::ARR => 'Array',
00086 self::OTHER => '',
00087 );
00088
00090 protected static $creoleTypeMap = array(
00091 self::BOOLEAN => 'BOOLEAN',
00092 self::BIGINT => 'BIGINT',
00093 self::SMALLINT => 'SMALLINT',
00094 self::TINYINT => 'TINYINT',
00095 self::INTEGER => 'INTEGER',
00096 self::NUMERIC => 'NUMERIC',
00097 self::DECIMAL => 'DECIMAL',
00098 self::REAL => 'REAL',
00099 self::FLOAT => 'FLOAT',
00100 self::DOUBLE => 'DOUBLE',
00101 self::CHAR => 'CHAR',
00102 self::VARCHAR => 'VARCHAR',
00103 self::TEXT => 'TEXT',
00104 self::TIME => 'TIME',
00105 self::TIMESTAMP => 'TIMESTAMP',
00106 self::DATE => 'DATE',
00107 self::YEAR => 'YEAR',
00108 self::VARBINARY => 'VARBINARY',
00109 self::BLOB => 'BLOB',
00110 self::CLOB => 'CLOB',
00111 self::LONGVARCHAR => 'LONGVARCHAR',
00112 self::BINARY => 'BINARY',
00113 self::LONGVARBINARY => 'LONGVARBINARY',
00114 self::ARR => 'ARR',
00115 self::OTHER => 'OTHER',
00116 );
00117
00124 abstract static function getType($nativeType);
00125
00133 abstract static function getNativeType($creoleType);
00134
00148 public static function getAffix($creoleType)
00149 {
00150 if (!isset(self::$affixMap[$creoleType])) {
00151 $e = new SQLException("Unable to return 'affix' for unknown CreoleType: " . $creoleType);
00152 throw $e;
00153 }
00154 return self::$affixMap[$creoleType];
00155 }
00156
00162 public static function getCreoleName($creoleType)
00163 {
00164 if (!isset(self::$creoleTypeMap[$creoleType])) {
00165 return null;
00166 }
00167 return self::$creoleTypeMap[$creoleType];
00168 }
00169
00175 public static function getCreoleCode($creoleTypeName)
00176 {
00177 $type = array_search($creoleTypeName, self::$creoleTypeMap);
00178 if ($type === false) {
00179 return null;
00180 }
00181 return $type;
00182 }
00183 }