Fesapi 2.9.0.1
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{
33 {
34 public:
35
36 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};
37
38 DLL_IMPORT_OR_EXPORT virtual ~AbstractObject() = default;
39
47 DLL_IMPORT_OR_EXPORT bool isPartial() const;
48
49 DLL_IMPORT_OR_EXPORT virtual bool isTopLevelElement() const { return true; }
50
60 DLL_IMPORT_OR_EXPORT std::string getUuid() const;
61
71 DLL_IMPORT_OR_EXPORT std::string getTitle() const;
72
82 DLL_IMPORT_OR_EXPORT std::string getEditor() const;
83
95 DLL_IMPORT_OR_EXPORT time_t getCreation() const;
96
107 DLL_IMPORT_OR_EXPORT tm getCreationAsTimeStructure() const;
108
123 DLL_IMPORT_OR_EXPORT std::string getOriginator() const;
124
134 DLL_IMPORT_OR_EXPORT std::string getDescription() const;
135
145 DLL_IMPORT_OR_EXPORT time_t getLastUpdate() const;
146
155 DLL_IMPORT_OR_EXPORT tm getLastUpdateAsTimeStructure() const;
156
173 DLL_IMPORT_OR_EXPORT std::string getFormat() const;
174
185 DLL_IMPORT_OR_EXPORT std::string getDescriptiveKeywords() const;
186
193 DLL_IMPORT_OR_EXPORT std::string getVersion() const;
194
205 DLL_IMPORT_OR_EXPORT void setTitle(const std::string & title);
206
217 DLL_IMPORT_OR_EXPORT void setEditor(const std::string & editor);
218
228 DLL_IMPORT_OR_EXPORT void setCreation(time_t creation);
229
238 DLL_IMPORT_OR_EXPORT void setCreation(const tm & creation);
239
254 DLL_IMPORT_OR_EXPORT void setOriginator(const std::string & originator);
255
267 DLL_IMPORT_OR_EXPORT void setDescription(const std::string & description);
268
278 DLL_IMPORT_OR_EXPORT void setLastUpdate(time_t lastUpdate);
279
286 DLL_IMPORT_OR_EXPORT void setLastUpdate(const tm & lastUpdate);
287
301 DLL_IMPORT_OR_EXPORT static void setFormat(const std::string & vendor, const std::string & applicationName, const std::string & applicationVersionNumber);
302
315 DLL_IMPORT_OR_EXPORT void setDescriptiveKeywords(const std::string & descriptiveKeywords);
316
325 DLL_IMPORT_OR_EXPORT void setVersion(const std::string & version);
326
353 DLL_IMPORT_OR_EXPORT void setMetadata(const std::string & title, const std::string & editor, time_t creation, const std::string & originator,
354 const std::string & description, time_t lastUpdate, const std::string & descriptiveKeywords);
355
364 DLL_IMPORT_OR_EXPORT void serializeIntoStream(std::ostream * stream);
365
371 gsoap_resqml2_0_1::eml20__AbstractCitedDataObject* getEml20GsoapProxy() const { return gsoapProxy2_0_1; }
377 void setGsoapProxy(gsoap_resqml2_0_1::eml20__AbstractCitedDataObject* gsoapProxy) { gsoapProxy2_0_1 = gsoapProxy; }
378
384 gsoap_eml2_3::eml23__AbstractObject* getEml23GsoapProxy() const { return gsoapProxy2_3; }
390 void setGsoapProxy(gsoap_eml2_3::eml23__AbstractObject* gsoapProxy) { gsoapProxy2_3 = gsoapProxy; }
391
397 soap* getGsoapContext() const;
398
406 int getGsoapType() const;
407
413 gsoap_resqml2_0_1::eml20__DataObjectReference* newResqmlReference() const;
414
420 gsoap_eml2_3::eml23__DataObjectReference* newEml23Reference() const;
421
427 gsoap_resqml2_0_1::resqml20__ContactElementReference* newContactElementReference2_0_1() const;
428
434 gsoap_eml2_3::resqml22__ContactElement* newContactElementReference2_2() const;
435
441 DLL_IMPORT_OR_EXPORT COMMON_NS::DataObjectRepository* getRepository() const {return repository;}
442
448 DLL_IMPORT_OR_EXPORT virtual std::string getXmlNamespace() const = 0;
449
455 DLL_IMPORT_OR_EXPORT virtual std::string getXmlTag() const = 0;
456
463 DLL_IMPORT_OR_EXPORT virtual std::string getXmlNamespaceVersion() const;
464
470 DLL_IMPORT_OR_EXPORT virtual std::string getContentType() const;
471
477 DLL_IMPORT_OR_EXPORT virtual std::string getQualifiedType() const;
478
484 DLL_IMPORT_OR_EXPORT virtual std::string getPartNameInEpcDocument() const;
485
491 DLL_IMPORT_OR_EXPORT std::string serializeIntoString();
492
502 DLL_IMPORT_OR_EXPORT void addAlias(const std::string & authority, const std::string & title);
503
513 DLL_IMPORT_OR_EXPORT unsigned int getAliasCount() const;
514
526 DLL_IMPORT_OR_EXPORT std::string getAliasAuthorityAtIndex(unsigned int index) const;
527
539 DLL_IMPORT_OR_EXPORT std::string getAliasTitleAtIndex(unsigned int index) const;
540
546 DLL_IMPORT_OR_EXPORT std::vector<EML2_NS::Activity*> getActivitySet() const;
547
556 DLL_IMPORT_OR_EXPORT unsigned int getActivityCount() const;
557
569 DLL_IMPORT_OR_EXPORT EML2_NS::Activity* getActivity(unsigned int index) const;
570
579 DLL_IMPORT_OR_EXPORT void pushBackExtraMetadata(const std::string & key, const std::string & value);
580
588 DLL_IMPORT_OR_EXPORT std::unordered_map< std::string, std::string > getExtraMetadataSet() const;
589
599 DLL_IMPORT_OR_EXPORT std::vector<std::string> getExtraMetadata(const std::string & key) const;
600
608 DLL_IMPORT_OR_EXPORT unsigned int getExtraMetadataCount() const;
609
620 DLL_IMPORT_OR_EXPORT std::string getExtraMetadataKeyAtIndex(unsigned int index) const;
621
632 DLL_IMPORT_OR_EXPORT std::string getExtraMetadataStringValueAtIndex(unsigned int index) const;
633
639 DLL_IMPORT_OR_EXPORT std::string buildEtp12Uri() const {
640 std::string tmp = uriSource_.empty() ? "eml:///" : uriSource_;
641 return (tmp.back() == '/' ? tmp : tmp + '/') + getQualifiedType() + '(' + getUuid() + ')';
642 }
643
647 DLL_IMPORT_OR_EXPORT void setUriSource(const std::string & uriSource) { uriSource_ = uriSource; }
648
652 DLL_IMPORT_OR_EXPORT const std::string& getUriSource() const { return uriSource_; }
653
658 std::string getEpcSourceFolder() const {
659 if (uriSource_.find(".epc") != uriSource_.size() - 4 &&
660 uriSource_.find(".EPC") != uriSource_.size() - 4) {
661 return "";
662 }
663
664 const size_t slashPos = uriSource_.find_last_of("/\\");
665 return slashPos != std::string::npos ? uriSource_.substr(0, slashPos + 1) : "";
666 }
667
672
677 virtual void loadTargetRelationships() = 0;
678
679 protected:
681 gsoap_resqml2_0_1::eml20__DataObjectReference* partialObject;
682
684 gsoap_resqml2_0_1::eml20__AbstractCitedDataObject* gsoapProxy2_0_1;
685
687 gsoap_eml2_3::eml23__AbstractObject* gsoapProxy2_3;
688
690 COMMON_NS::DataObjectRepository* repository;
691
696 partialObject(nullptr),
697 gsoapProxy2_0_1(nullptr),
698 gsoapProxy2_3(nullptr),
699 repository(nullptr) {}
700
706 AbstractObject(gsoap_resqml2_0_1::eml20__DataObjectReference* partialObject_) :
707 partialObject(partialObject_),
708 gsoapProxy2_0_1(nullptr),
709 gsoapProxy2_3(nullptr),
710 repository(nullptr) {}
711 AbstractObject(const DataObjectReference& dor) :
712 partialObject(dor.toDor20()),
713 gsoapProxy2_0_1(nullptr),
714 gsoapProxy2_3(nullptr),
715 repository(nullptr) {}
716
722 AbstractObject(gsoap_resqml2_0_1::eml20__AbstractCitedDataObject* proxy) :
723 partialObject(nullptr),
724 gsoapProxy2_0_1(proxy),
725 gsoapProxy2_3(nullptr),
726 repository(nullptr) {}
727
733 AbstractObject(gsoap_eml2_3::eml23__AbstractObject* proxy) :
734 partialObject(nullptr),
735 gsoapProxy2_0_1(nullptr),
736 gsoapProxy2_3(proxy),
737 repository(nullptr) {}
738
739
740 friend bool COMMON_NS::DataObjectRepository::addDataObject(COMMON_NS::AbstractObject* proxy);
741 friend COMMON_NS::AbstractObject* COMMON_NS::DataObjectRepository::addOrReplaceDataObject(AbstractObject* proxy, bool replaceOnlyContent);
742
747 void initMandatoryMetadata();
748
765 void setMetadata(const std::string & guid, const std::string & title, const std::string & editor, time_t creation, const std::string & originator,
766 const std::string & description, time_t lastUpdate, const std::string & descriptiveKeywords);
767
769 void cannotBePartial() const;
770
778 void readArrayNdOfFloatValues(gsoap_resqml2_0_1::resqml20__AbstractDoubleArray const* arrayInput, float* arrayOutput) const;
779
787 void readArrayNdOfFloatValues(gsoap_eml2_3::eml23__AbstractFloatingPointArray const* arrayInput, float* arrayOutput) const;
788
796 void readArrayNdOfDoubleValues(gsoap_resqml2_0_1::resqml20__AbstractDoubleArray const* arrayInput, double * arrayOutput) const;
797
805 void readArrayNdOfDoubleValues(gsoap_eml2_3::eml23__AbstractFloatingPointArray const* arrayInput, double * arrayOutput) const;
806
807 template <class T>
808 T readArrayNdOfNonHdf5IntegerValues(gsoap_resqml2_0_1::resqml20__AbstractValueArray const * arrayInput, T * arrayOutput) const {
809 switch (arrayInput->soap_type()) {
810 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerRangeArray:
811 {
812 gsoap_resqml2_0_1::resqml20__IntegerRangeArray const* rangeArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerRangeArray const *>(arrayInput);
813 if (rangeArray->Value + rangeArray->Count > (std::numeric_limits<T>::max)()) {
814 throw std::range_error("The range integer values are superior to maximum value of read datatype.");
815 }
816 for (T i = 0; i < static_cast<T>(rangeArray->Count); ++i) {
817 arrayOutput[i] = i + static_cast<T>(rangeArray->Value);
818 }
819 return (std::numeric_limits<T>::max)();
820 }
821 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerConstantArray:
822 {
823 gsoap_resqml2_0_1::resqml20__IntegerConstantArray const* constantArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerConstantArray const*>(arrayInput);
824 if (sizeof(constantArray->Value) > sizeof(T) && constantArray->Value > (std::numeric_limits<T>::max)()) {
825 throw std::range_error("The constant integer value is superior to maximum value of read datatype.");
826 }
827 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
828 return (std::numeric_limits<T>::max)();
829 }
830 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__BooleanConstantArray:
831 {
832 gsoap_resqml2_0_1::resqml20__BooleanConstantArray const* constantArray = static_cast<gsoap_resqml2_0_1::resqml20__BooleanConstantArray const*>(arrayInput);
833 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
834 return (std::numeric_limits<T>::max)();
835 }
836 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerLatticeArray:
837 {
838 gsoap_resqml2_0_1::resqml20__IntegerLatticeArray const* latticeArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerLatticeArray const*>(arrayInput);
839 if (latticeArray->Offset.size() > 1) {
840 throw std::invalid_argument("The integer lattice array contains more than one offset.");
841 }
842 for (size_t i = 0; i <= latticeArray->Offset[0]->Count; ++i) {
843 arrayOutput[i] = latticeArray->StartValue + (i * latticeArray->Offset[0]->Value);
844 }
845 return (std::numeric_limits<T>::max)();
846 }
847 default:
848 throw std::invalid_argument("The integer array type is not supported yet.");
849 }
850 }
851
852 template <class T>
853 T readArrayNdOfNonHdf5IntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const * arrayInput, T * arrayOutput) const {
854 switch (arrayInput->soap_type()) {
855 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerConstantArray:
856 {
857 gsoap_eml2_3::eml23__IntegerConstantArray const* constantArray = static_cast<gsoap_eml2_3::eml23__IntegerConstantArray const*>(arrayInput);
858 if (sizeof(constantArray->Value) > sizeof(T) && constantArray->Value > (std::numeric_limits<T>::max)()) {
859 throw std::range_error("The constant integer value is superior to maximum value of read datatype.");
860 }
861 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
862 return (std::numeric_limits<T>::max)();
863 }
864 case SOAP_TYPE_gsoap_eml2_3_eml23__BooleanConstantArray:
865 {
866 gsoap_eml2_3::eml23__BooleanConstantArray const* constantArray = static_cast<gsoap_eml2_3::eml23__BooleanConstantArray const*>(arrayInput);
867 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
868 return (std::numeric_limits<T>::max)();
869 }
870 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerLatticeArray:
871 {
872 gsoap_eml2_3::eml23__IntegerLatticeArray const* latticeArray = static_cast<gsoap_eml2_3::eml23__IntegerLatticeArray const*>(arrayInput);
873 if (latticeArray->Offset.empty() || latticeArray->Offset.size() > 1) {
874 throw std::invalid_argument("The integer lattice array of UUID " + getUuid() + " contains zero or more than one offset.");
875 }
876 if (latticeArray->Offset[0]->Count < 0) {
877 throw std::invalid_argument("The count of the integer lattice array of UUID " + getUuid() + " is negative which is not valid.");
878 }
879
880 for (size_t i = 0; i <= static_cast<size_t>(latticeArray->Offset[0]->Count); ++i) {
881 arrayOutput[i] = latticeArray->StartValue + (i * latticeArray->Offset[0]->Value);
882 }
883 return (std::numeric_limits<T>::max)();
884 }
885 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerXmlArray:
886 {
887 gsoap_eml2_3::eml23__IntegerXmlArray const * xmlArray = static_cast<gsoap_eml2_3::eml23__IntegerXmlArray const*>(arrayInput);
888 const std::regex ws_re("\\s+"); // whitespace
889#if !defined(__GLIBCXX__) || __GLIBCXX__ > 20150623 || __GLIBCXX__ == 20140422 || __GLIBCXX__ == 20140716 || __GLIBCXX__ == 20141030
890 std::sregex_token_iterator it(xmlArray->Values.begin(), xmlArray->Values.end(), ws_re, -1);
891 std::sregex_token_iterator endToken;
892#else
893 boost::sregex_token_iterator it(xmlArray->Values.begin(), xmlArray->Values.end(), ws_re, -1);
894 boost::sregex_token_iterator endToken;
895#endif
896 size_t index = 0;
897 while (it != endToken) {
898 arrayOutput[index++] = std::stoll(*it++);
899 }
900 return (std::numeric_limits<T>::max)();
901 }
902 default: throw std::invalid_argument("The integer array type is not supported yet.");
903 }
904 }
905
915 void readArrayNdOfBooleanValues(gsoap_eml2_3::eml23__BooleanExternalArray const * arrayInput, int8_t * arrayOutput) const;
916
926 uint8_t readArrayNdOfUInt8Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint8_t * arrayOutput) const;
927
937 uint8_t readArrayNdOfUInt8Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint8_t * arrayOutput) const;
938
948 uint16_t readArrayNdOfUInt16Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint16_t * arrayOutput) const;
949
959 uint16_t readArrayNdOfUInt16Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint16_t * arrayOutput) const;
960
970 uint32_t readArrayNdOfUInt32Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint32_t * arrayOutput) const;
971
981 uint32_t readArrayNdOfUInt32Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint32_t * arrayOutput) const;
982
992 uint64_t readArrayNdOfUInt64Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint64_t * arrayOutput) const;
993
1003 uint64_t readArrayNdOfUInt64Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint64_t * arrayOutput) const;
1004
1014 int8_t readArrayNdOfInt8Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int8_t * arrayOutput) const;
1015
1025 int8_t readArrayNdOfInt8Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int8_t * arrayOutput) const;
1026
1036 int16_t readArrayNdOfInt16Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int16_t * arrayOutput) const;
1037
1047 int16_t readArrayNdOfInt16Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int16_t * arrayOutput) const;
1048
1058 int32_t readArrayNdOfInt32Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int32_t * arrayOutput) const;
1059
1069 int32_t readArrayNdOfInt32Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int32_t * arrayOutput) const;
1070
1080 int64_t readArrayNdOfInt64Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int64_t * arrayOutput) const;
1081
1091 int64_t readArrayNdOfInt64Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int64_t * arrayOutput) const;
1092
1100 uint64_t getCountOfArray(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput) const;
1101
1109 uint64_t getCountOfArray(gsoap_eml2_3::eml23__AbstractValueArray const * arrayInput) const;
1110
1116 void convertDorIntoRel(const DataObjectReference& dor);
1117
1127 template <class valueType>
1128 void convertDorIntoRel(const DataObjectReference& dor)
1129 {
1130 valueType * targetObj = getRepository()->getDataObjectByUuid<valueType>(dor.getUuid());
1131 if (targetObj == nullptr) { // partial transfer
1132 getRepository()->createPartial(dor);
1133 targetObj = getRepository()->getDataObjectByUuid<valueType>(dor.getUuid());
1134 if (targetObj == nullptr) {
1135 throw std::invalid_argument("The DOR looks invalid.");
1136 }
1137 targetObj->setUriSource(getUriSource());
1138 }
1139 getRepository()->addRelationship(this, targetObj);
1140 }
1141
1153 EML2_NS::AbstractHdfProxy* getHdfProxyFromDataset(gsoap_resqml2_0_1::eml20__Hdf5Dataset const * dataset, bool throwException = true) const;
1154
1165 EML2_NS::AbstractHdfProxy* getOrCreateHdfProxyFromDataArrayPart(gsoap_eml2_3::eml23__ExternalDataArrayPart const * dataArrayPart) const;
1166
1170 std::string getHdfGroup() const {
1171 return "/" + getXmlNamespace() + "/" + getUuid();
1172 }
1173
1177 gsoap_eml2_3::eml23__ExternalDataArrayPart* createExternalDataArrayPart(const std::string& datasetName, LONG64 count, EML2_NS::AbstractHdfProxy* proxy = nullptr) const;
1178
1179 gsoap_resqml2_0_1::resqml20__IndexableElements mapIndexableElement(gsoap_eml2_3::eml23__IndexableElement toMap) const;
1180
1181 private:
1183 static char citationFormat[];
1184
1188 std::string uriSource_;
1189
1197 void setUuid(const std::string & uuid);
1198 };
1199}
An abstract data object.
Definition AbstractObject.h:33
soap * getGsoapContext() const
std::vector< eml2 ::Activity * > getActivitySet() const
void setCreation(const tm &creation)
void setGsoapProxy(gsoap_eml2_3::eml23__AbstractObject *gsoapProxy)
Definition AbstractObject.h:390
void setVersion(const std::string &version)
unsigned int getAliasCount() const
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
virtual void loadTargetRelationships()=0
std::string getExtraMetadataStringValueAtIndex(unsigned int index) const
gsoap_eml2_3::resqml22__ContactElement * newContactElementReference2_2() const
std::string serializeIntoString()
std::string buildEtp12Uri() const
Definition AbstractObject.h:639
unsigned int getExtraMetadataCount() const
std::string getDescriptiveKeywords() const
gsoap_resqml2_0_1::eml20__DataObjectReference * newResqmlReference() const
virtual std::string getXmlNamespaceVersion() const
common::DataObjectRepository * getRepository() const
Definition AbstractObject.h:441
void setUriSource(const std::string &uriSource)
Definition AbstractObject.h:647
std::string getEditor() const
bool isPartial() const
gsoap_eml2_3::eml23__DataObjectReference * newEml23Reference() const
std::string getAliasTitleAtIndex(unsigned int index) const
virtual std::string getQualifiedType() const
void setEditor(const std::string &editor)
void setLastUpdate(time_t lastUpdate)
std::string getUuid() const
std::string getAliasAuthorityAtIndex(unsigned int index) const
void setDescription(const std::string &description)
int getGsoapType() const
void serializeIntoStream(std::ostream *stream)
void setDescriptiveKeywords(const std::string &descriptiveKeywords)
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:652
void setLastUpdate(const tm &lastUpdate)
eml2::Activity * getActivity(unsigned int index) const
gsoap_resqml2_0_1::eml20__AbstractCitedDataObject * getEml20GsoapProxy() const
Definition AbstractObject.h:371
gsoap_eml2_3::eml23__AbstractObject * getEml23GsoapProxy() const
Definition AbstractObject.h:384
std::vector< std::string > getExtraMetadata(const std::string &key) const
std::string getOriginator() const
void setGsoapProxy(gsoap_resqml2_0_1::eml20__AbstractCitedDataObject *gsoapProxy)
Definition AbstractObject.h:377
tm getCreationAsTimeStructure() const
std::string getEpcSourceFolder() const
Definition AbstractObject.h:658
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
void addAlias(const std::string &authority, const std::string &title)
unsigned int getActivityCount() const
std::string getTitle() const
std::string getFormat() const
std::string getExtraMetadataKeyAtIndex(unsigned int index) const