class String def underscore self.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase end def lower_camel gsub(/\A([A-Z])/){|e| $1.downcase }.gsub(/[_]([a-z])/){|e| $1.upcase} end def upper_camel gsub(/\A(.)/){|e| $1.upcase }.gsub(/[_]([a-z])/){|e| $1.upcase} end def to_jdbc { 'Long' => 'BIGINT', 'String' => 'VARCHAR', 'Date' => 'TIMESTAMP', 'Integer' => 'INTEGER', 'Double' => 'DOUBLE' }[self] || self.upcase end def valid_type? %w{Long String Integer Date}.include?(camel) end end