Browse Source

Refactor relations export

pull/6357/head
Viacheslav Klimov 5 years ago
parent
commit
457d2340a9
  1. 3
      application/src/main/java/org/thingsboard/server/service/sync/exporting/data/request/EntityExportSettings.java
  2. 16
      application/src/main/java/org/thingsboard/server/service/sync/exporting/impl/DefaultEntityExportService.java
  3. 10
      application/src/test/java/org/thingsboard/server/controller/sql/EntitiesExportImportControllerSqlTest.java

3
application/src/main/java/org/thingsboard/server/service/sync/exporting/data/request/EntityExportSettings.java

@ -25,6 +25,5 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@Builder
public class EntityExportSettings {
private boolean exportInboundRelations;
private boolean exportOutboundRelations;
private boolean exportRelations;
}

16
application/src/main/java/org/thingsboard/server/service/sync/exporting/impl/DefaultEntityExportService.java

@ -64,25 +64,23 @@ public class DefaultEntityExportService<I extends EntityId, E extends Exportable
}
protected void setAdditionalExportData(SecurityUser user, E entity, D exportData, EntityExportSettings exportSettings) throws ThingsboardException {
List<EntityRelation> relations = null;
if (exportSettings.isExportInboundRelations()) {
if (exportSettings.isExportRelations()) {
List<EntityRelation> relations = new ArrayList<>();
List<EntityRelation> inboundRelations = relationService.findByTo(user.getTenantId(), entity.getId(), RelationTypeGroup.COMMON);
for (EntityRelation relation : inboundRelations) {
exportableEntitiesService.checkPermission(user, relation.getFrom(), Operation.READ);
}
relations = new ArrayList<>(inboundRelations);
}
if (exportSettings.isExportOutboundRelations()) {
relations.addAll(inboundRelations);
List<EntityRelation> outboundRelations = relationService.findByFrom(user.getTenantId(), entity.getId(), RelationTypeGroup.COMMON);
for (EntityRelation relation : outboundRelations) {
exportableEntitiesService.checkPermission(user, relation.getTo(), Operation.READ);
}
if (relations == null) {
relations = new ArrayList<>();
}
relations.addAll(outboundRelations);
exportData.setRelations(relations);
}
exportData.setRelations(relations);
}
protected D newExportData() {

10
application/src/test/java/org/thingsboard/server/controller/sql/EntitiesExportImportControllerSqlTest.java

@ -421,8 +421,7 @@ public class EntitiesExportImportControllerSqlTest extends BaseEntitiesExportImp
EntityListExportRequest exportRequest = new EntityListExportRequest();
exportRequest.setEntitiesIds(List.of(asset.getId(), device.getId()));
exportRequest.setExportSettings(EntityExportSettings.builder()
.exportInboundRelations(true)
.exportOutboundRelations(false)
.exportRelations(true)
.build());
List<EntityExportData<?>> exportDataList = exportEntities(exportRequest);
@ -468,8 +467,7 @@ public class EntitiesExportImportControllerSqlTest extends BaseEntitiesExportImp
EntityListExportRequest exportRequest = new EntityListExportRequest();
exportRequest.setEntitiesIds(List.of(asset.getId(), device.getId()));
exportRequest.setExportSettings(EntityExportSettings.builder()
.exportInboundRelations(true)
.exportOutboundRelations(true)
.exportRelations(true)
.build());
List<EntityExportData<?>> exportDataList = exportEntities(exportRequest);
@ -511,7 +509,7 @@ public class EntitiesExportImportControllerSqlTest extends BaseEntitiesExportImp
SingleEntityExportRequest exportRequest = new SingleEntityExportRequest();
exportRequest.setEntityId(asset.getId());
exportRequest.setExportSettings(EntityExportSettings.builder()
.exportOutboundRelations(true)
.exportRelations(true)
.build());
EntityExportData<Asset> assetExportData = (EntityExportData<Asset>) exportEntities(exportRequest).get(0);
assertThat(assetExportData.getRelations()).size().isOne();
@ -543,7 +541,7 @@ public class EntitiesExportImportControllerSqlTest extends BaseEntitiesExportImp
SingleEntityExportRequest exportRequest = new SingleEntityExportRequest();
exportRequest.setEntityId(device.getId());
exportRequest.setExportSettings(EntityExportSettings.builder()
.exportInboundRelations(true)
.exportRelations(true)
.build());
EntityExportData<?> deviceExportData = exportEntities(exportRequest).get(0);
assertThat(deviceExportData.getRelations()).size().isOne();

Loading…
Cancel
Save