Changeset 223

Show
Ignore:
Timestamp:
08/24/07 01:55:50 (1 year ago)
Author:
lcrouch
Message:

#139 add DbmsSyntax functionality so dbdeploy's timestamps will be run via db-specific sql functions

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/classes/phing/tasks/ext/dbdeploy/DbDeployTask.php

    r222 r223  
    2121  
    2222require_once 'phing/Task.php'; 
    23 include_once 'phing/types/FileSet.php'; 
     23require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php'; 
    2424 
    2525 
     
    3838        public static $TABLE_NAME = 'changelog'; 
    3939 
    40         protected $dbms; 
    4140        protected $url; 
    4241        protected $userid; 
     
    4746        protected $deltaSet = 'Main'; 
    4847        protected $lastChangeToApply = 999; 
     48        protected $dbmsSyntax = null; 
    4949         
    5050    function main() { 
    5151        try{ 
     52                // get correct DbmsSyntax object 
     53                $dbms = substr($this->url, 0, strpos($this->url, ':')); 
     54                $dbmsSyntaxFactory = new DbmsSyntaxFactory($dbms); 
     55                $this->dbmsSyntax = $dbmsSyntaxFactory->getDbmsSyntax(); 
     56                 
    5257                        // open file handles for output 
    5358                $outputFileHandle = fopen($this->outputFile, "w+"); 
     
    99104                        $sqlToPerformDeploy .= '--------------- Fragment begins: ' . $fileChangeNumber . ' ---------------' . "\n"; 
    100105                        $sqlToPerformDeploy .= 'INSERT INTO ' . DbDeployTask::$TABLE_NAME . ' (change_number, delta_set, start_dt, applied_by, description)'. 
    101                                         ' VALUES ('. $fileChangeNumber .', \''. $this->deltaSet .'\', '. mktime() .', \'dbdeploy\', \''. $fileName .'\');' . "\n"; 
     106                                        ' VALUES ('. $fileChangeNumber .', \''. $this->deltaSet .'\', '. $this->dbmsSyntax->generateTimestamp() .', \'dbdeploy\', \''. $fileName .'\');' . "\n"; 
    102107                                $fullFileName = $this->dir . '/' . $fileName; 
    103108                        $fh = fopen($fullFileName, 'r'); 
     
    105110                        $deploySQLFromFile = substr($contents,0,strpos($contents, '--//@UNDO'));                         
    106111                        $sqlToPerformDeploy .= $deploySQLFromFile; 
    107                         $sqlToPerformDeploy .= 'UPDATE ' . DbDeployTask::$TABLE_NAME . ' SET complete_dt = ' . mktime() . ' WHERE change_number = ' . $fileChangeNumber . ' AND delta_set = \'' . $this->deltaSet . '\';' . "\n"; 
     112                        $sqlToPerformDeploy .= 'UPDATE ' . DbDeployTask::$TABLE_NAME . ' SET complete_dt = ' . $this->dbmsSyntax->generateTimestamp() . ' WHERE change_number = ' . $fileChangeNumber . ' AND delta_set = \'' . $this->deltaSet . '\';' . "\n"; 
    108113                        $sqlToPerformDeploy .= '--------------- Fragment ends: ' . $fileChangeNumber . ' ---------------' . "\n"; 
    109114                } 
     
    143148    } 
    144149     
    145         function setDbms($dbms){ 
    146                 $this->dbms = $dbms; 
    147         } 
    148  
    149150        function setUrl($url){ 
    150151                $this->url = $url;