My Project
EpcDocument.h
1 /*-----------------------------------------------------------------------
2 Copyright F2I-CONSULTING, (2014-2017)
3 
4 philippe.verney@f2i-consulting.com
5 
6 This software is a computer program whose purpose is to access to data formatted using Energistics standards.
7 
8 This software is governed by the CeCILL-B license under French law and
9 abiding by the rules of distribution of free software. You can use,
10 modify and/ or redistribute the software under the terms of the CeCILL-B
11 license as circulated by CEA, CNRS and INRIA at the following URL
12 "http://www.cecill.info".
13 
14 As a counterpart to the access to the source code and rights to copy,
15 modify and redistribute granted by the license, users are provided only
16 with a limited warranty and the software's author, the holder of the
17 economic rights, and the successive licensors have only limited
18 liability.
19 
20 In this respect, the user's attention is drawn to the risks associated
21 with loading, using, modifying and/or developing or reproducing the
22 software by the user in light of its specific status of free software,
23 that may mean that it is complicated to manipulate, and that also
24 therefore means that it is reserved for developers and experienced
25 professionals having in-depth computer knowledge. Users are therefore
26 encouraged to load and test the software's suitability as regards their
27 requirements in conditions enabling the security of their systems and/or
28 data to be ensured and, more generally, to use and operate it in the
29 same conditions as regards security.
30 
31 The fact that you are presently reading this means that you have had
32 knowledge of the CeCILL-B license and that you accept its terms.
33 -----------------------------------------------------------------------*/
34 #pragma once
35 
36 #include <string>
37 #include <vector>
38 #include <limits>
39 #include <stdexcept>
40 
41 #include "proxies/stdsoap2.h"
42 #include "proxies/gsoap_resqml2_0_1H.h"
43 #include "proxies/gsoap_witsml1_4_1_1H.h"
44 #include "proxies/gsoap_eml2_1H.h"
45 
46 #include "epc/Package.h"
47 
48 #if (defined(_WIN32) && _MSC_VER < 1600) || (defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)))
49 #include "tools/nullptr_emulation.h"
50 #endif
51 
52 #if defined(_WIN32) && defined(FESAPI_DLL)
53  #if defined(FesapiCpp_EXPORTS) || defined(FesapiCppUnderDev_EXPORTS)
54  #define DLL_IMPORT_OR_EXPORT __declspec(dllexport)
55  #else
56  #define DLL_IMPORT_OR_EXPORT __declspec(dllimport)
57  #endif
58 #else
59  #define DLL_IMPORT_OR_EXPORT
60 #endif
61 
62 namespace resqml2
63 {
64  class AbstractFeature;
65  class AbstractFeatureInterpretation;
66  class AbstractLocal3dCrs;
67  class AbstractRepresentation;
68  class Activity;
69  class ActivityTemplate;
70  class GridConnectionSetRepresentation;
71  class MdDatum;
72  class PropertyKind;
73  class SubRepresentation;
74  class TimeSeries;
75  class RepresentationSetRepresentation;
76 }
77 
78 namespace resqml2_0_1
79 {
80  class Activity;
81  class ActivityTemplate;
82  class PropertyKindMapper;
83  class LocalDepth3dCrs;
84  class LocalTime3dCrs;
85  class GeneticBoundaryFeature;
86  class GeobodyBoundaryInterpretation;
87  class GeobodyFeature;
88  class GeobodyInterpretation;
89  class Horizon;
90  class WellboreFeature;
91  class SeismicLineFeature;
92  class StratigraphicUnitFeature;
93  class PolylineSetRepresentation;
94  class PolylineRepresentation;
95  class TriangulatedSetRepresentation;
96  class Grid2dSetRepresentation;
97  class Grid2dRepresentation;
98  class WellboreTrajectoryRepresentation;
99  class DeviationSurveyRepresentation;
100  class AbstractIjkGridRepresentation;
101  class IjkGridExplicitRepresentation;
102  class IjkGridParametricRepresentation;
103  class IjkGridLatticeRepresentation;
104  class IjkGridNoGeometryRepresentation;
105  class UnstructuredGridRepresentation;
106  class BoundaryFeature;
107  class BoundaryFeatureInterpretation;
108  class TectonicBoundaryFeature;
109  class SeismicLatticeFeature;
110  class SeismicLineSetFeature;
111  class OrganizationFeature;
112  class GenericFeatureInterpretation;
113  class HorizonInterpretation;
114  class FaultInterpretation;
115  class WellboreInterpretation;
116  class EarthModelInterpretation;
117  class StructuralOrganizationInterpretation;
118  class StratigraphicUnitInterpretation;
119  class StratigraphicColumn;
120  class StratigraphicColumnRankInterpretation;
121  class PointSetRepresentation;
122  class WellboreFrameRepresentation;
123  class WellboreMarkerFrameRepresentation;
124  class NonSealedSurfaceFrameworkRepresentation;
125  class SealedSurfaceFrameworkRepresentation;
126  class StringTableLookup;
127  class CommentProperty;
128  class ContinuousProperty;
129  class ContinuousPropertySeries;
130  class DiscreteProperty;
131  class DiscretePropertySeries;
132  class CategoricalProperty;
133  class CategoricalPropertySeries;
134  class AbstractOrganizationInterpretation;
135  class AbstractGridRepresentation;
136  class OrganizationFeature;
137  class StratigraphicOccurrenceInterpretation;
138  class FrontierFeature;
139  class PlaneSetRepresentation;
140  class FluidBoundaryFeature;
141  class BlockedWellboreRepresentation;
142 }
143 
144 namespace witsml1_4_1_1
145 {
146  class AbstractObject;
147  class Well;
148  class CoordinateReferenceSystem;
149  class Trajectory;
150 }
151 
152 namespace prodml2_0
153 {
154  class DasAcquisition;
155  class FiberOpticalPath;
156  class DasInstrumentBox;
157  class HdfProxy;
158 }
159 
160 namespace common
161 {
162  class AbstractObject;
163  class AbstractHdfProxy;
164 
168  class DLL_IMPORT_OR_EXPORT EpcDocument
169  {
170  private :
175  std::string deserializeProdmlHdf5File();
176  public:
177 
178  enum openingMode { READ_ONLY = 0, READ_WRITE = 1, OVERWRITE = 2 };
179 
180  EpcDocument(const std::string & fileName, const openingMode & hdf5PermissionAccess = READ_ONLY);
181  EpcDocument(const std::string & fileName, const std::string & propertyKindMappingFilesDirectory, const openingMode & hdf5PermissionAccess = READ_ONLY);
182 
186  virtual ~EpcDocument() { close(); }
187 
188  // A function pointer definition which allows to build an abstract hdf proxy in writing mode of an epc document
189  typedef common::AbstractHdfProxy* (HdfProxyBuilder)(soap* soapContext, const std::string & guid, const std::string & title, const std::string & packageDirAbsolutePath, const std::string & externalFilePath, bool v21);
190  // A function pointer which allows to build a v2.0.1 abstract hdf proxy in reading mode of an epc document
191  typedef common::AbstractHdfProxy* (HdfProxyBuilderFromGsoapProxy2_0_1)(gsoap_resqml2_0_1::_eml20__EpcExternalPartReference* fromGsoap, const std::string & packageDirAbsolutePath, const std::string & externalFilePath);
192  // A function pointer which allows to build a v2.0.1 abstract hdf proxy in reading mode of an epc document
193  typedef prodml2_0::HdfProxy* (HdfProxyBuilderFromGsoapProxy2_1)(gsoap_eml2_1::_eml21__EpcExternalPartReference* fromGsoap, const std::string & packageDirAbsolutePath, const std::string & externalFilePath);
194 
195  // Allows a fesapi user to set a different builder of Hdf Proxy than the default one in writing mode of an epc document
196  // This is especially useful when the fesapi users wants to use its own builder for example.
197  void set_hdf_proxy_builder(HdfProxyBuilder builder);
198  void set_hdf_proxy_builder(HdfProxyBuilderFromGsoapProxy2_0_1 builder);
199  void set_hdf_proxy_builder(HdfProxyBuilderFromGsoapProxy2_1 builder);
200 
206  void open(const std::string & fileName, const openingMode & hdf5PermissionAccess = READ_ONLY);
207 
211  void close();
212 
213  const openingMode & getHdf5PermissionAccess() const;
214 
219  void setFilePath(const std::string & filePath);
220 
224  virtual void serialize(bool useZip64 = false);
225 
230  virtual std::string deserialize();
231 
235  soap* getGsoapContext() const;
236 
240  void addGsoapProxy(common::AbstractObject* proxy);
241 
245  void addGsoapProxy(witsml1_4_1_1::AbstractObject* proxy);
246 
251  resqml2_0_1::PropertyKindMapper* getPropertyKindMapper() const;
252 
257  std::string getEnergisticsPropertyKindName(const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind) const;
258 
263  gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind getEnergisticsPropertyKind(const std::string & energisticsPropertyKindName) const;
264 
269  std::string getEnergisticsUnitOfMeasureName(const gsoap_resqml2_0_1::resqml2__ResqmlUom & energisticsUom) const;
270 
275  gsoap_resqml2_0_1::resqml2__ResqmlUom getEnergisticsUnitOfMeasure(const std::string & energisticsUomName) const;
276 
281  std::string getFacet(const gsoap_resqml2_0_1::resqml2__Facet & facet) const;
282 
287  gsoap_resqml2_0_1::resqml2__Facet getFacet(const std::string & facet) const;
288 
293  std::string getWitsmlLengthUom(const gsoap_witsml1_4_1_1::witsml1__LengthUom & witsmlUom) const;
294 
299  std::string getWitsmlWellVerticalCoordinateUom(const gsoap_witsml1_4_1_1::witsml1__WellVerticalCoordinateUom & witsmlUom) const;
300 
305  std::string getWitsmlMeasuredDepthUom(const gsoap_witsml1_4_1_1::witsml1__MeasuredDepthUom & witsmlUom) const;
306 
311  std::string getWitsmlPlaneAngleUom(const gsoap_witsml1_4_1_1::witsml1__PlaneAngleUom & witsmlUom) const;
312 
316 #if (defined(_WIN32) && _MSC_VER >= 1600) || defined(__APPLE__)
317  const std::unordered_map< std::string, common::AbstractObject* > & getResqmlAbstractObjectSet() const;
318 #else
319  const std::tr1::unordered_map< std::string, common::AbstractObject* > & getResqmlAbstractObjectSet() const;
320 #endif
321 
325  common::AbstractObject* getResqmlAbstractObjectByUuid(const std::string & uuid, int & gsoapType) const;
326 
330  common::AbstractObject* getResqmlAbstractObjectByUuid(const std::string & uuid) const;
331 
336  template <class valueType>
337  valueType* getResqmlAbstractObjectByUuid(const std::string & uuid) const
338  {
339  common::AbstractObject* const result = getResqmlAbstractObjectByUuid(uuid);
340 
341  if (result == nullptr) {
342  return nullptr;
343  }
344 
345  if (dynamic_cast<valueType*>(result) != nullptr) {
346  return static_cast<valueType*>(result);
347  }
348 
349  throw std::invalid_argument("The uuid " + uuid + " does not resolve to the expected datatype");
350  }
351 
352  witsml1_4_1_1::AbstractObject* getWitsmlAbstractObjectByUuid(const std::string & uuid) const;
353 
354  std::vector<prodml2_0::DasAcquisition*> getDasAcquisitionSet() const;
355 
359  const std::vector<resqml2_0_1::LocalDepth3dCrs*> & getLocalDepth3dCrsSet() const;
360 
364  const std::vector<resqml2_0_1::LocalTime3dCrs*> & getLocalTime3dCrsSet() const;
365 
369  const std::vector<resqml2_0_1::StratigraphicColumn*> & getStratigraphicColumnSet() const;
370 
374  const std::vector<resqml2_0_1::TectonicBoundaryFeature*> & getFaultSet() const;
375 
379  const std::vector<resqml2_0_1::TectonicBoundaryFeature*> & getFractureSet() const;
380 
384  std::vector<resqml2_0_1::PolylineSetRepresentation*> getFaultPolylineSetRepSet() const;
385 
389  std::vector<resqml2_0_1::PolylineSetRepresentation*> getFracturePolylineSetRepSet() const;
390 
394  std::vector<resqml2_0_1::PolylineSetRepresentation*> getFrontierPolylineSetRepSet() const;
395 
399  std::vector<resqml2_0_1::TriangulatedSetRepresentation*> getFaultTriangulatedSetRepSet() const;
400 
404  std::vector<resqml2_0_1::TriangulatedSetRepresentation*> getFractureTriangulatedSetRepSet() const;
405 
409  std::vector<resqml2_0_1::Horizon*> getHorizonSet() const;
410 
414  std::vector<resqml2_0_1::GeneticBoundaryFeature*> getGeobodyBoundarySet() const;
415  unsigned int getGeobodyBoundaryCount() const;
416  resqml2_0_1::GeneticBoundaryFeature* getGeobodyBoundary(unsigned int index) const;
417 
421  const std::vector<resqml2_0_1::GeobodyFeature*> & getGeobodySet() const;
422 
426  std::vector<resqml2_0_1::Grid2dSetRepresentation*> getHorizonGrid2dSetRepSet() const;
427 
431  std::vector<resqml2_0_1::Grid2dRepresentation*> getHorizonGrid2dRepSet() const;
432 
436  std::vector<resqml2_0_1::PolylineRepresentation*> getHorizonPolylineRepSet() const;
437 
441  std::vector<resqml2_0_1::PolylineSetRepresentation*> getHorizonPolylineSetRepSet() const;
442 
446  std::vector<resqml2_0_1::TriangulatedSetRepresentation*> getHorizonTriangulatedSetRepSet() const;
447 
451  const std::vector<resqml2_0_1::TriangulatedSetRepresentation*> & getAllTriangulatedSetRepSet() const;
452 
456  std::vector<resqml2_0_1::TriangulatedSetRepresentation*> getUnclassifiedTriangulatedSetRepSet() const;
457 
461  const std::vector<resqml2_0_1::SeismicLineFeature*> & getSeismicLineSet() const;
462 
466  const std::vector<resqml2_0_1::WellboreFeature*> & getWellboreSet() const;
467 
471  std::vector<resqml2_0_1::WellboreTrajectoryRepresentation*> getWellboreTrajectoryRepresentationSet() const;
472 
476  std::vector<resqml2_0_1::DeviationSurveyRepresentation*> getDeviationSurveyRepresentationSet() const;
477 
481  const std::vector<resqml2::RepresentationSetRepresentation*> & getRepresentationSetRepresentationSet() const;
482 
486  unsigned int getRepresentationSetRepresentationCount() const;
487 
491  resqml2::RepresentationSetRepresentation* getRepresentationSetRepresentation(const unsigned int & index) const;
492 
496  std::vector<resqml2_0_1::PolylineRepresentation*> getPolylineRepresentationSet() const;
497 
501  std::vector<resqml2_0_1::PolylineRepresentation*> getSeismicLinePolylineRepSet() const;
502 
506  const std::vector<resqml2_0_1::AbstractIjkGridRepresentation*> & getIjkGridRepresentationSet() const;
507  unsigned int getIjkGridRepresentationCount() const;
508  resqml2_0_1::AbstractIjkGridRepresentation* getIjkGridRepresentation(const unsigned int & i) const;
509 
513  std::vector<resqml2_0_1::IjkGridParametricRepresentation*> getIjkGridParametricRepresentationSet() const;
514 
518  std::vector<resqml2_0_1::IjkGridExplicitRepresentation*> getIjkGridExplicitRepresentationSet() const;
519 
523  std::vector<resqml2_0_1::IjkGridLatticeRepresentation*> getIjkSeismicCubeGridRepresentationSet() const;
524 
528  const std::vector<resqml2_0_1::UnstructuredGridRepresentation*> & getUnstructuredGridRepresentationSet() const;
529 
533  const std::vector<resqml2_0_1::FrontierFeature*> & getFrontierSet() const;
534 
538  const std::vector<resqml2_0_1::OrganizationFeature*> & getOrganizationSet() const;
539 
543  const std::vector<resqml2::TimeSeries*> & getTimeSeriesSet() const;
544 
548  const std::vector<resqml2::SubRepresentation*> & getSubRepresentationSet() const;
549  unsigned int getSubRepresentationCount() const;
550  resqml2::SubRepresentation* getSubRepresentation(const unsigned int & index) const;
551 
555  const std::vector<resqml2_0_1::PointSetRepresentation*> & getPointSetRepresentationSet() const;
556  unsigned int getPointSetRepresentationCount() const;
557  resqml2_0_1::PointSetRepresentation* getPointSetRepresentation(const unsigned int & index) const;
558 
562  const std::vector<common::AbstractHdfProxy*> & getHdfProxySet() const;
563  unsigned int getHdfProxyCount() const;
564  common::AbstractHdfProxy* getHdfProxy(const unsigned int & index) const;
565 
569  std::string getStorageDirectory() const;
570 
574  std::string getName() const;
575 
579  void updateAllRelationships();
580 
581 #if (defined(_WIN32) && _MSC_VER >= 1600) || defined(__APPLE__)
582  std::unordered_map< std::string, std::string > & getExtendedCoreProperty();
583 #else
584  std::tr1::unordered_map< std::string, std::string > & getExtendedCoreProperty();
585 #endif
586 
587  void setExtendedCoreProperty(const std::string & key, const std::string & value);
588 
593  std::string getExtendedCoreProperty(const std::string & key);
594 
598  common::AbstractObject* createPartial(gsoap_resqml2_0_1::eml20__DataObjectReference* dor);
599 
603  template <class valueType>
604  valueType* createPartial(const std::string & guid, const std::string & title)
605  {
606  gsoap_resqml2_0_1::eml20__DataObjectReference* dor = gsoap_resqml2_0_1::soap_new_eml20__DataObjectReference(s, 1);
607  dor->UUID = guid;
608  dor->Title = title;
609  valueType* result = new valueType(dor);
610  addFesapiWrapperAndDeleteItIfException(result);
611  return result;
612  }
613 
614  //************************************
615  //************ HDF *******************
616  //************************************
617 
618  virtual common::AbstractHdfProxy* createHdfProxy(const std::string & guid, const std::string & title, const std::string & packageDirAbsolutePath, const std::string & externalFilePath, bool v21 = false);
619 
620  //************************************
621  //************ CRS *******************
622  //************************************
623 
638  resqml2_0_1::LocalDepth3dCrs* createLocalDepth3dCrs(const std::string & guid, const std::string & title,
639  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
640  const double & arealRotation,
641  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
642  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
643 
658  resqml2_0_1::LocalDepth3dCrs* createLocalDepth3dCrs(const std::string & guid, const std::string & title,
659  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
660  const double & arealRotation,
661  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const std::string & projectedUnknownReason,
662  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
663 
678  resqml2_0_1::LocalDepth3dCrs* createLocalDepth3dCrs(const std::string & guid, const std::string & title,
679  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
680  const double & arealRotation,
681  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
682  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
683 
698  resqml2_0_1::LocalDepth3dCrs* createLocalDepth3dCrs(const std::string & guid, const std::string & title,
699  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
700  const double & arealRotation,
701  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const std::string & projectedUnknownReason,
702  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
703 
719  resqml2_0_1::LocalTime3dCrs* createLocalTime3dCrs(const std::string & guid, const std::string & title,
720  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
721  const double & arealRotation,
722  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
723  const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
724  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
725 
741  resqml2_0_1::LocalTime3dCrs* createLocalTime3dCrs(const std::string & guid, const std::string & title,
742  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
743  const double & arealRotation,
744  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const std::string & projectedUnknownReason,
745  const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
746  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
747 
763  resqml2_0_1::LocalTime3dCrs* createLocalTime3dCrs(const std::string & guid, const std::string & title,
764  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
765  const double & arealRotation,
766  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
767  const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
768  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
769 
785  resqml2_0_1::LocalTime3dCrs* createLocalTime3dCrs(const std::string & guid, const std::string & title,
786  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
787  const double & arealRotation,
788  const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const std::string & projectedUnknownReason,
789  const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
790  const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
791 
792  resqml2::MdDatum* createMdDatum(const std::string & guid, const std::string & title,
793  resqml2::AbstractLocal3dCrs * locCrs, const gsoap_resqml2_0_1::resqml2__MdReference & originKind,
794  const double & referenceLocationOrdinal1, const double & referenceLocationOrdinal2, const double & referenceLocationOrdinal3);
795 
796  //************************************
797  //************ FEATURE ***************
798  //************************************
799 
800  resqml2_0_1::BoundaryFeature* createBoundaryFeature(const std::string & guid, const std::string & title);
801 
802  resqml2_0_1::Horizon* createHorizon(const std::string & guid, const std::string & title);
803 
804  resqml2_0_1::GeneticBoundaryFeature* createGeobodyBoundaryFeature(const std::string & guid, const std::string & title);
805 
806  resqml2_0_1::GeobodyFeature* createGeobodyFeature(const std::string & guid, const std::string & title);
807 
808  resqml2_0_1::TectonicBoundaryFeature* createFault(const std::string & guid, const std::string & title);
809 
810  resqml2_0_1::TectonicBoundaryFeature* createFracture(const std::string & guid, const std::string & title);
811 
812  resqml2_0_1::WellboreFeature* createWellboreFeature(const std::string & guid, const std::string & title);
813 
814  resqml2_0_1::SeismicLatticeFeature* createSeismicLattice(const std::string & guid, const std::string & title,
815  const int & inlineIncrement, const int & crosslineIncrement,
816  const unsigned int & originInline, const unsigned int & originCrossline,
817  const unsigned int & inlineCount, const unsigned int & crosslineCount);
818 
819  resqml2_0_1::SeismicLineFeature* createSeismicLine(const std::string & guid, const std::string & title,
820  const int & traceIndexIncrement, const unsigned int & firstTraceIndex, const unsigned int & traceCount);
821 
822  resqml2_0_1::SeismicLineSetFeature* createSeismicLineSet(const std::string & guid, const std::string & title);
823 
824  resqml2_0_1::FrontierFeature* createFrontier(const std::string & guid, const std::string & title);
825 
826  resqml2_0_1::StratigraphicUnitFeature* createStratigraphicUnit(const std::string & guid, const std::string & title);
827 
828  resqml2_0_1::OrganizationFeature* createStructuralModel(const std::string & guid, const std::string & title);
829 
830  resqml2_0_1::OrganizationFeature* createStratigraphicModel(const std::string & guid, const std::string & title);
831 
832  resqml2_0_1::OrganizationFeature* createEarthModel(const std::string & guid, const std::string & title);
833 
834  resqml2_0_1::FluidBoundaryFeature* createFluidBoundaryFeature(const std::string & guid, const std::string & title, const gsoap_resqml2_0_1::resqml2__FluidContact & fluidContact);
835 
836  //************************************
837  //************ INTERPRETATION ********
838  //************************************
839 
840  resqml2_0_1::GenericFeatureInterpretation* createGenericFeatureInterpretation(resqml2::AbstractFeature * feature, const std::string & guid, const std::string & title);
841 
842  resqml2_0_1::BoundaryFeatureInterpretation* createBoundaryFeatureInterpretation(resqml2_0_1::BoundaryFeature * feature, const std::string & guid, const std::string & title);
843 
844  resqml2_0_1::HorizonInterpretation* createPartialHorizonInterpretation(const std::string & guid, const std::string & title);
845 
846  resqml2_0_1::HorizonInterpretation* createHorizonInterpretation(resqml2_0_1::Horizon * horizon, const std::string & guid, const std::string & title);
847 
848  resqml2_0_1::GeobodyBoundaryInterpretation* createGeobodyBoundaryInterpretation(resqml2_0_1::GeneticBoundaryFeature * geobodyBoundary, const std::string & guid, const std::string & title);
849 
850  resqml2_0_1::FaultInterpretation* createFaultInterpretation(resqml2_0_1::TectonicBoundaryFeature * fault, const std::string & guid, const std::string & title);
851 
852  resqml2_0_1::WellboreInterpretation* createWellboreInterpretation(resqml2_0_1::WellboreFeature * wellbore, const std::string & guid, const std::string & title, bool isDrilled);
853 
854  resqml2_0_1::EarthModelInterpretation* createEarthModelInterpretation(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
855 
856  resqml2_0_1::StructuralOrganizationInterpretation* createStructuralOrganizationInterpretationInAge(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
857  resqml2_0_1::StructuralOrganizationInterpretation* createStructuralOrganizationInterpretationInApparentDepth(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
858  resqml2_0_1::StructuralOrganizationInterpretation* createStructuralOrganizationInterpretationInMeasuredDepth(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
859 
860  resqml2_0_1::GeobodyInterpretation* createGeobodyInterpretation(resqml2_0_1::GeobodyFeature * geobody, const std::string & guid, const std::string & title);
861 
862  resqml2_0_1::StratigraphicUnitInterpretation* createStratigraphicUnitInterpretation(resqml2_0_1::StratigraphicUnitFeature * stratiUnitFeature, const std::string & guid, const std::string & title);
863  resqml2_0_1::StratigraphicColumn* createStratigraphicColumn(const std::string & guid, const std::string & title);
864  resqml2_0_1::StratigraphicColumnRankInterpretation* createStratigraphicColumnRankInterpretationInAge(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title, const unsigned long & rank);
865  resqml2_0_1::StratigraphicColumnRankInterpretation* createStratigraphicColumnRankInterpretationInApparentDepth(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title, const unsigned long & rank);
866  resqml2_0_1::StratigraphicOccurrenceInterpretation* createStratigraphicOccurrenceInterpretationInAge(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
867  resqml2_0_1::StratigraphicOccurrenceInterpretation* createStratigraphicOccurrenceInterpretationInApparentDepth(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
868 
869  //************************************
870  //************ REPRESENTATION ********
871  //************************************
872 
874  const std::string & guid, const std::string & title);
875 
876  resqml2_0_1::PolylineSetRepresentation* createPolylineSetRepresentation(resqml2::AbstractLocal3dCrs * crs,
877  const std::string & guid, const std::string & title);
878 
880  const std::string & guid, const std::string & title);
881 
883  const std::string & guid, const std::string & title, const gsoap_resqml2_0_1::resqml2__LineRole & roleKind);
884 
886  const std::string & guid, const std::string & title);
887 
889  const std::string & guid, const std::string & title);
890 
891  resqml2_0_1::PolylineRepresentation* createPolylineRepresentation(resqml2::AbstractLocal3dCrs * crs,
892  const std::string & guid, const std::string & title, bool isClosed = false);
893 
895  const std::string & guid, const std::string & title, bool isClosed = false);
896 
898  const std::string & guid, const std::string & title, const gsoap_resqml2_0_1::resqml2__LineRole & roleKind, bool isClosed = false);
899 
901  const std::string & guid, const std::string & title);
902 
903  resqml2_0_1::WellboreTrajectoryRepresentation* createWellboreTrajectoryRepresentation(resqml2_0_1::WellboreInterpretation* interp, const std::string & guid, const std::string & title, resqml2::MdDatum * mdInfo);
904  resqml2_0_1::WellboreTrajectoryRepresentation* createWellboreTrajectoryRepresentation(resqml2_0_1::WellboreInterpretation* interp, const std::string & guid, const std::string & title, resqml2_0_1::DeviationSurveyRepresentation* deviationSurvey);
905 
906  resqml2_0_1::DeviationSurveyRepresentation* createDeviationSurveyRepresentation(resqml2_0_1::WellboreInterpretation* interp, const std::string & guid, const std::string & title, const bool & isFinal, resqml2::MdDatum * mdInfo);
907 
908  resqml2_0_1::WellboreFrameRepresentation* createWellboreFrameRepresentation(resqml2_0_1::WellboreInterpretation* interp, const std::string & guid, const std::string & title, resqml2_0_1::WellboreTrajectoryRepresentation * traj);
909 
910  resqml2_0_1::WellboreMarkerFrameRepresentation* createWellboreMarkerFrameRepresentation(resqml2_0_1::WellboreInterpretation* interp, const std::string & guid, const std::string & title, resqml2_0_1::WellboreTrajectoryRepresentation * traj);
911 
912  resqml2_0_1::BlockedWellboreRepresentation* createBlockedWellboreRepresentation(resqml2_0_1::WellboreInterpretation* interp,
913  const std::string & guid, const std::string & title, resqml2_0_1::WellboreTrajectoryRepresentation * traj);
914 
915  resqml2::RepresentationSetRepresentation* createRepresentationSetRepresentation(
917  const std::string & guid,
918  const std::string & title);
919 
920  resqml2::RepresentationSetRepresentation* createRepresentationSetRepresentation(
921  const std::string & guid,
922  const std::string & title);
923 
924  resqml2::RepresentationSetRepresentation* createPartialRepresentationSetRepresentation(const std::string & guid, const std::string & title);
925 
926  resqml2_0_1::NonSealedSurfaceFrameworkRepresentation* createNonSealedSurfaceFrameworkRepresentation(
928  const std::string & guid,
929  const std::string & title,
930  const bool & isSealed);
931 
932  resqml2_0_1::SealedSurfaceFrameworkRepresentation* createSealedSurfaceFrameworkRepresentation(
934  const std::string & guid,
935  const std::string & title);
936 
937  resqml2_0_1::AbstractIjkGridRepresentation* createPartialIjkGridRepresentation(const std::string & guid, const std::string & title);
938 
939  resqml2_0_1::AbstractIjkGridRepresentation* createPartialTruncatedIjkGridRepresentation(const std::string & guid, const std::string & title);
940 
941  resqml2_0_1::IjkGridExplicitRepresentation* createIjkGridExplicitRepresentation(resqml2::AbstractLocal3dCrs * crs,
942  const std::string & guid, const std::string & title,
943  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
944 
946  const std::string & guid, const std::string & title,
947  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
948 
949  resqml2_0_1::IjkGridParametricRepresentation* createIjkGridParametricRepresentation(resqml2::AbstractLocal3dCrs * crs,
950  const std::string & guid, const std::string & title,
951  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
952 
954  const std::string & guid, const std::string & title,
955  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
956 
957  resqml2_0_1::IjkGridLatticeRepresentation* createIjkGridLatticeRepresentation(resqml2::AbstractLocal3dCrs * crs,
958  const std::string & guid, const std::string & title,
959  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
960 
962  const std::string & guid, const std::string & title,
963  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
964 
965  resqml2_0_1::IjkGridNoGeometryRepresentation* createIjkGridNoGeometryRepresentation(
966  const std::string & guid, const std::string & title,
967  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
968 
969  resqml2_0_1::IjkGridNoGeometryRepresentation* createIjkGridNoGeometryRepresentation(resqml2::AbstractFeatureInterpretation* interp,
970  const std::string & guid, const std::string & title,
971  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
972 
973  resqml2_0_1::UnstructuredGridRepresentation* createPartialUnstructuredGridRepresentation(const std::string & guid, const std::string & title);
974 
975  resqml2_0_1::UnstructuredGridRepresentation* createUnstructuredGridRepresentation(resqml2::AbstractLocal3dCrs * crs,
976  const std::string & guid, const std::string & title,
977  const ULONG64 & cellCount);
978 
979  resqml2::SubRepresentation* createPartialSubRepresentation(const std::string & guid, const std::string & title);
980 
981  resqml2::SubRepresentation* createSubRepresentation(
982  const std::string & guid, const std::string & title);
983 
985  const std::string & guid, const std::string & title);
986 
987  resqml2::GridConnectionSetRepresentation* createPartialGridConnectionSetRepresentation(const std::string & guid, const std::string & title);
988 
989  resqml2::GridConnectionSetRepresentation* createGridConnectionSetRepresentation(const std::string & guid, const std::string & title);
990 
991  resqml2::GridConnectionSetRepresentation* createGridConnectionSetRepresentation(resqml2::AbstractFeatureInterpretation* interp,
992  const std::string & guid, const std::string & title);
993 
994  //************************************
995  //************* PROPERTIES ***********
996  //************************************
997 
998  resqml2::TimeSeries* createTimeSeries(const std::string & guid, const std::string & title);
999 
1000  resqml2::TimeSeries* createPartialTimeSeries(const std::string & guid, const std::string & title);
1001 
1002  resqml2_0_1::StringTableLookup* createStringTableLookup(const std::string & guid, const std::string & title);
1003 
1004  resqml2::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
1005  const std::string & namingSystem, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & parentEnergisticsPropertyKind);
1006 
1007  resqml2::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
1008  const std::string & namingSystem, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, resqml2::PropertyKind * parentPropType);
1009 
1010  resqml2::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
1011  const std::string & namingSystem, const std::string & nonStandardUom, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & parentEnergisticsPropertyKind);
1012 
1013  resqml2::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
1014  const std::string & namingSystem, const std::string & nonStandardUom, resqml2::PropertyKind * parentPropType);
1015 
1016  resqml2::PropertyKind* createPartialPropertyKind(const std::string & guid, const std::string & title);
1017 
1018  resqml2_0_1::CommentProperty* createCommentProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1019  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
1020 
1021  resqml2_0_1::CommentProperty* createCommentProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1022  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, resqml2::PropertyKind * localPropType);
1023 
1024  resqml2_0_1::ContinuousProperty* createContinuousProperty(resqml2::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, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
1026 
1027  resqml2_0_1::ContinuousProperty* createContinuousProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1028  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, resqml2::PropertyKind * localPropType);
1029 
1030  resqml2_0_1::ContinuousProperty* createContinuousProperty(resqml2::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, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
1032 
1033  resqml2_0_1::ContinuousProperty* createContinuousProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1034  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const std::string & nonStandardUom, resqml2::PropertyKind * localPropType);
1035 
1036  resqml2_0_1::ContinuousPropertySeries* createContinuousPropertySeries(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1037  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,
1038  resqml2::TimeSeries * ts, const bool & useInterval = false);
1039 
1040  resqml2_0_1::ContinuousPropertySeries* createContinuousPropertySeries(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1041  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, resqml2::PropertyKind * localPropType,
1042  resqml2::TimeSeries * ts, const bool & useInterval = false);
1043 
1044  resqml2_0_1::DiscreteProperty* createDiscreteProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1045  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
1046 
1047  resqml2_0_1::DiscreteProperty* createDiscreteProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1048  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, resqml2::PropertyKind * localPropType);
1049 
1050  resqml2_0_1::DiscretePropertySeries* createDiscretePropertySeries(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1051  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind,
1052  resqml2::TimeSeries * ts, const bool & useInterval = false);
1053 
1054  resqml2_0_1::DiscretePropertySeries* createDiscretePropertySeries(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1055  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, resqml2::PropertyKind * localPropType,
1056  resqml2::TimeSeries * ts, const bool & useInterval = false);
1057 
1058  resqml2_0_1::CategoricalProperty* createCategoricalProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1059  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind,
1060  resqml2_0_1::StringTableLookup* strLookup, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
1061 
1062  resqml2_0_1::CategoricalProperty* createCategoricalProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1063  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind,
1064  resqml2_0_1::StringTableLookup* strLookup, resqml2::PropertyKind * localPropType);
1065 
1066  resqml2_0_1::CategoricalPropertySeries* createCategoricalPropertySeries(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1067  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind,
1068  resqml2_0_1::StringTableLookup* strLookup, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind,
1069  resqml2::TimeSeries * ts, const bool & useInterval = false);
1070 
1071  resqml2_0_1::CategoricalPropertySeries* createCategoricalPropertySeries(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1072  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind,
1073  resqml2_0_1::StringTableLookup* strLookup, resqml2::PropertyKind * localPropType,
1074  resqml2::TimeSeries * ts, const bool & useInterval = false);
1075 
1076  //************************************
1077  //************* ACTIVITIES ***********
1078  //************************************
1079 
1080  resqml2::ActivityTemplate* createActivityTemplate(const std::string & guid, const std::string & title);
1081 
1082  resqml2::Activity* createActivity(resqml2::ActivityTemplate* activityTemplate, const std::string & guid, const std::string & title);
1083 
1084  //************************************
1085  //*************** WITSML *************
1086  //************************************
1087 
1091  std::vector<witsml1_4_1_1::Trajectory*> getWitsmlTrajectorySet() const;
1092 
1093  witsml1_4_1_1::Well* createWell(
1094  const std::string & guid,
1095  const std::string & title,
1096  const std::string & timeZone);
1097 
1098  witsml1_4_1_1::Well* createWell(
1099  const std::string & guid,
1100  const std::string & title,
1101  const std::string & timeZone,
1102  const std::string & operator_,
1103  gsoap_witsml1_4_1_1::witsml1__WellStatus statusWell,
1104  gsoap_witsml1_4_1_1::witsml1__WellPurpose purposeWell,
1105  gsoap_witsml1_4_1_1::witsml1__WellFluid fluidWell,
1106  gsoap_witsml1_4_1_1::witsml1__WellDirection directionWell,
1107  const time_t & dTimSpud,
1108  const std::string & sourceName,
1109  const time_t & dTimCreation,
1110  const time_t & dTimLastChange,
1111  const std::string & comments
1112  );
1113 
1114  witsml1_4_1_1::CoordinateReferenceSystem* createCoordinateReferenceSystem(
1115  const std::string & guid,
1116  const std::string & title,
1117  const std::string & namingSystem,
1118  const std::string & code,
1119  const std::string & sourceName,
1120  const time_t & dTimCreation,
1121  const time_t & dTimLastChange,
1122  const std::string & comments);
1123 
1124  //************************************
1125  //************ PRODML ****************
1126  //************************************
1127 
1128  prodml2_0::DasAcquisition* createDasAcquisition(prodml2_0::FiberOpticalPath* fiberOpticalPath, prodml2_0::DasInstrumentBox* dasInstrumentBox,
1129  const std::string & guid, const std::string & title,
1130  const std::string & jobGuid, const std::string & facilityId, const std::string & vendorName,
1131  const double & pulseRate, const gsoap_eml2_1::eml21__FrequencyUom & pulseRateUom,
1132  const double & pulseWidth, const gsoap_eml2_1::eml21__TimeUom & pulseWidthUom,
1133  const double & gaugeLength, const gsoap_eml2_1::eml21__LengthUom & gaugeLengthUom,
1134  const double & spatialSamplingInterval, const gsoap_eml2_1::eml21__LengthUom & spatialSamplingIntervalUom,
1135  const double & minimumFrequency, const gsoap_eml2_1::eml21__FrequencyUom & minimumFrequencyUom,
1136  const double & maximumFrequency, const gsoap_eml2_1::eml21__FrequencyUom & maximumFrequencyUom,
1137  const ULONG64 & lociCount, const ULONG64 & startLocusIndex,
1138  const std::string & measurementStartIsoTime, bool triggeredMeasurement);
1139 
1140  prodml2_0::FiberOpticalPath* createFiberOpticalPath(const std::string & guid, const std::string & title,
1141  const std::string & firstSegmentUid, const double & firstSegmentLength, const gsoap_eml2_1::eml21__LengthUom & firstSegmentLengthUom,
1142  const std::string & terminatorUid, const gsoap_eml2_1::prodml2__TerminationType & terminationType);
1143 
1144  prodml2_0::DasInstrumentBox* createDasInstrumentBox(const std::string & guid, const std::string & title,
1145  const std::string & firmwareVersion, const std::string & instrumentName);
1146 
1147  //************************************
1148  //************* WARNINGS *************
1149  //************************************
1150 
1151  void addWarning(const std::string & warning);
1152  const std::vector<std::string> & getWarnings() const;
1153 
1154  protected:
1158  int getGsoapErrorCode() const;
1159 
1163  std::string getGsoapErrorMessage() const;
1164 
1168  void setGsoapStream(std::istream * inputStream);
1169 
1173  void addFesapiWrapperAndDeleteItIfException(common::AbstractObject* proxy);
1174 
1178  void addFesapiWrapperAndDeleteItIfException(witsml1_4_1_1::AbstractObject* proxy);
1179 
1185  common::AbstractObject* getResqml2_0_1WrapperFromGsoapContext(const std::string & resqmlContentType);
1186 
1191  gsoap_resqml2_0_1::_eml20__EpcExternalPartReference* getEpcExternalPartReference_2_0_GsoapProxyFromGsoapContext();
1192 
1193  gsoap_eml2_1::_eml21__EpcExternalPartReference* getEpcExternalPartReference_2_1_GsoapProxyFromGsoapContext();
1194 
1195  private :
1196  static const char * DOCUMENT_EXTENSION;
1197 
1198  openingMode hdf5PermissionAccess;
1199 
1200  epc::Package* package;
1201 #if (defined(_WIN32) && _MSC_VER >= 1600) || defined(__APPLE__)
1202  std::unordered_map< std::string, common::AbstractObject* > resqmlAbstractObjectSet;
1203 #else
1204  std::tr1::unordered_map< std::string, common::AbstractObject* > resqmlAbstractObjectSet;
1205 #endif
1206 #if (defined(_WIN32) && _MSC_VER >= 1600) || defined(__APPLE__)
1207  std::unordered_map< std::string, witsml1_4_1_1::AbstractObject* > witsmlAbstractObjectSet;
1208 #else
1209  std::tr1::unordered_map< std::string, witsml1_4_1_1::AbstractObject* > witsmlAbstractObjectSet;
1210 #endif
1211  soap* s;
1212  std::string filePath;
1213 
1214  // Better for performance reason to have set of important objects instead of having a global vector of GsoapWrapper
1215  // Even if redundant with resqmlAbstractObjectSet
1216  std::vector<resqml2_0_1::LocalDepth3dCrs*> localDepth3dCrsSet;
1217  std::vector<resqml2_0_1::LocalTime3dCrs*> localTime3dCrsSet;
1218  std::vector<resqml2_0_1::TectonicBoundaryFeature*> faultSet;
1219  std::vector<resqml2_0_1::TectonicBoundaryFeature*> fractureSet;
1220  std::vector<resqml2_0_1::GeneticBoundaryFeature*> geneticBoundarySet;
1221  std::vector<resqml2_0_1::GeobodyFeature*> geobodySet;
1222  std::vector<resqml2_0_1::SeismicLineFeature*> seismicLineSet;
1223  std::vector<common::AbstractHdfProxy*> hdfProxySet;
1224  std::vector<resqml2_0_1::WellboreFeature*> wellboreSet;
1225  std::vector<resqml2::RepresentationSetRepresentation*> representationSetRepresentationSet;
1226  std::vector<witsml1_4_1_1::Trajectory*> witsmlTrajectorySet;
1227  std::vector<resqml2_0_1::TriangulatedSetRepresentation*> triangulatedSetRepresentationSet;
1228  std::vector<resqml2_0_1::PolylineRepresentation*> polylineRepresentationSet;
1229  std::vector<resqml2_0_1::AbstractIjkGridRepresentation*> ijkGridRepresentationSet;
1230  std::vector<resqml2_0_1::UnstructuredGridRepresentation*> unstructuredGridRepresentationSet;
1231  std::vector<resqml2_0_1::StratigraphicColumn*> stratigraphicColumnSet;
1232  std::vector<resqml2_0_1::FrontierFeature*> frontierSet;
1233  std::vector<resqml2_0_1::OrganizationFeature*> organizationSet;
1234  std::vector<resqml2::TimeSeries*> timeSeriesSet;
1235  std::vector<resqml2::SubRepresentation*> subRepresentationSet;
1236  std::vector<resqml2_0_1::PointSetRepresentation*> pointSetRepresentationSet;
1237 
1238  resqml2_0_1::PropertyKindMapper* propertyKindMapper;
1239 
1240  std::vector<std::string> warnings;
1241 
1242  HdfProxyBuilder* make_hdf_proxy;
1243  HdfProxyBuilderFromGsoapProxy2_0_1* make_hdf_proxy_from_gsoap_proxy_2_0_1;
1244  HdfProxyBuilderFromGsoapProxy2_1* make_hdf_proxy_from_gsoap_proxy_2_1;
1245  };
1246 }
1247 
1248 
Definition: EpcDocument.h:144
Definition: PlaneSetRepresentation.h:40
Definition: DasInstrumentBox.h:40
Definition: EpcDocument.h:152
Definition: SeismicLatticeFeature.h:40
Definition: FluidBoundaryFeature.h:40
Definition: WellboreInterpretation.h:40
Definition: AbstractFeature.h:42
Definition: DeviationSurveyRepresentation.h:47
Definition: AbstractIjkGridRepresentation.h:46
Definition: ContinuousPropertySeries.h:44
valueType * getResqmlAbstractObjectByUuid(const std::string &uuid) const
Definition: EpcDocument.h:337
Definition: GeobodyInterpretation.h:40
Definition: HdfProxy.h:40
Definition: LocalTime3dCrs.h:40
Definition: ActivityTemplate.h:40
Definition: IjkGridExplicitRepresentation.h:40
Definition: AbstractObject.h:43
Definition: OrganizationFeature.h:40
Definition: DasAcquisition.h:45
Definition: StratigraphicUnitInterpretation.h:40
Definition: StratigraphicOccurrenceInterpretation.h:45
Definition: AbstractLocal3dCrs.h:40
Definition: PropertyKind.h:40
Definition: ContinuousProperty.h:44
Definition: LocalDepth3dCrs.h:40
Definition: TectonicBoundaryFeature.h:40
Definition: DiscretePropertySeries.h:40
Definition: AbstractOrganizationInterpretation.h:43
Definition: CommentProperty.h:40
Definition: BoundaryFeature.h:40
Definition: CategoricalProperty.h:40
Definition: CategoricalPropertySeries.h:44
Definition: PolylineSetRepresentation.h:40
Definition: FrontierFeature.h:40
Definition: SeismicLineFeature.h:40
Definition: StringTableLookup.h:40
Definition: Grid2dRepresentation.h:40
Definition: PropertyKindMapper.h:46
Definition: Horizon.h:40
valueType * createPartial(const std::string &guid, const std::string &title)
Definition: EpcDocument.h:604
Definition: WellboreMarkerFrameRepresentation.h:45
Definition: PolylineRepresentation.h:40
Definition: EpcDocument.h:78
Definition: GeobodyBoundaryInterpretation.h:42
Definition: Well.h:40
Definition: EpcDocument.h:168
Definition: UnstructuredGridRepresentation.h:40
Definition: AbstractObject.h:42
Definition: WellboreTrajectoryRepresentation.h:45
Definition: IjkGridParametricRepresentation.h:42
Definition: StratigraphicUnitFeature.h:40
Definition: FaultInterpretation.h:41
Definition: IjkGridLatticeRepresentation.h:40
Definition: SealedSurfaceFrameworkRepresentation.h:44
Definition: GeneticBoundaryFeature.h:40
Definition: TriangulatedSetRepresentation.h:44
Definition: StructuralOrganizationInterpretation.h:41
Definition: Package.h:53
Definition: AbstractRepresentation.h:44
Definition: GridConnectionSetRepresentation.h:40
Definition: GeobodyFeature.h:40
Definition: AbstractHdfProxy.h:43
Definition: WellboreFeature.h:45
Definition: WellboreFrameRepresentation.h:46
Definition: Activity.h:40
Definition: IjkGridNoGeometryRepresentation.h:40
Definition: BlockedWellboreRepresentation.h:45
Definition: GenericFeatureInterpretation.h:40
Definition: MdDatum.h:46
Definition: TimeSeries.h:40
Definition: HorizonInterpretation.h:42
Definition: FiberOpticalPath.h:40
Definition: CoordinateReferenceSystem.h:40
Definition: EpcDocument.h:62
Definition: PointSetRepresentation.h:40
Definition: SubRepresentation.h:40
Definition: AbstractHdfProxy.h:45
Definition: StratigraphicColumn.h:43
Definition: RepresentationSetRepresentation.h:40
Definition: EarthModelInterpretation.h:43
Definition: NonSealedSurfaceFrameworkRepresentation.h:40
Definition: DiscreteProperty.h:44
Definition: AbstractFeatureInterpretation.h:45
Definition: StratigraphicColumnRankInterpretation.h:45
virtual ~EpcDocument()
Definition: EpcDocument.h:186
Definition: SeismicLineSetFeature.h:40
Definition: BoundaryFeatureInterpretation.h:41