function CopixDAOGenerator(&$compiler)
 {
     $this->_compiler =& $compiler;
     $this->_compiledDAOClassName = CopixDAOFactory::getDAOName($compiler->_DAOid);
     $this->_compiledDAORecordClassName = CopixDAOFactory::getDAORecordName($compiler->_DAOid);
 }
 /**
  * Assigne le chemin vers le fichier PHP à utiliser et à surcharger pour générer le DAO
  * @param string $pFilePath le chemin absolu vers le fichier PHP à utiliser
  * @param string $pRecordName le nom de la classe PHP qui est définie par l'utilisateur pour reprsenter l'enregistrement
  * @param string $pDAOName le nom de la classe PHP qui est définie par l'utilisateur pour représenter le DAO
  */
 public function setPHPClassFilePath($pFilePath, $pRecordName = null, $pDAOName = null)
 {
     if (Copix::RequireOnce($this->_phpClassFilePath = $pFilePath)) {
         //On s'occupe de récupérer le nom du Record à utiliser si besoin
         if ($pRecordName !== null) {
             if (!class_exists($pRecordName)) {
                 throw new Exception('Demande d utilisation de  ' . $pRecordName . ' pour le record mais la classe n est pas définie dans le fichier ' . $pFilePath);
             } else {
                 $this->_userDefinedDAORecordName = $pRecordName;
             }
         } else {
             //on utilise le nom par défaut
             if (class_exists($daoRecordName = CopixDAOFactory::getDAORecordName($this->_DAOId, false))) {
                 $this->_userDefinedDAORecordName = $daoRecordName;
             }
         }
         //On s'occupe de récupérer le nom du DAO à utiliser si besoin
         if ($pDAOName !== null) {
             if (!class_exists($pRecordName)) {
                 throw new Exception('Demande d utilisation de  ' . $pDAOName . ' pour le DAO mais la classe n est pas définie dans le fichier ' . $pFilePath);
             } else {
                 $this->_userDefinedDAOName = $pDAOName;
             }
         } else {
             //on utilise le nom par défaut
             if (class_exists($daoName = CopixDAOFactory::getDAOName($this->_DAOId, false))) {
                 $this->_userDefinedDAOName = $daoName;
             }
         }
     } else {
         throw new Exception('impossible de charger le fichier de définition demandé pour le DAO ' . $pFilePath);
     }
 }
 /**
  * Génération du code PHP pour le constructeur du DAO
  * @return string
  */
 public function _generatePHP4DAOConstructor()
 {
     list($sqlFromClause, $sqlWhereClause) = $this->getFromClause();
     $sqlSelectClause = $this->getSelectClause();
     if ($this->_definition->getUserDefinedDAOName() !== null) {
         $result = ' public function __construct ($pConnectionName = null) {' . "\n";
         if (in_array(strtolower(CopixDAOFactory::getDAOName($this->_definition->getDAOId(), false)), $this->_definition->getUserDAOClassMethods()) or in_array('__construct', $this->_definition->getUserDAOClassMethods())) {
             $result .= '  parent::__construct ();' . "\n";
         }
         //ne remplace que si on spécifie une connexion à utiliser
         $result .= '  if ($pConnectionName != null) $this->_connectionName = $pConnectionName;';
         $result .= '  $this->_selectQuery =\'' . $sqlSelectClause . $sqlFromClause . $sqlWhereClause . '\';' . "\n";
         $result .= " }\n";
     } else {
         $result = ' public function __construct ($pConnectionName = null) {' . "\n";
         //ne remplace que si on spécifie une connexion à utiliser
         $result .= '  if ($pConnectionName != null) $this->_connectionName = $pConnectionName;';
         $result .= '  $this->_selectQuery =\'' . $sqlSelectClause . $sqlFromClause . $sqlWhereClause . '\';' . "\n";
         $result .= ' }' . "\n";
     }
     return $result;
 }