/**
  * Constructor with parameters
  * Array of arguments with keys
  *  - 'metadata' Enterprise_Mview_Model_Metadata
  *  - 'connection' Varien_Db_Adapter_Interface
  *  - 'factory' Enterprise_Mview_Model_Factory
  *  - 'value' int|decimal|string|double
  *
  * @param array $args
  */
 public function __construct(array $args)
 {
     parent::__construct($args);
     if (isset($args['value'])) {
         $this->_keyColumnIdValue = $args['value'];
     }
 }
 /**
  * Move data from temporary flat table into regular flat table.
  *
  * @return Enterprise_Catalog_Model_Index_Action_Product_Refresh_Changelog
  */
 protected function _moveDataToFlatTable()
 {
     $flatTable = $this->_productHelper->getFlatTableName($this->_storeId);
     if (!$this->_connection->isTableExists($flatTable)) {
         parent::_moveDataToFlatTable();
     } else {
         $describe = $this->_connection->describeTable($this->_productHelper->getFlatTableName($this->_storeId));
         $columns = $this->_productHelper->getFlatColumns();
         $columns = array_keys(array_intersect_key($describe, $columns));
         $select = $this->_connection->select();
         $select->from(array('tf' => $this->_getTemporaryTableName($this->_productHelper->getFlatTableName($this->_storeId))), $columns);
         $sql = $select->insertFromSelect($flatTable, $columns);
         $this->_connection->query($sql);
         //drop "temporary" table after reindex
         $this->_connection->dropTable($this->_getTemporaryTableName($this->_productHelper->getFlatTableName($this->_storeId)));
     }
     return $this;
 }