/**
  * Converte o valor informado para representação em banco de dados
  *
  * @param mixed $value
  * @return mixed
  * @throws IllegalArgumentException
  * @todo implementar AntiSQLInject para os valores informados
  * */
 public function converteValue($value)
 {
     $dataType = NULL === $this->_forceType ? $this->_column->getDataType() : $this->_forceType;
     $result = NULL;
     $content = NULL;
     if (TRUE == is_array($value)) {
         foreach ($value as $val) {
             $content[] = $this->converteValue($val);
         }
         return '(' . implode(', ', $content) . ')';
     }
     if ($value instanceof Renderizable) {
         $result = current(preg_split('/\\s*AS\\s*/', $value->render()));
     } elseif ('boolean' == $dataType) {
         switch (strtolower(trim($value))) {
             case '':
             case 'f':
             case '0':
             case 'false':
             case 'null':
             case NULL:
                 $result = 'FALSE';
                 // @codeCoverageIgnoreStart
                 break;
                 // @codeCoverageIgnoreEnd
             // @codeCoverageIgnoreEnd
             default:
                 $result = 'TRUE';
                 // @codeCoverageIgnoreStart
                 break;
                 // @codeCoverageIgnoreEnd
         }
     } elseif (TRUE == is_null($value)) {
         $result = 'NULL';
     } elseif ('char' == $dataType || 'date' == $dataType || 'string' == $dataType || 'character' == $dataType || 'datetime' == $dataType || 'timestamp' == $dataType) {
         $result = "'{$value}'";
     } elseif ('integer' == $dataType) {
         $result = $value + 0;
     } elseif ('double' == $dataType) {
         $result = $value;
     } else {
         throw new IllegalArgumentException(sprintf(self::RELATIONALABSTRACT_UNSUPPORTED_TYPE, $dataType));
     }
     return $result;
 }