Ejemplo n.º 1
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;
 }