/**
  * Returns a sfValidator class name for a given column.
  *
  * @param  ColumnMap $column  A ColumnMap object
  *
  * @return string    The name of a subclass of sfValidator
  */
 public function getValidatorClassForColumn(ColumnMap $column)
 {
     switch ($column->getCreoleType()) {
         case CreoleTypes::BOOLEAN:
             $name = 'Boolean';
             break;
         case CreoleTypes::CHAR:
         case CreoleTypes::VARCHAR:
         case CreoleTypes::LONGVARCHAR:
             $name = 'String';
             break;
         case CreoleTypes::DOUBLE:
         case CreoleTypes::FLOAT:
         case CreoleTypes::NUMERIC:
         case CreoleTypes::DECIMAL:
         case CreoleTypes::REAL:
             $name = 'Number';
             break;
         case CreoleTypes::INTEGER:
         case CreoleTypes::SMALLINT:
         case CreoleTypes::TINYINT:
         case CreoleTypes::BIGINT:
         case CreoleTypes::YEAR:
             $name = 'Integer';
             break;
         case CreoleTypes::DATE:
             $name = 'Date';
             break;
         case CreoleTypes::TIME:
             $name = 'Time';
             break;
         case CreoleTypes::TIMESTAMP:
             $name = 'DateTime';
             break;
         default:
             $name = 'Pass';
     }
     if ($column->isPrimaryKey() || $column->isForeignKey()) {
         $name = 'PropelChoice';
     }
     return sprintf('sfValidator%s', $name);
 }
  /**
   * Returns HTML code for a column in edit mode.
   *
   * @param ColumnMap $column  The column name
   * @param array  $params  The parameters
   *
   * @return string HTML code
   */
  public function getCrudColumnEditTag($column, $params = array())
  {
    $type = $column->getCreoleType();

    if ($column->isForeignKey())
    {
      if (!$column->isNotNull() && !isset($params['include_blank']))
      {
        $params['include_blank'] = true;
      }
      return $this->getPHPObjectHelper('select_tag', $column, $params, array('related_class' => $this->getRelatedClassName($column)));
    }
    else if ($type == CreoleTypes::DATE)
    {
      // rich=false not yet implemented
      return $this->getPHPObjectHelper('input_date_tag', $column, $params, array('rich' => true));
    }
    else if ($type == CreoleTypes::TIMESTAMP)
    {
      // rich=false not yet implemented
      return $this->getPHPObjectHelper('input_date_tag', $column, $params, array('rich' => true, 'withtime' => true));
    }
    else if ($type == CreoleTypes::BOOLEAN)
    {
      return $this->getPHPObjectHelper('checkbox_tag', $column, $params);
    }
    else if ($type == CreoleTypes::CHAR || $type == CreoleTypes::VARCHAR)
    {
      $fieldMin = $this->getParameterValue('defaults.edit.char_min', 20);
      $fieldMax = $this->getParameterValue('defaults.edit.char_max', 80);
      $size = ($column->getSize() > $fieldMin ? ($column->getSize() < $fieldMax ? $column->getSize() : $fieldMax) : $fieldMin);
      return $this->getPHPObjectHelper('input_tag', $column, $params, array('size' => $size));
    }
    else if ($type == CreoleTypes::INTEGER || $type == CreoleTypes::TINYINT || $type == CreoleTypes::SMALLINT || $type == CreoleTypes::BIGINT)
    {
      $size = $this->getParameterValue('defaults.edit.int_size', 7);
      return $this->getPHPObjectHelper('input_tag', $column, $params, array('size' => $size));
    }
    else if ($type == CreoleTypes::FLOAT || $type == CreoleTypes::DOUBLE || $type == CreoleTypes::DECIMAL || $type == CreoleTypes::NUMERIC || $type == CreoleTypes::REAL)
    {
      $size = $this->getParameterValue('defaults.edit.float_size', 7);
      return $this->getPHPObjectHelper('input_tag', $column, $params, array('size' => $size));
    }
    else if ($type == CreoleTypes::TEXT || $type == CreoleTypes::LONGVARCHAR)
    {
      $size = $this->getParameterValue('defaults.edit.text_size', '80x5');
      return $this->getPHPObjectHelper('textarea_tag', $column, $params, array('size' => $size));
    }
    else
    {
      return $this->getPHPObjectHelper('input_tag', $column, $params, array('disabled' => true));
    }
  }