1 #ifndef _CONFIG_CATEGORY_H 2 #define _CONFIG_CATEGORY_H 17 #include <rapidjson/document.h> 18 #include <json_utils.h> 23 m_name(name), m_displayName(name), m_description(description) {};
25 m_name(name), m_displayName(displayName), m_description(description) {};
26 std::string getName()
const {
return m_name; };
27 std::string getDisplayName()
const {
return m_displayName; };
28 std::string getDescription()
const {
return m_description; };
30 std::string
toJSON()
const;
32 const std::string m_name;
33 const std::string m_displayName;
34 const std::string m_description;
42 unsigned int length() {
return m_categories.size(); };
44 return m_categories[idx];
49 std::string
toJSON()
const;
52 std::vector<ConfigCategoryDescription *> m_categories;
79 void addItem(
const std::string& name,
const std::string description,
80 const std::string& type,
const std::string def,
81 const std::string& value);
82 void addItem(
const std::string& name,
const std::string description,
83 const std::string def,
const std::string& value,
84 const std::vector<std::string> options);
86 void removeItemsType(ItemType type);
87 void keepItemsType(ItemType type);
89 void setDescription(
const std::string& description);
90 std::string getName()
const {
return m_name; };
91 std::string getDescription()
const {
return m_description; };
93 std::string getDisplayName()
const {
return m_displayName; };
94 void setDisplayName(
const std::string& displayName) {m_displayName = displayName;};
96 unsigned int getCount()
const {
return m_items.size(); };
97 bool itemExists(
const std::string& name)
const;
98 bool setItemDisplayName(
const std::string& name,
const std::string& displayName);
99 std::string getValue(
const std::string& name)
const;
100 std::vector<std::string> getValueList(
const std::string& name)
const;
101 std::map<std::string, std::string> getValueKVList(
const std::string& name)
const;
102 std::string getType(
const std::string& name)
const;
103 std::string getDescription(
const std::string& name)
const;
104 std::string getDefault(
const std::string& name)
const;
105 bool setDefault(
const std::string& name,
const std::string& value);
106 bool setValue(
const std::string& name,
const std::string& value);
107 std::string getDisplayName(
const std::string& name)
const;
108 std::string getmParentName()
const {
return (m_parent_name);};
109 std::vector<std::string> getOptions(
const std::string& name)
const;
110 std::string getLength(
const std::string& name)
const;
111 std::string getMinimum(
const std::string& name)
const;
112 std::string getMaximum(
const std::string& name)
const;
113 bool isString(
const std::string& name)
const;
114 bool isEnumeration(
const std::string& name)
const;
115 bool isJSON(
const std::string& name)
const;
116 bool isBool(
const std::string& name)
const;
117 bool isNumber(
const std::string& name)
const;
118 bool isDouble(
const std::string& name)
const;
119 bool isList(
const std::string& name)
const;
120 bool isKVList(
const std::string& name)
const;
121 bool isDeprecated(
const std::string& name)
const;
122 std::string
toJSON(
const bool full=
false)
const;
123 std::string itemsToJSON(
const bool full=
false)
const;
126 void setItemsValueFromDefault();
127 void checkDefaultValuesOnly()
const;
128 std::string itemToJSON(
const std::string& itemName)
const;
129 std::string to_string(
const rapidjson::Value& v)
const;
130 std::vector<std::string> getPermissions(
const std::string& name)
const;
131 bool hasPermission(
const std::string& name,
const std::string& username)
const;
145 BUCKET_PROPERTIES_ATTR,
149 KVLIST_KEY_NAME_ATTR,
150 KVLIST_KEY_DESCRIPTION_ATTR,
153 std::string getItemAttribute(
const std::string& itemName,
154 ItemAttribute itemAttribute)
const;
156 bool setItemAttribute(
const std::string& itemName,
157 ItemAttribute itemAttribute,
const std::string& value);
159 std::vector<std::pair<std::string,std::string>>* parseBucketItemValue(
const std::string &);
164 CategoryItem(
const std::string& name,
const rapidjson::Value& item);
165 CategoryItem(
const std::string& name,
const std::string& description,
166 const std::string& type,
const std::string def,
167 const std::string& value);
168 CategoryItem(
const std::string& name,
const std::string& description,
169 const std::string def,
const std::string& value,
170 const std::vector<std::string> options);
173 std::string
toJSON(
const bool full=
false)
const;
175 std::string defaultToJSON()
const;
179 std::string m_displayName;
181 std::string m_default;
183 std::string m_description;
185 std::string m_readonly;
186 std::string m_mandatory;
187 std::string m_deprecated;
188 std::string m_length;
189 std::string m_minimum;
190 std::string m_maximum;
191 std::string m_filename;
192 std::vector<std::string>
196 std::string m_validity;
199 std::string m_bucketProperties;
200 std::string m_listSize;
201 std::string m_listItemType;
202 std::string m_listName;
203 std::string m_kvlistKeyName;
204 std::string m_kvlistKeyDescription;
205 std::vector<std::string>
207 std::string m_jsonSchema;
209 std::vector<CategoryItem *> m_items;
211 std::string m_parent_name;
212 std::string m_description;
213 std::string m_displayName;
216 using iterator = std::vector<CategoryItem *>::iterator;
217 using const_iterator = std::vector<CategoryItem *>::const_iterator;
219 const_iterator begin()
const {
return m_items.begin(); }
220 const_iterator end()
const {
return m_items.end(); }
221 const_iterator cbegin()
const {
return m_items.cbegin(); }
222 const_iterator cend()
const {
return m_items.cend(); }
244 std::string
toJSON()
const;
245 std::string itemsToJSON()
const;
256 virtual const char *what()
const throw()
258 return "Configuration item not found in configuration category";
264 virtual const char *what()
const throw()
266 return "Configuration category JSON is malformed";
279 m_errmsg =
"Configuration item '";
280 m_errmsg.append(item);
281 m_errmsg +=
"' has both 'value' and 'default' fields.";
284 virtual const char *what()
const throw()
286 return m_errmsg.c_str();
289 std::string m_errmsg;
299 virtual const char *what()
const throw()
301 return "Configuration item attribute not found in configuration category";
311 virtual const char *what()
const throw()
313 return "Configuration item is not a list type item";
Definition: config_category.h:248
DefaultConfigCategory.
Definition: config_category.h:236
Definition: config_category.h:56
Definition: config_category.h:37
An attempt has been made to access a configuration item as a list when the item is not of type list...
Definition: config_category.h:309
This exception must be raised when at least one of the JSON items of a new being created category hav...
Definition: config_category.h:274
Definition: config_category.h:162
Definition: config_category.h:20
Definition: config_category.h:254
std::string toJSON() const
Return the JSON string of a ConfigCategoryDescription element.
Definition: config_category.cpp:101
This exception must be raised when a requested item attribute does not exist.
Definition: config_category.h:297