Source for file jDaoCompiler.class.php

Documentation is available at jDaoCompiler.class.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage dao
  5. @author      Laurent Jouanneau
  6. @contributor
  7. @copyright   2005-2007 Laurent Jouanneau
  8. *  Idea of this class was get originally from the Copix project
  9. *  (CopixDaoCompiler, Copix 2.3dev20050901, http://www.copix.org)
  10. *  no more line of code are copyrighted by CopixTeam
  11. *
  12. @link        http://www.jelix.org
  13. @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  14. */
  15.  
  16. /**
  17.  *
  18.  */
  19. require(JELIX_LIB_PATH.'dao/jDaoParser.class.php');
  20. require(JELIX_LIB_PATH.'dao/jDaoProperty.class.php');
  21. require(JELIX_LIB_PATH.'dao/jDaoMethod.class.php');
  22. require(JELIX_LIB_PATH.'dao/jDaoGenerator.class.php');
  23.  
  24. /**
  25.  * The compiler for the DAO xml files. it is used by jIncluder
  26.  * It produces some php classes
  27.  * @package  jelix
  28.  * @subpackage dao
  29.  */
  30. class jDaoCompiler  implements jISimpleCompiler {
  31.     /**
  32.     * the current DAO id.
  33.     * @var string 
  34.     */
  35.     static public $daoId = '';
  36.  
  37.     /**
  38.      * the current DAO file path
  39.      * @var string 
  40.      */
  41.     static public $daoPath = '';
  42.  
  43.     /**
  44.      * The database type
  45.      * @var string 
  46.      */
  47.     static public $dbType='';
  48.  
  49.     /**
  50.     * compile the given class id.
  51.     */
  52.     public function compile ($selector{
  53.  
  54.         jDaoCompiler::$daoId $selector->toString();
  55.         jDaoCompiler::$daoPath $selector->getPath();
  56.         jDaoCompiler::$dbType $selector->driver;
  57.  
  58.         // chargement du fichier XML
  59.         $doc new DOMDocument();
  60.  
  61.         if(!$doc->load(jDaoCompiler::$daoPath)){
  62.             throw new jException('jelix~daoxml.file.unknow'jDaoCompiler::$daoPath);
  63.         }
  64.  
  65.         if($doc->documentElement->namespaceURI != JELIX_NAMESPACE_BASE.'dao/1.0'){
  66.             throw new jException('jelix~daoxml.namespace.wrong',array(jDaoCompiler::$daoPath$doc->namespaceURI));
  67.         }
  68.  
  69.         $parser new jDaoParser ();
  70.         $parser->parse(simplexml_import_dom($doc));
  71.  
  72.         global $gJConfig;
  73.         if(!isset($gJConfig->_pluginsPathList_db[$selector->driver])
  74.             || !file_exists($gJConfig->_pluginsPathList_db[$selector->driver]) ){
  75.             throw new jException('jelix~db.error.driver.notfound'$selector->driver);
  76.         }
  77.         require_once($gJConfig->_pluginsPathList_db[$selector->driver].$selector->driver.'.daobuilder.php');
  78.         $class $selector->driver.'DaoBuilder';
  79.         $generator new $class ($selector->getDaoClass()$selector->getDaoRecordClass()$parser);
  80.  
  81.         // génération des classes PHP correspondant à la définition de la DAO
  82.         $compiled '<?php '.$generator->buildClasses ()."\n?>";
  83.         jFile::write ($selector->getCompiledFilePath()$compiled);
  84.         return true;
  85.     }
  86. }
  87.  
  88. /**
  89.  * Exception for Dao compiler
  90.  * @package  jelix
  91.  * @subpackage dao
  92.  */
  93. class jDaoXmlException extends jException {
  94.  
  95.     /**
  96.      * @param string $localekey a locale key
  97.      * @param array $localeParams parameters for the message (for sprintf)
  98.      */
  99.     public function __construct($localekey$localeParams=array()) {
  100.         $localekey'jelix~daoxml.'.$localekey;
  101.  
  102.         $arg=array(jDaoCompiler::$daoIdjDaoCompiler::$daoPath);
  103.         if(is_array($localeParams)){
  104.             $arg=array_merge($arg$localeParams);
  105.         }else{
  106.             $arg[]=$localeParams;
  107.         }
  108.         parent::__construct($localekey$arg);
  109.     }
  110. }

Documentation generated on Thu, 22 Mar 2012 22:14:35 +0100 by phpDocumentor 1.4.3