public function save()
 {
     $sql = "SET FOREIGN_KEY_CHECKS = 0;\n";
     $sql .= "";
     foreach ($this->data_after_validor as $key => $value) {
         $sql .= sqlBuilder::createTruncateTableCommand($key);
         $sql .= sqlBuilder::createInsertFromArray($value, $key);
     }
     $sql .= "\n\nSET FOREIGN_KEY_CHECKS = 1;\n";
     $connection = Yii::app()->db;
     $transaction = $connection->beginTransaction();
     try {
         TimezoneWork::set('UTC');
         $command = $connection->createCommand($sql);
         $command->execute();
         $transaction->commit();
         $this->result_success = true;
         return true;
     } catch (Exeption $e) {
         $transaction->rollback();
         $this->result_success = false;
     }
     return false;
     //            try{
     //                $count = $command->execute();
     //                $this->_logger->log(__METHOD__, array('count' => $count));
     //            } catch (Exception $e) {
     //                $this->_logger->log(__METHOD__,array('err' => $e->getMessage()));
     //            }
 }
Example #2
0
 public function saveDataPairs($params)
 {
     $this->_logger->log(__METHOD__);
     $this->_logger->log(__METHOD__, array('pid' => getmypid(), 'log_id' => $params['listener_log_id']));
     if ($this->prepared_pairs) {
         $sql = '';
         $boool = false;
         foreach ($this->prepared_pairs as $key => $pair) {
             $sensor_feature_id = $this->_findFeatureId($pair['feature_code'], $params['sensor_features']);
             if (!$sensor_feature_id) {
                 $this->_logger->log(__METHOD__ . ' Attention: ', array('feature_code' => $pair['feature_code'], 'sensor_features' => print_r($params['sensor_features'], true)));
             }
             $measuring_timestamp = date('Y-m-d H:i:s', isset($pair['measuring_timestamp']) ? $pair['measuring_timestamp'] : $this->incoming_measuring_timestamp);
             $criteria = new CDbCriteria();
             $criteria->compare('measuring_timestamp', $measuring_timestamp);
             $criteria->compare('sensor_feature_id', $sensor_feature_id);
             $criteria->compare('station_id', $params['sensor']->station_id);
             $sensor_data = SensorData::model()->find($criteria);
             if (is_null($sensor_data) || $params['rewrite_prev_values']) {
                 if (is_null($sensor_data)) {
                     $sensor_data = new SensorData();
                     $sensor_data->sensor_data_id = "DEFAULT";
                     $sensor_data->created = "NOW()";
                 }
                 //
                 //                    if(array_key_exists($pair['feature_code'],$this->checkPeriodArray)){
                 //                        $pair = $this->checkPeriod(
                 //                                            $measuring_timestamp,
                 //                                                $this->_findFeatureId($this->checkPeriodArray[$pair['feature_code']],$params['sensor_features']),
                 //                                            $params['sensor']->station_id,
                 //                                            $key);
                 //
                 //                    }
                 $sensor_data->station_id = $params['sensor']->station_id;
                 $sensor_data->sensor_id = $params['sensor']->station_sensor_id;
                 $sensor_data->sensor_feature_id = $sensor_feature_id;
                 $sensor_data->sensor_feature_value = $pair['value'];
                 $sensor_data->period = $pair['period'];
                 $sensor_data->listener_log_id = $params['listener_log_id'];
                 $sensor_data->measuring_timestamp = $measuring_timestamp;
                 $sensor_data->sensor_feature_exp_value = isset($pair['exp_value']) ? $pair['exp_value'] : 0;
                 $sensor_data->metric_id = $pair['metric_id'];
                 $sensor_data->sensor_feature_normalized_value = $pair['normilized_value'];
                 $sensor_data->is_m = $pair['is_m'] == 1 ? 1 : 0;
                 $sensor_data->updated = "NOW()";
                 $sql .= sqlBuilder::createInsertFromObject($sensor_data, SensorData::model()->tableName(), $boool);
                 $boool = true;
             }
         }
         $sql .= ';';
         $connection = Yii::app()->db;
         $command = $connection->createCommand($sql);
         try {
             $count = $command->execute();
             $this->_logger->log(__METHOD__, array('count' => $count));
         } catch (Exception $e) {
             $this->_logger->log(__METHOD__, array('err' => $e->getMessage()));
         }
     }
 }