SNOWPACK  SNOWPACK-3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ImisDBIO.h
Go to the documentation of this file.
1 /*
2  * SNOWPACK stand-alone
3  *
4  * Copyright WSL Institute for Snow and Avalanche Research SLF, DAVOS, SWITZERLAND
5 */
6 /* This file is part of Snowpack.
7  Snowpack is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  Snowpack is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with Snowpack. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
21 #ifndef IMISDBIO_H
22 #define IMISDBIO_H
23 
25 #include <snowpack/DataClasses.h>
26 #include <meteoio/MeteoIO.h>
27 #include <occi.h>
28 #include <cctype>
29 
31 
32  public:
33  ImisDBIO(const SnowpackConfig& i_cfg, const RunInfo& run_info);
34  ImisDBIO(const ImisDBIO& in);
35  ~ImisDBIO();
36 
37  virtual bool snowCoverExists(const std::string& i_snowfile, const std::string& stationID) const;
38 
39  virtual void readSnowCover(const std::string& i_snowfile, const std::string& stationID,
40  SN_SNOWSOIL_DATA& SSdata, ZwischenData& Zdata);
41 
42  virtual void writeSnowCover(const mio::Date& date, const SnowStation& Xdata,
43  const ZwischenData& Zdata, const bool& forbackup=false);
44 
45  virtual void writeTimeSeries(const SnowStation& Xdata, const SurfaceFluxes& Sdata, const CurrentMeteo& Mdata,
46  const ProcessDat& Hdata, const double wind_trans24);
47 
48  virtual void writeProfile(const mio::Date& date, const SnowStation& Xdata);
49 
50  virtual bool writeHazardData(const std::string& stationID, const std::vector<ProcessDat>& Hdata,
51  const std::vector<ProcessInd>& Hdata_ind, const size_t& num);
52 
53  ImisDBIO& operator=(const ImisDBIO& in);
54 
55  private:
56  static void parseStationName(const std::string& stationName, std::string& stName, std::string& stNumber);
57  void print_Hdata_query(const ProcessDat& Hdata, const ProcessInd& Hdata_ind) const;
58  void print_Profile_query(const SnowProfileLayer& Pdata) const;
59 
60  void openDB();
61  void closeDB();
62  void deleteProfile(const std::string& stationName, const unsigned char& stationNumber,
63  const mio::Date& dateStart, const mio::Date& dateEnd);
64  void deleteHdata(const std::string& stationName, const std::string& stationNumber,
65  const mio::Date& dateStart, const mio::Date& dateEnd);
66  void insertProfile(const std::vector<SnowProfileLayer> &Pdata);
67  void insertHdata(const std::string& stationName, const std::string& stationNumber,
68  const std::vector<ProcessDat>& Hdata, const std::vector<ProcessInd>& Hdata_ind,
69  const size_t& num);
70 
71  oracle::occi::Date OracleDate(mio::Date in_date) const;
72  static std::string getKey(const SnowpackConfig& i_cfg, const std::string& key, const std::string& section);
73 
74  const RunInfo info;
75 
76  //Oracle OCCI variable so we don't reopen a new connection at each call
77  oracle::occi::Environment *env;
78  oracle::occi::Connection *conn;
79  oracle::occi::Statement *stmt;
80 
81  const std::string oracleDB, oracleUser, oraclePassword;
82 
83  //double time_zone; ///< input data time zone
84  static const double time_zone; //All IMIS data is in gmt+1
85  static double hoar_density_surf, hoar_min_size_surf;
86 
87  static const std::string sqlDeleteHdata; //Delete statement for Hdata from snowpack.ams_pmod
88  static const std::string sqlDeleteProfile; //Delete statement for profile from snowpack.ams_pmod_profile
89  static const std::string sqlInsertHdata; //Insert statement for Hdata to snowpack.ams_pmod
90  static const std::string sqlInsertProfile; //Insert statement for profile to snowpack.ams_pmod_profile
91 };
92 
93 #endif
virtual void writeProfile(const mio::Date &date, const SnowStation &Xdata)
Dump aggregated profile to database.
Definition: ImisDBIO.cc:235
ZwischenData contains "memory" information mainly for operational use It is used to prepare some para...
Definition: DataClasses.h:63
virtual void writeSnowCover(const mio::Date &date, const SnowStation &Xdata, const ZwischenData &Zdata, const bool &forbackup=false)
Definition: ImisDBIO.cc:136
SN_SNOWSOIL_DATA includes all important station parameters as well as LayerData This data structure ...
Definition: DataClasses.h:212
Definition: SnowpackConfig.h:28
ImisDBIO(const SnowpackConfig &i_cfg, const RunInfo &run_info)
Definition: ImisDBIO.cc:63
Definition: ImisDBIO.h:30
class to collect the information about the current simulation (version, date)
Definition: DataClasses.h:690
Definition: SnowpackIOInterface.h:27
Definition: DataClasses.h:580
virtual bool writeHazardData(const std::string &stationID, const std::vector< ProcessDat > &Hdata, const std::vector< ProcessInd > &Hdata_ind, const size_t &num)
Definition: ImisDBIO.cc:257
CurrentMeteo is the class of interpolated meteo data for the current calculation time step It contai...
Definition: DataClasses.h:81
virtual void readSnowCover(const std::string &i_snowfile, const std::string &stationID, SN_SNOWSOIL_DATA &SSdata, ZwischenData &Zdata)
Definition: ImisDBIO.cc:130
virtual void writeTimeSeries(const SnowStation &Xdata, const SurfaceFluxes &Sdata, const CurrentMeteo &Mdata, const ProcessDat &Hdata, const double wind_trans24)
Definition: ImisDBIO.cc:142
virtual bool snowCoverExists(const std::string &i_snowfile, const std::string &stationID) const
This routine checks if the specified snow cover data exists.
Definition: ImisDBIO.cc:125
ImisDBIO & operator=(const ImisDBIO &in)
Definition: ImisDBIO.cc:88
Structure of double values for output to SDB.
Definition: DataClasses.h:707
Station data including all information on snowpack layers (elements and nodes) and on canopy This is...
Definition: DataClasses.h:463
~ImisDBIO()
Definition: ImisDBIO.cc:97
Defines structure for snow profile layers.
Definition: DataClasses.h:651
Definition: DataClasses.h:771