Example #1
0
 /**
  * Converte o nome de uma tabela para uma classe DbTable
  * 
  * @param string $moduleName
  * @param string $tableName
  * @return string
  */
 public static function convertTableNameToObjectName($moduleName, $tableName)
 {
     if ($moduleName == '') {
         $moduleName = 'Application';
     }
     return ucfirst($moduleName) . "_Model_" . ZendT_Tool_ModelTProvider::convertTableNameToClassName($tableName) . "_Crud";
 }
Example #2
0
 /**
  *
  * @param string $table
  * @param string $adapter
  * @param string $module
  * @return void
  * @throws Zend_Tool_Project_Exception
  * @throws Exception 
  */
 public function create($table, $adapter, $module = null)
 {
     $name = ZendT_Tool_ModelTProvider::convertTableNameToClassName($table);
     $this->_print(' Criando Models ');
     $this->_print('name: ' . $name . ' |  table: ' . $table . ' | adapter : ' . $adapter . ' | module: ' . $module);
     $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION);
     $this->connect($this->_loadedProfile, $adapter);
     // Check that there is not a dash or underscore, return if doesnt match regex
     if (preg_match('#[_-]#', $name)) {
         throw new Zend_Tool_Project_Provider_Exception('Form names should be camel cased.');
     }
     $originalName = $name;
     $name = ucfirst($name);
     if ($table == '') {
         throw new Zend_Tool_Project_Provider_Exception('You must provide both the Form name as well as the actual db table\'s name.');
     }
     // get request/response object
     $request = $this->_registry->getRequest();
     $response = $this->_registry->getResponse();
     // alert the user about inline converted names
     $tense = $request->isPretend() ? 'would be' : 'is';
     if ($name !== $originalName) {
         $response->appendContent('Note: The canonical model name that ' . $tense . ' used with other providers is "' . $name . '";' . ' not "' . $originalName . '" as supplied', array('color' => array('yellow')));
     }
     /**
      * Cria o DB Table 
      */
     try {
         $formResources = Zend_Tool_Project_Provider_Form::createResource($this->_loadedProfile, $name, $module);
     } catch (Exception $e) {
         $response = $this->_registry->getResponse();
         $response->setException($e);
         return;
     }
     // do the creation
     if ($request->isPretend()) {
         $response->appendContent('Would create a Form at ' . $formResources->getContext()->getPath());
     } else {
         $response->appendContent('Creating a Form at ' . $formResources->getContext()->getPath());
         $formResources->create();
         $this->_storeProfile();
         $fileName = $formResources->getContext()->getPath();
         $formContext = new ZendT_Tool_Context_FormFile();
         $descTable = $this->_dbAdapter->describeTable($originalName);
         $formContext->setProperties($descTable);
         file_put_contents($fileName, "<?php \n" . $formContext->getContents() . "\n?>");
     }
     $this->_print(' Finalizado Models ');
 }
Example #3
0
    /**
     * getContents() will be called at creation time.  This could be
     * as simple as you see below or could use Zend_Tool_CodeGenerator
     * for this task.
     *
     * @return string
     */
    public function getContents()
    {
        $modelName = ucfirst($this->_modelName);
        $moduleName = ucfirst($this->_moduleName);
        $adapter = strtolower($this->_adapter);
        $tableName = strtoupper($this->_tableName);
        $referenceMap = $this->_referenceMap;
        $dependentTables = $this->_dependentTables;
        if ($moduleName == '') {
            $moduleName = 'Application';
        }
        $strDependentTables = '';
        foreach ($dependentTables as $table) {
            $className = $table['OBJECT_NAME'];
            /**
             * @todo pensar em uma forma de localizar o nome do módulo 
             */
            if ($className == '') {
                $className = $moduleName . "_Model_" . ZendT_Tool_ModelTProvider::convertTableNameToClassName($table['TABLE_NAME']) . "_Crud_Table";
                $strDependentTables .= ",\n                    '" . $className . "'";
            }
        }
        $strDependentTables = substr($strDependentTables, 1);
        $strReferenceMap = '';
        foreach ($referenceMap as $reference) {
            $className = $reference['OBJECT_NAME_PK'];
            /**
             * @todo pensar em uma forma de localizar o nome do módulo 
             */
            if ($className == '') {
                $className = $moduleName . "_Model_" . ZendT_Tool_ModelTProvider::convertTableNameToClassName($reference['TABLE_NAME_PK']) . "_Crud_Table";
                $strReferenceMap .= ",\n                    '" . $className . "' = array(\n                        'columns' => '" . $reference['COLUMN_NAME'] . "',\n                        'refTableClass' => '" . $className . "',\n                        'refColumns' => '" . $reference['COLUMN_NAME_PK'] . "'\n                    )";
            }
        }
        $strReferenceMap = substr($strReferenceMap, 1);
        $contents = <<<EOS

class {$moduleName}_Model_{$modelName}_Crud_Table extends Zend_Db_Table_Abstract
{
    protected \$_name = '{$tableName}';
    protected \$_schema  = '{$adapter}';
    protected \$_adapter = 'db.{$adapter}';
    protected \$_dependentTables = array({$strDependentTables});
    protected \$_referenceMap = array({$strReferenceMap});
}

EOS;
        return $contents;
    }