src/terralib/ws/ogc/wcs/dataaccess/Transactor.h
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file terralib/ws/ogc/wcs/dataaccess/Transactor.h
22 
23  \brief Implementation of the transactor for the WS OGC WCS
24 
25  \author Vinicius Campanha
26 */
27 
28 #ifndef __TERRALIB_WS_OGC_WCS_DATAACCESS_TRANSACTOR_H
29 #define __TERRALIB_WS_OGC_WCS_DATAACCESS_TRANSACTOR_H
30 
31 // STL
32 #include <map>
33 #include <memory>
34 #include <string>
35 
36 // TerraLib
37 #include "../../../../dataaccess/datasource/DataSourceTransactor.h"
38 #include "../client/WCSClient.h"
39 //#include "WCSLayerInfo.h"
40 #include "Config.h"
41 #include "../client/DataTypes.h"
42 
43 
44 namespace te
45 {
46  namespace ws
47  {
48  namespace ogc
49  {
50  namespace wcs
51  {
52  namespace da
53  {
54 
55  class DataSource;
56 
57  /*!
58  \class Transactor
59 
60  \brief Implementation of the transactor for the WCS driver.
61  */
63  {
64  public:
65 
66  Transactor(const std::shared_ptr<te::ws::ogc::WCSClient> wcs);
67 
68  ~Transactor();
69 
70  CoverageDescription coverageDescription(const std::string coverageName);
71 
72  void setCoverageRequest(const te::ws::ogc::wcs::CoverageRequest coverageRequest);
73 
75 
76  void begin();
77 
78  void commit();
79 
80  void rollBack();
81 
82  bool isInTransaction() const;
83 
84  std::unique_ptr<te::da::DataSet> getDataSet(const std::string& name,
86  bool connected = false,
87  const te::common::AccessPolicy accessPolicy = te::common::RAccess);
88 
89  std::unique_ptr<te::da::DataSet> getDataSet(const std::string& name,
90  const std::string& propertyName,
91  const te::gm::Envelope* e,
94  bool connected = false,
95  const te::common::AccessPolicy accessPolicy = te::common::RAccess);
96 
97  std::unique_ptr<te::da::DataSet> getDataSet(const std::string& name,
98  const std::string& propertyName,
99  const te::gm::Geometry* g,
102  bool connected = false,
103  const te::common::AccessPolicy accessPolicy = te::common::RAccess);
104 
105  std::unique_ptr<te::da::DataSet> getDataSet(const std::string& name,
106  const te::da::ObjectIdSet* oids,
108  bool connected = false,
109  const te::common::AccessPolicy accessPolicy = te::common::RAccess);
110 
111  std::unique_ptr<te::da::DataSet> query(const te::da::Select& q,
113  bool connected = false,
114  const te::common::AccessPolicy accessPolicy = te::common::RAccess);
115 
116  std::unique_ptr<te::da::DataSet> query(const std::string& query,
118  bool connected = false,
119  const te::common::AccessPolicy accessPolicy = te::common::RAccess);
120 
121  void execute(const te::da::Query& command);
122 
123  void execute(const std::string& command);
124 
125  std::unique_ptr<te::da::PreparedQuery> getPrepared(const std::string& qName = std::string(""));
126 
127  std::unique_ptr<te::da::BatchExecutor> getBatchExecutor();
128 
129  void cancel();
130 
131  boost::int64_t getLastGeneratedId();
132 
133  std::string escape(const std::string& value);
134 
135  bool isDataSetNameValid(const std::string& datasetName);
136 
137  bool isPropertyNameValid(const std::string& propertyName);
138 
139  std::vector<std::string> getDataSetNames();
140 
141  std::size_t getNumberOfDataSets();
142 
143  std::unique_ptr<te::da::DataSetType> getDataSetType(const std::string& name);
144 
145  boost::ptr_vector<te::dt::Property> getProperties(const std::string& datasetName);
146 
147  std::unique_ptr<te::dt::Property> getProperty(const std::string& datasetName, const std::string& name);
148 
149  std::unique_ptr<te::dt::Property> getProperty(const std::string& datasetName, std::size_t propertyPos);
150 
151  std::vector<std::string> getPropertyNames(const std::string& datasetName);
152 
153  std::size_t getNumberOfProperties(const std::string& datasetName);
154 
155  bool propertyExists(const std::string& datasetName, const std::string& name);
156 
157  void addProperty(const std::string& datasetName , te::dt::Property* p);
158 
159  void dropProperty(const std::string& datasetName, const std::string& name);
160 
161  void renameProperty(const std::string& datasetName , const std::string& propertyName, const std::string& newPropertyName);
162 
163  std::unique_ptr<te::da::PrimaryKey> getPrimaryKey(const std::string& datasetName);
164 
165  bool primaryKeyExists(const std::string& datasetName, const std::string& name);
166 
167  void addPrimaryKey(const std::string& datasetName, te::da::PrimaryKey* pk);
168 
169  void dropPrimaryKey(const std::string& datasetName);
170 
171  std::unique_ptr<te::da::ForeignKey> getForeignKey(const std::string& datasetName, const std::string& name);
172 
173  std::vector<std::string> getForeignKeyNames(const std::string& datasetName);
174 
175  bool foreignKeyExists(const std::string& datasetName , const std::string& name);
176 
177  void addForeignKey(const std::string& datasetName, te::da::ForeignKey* fk);
178 
179  void dropForeignKey(const std::string& datasetName , const std::string& fkName);
180 
181  std::unique_ptr<te::da::UniqueKey> getUniqueKey(const std::string& datasetName, const std::string& name);
182 
183  std::vector<std::string> getUniqueKeyNames(const std::string& datasetName);
184 
185  bool uniqueKeyExists(const std::string& datasetName, const std::string& name);
186 
187  void addUniqueKey(const std::string& datasetName, te::da::UniqueKey* uk);
188 
189  void dropUniqueKey(const std::string& datasetName, const std::string& name);
190 
191  std::unique_ptr<te::da::CheckConstraint> getCheckConstraint(const std::string& datasetName, const std::string& name);
192 
193  std::vector<std::string> getCheckConstraintNames(const std::string& datasetName);
194 
195  bool checkConstraintExists(const std::string& datasetName, const std::string& name);
196 
197  void addCheckConstraint(const std::string& datasetName, te::da::CheckConstraint* cc);
198 
199  void dropCheckConstraint(const std::string& datasetName, const std::string& name);
200 
201  std::unique_ptr<te::da::Index> getIndex(const std::string& datasetName, const std::string& name);
202 
203  std::vector<std::string> getIndexNames(const std::string& datasetName);
204 
205  bool indexExists(const std::string& datasetName, const std::string& name);
206 
207  void addIndex(const std::string& datasetName, te::da::Index* idx, const std::map<std::string, std::string>& options);
208 
209  void dropIndex(const std::string& datasetName, const std::string& idxName);
210 
211  std::unique_ptr<te::da::Sequence> getSequence(const std::string& name);
212 
213  std::vector<std::string> getSequenceNames();
214 
215  bool sequenceExists(const std::string& name);
216 
217  void addSequence(te::da::Sequence* sequence);
218 
219  void dropSequence(const std::string& name);
220 
221  std::unique_ptr<te::gm::Envelope> getExtent(const std::string& datasetName,
222  const std::string& propertyName);
223 
224  std::unique_ptr<te::gm::Envelope> getExtent(const std::string& datasetName,
225  std::size_t propertyPos);
226 
227  std::size_t getNumberOfItems(const std::string& datasetName);
228 
229  bool hasDataSets();
230 
231  bool dataSetExists(const std::string& name);
232 
233  void createDataSet(te::da::DataSetType* dt,
234  const std::map<std::string, std::string>& options);
235 
236  void cloneDataSet(const std::string& name,
237  const std::string& cloneName,
238  const std::map<std::string, std::string>& options);
239 
240  void dropDataSet(const std::string& name);
241 
242  void renameDataSet(const std::string& name,
243  const std::string& newName);
244 
245  void add(const std::string& datasetName,
247  const std::map<std::string, std::string>& options,
248  std::size_t limit = 0,
249  bool enableProgress = true);
250 
251  void remove(const std::string& datasetName, const te::da::ObjectIdSet* oids = 0);
252 
253  void update(const std::string& datasetName,
254  te::da::DataSet* dataset,
255  const std::vector<std::size_t>& properties,
256  const te::da::ObjectIdSet* oids,
257  const std::map<std::string, std::string>& options,
258  std::size_t limit = 0);
259 
260  void optimize(const std::map<std::string, std::string>& opInfo);
261 
262  private:
263 
264  std::shared_ptr<te::ws::ogc::WCSClient> m_wcs;
266 
267 
268  };
269 
270  } // end namespace da
271  } // end namespace wcs
272  } // end namespace ogc
273  } // end namespace ws
274 } // end namespace te
275 
276 
277 #endif // __TERRALIB_WS_OGC_WCS_DATAACCESS_TRANSACTOR_H
278 
te::da::DataSource * getDataSource(const std::string &src)
TerraLib include files.
A class that models the description of a dataset.
Definition: DataSetType.h:72
SpatialRelation
Spatial relations between geometric objects.
It describes a sequence (a number generator).
A class that describes a check constraint.
An abstract class for data providers like a DBMS, Web Services or a regular file. ...
It models a property definition.
Definition: Property.h:59
#define TEOGCWCSDATAACCESSEXPORT
You can use this macro in order to export/import classes and functions from this module.
AccessPolicy
Supported data access policies (can be used as bitfield).
TraverseType
A dataset can be traversed in two ways:
An Envelope defines a 2D rectangular region.
This class represents a set of unique ids created in the same context. i.e. from the same data set...
Definition: ObjectIdSet.h:55
URI C++ Library.
Definition: Attributes.h:37
static te::dt::DateTime d(2010, 8, 9, 15, 58, 39)
static te::dt::TimeDuration dt(20, 30, 50, 11)
te::gm::Polygon * p
It models a foreign key constraint for a DataSetType.
Definition: ForeignKey.h:50
It describes a unique key (uk) constraint.
Definition: UniqueKey.h:53
A DataSourceTransactor can be viewed as a connection to the data source for reading/writing things in...
A struct to set the parameters of requested coverage.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
Configuration flags for the Terrralib WS OGC WCS DATA ACCESS module.
A Select models a query to be used when retrieving data from a DataSource.
Definition: Select.h:65
void DataSource()
A dataset is the unit of information manipulated by the data access module of TerraLib.
It describes a primary key (pk) constraint.
Definition: PrimaryKey.h:52
te::da::DataSet * getDataSet(te::da::DataSource *ds)
A Query is independent from the data source language/dialect.
Definition: Query.h:46
It describes an index associated to a DataSetType.
Implementation of the transactor for the WCS driver.