Ejemplo n.º 1
0
    function createDao($tableName, $columnList, $primaryKey, $baseClassName = null)
    {
        $stringUtility = new StringUtility();
        $tableClassName = $stringUtility->getClassName($tableName);
        $tableVariableName = $stringUtility->getVariableName($tableName);
        if (!empty($baseClassName)) {
            $extends = "extends " . $baseClassName;
            $requireBase = "require_once \"./BaseDao.class.php\";";
        }
        $whereUnique = $primaryKey . " = {\$" . $primaryKey . "}";
        $whereDtoUnique = "\"" . $primaryKey . " = \" . \$tableDto->" . $primaryKey;
        $primaryKeyParameter = "\$" . $primaryKey;
        $selectBase = "select " . join(", ", $columnList) . " from {$tableName}";
        $select .= $selectBase . " where ";
        $select .= $whereUnique;
        $update = "update from {$table} set " . join(" =?,  ", $columnList) . " =? ";
        $dao = null;
        $adodb_inc_path = ADODB_INC_PATH;
        $dao = <<<DAO_END

class {$tableClassName}Dao {$extends}{
    function getConnection(){
        return parent::getConnection();
    }

    function getNextId(){
        \$connection = \$this->getConnection();
        \$recordSet = \$connection->Execute("select max({$primaryKey}) as maxid from {$tableName}");
        if(\$recordSet){
            return (\$recordSet->fields{"maxid"} + 1);
        }else{
            return 1;
        }
\t}

    function findByKey({$primaryKeyParameter}){
        \$connection = \$this->getConnection();
        \$recordSet = \$connection->Execute("{$select}");

        if(!\$recordSet){
            return null;
        }else{
            while(!\$recordSet->EOF){
\t\t\t\t\$tableDto = new TableDto();
@recordset_to_dao@
                return \$tableDto;
            }
            return null;
        }
    }

    function find(){
        \$connection = \$this->getConnection();
        \$recordSet = \$connection->Execute("{$selectBase}");
        if(!\$recordSet){
            return null;
        }else{
            \$resultArray = array();
            while(!\$recordSet->EOF){
\t\t\t\t\$tableDto = new TableDto();
@recordset_to_dao@
                \$recordSet->MoveNext();
                \$resultArray[] = \$tableDto;
            }
            return \$resultArray;
        }
    }

    function findByRand(\$limit=1){
        \$connection = \$this->getConnection();
        \$recordSet = \$connection->Execute("{$selectBase} order by rand() limit {\$limit}");
        if(!\$recordSet){
            return null;
        }else{
            \$resultArray = array();
            while(!\$recordSet->EOF){
\t\t\t\t\$tableDto = new TableDto();
@recordset_to_dao@
                \$recordSet->MoveNext();
                \$resultArray[] = \$tableDto;
            }
            return \$resultArray;
        }
    }

    function insert(\$tableDto){
        \$connection = \$this->getConnection();
\t\t\$record = array();
@insert_parameter@
        \$insertSQL = \$connection->AutoExecute({$tableName}, \$record, "INSERT"); 
        return \$insertSQL;
    }

    function update(\$tableDto){
        \$connection = \$this->getConnection();
\t\t\$record = array();
@update_parameter@
        \$insertSQL = \$connection->AutoExecute({$tableName}, \$record, "UPDATE", {$whereDtoUnique});
        return \$insertSQL;
    }

    function delete({$primaryKeyParameter}){
        \$connection = \$this->getConnection();
        \$recordSet = \$connection->Execute("delete from {$tableName} where {$whereUnique}");
        return \$connection->Affected_Rows();
    }

    function trancate({$primaryKeyParameter}){
        \$connection = \$this->getConnection();
        \$recordSet = \$connection->Execute("trancate table {$tableName}");
        return \$connection->Affected_Rows();
    }

    function findCount(){
        \$connection = \$this->getConnection();

        \$recordSet = \$connection->Execute("select count(1) as cnt from {$tableName}");

        if(!\$recordSet){
            return 0;
        }else{
            if(!\$recordSet->EOF){
                return \$recordSet->fields{"cnt"};
            }else{
\t\t\t\treturn 0;
\t\t\t}
        }
    }
}
DAO_END;
        $updateParameter = "";
        foreach ($columnList as $column) {
            $updateParameter .= "        \$record[\"{$column}\"] = \$tableDto->{$column};\n";
        }
        $insertParameter = "";
        foreach ($columnList as $column) {
            if ($column == $primaryKey) {
            } else {
                $insertParameter .= "        \$record[\"{$column}\"] = \$tableDto->{$column};\n";
            }
        }
        $dao = str_replace("@insert_parameter@", $insertParameter, $dao);
        $dao = str_replace("@update_parameter@", $updateParameter, $dao);
        $set = null;
        foreach ($columnList as $column) {
            $set .= "                \$tableDto->{$column} = \$recordSet->fields{\"{$column}\"};\n";
        }
        $dao = str_replace("@recordset_to_dao@", $set, $dao);
        return $dao;
    }