Commit 3869f9f27462e3b5d2a19c51c68f2bb551ab7157

Authored by Andrii Shvaika
2 parents ae35892b da446105

Merge branch 'master' of github.com:thingsboard/thingsboard

@@ -82,7 +82,7 @@ import org.thingsboard.server.dao.widget.WidgetsBundleService; @@ -82,7 +82,7 @@ import org.thingsboard.server.dao.widget.WidgetsBundleService;
82 82
83 import java.util.Arrays; 83 import java.util.Arrays;
84 import java.util.Collections; 84 import java.util.Collections;
85 -import java.util.LinkedHashMap; 85 +import java.util.TreeMap;
86 86
87 @Service 87 @Service
88 @Profile("install") 88 @Profile("install")
@@ -311,7 +311,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService { @@ -311,7 +311,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService {
311 temperatureCondition.setCondition(Arrays.asList(temperatureAlarmFlagAttributeFilter, temperatureTimeseriesFilter)); 311 temperatureCondition.setCondition(Arrays.asList(temperatureAlarmFlagAttributeFilter, temperatureTimeseriesFilter));
312 temperatureRule.setAlarmDetails("Current temperature = ${temperature}"); 312 temperatureRule.setAlarmDetails("Current temperature = ${temperature}");
313 temperatureRule.setCondition(temperatureCondition); 313 temperatureRule.setCondition(temperatureCondition);
314 - highTemperature.setCreateRules(new LinkedHashMap<>(Collections.singletonMap(AlarmSeverity.MAJOR, temperatureRule))); 314 + highTemperature.setCreateRules(new TreeMap<>(Collections.singletonMap(AlarmSeverity.MAJOR, temperatureRule)));
315 315
316 AlarmRule clearTemperatureRule = new AlarmRule(); 316 AlarmRule clearTemperatureRule = new AlarmRule();
317 AlarmCondition clearTemperatureCondition = new AlarmCondition(); 317 AlarmCondition clearTemperatureCondition = new AlarmCondition();
@@ -362,7 +362,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService { @@ -362,7 +362,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService {
362 362
363 humidityRule.setCondition(humidityCondition); 363 humidityRule.setCondition(humidityCondition);
364 humidityRule.setAlarmDetails("Current humidity = ${humidity}"); 364 humidityRule.setAlarmDetails("Current humidity = ${humidity}");
365 - lowHumidity.setCreateRules(new LinkedHashMap<>(Collections.singletonMap(AlarmSeverity.MINOR, humidityRule))); 365 + lowHumidity.setCreateRules(new TreeMap<>(Collections.singletonMap(AlarmSeverity.MINOR, humidityRule)));
366 366
367 AlarmRule clearHumidityRule = new AlarmRule(); 367 AlarmRule clearHumidityRule = new AlarmRule();
368 AlarmCondition clearHumidityCondition = new AlarmCondition(); 368 AlarmCondition clearHumidityCondition = new AlarmCondition();
@@ -18,9 +18,8 @@ package org.thingsboard.server.common.data.device.profile; @@ -18,9 +18,8 @@ package org.thingsboard.server.common.data.device.profile;
18 import lombok.Data; 18 import lombok.Data;
19 import org.thingsboard.server.common.data.alarm.AlarmSeverity; 19 import org.thingsboard.server.common.data.alarm.AlarmSeverity;
20 20
21 -import java.util.LinkedHashMap;  
22 import java.util.List; 21 import java.util.List;
23 -import java.util.Map; 22 +import java.util.TreeMap;
24 23
25 @Data 24 @Data
26 public class DeviceProfileAlarm { 25 public class DeviceProfileAlarm {
@@ -28,7 +27,7 @@ public class DeviceProfileAlarm { @@ -28,7 +27,7 @@ public class DeviceProfileAlarm {
28 private String id; 27 private String id;
29 private String alarmType; 28 private String alarmType;
30 29
31 - private LinkedHashMap<AlarmSeverity, AlarmRule> createRules; 30 + private TreeMap<AlarmSeverity, AlarmRule> createRules;
32 private AlarmRule clearRule; 31 private AlarmRule clearRule;
33 32
34 // Hidden in advanced settings 33 // Hidden in advanced settings
@@ -23,17 +23,13 @@ import org.junit.runner.RunWith; @@ -23,17 +23,13 @@ import org.junit.runner.RunWith;
23 import org.mockito.AdditionalAnswers; 23 import org.mockito.AdditionalAnswers;
24 import org.mockito.Mock; 24 import org.mockito.Mock;
25 import org.mockito.Mockito; 25 import org.mockito.Mockito;
26 -import org.mockito.invocation.InvocationOnMock;  
27 import org.mockito.runners.MockitoJUnitRunner; 26 import org.mockito.runners.MockitoJUnitRunner;
28 -import org.mockito.stubbing.Answer;  
29 -import org.springframework.util.StringUtils;  
30 import org.thingsboard.rule.engine.api.RuleEngineAlarmService; 27 import org.thingsboard.rule.engine.api.RuleEngineAlarmService;
31 import org.thingsboard.rule.engine.api.RuleEngineDeviceProfileCache; 28 import org.thingsboard.rule.engine.api.RuleEngineDeviceProfileCache;
32 import org.thingsboard.rule.engine.api.TbContext; 29 import org.thingsboard.rule.engine.api.TbContext;
33 import org.thingsboard.rule.engine.api.TbNodeConfiguration; 30 import org.thingsboard.rule.engine.api.TbNodeConfiguration;
34 import org.thingsboard.rule.engine.api.TbNodeException; 31 import org.thingsboard.rule.engine.api.TbNodeException;
35 import org.thingsboard.server.common.data.DeviceProfile; 32 import org.thingsboard.server.common.data.DeviceProfile;
36 -import org.thingsboard.server.common.data.alarm.Alarm;  
37 import org.thingsboard.server.common.data.alarm.AlarmSeverity; 33 import org.thingsboard.server.common.data.alarm.AlarmSeverity;
38 import org.thingsboard.server.common.data.device.profile.AlarmCondition; 34 import org.thingsboard.server.common.data.device.profile.AlarmCondition;
39 import org.thingsboard.server.common.data.device.profile.AlarmRule; 35 import org.thingsboard.server.common.data.device.profile.AlarmRule;
@@ -52,11 +48,10 @@ import org.thingsboard.server.common.msg.TbMsg; @@ -52,11 +48,10 @@ import org.thingsboard.server.common.msg.TbMsg;
52 import org.thingsboard.server.common.msg.TbMsgDataType; 48 import org.thingsboard.server.common.msg.TbMsgDataType;
53 import org.thingsboard.server.common.msg.TbMsgMetaData; 49 import org.thingsboard.server.common.msg.TbMsgMetaData;
54 import org.thingsboard.server.common.msg.session.SessionMsgType; 50 import org.thingsboard.server.common.msg.session.SessionMsgType;
55 -import org.thingsboard.server.dao.alarm.AlarmService;  
56 import org.thingsboard.server.dao.timeseries.TimeseriesService; 51 import org.thingsboard.server.dao.timeseries.TimeseriesService;
57 52
58 import java.util.Collections; 53 import java.util.Collections;
59 -import java.util.LinkedHashMap; 54 +import java.util.TreeMap;
60 import java.util.UUID; 55 import java.util.UUID;
61 56
62 import static org.mockito.Mockito.verify; 57 import static org.mockito.Mockito.verify;
@@ -140,7 +135,7 @@ public class TbDeviceProfileNodeTest { @@ -140,7 +135,7 @@ public class TbDeviceProfileNodeTest {
140 DeviceProfileAlarm dpa = new DeviceProfileAlarm(); 135 DeviceProfileAlarm dpa = new DeviceProfileAlarm();
141 dpa.setId("highTemperatureAlarmID"); 136 dpa.setId("highTemperatureAlarmID");
142 dpa.setAlarmType("highTemperatureAlarm"); 137 dpa.setAlarmType("highTemperatureAlarm");
143 - dpa.setCreateRules(new LinkedHashMap<>(Collections.singletonMap(AlarmSeverity.CRITICAL, alarmRule))); 138 + dpa.setCreateRules(new TreeMap<>(Collections.singletonMap(AlarmSeverity.CRITICAL, alarmRule)));
144 139
145 KeyFilter lowTempFilter = new KeyFilter(); 140 KeyFilter lowTempFilter = new KeyFilter();
146 lowTempFilter.setKey(new EntityKey(EntityKeyType.TIME_SERIES, "temperature")); 141 lowTempFilter.setKey(new EntityKey(EntityKeyType.TIME_SERIES, "temperature"));
@@ -130,7 +130,7 @@ export class DashboardService { @@ -130,7 +130,7 @@ export class DashboardService {
130 const publicCustomerId = publicCustomers[0].customerId.id; 130 const publicCustomerId = publicCustomers[0].customerId.id;
131 let url = this.window.location.protocol + '//' + this.window.location.hostname; 131 let url = this.window.location.protocol + '//' + this.window.location.hostname;
132 const port = this.window.location.port; 132 const port = this.window.location.port;
133 - if (port !== '80' && port !== '443') { 133 + if (port && port.length > 0 && port !== '80' && port !== '443') {
134 url += ':' + port; 134 url += ':' + port;
135 } 135 }
136 url += `/dashboard/${dashboard.id.id}?publicId=${publicCustomerId}`; 136 url += `/dashboard/${dashboard.id.id}?publicId=${publicCustomerId}`;