/usr/include/dballe/db/odbc/station.h is in libdballe-dev 7.7-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | /*
* db/station - station table management
*
* Copyright (C) 2005--2015 ARPA-SIM <urpsim@smr.arpa.emr.it>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* Author: Enrico Zini <enrico@enricozini.com>
*/
#ifndef DBALLE_DB_ODBC_STATION_H
#define DBALLE_DB_ODBC_STATION_H
#include <dballe/db/sql/station.h>
#include <sqltypes.h>
#include <functional>
#include <memory>
namespace wreport {
struct Var;
}
namespace dballe {
namespace db {
struct ODBCConnection;
struct ODBCStatement;
struct Sequence;
namespace odbc {
/**
* Precompiled queries to manipulate the station table
*/
class ODBCStationBase : public sql::Station
{
protected:
/**
* DB connection.
*/
ODBCConnection& conn;
/** Station ID sequence, when the DB requires it */
db::Sequence* seq_station;
/** Precompiled select fixed station query */
ODBCStatement* sfstm;
/** Precompiled select mobile station query */
ODBCStatement* smstm;
/** Precompiled select data by station id query */
ODBCStatement* sstm;
/** Precompiled insert query */
ODBCStatement* istm;
/** Precompiled update query */
ODBCStatement* ustm;
/** Precompiled delete query */
ODBCStatement* dstm;
/** Station ID SQL parameter */
int id;
/** Station latitude SQL parameter */
int lat;
/** Station longitude SQL parameter */
int lon;
/** Mobile station identifier SQL parameter */
char ident[64];
/** Mobile station identifier indicator */
SQLLEN ident_ind;
/**
* Set the mobile station identifier input value for this ::dba_db_station
*
* @param ident
* Value to use for ident. NULL can be used to unset ident.
*/
void set_ident(const char* ident);
/**
* Get station information given a station ID
*
* @param id
* ID of the station to query
*/
void get_data(int id);
/**
* Update the information about a station entry
*/
void update();
/**
* Remove a station record
*/
void remove();
void impl_add_station_vars(const char* query, int id_station, Record& rec);
public:
ODBCStationBase(ODBCConnection& conn);
~ODBCStationBase();
ODBCStationBase(const ODBCStationBase&) = delete;
ODBCStationBase(const ODBCStationBase&&) = delete;
ODBCStationBase& operator=(const ODBCStationBase&) = delete;
/**
* Get the station ID given latitude, longitude and mobile identifier.
*
* It throws an exception if it does not exist.
*
* @return
* Resulting ID of the station
*/
int get_id(int lat, int lon, const char* ident=NULL) override;
/**
* Get the station ID given latitude, longitude and mobile identifier.
*
* It creates the station record if it does not exist.
*
* @return
* Resulting ID of the station
*/
int obtain_id(int lat, int lon, const char* ident=NULL, bool* inserted=NULL) override;
void get_station_vars(int id_station, int id_report, std::function<void(std::unique_ptr<wreport::Var>)> dest) override;
void add_station_vars(int id_station, Record& rec) override;
/**
* Dump the entire contents of the table to an output stream
*/
void dump(FILE* out) override;
};
class ODBCStationV6 : public ODBCStationBase
{
public:
ODBCStationV6(ODBCConnection& conn);
void get_station_vars(int id_station, int id_report, std::function<void(std::unique_ptr<wreport::Var>)> dest) override;
void add_station_vars(int id_station, Record& rec) override;
};
}
}
}
#endif
|