Merge branch 'develop/2.6-edge' of github.com:volodymyr-babak/thingsboard into develop/2.6-edge
This commit is contained in:
commit
773d38067b
@ -25,6 +25,7 @@ import org.apache.http.HttpHost;
|
|||||||
import org.apache.http.conn.ssl.DefaultHostnameVerifier;
|
import org.apache.http.conn.ssl.DefaultHostnameVerifier;
|
||||||
import org.apache.http.impl.client.CloseableHttpClient;
|
import org.apache.http.impl.client.CloseableHttpClient;
|
||||||
import org.apache.http.impl.client.HttpClients;
|
import org.apache.http.impl.client.HttpClients;
|
||||||
|
import org.hibernate.exception.ConstraintViolationException;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.cache.Cache;
|
import org.springframework.cache.Cache;
|
||||||
@ -172,7 +173,22 @@ public class EdgeServiceImpl extends AbstractEntityService implements EdgeServic
|
|||||||
public Edge saveEdge(Edge edge) {
|
public Edge saveEdge(Edge edge) {
|
||||||
log.trace("Executing saveEdge [{}]", edge);
|
log.trace("Executing saveEdge [{}]", edge);
|
||||||
edgeValidator.validate(edge, Edge::getTenantId);
|
edgeValidator.validate(edge, Edge::getTenantId);
|
||||||
return edgeDao.save(edge.getTenantId(), edge);
|
Edge savedEdge;
|
||||||
|
if (!sqlDatabaseUsed) {
|
||||||
|
savedEdge = edgeDao.save(edge.getTenantId(), edge);
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
savedEdge = edgeDao.save(edge.getTenantId(), edge);
|
||||||
|
} catch (Exception t) {
|
||||||
|
ConstraintViolationException e = extractConstraintViolationException(t).orElse(null);
|
||||||
|
if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("edge_name_unq_key")) {
|
||||||
|
throw new DataValidationException("Edge with such name already exists!");
|
||||||
|
} else {
|
||||||
|
throw t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return savedEdge;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -322,19 +322,13 @@ function AssetService($http, $q, $filter, customerService, userService) {
|
|||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getEdgeAssets(edgeId, pageLink, config, type) {
|
function getEdgeAssets(edgeId, pageLink, config) {
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var url = '/api/edge/' + edgeId + '/assets?limit=' + pageLink.limit;
|
var url = '/api/edge/' + edgeId + '/assets?limit=' + pageLink.limit;
|
||||||
if (angular.isDefined(pageLink.idOffset)) {
|
if (angular.isDefined(pageLink.idOffset)) {
|
||||||
url += '&offset=' + pageLink.idOffset;
|
url += '&offset=' + pageLink.idOffset;
|
||||||
}
|
}
|
||||||
$http.get(url, config).then(function success(response) {
|
$http.get(url, config).then(function success(response) {
|
||||||
if (pageLink.textSearch) {
|
|
||||||
response.data.data = $filter('filter')(response.data.data, {name: pageLink.textSearch});
|
|
||||||
}
|
|
||||||
if (angular.isDefined(type) && type.length) {
|
|
||||||
response.data.data = $filter('filter')(response.data.data, {type: type});
|
|
||||||
}
|
|
||||||
deferred.resolve(response.data);
|
deferred.resolve(response.data);
|
||||||
}, function fail() {
|
}, function fail() {
|
||||||
deferred.reject();
|
deferred.reject();
|
||||||
|
|||||||
@ -302,9 +302,6 @@ function DashboardService($rootScope, $http, $q, $location, $filter) {
|
|||||||
}
|
}
|
||||||
$http.get(url, config).then(function success(response) {
|
$http.get(url, config).then(function success(response) {
|
||||||
response.data = prepareDashboards(response.data);
|
response.data = prepareDashboards(response.data);
|
||||||
if (pageLink.textSearch) {
|
|
||||||
response.data.data = $filter('filter')(response.data.data, {title: pageLink.textSearch});
|
|
||||||
}
|
|
||||||
deferred.resolve(response.data);
|
deferred.resolve(response.data);
|
||||||
}, function fail() {
|
}, function fail() {
|
||||||
deferred.reject();
|
deferred.reject();
|
||||||
|
|||||||
@ -384,19 +384,13 @@ function DeviceService($http, $q, $window, $filter, userService, attributeServic
|
|||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getEdgeDevices(edgeId, pageLink, config, type) {
|
function getEdgeDevices(edgeId, pageLink, config) {
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var url = '/api/edge/' + edgeId + '/devices?limit=' + pageLink.limit;
|
var url = '/api/edge/' + edgeId + '/devices?limit=' + pageLink.limit;
|
||||||
if (angular.isDefined(pageLink.idOffset)) {
|
if (angular.isDefined(pageLink.idOffset)) {
|
||||||
url += '&offset=' + pageLink.idOffset;
|
url += '&offset=' + pageLink.idOffset;
|
||||||
}
|
}
|
||||||
$http.get(url, config).then(function success(response) {
|
$http.get(url, config).then(function success(response) {
|
||||||
if (pageLink.textSearch) {
|
|
||||||
response.data.data = $filter('filter')(response.data.data, {name: pageLink.textSearch});
|
|
||||||
}
|
|
||||||
if (angular.isDefined(type) && type.length) {
|
|
||||||
response.data.data = $filter('filter')(response.data.data, {type: type});
|
|
||||||
}
|
|
||||||
deferred.resolve(response.data);
|
deferred.resolve(response.data);
|
||||||
}, function fail() {
|
}, function fail() {
|
||||||
deferred.reject();
|
deferred.reject();
|
||||||
|
|||||||
@ -30,6 +30,7 @@ function EdgeService($http, $q, customerService) {
|
|||||||
getTenantEdges: getTenantEdges,
|
getTenantEdges: getTenantEdges,
|
||||||
getCustomerEdges: getCustomerEdges,
|
getCustomerEdges: getCustomerEdges,
|
||||||
assignEdgeToCustomer: assignEdgeToCustomer,
|
assignEdgeToCustomer: assignEdgeToCustomer,
|
||||||
|
findByQuery: findByQuery,
|
||||||
unassignEdgeFromCustomer: unassignEdgeFromCustomer,
|
unassignEdgeFromCustomer: unassignEdgeFromCustomer,
|
||||||
makeEdgePublic: makeEdgePublic,
|
makeEdgePublic: makeEdgePublic,
|
||||||
setRootRuleChain: setRootRuleChain,
|
setRootRuleChain: setRootRuleChain,
|
||||||
@ -61,13 +62,7 @@ function EdgeService($http, $q, customerService) {
|
|||||||
|
|
||||||
function getEdgesByIds(edgeIds, config) {
|
function getEdgesByIds(edgeIds, config) {
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var ids = '';
|
var ids = edgeIds.join(',');
|
||||||
for (var i=0;i<edgeIds.length;i++) {
|
|
||||||
if (i>0) {
|
|
||||||
ids += ',';
|
|
||||||
}
|
|
||||||
ids += edgeIds[i];
|
|
||||||
}
|
|
||||||
var url = '/api/edges?edgeIds=' + ids;
|
var url = '/api/edges?edgeIds=' + ids;
|
||||||
$http.get(url, config).then(function success(response) {
|
$http.get(url, config).then(function success(response) {
|
||||||
var entities = response.data;
|
var entities = response.data;
|
||||||
@ -85,9 +80,13 @@ function EdgeService($http, $q, customerService) {
|
|||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getEdge(edgeId, config) {
|
function getEdge(edgeId, ignoreErrors, config) {
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var url = '/api/edge/' + edgeId;
|
var url = '/api/edge/' + edgeId;
|
||||||
|
if (!config) {
|
||||||
|
config = {};
|
||||||
|
}
|
||||||
|
config = Object.assign(config, { ignoreErrors: ignoreErrors });
|
||||||
$http.get(url, config).then(function success(response) {
|
$http.get(url, config).then(function success(response) {
|
||||||
deferred.resolve(response.data);
|
deferred.resolve(response.data);
|
||||||
}, function fail(response) {
|
}, function fail(response) {
|
||||||
@ -129,7 +128,7 @@ function EdgeService($http, $q, customerService) {
|
|||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTenantEdges(pageLink, applyCustomersInfo, config, type) {
|
function getTenantEdges(pageLink, applyCustomersInfo, type, config) {
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var url = '/api/tenant/edges?limit=' + pageLink.limit;
|
var url = '/api/tenant/edges?limit=' + pageLink.limit;
|
||||||
if (angular.isDefined(pageLink.textSearch)) {
|
if (angular.isDefined(pageLink.textSearch)) {
|
||||||
@ -164,7 +163,7 @@ function EdgeService($http, $q, customerService) {
|
|||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCustomerEdges(customerId, pageLink, applyCustomersInfo, config, type) {
|
function getCustomerEdges(customerId, pageLink, applyCustomersInfo, type, config) {
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var url = '/api/customer/' + customerId + '/edges?limit=' + pageLink.limit;
|
var url = '/api/customer/' + customerId + '/edges?limit=' + pageLink.limit;
|
||||||
if (angular.isDefined(pageLink.textSearch)) {
|
if (angular.isDefined(pageLink.textSearch)) {
|
||||||
@ -200,6 +199,21 @@ function EdgeService($http, $q, customerService) {
|
|||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function findByQuery(query, ignoreErrors, config) {
|
||||||
|
var deferred = $q.defer();
|
||||||
|
var url = '/api/edges';
|
||||||
|
if (!config) {
|
||||||
|
config = {};
|
||||||
|
}
|
||||||
|
config = Object.assign(config, { ignoreErrors: ignoreErrors });
|
||||||
|
$http.post(url, query, config).then(function success(response) {
|
||||||
|
deferred.resolve(response.data);
|
||||||
|
}, function fail() {
|
||||||
|
deferred.reject();
|
||||||
|
});
|
||||||
|
return deferred.promise;
|
||||||
|
}
|
||||||
|
|
||||||
function assignEdgeToCustomer(customerId, edgeId) {
|
function assignEdgeToCustomer(customerId, edgeId) {
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var url = '/api/customer/' + customerId + '/edge/' + edgeId;
|
var url = '/api/customer/' + customerId + '/edge/' + edgeId;
|
||||||
|
|||||||
@ -245,19 +245,13 @@ function EntityViewService($http, $q, $window, $filter, userService, attributeSe
|
|||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getEdgeEntityViews(edgeId, pageLink, config, type) {
|
function getEdgeEntityViews(edgeId, pageLink, config) {
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var url = '/api/edge/' + edgeId + '/entityViews?limit=' + pageLink.limit;
|
var url = '/api/edge/' + edgeId + '/entityViews?limit=' + pageLink.limit;
|
||||||
if (angular.isDefined(pageLink.idOffset)) {
|
if (angular.isDefined(pageLink.idOffset)) {
|
||||||
url += '&offset=' + pageLink.idOffset;
|
url += '&offset=' + pageLink.idOffset;
|
||||||
}
|
}
|
||||||
$http.get(url, config).then(function success(response) {
|
$http.get(url, config).then(function success(response) {
|
||||||
if (pageLink.textSearch) {
|
|
||||||
response.data.data = $filter('filter')(response.data.data, {name: pageLink.textSearch});
|
|
||||||
}
|
|
||||||
if (angular.isDefined(type) && type.length) {
|
|
||||||
response.data.data = $filter('filter')(response.data.data, {type: type});
|
|
||||||
}
|
|
||||||
deferred.resolve(response.data);
|
deferred.resolve(response.data);
|
||||||
}, function fail() {
|
}, function fail() {
|
||||||
deferred.reject();
|
deferred.reject();
|
||||||
|
|||||||
@ -78,7 +78,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
|
|||||||
$log.error('Get Alarm Entity is not implemented!');
|
$log.error('Get Alarm Entity is not implemented!');
|
||||||
break;
|
break;
|
||||||
case types.entityType.edge:
|
case types.entityType.edge:
|
||||||
promise = edgeService.getEdge(entityId, config);
|
promise = edgeService.getEdge(entityId, true, config);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return promise;
|
return promise;
|
||||||
@ -164,7 +164,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
|
|||||||
break;
|
break;
|
||||||
case types.entityType.edge:
|
case types.entityType.edge:
|
||||||
promise = getEntitiesByIdsPromise(
|
promise = getEntitiesByIdsPromise(
|
||||||
(id) => edgeService.getEdge(id, config), entityIds);
|
(id) => edgeService.getEdge(id, true, config), entityIds);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return promise;
|
return promise;
|
||||||
@ -294,9 +294,9 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
|
|||||||
break;
|
break;
|
||||||
case types.entityType.edge:
|
case types.entityType.edge:
|
||||||
if (user.authority === 'CUSTOMER_USER') {
|
if (user.authority === 'CUSTOMER_USER') {
|
||||||
promise = edgeService.getCustomerEdges(customerId, pageLink, false, config, subType);
|
promise = edgeService.getCustomerEdges(customerId, pageLink, false, subType, config);
|
||||||
} else {
|
} else {
|
||||||
promise = edgeService.getTenantEdges(pageLink, false, config, subType);
|
promise = edgeService.getTenantEdges(pageLink, false, subType, config);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -960,9 +960,6 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
|
|||||||
break;
|
break;
|
||||||
case types.entityType.entityView:
|
case types.entityType.entityView:
|
||||||
case types.entityType.edge:
|
case types.entityType.edge:
|
||||||
entityFieldKeys.push(types.entityField.name.keyName);
|
|
||||||
entityFieldKeys.push(types.entityField.type.keyName);
|
|
||||||
break;
|
|
||||||
case types.entityType.device:
|
case types.entityType.device:
|
||||||
case types.entityType.asset:
|
case types.entityType.asset:
|
||||||
entityFieldKeys.push(types.entityField.name.keyName);
|
entityFieldKeys.push(types.entityField.name.keyName);
|
||||||
|
|||||||
@ -321,9 +321,6 @@ function RuleChainService($http, $q, $filter, $ocLazyLoad, $translate, types, co
|
|||||||
url += '&offset=' + pageLink.idOffset;
|
url += '&offset=' + pageLink.idOffset;
|
||||||
}
|
}
|
||||||
$http.get(url, config).then(function success(response) {
|
$http.get(url, config).then(function success(response) {
|
||||||
if (pageLink.textSearch) {
|
|
||||||
response.data.data = $filter('filter')(response.data.data, {title: pageLink.textSearch});
|
|
||||||
}
|
|
||||||
deferred.resolve(response.data);
|
deferred.resolve(response.data);
|
||||||
}, function fail() {
|
}, function fail() {
|
||||||
deferred.reject();
|
deferred.reject();
|
||||||
|
|||||||
@ -324,8 +324,8 @@ export function AssetController($rootScope, userService, assetService, customerS
|
|||||||
vm.assetGridConfig.addItemActions = [];
|
vm.assetGridConfig.addItemActions = [];
|
||||||
|
|
||||||
} else if (vm.assetsScope === 'edge') {
|
} else if (vm.assetsScope === 'edge') {
|
||||||
fetchAssetsFunction = function (pageLink, assetType) {
|
fetchAssetsFunction = function (pageLink) {
|
||||||
return assetService.getEdgeAssets(edgeId, pageLink, null, assetType);
|
return assetService.getEdgeAssets(edgeId, pageLink, null);
|
||||||
};
|
};
|
||||||
deleteAssetFunction = function (assetId) {
|
deleteAssetFunction = function (assetId) {
|
||||||
return assetService.unassignAssetFromEdge(edgeId, assetId);
|
return assetService.unassignAssetFromEdge(edgeId, assetId);
|
||||||
|
|||||||
@ -357,8 +357,8 @@ export function DeviceController($rootScope, userService, deviceService, custome
|
|||||||
vm.deviceGridConfig.addItemActions = [];
|
vm.deviceGridConfig.addItemActions = [];
|
||||||
|
|
||||||
} else if (vm.devicesScope === 'edge') {
|
} else if (vm.devicesScope === 'edge') {
|
||||||
fetchDevicesFunction = function (pageLink, deviceType) {
|
fetchDevicesFunction = function (pageLink) {
|
||||||
return deviceService.getEdgeDevices(edgeId, pageLink, null, deviceType);
|
return deviceService.getEdgeDevices(edgeId, pageLink, null);
|
||||||
};
|
};
|
||||||
deleteDeviceFunction = function (deviceId) {
|
deleteDeviceFunction = function (deviceId) {
|
||||||
return deviceService.unassignDeviceFromEdge(edgeId, deviceId);
|
return deviceService.unassignDeviceFromEdge(edgeId, deviceId);
|
||||||
|
|||||||
@ -161,7 +161,7 @@ export function EdgeController($rootScope, userService, edgeService, customerSer
|
|||||||
|
|
||||||
if (vm.edgesScope === 'tenant') {
|
if (vm.edgesScope === 'tenant') {
|
||||||
fetchEdgesFunction = function (pageLink, edgeType) {
|
fetchEdgesFunction = function (pageLink, edgeType) {
|
||||||
return edgeService.getTenantEdges(pageLink, true, null, edgeType);
|
return edgeService.getTenantEdges(pageLink, true, edgeType, null);
|
||||||
};
|
};
|
||||||
deleteEdgeFunction = function (edgeId) {
|
deleteEdgeFunction = function (edgeId) {
|
||||||
return edgeService.deleteEdge(edgeId);
|
return edgeService.deleteEdge(edgeId);
|
||||||
@ -337,7 +337,7 @@ export function EdgeController($rootScope, userService, edgeService, customerSer
|
|||||||
|
|
||||||
} else if (vm.edgesScope === 'customer' || vm.edgesScope === 'customer_user') {
|
} else if (vm.edgesScope === 'customer' || vm.edgesScope === 'customer_user') {
|
||||||
fetchEdgesFunction = function (pageLink, edgeType) {
|
fetchEdgesFunction = function (pageLink, edgeType) {
|
||||||
return edgeService.getCustomerEdges(customerId, pageLink, true, null, edgeType);
|
return edgeService.getCustomerEdges(customerId, pageLink, true, edgeType, null);
|
||||||
};
|
};
|
||||||
deleteEdgeFunction = function (edgeId) {
|
deleteEdgeFunction = function (edgeId) {
|
||||||
return edgeService.unassignEdgeFromCustomer(edgeId);
|
return edgeService.unassignEdgeFromCustomer(edgeId);
|
||||||
|
|||||||
@ -285,8 +285,8 @@ export function EntityViewController($rootScope, userService, entityViewService,
|
|||||||
vm.entityViewGridConfig.addItemAction = {};
|
vm.entityViewGridConfig.addItemAction = {};
|
||||||
}
|
}
|
||||||
} else if (vm.entityViewsScope === 'edge') {
|
} else if (vm.entityViewsScope === 'edge') {
|
||||||
fetchEntityViewsFunction = function (pageLink, entityViewType) {
|
fetchEntityViewsFunction = function (pageLink) {
|
||||||
return entityViewService.getEdgeEntityViews(edgeId, pageLink, null, entityViewType);
|
return entityViewService.getEdgeEntityViews(edgeId, pageLink, null);
|
||||||
};
|
};
|
||||||
deleteEntityViewFunction = function (entityViewId) {
|
deleteEntityViewFunction = function (entityViewId) {
|
||||||
return entityViewService.unassignEntityViewFromEdge(edgeId, entityViewId);
|
return entityViewService.unassignEntityViewFromEdge(edgeId, entityViewId);
|
||||||
|
|||||||
@ -614,6 +614,16 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document,
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
|
case types.entityType.edge:
|
||||||
|
openImportDialogCSV($event, entityType, 'edge.import', 'edge.edge-file').then(
|
||||||
|
function success() {
|
||||||
|
deferred.resolve();
|
||||||
|
},
|
||||||
|
function fail() {
|
||||||
|
deferred.reject();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -765,6 +765,7 @@
|
|||||||
"edge": {
|
"edge": {
|
||||||
"edge": "Edge",
|
"edge": "Edge",
|
||||||
"edges": "Edges",
|
"edges": "Edges",
|
||||||
|
"edge-file": "Edge file",
|
||||||
"management": "Edge management",
|
"management": "Edge management",
|
||||||
"no-edges-matching": "No edges matching '{{entity}}' were found.",
|
"no-edges-matching": "No edges matching '{{entity}}' were found.",
|
||||||
"add": "Add Edge",
|
"add": "Add Edge",
|
||||||
|
|||||||
@ -107,7 +107,7 @@ export default function RuleChainsController(ruleChainService, userService, impo
|
|||||||
var deleteRuleChainFunction = null;
|
var deleteRuleChainFunction = null;
|
||||||
|
|
||||||
if (edgeId) {
|
if (edgeId) {
|
||||||
edgeService.getEdge(edgeId).then(
|
edgeService.getEdge(edgeId, true, null).then(
|
||||||
function success(edge) {
|
function success(edge) {
|
||||||
vm.edge = edge;
|
vm.edge = edge;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user