 |
Fledge
An open source edge computing platform for industrial users
|
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);
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;
99 std::string getValue(
const std::string& name)
const;
100 std::string getValue(
const std::string& name,
const std::string& defaultValue)
const;
101 bool getBoolValue(
const std::string& name,
bool defaultValue =
false)
const;
102 int getIntegerValue(
const std::string& name,
int defaultValue = 0)
const;
103 long getLongValue(
const std::string& name,
long defaultValue = 0)
const;
104 double getDoubleValue(
const std::string& name,
double defaultValue = 0)
const;
105 std::vector<std::string>
getValueList(
const std::string& name)
const;
106 std::map<std::string, std::string>
getValueKVList(
const std::string& name)
const;
107 std::string
getType(
const std::string& name)
const;
108 std::string getDescription(
const std::string& name)
const;
109 std::string
getDefault(
const std::string& name)
const;
110 bool setDefault(
const std::string& name,
const std::string& value);
111 bool setValue(
const std::string& name,
const std::string& value);
112 std::string getDisplayName(
const std::string& name)
const;
113 std::string getmParentName()
const {
return (m_parent_name);};
114 std::vector<std::string>
getOptions(
const std::string& name)
const;
115 std::string
getLength(
const std::string& name)
const;
116 std::string
getMinimum(
const std::string& name)
const;
117 std::string
getMaximum(
const std::string& name)
const;
118 bool isString(
const std::string& name)
const;
120 bool isJSON(
const std::string& name)
const;
121 bool isBool(
const std::string& name)
const;
122 bool isNumber(
const std::string& name)
const;
123 bool isDouble(
const std::string& name)
const;
124 bool isList(
const std::string& name)
const;
125 bool isKVList(
const std::string& name)
const;
127 std::string
toJSON(
const bool full=
false)
const;
128 std::string
itemsToJSON(
const bool full=
false)
const;
133 std::string
itemToJSON(
const std::string& itemName)
const;
134 std::string
to_string(
const rapidjson::Value& v)
const;
135 std::vector<std::string>
getPermissions(
const std::string& name)
const;
136 bool hasPermission(
const std::string& name,
const std::string& username)
const;
150 BUCKET_PROPERTIES_ATTR,
154 KVLIST_KEY_NAME_ATTR,
155 KVLIST_KEY_DESCRIPTION_ATTR,
159 ItemAttribute itemAttribute)
const;
162 ItemAttribute itemAttribute,
const std::string& value);
169 CategoryItem(
const std::string& name,
const rapidjson::Value& item);
170 CategoryItem(
const std::string& name,
const std::string& description,
171 const std::string& type,
const std::string def,
172 const std::string& value);
173 CategoryItem(
const std::string& name,
const std::string& description,
174 const std::string def,
const std::string& value,
175 const std::vector<std::string> options);
178 std::string
toJSON(
const bool full=
false)
const;
184 std::string m_displayName;
186 std::string m_default;
188 std::string m_description;
190 std::string m_readonly;
191 std::string m_mandatory;
192 std::string m_deprecated;
193 std::string m_length;
194 std::string m_minimum;
195 std::string m_maximum;
196 std::string m_filename;
197 std::vector<std::string>
201 std::string m_validity;
204 std::string m_bucketProperties;
205 std::string m_listSize;
206 std::string m_listItemType;
207 std::string m_listName;
208 std::string m_kvlistKeyName;
209 std::string m_kvlistKeyDescription;
210 std::vector<std::string>
212 std::string m_jsonSchema;
214 std::vector<CategoryItem *> m_items;
216 std::string m_parent_name;
217 std::string m_description;
218 std::string m_displayName;
221 using iterator = std::vector<CategoryItem *>::iterator;
222 using const_iterator = std::vector<CategoryItem *>::const_iterator;
224 const_iterator begin()
const {
return m_items.begin(); }
225 const_iterator end()
const {
return m_items.end(); }
226 const_iterator cbegin()
const {
return m_items.cbegin(); }
227 const_iterator cend()
const {
return m_items.cend(); }
249 std::string
toJSON()
const;
261 virtual const char *what()
const throw()
263 return "Configuration item not found in configuration category";
269 virtual const char *what()
const throw()
271 return "Configuration category JSON is malformed";
284 m_errmsg =
"Configuration item '";
285 m_errmsg.append(item);
286 m_errmsg +=
"' has both 'value' and 'default' fields.";
289 virtual const char *what()
const throw()
291 return m_errmsg.c_str();
294 std::string m_errmsg;
304 virtual const char *what()
const throw()
306 return "Configuration item attribute not found in configuration category";
316 virtual const char *what()
const throw()
318 return "Configuration item is not a list type item";
DefaultConfigCategory.
Definition: config_category.h:241
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:314
~DefaultConfigCategory()
Destructor for the default configuration category.
Definition: config_category.cpp:2244
bool isString(const std::string &name) const
Return if the configuration item is a string item.
Definition: config_category.cpp:1098
void checkDefaultValuesOnly() const
Check whether at least one item in the category object has both 'value' and 'default' set.
Definition: config_category.cpp:270
bool itemExists(const std::string &name) const
Check for the existence of an item within the configuration category.
Definition: config_category.cpp:430
std::vector< std::pair< std::string, std::string > > * parseBucketItemValue(const std::string &)
Parse BucketItem value in JSON dict format and return the key value pairs within that.
Definition: config_category.cpp:2215
ConfigCategory & operator+=(ConfigCategory const &rhs)
Operator+= for ConfigCategory.
Definition: config_category.cpp:241
void removeItemsType(ItemType type)
Delete all the items from the configuration category having a specific type.
Definition: config_category.cpp:326
bool setDefault(const std::string &name, const std::string &value)
Update the default value of the configuration category item.
Definition: config_category.cpp:916
bool setItemAttribute(const std::string &itemName, ItemAttribute itemAttribute, const std::string &value)
Set the requested attribute of a configuration category item.
Definition: config_category.cpp:777
Definition: config_category.h:37
bool setValue(const std::string &name, const std::string &value)
Update the value of the configuration category item.
Definition: config_category.cpp:936
std::string getDefault(const std::string &name) const
Return the default value of the configuration category item.
Definition: config_category.cpp:897
void setDescription(const std::string &description)
Set the description for the configuration category.
Definition: config_category.cpp:1267
bool isJSON(const std::string &name) const
Return if the configuration item is a JSON item.
Definition: config_category.cpp:1136
This exception must be raised when at least one of the JSON items of a new being created category hav...
Definition: config_category.h:279
std::string itemToJSON(const std::string &itemName) const
Return JSON string of a category item.
Definition: config_category.cpp:2294
int getIntegerValue(const std::string &name, int defaultValue=0) const
Return an integer value from a configuration category item.
Definition: config_category.cpp:512
bool isBool(const std::string &name) const
Return if the configuration item is a Bool item.
Definition: config_category.cpp:1155
ConfigCategories()
ConfigCategories constructor without parameters.
Definition: config_category.cpp:35
std::vector< std::string > getValueList(const std::string &name) const
Return the value of the configuration category item list, this is a convience function used when simp...
Definition: config_category.cpp:608
long getLongValue(const std::string &name, long defaultValue=0) const
Return a long value from a configuration category item.
Definition: config_category.cpp:542
void removeItems()
Delete all the items from the configuration category.
Definition: config_category.cpp:346
bool hasPermission(const std::string &name, const std::string &username) const
Return true if the user has permission to update the named item.
Definition: config_category.cpp:1074
void keepItemsType(ItemType type)
Delete all the items from the configuration category not having a specific type.
Definition: config_category.cpp:360
bool isDouble(const std::string &name) const
Return if the configuration item is a Double item.
Definition: config_category.cpp:1193
bool getBoolValue(const std::string &name, bool defaultValue=false) const
Return a boolean value from a configuration category item.
Definition: config_category.cpp:489
bool isEnumeration(const std::string &name) const
Return if the configuration item is an enumeration item.
Definition: config_category.cpp:1117
std::string getItemAttribute(const std::string &itemName, ItemAttribute itemAttribute) const
Return the requested attribute of a configuration category item.
Definition: config_category.cpp:717
void setItemsValueFromDefault()
Set the m_value from m_default for each item.
Definition: config_category.cpp:256
Definition: config_category.h:259
std::string toJSON() const
Return the JSON string of all ConfigCategoryDescription elements in m_categories.
Definition: config_category.cpp:115
Definition: config_category.h:56
std::string toJSON() const
Return the JSON string of a ConfigCategoryDescription element.
Definition: config_category.cpp:101
Definition: config_category.h:253
bool setItemDisplayName(const std::string &name, const std::string &displayName)
Set the display name of an item.
Definition: config_category.cpp:308
std::string itemsToJSON(const bool full=false) const
Return JSON string of category items only.
Definition: config_category.cpp:1297
bool isDeprecated(const std::string &name) const
Return if the configuration item is deprecated a item.
Definition: config_category.cpp:1212
This exception must be raised when a requested item attribute does not exist.
Definition: config_category.h:302
std::string getType(const std::string &name) const
Return the type of the configuration category item.
Definition: config_category.cpp:859
std::string toJSON() const
Return JSON string of all category components of a DefaultConfigCategory class.
Definition: config_category.cpp:2253
~ConfigCategory()
Configuration category destructor.
Definition: config_category.cpp:210
std::string getLength(const std::string &name) const
Return the length value of the configuration category item.
Definition: config_category.cpp:976
std::string to_string(const rapidjson::Value &v) const
Convert a RapidJSON value to a string.
Definition: config_category.cpp:692
std::string toJSON(const bool full=false) const
Create a JSON representation of the configuration item.
Definition: config_category.cpp:1915
ConfigCategoryChange(const std::string &json)
Configuration Category constructor.
Definition: config_category.cpp:2317
std::string toJSON(const bool full=false) const
Return JSON string of all category components.
Definition: config_category.cpp:1278
std::map< std::string, std::string > getValueKVList(const std::string &name) const
Return the value of the configuration category item kvlist, this is a convience function used when ke...
Definition: config_category.cpp:656
~ConfigCategories()
ConfigCategories destructor.
Definition: config_category.cpp:80
bool isList(const std::string &name) const
Return if the configuration item is a list item.
Definition: config_category.cpp:1231
std::vector< std::string > getPermissions(const std::string &name) const
Return the permissions of the configuration category item.
Definition: config_category.cpp:1054
void addCategoryDescription(ConfigCategoryDescription *elem)
Add a ConfigCategoryDescription element.
Definition: config_category.cpp:93
bool isKVList(const std::string &name) const
Return if the configuration item is a kvlist item.
Definition: config_category.cpp:1250
void addItem(const std::string &name, const std::string description, const std::string &type, const std::string def, const std::string &value)
Add an item to a configuration category.
Definition: config_category.cpp:284
double getDoubleValue(const std::string &name, double defaultValue=0) const
Return a double value from a configuration category item.
Definition: config_category.cpp:572
bool extractSubcategory(ConfigCategory &subCategories)
Extracts, process and adds subcategory information from a given category to the current instance.
Definition: config_category.cpp:382
std::vector< std::string > getOptions(const std::string &name) const
Return the options of the configuration category item.
Definition: config_category.cpp:1035
std::string getMinimum(const std::string &name) const
Return the minimum value of the configuration category item.
Definition: config_category.cpp:995
std::string getMaximum(const std::string &name) const
Return the maximum of the configuration category item.
Definition: config_category.cpp:1014
std::string defaultToJSON() const
Return only "default" item values.
Definition: config_category.cpp:2064
bool isNumber(const std::string &name) const
Return if the configuration item is a Numeric item.
Definition: config_category.cpp:1174
Definition: config_category.h:20
std::string itemsToJSON() const
Return DefaultConfigCategory "default" items only.
Definition: config_category.cpp:2270
Definition: config_category.h:167
ConfigCategory & operator=(ConfigCategory const &rhs)
Operator= for ConfigCategory.
Definition: config_category.cpp:221