Fesapi 2.1.0.0
This project provides C++ classes which allow an easy access in import and export to the Energistics standards.
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 <unordered_map>
22#include <vector>
23#include <stdexcept>
24
25#include "../proxies/gsoap_witsml1_4H.h"
26
27#include "DataObjectRepository.h"
28
29namespace COMMON_NS
30{
33 {
34 public:
35
36 enum hdfDatatypeEnum { UNKNOWN = 0, DOUBLE = 1, FLOAT = 2, LONG_64 = 3, ULONG_64 = 4, INT = 5, UINT = 6, SHORT = 7, USHORT = 8, CHAR = 9, UCHAR = 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_1::eml21__AbstractObject* getEml21GsoapProxy() const { return gsoapProxy2_1; }
390 void setGsoapProxy(gsoap_eml2_1::eml21__AbstractObject* gsoapProxy) { gsoapProxy2_1 = gsoapProxy; }
391
397 gsoap_eml2_2::eml22__AbstractObject* getEml22GsoapProxy() const { return gsoapProxy2_2; }
403 void setGsoapProxy(gsoap_eml2_2::eml22__AbstractObject* gsoapProxy) { gsoapProxy2_2 = gsoapProxy; }
404
410 gsoap_eml2_3::eml23__AbstractObject* getEml23GsoapProxy() const { return gsoapProxy2_3; }
416 void setGsoapProxy(gsoap_eml2_3::eml23__AbstractObject* gsoapProxy) { gsoapProxy2_3 = gsoapProxy; }
417
423 soap* getGsoapContext() const;
424
432 int getGsoapType() const;
433
439 gsoap_resqml2_0_1::eml20__DataObjectReference* newResqmlReference() const;
440
446 DLL_IMPORT_OR_EXPORT gsoap_eml2_1::eml21__DataObjectReference* newEmlReference() const;
447
453 gsoap_eml2_2::eml22__DataObjectReference* newEml22Reference() const;
454
460 gsoap_eml2_3::eml23__DataObjectReference* newEml23Reference() const;
461
467 gsoap_resqml2_0_1::resqml20__ContactElementReference* newContactElementReference2_0_1() const;
468
474 gsoap_eml2_3::resqml22__ContactElement* newContactElementReference2_2() const;
475
481 DLL_IMPORT_OR_EXPORT COMMON_NS::DataObjectRepository* getRepository() const {return repository;}
482
488 DLL_IMPORT_OR_EXPORT virtual std::string getXmlNamespace() const = 0;
489
495 DLL_IMPORT_OR_EXPORT virtual std::string getXmlTag() const = 0;
496
503 DLL_IMPORT_OR_EXPORT virtual std::string getXmlNamespaceVersion() const;
504
510 DLL_IMPORT_OR_EXPORT virtual std::string getContentType() const;
511
517 DLL_IMPORT_OR_EXPORT virtual std::string getQualifiedType() const;
518
524 DLL_IMPORT_OR_EXPORT virtual std::string getPartNameInEpcDocument() const;
525
531 DLL_IMPORT_OR_EXPORT std::string serializeIntoString();
532
542 DLL_IMPORT_OR_EXPORT void addAlias(const std::string & authority, const std::string & title);
543
553 DLL_IMPORT_OR_EXPORT unsigned int getAliasCount() const;
554
566 DLL_IMPORT_OR_EXPORT std::string getAliasAuthorityAtIndex(unsigned int index) const;
567
579 DLL_IMPORT_OR_EXPORT std::string getAliasTitleAtIndex(unsigned int index) const;
580
586 DLL_IMPORT_OR_EXPORT std::vector<EML2_NS::Activity*> getActivitySet() const;
587
596 DLL_IMPORT_OR_EXPORT unsigned int getActivityCount() const;
597
609 DLL_IMPORT_OR_EXPORT EML2_NS::Activity* getActivity(unsigned int index) const;
610
619 DLL_IMPORT_OR_EXPORT void pushBackExtraMetadata(const std::string & key, const std::string & value);
620
628 DLL_IMPORT_OR_EXPORT std::unordered_map< std::string, std::string > getExtraMetadataSet() const;
629
639 DLL_IMPORT_OR_EXPORT std::vector<std::string> getExtraMetadata(const std::string & key) const;
640
648 DLL_IMPORT_OR_EXPORT unsigned int getExtraMetadataCount() const;
649
660 DLL_IMPORT_OR_EXPORT std::string getExtraMetadataKeyAtIndex(unsigned int index) const;
661
672 DLL_IMPORT_OR_EXPORT std::string getExtraMetadataStringValueAtIndex(unsigned int index) const;
673
678 DLL_IMPORT_OR_EXPORT std::string buildEtp12Uri() const;
679
684 virtual void loadTargetRelationships() = 0;
685
686 protected:
688 gsoap_resqml2_0_1::eml20__DataObjectReference* partialObject;
689
691 gsoap_witsml1_4::witsml14__obj_USCOREtrajectory* gsoapProxyTraj1_4;
692
694 gsoap_resqml2_0_1::eml20__AbstractCitedDataObject* gsoapProxy2_0_1;
695
697 gsoap_eml2_1::eml21__AbstractObject* gsoapProxy2_1;
698
700 gsoap_eml2_2::eml22__AbstractObject* gsoapProxy2_2;
701
703 gsoap_eml2_3::eml23__AbstractObject* gsoapProxy2_3;
704
706 COMMON_NS::DataObjectRepository* repository;
707
712 partialObject(nullptr), gsoapProxyTraj1_4(nullptr),
713 gsoapProxy2_0_1(nullptr),
714 gsoapProxy2_1(nullptr),
715 gsoapProxy2_2(nullptr),
716 gsoapProxy2_3(nullptr),
717 repository(nullptr) {}
718
724 AbstractObject(gsoap_resqml2_0_1::eml20__DataObjectReference* partialObject_) :
725 partialObject(partialObject_), gsoapProxyTraj1_4(nullptr),
726 gsoapProxy2_0_1(nullptr),
727 gsoapProxy2_1(nullptr),
728 gsoapProxy2_2(nullptr),
729 gsoapProxy2_3(nullptr),
730 repository(nullptr) {}
731 AbstractObject(const DataObjectReference& dor) :
732 partialObject(dor.toDor20()), gsoapProxyTraj1_4(nullptr),
733 gsoapProxy2_0_1(nullptr),
734 gsoapProxy2_1(nullptr),
735 gsoapProxy2_2(nullptr),
736 gsoapProxy2_3(nullptr),
737 repository(nullptr) {}
738
744 AbstractObject(gsoap_witsml1_4::witsml14__obj_USCOREtrajectory* proxy) :
745 partialObject(nullptr), gsoapProxyTraj1_4(proxy),
746 gsoapProxy2_0_1(nullptr),
747 gsoapProxy2_1(nullptr),
748 gsoapProxy2_2(nullptr),
749 gsoapProxy2_3(nullptr),
750 repository(nullptr) {}
751
757 AbstractObject(gsoap_resqml2_0_1::eml20__AbstractCitedDataObject* proxy) :
758 partialObject(nullptr), gsoapProxyTraj1_4(nullptr),
759 gsoapProxy2_0_1(proxy),
760 gsoapProxy2_1(nullptr),
761 gsoapProxy2_2(nullptr),
762 gsoapProxy2_3(nullptr),
763 repository(nullptr) {}
764
770 AbstractObject(gsoap_eml2_1::eml21__AbstractObject* proxy) :
771 partialObject(nullptr), gsoapProxyTraj1_4(nullptr),
772 gsoapProxy2_0_1(nullptr),
773 gsoapProxy2_1(proxy),
774 gsoapProxy2_2(nullptr),
775 gsoapProxy2_3(nullptr),
776 repository(nullptr) {}
777
783 AbstractObject(gsoap_eml2_2::eml22__AbstractObject* proxy) :
784 partialObject(nullptr), gsoapProxyTraj1_4(nullptr),
785 gsoapProxy2_0_1(nullptr),
786 gsoapProxy2_1(nullptr),
787 gsoapProxy2_2(proxy),
788 gsoapProxy2_3(nullptr),
789 repository(nullptr) {}
790
796 AbstractObject(gsoap_eml2_3::eml23__AbstractObject* proxy) :
797 partialObject(nullptr), gsoapProxyTraj1_4(nullptr),
798 gsoapProxy2_0_1(nullptr),
799 gsoapProxy2_1(nullptr),
800 gsoapProxy2_2(nullptr),
801 gsoapProxy2_3(proxy),
802 repository(nullptr) {}
803
804
805 friend bool COMMON_NS::DataObjectRepository::addDataObject(COMMON_NS::AbstractObject* proxy);
806 friend COMMON_NS::AbstractObject* COMMON_NS::DataObjectRepository::addOrReplaceDataObject(AbstractObject* proxy, bool replaceOnlyContent);
807
812 void initMandatoryMetadata();
813
830 void setMetadata(const std::string & guid, const std::string & title, const std::string & editor, time_t creation, const std::string & originator,
831 const std::string & description, time_t lastUpdate, const std::string & descriptiveKeywords);
832
834 void cannotBePartial() const;
835
837 void changeToPartialObject();
838
846 void readArrayNdOfDoubleValues(gsoap_resqml2_0_1::resqml20__AbstractDoubleArray * arrayInput, double * arrayOutput) const;
847
855 void readArrayNdOfDoubleValues(gsoap_eml2_3::eml23__AbstractFloatingPointArray * arrayInput, double * arrayOutput) const;
856
857 template <class T>
858 void readArrayNdOfNonHdf5IntegerValues(gsoap_resqml2_0_1::resqml20__AbstractIntegerArray const * arrayInput, T * arrayOutput) const {
859 switch (arrayInput->soap_type()) {
860 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerRangeArray:
861 {
862 gsoap_resqml2_0_1::resqml20__IntegerRangeArray const* rangeArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerRangeArray const *>(arrayInput);
863 if (rangeArray->Value + rangeArray->Count > (std::numeric_limits<T>::max)()) {
864 throw std::range_error("The range integer values are superior to unsigned int maximum value.");
865 }
866 for (unsigned int i = 0; i < static_cast<T>(rangeArray->Count); ++i) {
867 arrayOutput[i] = i + static_cast<T>(rangeArray->Value);
868 }
869 break;
870 }
871 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerConstantArray:
872 {
873 gsoap_resqml2_0_1::resqml20__IntegerConstantArray const* constantArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerConstantArray const*>(arrayInput);
874 if (constantArray->Value > (std::numeric_limits<T>::max)()) {
875 throw std::range_error("The constant integer value is superior to unsigned int maximum value.");
876 }
877 for (size_t i = 0; i < constantArray->Count; ++i) {
878 arrayOutput[i] = static_cast<T>(constantArray->Value);
879 }
880 break;
881 }
882 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerLatticeArray:
883 {
884 gsoap_resqml2_0_1::resqml20__IntegerLatticeArray const* latticeArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerLatticeArray const*>(arrayInput);
885 if (latticeArray->Offset.size() > 1) {
886 throw std::invalid_argument("The integer lattice array contains more than one offset.");
887 }
888 for (size_t i = 0; i <= latticeArray->Offset[0]->Count; ++i) {
889 arrayOutput[i] = latticeArray->StartValue + (i * latticeArray->Offset[0]->Value);
890 }
891 break;
892 }
893 default:
894 throw std::invalid_argument("The integer array type is not supported yet.");
895 }
896 }
897
898 template <class T>
899 void readArrayNdOfNonHdf5IntegerValues(gsoap_eml2_3::eml23__AbstractIntegerArray const * arrayInput, T * arrayOutput) const {
900 switch (arrayInput->soap_type()) {
901 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerRangeArray:
902 {
903 gsoap_eml2_3::eml23__IntegerRangeArray const* rangeArray = static_cast<gsoap_eml2_3::eml23__IntegerRangeArray const*>(arrayInput);
904 if (rangeArray->Value + rangeArray->Count > (std::numeric_limits<T>::max)()) {
905 throw std::range_error("The range integer values are superior to unsigned int maximum value.");
906 }
907 for (unsigned int i = 0; i < static_cast<T>(rangeArray->Count); ++i) {
908 arrayOutput[i] = i + static_cast<T>(rangeArray->Value);
909 }
910 break;
911 }
912 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerConstantArray:
913 {
914 gsoap_eml2_3::eml23__IntegerConstantArray const* constantArray = static_cast<gsoap_eml2_3::eml23__IntegerConstantArray const*>(arrayInput);
915 if (constantArray->Value > (std::numeric_limits<T>::max)()) {
916 throw std::range_error("The constant integer value is superior to unsigned int maximum value.");
917 }
918 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
919 break;
920 }
921 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerLatticeArray:
922 {
923 gsoap_eml2_3::eml23__IntegerLatticeArray const* latticeArray = static_cast<gsoap_eml2_3::eml23__IntegerLatticeArray const*>(arrayInput);
924 if (latticeArray->Offset.size() > 1) {
925 throw std::invalid_argument("The integer lattice array contains more than one offset.");
926 }
927 for (size_t i = 0; i <= latticeArray->Offset[0]->Count; ++i) {
928 arrayOutput[i] = latticeArray->StartValue + (i * latticeArray->Offset[0]->Value);
929 }
930 break;
931 }
932 default: throw std::invalid_argument("The integer array type is not supported yet.");
933 }
934 }
935
945 uint8_t readArrayNdOfUInt8Values(gsoap_resqml2_0_1::resqml20__AbstractIntegerArray const * arrayInput, uint8_t * arrayOutput) const;
946
956 uint8_t readArrayNdOfUInt8Values(gsoap_eml2_3::eml23__AbstractIntegerArray const * arrayInput, uint8_t * arrayOutput) const;
957
967 uint16_t readArrayNdOfUInt16Values(gsoap_resqml2_0_1::resqml20__AbstractIntegerArray const * arrayInput, uint16_t * arrayOutput) const;
968
978 uint16_t readArrayNdOfUInt16Values(gsoap_eml2_3::eml23__AbstractIntegerArray const * arrayInput, uint16_t * arrayOutput) const;
979
989 uint32_t readArrayNdOfUInt32Values(gsoap_resqml2_0_1::resqml20__AbstractIntegerArray const * arrayInput, uint32_t * arrayOutput) const;
990
1000 uint32_t readArrayNdOfUInt32Values(gsoap_eml2_3::eml23__AbstractIntegerArray const * arrayInput, uint32_t * arrayOutput) const;
1001
1011 uint64_t readArrayNdOfUInt64Values(gsoap_resqml2_0_1::resqml20__AbstractIntegerArray const * arrayInput, uint64_t * arrayOutput) const;
1012
1022 uint64_t readArrayNdOfUInt64Values(gsoap_eml2_3::eml23__AbstractIntegerArray const * arrayInput, uint64_t * arrayOutput) const;
1023
1033 int64_t readArrayNdOfInt64Values(gsoap_resqml2_0_1::resqml20__AbstractIntegerArray const * arrayInput, int64_t * arrayOutput) const;
1034
1044 int64_t readArrayNdOfInt64Values(gsoap_eml2_3::eml23__AbstractIntegerArray const * arrayInput, int64_t * arrayOutput) const;
1045
1053 uint64_t getCountOfIntegerArray(gsoap_resqml2_0_1::resqml20__AbstractIntegerArray * arrayInput) const;
1054
1062 uint64_t getCountOfIntegerArray(gsoap_eml2_3::eml23__AbstractIntegerArray * arrayInput) const;
1063
1069 void convertDorIntoRel(const DataObjectReference& dor);
1070
1080 template <class valueType>
1081 void convertDorIntoRel(const DataObjectReference& dor)
1082 {
1083 valueType * targetObj = getRepository()->getDataObjectByUuid<valueType>(dor.getUuid());
1084 if (targetObj == nullptr) { // partial transfer
1085 getRepository()->createPartial(dor);
1086 targetObj = getRepository()->getDataObjectByUuid<valueType>(dor.getUuid());
1087 if (targetObj == nullptr) {
1088 throw std::invalid_argument("The DOR looks invalid.");
1089 }
1090 }
1091 getRepository()->addRelationship(this, targetObj);
1092 }
1093
1105 EML2_NS::AbstractHdfProxy* getHdfProxyFromDataset(gsoap_resqml2_0_1::eml20__Hdf5Dataset const * dataset, bool throwException = true) const;
1106
1118 EML2_NS::AbstractHdfProxy* getHdfProxyFromDataset(gsoap_eml2_3::eml23__ExternalDatasetPart const * dataset, bool throwException = true) const;
1119
1123 std::string getHdfGroup() const {
1124 return "/" + getXmlNamespace() + "/" + getUuid();
1125 }
1126
1127 gsoap_resqml2_0_1::resqml20__IndexableElements mapIndexableElement(gsoap_eml2_3::resqml22__IndexableElement toMap) const;
1128
1129 private:
1131 static char citationFormat[];
1132
1140 void setUuid(const std::string & uuid);
1141 };
1142}
An abstract data object.
Definition: AbstractObject.h:33
gsoap_eml2_2::eml22__DataObjectReference * newEml22Reference() const
soap * getGsoapContext() const
gsoap_eml2_1::eml21__DataObjectReference * newEmlReference() const
void setGsoapProxy(gsoap_eml2_2::eml22__AbstractObject *gsoapProxy)
Definition: AbstractObject.h:403
void setCreation(const tm &creation)
void setGsoapProxy(gsoap_eml2_3::eml23__AbstractObject *gsoapProxy)
Definition: AbstractObject.h:416
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
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:481
std::string getEditor() const
bool isPartial() const
gsoap_eml2_3::eml23__DataObjectReference * newEml23Reference() const
void setGsoapProxy(gsoap_eml2_1::eml21__AbstractObject *gsoapProxy)
Definition: AbstractObject.h:390
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
gsoap_eml2_1::eml21__AbstractObject * getEml21GsoapProxy() const
Definition: AbstractObject.h:384
gsoap_eml2_2::eml22__AbstractObject * getEml22GsoapProxy() const
Definition: AbstractObject.h:397
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)
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:410
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
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::vector< eml2::Activity * > getActivitySet() const
std::string getFormat() const
std::string getExtraMetadataKeyAtIndex(unsigned int index) const