diff options
-rw-r--r-- | framework/Wsat/TWsatBaseGenerator.php | 109 | ||||
-rw-r--r-- | framework/Wsat/TWsatScaffoldingGenerator.php | 195 | ||||
-rw-r--r-- | framework/Wsat/pages/TWsatScaffolding.php | 6 |
3 files changed, 172 insertions, 138 deletions
diff --git a/framework/Wsat/TWsatBaseGenerator.php b/framework/Wsat/TWsatBaseGenerator.php index 1facb13f..763836a3 100644 --- a/framework/Wsat/TWsatBaseGenerator.php +++ b/framework/Wsat/TWsatBaseGenerator.php @@ -14,66 +14,69 @@ Prado::using('System.Data.Common.TDbMetaData'); class TWsatBaseGenerator { - /** - * @return TDbMetaData for retrieving metadata information, such as - * table and columns information, from a database connection. - */ - protected $_dbMetaData; + /** + * @return TDbMetaData for retrieving metadata information, such as + * table and columns information, from a database connection. + */ + protected $_dbMetaData; - /** - * Output folder where AR classes will be saved. - */ - protected $_opFile; + /** + * Output folder where AR classes will be saved. + */ + protected $_opFile; - function __construct() - { - if (!class_exists("TActiveRecordManager", false)) - throw new Exception("You need to enable the ActiveRecord module in your application configuration file."); - $ar_manager = TActiveRecordManager::getInstance(); - $_conn = $ar_manager->getDbConnection(); - $_conn->Active = true; - $this->_dbMetaData = TDbMetaData::getInstance($_conn); - } + function __construct() + { + if (!class_exists("TActiveRecordManager", false)) + throw new Exception("You need to enable the ActiveRecord module in your application configuration file."); + $ar_manager = TActiveRecordManager::getInstance(); + $_conn = $ar_manager->getDbConnection(); + $_conn->Active = true; + $this->_dbMetaData = TDbMetaData::getInstance($_conn); + } - public function setOpFile($op_file_namespace) - { - $op_file = Prado::getPathOfNamespace($op_file_namespace); - if (empty($op_file)) - throw new Exception("You need to fix your output folder namespace."); - if (!is_dir($op_file)) - mkdir($op_file, 0777, true); - $this->_opFile = $op_file; - } + public function setOpFile($op_file_namespace) + { + $op_file = Prado::getPathOfNamespace($op_file_namespace); + if (empty($op_file)) + throw new Exception("You need to fix your output folder namespace."); + if (!is_dir($op_file)) + mkdir($op_file, 0777, true); + $this->_opFile = $op_file; + } - public function renderAllTablesInformation() + public function renderAllTablesInformation() + { + foreach ($this->getAllTableNames() as $table_name) { - foreach ($this->getAllTableNames() as $table_name) - { - echo $table_name . "<br>"; - $tableInfo = $this->_dbMetaData->getTableInfo($table_name); - echo "Table info:" . "<br>"; - echo "<pre>"; - print_r($tableInfo); - echo "</pre>"; - } + echo $table_name . "<br>"; + $tableInfo = $this->_dbMetaData->getTableInfo($table_name); + echo "Table info:" . "<br>"; + echo "<pre>"; + print_r($tableInfo); + echo "</pre>"; } + } - public function getAllTableNames() - { - $tableNames = $this->_dbMetaData->findTableNames(); - $index = array_search('pradocache', $tableNames); - if($index) - array_splice($tableNames, $index, 1); - return $tableNames; - } + public function getAllTableNames() + { + $tableNames = $this->_dbMetaData->findTableNames(); + $index = array_search('pradocache', $tableNames); + if ($index) + array_splice($tableNames, $index, 1); + return $tableNames; + } - public static function pr($data) - { - echo "<pre>"; - print_r($data); - echo "</pre>"; - } + public static function pr($data) + { + echo "<pre>"; + print_r($data); + echo "</pre>"; + } -} + protected function eq($data) + { + return '"' . $data . '"'; + } -?> +} diff --git a/framework/Wsat/TWsatScaffoldingGenerator.php b/framework/Wsat/TWsatScaffoldingGenerator.php index b1c54bc3..9e1e17ad 100644 --- a/framework/Wsat/TWsatScaffoldingGenerator.php +++ b/framework/Wsat/TWsatScaffoldingGenerator.php @@ -13,110 +13,139 @@ Prado::using("System.Wsat.TWsatBaseGenerator"); class TWsatScaffoldingGenerator extends TWsatBaseGenerator { - /** - * Const View Types for generation - */ - const LIST_TYPE = 0; - const ADD_TYPE = 1; - const SHOW_TYPE = 2; - - /** - * Bootstrap option - */ - private $_bootstrap; - - function __construct() + /** + * Const View Types for generation + */ + const LIST_TYPE = 0; + const ADD_TYPE = 1; + const SHOW_TYPE = 2; + + /** + * Bootstrap option + */ + private $_bootstrap; + + function __construct() + { + parent::__construct(); + } + + /** + * Generates CRUD Operations for a single DB table + * @param type $tableName + */ + public function generateCRUD($tableName) + { + $this->generate($tableName, self::ADD_TYPE); + $this->generate($tableName, self::LIST_TYPE); + $this->generate($tableName, self::SHOW_TYPE); + } + + //--------------------------------------------------------------------- + // <editor-fold defaultstate="collapsed" desc="Page Generation"> + public function generate($tableName, $viewType) + { + switch ($viewType) { - parent::__construct(); + default: + case self::LIST_TYPE: + $unitName = "list" . ucfirst($tableName); + break; + + case self::ADD_TYPE: + $unitName = "add" . ucfirst($tableName); + break; + + case self::SHOW_TYPE: + $unitName = "show" . ucfirst($tableName); + break; } - public function generate() - { - $unitName = "Example"; - $class = $this->generateClass($unitName); - $outputClass = $this->_opFile . DIRECTORY_SEPARATOR . $unitName . ".php"; - file_put_contents($outputClass, $class); - - $outputPage = $this->_opFile . DIRECTORY_SEPARATOR . $unitName . ".page"; - $page = $this->generatePage("student", self::ADD_TYPE); - file_put_contents($outputPage, $page); - } + $class = $this->generateClass($unitName); + $outputClass = $this->_opFile . DIRECTORY_SEPARATOR . $unitName . ".php"; + file_put_contents($outputClass, $class); - // <editor-fold defaultstate="collapsed" desc="Page Generation"> - private function generatePage($tableName, $type, $tContentId = "Content") - { - $pageContent = $this->getPageContent($tableName, $type); - return <<<EOD + $outputPage = $this->_opFile . DIRECTORY_SEPARATOR . $unitName . ".page"; + $page = $this->generatePage($tableName, $viewType); + file_put_contents($outputPage, $page); + } + + private function generatePage($tableName, $type, $tContentId = "Content") + { + $pageContent = $this->getPageContent($tableName, $type); + return <<<EOD <com:TContent ID="$tContentId"> $pageContent </com:TContent> EOD; - } + } - private function getPageContent($tableName, $type) + private function getPageContent($tableName, $type) + { + $code = ""; + $tableInfo = $this->_dbMetaData->getTableInfo($tableName); + switch ($type) { - $code = ""; - $tableInfo = $this->_dbMetaData->getTableInfo($tableName); - switch ($type) + case self::LIST_TYPE: + break; + case self::ADD_TYPE: + foreach ($tableInfo->getColumns() as $colField => $colMetadata) + { + if (!$colMetadata->IsPrimaryKey && !$colMetadata->IsForeignKey) + { + $code .= $this->generateControl($colMetadata); + $code .= $this->generateValidators($colMetadata); + $code .= "\n"; + } + } + foreach ($tableInfo->getForeignKeys() as $colField => $colMetadata) { - case self::LIST_TYPE: - break; - case self::ADD_TYPE: - foreach ($tableInfo->getColumns() as $colField => $colMetadata) - { - if (!$colMetadata->IsPrimaryKey && !$colMetadata->IsForeignKey) - { - $code .= $this->generateControl($colMetadata); - $code .= $this->generateValidators($colMetadata); - $code .= "\n"; - } - } - foreach ($tableInfo->getForeignKeys() as $colField => $colMetadata) - { - $colField = '"' . $colMetadata["table"] . '"'; - $code .= "\t<com:TTextBox ID=$colField />\n"; - $code .= "\n"; - // TWsatBaseGenerator::pr($tableInfo); - } - - case self::SHOW_TYPE: - break; + $colField = $this->eq($colMetadata["table"]); + $code .= "\t<com:TTextBox ID=$colField />\n"; + $code .= "\n"; + // TWsatBaseGenerator::pr($tableInfo); } - return $code; + $code .= "\t<com:TButton Text=\"Accept\" />\n"; + + case self::SHOW_TYPE: + break; } + return $code; + } - private function generateControl($colMetadata) + private function generateControl($colMetadata) + { + $controlType = "TTextBox"; + switch ($colMetadata->DbType) { - $controlType = "TTextBox"; - switch ($colMetadata->DbType){ - - } - $controlId = $colMetadata->ColumnId; - return "\t<com:$controlType ID=\"$controlId\" />\n"; + } - - private function generateValidators($colMetadata) + $controlId = $colMetadata->ColumnId; + return "\t<com:$controlType ID=\"$controlId\" />\n"; + } + + private function generateValidators($colMetadata) + { + $controlId = $colMetadata->ColumnId; + $code = ""; + if (!$colMetadata->AllowNull) { - $controlId = $colMetadata->ColumnId; - $code = ""; - if (!$colMetadata->AllowNull) - { - $code .= "\t<com:TRequiredFieldValidator ControlToValidate=$controlId ValidationGroup=\"addGroup\" Text=\"Field $controlId is required.\" Display=\"Dynamic\" />\n"; - } - return $code; + $code .= "\t<com:TRequiredFieldValidator ControlToValidate=$controlId ValidationGroup=\"addGroup\" Text=\"Field $controlId is required.\" Display=\"Dynamic\" />\n"; } + return $code; + } // </editor-fold> - //--------------------------------------------------------------------- - // <editor-fold defaultstate="collapsed" desc="Code Behind Generation"> - private function generateClass($classname) - { - $date = date('Y-m-d h:i:s'); - $env_user = getenv("username"); - return <<<EOD + //--------------------------------------------------------------------- + // <editor-fold defaultstate="collapsed" desc="Code Behind Generation"> + private function generateClass($classname) + { + $date = date('Y-m-d h:i:s'); + $env_user = getenv("username"); + return <<<EOD <?php /** * Auto generated by PRADO - WSAT on $date. @@ -127,9 +156,7 @@ class $classname extends TPage } EOD; - } + } // </editor-fold> } - -?> diff --git a/framework/Wsat/pages/TWsatScaffolding.php b/framework/Wsat/pages/TWsatScaffolding.php index 2dc7d288..aa7599ca 100644 --- a/framework/Wsat/pages/TWsatScaffolding.php +++ b/framework/Wsat/pages/TWsatScaffolding.php @@ -35,6 +35,10 @@ class TWsatScaffolding extends TPage } } + /** + * Generate Scaffolding code for selected tables + * @param type $sender + */ public function generate($sender) { if ($this->IsValid) @@ -43,7 +47,7 @@ class TWsatScaffolding extends TPage { $scf_generator = new TWsatScaffoldingGenerator(); $scf_generator->setOpFile($this->output_folder->Text); - $scf_generator->generate(); + $scf_generator->generateCRUD("estudiante"); $this->feedback_panel->CssClass = "green_panel"; $this->generation_msg->Text = "The code has been generated successfully."; } catch (Exception $ex) |