Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef OPENMS_FORMAT_CONTROLLEDVOCABULARY_H
00036 #define OPENMS_FORMAT_CONTROLLEDVOCABULARY_H
00037
00038 #include <OpenMS/DATASTRUCTURES/StringList.h>
00039 #include <OpenMS/DATASTRUCTURES/Map.h>
00040 #include <OpenMS/CONCEPT/Exception.h>
00041
00042 #include <set>
00043
00044 namespace OpenMS
00045 {
00054 class OPENMS_DLLAPI ControlledVocabulary
00055 {
00056 friend OPENMS_DLLAPI std::ostream& operator<<(std::ostream& os, const ControlledVocabulary& cv);
00057
00058 public:
00060 struct OPENMS_DLLAPI CVTerm
00061 {
00063 enum XRefType
00064 {
00065 XSD_STRING = 0,
00066 XSD_INTEGER,
00067 XSD_DECIMAL,
00068 XSD_NEGATIVE_INTEGER,
00069 XSD_POSITIVE_INTEGER,
00070 XSD_NON_NEGATIVE_INTEGER,
00071 XSD_NON_POSITIVE_INTEGER,
00072 XSD_BOOLEAN,
00073 XSD_DATE,
00074 XSD_ANYURI,
00075 NONE
00076 };
00077
00078 static String getXRefTypeName(XRefType type);
00079
00080 String name;
00081 String id;
00082 std::set<String> parents;
00083 std::set<String> children;
00084 bool obsolete;
00085 String description;
00086 StringList synonyms;
00087 StringList unparsed;
00088 XRefType xref_type;
00089 StringList xref_binary;
00090 std::set<String> units;
00091
00093 CVTerm();
00094
00095 CVTerm(const CVTerm& rhs);
00096
00097 CVTerm& operator=(const CVTerm& rhs);
00098
00100 String toXMLString(const String& ref, const String& value = String("")) const;
00101
00103 String toXMLString(const String& ref, const DataValue& value) const;
00104
00105 };
00106
00108 ControlledVocabulary();
00109
00111 virtual ~ControlledVocabulary();
00112
00114 const String& name() const;
00115
00122 void loadFromOBO(const String& name, const String& filename);
00123
00125 bool exists(const String& id) const;
00126
00128 bool hasTermWithName(const String& name) const;
00129
00135 const CVTerm& getTerm(const String& id) const;
00136
00142 const CVTerm& getTermByName(const String& name, const String& desc = "") const;
00143
00144
00146 const Map<String, CVTerm>& getTerms() const;
00147
00155 void getAllChildTerms(std::set<String>& terms, const String& parent) const;
00156
00162 bool isChildOf(const String& child, const String& parent) const;
00163
00164 protected:
00170 bool checkName_(const String& id, const String& name, bool ignore_case = true);
00171
00173 Map<String, CVTerm> terms_;
00175 Map<String, String> namesToIds_;
00177 String name_;
00178 };
00179
00181 OPENMS_DLLAPI std::ostream& operator<<(std::ostream& os, const ControlledVocabulary& cv);
00182
00183
00184 }
00185
00186 #endif // OPENMS_FORMAT_CONTROLLEDVOCABULARY_H