Fesapi  0.13.0.0
This project provides C++ classes which allow an easy access in import and export to the Energistics standards.
EpcDocument.h
1 /*-----------------------------------------------------------------------
2 Licensed to the Apache Software Foundation (ASF) under one
3 or more contributor license agreements. See the NOTICE file
4 distributed with this work for additional information
5 regarding copyright ownership. The ASF licenses this file
6 to you under the Apache License, Version 2.0 (the
7 "License"; you may not use this file except in compliance
8 with the License. You may obtain a copy of the License at
9 
10  http://www.apache.org/licenses/LICENSE-2.0
11 
12 Unless required by applicable law or agreed to in writing,
13 software distributed under the License is distributed on an
14 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 KIND, either express or implied. See the License for the
16 specific language governing permissions and limitations
17 under the License.
18 -----------------------------------------------------------------------*/
19 #pragma once
20 
21 #include <string>
22 #include <vector>
23 #include <limits>
24 #include <stdexcept>
25 
26 #include "proxies/stdsoap2.h"
27 #include "proxies/gsoap_resqml2_0_1H.h"
28 #include "proxies/gsoap_witsml1_4_1_1H.h"
29 #include "proxies/gsoap_eml2_1H.h"
30 
31 #include "epc/Package.h"
32 
33 #include "nsDefinitions.h"
34 
35 #if (defined(_WIN32) && _MSC_VER < 1600) || (defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)))
36 #include "tools/nullptr_emulation.h"
37 #endif
38 
39 #if defined(_WIN32) && defined(FESAPI_DLL)
40  #if defined(FesapiCpp_EXPORTS) || defined(FesapiCppUnderDev_EXPORTS)
41  #define DLL_IMPORT_OR_EXPORT __declspec(dllexport)
42  #else
43  #define DLL_IMPORT_OR_EXPORT __declspec(dllimport)
44  #endif
45 #else
46  #define DLL_IMPORT_OR_EXPORT
47 #endif
48 
49 namespace RESQML2_NS
50 {
51  class AbstractFeature;
52  class AbstractFeatureInterpretation;
53  class AbstractLocal3dCrs;
54  class AbstractRepresentation;
55  class Activity;
56  class ActivityTemplate;
57  class GridConnectionSetRepresentation;
58  class MdDatum;
59  class PropertyKind;
60  class SubRepresentation;
61  class TimeSeries;
62  class RepresentationSetRepresentation;
63 }
64 
65 namespace RESQML2_0_1_NS
66 {
67  class Activity;
68  class ActivityTemplate;
69  class PropertyKindMapper;
70  class LocalDepth3dCrs;
71  class LocalTime3dCrs;
72  class GeneticBoundaryFeature;
73  class GeobodyBoundaryInterpretation;
74  class GeobodyFeature;
75  class GeobodyInterpretation;
76  class Horizon;
77  class WellboreFeature;
78  class SeismicLineFeature;
79  class StratigraphicUnitFeature;
80  class PolylineSetRepresentation;
81  class PolylineRepresentation;
82  class TriangulatedSetRepresentation;
83  class Grid2dRepresentation;
84  class WellboreTrajectoryRepresentation;
85  class DeviationSurveyRepresentation;
86  class AbstractIjkGridRepresentation;
87  class IjkGridExplicitRepresentation;
88  class IjkGridParametricRepresentation;
89  class IjkGridLatticeRepresentation;
90  class IjkGridNoGeometryRepresentation;
91  class UnstructuredGridRepresentation;
92  class BoundaryFeature;
93  class BoundaryFeatureInterpretation;
94  class TectonicBoundaryFeature;
95  class SeismicLatticeFeature;
96  class SeismicLineSetFeature;
97  class OrganizationFeature;
98  class GenericFeatureInterpretation;
99  class HorizonInterpretation;
100  class FaultInterpretation;
101  class WellboreInterpretation;
102  class EarthModelInterpretation;
103  class StructuralOrganizationInterpretation;
104  class StratigraphicUnitInterpretation;
105  class StratigraphicColumn;
106  class StratigraphicColumnRankInterpretation;
107  class PointSetRepresentation;
108  class WellboreFrameRepresentation;
109  class WellboreMarkerFrameRepresentation;
110  class NonSealedSurfaceFrameworkRepresentation;
111  class SealedSurfaceFrameworkRepresentation;
112  class StringTableLookup;
113  class CommentProperty;
114  class ContinuousProperty;
115  class ContinuousPropertySeries;
116  class DiscreteProperty;
117  class DiscretePropertySeries;
118  class CategoricalProperty;
119  class CategoricalPropertySeries;
120  class AbstractOrganizationInterpretation;
121  class AbstractGridRepresentation;
122  class OrganizationFeature;
123  class StratigraphicOccurrenceInterpretation;
124  class FrontierFeature;
125  class PlaneSetRepresentation;
126  class FluidBoundaryFeature;
127  class BlockedWellboreRepresentation;
128 }
129 
130 namespace WITSML1_4_1_1_NS
131 {
132  class AbstractObject;
133  class Well;
134  class CoordinateReferenceSystem;
135  class Trajectory;
136 }
137 
138 namespace PRODML2_0_NS
139 {
140  class DasAcquisition;
141  class FiberOpticalPath;
142  class DasInstrumentBox;
143  class HdfProxy;
144 }
145 
146 namespace COMMON_NS
147 {
148  class AbstractObject;
149  class AbstractHdfProxy;
150 
154  class DLL_IMPORT_OR_EXPORT EpcDocument
155  {
156  private :
157 
161  std::string generateRandomUuidAsString();
162 
167  std::string deserializeProdmlHdf5File();
168  public:
169 
170  enum openingMode { READ_ONLY = 0, READ_WRITE = 1, OVERWRITE = 2 };
171 
172  EpcDocument(const std::string & fileName, const openingMode & hdf5PermissionAccess = READ_ONLY);
173  EpcDocument(const std::string & fileName, const std::string & propertyKindMappingFilesDirectory, const openingMode & hdf5PermissionAccess = READ_ONLY);
174 
178  virtual ~EpcDocument() { close(); }
179 
180  // A function pointer definition which allows to build an abstract hdf proxy in writing mode of an epc document
181  typedef COMMON_NS::AbstractHdfProxy* (HdfProxyBuilder)(soap* soapContext, const std::string & guid, const std::string & title, const std::string & packageDirAbsolutePath, const std::string & externalFilePath, bool v21);
182  // A function pointer which allows to build a v2.0.1 abstract hdf proxy in reading mode of an epc document
183  typedef COMMON_NS::AbstractHdfProxy* (HdfProxyBuilderFromGsoapProxy2_0_1)(gsoap_resqml2_0_1::_eml20__EpcExternalPartReference* fromGsoap, const std::string & packageDirAbsolutePath, const std::string & externalFilePath);
184  // A function pointer which allows to build a v2.0.1 abstract hdf proxy in reading mode of an epc document
185  typedef PRODML2_0_NS::HdfProxy* (HdfProxyBuilderFromGsoapProxy2_1)(gsoap_eml2_1::_eml21__EpcExternalPartReference* fromGsoap, const std::string & packageDirAbsolutePath, const std::string & externalFilePath);
186 
187  // Allows a fesapi user to set a different builder of Hdf Proxy than the default one in writing mode of an epc document
188  // This is especially useful when the fesapi users wants to use its own builder for example.
189  void set_hdf_proxy_builder(HdfProxyBuilder builder);
190  void set_hdf_proxy_builder(HdfProxyBuilderFromGsoapProxy2_0_1 builder);
191  void set_hdf_proxy_builder(HdfProxyBuilderFromGsoapProxy2_1 builder);
192 
198  void open(const std::string & fileName, const openingMode & hdf5PermissionAccess = READ_ONLY);
199 
203  void close();
204 
205  const openingMode & getHdf5PermissionAccess() const;
206 
211  void setFilePath(const std::string & filePath);
212 
216  virtual void serialize(bool useZip64 = false);
217 
222  virtual std::string deserialize();
223 
227  soap* getGsoapContext() const;
228 
232  void addGsoapProxy(COMMON_NS::AbstractObject* proxy);
233 
237  void addGsoapProxy(WITSML1_4_1_1_NS::AbstractObject* proxy);
238 
243  RESQML2_0_1_NS::PropertyKindMapper* getPropertyKindMapper() const;
244 
249  std::string getEnergisticsPropertyKindName(const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind) const;
250 
255  gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind getEnergisticsPropertyKind(const std::string & energisticsPropertyKindName) const;
256 
261  std::string getEnergisticsUnitOfMeasureName(const gsoap_resqml2_0_1::resqml2__ResqmlUom & energisticsUom) const;
262 
267  gsoap_resqml2_0_1::resqml2__ResqmlUom getEnergisticsUnitOfMeasure(const std::string & energisticsUomName) const;
268 
273  std::string getFacet(const gsoap_resqml2_0_1::resqml2__Facet & facet) const;
274 
279  gsoap_resqml2_0_1::resqml2__Facet getFacet(const std::string & facet) const;
280 
285  std::string getWitsmlLengthUom(const gsoap_witsml1_4_1_1::witsml1__LengthUom & witsmlUom) const;
286 
291  std::string getWitsmlWellVerticalCoordinateUom(const gsoap_witsml1_4_1_1::witsml1__WellVerticalCoordinateUom & witsmlUom) const;
292 
297  std::string getWitsmlMeasuredDepthUom(const gsoap_witsml1_4_1_1::witsml1__MeasuredDepthUom & witsmlUom) const;
298 
303  std::string getWitsmlPlaneAngleUom(const gsoap_witsml1_4_1_1::witsml1__PlaneAngleUom & witsmlUom) const;
304 
308 #if (defined(_WIN32) && _MSC_VER >= 1600) || defined(__APPLE__)
309  const std::unordered_map< std::string, COMMON_NS::AbstractObject* > & getResqmlAbstractObjectSet() const;
310 #else
311  const std::tr1::unordered_map< std::string, COMMON_NS::AbstractObject* > & getResqmlAbstractObjectSet() const;
312 #endif
313 
317  std::vector<std::string> getAllUuids() const;
318 
322  COMMON_NS::AbstractObject* getResqmlAbstractObjectByUuid(const std::string & uuid, int & gsoapType) const;
323 
327  COMMON_NS::AbstractObject* getResqmlAbstractObjectByUuid(const std::string & uuid) const;
328 
333  template <class valueType>
334  valueType* getResqmlAbstractObjectByUuid(const std::string & uuid) const
335  {
336  COMMON_NS::AbstractObject* const result = getResqmlAbstractObjectByUuid(uuid);
337 
338  if (result == nullptr) {
339  return nullptr;
340  }
341 
342  if (dynamic_cast<valueType*>(result) != nullptr) {
343  return static_cast<valueType*>(result);
344  }
345 
346  throw std::invalid_argument("The uuid " + uuid + " does not resolve to the expected datatype");
347  }
348 
349  WITSML1_4_1_1_NS::AbstractObject* getWitsmlAbstractObjectByUuid(const std::string & uuid) const;
350 
351  std::vector<PRODML2_0_NS::DasAcquisition*> getDasAcquisitionSet() const;
352 
356  const std::vector<RESQML2_0_1_NS::LocalDepth3dCrs*> & getLocalDepth3dCrsSet() const;
357 
361  const std::vector<RESQML2_0_1_NS::LocalTime3dCrs*> & getLocalTime3dCrsSet() const;
362 
366  const std::vector<RESQML2_0_1_NS::StratigraphicColumn*> & getStratigraphicColumnSet() const;
367 
371  const std::vector<RESQML2_0_1_NS::TectonicBoundaryFeature*> & getFaultSet() const;
372 
376  const std::vector<RESQML2_0_1_NS::TectonicBoundaryFeature*> & getFractureSet() const;
377 
381  std::vector<RESQML2_0_1_NS::PolylineSetRepresentation*> getFaultPolylineSetRepSet() const;
382 
386  std::vector<RESQML2_0_1_NS::PolylineSetRepresentation*> getFracturePolylineSetRepSet() const;
387 
391  std::vector<RESQML2_0_1_NS::PolylineSetRepresentation*> getFrontierPolylineSetRepSet() const;
392 
396  std::vector<RESQML2_0_1_NS::TriangulatedSetRepresentation*> getFaultTriangulatedSetRepSet() const;
397 
401  std::vector<RESQML2_0_1_NS::TriangulatedSetRepresentation*> getFractureTriangulatedSetRepSet() const;
402 
406  std::vector<RESQML2_0_1_NS::Horizon*> getHorizonSet() const;
407 
411  std::vector<RESQML2_0_1_NS::GeneticBoundaryFeature*> getGeobodyBoundarySet() const;
412  unsigned int getGeobodyBoundaryCount() const;
413  RESQML2_0_1_NS::GeneticBoundaryFeature* getGeobodyBoundary(unsigned int index) const;
414 
418  const std::vector<RESQML2_0_1_NS::GeobodyFeature*> & getGeobodySet() const;
419 
423  std::vector<RESQML2_0_1_NS::Grid2dRepresentation*> getHorizonGrid2dRepSet() const;
424 
428  std::vector<RESQML2_0_1_NS::PolylineRepresentation*> getHorizonPolylineRepSet() const;
429 
433  std::vector<RESQML2_0_1_NS::PolylineSetRepresentation*> getHorizonPolylineSetRepSet() const;
434 
438  std::vector<RESQML2_0_1_NS::TriangulatedSetRepresentation*> getHorizonTriangulatedSetRepSet() const;
439 
443  const std::vector<RESQML2_0_1_NS::TriangulatedSetRepresentation*> & getAllTriangulatedSetRepSet() const;
444 
448  const std::vector<RESQML2_0_1_NS::Grid2dRepresentation*> & getAllGrid2dRepresentationSet() const;
449 
453  std::vector<RESQML2_0_1_NS::TriangulatedSetRepresentation*> getUnclassifiedTriangulatedSetRepSet() const;
454 
458  const std::vector<RESQML2_0_1_NS::SeismicLineFeature*> & getSeismicLineSet() const;
459 
463  const std::vector<RESQML2_0_1_NS::WellboreFeature*> & getWellboreSet() const;
464 
468  std::vector<RESQML2_0_1_NS::WellboreTrajectoryRepresentation*> getWellboreTrajectoryRepresentationSet() const;
469 
473  std::vector<RESQML2_0_1_NS::DeviationSurveyRepresentation*> getDeviationSurveyRepresentationSet() const;
474 
478  const std::vector<RESQML2_NS::RepresentationSetRepresentation*> & getRepresentationSetRepresentationSet() const;
479 
483  unsigned int getRepresentationSetRepresentationCount() const;
484 
488  RESQML2_NS::RepresentationSetRepresentation* getRepresentationSetRepresentation(const unsigned int & index) const;
489 
493  std::vector<RESQML2_0_1_NS::PolylineRepresentation*> getPolylineRepresentationSet() const;
494 
498  std::vector<RESQML2_0_1_NS::PolylineRepresentation*> getSeismicLinePolylineRepSet() const;
499 
503  const std::vector<RESQML2_0_1_NS::AbstractIjkGridRepresentation*> & getIjkGridRepresentationSet() const;
504  unsigned int getIjkGridRepresentationCount() const;
505  RESQML2_0_1_NS::AbstractIjkGridRepresentation* getIjkGridRepresentation(const unsigned int & i) const;
506 
510  std::vector<RESQML2_0_1_NS::IjkGridParametricRepresentation*> getIjkGridParametricRepresentationSet() const;
511 
515  std::vector<RESQML2_0_1_NS::IjkGridExplicitRepresentation*> getIjkGridExplicitRepresentationSet() const;
516 
520  std::vector<RESQML2_0_1_NS::IjkGridLatticeRepresentation*> getIjkSeismicCubeGridRepresentationSet() const;
521 
525  const std::vector<RESQML2_0_1_NS::UnstructuredGridRepresentation*> & getUnstructuredGridRepresentationSet() const;
526 
530  const std::vector<RESQML2_0_1_NS::FrontierFeature*> & getFrontierSet() const;
531 
535  const std::vector<RESQML2_0_1_NS::OrganizationFeature*> & getOrganizationSet() const;
536 
540  const std::vector<RESQML2_NS::TimeSeries*> & getTimeSeriesSet() const;
541 
545  const std::vector<RESQML2_NS::SubRepresentation*> & getSubRepresentationSet() const;
546  unsigned int getSubRepresentationCount() const;
547  RESQML2_NS::SubRepresentation* getSubRepresentation(const unsigned int & index) const;
548 
552  const std::vector<RESQML2_0_1_NS::PointSetRepresentation*> & getPointSetRepresentationSet() const;
553  unsigned int getPointSetRepresentationCount() const;
554  RESQML2_0_1_NS::PointSetRepresentation* getPointSetRepresentation(const unsigned int & index) const;
555 
559  const std::vector<COMMON_NS::AbstractHdfProxy*> & getHdfProxySet() const;
560  unsigned int getHdfProxyCount() const;
561  COMMON_NS::AbstractHdfProxy* getHdfProxy(const unsigned int & index) const;
562 
566  std::string getStorageDirectory() const;
567 
571  std::string getName() const;
572 
576  void updateAllRelationships();
577 
578 #if (defined(_WIN32) && _MSC_VER >= 1600) || defined(__APPLE__)
579  std::unordered_map< std::string, std::string > & getExtendedCoreProperty();
580 #else
581  std::tr1::unordered_map< std::string, std::string > & getExtendedCoreProperty();
582 #endif
583 
584  void setExtendedCoreProperty(const std::string & key, const std::string & value);
585 
590  std::string getExtendedCoreProperty(const std::string & key);
591 
595  COMMON_NS::AbstractObject* createPartial(gsoap_resqml2_0_1::eml20__DataObjectReference* dor);
596 
600  template <class valueType>
601  valueType* createPartial(const std::string & guid, const std::string & title)
602  {
603  gsoap_resqml2_0_1::eml20__DataObjectReference* dor = gsoap_resqml2_0_1::soap_new_eml20__DataObjectReference(s, 1);
604  dor->UUID = guid.empty() ? generateRandomUuidAsString() : guid;
605  dor->Title = title;
606  valueType* result = new valueType(dor);
607  addFesapiWrapperAndDeleteItIfException(result);
608  return result;
609  }
610 
611  //************************************
612  //************ HDF *******************
613  //************************************
614 
615  virtual COMMON_NS::AbstractHdfProxy* createHdfProxy(const std::string & guid, const std::string & title, const std::string & packageDirAbsolutePath, const std::string & externalFilePath, bool v21 = false);
616 
617  //************************************
618  //************ CRS *******************
619  //************************************
620 
635  RESQML2_0_1_NS::LocalDepth3dCrs* createLocalDepth3dCrs(const std::string & guid, const std::string & title,
636  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
637  const double & arealRotation,
638  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
639  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
640 
655  RESQML2_0_1_NS::LocalDepth3dCrs* createLocalDepth3dCrs(const std::string & guid, const std::string & title,
656  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
657  const double & arealRotation,
658  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const std::string & projectedUnknownReason,
659  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
660 
675  RESQML2_0_1_NS::LocalDepth3dCrs* createLocalDepth3dCrs(const std::string & guid, const std::string & title,
676  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
677  const double & arealRotation,
678  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
679  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
680 
695  RESQML2_0_1_NS::LocalDepth3dCrs* createLocalDepth3dCrs(const std::string & guid, const std::string & title,
696  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
697  const double & arealRotation,
698  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const std::string & projectedUnknownReason,
699  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
700 
716  RESQML2_0_1_NS::LocalTime3dCrs* createLocalTime3dCrs(const std::string & guid, const std::string & title,
717  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
718  const double & arealRotation,
719  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
720  const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
721  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
722 
738  RESQML2_0_1_NS::LocalTime3dCrs* createLocalTime3dCrs(const std::string & guid, const std::string & title,
739  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
740  const double & arealRotation,
741  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const std::string & projectedUnknownReason,
742  const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
743  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
744 
760  RESQML2_0_1_NS::LocalTime3dCrs* createLocalTime3dCrs(const std::string & guid, const std::string & title,
761  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
762  const double & arealRotation,
763  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
764  const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
765  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
766 
782  RESQML2_0_1_NS::LocalTime3dCrs* createLocalTime3dCrs(const std::string & guid, const std::string & title,
783  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
784  const double & arealRotation,
785  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const std::string & projectedUnknownReason,
786  const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
787  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
788 
789  RESQML2_NS::MdDatum* createMdDatum(const std::string & guid, const std::string & title,
790  RESQML2_NS::AbstractLocal3dCrs * locCrs, const gsoap_resqml2_0_1::resqml2__MdReference & originKind,
791  const double & referenceLocationOrdinal1, const double & referenceLocationOrdinal2, const double & referenceLocationOrdinal3);
792 
793  //************************************
794  //************ FEATURE ***************
795  //************************************
796 
797  RESQML2_0_1_NS::BoundaryFeature* createBoundaryFeature(const std::string & guid, const std::string & title);
798 
799  RESQML2_0_1_NS::Horizon* createHorizon(const std::string & guid, const std::string & title);
800 
801  RESQML2_0_1_NS::GeneticBoundaryFeature* createGeobodyBoundaryFeature(const std::string & guid, const std::string & title);
802 
803  RESQML2_0_1_NS::GeobodyFeature* createGeobodyFeature(const std::string & guid, const std::string & title);
804 
805  RESQML2_0_1_NS::TectonicBoundaryFeature* createFault(const std::string & guid, const std::string & title);
806 
807  RESQML2_0_1_NS::TectonicBoundaryFeature* createFracture(const std::string & guid, const std::string & title);
808 
809  RESQML2_0_1_NS::WellboreFeature* createWellboreFeature(const std::string & guid, const std::string & title);
810 
811  RESQML2_0_1_NS::SeismicLatticeFeature* createSeismicLattice(const std::string & guid, const std::string & title,
812  const int & inlineIncrement, const int & crosslineIncrement,
813  const unsigned int & originInline, const unsigned int & originCrossline,
814  const unsigned int & inlineCount, const unsigned int & crosslineCount);
815 
816  RESQML2_0_1_NS::SeismicLineFeature* createSeismicLine(const std::string & guid, const std::string & title,
817  const int & traceIndexIncrement, const unsigned int & firstTraceIndex, const unsigned int & traceCount);
818 
819  RESQML2_0_1_NS::SeismicLineSetFeature* createSeismicLineSet(const std::string & guid, const std::string & title);
820 
821  RESQML2_0_1_NS::FrontierFeature* createFrontier(const std::string & guid, const std::string & title);
822 
823  RESQML2_0_1_NS::StratigraphicUnitFeature* createStratigraphicUnit(const std::string & guid, const std::string & title);
824 
825  RESQML2_0_1_NS::OrganizationFeature* createStructuralModel(const std::string & guid, const std::string & title);
826 
827  RESQML2_0_1_NS::OrganizationFeature* createStratigraphicModel(const std::string & guid, const std::string & title);
828 
829  RESQML2_0_1_NS::OrganizationFeature* createEarthModel(const std::string & guid, const std::string & title);
830 
831  RESQML2_0_1_NS::FluidBoundaryFeature* createFluidBoundaryFeature(const std::string & guid, const std::string & title, const gsoap_resqml2_0_1::resqml2__FluidContact & fluidContact);
832 
833  //************************************
834  //************ INTERPRETATION ********
835  //************************************
836 
837  RESQML2_0_1_NS::GenericFeatureInterpretation* createGenericFeatureInterpretation(RESQML2_NS::AbstractFeature * feature, const std::string & guid, const std::string & title);
838 
839  RESQML2_0_1_NS::BoundaryFeatureInterpretation* createBoundaryFeatureInterpretation(RESQML2_0_1_NS::BoundaryFeature * feature, const std::string & guid, const std::string & title);
840 
841  RESQML2_0_1_NS::HorizonInterpretation* createPartialHorizonInterpretation(const std::string & guid, const std::string & title);
842 
843  RESQML2_0_1_NS::HorizonInterpretation* createHorizonInterpretation(RESQML2_0_1_NS::Horizon * horizon, const std::string & guid, const std::string & title);
844 
845  RESQML2_0_1_NS::GeobodyBoundaryInterpretation* createGeobodyBoundaryInterpretation(RESQML2_0_1_NS::GeneticBoundaryFeature * geobodyBoundary, const std::string & guid, const std::string & title);
846 
847  RESQML2_0_1_NS::FaultInterpretation* createFaultInterpretation(RESQML2_0_1_NS::TectonicBoundaryFeature * fault, const std::string & guid, const std::string & title);
848 
849  RESQML2_0_1_NS::WellboreInterpretation* createWellboreInterpretation(RESQML2_0_1_NS::WellboreFeature * wellbore, const std::string & guid, const std::string & title, bool isDrilled);
850 
851  RESQML2_0_1_NS::EarthModelInterpretation* createEarthModelInterpretation(RESQML2_0_1_NS::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
852 
853  RESQML2_0_1_NS::StructuralOrganizationInterpretation* createStructuralOrganizationInterpretationInAge(RESQML2_0_1_NS::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
854  RESQML2_0_1_NS::StructuralOrganizationInterpretation* createStructuralOrganizationInterpretationInApparentDepth(RESQML2_0_1_NS::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
855  RESQML2_0_1_NS::StructuralOrganizationInterpretation* createStructuralOrganizationInterpretationInMeasuredDepth(RESQML2_0_1_NS::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
856 
857  RESQML2_0_1_NS::GeobodyInterpretation* createGeobodyInterpretation(RESQML2_0_1_NS::GeobodyFeature * geobody, const std::string & guid, const std::string & title);
858 
859  RESQML2_0_1_NS::StratigraphicUnitInterpretation* createStratigraphicUnitInterpretation(RESQML2_0_1_NS::StratigraphicUnitFeature * stratiUnitFeature, const std::string & guid, const std::string & title);
860  RESQML2_0_1_NS::StratigraphicColumn* createStratigraphicColumn(const std::string & guid, const std::string & title);
861  RESQML2_0_1_NS::StratigraphicColumnRankInterpretation* createStratigraphicColumnRankInterpretationInAge(RESQML2_0_1_NS::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title, const unsigned long & rank);
862  RESQML2_0_1_NS::StratigraphicColumnRankInterpretation* createStratigraphicColumnRankInterpretationInApparentDepth(RESQML2_0_1_NS::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title, const unsigned long & rank);
863  RESQML2_0_1_NS::StratigraphicOccurrenceInterpretation* createStratigraphicOccurrenceInterpretationInAge(RESQML2_0_1_NS::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
864  RESQML2_0_1_NS::StratigraphicOccurrenceInterpretation* createStratigraphicOccurrenceInterpretationInApparentDepth(RESQML2_0_1_NS::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
865 
866  //************************************
867  //************ REPRESENTATION ********
868  //************************************
869 
871  const std::string & guid, const std::string & title);
872 
873  RESQML2_0_1_NS::PolylineSetRepresentation* createPolylineSetRepresentation(RESQML2_NS::AbstractLocal3dCrs * crs,
874  const std::string & guid, const std::string & title);
875 
877  const std::string & guid, const std::string & title);
878 
880  const std::string & guid, const std::string & title, const gsoap_resqml2_0_1::resqml2__LineRole & roleKind);
881 
883  const std::string & guid, const std::string & title);
884 
886  const std::string & guid, const std::string & title);
887 
889  const std::string & guid, const std::string & title, bool isClosed = false);
890 
892  const std::string & guid, const std::string & title, bool isClosed = false);
893 
895  const std::string & guid, const std::string & title, const gsoap_resqml2_0_1::resqml2__LineRole & roleKind, bool isClosed = false);
896 
898  const std::string & guid, const std::string & title);
899 
900  RESQML2_0_1_NS::WellboreTrajectoryRepresentation* createWellboreTrajectoryRepresentation(RESQML2_0_1_NS::WellboreInterpretation* interp, const std::string & guid, const std::string & title, RESQML2_NS::MdDatum * mdInfo);
901  RESQML2_0_1_NS::WellboreTrajectoryRepresentation* createWellboreTrajectoryRepresentation(RESQML2_0_1_NS::WellboreInterpretation* interp, const std::string & guid, const std::string & title, RESQML2_0_1_NS::DeviationSurveyRepresentation* deviationSurvey);
902 
903  RESQML2_0_1_NS::DeviationSurveyRepresentation* createDeviationSurveyRepresentation(RESQML2_0_1_NS::WellboreInterpretation* interp, const std::string & guid, const std::string & title, const bool & isFinal, RESQML2_NS::MdDatum * mdInfo);
904 
905  RESQML2_0_1_NS::WellboreFrameRepresentation* createWellboreFrameRepresentation(RESQML2_0_1_NS::WellboreInterpretation* interp, const std::string & guid, const std::string & title, RESQML2_0_1_NS::WellboreTrajectoryRepresentation * traj);
906 
907  RESQML2_0_1_NS::WellboreMarkerFrameRepresentation* createWellboreMarkerFrameRepresentation(RESQML2_0_1_NS::WellboreInterpretation* interp, const std::string & guid, const std::string & title, RESQML2_0_1_NS::WellboreTrajectoryRepresentation * traj);
908 
910  const std::string & guid, const std::string & title, RESQML2_0_1_NS::WellboreTrajectoryRepresentation * traj);
911 
912  RESQML2_NS::RepresentationSetRepresentation* createRepresentationSetRepresentation(
914  const std::string & guid,
915  const std::string & title);
916 
917  RESQML2_NS::RepresentationSetRepresentation* createRepresentationSetRepresentation(
918  const std::string & guid,
919  const std::string & title);
920 
921  RESQML2_NS::RepresentationSetRepresentation* createPartialRepresentationSetRepresentation(const std::string & guid, const std::string & title);
922 
923  RESQML2_0_1_NS::NonSealedSurfaceFrameworkRepresentation* createNonSealedSurfaceFrameworkRepresentation(
925  const std::string & guid,
926  const std::string & title,
927  const bool & isSealed);
928 
929  RESQML2_0_1_NS::SealedSurfaceFrameworkRepresentation* createSealedSurfaceFrameworkRepresentation(
931  const std::string & guid,
932  const std::string & title);
933 
934  RESQML2_0_1_NS::AbstractIjkGridRepresentation* createPartialIjkGridRepresentation(const std::string & guid, const std::string & title);
935 
936  RESQML2_0_1_NS::AbstractIjkGridRepresentation* createPartialTruncatedIjkGridRepresentation(const std::string & guid, const std::string & title);
937 
938  RESQML2_0_1_NS::IjkGridExplicitRepresentation* createIjkGridExplicitRepresentation(RESQML2_NS::AbstractLocal3dCrs * crs,
939  const std::string & guid, const std::string & title,
940  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
941 
943  const std::string & guid, const std::string & title,
944  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
945 
946  RESQML2_0_1_NS::IjkGridParametricRepresentation* createIjkGridParametricRepresentation(RESQML2_NS::AbstractLocal3dCrs * crs,
947  const std::string & guid, const std::string & title,
948  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
949 
951  const std::string & guid, const std::string & title,
952  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
953 
954  RESQML2_0_1_NS::IjkGridLatticeRepresentation* createIjkGridLatticeRepresentation(RESQML2_NS::AbstractLocal3dCrs * crs,
955  const std::string & guid, const std::string & title,
956  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
957 
959  const std::string & guid, const std::string & title,
960  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
961 
962  RESQML2_0_1_NS::IjkGridNoGeometryRepresentation* createIjkGridNoGeometryRepresentation(
963  const std::string & guid, const std::string & title,
964  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
965 
967  const std::string & guid, const std::string & title,
968  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
969 
970  RESQML2_0_1_NS::UnstructuredGridRepresentation* createPartialUnstructuredGridRepresentation(const std::string & guid, const std::string & title);
971 
972  RESQML2_0_1_NS::UnstructuredGridRepresentation* createUnstructuredGridRepresentation(RESQML2_NS::AbstractLocal3dCrs * crs,
973  const std::string & guid, const std::string & title,
974  const ULONG64 & cellCount);
975 
976  RESQML2_NS::SubRepresentation* createPartialSubRepresentation(const std::string & guid, const std::string & title);
977 
978  RESQML2_NS::SubRepresentation* createSubRepresentation(
979  const std::string & guid, const std::string & title);
980 
982  const std::string & guid, const std::string & title);
983 
984  RESQML2_NS::GridConnectionSetRepresentation* createPartialGridConnectionSetRepresentation(const std::string & guid, const std::string & title);
985 
986  RESQML2_NS::GridConnectionSetRepresentation* createGridConnectionSetRepresentation(const std::string & guid, const std::string & title);
987 
988  RESQML2_NS::GridConnectionSetRepresentation* createGridConnectionSetRepresentation(RESQML2_NS::AbstractFeatureInterpretation* interp,
989  const std::string & guid, const std::string & title);
990 
991  //************************************
992  //************* PROPERTIES ***********
993  //************************************
994 
995  RESQML2_NS::TimeSeries* createTimeSeries(const std::string & guid, const std::string & title);
996 
997  RESQML2_NS::TimeSeries* createPartialTimeSeries(const std::string & guid, const std::string & title);
998 
999  RESQML2_0_1_NS::StringTableLookup* createStringTableLookup(const std::string & guid, const std::string & title);
1000 
1001  RESQML2_NS::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
1002  const std::string & namingSystem, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & parentEnergisticsPropertyKind);
1003 
1004  RESQML2_NS::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
1005  const std::string & namingSystem, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, RESQML2_NS::PropertyKind * parentPropType);
1006 
1007  RESQML2_NS::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
1008  const std::string & namingSystem, const std::string & nonStandardUom, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & parentEnergisticsPropertyKind);
1009 
1010  RESQML2_NS::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
1011  const std::string & namingSystem, const std::string & nonStandardUom, RESQML2_NS::PropertyKind * parentPropType);
1012 
1013  RESQML2_NS::PropertyKind* createPartialPropertyKind(const std::string & guid, const std::string & title);
1014 
1015  RESQML2_0_1_NS::CommentProperty* createCommentProperty(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1016  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
1017 
1018  RESQML2_0_1_NS::CommentProperty* createCommentProperty(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1019  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, RESQML2_NS::PropertyKind * localPropType);
1020 
1021  RESQML2_0_1_NS::ContinuousProperty* createContinuousProperty(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1022  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
1023 
1024  RESQML2_0_1_NS::ContinuousProperty* createContinuousProperty(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1025  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, RESQML2_NS::PropertyKind * localPropType);
1026 
1027  RESQML2_0_1_NS::ContinuousProperty* createContinuousProperty(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1028  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const std::string & nonStandardUom, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
1029 
1030  RESQML2_0_1_NS::ContinuousProperty* createContinuousProperty(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1031  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const std::string & nonStandardUom, RESQML2_NS::PropertyKind * localPropType);
1032 
1033  RESQML2_0_1_NS::ContinuousPropertySeries* createContinuousPropertySeries(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1034  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind,
1035  RESQML2_NS::TimeSeries * ts, const bool & useInterval = false);
1036 
1037  RESQML2_0_1_NS::ContinuousPropertySeries* createContinuousPropertySeries(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1038  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, RESQML2_NS::PropertyKind * localPropType,
1039  RESQML2_NS::TimeSeries * ts, const bool & useInterval = false);
1040 
1041  RESQML2_0_1_NS::DiscreteProperty* createDiscreteProperty(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1042  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
1043 
1044  RESQML2_0_1_NS::DiscreteProperty* createDiscreteProperty(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1045  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, RESQML2_NS::PropertyKind * localPropType);
1046 
1047  RESQML2_0_1_NS::DiscretePropertySeries* createDiscretePropertySeries(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1048  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind,
1049  RESQML2_NS::TimeSeries * ts, const bool & useInterval = false);
1050 
1051  RESQML2_0_1_NS::DiscretePropertySeries* createDiscretePropertySeries(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1052  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, RESQML2_NS::PropertyKind * localPropType,
1053  RESQML2_NS::TimeSeries * ts, const bool & useInterval = false);
1054 
1055  RESQML2_0_1_NS::CategoricalProperty* createCategoricalProperty(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1056  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind,
1057  RESQML2_0_1_NS::StringTableLookup* strLookup, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
1058 
1059  RESQML2_0_1_NS::CategoricalProperty* createCategoricalProperty(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1060  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind,
1061  RESQML2_0_1_NS::StringTableLookup* strLookup, RESQML2_NS::PropertyKind * localPropType);
1062 
1063  RESQML2_0_1_NS::CategoricalPropertySeries* createCategoricalPropertySeries(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1064  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind,
1065  RESQML2_0_1_NS::StringTableLookup* strLookup, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind,
1066  RESQML2_NS::TimeSeries * ts, const bool & useInterval = false);
1067 
1068  RESQML2_0_1_NS::CategoricalPropertySeries* createCategoricalPropertySeries(RESQML2_NS::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1069  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind,
1070  RESQML2_0_1_NS::StringTableLookup* strLookup, RESQML2_NS::PropertyKind * localPropType,
1071  RESQML2_NS::TimeSeries * ts, const bool & useInterval = false);
1072 
1073  //************************************
1074  //************* ACTIVITIES ***********
1075  //************************************
1076 
1077  RESQML2_NS::ActivityTemplate* createActivityTemplate(const std::string & guid, const std::string & title);
1078 
1079  RESQML2_NS::Activity* createActivity(RESQML2_NS::ActivityTemplate* activityTemplate, const std::string & guid, const std::string & title);
1080 
1081  //************************************
1082  //*************** WITSML *************
1083  //************************************
1084 
1088  std::vector<WITSML1_4_1_1_NS::Trajectory*> getWitsmlTrajectorySet() const;
1089 
1090  WITSML1_4_1_1_NS::Well* createWell(
1091  const std::string & guid,
1092  const std::string & title,
1093  const std::string & timeZone);
1094 
1095  WITSML1_4_1_1_NS::Well* createWell(
1096  const std::string & guid,
1097  const std::string & title,
1098  const std::string & timeZone,
1099  const std::string & operator_,
1100  gsoap_witsml1_4_1_1::witsml1__WellStatus statusWell,
1101  gsoap_witsml1_4_1_1::witsml1__WellPurpose purposeWell,
1102  gsoap_witsml1_4_1_1::witsml1__WellFluid fluidWell,
1103  gsoap_witsml1_4_1_1::witsml1__WellDirection directionWell,
1104  const time_t & dTimSpud,
1105  const std::string & sourceName,
1106  const time_t & dTimCreation,
1107  const time_t & dTimLastChange,
1108  const std::string & comments
1109  );
1110 
1111  WITSML1_4_1_1_NS::CoordinateReferenceSystem* createCoordinateReferenceSystem(
1112  const std::string & guid,
1113  const std::string & title,
1114  const std::string & namingSystem,
1115  const std::string & code,
1116  const std::string & sourceName,
1117  const time_t & dTimCreation,
1118  const time_t & dTimLastChange,
1119  const std::string & comments);
1120 
1121  //************************************
1122  //************ PRODML ****************
1123  //************************************
1124 
1125  PRODML2_0_NS::DasAcquisition* createDasAcquisition(PRODML2_0_NS::FiberOpticalPath* fiberOpticalPath, PRODML2_0_NS::DasInstrumentBox* dasInstrumentBox,
1126  const std::string & guid, const std::string & title,
1127  const std::string & jobGuid, const std::string & facilityId, const std::string & vendorName,
1128  const double & pulseRate, const gsoap_eml2_1::eml21__FrequencyUom & pulseRateUom,
1129  const double & pulseWidth, const gsoap_eml2_1::eml21__TimeUom & pulseWidthUom,
1130  const double & gaugeLength, const gsoap_eml2_1::eml21__LengthUom & gaugeLengthUom,
1131  const double & spatialSamplingInterval, const gsoap_eml2_1::eml21__LengthUom & spatialSamplingIntervalUom,
1132  const double & minimumFrequency, const gsoap_eml2_1::eml21__FrequencyUom & minimumFrequencyUom,
1133  const double & maximumFrequency, const gsoap_eml2_1::eml21__FrequencyUom & maximumFrequencyUom,
1134  const ULONG64 & lociCount, const ULONG64 & startLocusIndex,
1135  const std::string & measurementStartIsoTime, bool triggeredMeasurement);
1136 
1137  PRODML2_0_NS::FiberOpticalPath* createFiberOpticalPath(const std::string & guid, const std::string & title,
1138  const std::string & firstSegmentUid, const double & firstSegmentLength, const gsoap_eml2_1::eml21__LengthUom & firstSegmentLengthUom,
1139  const std::string & terminatorUid, const gsoap_eml2_1::prodml2__TerminationType & terminationType);
1140 
1141  PRODML2_0_NS::DasInstrumentBox* createDasInstrumentBox(const std::string & guid, const std::string & title,
1142  const std::string & firmwareVersion, const std::string & instrumentName);
1143 
1144  //************************************
1145  //************* WARNINGS *************
1146  //************************************
1147 
1148  void addWarning(const std::string & warning);
1149  const std::vector<std::string> & getWarnings() const;
1150 
1151  protected:
1155  int getGsoapErrorCode() const;
1156 
1160  std::string getGsoapErrorMessage() const;
1161 
1165  void setGsoapStream(std::istream * inputStream);
1166 
1170  void addFesapiWrapperAndDeleteItIfException(COMMON_NS::AbstractObject* proxy);
1171 
1175  void addFesapiWrapperAndDeleteItIfException(WITSML1_4_1_1_NS::AbstractObject* proxy);
1176 
1182  COMMON_NS::AbstractObject* getResqml2_0_1WrapperFromGsoapContext(const std::string & resqmlContentType);
1183 
1188  gsoap_resqml2_0_1::_eml20__EpcExternalPartReference* getEpcExternalPartReference_2_0_GsoapProxyFromGsoapContext();
1189 
1190  gsoap_eml2_1::_eml21__EpcExternalPartReference* getEpcExternalPartReference_2_1_GsoapProxyFromGsoapContext();
1191 
1192  private :
1193  static const char * DOCUMENT_EXTENSION;
1194 
1195  openingMode hdf5PermissionAccess;
1196 
1197  epc::Package* package;
1198 #if (defined(_WIN32) && _MSC_VER >= 1600) || defined(__APPLE__)
1199  std::unordered_map< std::string, COMMON_NS::AbstractObject* > resqmlAbstractObjectSet;
1200 #else
1201  std::tr1::unordered_map< std::string, COMMON_NS::AbstractObject* > resqmlAbstractObjectSet;
1202 #endif
1203 #if (defined(_WIN32) && _MSC_VER >= 1600) || defined(__APPLE__)
1204  std::unordered_map< std::string, WITSML1_4_1_1_NS::AbstractObject* > witsmlAbstractObjectSet;
1205 #else
1206  std::tr1::unordered_map< std::string, WITSML1_4_1_1_NS::AbstractObject* > witsmlAbstractObjectSet;
1207 #endif
1208  soap* s;
1209  std::string filePath;
1210 
1211  // Better for performance reason to have set of important objects instead of having a global vector of GsoapWrapper
1212  // Even if redundant with resqmlAbstractObjectSet
1213  std::vector<RESQML2_0_1_NS::LocalDepth3dCrs*> localDepth3dCrsSet;
1214  std::vector<RESQML2_0_1_NS::LocalTime3dCrs*> localTime3dCrsSet;
1215  std::vector<RESQML2_0_1_NS::TectonicBoundaryFeature*> faultSet;
1216  std::vector<RESQML2_0_1_NS::TectonicBoundaryFeature*> fractureSet;
1217  std::vector<RESQML2_0_1_NS::GeneticBoundaryFeature*> geneticBoundarySet;
1218  std::vector<RESQML2_0_1_NS::GeobodyFeature*> geobodySet;
1219  std::vector<RESQML2_0_1_NS::SeismicLineFeature*> seismicLineSet;
1220  std::vector<COMMON_NS::AbstractHdfProxy*> hdfProxySet;
1221  std::vector<RESQML2_0_1_NS::WellboreFeature*> wellboreSet;
1222  std::vector<RESQML2_NS::RepresentationSetRepresentation*> representationSetRepresentationSet;
1223  std::vector<WITSML1_4_1_1_NS::Trajectory*> witsmlTrajectorySet;
1224  std::vector<RESQML2_0_1_NS::TriangulatedSetRepresentation*> triangulatedSetRepresentationSet;
1225  std::vector<RESQML2_0_1_NS::Grid2dRepresentation*> grid2dRepresentationSet;
1226  std::vector<RESQML2_0_1_NS::PolylineRepresentation*> polylineRepresentationSet;
1227  std::vector<RESQML2_0_1_NS::AbstractIjkGridRepresentation*> ijkGridRepresentationSet;
1228  std::vector<RESQML2_0_1_NS::UnstructuredGridRepresentation*> unstructuredGridRepresentationSet;
1229  std::vector<RESQML2_0_1_NS::StratigraphicColumn*> stratigraphicColumnSet;
1230  std::vector<RESQML2_0_1_NS::FrontierFeature*> frontierSet;
1231  std::vector<RESQML2_0_1_NS::OrganizationFeature*> organizationSet;
1232  std::vector<RESQML2_NS::TimeSeries*> timeSeriesSet;
1233  std::vector<RESQML2_NS::SubRepresentation*> subRepresentationSet;
1234  std::vector<RESQML2_0_1_NS::PointSetRepresentation*> pointSetRepresentationSet;
1235 
1236  RESQML2_0_1_NS::PropertyKindMapper* propertyKindMapper;
1237 
1238  std::vector<std::string> warnings;
1239 
1240  HdfProxyBuilder* make_hdf_proxy;
1241  HdfProxyBuilderFromGsoapProxy2_0_1* make_hdf_proxy_from_gsoap_proxy_2_0_1;
1242  HdfProxyBuilderFromGsoapProxy2_1* make_hdf_proxy_from_gsoap_proxy_2_1;
1243  };
1244 }
1245 
1246 
1247 
Definition: StratigraphicUnitInterpretation.h:25
Definition: WellboreTrajectoryRepresentation.h:30
Definition: GeneticBoundaryFeature.h:25
Definition: FiberOpticalPath.h:25
Definition: AbstractOrganizationInterpretation.h:28
Definition: FrontierFeature.h:25
Definition: PolylineRepresentation.h:25
virtual ~EpcDocument()
Definition: EpcDocument.h:178
Definition: FluidBoundaryFeature.h:25
Definition: RepresentationSetRepresentation.h:25
Definition: FaultInterpretation.h:26
Definition: LocalTime3dCrs.h:25
Definition: BlockedWellboreRepresentation.h:30
Definition: SubRepresentation.h:25
Definition: ActivityTemplate.h:25
Definition: DeviationSurveyRepresentation.h:32
Definition: DasAcquisition.h:30
Definition: OrganizationFeature.h:25
Definition: CategoricalPropertySeries.h:29
valueType * createPartial(const std::string &guid, const std::string &title)
Definition: EpcDocument.h:601
Definition: StratigraphicOccurrenceInterpretation.h:30
Definition: EpcDocument.h:138
Definition: AbstractRepresentation.h:31
Definition: StratigraphicColumn.h:28
Definition: GridConnectionSetRepresentation.h:25
Definition: SeismicLatticeFeature.h:25
Definition: AbstractIjkGridRepresentation.h:32
Definition: StratigraphicUnitFeature.h:25
Definition: AbstractFeatureInterpretation.h:30
Definition: DiscretePropertySeries.h:25
Definition: EpcDocument.h:65
Definition: Grid2dRepresentation.h:25
Definition: CategoricalProperty.h:25
Definition: TriangulatedSetRepresentation.h:29
Definition: PolylineSetRepresentation.h:25
Definition: TimeSeries.h:25
Definition: LocalDepth3dCrs.h:25
Definition: IjkGridNoGeometryRepresentation.h:25
Definition: StructuralOrganizationInterpretation.h:26
Definition: EpcDocument.h:130
Definition: NonSealedSurfaceFrameworkRepresentation.h:25
Definition: EpcDocument.h:154
Definition: GenericFeatureInterpretation.h:25
Definition: SeismicLineFeature.h:25
Definition: BoundaryFeatureInterpretation.h:26
Definition: DiscreteProperty.h:29
Definition: Horizon.h:25
Definition: WellboreFrameRepresentation.h:31
Definition: PlaneSetRepresentation.h:25
Definition: WellboreFeature.h:30
Definition: AbstractObject.h:27
Definition: PropertyKindMapper.h:31
Definition: SealedSurfaceFrameworkRepresentation.h:29
Definition: AbstractObject.h:28
Definition: Package.h:41
Definition: IjkGridParametricRepresentation.h:27
valueType * getResqmlAbstractObjectByUuid(const std::string &uuid) const
Definition: EpcDocument.h:334
Definition: StringTableLookup.h:25
Definition: IjkGridLatticeRepresentation.h:25
Definition: GeobodyBoundaryInterpretation.h:27
Definition: GeobodyInterpretation.h:25
Definition: AbstractHdfProxy.h:30
Definition: EarthModelInterpretation.h:28
Definition: GeobodyFeature.h:25
Definition: SeismicLineSetFeature.h:25
Definition: PropertyKind.h:25
Definition: WellboreInterpretation.h:26
Definition: UnstructuredGridRepresentation.h:26
Definition: HorizonInterpretation.h:27
Definition: WellboreMarkerFrameRepresentation.h:30
Definition: PointSetRepresentation.h:25
Definition: IjkGridExplicitRepresentation.h:25
Definition: MdDatum.h:31
Definition: HdfProxy.h:25
Definition: CommentProperty.h:25
Definition: BoundaryFeature.h:25
Definition: CoordinateReferenceSystem.h:27
Definition: Activity.h:25
Definition: TectonicBoundaryFeature.h:25
Definition: AbstractLocal3dCrs.h:25
Definition: AbstractHdfProxy.h:28
Definition: ContinuousPropertySeries.h:29
Definition: EpcDocument.h:49
Definition: DasInstrumentBox.h:25
Definition: Well.h:27
Definition: ContinuousProperty.h:29
Definition: StratigraphicColumnRankInterpretation.h:30
Definition: AbstractFeature.h:27