Ilwis-Objects  1.0
GIS and Remote Sensing framework for data access and processing
 All Classes Functions Enumerations Pages
ilwisobjectconnector.h
1 #ifndef ILWISOBJECTCONNECTOR_H
2 #define ILWISOBJECTCONNECTOR_H
3 
4 
5 #include "Kernel_global.h"
6 
7 namespace Ilwis {
8 class CatalogConnector;
9 typedef std::unique_ptr<Ilwis::CatalogConnector> UPCatalogConnector;
10 
11 class KERNELSHARED_EXPORT IlwisObjectConnector : public ConnectorInterface
12 {
13 public:
14  IlwisObjectConnector(const Ilwis::Resource &resource, bool,const PrepareOptions& options=PrepareOptions() );
15  virtual ~IlwisObjectConnector();
16 
17  virtual IlwisObject *create() const = 0;
18  IlwisTypes type() const;
19  Resource& source() ;
20  const Resource &source() const;
21  bool dataIsLoaded() const;
22 
23 protected:
24  template<class T> T setObject(const QString& propeprty, const QString defaultName) {
25 
26  T object;
27  bool ok;
28  auto id = _resource[propeprty].toLongLong(&ok);
29  if (!ok)
30  return 0;
31  Resource resource = mastercatalog()->id2Resource(id);
32  if ( resource.code() != sUNDEF)
33  object.prepare(id);
34  else
35  object.prepare(defaultName);
36 
37  return object;
38  }
39 
40  Resource _resource;
41  bool _binaryIsLoaded;
42  std::mutex _mutex;
43 protected:
44  UPCatalogConnector& containerConnector(IlwisObject::ConnectorMode mode= IlwisObject::cmINPUT);
45  const UPCatalogConnector& containerConnector(IlwisObject::ConnectorMode mode=IlwisObject::cmINPUT) const;
46 
47 private:
48  UPCatalogConnector _incontainerconnector;
49  UPCatalogConnector _outcontainerconnector;
50 };
51 }
52 
53 #endif // ILWISOBJECTCONNECTOR_H