Commit ab14bcb963bf2b0b339e06bdd4884fe86fe97eb3
Committed by
GitHub
Merge pull request #35 from BohdanSmetanyuk/feature/fetch_admin_settings
Feature/fetch admin settings
Showing
6 changed files
with
85 additions
and
1 deletions
... | ... | @@ -39,6 +39,7 @@ import org.thingsboard.server.queue.discovery.PartitionService; |
39 | 39 | import org.thingsboard.server.queue.provider.TbQueueProducerProvider; |
40 | 40 | import org.thingsboard.server.queue.util.TbCoreComponent; |
41 | 41 | import org.thingsboard.server.service.edge.rpc.EdgeEventStorageSettings; |
42 | +import org.thingsboard.server.service.edge.rpc.constructor.AdminSettingsUpdateMsgConstructor; | |
42 | 43 | import org.thingsboard.server.service.edge.rpc.constructor.AlarmUpdateMsgConstructor; |
43 | 44 | import org.thingsboard.server.service.edge.rpc.constructor.AssetUpdateMsgConstructor; |
44 | 45 | import org.thingsboard.server.service.edge.rpc.constructor.CustomerUpdateMsgConstructor; |
... | ... | @@ -190,6 +191,10 @@ public class EdgeContextComponent { |
190 | 191 | |
191 | 192 | @Lazy |
192 | 193 | @Autowired |
194 | + private AdminSettingsUpdateMsgConstructor adminSettingsUpdateMsgConstructor; | |
195 | + | |
196 | + @Lazy | |
197 | + @Autowired | |
193 | 198 | private EntityDataMsgConstructor entityDataMsgConstructor; |
194 | 199 | |
195 | 200 | @Lazy | ... | ... |
... | ... | @@ -32,6 +32,7 @@ import lombok.Data; |
32 | 32 | import lombok.extern.slf4j.Slf4j; |
33 | 33 | import org.apache.commons.lang.RandomStringUtils; |
34 | 34 | import org.checkerframework.checker.nullness.qual.Nullable; |
35 | +import org.thingsboard.server.common.data.AdminSettings; | |
35 | 36 | import org.thingsboard.server.common.data.Customer; |
36 | 37 | import org.thingsboard.server.common.data.Dashboard; |
37 | 38 | import org.thingsboard.server.common.data.DataConstants; |
... | ... | @@ -377,6 +378,9 @@ public final class EdgeGrpcSession implements Closeable { |
377 | 378 | case WIDGET_TYPE: |
378 | 379 | processWidgetType(edgeEvent, msgType, edgeEventAction); |
379 | 380 | break; |
381 | + case ADMIN_SETTINGS: | |
382 | + processAdminSettings(edgeEvent); | |
383 | + break; | |
380 | 384 | } |
381 | 385 | } |
382 | 386 | |
... | ... | @@ -732,6 +736,16 @@ public final class EdgeGrpcSession implements Closeable { |
732 | 736 | } |
733 | 737 | } |
734 | 738 | |
739 | + private void processAdminSettings(EdgeEvent edgeEvent) { | |
740 | + AdminSettings adminSettings = mapper.convertValue(edgeEvent.getEntityBody(), AdminSettings.class); | |
741 | + EntityUpdateMsg entityUpdateMsg = EntityUpdateMsg.newBuilder() | |
742 | + .setAdminSettingsUpdateMsg(ctx.getAdminSettingsUpdateMsgConstructor().constructAdminSettingsUpdateMsg(adminSettings)) | |
743 | + .build(); | |
744 | + outputStream.onNext(ResponseMsg.newBuilder() | |
745 | + .setEntityUpdateMsg(entityUpdateMsg) | |
746 | + .build()); | |
747 | + } | |
748 | + | |
735 | 749 | private UpdateMsgType getResponseMsgType(ActionType actionType) { |
736 | 750 | switch (actionType) { |
737 | 751 | case UPDATED: | ... | ... |
1 | +/** | |
2 | + * Copyright © 2016-2020 The Thingsboard Authors | |
3 | + * | |
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | + * you may not use this file except in compliance with the License. | |
6 | + * You may obtain a copy of the License at | |
7 | + * | |
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | |
9 | + * | |
10 | + * Unless required by applicable law or agreed to in writing, software | |
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | |
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | + * See the License for the specific language governing permissions and | |
14 | + * limitations under the License. | |
15 | + */ | |
16 | +package org.thingsboard.server.service.edge.rpc.constructor; | |
17 | + | |
18 | +import lombok.extern.slf4j.Slf4j; | |
19 | +import org.springframework.stereotype.Component; | |
20 | +import org.thingsboard.server.common.data.AdminSettings; | |
21 | +import org.thingsboard.server.common.data.id.AdminSettingsId; | |
22 | +import org.thingsboard.server.dao.util.mapping.JacksonUtil; | |
23 | +import org.thingsboard.server.gen.edge.AdminSettingsUpdateMsg; | |
24 | + | |
25 | +@Slf4j | |
26 | +@Component | |
27 | +public class AdminSettingsUpdateMsgConstructor { | |
28 | + | |
29 | + public AdminSettingsUpdateMsg constructAdminSettingsUpdateMsg(AdminSettings adminSettings) { | |
30 | + AdminSettingsUpdateMsg.Builder builder = AdminSettingsUpdateMsg.newBuilder() | |
31 | + .setKey(adminSettings.getKey()) | |
32 | + .setJsonValue(JacksonUtil.toString(adminSettings.getJsonValue())); | |
33 | + AdminSettingsId adminSettingsId = adminSettings.getId(); | |
34 | + if (adminSettingsId != null) { | |
35 | + builder.setIdMSB(adminSettingsId.getId().getMostSignificantBits()); | |
36 | + builder.setIdLSB(adminSettingsId.getId().getLeastSignificantBits()); | |
37 | + } | |
38 | + return builder.build(); | |
39 | + } | |
40 | + | |
41 | +} | ... | ... |
... | ... | @@ -25,6 +25,7 @@ import lombok.extern.slf4j.Slf4j; |
25 | 25 | import org.checkerframework.checker.nullness.qual.Nullable; |
26 | 26 | import org.springframework.beans.factory.annotation.Autowired; |
27 | 27 | import org.springframework.stereotype.Service; |
28 | +import org.thingsboard.server.common.data.AdminSettings; | |
28 | 29 | import org.thingsboard.server.common.data.DashboardInfo; |
29 | 30 | import org.thingsboard.server.common.data.DataConstants; |
30 | 31 | import org.thingsboard.server.common.data.Device; |
... | ... | @@ -64,6 +65,7 @@ import org.thingsboard.server.dao.edge.EdgeEventService; |
64 | 65 | import org.thingsboard.server.dao.entityview.EntityViewService; |
65 | 66 | import org.thingsboard.server.dao.relation.RelationService; |
66 | 67 | import org.thingsboard.server.dao.rule.RuleChainService; |
68 | +import org.thingsboard.server.dao.settings.AdminSettingsService; | |
67 | 69 | import org.thingsboard.server.dao.user.UserService; |
68 | 70 | import org.thingsboard.server.dao.widget.WidgetTypeService; |
69 | 71 | import org.thingsboard.server.dao.widget.WidgetsBundleService; |
... | ... | @@ -120,6 +122,9 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
120 | 122 | private WidgetTypeService widgetTypeService; |
121 | 123 | |
122 | 124 | @Autowired |
125 | + private AdminSettingsService adminSettingsService; | |
126 | + | |
127 | + @Autowired | |
123 | 128 | private DbCallbackExecutorService dbCallbackExecutorService; |
124 | 129 | |
125 | 130 | @Override |
... | ... | @@ -132,6 +137,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
132 | 137 | syncEntityViews(edge); |
133 | 138 | syncDashboards(edge); |
134 | 139 | syncWidgetsBundleAndWidgetTypes(edge); |
140 | + syncAdminSettings(edge); | |
135 | 141 | } catch (Exception e) { |
136 | 142 | log.error("Exception during sync process", e); |
137 | 143 | } |
... | ... | @@ -291,6 +297,15 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
291 | 297 | } |
292 | 298 | } |
293 | 299 | |
300 | + private void syncAdminSettings(Edge edge) { | |
301 | + try { | |
302 | + AdminSettings mailSettings = adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, "mail"); | |
303 | + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, ActionType.UPDATED, null, mapper.valueToTree(mailSettings)); | |
304 | + } catch (Exception e) { | |
305 | + log.error("Can't load admin settings", e); | |
306 | + } | |
307 | + } | |
308 | + | |
294 | 309 | private void pushUsersToEdge(TextPageData<User> pageData, Edge edge) { |
295 | 310 | if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { |
296 | 311 | log.trace("[{}] [{}] user(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); | ... | ... |
... | ... | @@ -61,6 +61,7 @@ message EntityUpdateMsg { |
61 | 61 | RelationUpdateMsg relationUpdateMsg = 12; |
62 | 62 | WidgetsBundleUpdateMsg widgetsBundleUpdateMsg = 13; |
63 | 63 | WidgetTypeUpdateMsg widgetTypeUpdateMsg = 14; |
64 | + AdminSettingsUpdateMsg adminSettingsUpdateMsg = 15; | |
64 | 65 | } |
65 | 66 | |
66 | 67 | enum RequestMsgType { |
... | ... | @@ -291,6 +292,13 @@ message WidgetTypeUpdateMsg { |
291 | 292 | bool isSystem = 8; |
292 | 293 | } |
293 | 294 | |
295 | +message AdminSettingsUpdateMsg { | |
296 | + int64 idMSB = 1; | |
297 | + int64 idLSB = 2; | |
298 | + string key = 3; | |
299 | + string jsonValue = 4; | |
300 | +} | |
301 | + | |
294 | 302 | message UserCredentialsUpdateMsg { |
295 | 303 | int64 userIdMSB = 1; |
296 | 304 | int64 userIdLSB = 2; | ... | ... |