Fesapi 2.13.0.0
This project provides C++ classes which allow an easy access in import and export to the Energistics standards.
Loading...
Searching...
No Matches
AbstractObject.h
1/*-----------------------------------------------------------------------
2Licensed to the Apache Software Foundation (ASF) under one
3or more contributor license agreements. See the NOTICE file
4distributed with this work for additional information
5regarding copyright ownership. The ASF licenses this file
6to you under the Apache License, Version 2.0 (the
7"License"; you may not use this file except in compliance
8with the License. You may obtain a copy of the License at
9
10 http://www.apache.org/licenses/LICENSE-2.0
11
12Unless required by applicable law or agreed to in writing,
13software distributed under the License is distributed on an
14"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15KIND, either express or implied. See the License for the
16specific language governing permissions and limitations
17under the License.
18-----------------------------------------------------------------------*/
19#pragma once
20
21#include <regex>
22#include <sstream>
23#include <stdexcept>
24#include <unordered_map>
25#include <vector>
26
27#include "DataObjectRepository.h"
28
29namespace COMMON_NS
30{
34 class AbstractObject
35 {
36 public:
37
41 enum class numericalDatatypeEnum { UNKNOWN = 0, DOUBLE = 1, FLOAT = 2, INT64 = 3, UINT64 = 4, INT32 = 5, UINT32 = 6, INT16 = 7, UINT16 = 8, INT8 = 9, UINT8 = 10};
42
43 DLL_IMPORT_OR_EXPORT virtual ~AbstractObject() = default;
44
52 DLL_IMPORT_OR_EXPORT bool isPartial() const;
53
57 DLL_IMPORT_OR_EXPORT virtual bool isTopLevelElement() const { return true; }
58
68 DLL_IMPORT_OR_EXPORT std::string getUuid() const;
69
79 DLL_IMPORT_OR_EXPORT std::string getTitle() const;
80
90 DLL_IMPORT_OR_EXPORT std::string getEditor() const;
91
103 DLL_IMPORT_OR_EXPORT time_t getCreation() const;
104
115 DLL_IMPORT_OR_EXPORT tm getCreationAsTimeStructure() const;
116
131 DLL_IMPORT_OR_EXPORT std::string getOriginator() const;
132
142 DLL_IMPORT_OR_EXPORT std::string getDescription() const;
143
153 DLL_IMPORT_OR_EXPORT time_t getLastUpdate() const;
154
163 DLL_IMPORT_OR_EXPORT tm getLastUpdateAsTimeStructure() const;
164
181 DLL_IMPORT_OR_EXPORT std::string getFormat() const;
182
193 DLL_IMPORT_OR_EXPORT std::string getDescriptiveKeywords() const;
194
201 DLL_IMPORT_OR_EXPORT std::string getVersion() const;
202
213 DLL_IMPORT_OR_EXPORT void setTitle(const std::string & title);
214
225 DLL_IMPORT_OR_EXPORT void setEditor(const std::string & editor);
226
236 DLL_IMPORT_OR_EXPORT void setCreation(time_t creation);
237
246 DLL_IMPORT_OR_EXPORT void setCreation(const tm & creation);
247
262 DLL_IMPORT_OR_EXPORT void setOriginator(const std::string & originator);
263
275 DLL_IMPORT_OR_EXPORT void setDescription(const std::string & description);
276
286 DLL_IMPORT_OR_EXPORT void setLastUpdate(time_t lastUpdate);
287
294 DLL_IMPORT_OR_EXPORT void setLastUpdate(const tm & lastUpdate);
295
309 DLL_IMPORT_OR_EXPORT static void setFormat(const std::string & vendor, const std::string & applicationName, const std::string & applicationVersionNumber);
310
323 DLL_IMPORT_OR_EXPORT void setDescriptiveKeywords(const std::string & descriptiveKeywords);
324
333 DLL_IMPORT_OR_EXPORT void setVersion(const std::string & version);
334
361 DLL_IMPORT_OR_EXPORT void setMetadata(const std::string & title, const std::string & editor, time_t creation, const std::string & originator,
362 const std::string & description, time_t lastUpdate, const std::string & descriptiveKeywords);
363
372 DLL_IMPORT_OR_EXPORT void serializeIntoStream(std::ostream * stream);
373
379 gsoap_resqml2_0_1::eml20__AbstractCitedDataObject* getEml20GsoapProxy() const { return gsoapProxy2_0_1; }
385 void setGsoapProxy(gsoap_resqml2_0_1::eml20__AbstractCitedDataObject* gsoapProxy) { gsoapProxy2_0_1 = gsoapProxy; }
386
392 gsoap_eml2_3::eml23__AbstractObject* getEml23GsoapProxy() const { return gsoapProxy2_3; }
398 void setGsoapProxy(gsoap_eml2_3::eml23__AbstractObject* gsoapProxy) { gsoapProxy2_3 = gsoapProxy; }
399
405 soap* getGsoapContext() const;
406
414 int getGsoapType() const;
415
421 gsoap_resqml2_0_1::eml20__DataObjectReference* newResqmlReference() const;
422
428 gsoap_eml2_3::eml23__DataObjectReference* newEml23Reference() const;
429
435 gsoap_resqml2_0_1::resqml20__ContactElementReference* newContactElementReference2_0_1() const;
436
442 gsoap_eml2_3::resqml22__ContactElement* newContactElementReference2_2() const;
443
449 DLL_IMPORT_OR_EXPORT COMMON_NS::DataObjectRepository* getRepository() const {return repository;}
450
456 DLL_IMPORT_OR_EXPORT virtual std::string getXmlNamespace() const = 0;
457
463 DLL_IMPORT_OR_EXPORT virtual std::string getXmlTag() const = 0;
464
471 DLL_IMPORT_OR_EXPORT virtual std::string getXmlNamespaceVersion() const;
472
478 DLL_IMPORT_OR_EXPORT virtual std::string getContentType() const;
479
485 DLL_IMPORT_OR_EXPORT virtual std::string getQualifiedType() const;
486
492 DLL_IMPORT_OR_EXPORT virtual std::string getPartNameInEpcDocument() const;
493
499 DLL_IMPORT_OR_EXPORT std::string serializeIntoString();
500
510 DLL_IMPORT_OR_EXPORT void addAlias(const std::string & authority, const std::string & title);
511
519 DLL_IMPORT_OR_EXPORT uint64_t getAliasCount() const;
520
532 DLL_IMPORT_OR_EXPORT std::string getAliasAuthorityAtIndex(uint64_t index) const;
533
545 DLL_IMPORT_OR_EXPORT std::string getAliasTitleAtIndex(uint64_t index) const;
546
552 DLL_IMPORT_OR_EXPORT std::vector<EML2_NS::Activity*> getActivitySet() const;
553
562 DLL_IMPORT_OR_EXPORT uint64_t getActivityCount() const;
563
575 DLL_IMPORT_OR_EXPORT EML2_NS::Activity* getActivity(uint64_t index) const;
576
585 DLL_IMPORT_OR_EXPORT void pushBackExtraMetadata(const std::string & key, const std::string & value);
586
594 DLL_IMPORT_OR_EXPORT std::unordered_map< std::string, std::string > getExtraMetadataSet() const;
595
605 DLL_IMPORT_OR_EXPORT std::vector<std::string> getExtraMetadata(const std::string & key) const;
606
614 DLL_IMPORT_OR_EXPORT uint64_t getExtraMetadataCount() const;
615
626 DLL_IMPORT_OR_EXPORT std::string getExtraMetadataKeyAtIndex(uint64_t index) const;
627
638 DLL_IMPORT_OR_EXPORT std::string getExtraMetadataStringValueAtIndex(uint64_t index) const;
639
645 DLL_IMPORT_OR_EXPORT std::string buildEtp12Uri() const {
646 std::string tmp = uriSource_.empty() ? "eml:///" : uriSource_;
647 return (tmp.back() == '/' ? tmp : tmp + '/') + getQualifiedType() + '(' + getUuid() + ')';
648 }
649
653 DLL_IMPORT_OR_EXPORT void setUriSource(const std::string & uriSource) { uriSource_ = uriSource; }
654
658 DLL_IMPORT_OR_EXPORT const std::string& getUriSource() const { return uriSource_; }
659
664 std::string getEpcSourceFolder() const {
665 if (uriSource_.find(".epc") != uriSource_.size() - 4 &&
666 uriSource_.find(".EPC") != uriSource_.size() - 4) {
667 return "";
668 }
669
670 const size_t slashPos = uriSource_.find_last_of("/\\");
671 return slashPos != std::string::npos ? uriSource_.substr(0, slashPos + 1) : "";
672 }
673
678
683 virtual void loadTargetRelationships() = 0;
684
685 protected:
687 gsoap_resqml2_0_1::eml20__DataObjectReference* partialObject;
688
690 gsoap_resqml2_0_1::eml20__AbstractCitedDataObject* gsoapProxy2_0_1;
691
693 gsoap_eml2_3::eml23__AbstractObject* gsoapProxy2_3;
694
696 COMMON_NS::DataObjectRepository* repository;
697
701 AbstractObject() :
702 partialObject(nullptr),
703 gsoapProxy2_0_1(nullptr),
704 gsoapProxy2_3(nullptr),
705 repository(nullptr) {}
706
712 AbstractObject(gsoap_resqml2_0_1::eml20__DataObjectReference* partialObject_) :
713 partialObject(partialObject_),
714 gsoapProxy2_0_1(nullptr),
715 gsoapProxy2_3(nullptr),
716 repository(nullptr) {}
717 AbstractObject(const DataObjectReference& dor) :
718 partialObject(dor.toDor20()),
719 gsoapProxy2_0_1(nullptr),
720 gsoapProxy2_3(nullptr),
721 repository(nullptr) {}
722
728 AbstractObject(gsoap_resqml2_0_1::eml20__AbstractCitedDataObject* proxy) :
729 partialObject(nullptr),
730 gsoapProxy2_0_1(proxy),
731 gsoapProxy2_3(nullptr),
732 repository(nullptr) {}
733
739 AbstractObject(gsoap_eml2_3::eml23__AbstractObject* proxy) :
740 partialObject(nullptr),
741 gsoapProxy2_0_1(nullptr),
742 gsoapProxy2_3(proxy),
743 repository(nullptr) {}
744
745 //This class is non copyable (non movable) since it is designed to be owned by a DataObjectRepository
746 AbstractObject(const AbstractObject&) = delete;
747 AbstractObject& operator=(const AbstractObject&) = delete;
748
749 friend bool COMMON_NS::DataObjectRepository::addDataObject(std::unique_ptr<COMMON_NS::AbstractObject> proxy);
750 friend COMMON_NS::AbstractObject* COMMON_NS::DataObjectRepository::addOrReplaceDataObject(std::unique_ptr<COMMON_NS::AbstractObject> proxy, bool replaceOnlyContent);
751
756 void initMandatoryMetadata();
757
774 void setMetadata(const std::string & guid, const std::string & title, const std::string & editor, time_t creation, const std::string & originator,
775 const std::string & description, time_t lastUpdate, const std::string & descriptiveKeywords);
776
778 void cannotBePartial() const;
779
787 void readArrayNdOfFloatValues(gsoap_resqml2_0_1::resqml20__AbstractDoubleArray const* arrayInput, float* arrayOutput) const;
788
796 void readArrayNdOfFloatValues(gsoap_eml2_3::eml23__AbstractFloatingPointArray const* arrayInput, float* arrayOutput) const;
797
805 void readArrayNdOfDoubleValues(gsoap_resqml2_0_1::resqml20__AbstractDoubleArray const* arrayInput, double * arrayOutput) const;
806
814 void readArrayNdOfDoubleValues(gsoap_eml2_3::eml23__AbstractFloatingPointArray const* arrayInput, double * arrayOutput) const;
815
816 template <class T>
817 T readArrayNdOfNonHdf5IntegerValues(gsoap_resqml2_0_1::resqml20__AbstractValueArray const * arrayInput, T * arrayOutput) const {
818 switch (arrayInput->soap_type()) {
819 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerRangeArray:
820 {
821 gsoap_resqml2_0_1::resqml20__IntegerRangeArray const* rangeArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerRangeArray const *>(arrayInput);
822 if (rangeArray->Value + rangeArray->Count > (std::numeric_limits<T>::max)()) {
823 throw std::range_error("The range integer values are superior to maximum value of read datatype.");
824 }
825 for (T i = 0; i < static_cast<T>(rangeArray->Count); ++i) {
826 arrayOutput[i] = i + static_cast<T>(rangeArray->Value);
827 }
828 return (std::numeric_limits<T>::max)();
829 }
830 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerConstantArray:
831 {
832 gsoap_resqml2_0_1::resqml20__IntegerConstantArray const* constantArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerConstantArray const*>(arrayInput);
833 if (sizeof(constantArray->Value) > sizeof(T) && constantArray->Value > (std::numeric_limits<T>::max)()) {
834 throw std::range_error("The constant integer value is superior to maximum value of read datatype.");
835 }
836 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
837 return (std::numeric_limits<T>::max)();
838 }
839 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__BooleanConstantArray:
840 {
841 gsoap_resqml2_0_1::resqml20__BooleanConstantArray const* constantArray = static_cast<gsoap_resqml2_0_1::resqml20__BooleanConstantArray const*>(arrayInput);
842 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
843 return (std::numeric_limits<T>::max)();
844 }
845 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerLatticeArray:
846 {
847 gsoap_resqml2_0_1::resqml20__IntegerLatticeArray const* latticeArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerLatticeArray const*>(arrayInput);
848 if (latticeArray->Offset.size() > 1) {
849 throw std::invalid_argument("The integer lattice array contains more than one offset.");
850 }
851 for (size_t i = 0; i <= latticeArray->Offset[0]->Count; ++i) {
852 arrayOutput[i] = latticeArray->StartValue + (i * latticeArray->Offset[0]->Value);
853 }
854 return (std::numeric_limits<T>::max)();
855 }
856 default:
857 throw std::invalid_argument("The integer array type is not supported yet.");
858 }
859 }
860
861 template <class T>
862 T readArrayNdOfNonHdf5IntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const * arrayInput, T * arrayOutput) const {
863 switch (arrayInput->soap_type()) {
864 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerConstantArray:
865 {
866 gsoap_eml2_3::eml23__IntegerConstantArray const* constantArray = static_cast<gsoap_eml2_3::eml23__IntegerConstantArray const*>(arrayInput);
867 if (sizeof(constantArray->Value) > sizeof(T) && constantArray->Value > (std::numeric_limits<T>::max)()) {
868 throw std::range_error("The constant integer value is superior to maximum value of read datatype.");
869 }
870 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
871 return (std::numeric_limits<T>::max)();
872 }
873 case SOAP_TYPE_gsoap_eml2_3_eml23__BooleanConstantArray:
874 {
875 gsoap_eml2_3::eml23__BooleanConstantArray const* constantArray = static_cast<gsoap_eml2_3::eml23__BooleanConstantArray const*>(arrayInput);
876 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
877 return (std::numeric_limits<T>::max)();
878 }
879 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerLatticeArray:
880 {
881 gsoap_eml2_3::eml23__IntegerLatticeArray const* latticeArray = static_cast<gsoap_eml2_3::eml23__IntegerLatticeArray const*>(arrayInput);
882 if (latticeArray->Offset.empty() || latticeArray->Offset.size() > 1) {
883 throw std::invalid_argument("The integer lattice array of UUID " + getUuid() + " contains zero or more than one offset.");
884 }
885 if (latticeArray->Offset[0]->Count < 0) {
886 throw std::invalid_argument("The count of the integer lattice array of UUID " + getUuid() + " is negative which is not valid.");
887 }
888
889 for (size_t i = 0; i <= static_cast<size_t>(latticeArray->Offset[0]->Count); ++i) {
890 arrayOutput[i] = latticeArray->StartValue + (i * latticeArray->Offset[0]->Value);
891 }
892 return (std::numeric_limits<T>::max)();
893 }
894 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerXmlArray:
895 {
896 gsoap_eml2_3::eml23__IntegerXmlArray const * xmlArray = static_cast<gsoap_eml2_3::eml23__IntegerXmlArray const*>(arrayInput);
897 const std::regex ws_re("\\s+"); // whitespace
898 std::sregex_token_iterator it(xmlArray->Values.begin(), xmlArray->Values.end(), ws_re, -1);
899 std::sregex_token_iterator endToken;
900 size_t index = 0;
901 while (it != endToken) {
902 arrayOutput[index++] = std::stoll(*it++);
903 }
904 return (std::numeric_limits<T>::max)();
905 }
906 default: throw std::invalid_argument("The integer array type is not supported yet.");
907 }
908 }
909
919 void readArrayNdOfBooleanValues(gsoap_eml2_3::eml23__BooleanExternalArray const * arrayInput, int8_t * arrayOutput) const;
920
930 uint8_t readArrayNdOfUInt8Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint8_t * arrayOutput) const;
931
941 uint8_t readArrayNdOfUInt8Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint8_t * arrayOutput) const;
942
952 uint16_t readArrayNdOfUInt16Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint16_t * arrayOutput) const;
953
963 uint16_t readArrayNdOfUInt16Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint16_t * arrayOutput) const;
964
974 uint32_t readArrayNdOfUInt32Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint32_t * arrayOutput) const;
975
985 uint32_t readArrayNdOfUInt32Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint32_t * arrayOutput) const;
986
996 uint64_t readArrayNdOfUInt64Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint64_t * arrayOutput) const;
997
1007 uint64_t readArrayNdOfUInt64Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint64_t * arrayOutput) const;
1008
1018 int8_t readArrayNdOfInt8Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int8_t * arrayOutput) const;
1019
1029 int8_t readArrayNdOfInt8Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int8_t * arrayOutput) const;
1030
1040 int16_t readArrayNdOfInt16Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int16_t * arrayOutput) const;
1041
1051 int16_t readArrayNdOfInt16Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int16_t * arrayOutput) const;
1052
1062 int32_t readArrayNdOfInt32Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int32_t * arrayOutput) const;
1063
1073 int32_t readArrayNdOfInt32Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int32_t * arrayOutput) const;
1074
1084 int64_t readArrayNdOfInt64Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int64_t * arrayOutput) const;
1085
1095 int64_t readArrayNdOfInt64Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int64_t * arrayOutput) const;
1096
1104 uint64_t getCountOfArray(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput) const;
1105
1113 uint64_t getCountOfArray(gsoap_eml2_3::eml23__AbstractValueArray const * arrayInput) const;
1114
1120 void convertDorIntoRel(const DataObjectReference& dor);
1121
1131 template <class valueType>
1132 void convertDorIntoRel(const DataObjectReference& dor)
1133 {
1134 valueType * targetObj = getRepository()->getDataObjectByUuid<valueType>(dor.getUuid());
1135 if (targetObj == nullptr) { // partial transfer
1136 getRepository()->createPartial(dor);
1137 targetObj = getRepository()->getDataObjectByUuid<valueType>(dor.getUuid());
1138 if (targetObj == nullptr) {
1139 throw std::invalid_argument("The DOR looks invalid.");
1140 }
1141 targetObj->setUriSource(getUriSource());
1142 }
1143 getRepository()->addRelationship(this, targetObj);
1144 }
1145
1157 EML2_NS::AbstractHdfProxy* getHdfProxyFromDataset(gsoap_resqml2_0_1::eml20__Hdf5Dataset const * dataset, bool throwException = true) const;
1158
1169 EML2_NS::AbstractHdfProxy* getOrCreateHdfProxyFromDataArrayPart(gsoap_eml2_3::eml23__ExternalDataArrayPart const * dataArrayPart) const;
1170
1174 std::string getHdfGroup() const {
1175 return "/" + getXmlNamespace() + "/" + getUuid();
1176 }
1177
1181 gsoap_eml2_3::eml23__ExternalDataArrayPart* createExternalDataArrayPart(const std::string& datasetName, LONG64 count, EML2_NS::AbstractHdfProxy* proxy = nullptr) const;
1182
1183 gsoap_resqml2_0_1::resqml20__IndexableElements mapIndexableElement(gsoap_eml2_3::eml23__IndexableElement toMap) const;
1184
1185 private:
1187 static char citationFormat[];
1188
1192 std::string uriSource_;
1193
1201 void setUuid(const std::string & uuid);
1202 };
1203}
An abstract data object is the super class of all FESAPI dataobjects which are contained in a DataObj...
Definition AbstractObject.h:35
soap * getGsoapContext() const
void setCreation(const tm &creation)
void setGsoapProxy(gsoap_eml2_3::eml23__AbstractObject *gsoapProxy)
Definition AbstractObject.h:398
void setVersion(const std::string &version)
std::string getVersion() const
virtual std::string getContentType() const
void setTitle(const std::string &title)
std::unordered_map< std::string, std::string > getExtraMetadataSet() const
time_t getCreation() const
uint64_t getAliasCount() const
virtual void loadTargetRelationships()=0
gsoap_eml2_3::resqml22__ContactElement * newContactElementReference2_2() const
std::string serializeIntoString()
std::string buildEtp12Uri() const
Definition AbstractObject.h:645
std::string getDescriptiveKeywords() const
std::string getAliasAuthorityAtIndex(uint64_t index) const
gsoap_resqml2_0_1::eml20__DataObjectReference * newResqmlReference() const
virtual std::string getXmlNamespaceVersion() const
common::DataObjectRepository * getRepository() const
Definition AbstractObject.h:449
void setUriSource(const std::string &uriSource)
Definition AbstractObject.h:653
std::string getEditor() const
bool isPartial() const
gsoap_eml2_3::eml23__DataObjectReference * newEml23Reference() const
virtual std::string getQualifiedType() const
void setEditor(const std::string &editor)
void setLastUpdate(time_t lastUpdate)
std::string getUuid() const
uint64_t getExtraMetadataCount() const
void setDescription(const std::string &description)
int getGsoapType() const
eml2::Activity * getActivity(uint64_t index) const
void serializeIntoStream(std::ostream *stream)
void setDescriptiveKeywords(const std::string &descriptiveKeywords)
std::string getExtraMetadataKeyAtIndex(uint64_t index) const
uint64_t getActivityCount() const
virtual std::string getXmlNamespace() const =0
void setCreation(time_t creation)
gsoap_resqml2_0_1::resqml20__ContactElementReference * newContactElementReference2_0_1() const
void pushBackExtraMetadata(const std::string &key, const std::string &value)
const std::string & getUriSource() const
Definition AbstractObject.h:658
std::string getAliasTitleAtIndex(uint64_t index) const
void setLastUpdate(const tm &lastUpdate)
std::string getExtraMetadataStringValueAtIndex(uint64_t index) const
gsoap_resqml2_0_1::eml20__AbstractCitedDataObject * getEml20GsoapProxy() const
Definition AbstractObject.h:379
gsoap_eml2_3::eml23__AbstractObject * getEml23GsoapProxy() const
Definition AbstractObject.h:392
std::vector< std::string > getExtraMetadata(const std::string &key) const
virtual bool isTopLevelElement() const
Definition AbstractObject.h:57
std::string getOriginator() const
void setGsoapProxy(gsoap_resqml2_0_1::eml20__AbstractCitedDataObject *gsoapProxy)
Definition AbstractObject.h:385
tm getCreationAsTimeStructure() const
std::string getEpcSourceFolder() const
Definition AbstractObject.h:664
tm getLastUpdateAsTimeStructure() const
void setMetadata(const std::string &title, const std::string &editor, time_t creation, const std::string &originator, const std::string &description, time_t lastUpdate, const std::string &descriptiveKeywords)
void setOriginator(const std::string &originator)
virtual std::string getPartNameInEpcDocument() const
std::string getDescription() const
time_t getLastUpdate() const
static void setFormat(const std::string &vendor, const std::string &applicationName, const std::string &applicationVersionNumber)
virtual std::string getXmlTag() const =0
numericalDatatypeEnum
Definition AbstractObject.h:41
void addAlias(const std::string &authority, const std::string &title)
std::string getTitle() const
std::vector< eml2::Activity * > getActivitySet() const
std::string getFormat() const