public function addColumnDefinition(ColumnDefinition $column)
 {
     if (!is_array($this->columnDefinition)) {
         $this->columnDefinition = array();
     }
     if (isset($this->columnDefinition[$column->getName()])) {
         throw new MalformedSqlException("Column '{$column->getName()}' already defined!");
     }
     $this->columnDefinition[$column->getName()] = $column;
     if ($column->getIsPrimaryKey()) {
         $index = new Index();
         $index->setIsPrimary(true);
         $index->setName("PRIMARY");
         $index->addColumn(ColumnSpecifier::factory($column->getName()));
         $this->addIndex($index);
     } elseif ($column->getIsUnique()) {
         $index = new Index();
         $index->setIsUnique(true);
         $index->setName($column->getName());
         $index->addColumn(ColumnSpecifier::factory($column->getName()));
         $this->addIndex($index);
     }
 }
Exemple #2
0
 protected function convertColumnDefinitionToColumnSchema(ColumnDefinition $columnDefinition, ExecutionContext $executionContext)
 {
     $columnPage = new ColumnSchema();
     $columnPage->setName($columnDefinition->getName());
     /* @var $dataType DataType */
     $dataType = $columnDefinition->getDataType();
     $columnPage->setDataType($dataType);
     if (!is_null($columnDefinition->getDataTypeLength())) {
         $columnPage->setLength($columnDefinition->getDataTypeLength());
     }
     if (!is_null($columnDefinition->getDataTypeSecondLength())) {
         $columnPage->setSecondLength($columnDefinition->getDataTypeSecondLength());
     }
     $flags = 0;
     if ($columnDefinition->getIsAutoIncrement()) {
         $flags = $flags ^ ColumnSchema::EXTRA_AUTO_INCREMENT;
     }
     if (!$columnDefinition->getIsNullable()) {
         $flags = $flags ^ ColumnSchema::EXTRA_NOT_NULL;
     }
     if ($columnDefinition->getIsPrimaryKey()) {
         $flags = $flags ^ ColumnSchema::EXTRA_PRIMARY_KEY;
     }
     if ($columnDefinition->getIsUnique()) {
         $flags = $flags ^ ColumnSchema::EXTRA_UNIQUE_KEY;
     }
     if ($columnDefinition->getIsUnsigned()) {
         $flags = $flags ^ ColumnSchema::EXTRA_UNSIGNED;
     }
     if (false) {
         $flags = $flags ^ ColumnSchema::EXTRA_ZEROFILL;
     }
     $columnPage->setExtraFlags($flags);
     #$columnPage->setFKColumnIndex($index);
     #$columnPage->setFKTableIndex($index);
     /* @var $defaultValue Value */
     $defaultValue = $columnDefinition->getDefaultValue();
     if (!is_null($defaultValue)) {
         if (!$dataType->mustResolveDefaultValue()) {
             # default value must be resolved at insertion-time => save unresolved
             $defaultValueData = $this->valueResolver->resolveValue($defaultValue, $executionContext);
             $defaultValueData = $this->dataConverter->convertStringToBinary($defaultValueData, $columnPage->getDataType());
         } else {
             $defaultValueData = (string) $defaultValue;
         }
     } else {
         $defaultValueData = null;
     }
     $columnPage->setDefaultValue($defaultValueData);
     $comment = $columnDefinition->getComment();
     # TODO: save column comment
     return $columnPage;
 }