| 798 | } |
| 799 | |
| 800 | void SqlFile_Impl::retrieveDataDictionary() { |
| 801 | std::string table; |
| 802 | std::string name; |
| 803 | std::string keyValue; |
| 804 | std::string units; |
| 805 | std::string rf; |
| 806 | |
| 807 | if (m_db) { |
| 808 | int dictionaryIndex; |
| 809 | int code; |
| 810 | |
| 811 | std::stringstream s; |
| 812 | sqlite3_stmt* sqlStmtPtr; |
| 813 | std::map<int, std::string> envPeriods; |
| 814 | std::map<int, std::string>::iterator envPeriodsItr; |
| 815 | |
| 816 | s << "SELECT EnvironmentPeriodIndex, EnvironmentName FROM EnvironmentPeriods"; |
| 817 | sqlite3_prepare_v2(m_db, s.str().c_str(), -1, &sqlStmtPtr, nullptr); |
| 818 | code = sqlite3_step(sqlStmtPtr); |
| 819 | while (code == SQLITE_ROW) { |
| 820 | std::string queryEnvPeriod = boost::to_upper_copy(columnText(sqlite3_column_text(sqlStmtPtr, 1))); |
| 821 | envPeriods.insert(std::pair<int, std::string>(sqlite3_column_int(sqlStmtPtr, 0), queryEnvPeriod)); |
| 822 | code = sqlite3_step(sqlStmtPtr); |
| 823 | } |
| 824 | sqlite3_finalize(sqlStmtPtr); |
| 825 | |
| 826 | s.str(""); |
| 827 | s << "SELECT ReportMeterDataDictionaryIndex, VariableName, KeyValue, ReportingFrequency, VariableUnits"; |
| 828 | s << " FROM ReportMeterDataDictionary"; |
| 829 | code = sqlite3_prepare_v2(m_db, s.str().c_str(), -1, &sqlStmtPtr, nullptr); |
| 830 | |
| 831 | table = "ReportMeterData"; |
| 832 | |
| 833 | code = sqlite3_step(sqlStmtPtr); |
| 834 | while (code == SQLITE_ROW) { |
| 835 | dictionaryIndex = sqlite3_column_int(sqlStmtPtr, 0); |
| 836 | name = columnText(sqlite3_column_text(sqlStmtPtr, 1)); |
| 837 | keyValue = columnText(sqlite3_column_text(sqlStmtPtr, 2)); |
| 838 | rf = columnText(sqlite3_column_text(sqlStmtPtr, 3)); |
| 839 | units = columnText(sqlite3_column_text(sqlStmtPtr, 4)); |
| 840 | |
| 841 | for (envPeriodsItr = envPeriods.begin(); envPeriodsItr != envPeriods.end(); ++envPeriodsItr) { |
| 842 | std::string queryEnvPeriod = boost::to_upper_copy(envPeriodsItr->second); |
| 843 | m_dataDictionary.insert(DataDictionaryItem(dictionaryIndex, envPeriodsItr->first, name, keyValue, queryEnvPeriod, rf, units, table)); |
| 844 | LOG(Trace, "Creating data dictionary item " << dictionaryIndex << ", " << (*envPeriodsItr).first << ", " << name << ", " << keyValue << ", " |
| 845 | << queryEnvPeriod << ", " << rf << ", " << units << ", " << table << "."); |
| 846 | } |
| 847 | |
| 848 | code = sqlite3_step(sqlStmtPtr); |
| 849 | } |
| 850 | sqlite3_finalize(sqlStmtPtr); |
| 851 | |
| 852 | s.str(""); |
| 853 | s << "SELECT ReportVariableDatadictionaryIndex, VariableName, KeyValue, ReportingFrequency, VariableUnits"; |
| 854 | s << " FROM ReportVariableDatadictionary"; |
| 855 | code = sqlite3_prepare_v2(m_db, s.str().c_str(), -1, &sqlStmtPtr, nullptr); |
| 856 | |
| 857 | table = "ReportVariableData"; |
nothing calls this directly
no test coverage detected