Fesapi 2.10.1.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{
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
511 DLL_IMPORT_OR_EXPORT uint64_t getAliasCount() const;
512
524 DLL_IMPORT_OR_EXPORT std::string getAliasAuthorityAtIndex(uint64_t index) const;
525
537 DLL_IMPORT_OR_EXPORT std::string getAliasTitleAtIndex(uint64_t index) const;
538
544 DLL_IMPORT_OR_EXPORT std::vector<EML2_NS::Activity*> getActivitySet() const;
545
554 DLL_IMPORT_OR_EXPORT uint64_t getActivityCount() const;
555
567 DLL_IMPORT_OR_EXPORT EML2_NS::Activity* getActivity(uint64_t index) const;
568
577 DLL_IMPORT_OR_EXPORT void pushBackExtraMetadata(const std::string & key, const std::string & value);
578
586 DLL_IMPORT_OR_EXPORT std::unordered_map< std::string, std::string > getExtraMetadataSet() const;
587
597 DLL_IMPORT_OR_EXPORT std::vector<std::string> getExtraMetadata(const std::string & key) const;
598
606 DLL_IMPORT_OR_EXPORT unsigned int getExtraMetadataCount() const;
607
618 DLL_IMPORT_OR_EXPORT std::string getExtraMetadataKeyAtIndex(unsigned int index) const;
619
630 DLL_IMPORT_OR_EXPORT std::string getExtraMetadataStringValueAtIndex(unsigned int index) const;
631
637 DLL_IMPORT_OR_EXPORT std::string buildEtp12Uri() const {
638 std::string tmp = uriSource_.empty() ? "eml:///" : uriSource_;
639 return (tmp.back() == '/' ? tmp : tmp + '/') + getQualifiedType() + '(' + getUuid() + ')';
640 }
641
645 DLL_IMPORT_OR_EXPORT void setUriSource(const std::string & uriSource) { uriSource_ = uriSource; }
646
650 DLL_IMPORT_OR_EXPORT const std::string& getUriSource() const { return uriSource_; }
651
656 std::string getEpcSourceFolder() const {
657 if (uriSource_.find(".epc") != uriSource_.size() - 4 &&
658 uriSource_.find(".EPC") != uriSource_.size() - 4) {
659 return "";
660 }
661
662 const size_t slashPos = uriSource_.find_last_of("/\\");
663 return slashPos != std::string::npos ? uriSource_.substr(0, slashPos + 1) : "";
664 }
665
670
675 virtual void loadTargetRelationships() = 0;
676
677 protected:
679 gsoap_resqml2_0_1::eml20__DataObjectReference* partialObject;
680
682 gsoap_resqml2_0_1::eml20__AbstractCitedDataObject* gsoapProxy2_0_1;
683
685 gsoap_eml2_3::eml23__AbstractObject* gsoapProxy2_3;
686
688 COMMON_NS::DataObjectRepository* repository;
689
694 partialObject(nullptr),
695 gsoapProxy2_0_1(nullptr),
696 gsoapProxy2_3(nullptr),
697 repository(nullptr) {}
698
704 AbstractObject(gsoap_resqml2_0_1::eml20__DataObjectReference* partialObject_) :
705 partialObject(partialObject_),
706 gsoapProxy2_0_1(nullptr),
707 gsoapProxy2_3(nullptr),
708 repository(nullptr) {}
709 AbstractObject(const DataObjectReference& dor) :
710 partialObject(dor.toDor20()),
711 gsoapProxy2_0_1(nullptr),
712 gsoapProxy2_3(nullptr),
713 repository(nullptr) {}
714
720 AbstractObject(gsoap_resqml2_0_1::eml20__AbstractCitedDataObject* proxy) :
721 partialObject(nullptr),
722 gsoapProxy2_0_1(proxy),
723 gsoapProxy2_3(nullptr),
724 repository(nullptr) {}
725
731 AbstractObject(gsoap_eml2_3::eml23__AbstractObject* proxy) :
732 partialObject(nullptr),
733 gsoapProxy2_0_1(nullptr),
734 gsoapProxy2_3(proxy),
735 repository(nullptr) {}
736
737
738 friend bool COMMON_NS::DataObjectRepository::addDataObject(COMMON_NS::AbstractObject* proxy);
739 friend COMMON_NS::AbstractObject* COMMON_NS::DataObjectRepository::addOrReplaceDataObject(AbstractObject* proxy, bool replaceOnlyContent);
740
745 void initMandatoryMetadata();
746
763 void setMetadata(const std::string & guid, const std::string & title, const std::string & editor, time_t creation, const std::string & originator,
764 const std::string & description, time_t lastUpdate, const std::string & descriptiveKeywords);
765
767 void cannotBePartial() const;
768
776 void readArrayNdOfFloatValues(gsoap_resqml2_0_1::resqml20__AbstractDoubleArray const* arrayInput, float* arrayOutput) const;
777
785 void readArrayNdOfFloatValues(gsoap_eml2_3::eml23__AbstractFloatingPointArray const* arrayInput, float* arrayOutput) const;
786
794 void readArrayNdOfDoubleValues(gsoap_resqml2_0_1::resqml20__AbstractDoubleArray const* arrayInput, double * arrayOutput) const;
795
803 void readArrayNdOfDoubleValues(gsoap_eml2_3::eml23__AbstractFloatingPointArray const* arrayInput, double * arrayOutput) const;
804
805 template <class T>
806 T readArrayNdOfNonHdf5IntegerValues(gsoap_resqml2_0_1::resqml20__AbstractValueArray const * arrayInput, T * arrayOutput) const {
807 switch (arrayInput->soap_type()) {
808 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerRangeArray:
809 {
810 gsoap_resqml2_0_1::resqml20__IntegerRangeArray const* rangeArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerRangeArray const *>(arrayInput);
811 if (rangeArray->Value + rangeArray->Count > (std::numeric_limits<T>::max)()) {
812 throw std::range_error("The range integer values are superior to maximum value of read datatype.");
813 }
814 for (T i = 0; i < static_cast<T>(rangeArray->Count); ++i) {
815 arrayOutput[i] = i + static_cast<T>(rangeArray->Value);
816 }
817 return (std::numeric_limits<T>::max)();
818 }
819 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerConstantArray:
820 {
821 gsoap_resqml2_0_1::resqml20__IntegerConstantArray const* constantArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerConstantArray const*>(arrayInput);
822 if (sizeof(constantArray->Value) > sizeof(T) && constantArray->Value > (std::numeric_limits<T>::max)()) {
823 throw std::range_error("The constant integer value is superior to maximum value of read datatype.");
824 }
825 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
826 return (std::numeric_limits<T>::max)();
827 }
828 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__BooleanConstantArray:
829 {
830 gsoap_resqml2_0_1::resqml20__BooleanConstantArray const* constantArray = static_cast<gsoap_resqml2_0_1::resqml20__BooleanConstantArray const*>(arrayInput);
831 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
832 return (std::numeric_limits<T>::max)();
833 }
834 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerLatticeArray:
835 {
836 gsoap_resqml2_0_1::resqml20__IntegerLatticeArray const* latticeArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerLatticeArray const*>(arrayInput);
837 if (latticeArray->Offset.size() > 1) {
838 throw std::invalid_argument("The integer lattice array contains more than one offset.");
839 }
840 for (size_t i = 0; i <= latticeArray->Offset[0]->Count; ++i) {
841 arrayOutput[i] = latticeArray->StartValue + (i * latticeArray->Offset[0]->Value);
842 }
843 return (std::numeric_limits<T>::max)();
844 }
845 default:
846 throw std::invalid_argument("The integer array type is not supported yet.");
847 }
848 }
849
850 template <class T>
851 T readArrayNdOfNonHdf5IntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const * arrayInput, T * arrayOutput) const {
852 switch (arrayInput->soap_type()) {
853 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerConstantArray:
854 {
855 gsoap_eml2_3::eml23__IntegerConstantArray const* constantArray = static_cast<gsoap_eml2_3::eml23__IntegerConstantArray const*>(arrayInput);
856 if (sizeof(constantArray->Value) > sizeof(T) && constantArray->Value > (std::numeric_limits<T>::max)()) {
857 throw std::range_error("The constant integer value is superior to maximum value of read datatype.");
858 }
859 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
860 return (std::numeric_limits<T>::max)();
861 }
862 case SOAP_TYPE_gsoap_eml2_3_eml23__BooleanConstantArray:
863 {
864 gsoap_eml2_3::eml23__BooleanConstantArray const* constantArray = static_cast<gsoap_eml2_3::eml23__BooleanConstantArray const*>(arrayInput);
865 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
866 return (std::numeric_limits<T>::max)();
867 }
868 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerLatticeArray:
869 {
870 gsoap_eml2_3::eml23__IntegerLatticeArray const* latticeArray = static_cast<gsoap_eml2_3::eml23__IntegerLatticeArray const*>(arrayInput);
871 if (latticeArray->Offset.empty() || latticeArray->Offset.size() > 1) {
872 throw std::invalid_argument("The integer lattice array of UUID " + getUuid() + " contains zero or more than one offset.");
873 }
874 if (latticeArray->Offset[0]->Count < 0) {
875 throw std::invalid_argument("The count of the integer lattice array of UUID " + getUuid() + " is negative which is not valid.");
876 }
877
878 for (size_t i = 0; i <= static_cast<size_t>(latticeArray->Offset[0]->Count); ++i) {
879 arrayOutput[i] = latticeArray->StartValue + (i * latticeArray->Offset[0]->Value);
880 }
881 return (std::numeric_limits<T>::max)();
882 }
883 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerXmlArray:
884 {
885 gsoap_eml2_3::eml23__IntegerXmlArray const * xmlArray = static_cast<gsoap_eml2_3::eml23__IntegerXmlArray const*>(arrayInput);
886 const std::regex ws_re("\\s+"); // whitespace
887#if !defined(__GLIBCXX__) || __GLIBCXX__ > 20150623 || __GLIBCXX__ == 20140422 || __GLIBCXX__ == 20140716 || __GLIBCXX__ == 20141030
888 std::sregex_token_iterator it(xmlArray->Values.begin(), xmlArray->Values.end(), ws_re, -1);
889 std::sregex_token_iterator endToken;
890#else
891 boost::sregex_token_iterator it(xmlArray->Values.begin(), xmlArray->Values.end(), ws_re, -1);
892 boost::sregex_token_iterator endToken;
893#endif
894 size_t index = 0;
895 while (it != endToken) {
896 arrayOutput[index++] = std::stoll(*it++);
897 }
898 return (std::numeric_limits<T>::max)();
899 }
900 default: throw std::invalid_argument("The integer array type is not supported yet.");
901 }
902 }
903
913 void readArrayNdOfBooleanValues(gsoap_eml2_3::eml23__BooleanExternalArray const * arrayInput, int8_t * arrayOutput) const;
914
924 uint8_t readArrayNdOfUInt8Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint8_t * arrayOutput) const;
925
935 uint8_t readArrayNdOfUInt8Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint8_t * arrayOutput) const;
936
946 uint16_t readArrayNdOfUInt16Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint16_t * arrayOutput) const;
947
957 uint16_t readArrayNdOfUInt16Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint16_t * arrayOutput) const;
958
968 uint32_t readArrayNdOfUInt32Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint32_t * arrayOutput) const;
969
979 uint32_t readArrayNdOfUInt32Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint32_t * arrayOutput) const;
980
990 uint64_t readArrayNdOfUInt64Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint64_t * arrayOutput) const;
991
1001 uint64_t readArrayNdOfUInt64Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint64_t * arrayOutput) const;
1002
1012 int8_t readArrayNdOfInt8Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int8_t * arrayOutput) const;
1013
1023 int8_t readArrayNdOfInt8Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int8_t * arrayOutput) const;
1024
1034 int16_t readArrayNdOfInt16Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int16_t * arrayOutput) const;
1035
1045 int16_t readArrayNdOfInt16Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int16_t * arrayOutput) const;
1046
1056 int32_t readArrayNdOfInt32Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int32_t * arrayOutput) const;
1057
1067 int32_t readArrayNdOfInt32Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int32_t * arrayOutput) const;
1068
1078 int64_t readArrayNdOfInt64Values(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int64_t * arrayOutput) const;
1079
1089 int64_t readArrayNdOfInt64Values(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int64_t * arrayOutput) const;
1090
1098 uint64_t getCountOfArray(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput) const;
1099
1107 uint64_t getCountOfArray(gsoap_eml2_3::eml23__AbstractValueArray const * arrayInput) const;
1108
1114 void convertDorIntoRel(const DataObjectReference& dor);
1115
1125 template <class valueType>
1126 void convertDorIntoRel(const DataObjectReference& dor)
1127 {
1128 valueType * targetObj = getRepository()->getDataObjectByUuid<valueType>(dor.getUuid());
1129 if (targetObj == nullptr) { // partial transfer
1130 getRepository()->createPartial(dor);
1131 targetObj = getRepository()->getDataObjectByUuid<valueType>(dor.getUuid());
1132 if (targetObj == nullptr) {
1133 throw std::invalid_argument("The DOR looks invalid.");
1134 }
1135 targetObj->setUriSource(getUriSource());
1136 }
1137 getRepository()->addRelationship(this, targetObj);
1138 }
1139
1151 EML2_NS::AbstractHdfProxy* getHdfProxyFromDataset(gsoap_resqml2_0_1::eml20__Hdf5Dataset const * dataset, bool throwException = true) const;
1152
1163 EML2_NS::AbstractHdfProxy* getOrCreateHdfProxyFromDataArrayPart(gsoap_eml2_3::eml23__ExternalDataArrayPart const * dataArrayPart) const;
1164
1168 std::string getHdfGroup() const {
1169 return "/" + getXmlNamespace() + "/" + getUuid();
1170 }
1171
1175 gsoap_eml2_3::eml23__ExternalDataArrayPart* createExternalDataArrayPart(const std::string& datasetName, LONG64 count, EML2_NS::AbstractHdfProxy* proxy = nullptr) const;
1176
1177 gsoap_resqml2_0_1::resqml20__IndexableElements mapIndexableElement(gsoap_eml2_3::eml23__IndexableElement toMap) const;
1178
1179 private:
1181 static char citationFormat[];
1182
1186 std::string uriSource_;
1187
1195 void setUuid(const std::string & uuid);
1196 };
1197}
An abstract data object.
Definition AbstractObject.h:33
soap * getGsoapContext() const
void setCreation(const tm &creation)
void setGsoapProxy(gsoap_eml2_3::eml23__AbstractObject *gsoapProxy)
Definition AbstractObject.h:390
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
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:637
unsigned int getExtraMetadataCount() const
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:441
void setUriSource(const std::string &uriSource)
Definition AbstractObject.h:645
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
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)
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:650
std::string getAliasTitleAtIndex(uint64_t index) const
void setLastUpdate(const tm &lastUpdate)
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:656
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)
std::string getTitle() const
std::vector< eml2::Activity * > getActivitySet() const
std::string getFormat() const
std::string getExtraMetadataKeyAtIndex(unsigned int index) const