2 #include <boost/lexical_cast.hpp>
3 #include <sdet/SStationListSQLManager.h>
4 #include <sdet/SManagerRegister.h>
5 #include <utl/UTCDateTime.h>
11 using namespace boost;
31 for (string::const_iterator it = str.begin(); it != str.end(); ++it) {
32 const int i = (
unsigned char)(*it);
37 if (it != str.end() && int((
unsigned char)(*it)) == 177)
45 if (32 <= i && i < 127)
61 typedef map<unsigned int, UTMData> UTMDataMap;
67 <<
"SELECT utm_data_id, ellipsoid, zone, band "
69 "ORDER BY utm_data.last_modified DESC";
71 if (Query(query.str(), QueryInfoMessage(
"all utm_data",
"utm_data")) == eNotFound ||
73 const string err =
"Can not find UTM data!";
79 tuple<int, string, int, string> utmId_ellipsoid_zone_band;
81 while (FetchNextRowMany(utmId_ellipsoid_zone_band) == eFound) {
82 const int& utmId = utmId_ellipsoid_zone_band.get<0>();
83 if (utmMap.find(utmId) == utmMap.end()) {
84 utm.
fEllipsoid = utmId_ellipsoid_zone_band.get<1>();
85 utm.
fZone = utmId_ellipsoid_zone_band.get<2>();
86 utm.
fBand = utmId_ellipsoid_zone_band.get<3>();
108 "ORDER BY station_id ASC, last_modified DESC";
110 if (Query(query.str(), QueryInfoMessage(
"all station_list",
"station_list")) == eNotFound ||
112 const string err =
"No station_list SQL data found!";
119 while ((row = FetchRow())) {
121 if (NumFields() != 12) {
122 const string err =
"Not enogh fields while getting whole station_list";
128 const unsigned int utmId = lexical_cast<
unsigned int>(row[column++]);
132 station.
fId = lexical_cast<
int>(row[column++]);
134 if (fStationManager.HasStationData(station.fId))
137 const UTMDataMap::const_iterator utmIt = utmMap.find(utmId);
138 if (utmIt == utmMap.end()) {
139 const string err =
"Unknown UTM id!";
143 const UTMData& utm = utmIt->second;
146 station.fZone = utm.
fZone;
147 station.fBand = utm.
fBand;
149 station.fNorthing = lexical_cast<
double>(row[column++]);
150 station.fEasting = lexical_cast<
double>(row[column++]);
151 station.fAltitude = lexical_cast<
double>(row[column++]);
152 station.fName =
Utf8To7Bit(lexical_cast<string>(row[column++]));
154 station.fCommissionTime =
157 station.fDecommissionTime =
160 station.fInGrid = lexical_cast<
int>(row[column++]);
161 station.fGroupId = lexical_cast<
int>(row[column++]);
162 station.fAxis1 = lexical_cast<
int>(row[column++]);
163 station.fAxis2 = lexical_cast<
int>(row[column++]);
165 fStationManager.ConditionalAddStationData(station);
Manager for SD description in SQL station lists.
void Init()
Initialise the registry.
string Utf8To7Bit(const string &str)
A TimeStamp holds GPS second and nanosecond for some event.
Exception to use in case requested data not found in the database with detailed printout.
#define REGISTER_S_MANAGER(_name_, _Type_)