All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
main.cpp
Go to the documentation of this file.
1 // Terralib Data Source Info tool
2 #include <PrintManager.h>
3 
4 // Terralib
5 #include <terralib/common.h>
6 
7 // Boost
8 #include <boost/program_options.hpp>
9 
10 boost::program_options::variables_map g_vm; //!< Map o options after parse
11 
12 boost::program_options::options_description g_help("Help"); //!< Group of help options
13 boost::program_options::options_description g_functions("Functions"); //!< Group of functions options
14 boost::program_options::options_description g_parameters("Parameters"); //!< Group of parameters options
15 
16 boost::program_options::options_description g_all("All options"); //!< All options
17 boost::program_options::options_description g_hidden("Hidden options"); //!< Which will not be shown to the user
18 boost::program_options::options_description g_visible("Allowed options"); //!< Which will be shown to the user
19 
20 int main(int argc, char* argv[])
21 {
22 
23  try
24  {
25  std::string dstype = "";
26  std::string connstr = "";
27  std::vector<std::string> dataset;
28  std::vector<std::string> datasets;
29  bool dsParams = false;
30  bool listdatasets = false;
31  bool showAll = false;
32  bool pkDetails = false;
33  bool fkDetails = false;
34  bool ukDetails = false;
35  bool idxDetails = false;
36  bool ccDetails = false;
37 
38  std::cout << std::endl << "TerraLib Data Source Info" << std::endl;
39  std::cout << "-------------------------" << std::endl << std::endl;
40 
41  g_functions.add_options()
42  ("list-datasets", "Show a DataSet list of a DataSource")
43  ("show-all", "Show all Data Source informations")
44  ("show-ds-params", "Show all Data Source parameters required")
45  ("help", "help")
46  ;
47 
48  g_parameters.add_options()
49  ("ds-type", boost::program_options::value<std::string>(), "Data Source Type: POSTGIS, MYSQL, GDAL, ...")
50  ("conn-str", boost::program_options::value<std::string>(), "Connection Infomation")
51  ("dataset", boost::program_options::value<std::vector<std::string>>()->multitoken(), "DataSet to be described")
52  ("datasets", boost::program_options::value<std::vector<std::string>>()->multitoken(), "List of one or more DataSets to be described")
53  ("pk-details", "Show Primary Key Details")
54  ("fk-details", "Show Foreign Key Details")
55  ("uk-details", "Show Unique Key Details")
56  ("idx-details", "Show Indexes Details")
57  ("cc-details", "Show Check Contraints Details")
58  ;
59 
60  g_hidden.add(g_help);
62  g_all.add(g_visible).add(g_hidden);
63 
64 
65  boost::program_options::store(boost::program_options::parse_command_line(argc, argv, g_all), g_vm);
66 
67  boost::program_options::notify(g_vm);
68 
69  if(g_vm.count("help") || g_vm.empty())
70  {
71  std::cout << g_visible << std::endl;
72  std::cout << "---------------------------" << std::endl;
73  return EXIT_SUCCESS;
74  }
75 
76  dstype = g_vm.count("ds-type") != 0 ? g_vm["ds-type"].as<std::string>() : std::string();
77  connstr = g_vm.count("conn-str") != 0 ? g_vm["conn-str"].as<std::string>() : std::string();
78  dataset = g_vm.count("dataset") != 0 ? g_vm["dataset"].as<std::vector<std::string>>() : std::vector<std::string>();
79  datasets = g_vm.count("datasets") != 0 ? g_vm["datasets"].as<std::vector<std::string>>() : std::vector<std::string>();
80  datasets.insert(datasets.end(), dataset.begin(), dataset.end());
81  dsParams = g_vm.count("show-ds-params")?true:false;
82  listdatasets = g_vm.count("list-datasets") ? true : false;
83  showAll = g_vm.count("show-all") ? true : false;
84 
85  pkDetails = g_vm.count("pk-details")?true:false;
86  fkDetails = g_vm.count("fk-details")?true:false;
87  ukDetails = g_vm.count("uk-details")?true:false;
88  idxDetails = g_vm.count("idx-details")?true:false;
89  ccDetails = g_vm.count("cc-details")?true:false;
90 
92 
93  PrintManager pm;
94 
95  if(dsParams)
96  {
97  pm.printDataSourceParameters(dstype);
98  }
99  else if(!dstype.empty() && !connstr.empty())
100  {
101  if(!pm.init(dstype, connstr))
102  {
103  std::cout << g_visible << std::endl;
104  std::cout << "---------------------------" << std::endl;
105  return EXIT_SUCCESS;
106  }
107 
108  if(showAll)
109  {
110  pm.printAllInfo(pkDetails, fkDetails, ukDetails, idxDetails, ccDetails);
111  }
112  else if(!datasets.empty())
113  {
114  pm.printDataSetInfo(datasets, pkDetails, fkDetails, ukDetails, idxDetails, ccDetails);
115  }
116  else
118  }
119  else
120  {
121  if(dstype.empty())
122  {
123  std::cout << "Command Line Error: ds-type missing!" << std::endl;
124  std::cout << "---------------------------" << std::endl;
125  return EXIT_SUCCESS;
126  }
127  if(connstr.empty())
128  {
129  std::cout << "Command Line Error: conn-str missing!" << std::endl;
130  std::cout << "---------------------------" << std::endl;
131  return EXIT_SUCCESS;
132  }
133  }
134 
136 
137  }
138  catch(std::exception& e)
139  {
140  std::cout << "The application concluded erroneously: " << e.what() << std::endl;
141  }
142  catch(...)
143  {
144  std::cout << "The application concluded unexpectedly!" << std::endl;
145  }
146 
147  return EXIT_SUCCESS;
148 }
boost::program_options::options_description g_visible("Allowed options")
Which will be shown to the user.
boost::program_options::options_description g_functions("Functions")
Group of functions options.
bool init(std::string dstype, std::string connstr)
Init.
Definition: PrintManager.cpp:4
boost::program_options::variables_map g_vm
Map o options after parse.
Definition: main.cpp:10
Class with methods to print the Data SOurce information.
Definition: PrintManager.h:41
void printDataSetInfo(std::vector< std::string > dataSetNameList, bool pkDetails, bool fkDetails, bool ukDetails, bool idxDetails, bool ccDetails)
Print Data Set Informations.
void finalize()
It finalizes the TerraLib Platform.
Definition: TerraLib.cpp:64
static TerraLib & getInstance()
It returns a reference to the singleton instance.
int main(int argc, char *argv[])
Definition: main.cpp:24
boost::program_options::options_description g_hidden("Hidden options")
Which will not be shown to the user.
boost::program_options::options_description g_parameters("Parameters")
Group of parameters options.
void printDataSetNameList()
Print Data Set Name List.
void initialize()
It initializes the TerraLib Platform.
Definition: TerraLib.cpp:33
void printAllInfo(bool pkDetails, bool fkDetails, bool ukDetails, bool idxDetails, bool ccDetails)
Print All Data Source Informations.
Definition: PrintManager.cpp:9
Informations printing manager.
This file contains include headers for the TerraLib Common Runtime module.
boost::program_options::options_description g_help("Help")
Group of help options.
boost::program_options::options_description g_all("All options")
All options.
void printDataSourceParameters(std::string dsType)
Print Data Source Parameters.