All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
main.cpp
Go to the documentation of this file.
1 // DSInfo
2 #include "../core/DSCopy.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_parameters("Parameters"); //!< Group of parameters options
13 
14 boost::program_options::options_description g_all("All options"); //!< All options
15 boost::program_options::options_description g_visible("Allowed options"); //!< Which will be shown to the user
16 
17 void showError(std::string errorMessage)
18 {
19  std::cout << ">>>> " << errorMessage << " <<<<" << std::endl << std::endl;
20  std::cout << g_visible << std::endl;
21  std::cout << "---------------------------" << std::endl;
22 }
23 
24 int main(int argc, char* argv[])
25 {
26  std::string dsTypeOrigin = "";
27  std::string connStrOrigin = "";
28  std::string dsTypeDestination = "";
29  std::string connStrDestination = "";
30  std::vector<std::string> dataset = std::vector<std::string>();
31  std::vector<std::string> datasets = std::vector<std::string>();
32 
33  try
34  {
35 
36  std::cout << std::endl << "TerraLib Data Source Copy" << std::endl;
37  std::cout << "-------------------------" << std::endl << std::endl;
38 
39  g_parameters.add_options()
40  ("ds-type-origin,o", boost::program_options::value<std::string>(), "Origin Data Source Type: POSTGIS, MYSQL, GDAL, ...")
41  ("conn-str-origin,s", boost::program_options::value<std::string>(), "Origin Data Source Connection Infomation")
42  ("ds-type-destination,d", boost::program_options::value<std::string>(), "Destination Data Source Type: POSTGIS, MYSQL, GDAL, ...")
43  ("conn-str-destination,t", boost::program_options::value<std::string>(), "Destination Data Source Connection Infomation")
44  ("dataset", boost::program_options::value<std::vector<std::string>>()->multitoken(), "DataSet to be described")
45  ("datasets", boost::program_options::value<std::vector<std::string>>()->multitoken(), "List of one or more DataSets to be described")
46  ("help", "help");
47 
49  g_all.add(g_visible);
50 
51  boost::program_options::store(boost::program_options::parse_command_line(argc, argv, g_all), g_vm);
52 
53  boost::program_options::notify(g_vm);
54 
55  if(g_vm.count("help") || g_vm.empty())
56  {
57  std::cout << g_visible << std::endl;
58  std::cout << "---------------------------" << std::endl;
59  return EXIT_SUCCESS;
60  }
61 
62 
63  dsTypeOrigin = (g_vm.count("ds-type-origin") != 0 ? g_vm["ds-type-origin"].as<std::string>() : std::string());
64  connStrOrigin = (g_vm.count("conn-str-origin") != 0 ? g_vm["conn-str-origin"].as<std::string>() : std::string());
65 
66  dsTypeDestination = (g_vm.count("ds-type-destination") != 0 ? g_vm["ds-type-destination"].as<std::string>() : std::string());
67  connStrDestination = (g_vm.count("conn-str-destination") != 0 ? g_vm["conn-str-destination"].as<std::string>() : std::string());
68 
69  dataset = g_vm.count("dataset") != 0 ? g_vm["dataset"].as<std::vector<std::string>>() : std::vector<std::string>();
70  datasets = g_vm.count("datasets") != 0 ? g_vm["datasets"].as<std::vector<std::string>>() : std::vector<std::string>();
71  datasets.insert(datasets.end(), dataset.begin(), dataset.end());
72 
73 
74  if(dsTypeOrigin.empty())
75  {
76  showError("Comannd line error: ds-type-origin missing!");
77  return EXIT_SUCCESS;
78  }
79  if(dsTypeDestination.empty())
80  {
81  showError("Comannd line error: ds-type-destination missing!");
82  return EXIT_SUCCESS;
83  }
84  if(connStrOrigin.empty())
85  {
86  showError("Comannd line error: conn-str-origin missing!");
87  return EXIT_SUCCESS;
88  }
89  if(connStrDestination.empty())
90  {
91  showError("Comannd line error: conn-str-destination missing!");
92  return EXIT_SUCCESS;
93  }
94 
95 
97 
98  std::vector<std::string*> datasetsP;
99  for(size_t i = 0; i < datasets.size(); i++)
100  datasetsP.push_back(&datasets[i]);
101 
102  std::string errorMessage;
103 
105 
106  if(!ds.init(errorMessage))
107  {
108  showError(errorMessage);
109  return EXIT_SUCCESS;
110  }
111 
112  if(!ds.copy(dsTypeOrigin, connStrOrigin, dsTypeDestination, connStrDestination, datasetsP, errorMessage))
113  {
114  showError(errorMessage);
115  return EXIT_SUCCESS;
116  }
117 
119 
120  }
121  catch(std::exception& e)
122  {
123  std::cout << "The application concluded erroneously: " << e.what() << std::endl;
124  }
125  catch(...)
126  {
127  std::cout << "The application concluded unexpectedly!" << std::endl;
128  }
129 
130  return EXIT_SUCCESS;
131 }
boost::program_options::options_description g_visible("Allowed options")
Which will be shown to the user.
boost::program_options::variables_map g_vm
Map o options after parse.
Definition: main.cpp:10
bool copy(std::string dsTypeOrigin, std::string dsConnStrOrigin, std::string dsTypeDestination, std::string dsConnStrDestination, std::vector< std::string * > datasets, std::string &errorMessage)
Copy.
Definition: DSCopy.cpp:41
void showError(std::string errorMessage)
Definition: main.cpp:17
bool init(std::string &errorMessage)
Init the application.
Definition: DSCopy.cpp:36
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_parameters("Parameters")
Group of parameters options.
Class with methods to manage the application.
Definition: DSCopy.h:49
void initialize()
It initializes the TerraLib Platform.
Definition: TerraLib.cpp:33
This file contains include headers for the TerraLib Common Runtime module.
boost::program_options::options_description g_all("All options")
All options.