Fesapi 2.14.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 DLL_IMPORT_OR_EXPORT void cannotBePartial() const;
779
787 DLL_IMPORT_OR_EXPORT void readArrayNdOfFloatValues(gsoap_resqml2_0_1::resqml20__AbstractDoubleArray const* arrayInput, float* arrayOutput) const;
788
796 DLL_IMPORT_OR_EXPORT void readArrayNdOfFloatValues(gsoap_eml2_3::eml23__AbstractFloatingPointArray const* arrayInput, float* arrayOutput) const;
797
805 DLL_IMPORT_OR_EXPORT void readArrayNdOfDoubleValues(gsoap_resqml2_0_1::resqml20__AbstractDoubleArray const* arrayInput, double * arrayOutput) const;
806
814 DLL_IMPORT_OR_EXPORT 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 constexpr (std::is_signed_v<T>) {
823 if (rangeArray->Value < (std::numeric_limits<T>::min)()) {
824 throw std::overflow_error("Too low integers in XML for the C++ chosen datatype");
825 }
826 }
827 else {
828 if (rangeArray->Value < 0 ) {
829 throw std::underflow_error("Cannot deal with negative values when using unsigned integer");
830 }
831 }
832 if (rangeArray->Value + rangeArray->Count > static_cast<uint64_t>((std::numeric_limits<T>::max)())) {
833 throw std::overflow_error("The range integer values are superior to maximum value of read datatype.");
834 }
835 for (T i = 0; i < static_cast<T>(rangeArray->Count); ++i) {
836 arrayOutput[i] = i + static_cast<T>(rangeArray->Value);
837 }
838 return (std::numeric_limits<T>::max)();
839 }
840 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__IntegerConstantArray:
841 {
842 gsoap_resqml2_0_1::resqml20__IntegerConstantArray const* constantArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerConstantArray const*>(arrayInput);
843 T value;
844 if constexpr (std::is_signed_v<T>) {
845 value = static_cast<T>(std::clamp(constantArray->Value,
846 static_cast<int64_t>((std::numeric_limits<T>::min)()), static_cast<int64_t>((std::numeric_limits<T>::max)())));
847 }
848 else {
849 value = constantArray->Value > 0
850 ? static_cast<T>(std::clamp(static_cast<uint64_t>(constantArray->Value), static_cast<uint64_t>(0), static_cast<uint64_t>((std::numeric_limits<T>::max)())))
851 : (std::numeric_limits<T>::max)();
852 }
853 std::fill(arrayOutput, arrayOutput + constantArray->Count, value);
854 return (std::numeric_limits<T>::max)();
855 }
856 case SOAP_TYPE_gsoap_resqml2_0_1_resqml20__BooleanConstantArray:
857 {
858 gsoap_resqml2_0_1::resqml20__BooleanConstantArray const* constantArray = static_cast<gsoap_resqml2_0_1::resqml20__BooleanConstantArray const*>(arrayInput);
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_resqml2_0_1_resqml20__IntegerLatticeArray:
863 {
864 gsoap_resqml2_0_1::resqml20__IntegerLatticeArray const* latticeArray = static_cast<gsoap_resqml2_0_1::resqml20__IntegerLatticeArray const*>(arrayInput);
865 if (latticeArray->Offset.size() > 1) {
866 throw std::invalid_argument("The integer lattice array contains more than one offset.");
867 }
868 if constexpr (std::is_signed_v<T>) {
869 if (latticeArray->StartValue < (std::numeric_limits<T>::min)() || latticeArray->Offset[0]->Value < (std::numeric_limits<T>::min)()) {
870 throw std::underflow_error("Too low integers in XML for the C++ chosen datatype");
871 }
872 if (latticeArray->StartValue > (std::numeric_limits<T>::max)() ||
873 latticeArray->Offset[0]->Value > (std::numeric_limits<T>::max)()) {
874 throw std::overflow_error("Too big integers in XML for the C++ chosen datatype");
875 }
876 }
877 else {
878 if (latticeArray->StartValue < 0 || latticeArray->Offset[0]->Value < 0) {
879 throw std::underflow_error("Cannot deal with negative values when using unsigned integer");
880 }
881 if (static_cast<uint64_t>(latticeArray->StartValue) > (std::numeric_limits<T>::max)() ||
882 static_cast<uint64_t>(latticeArray->Offset[0]->Value) > (std::numeric_limits<T>::max)()) {
883 throw std::overflow_error("Too big integers in XML for the C++ chosen datatype");
884 }
885 }
886 for (uint64_t i = 0; i <= latticeArray->Offset[0]->Count; ++i) {
887 arrayOutput[i] = static_cast<T>(latticeArray->StartValue) + (i * static_cast<T>(latticeArray->Offset[0]->Value));
888 }
889 return (std::numeric_limits<T>::max)();
890 }
891 default:
892 throw std::invalid_argument("The integer array type is not supported yet.");
893 }
894 }
895
896 template <class T>
897 T readArrayNdOfNonHdf5IntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const * arrayInput, T * arrayOutput) const {
898 switch (arrayInput->soap_type()) {
899 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerConstantArray:
900 {
901 gsoap_eml2_3::eml23__IntegerConstantArray const* constantArray = static_cast<gsoap_eml2_3::eml23__IntegerConstantArray const*>(arrayInput);
902 if constexpr (std::is_signed_v<T>) {
903 if (constantArray->Value < (std::numeric_limits<T>::min)()) {
904 throw std::underflow_error("Too low integers in XML for the C++ chosen datatype");
905 }
906 if (constantArray->Value > (std::numeric_limits<T>::max)()) {
907 throw std::overflow_error("Too big integers in XML for the C++ chosen datatype");
908 }
909 }
910 else {
911 if (constantArray->Value < 0) {
912 throw std::underflow_error("Cannot deal with negative values when using unsigned integer");
913 }
914 if (static_cast<uint64_t>(constantArray->Value) > (std::numeric_limits<T>::max)()) {
915 throw std::overflow_error("Too big integers in XML for the C++ chosen datatype");
916 }
917 }
918 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
919 return (std::numeric_limits<T>::max)();
920 }
921 case SOAP_TYPE_gsoap_eml2_3_eml23__BooleanConstantArray:
922 {
923 gsoap_eml2_3::eml23__BooleanConstantArray const* constantArray = static_cast<gsoap_eml2_3::eml23__BooleanConstantArray const*>(arrayInput);
924 std::fill(arrayOutput, arrayOutput + constantArray->Count, static_cast<T>(constantArray->Value));
925 return (std::numeric_limits<T>::max)();
926 }
927 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerLatticeArray:
928 {
929 gsoap_eml2_3::eml23__IntegerLatticeArray const* latticeArray = static_cast<gsoap_eml2_3::eml23__IntegerLatticeArray const*>(arrayInput);
930 if (latticeArray->Offset.empty() || latticeArray->Offset.size() > 1) {
931 throw std::invalid_argument("The integer lattice array of UUID " + getUuid() + " contains zero or more than one offset.");
932 }
933 if (latticeArray->Offset[0]->Count < 0) {
934 throw std::invalid_argument("The count of the integer lattice array of UUID " + getUuid() + " is negative which is not valid.");
935 }
936
937 for (size_t i = 0; i <= static_cast<size_t>(latticeArray->Offset[0]->Count); ++i) {
938 arrayOutput[i] = latticeArray->StartValue + (i * latticeArray->Offset[0]->Value);
939 }
940 return (std::numeric_limits<T>::max)();
941 }
942 case SOAP_TYPE_gsoap_eml2_3_eml23__IntegerXmlArray:
943 {
944 gsoap_eml2_3::eml23__IntegerXmlArray const * xmlArray = static_cast<gsoap_eml2_3::eml23__IntegerXmlArray const*>(arrayInput);
945 const std::regex ws_re("\\s+"); // whitespace
946 std::sregex_token_iterator it(xmlArray->Values.begin(), xmlArray->Values.end(), ws_re, -1);
947 std::sregex_token_iterator endToken;
948 size_t index = 0;
949 while (it != endToken) {
950 arrayOutput[index++] = std::stoll(*it++);
951 }
952 return (std::numeric_limits<T>::max)();
953 }
954 default: throw std::invalid_argument("The integer array type is not supported yet.");
955 }
956 }
957
967 void readArrayNdOfBooleanValues(gsoap_eml2_3::eml23__BooleanExternalArray const * arrayInput, int8_t * arrayOutput) const;
968
978 template<typename T>
979 T readArrayNdOfIntegerValues(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, T* arrayOutput) const;
980
990 template<typename T>
991 T readArrayNdOfIntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, T* arrayOutput) const;
992
1000 uint64_t getCountOfArray(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput) const;
1001
1009 uint64_t getCountOfArray(gsoap_eml2_3::eml23__AbstractValueArray const * arrayInput) const;
1010
1016 void convertDorIntoRel(const DataObjectReference& dor);
1017
1027 template <class valueType>
1028 void convertDorIntoRel(const DataObjectReference& dor)
1029 {
1030 valueType * targetObj = getRepository()->getDataObjectByUuid<valueType>(dor.getUuid());
1031 if (targetObj == nullptr) { // partial transfer
1032 getRepository()->createPartial(dor);
1033 targetObj = getRepository()->getDataObjectByUuid<valueType>(dor.getUuid());
1034 if (targetObj == nullptr) {
1035 throw std::invalid_argument("The DOR looks invalid.");
1036 }
1037 targetObj->setUriSource(getUriSource());
1038 }
1039 getRepository()->addRelationship(this, targetObj);
1040 }
1041
1053 EML2_NS::AbstractHdfProxy* getHdfProxyFromDataset(gsoap_resqml2_0_1::eml20__Hdf5Dataset const * dataset, bool throwException = true) const;
1054
1065 EML2_NS::AbstractHdfProxy* getOrCreateHdfProxyFromDataArrayPart(gsoap_eml2_3::eml23__ExternalDataArrayPart const * dataArrayPart) const;
1066
1070 std::string getHdfGroup() const {
1071 return "/" + getXmlNamespace() + "/" + getUuid();
1072 }
1073
1077 gsoap_eml2_3::eml23__ExternalDataArrayPart* createExternalDataArrayPart(const std::string& datasetName, LONG64 count, EML2_NS::AbstractHdfProxy* proxy = nullptr) const;
1078
1079 gsoap_resqml2_0_1::resqml20__IndexableElements mapIndexableElement(gsoap_eml2_3::eml23__IndexableElement toMap) const;
1080
1081 private:
1083 static char citationFormat[];
1084
1088 std::string uriSource_;
1089
1097 void setUuid(const std::string & uuid);
1098 };
1099
1100 template<> DLL_IMPORT_OR_EXPORT int8_t AbstractObject::readArrayNdOfIntegerValues(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int8_t* arrayOutput) const;
1101 template<> DLL_IMPORT_OR_EXPORT uint8_t AbstractObject::readArrayNdOfIntegerValues(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint8_t* arrayOutput) const;
1102 template<> DLL_IMPORT_OR_EXPORT int16_t AbstractObject::readArrayNdOfIntegerValues(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int16_t* arrayOutput) const;
1103 template<> DLL_IMPORT_OR_EXPORT uint16_t AbstractObject::readArrayNdOfIntegerValues(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint16_t* arrayOutput) const;
1104 template<> DLL_IMPORT_OR_EXPORT int32_t AbstractObject::readArrayNdOfIntegerValues(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int32_t* arrayOutput) const;
1105 template<> DLL_IMPORT_OR_EXPORT uint32_t AbstractObject::readArrayNdOfIntegerValues(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint32_t* arrayOutput) const;
1106 template<> DLL_IMPORT_OR_EXPORT int64_t AbstractObject::readArrayNdOfIntegerValues(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, int64_t* arrayOutput) const;
1107 template<> DLL_IMPORT_OR_EXPORT uint64_t AbstractObject::readArrayNdOfIntegerValues(gsoap_resqml2_0_1::resqml20__AbstractValueArray const* arrayInput, uint64_t* arrayOutput) const;
1108
1109 template<> DLL_IMPORT_OR_EXPORT int8_t AbstractObject::readArrayNdOfIntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int8_t* arrayOutput) const;
1110 template<> DLL_IMPORT_OR_EXPORT uint8_t AbstractObject::readArrayNdOfIntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint8_t* arrayOutput) const;
1111 template<> DLL_IMPORT_OR_EXPORT int16_t AbstractObject::readArrayNdOfIntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int16_t* arrayOutput) const;
1112 template<> DLL_IMPORT_OR_EXPORT uint16_t AbstractObject::readArrayNdOfIntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint16_t* arrayOutput) const;
1113 template<> DLL_IMPORT_OR_EXPORT int32_t AbstractObject::readArrayNdOfIntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int32_t* arrayOutput) const;
1114 template<> DLL_IMPORT_OR_EXPORT uint32_t AbstractObject::readArrayNdOfIntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint32_t* arrayOutput) const;
1115 template<> DLL_IMPORT_OR_EXPORT int64_t AbstractObject::readArrayNdOfIntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, int64_t* arrayOutput) const;
1116 template<> DLL_IMPORT_OR_EXPORT uint64_t AbstractObject::readArrayNdOfIntegerValues(gsoap_eml2_3::eml23__AbstractValueArray const* arrayInput, uint64_t* arrayOutput) const;
1117}
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