Conscience Core
CscIntelligencesDbService.h
Go to the documentation of this file.
1 #ifndef CscIntelligencesDbService_H
2 #define CscIntelligencesDbService_H
3 
7 #include "CscCommon.h"
8 #include <mutex>
10 
13 using std::mutex;
14 
16 
18 private:
19  string id;
20  unsigned long long serialNumber;
21  string name;
22  string description;
23  int creationTimestampMillis;
24  string authorUid;
25  string lastModificationAuthorUid;
26 
27 public:
28  CscIntelligenceData(const string &id, unsigned long long serialNumber, const string &name, const string &description, const unsigned long long creationTimestampMillis, const string &authorUid, const string &lastModificationAuthorUid);
29 
30  const string &getId() const;
31  unsigned long long getSerialNumber() const;
32  const string &getName() const;
33  const string &getDescription() const;
34  unsigned long long getCreationTimestampMillis() const;
35  const string &getAuthorUid() const;
36  const string &getLastModificationAuthorUid() const;
37  void setName(const string &newName);
38  CscIntelligenceData *clone() const;
39 };
40 
42 private:
43  string id;
44  string name;
45  string commandString;
46  int indexInScenario;
47 
48 public:
49  CscKnowledgeItemData(const string &id, const string &name, const string &commandString, int indexInScenario);
50  CscKnowledgeItemData *clone();
51 
52  const string &getId() const;
53  const string &getName() const;
54  const string &getCommandString() const;
55  int getIndexInScenario() const;
56 
57  void setIndexInScenario(int indexInScenario);
58  void setName(const string &newName);
59  void setCommandString(const string &newCommandString);
60 
61  void copyFrom(CscKnowledgeItemData *updatedKnowledgeItem);
62 };
63 
65 private:
66  string id;
67  unsigned long long serialNumber;
68  string name;
69  string description;
70  string uiTargetPanel;
71  int uiIndexInPanel;
72  int creationTimestampMillis;
73  vector<CscKnowledgeItemData *> scenario;
74  string authorUid;
75  string lastModificationAuthorUid;
76 
77 public:
78  CscKnowledgeData(const string &id, unsigned long long serialNumber, const string &name, const string &description, const string &uiTargetPanel, const int &uiIndexInPanel, const unsigned long long creationTimestampMillis, const vector<CscKnowledgeItemData *> &scenario, const string &authorUid, const string &lastModificationAuthorUid);
80  CscKnowledgeData *clone() const;
81 
82  const string &getId() const;
83  unsigned long long getSerialNumber() const;
84  const string &getName() const;
85  const string &getDescription() const;
86  const string &getUiTargetPanel() const;
87  int getUiIndexInPanel() const;
88 
89  void setSerialNumber(unsigned long long newSerialNumber);
90  void setName(const string &newName);
91  void setDescription(const string &newDescription);
92  void setUiTargetPanel(const string &uiTargetPanel);
93  void setUiIndexInPanel(int index);
94 
95  unsigned long long getCreationTimestampMillis() const;
96 
97  const vector<CscKnowledgeItemData *> &getScenario() const;
98  vector<string> getScenarioCommands() const;
99 
100  void copyFrom(CscKnowledgeData *updatedKnowledge);
101 
102  const string &getAuthorUid() const;
103  const string &getLastModificationAuthorUid() const;
104  void addScenarioItem(CscKnowledgeItemData *item);
105  void updateScenarioItem(unsigned index, CscKnowledgeItemData *item, bool deletePreviousItem = true);
106  void deleteScenarioItem(unsigned index);
110  void insertScenarioItem(unsigned index, CscKnowledgeItemData *item);
111 
112  inline static const string LEFT_PANEL = "leftPanel";
113  inline static const string RIGHT_PANEL = "rightPanel";
114 
115  string toString() const;
116 };
117 
119 private:
120  string id;
121  string name;
122  string description;
123  unsigned long long creationDateTimeStamp;
124  vector<unsigned char> image;
125  vector<string> entityModelIds;
126  string authorUid;
127 
128 public:
129  CscIntelligencePublishData(const string &id, const string &name, const string &description, const unsigned long long creationDateTimeStamp, const vector<unsigned char> &image, const vector<string> &entityModelIds, const string &authorUid);
130 
131  const string &getId() const;
132  const string &getName() const;
133  unsigned long long getCreationTimeStamp() const;
134  const vector<unsigned char> &getImage() const;
135  const vector<string> &getEntityModelIds() const;
136  const string &getAuthorUid() const;
137 
138  ptr<CscJsonObject> toJson() const;
139 };
140 
142 
143 private:
144  string id;
145  string name;
146  string environmentInteractionCommandString;
147  int indexInScenario;
148 
149 public:
150  CscKnowledgeItemPublishData(const string &id, const string &name, const string &environmentInteractionCommandString, int indexInScenario);
151 
152  const string &getId() const;
153  const string &getName() const;
154  const string &getEnvironmentInteractionCommandString() const;
155  int getIndexInScenario() const;
156 
157  ptr<CscJsonObject> toJson() const;
158 };
159 
161 private:
162  string intelligenceId;
163  string id;
164  string name;
165  string uiTargetPanel;
166  int uiIndexInPanel;
167  vector<CscKnowledgeItemPublishData *> scenarios;
168  unsigned long long creationDateTimeStamp;
169  vector<unsigned char> image;
170  string authorUid;
171 
172 public:
173  CscKnowledgePublishData(const string &intelligenceId, const string &id, const string &name, const string &uiTargetPanel, int uiIndexInPanel, const vector<CscKnowledgeItemPublishData *> &scenarios, const unsigned long long creationDateTimeStamp, const vector<unsigned char> &image, const string &authorUid);
174  virtual ~CscKnowledgePublishData();
175 
176  const string &getIntelligenceId() const;
177  const string &getId() const;
178  const string &getName() const;
179  const string &getUiTargetPanel() const;
180  int getUiIndexInPanel() const;
181  const vector<CscKnowledgeItemPublishData *> &getScenarios() const;
182  unsigned long long getCreationDateTimeStamp() const;
183  const vector<unsigned char> &getImage() const;
184  const string &getAuthorUid() const;
185 
186  ptr<CscJsonObject> toJson() const;
187 };
188 
190 private:
191  string commandId;
192  string authorUid;
193  vector<unsigned char> knowledgeCodeInZipFile;
194 
195 public:
196  UserCustomCommandCodePublishData(const string &commandId, const string &authorUid, const vector<unsigned char> &knowledgeCodeInZipFile);
197 
198  const string &getCommandId() const;
199  const string &getAuthorUid() const;
200  const vector<unsigned char> &getKnowledgeCodeInZipFile() const;
201 
202  ptr<CscJsonObject> toJson() const;
203 };
204 
206 public:
207  static CscIntelligencesDbService *getInstance();
208 
214  vector<CscIntelligenceData *> getIntelligences(const optional<string> &entityModelId);
215 
219  fs::path getIntelligenceLogoPath(const string &intelligenceId, optional<fs::path> defaultIfNotFound = {});
220 
226  vector<CscKnowledgeData *> getKnowledgesByIntelligenceId(const string &intelligenceId);
227 
231  fs::path getKnowledgeLogoPath(const string &knowledgeId, optional<fs::path> defaultIfNotFound = {});
232 
237  fs::path getUserCustomCommandCodePath(const string &commandId);
238 
242  vector<string> getUserCustomCommandIds();
243 
244  void publishIntelligence(const CscIntelligencePublishData &intelligencePublishData);
245  void updateIntelligence(const CscIntelligencePublishData &intelligenceUpdateData);
246  void publishKnowledge(const CscKnowledgePublishData &knowledgePublishData);
247  void updateKnowledge(const CscKnowledgePublishData &knowledgePublishData);
248  void deleteKnowledge(const string &knowledgeId);
249  void publishUserCustomCommandCode(const UserCustomCommandCodePublishData &userCustomCommandCodePublishData);
250 
251  vector<string> getCompatibleEntityModelIds(const string &intelligenceId);
252 
253  string intelligenceOrKnowledgeNameToTechnicalName(string name);
254  CscIntelligenceData *findIntelligenceById(const vector<CscIntelligenceData *> &intelligences, string id);
255  CscKnowledgeData *getKnowledgeById(const string &knowledgeId);
256 
261  vector<string> refreshIntelligencesLogos();
262 
268  vector<string> refreshKnowledgesLogos(const vector<string> &knowledgesIds);
269 
270  void setCacheEnabled(bool enabled);
271 
272 private:
273  unique_ptr<CscLogger> logger;
274  inline static CscIntelligencesDbService *instance = nullptr;
275  CscHttpClient &httpClient;
276  const WebService &intelligencesDb;
279  ptr<const CscAuthentication> getAuthentication() const;
280 
281  CscKnowledgeData *knowledgeJsonToData(ptr<CscJsonObjectReader> knowledgeJson);
282  vector<CscKnowledgeData *> knowledgeJsonToData(const vector<ptr<CscJsonObjectReader>> &knowledgesJson);
283 
284  bool cacheEnabled = false;
285  mutex cacheMutex;
286  ptr<CscJsonObject> cache = nullptr;
290  ptr<CscJsonObject> getCache();
291  bool isCacheEnabledAndRefreshTimeNotExceeded(const string &refreshTimePropertyName);
292  void clearCacheForIntelligence(const string &intelligenceUid);
293  void clearCacheForKnowledge(const string &intelligenceUid, const string &knowledgeId);
294 };
295 }
296 
297 #endif
conscience_core::bridging::webservices::intelligencesdb::CscIntelligencePublishData
Definition: CscIntelligencesDbService.h:118
conscience_core::communication::HTTP::CscHttpClient
Definition: CscHttpClient.h:135
conscience_core::bridging::webservices::intelligencesdb::CscKnowledgeData
Definition: CscIntelligencesDbService.h:64
conscience_core::bridging::webservices::intelligencesdb::CscKnowledgeItemData
Definition: CscIntelligencesDbService.h:41
conscience_core::bridging::webservices::intelligencesdb::CscIntelligencesDbService
Definition: CscIntelligencesDbService.h:205
conscience_core::bridging::CscKeyDirectories::getInstance
static CscKeyDirectories * getInstance()
Definition: CscKeyDirectories.cpp:252
conscience_core::bridging::webservices::intelligencesdb::UserCustomCommandCodePublishData
Definition: CscIntelligencesDbService.h:189
CscKeyDirectories.h
conscience_core::communication::HTTP
Definition: CscHttpClient.cpp:13
conscience_core::bridging::webservices::intelligencesdb::CscKnowledgePublishData
Definition: CscIntelligencesDbService.h:160
conscience_core::bridging::CscKeyDirectories
Definition: CscKeyDirectories.h:13
conscience_core::bridging::webservices::auth
Definition: CoreAuthenticator.cpp:22
conscience_core::bridging::logger
static unique_ptr< CscLogger > logger
Definition: CscKeyDirectories.cpp:50
jwt::alphabet::index
uint32_t index(const std::array< char, 64 > &alphabet, char symbol)
Definition: base.h:91
CscCommon.h
conscience_server::entities::instance
ServerEntities * instance
Definition: ServerEntities.cpp:39
conscience_core::bridging::webservices::intelligencesdb::CscIntelligenceData
Definition: CscIntelligencesDbService.h:17
CoreAuthenticator.h
conscience_core::bridging::webservices::intelligencesdb::CscKnowledgeItemPublishData
Definition: CscIntelligencesDbService.h:141
conscience_core::bridging::webservices::WebService
Definition: CscWebServices.h:13
CscHttpClient.h
CscWebServices.h
conscience_core::bridging::commands::environment_objects::optional< string >
const ptr< CscObjectModel > const string const CscPoint3d const CscPoint3d optional< string >
Definition: environmentObjectsCommands.h:373
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29
conscience_core::bridging::webservices::intelligencesdb
Definition: CscIntelligencesDbService.cpp:7