Changeset 15716


Ignore:
Timestamp:
2007/09/18 16:15:24 (15 years ago)
Author:
nanasess
Message:

リファクタリング

Location:
branches/feature-module-update
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/feature-module-update/data/class/db/SC_DB_MasterData.php

    r15532 r15716  
    2424 * @package DB 
    2525 * @author LOCKON CO.,LTD. 
    26  * @version $Id$ 
     26 * @version $Id:SC_DB_MasterData.php 15532 2007-08-31 14:39:46Z nanasess $ 
    2727 */ 
    2828class SC_DB_MasterData { 
     
    110110            $this->objQuery->commit(); 
    111111        } 
    112  
    113         // キャッシュを消去 
    114         $this->clearCache($name); 
    115         // 新規にデータを取得してキャッシュ生成 
    116         $newData = $this->getMasterData($name, $columns); 
    117112        return $i; 
    118113    } 
     
    121116     * マスタデータを更新する. 
    122117     * 
    123      * 引数 $masterData の値でマスタデータを更新し, 
    124      * キャッシュを更新する. 
     118     * 引数 $masterData の値でマスタデータを更新する. 
    125119     * $masterData は key => value 形式の配列である必要がある. 
    126120     * 
     
    133127     */ 
    134128    function updateMasterData($name, $columns, $masterData, $autoCommit = true) { 
     129 
     130        $columns = $this->getDefaultColumnName($columns); 
     131 
    135132        $this->objQuery = new SC_Query(); 
    136133        if ($autoCommit) { 
    137134            $this->objQuery->begin(); 
    138135        } 
    139         // マスタデータを削除 
    140         $this->deleteMasterData($name, false); 
    141  
    142         // マスタデータを追加 
    143         $this->registMasterData($name, $columns, $masterData, false); 
    144  
     136 
     137        // 指定のデータを更新 
     138        $i = 0; 
     139        foreach ($masterData as $key => $val) { 
     140            $sqlVal = array($columns[1] => $val); 
     141            $this->objQuery->update($name, $sqlVal, $columns[0] . " = " .  $key); 
     142            $i++; 
     143        } 
    145144        if ($autoCommit) { 
    146145            $this->objQuery->commit(); 
    147146        } 
    148         return count($masterData); 
     147        return $i; 
    149148    } 
    150149 
     
    193192     * 引数 $name のマスタデータキャッシュを生成する. 
    194193     * 既存のキャッシュが存在する場合は上書きする. 
     194     * 
    195195     * 引数 $isDefine が true の場合は, 定数を生成する. 
     196     * 定数コメントを生成する場合は, $commentColumn を指定する. 
    196197     * 
    197198     * @param string $name マスタデータ名 
    198199     * @param array $masterData マスタデータ 
    199200     * @param bool $isDefine 定数を生成する場合 true 
     201     * @param array $commentColumn [0] => キー, [1] => コメント文字列, 
     202                                   [2] => 表示順 を表すカラム名を格納した配列 
    200203     * @return bool キャッシュの生成に成功した場合 true 
    201204     */ 
    202     function createCache($name, $masterData, $isDefine = false) { 
     205    function createCache($name, $masterData, $isDefine = false, 
     206                         $commentColumn = array()) { 
    203207 
    204208        // マスタデータを文字列にする 
    205209        $data = "<?php\n"; 
     210        // 定数を生成する場合 
    206211        if ($isDefine) { 
    207             $data .= $this->getMasterDataAsDefine($masterData, 
    208                     $this->getDbMasterData("mtb_constants", array("id", "remarks", "rank"))); 
     212 
     213            // 定数コメントを生成する場合 
     214            if (!empty($commentColumn)) { 
     215                $data .= $this->getMasterDataAsDefine($masterData, 
     216                                 $this->getDbMasterData($name, $commentColumn)); 
     217            } else { 
     218                $data .= $this->getMasterDataAsDefine($masterData); 
     219            } 
     220 
     221        // 配列を生成する場合 
    209222        } else { 
    210223            $data .= $this->getMasterDataAsString($name, $masterData); 
     
    225238    } 
    226239 
    227     // }}} 
    228     // {{{ private functions 
    229  
    230240    /** 
    231241     * DBからマスタデータを取得する. 
     
    235245     * 返り値は, key => value 形式の配列である. 
    236246     * 
    237      * @access private 
    238247     * @param string $name マスタデータ名 
    239248     * @param array $columns [0] => キー, [1] => 表示文字列, [2] => 表示順 
     
    257266        return $masterData; 
    258267    } 
     268 
     269    // }}} 
     270    // {{{ private functions 
    259271 
    260272    /** 
     
    310322        $data = ""; 
    311323        foreach ($masterData as $key => $val) { 
    312             if (isset($comments[$key])) { 
     324            if (!empty($comments[$key])) { 
    313325                $data .= "/** " . $comments[$key] . " */\n"; 
    314326            } 
  • branches/feature-module-update/test/class/db/SC_DB_MasterData_Test.php

    r15532 r15716  
    1515 * @package DB 
    1616 * @author LOCKON CO.,LTD. 
    17  * @version $Id$ 
     17 * @version $Id:SC_DB_MasterData_Test.php 15532 2007-08-31 14:39:46Z nanasess $ 
    1818 */ 
    1919class SC_DB_MasterData_Test extends PHPUnit_TestCase { 
     
    2626     */ 
    2727    function testGetMasterData() { 
    28  
    2928        $columns = array("pref_id", "pref_name", "rank"); 
    3029        $masterData = new SC_DB_MasterData_Ex(); 
     
    5857        $masterData->updateMasterData("mtb_pref", $columns, $expected, false); 
    5958 
    60         $actual = $masterData->getMasterData("mtb_pref", $columns); 
     59        $actual = $masterData->getDBMasterData("mtb_pref", $columns); 
    6160 
    62         $this->assertEquals($expected, $actual); 
     61        $this->assertEquals($expected["10"], $actual["10"]); 
     62        $this->assertEquals($expected["20"], $actual["20"]); 
     63        $this->assertEquals($expected["30"], $actual["30"]); 
    6364 
    6465        $masterData->objQuery->rollback(); 
     
    7172    function testCreateCache() { 
    7273        $masterData = new SC_DB_MasterData_Ex(); 
    73         $masterData->createCache("mtb_constants", $masterData->getMasterData("mtb_constants"), true); 
     74        $datas = $masterData->getDBMasterData("mtb_constants"); 
     75        $commentColumn = array("id", "remarks", "rank"); 
     76        $masterData->clearCache("mtb_constants"); 
     77        $masterData->createCache("mtb_constants", $datas, true, 
     78                                         array("id", "remarks", "rank")); 
    7479        $this->assertEquals(true, defined("ECCUBE_VERSION")); 
    7580    } 
Note: See TracChangeset for help on using the changeset viewer.