コード例 #1
0
ファイル: trigger.php プロジェクト: Satariall/izurit
 /**
  * Creates trigger object from tokens.
  * <p>
  * Current position should point to the name of the trigger.
  *
  * @param Tokenizer $tokenizer Tokens collection.
  *
  * @return Trigger
  */
 public static function create(Tokenizer $tokenizer)
 {
     $name = $tokenizer->getCurrentToken()->text;
     $trigger = new self($name);
     $tokenizer->resetState();
     $definition = '';
     while (!$tokenizer->endOfInput()) {
         $definition .= $tokenizer->getCurrentToken()->text;
         $tokenizer->nextToken();
     }
     $trigger->setBody($definition);
     return $trigger;
 }
コード例 #2
0
ファイル: schema.php プロジェクト: Satariall/izurit
 /**
  * Fills some schema part with information from one DDL statement.
  *
  * @param Tokenizer $tokenizer Statement tokens.
  *
  * @return void
  * @throws NotSupportedException
  */
 protected function executeStatement(Tokenizer $tokenizer)
 {
     /** @var Table $table */
     $tokenizer->resetState();
     $tokenizer->skipWhiteSpace();
     if ($tokenizer->testUpperText('CREATE')) {
         $this->executeCreate($tokenizer);
     } elseif ($tokenizer->testUpperText('INSERT')) {
         //skip insert into
     } elseif ($tokenizer->testUpperText('SET')) {
         //skip set identity_insert
     } elseif ($tokenizer->testUpperText('ALTER')) {
         $this->executeAlter($tokenizer);
     } elseif ($tokenizer->testUpperText('IF')) {
         $tokenizer->skipWhiteSpace();
         if ($tokenizer->testUpperText('OBJECT_ID')) {
             while (!$tokenizer->endOfInput()) {
                 if ($tokenizer->nextToken()->upper === 'CREATE') {
                     break;
                 }
             }
             $tokenizer->nextToken();
             $tokenizer->skipWhiteSpace();
             if ($tokenizer->testUpperText('TABLE')) {
                 $this->executeCreateTable($tokenizer);
             } else {
                 throw new NotSupportedException("'CREATE TABLE' expected. line:" . $tokenizer->getCurrentToken()->line);
             }
         } elseif ($tokenizer->testUpperText('NOT')) {
             $tokenizer->skipWhiteSpace();
             if ($tokenizer->testUpperText('EXISTS')) {
                 while (!$tokenizer->endOfInput()) {
                     if ($tokenizer->nextToken()->upper === 'CREATE') {
                         break;
                     }
                 }
                 $tokenizer->nextToken();
                 $tokenizer->skipWhiteSpace();
                 if ($tokenizer->testUpperText('UNIQUE')) {
                     $unique = true;
                     $tokenizer->skipWhiteSpace();
                 } else {
                     $unique = false;
                 }
                 if ($tokenizer->testUpperText('INDEX')) {
                     $this->executeCreateIndex($tokenizer, $unique);
                 } else {
                     throw new NotSupportedException("'CREATE INDEX' expected. line:" . $tokenizer->getCurrentToken()->line);
                 }
             } else {
                 throw new NotSupportedException("'NOT EXISTS' expected. line:" . $tokenizer->getCurrentToken()->line);
             }
         } else {
             throw new NotSupportedException("'OBJECT_ID' expected. line:" . $tokenizer->getCurrentToken()->line);
         }
     } elseif (!$tokenizer->endOfInput()) {
         throw new NotSupportedException("'CREATE' expected. line:" . $tokenizer->getCurrentToken()->line);
     }
 }