Browse Source

Ignore version for export/import

pull/11112/head
ViacheslavKlimov 2 years ago
parent
commit
8c8666c3d0
  1. 4
      application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DefaultEntityExportService.java
  2. 6
      application/src/main/java/org/thingsboard/server/service/sync/ie/importing/csv/AbstractBulkImportService.java
  3. 4
      application/src/main/java/org/thingsboard/server/service/sync/ie/importing/impl/BaseEntityImportService.java
  4. 2
      common/data/src/main/java/org/thingsboard/server/common/data/sync/JsonTbEntity.java
  5. 2
      common/data/src/main/java/org/thingsboard/server/common/data/sync/ie/DeviceExportData.java
  6. 3
      common/data/src/main/java/org/thingsboard/server/common/data/sync/ie/EntityExportData.java
  7. 3
      dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java
  8. 2
      dao/src/test/java/org/thingsboard/server/dao/service/DeviceCredentialsServiceTest.java

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

@ -22,6 +22,7 @@ import org.springframework.stereotype.Service;
import org.thingsboard.server.common.data.AttributeScope;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.ExportableEntity;
import org.thingsboard.server.common.data.HasVersion;
import org.thingsboard.server.common.data.exception.ThingsboardException;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.EntityIdFactory;
@ -74,6 +75,9 @@ public class DefaultEntityExportService<I extends EntityId, E extends Exportable
exportData.setEntity(entity);
exportData.setEntityType(entityId.getEntityType());
setAdditionalExportData(ctx, entity, exportData);
if (entity instanceof HasVersion hasVersion) {
hasVersion.setVersion(null);
}
var externalId = entity.getExternalId() != null ? entity.getExternalId() : entity.getId();
ctx.putExternalId(entityId, externalId);

6
application/src/main/java/org/thingsboard/server/service/sync/ie/importing/csv/AbstractBulkImportService.java

@ -148,9 +148,9 @@ public abstract class AbstractBulkImportService<E extends HasId<? extends Entity
if (entity.getId() != null) {
importedEntityInfo.setOldEntity((E) entity.getClass().getConstructor(entity.getClass()).newInstance(entity));
importedEntityInfo.setUpdated(true);
// if (entity instanceof HasVersion versionedEntity) { // FIXME: TMP
// versionedEntity.setVersion(null); // to overwrite the entity regardless of concurrent changes
// }
if (entity instanceof HasVersion versionedEntity) {
versionedEntity.setVersion(null); // to overwrite the entity regardless of concurrent changes
}
} else {
setOwners(entity, user);
}

4
application/src/main/java/org/thingsboard/server/service/sync/ie/importing/impl/BaseEntityImportService.java

@ -28,6 +28,7 @@ import org.thingsboard.server.cluster.TbClusterService;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.ExportableEntity;
import org.thingsboard.server.common.data.HasDefaultOption;
import org.thingsboard.server.common.data.HasVersion;
import org.thingsboard.server.common.data.User;
import org.thingsboard.server.common.data.audit.ActionType;
import org.thingsboard.server.common.data.exception.ThingsboardException;
@ -161,6 +162,9 @@ public abstract class BaseEntityImportService<I extends EntityId, E extends Expo
protected void cleanupForComparison(E e) {
e.setTenantId(null);
e.setCreatedTime(0);
if (e instanceof HasVersion hasVersion) {
hasVersion.setVersion(null);
}
}
protected abstract E saveOrUpdate(EntitiesImportCtx ctx, E entity, D exportData, IdProvider idProvider);

2
common/data/src/main/java/org/thingsboard/server/common/data/sync/JsonTbEntity.java

@ -60,6 +60,6 @@ import java.lang.annotation.Target;
@Type(name = "NOTIFICATION_RULE", value = NotificationRule.class),
@Type(name = "TB_RESOURCE", value = TbResource.class)
})
@JsonIgnoreProperties(value = {"tenantId", "createdTime"}, ignoreUnknown = true)
@JsonIgnoreProperties(value = {"tenantId", "createdTime", "version"}, ignoreUnknown = true)
public @interface JsonTbEntity {
}

2
common/data/src/main/java/org/thingsboard/server/common/data/sync/ie/DeviceExportData.java

@ -30,7 +30,7 @@ import org.thingsboard.server.common.data.security.DeviceCredentials;
public class DeviceExportData extends EntityExportData<Device> {
@JsonProperty(index = 3)
@JsonIgnoreProperties({"id", "deviceId", "createdTime"})
@JsonIgnoreProperties({"id", "deviceId", "createdTime", "version"})
private DeviceCredentials credentials;
@JsonIgnore

3
common/data/src/main/java/org/thingsboard/server/common/data/sync/ie/EntityExportData.java

@ -56,7 +56,7 @@ public class EntityExportData<E extends ExportableEntity<? extends EntityId>> {
.comparing(AttributeExportData::getKey).thenComparing(AttributeExportData::getLastUpdateTs);
@JsonProperty(index = 2)
@JsonTbEntity // FIXME: version is serialized. also check single entity export/import from UI!
@JsonTbEntity
private E entity;
@JsonProperty(index = 1)
private EntityType entityType;
@ -95,4 +95,5 @@ public class EntityExportData<E extends ExportableEntity<? extends EntityId>> {
public boolean hasRelations() {
return relations != null;
}
}

3
dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java

@ -95,8 +95,7 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D>
if (versionedEntity.getVersion() == null) {
HasVersion existingEntity = entityManager.find(versionedEntity.getClass(), entity.getUuid());
if (existingEntity != null) {
throw new IllegalArgumentException("TEST - unexpected null version for " + versionedEntity);
// fixme tmp versionedEntity.setVersion(existingEntity.getVersion()); // manually resetting the version to latest to allow force overwrite of the entity
versionedEntity.setVersion(existingEntity.getVersion()); // manually resetting the version to latest to allow force overwrite of the entity
} else {
return doSave(entity, true);
}

2
dao/src/test/java/org/thingsboard/server/dao/service/DeviceCredentialsServiceTest.java

@ -180,7 +180,7 @@ public class DeviceCredentialsServiceTest extends AbstractServiceTest {
Assert.assertEquals(savedDevice.getId(), deviceCredentials.getDeviceId());
deviceCredentials.setCredentialsType(DeviceCredentialsType.ACCESS_TOKEN);
deviceCredentials.setCredentialsId("access_token");
deviceCredentialsService.updateDeviceCredentials(tenantId, deviceCredentials);
deviceCredentials = deviceCredentialsService.updateDeviceCredentials(tenantId, deviceCredentials);
DeviceCredentials foundDeviceCredentials = deviceCredentialsService.findDeviceCredentialsByDeviceId(tenantId, savedDevice.getId());
Assert.assertEquals(deviceCredentials, foundDeviceCredentials);
deviceService.deleteDevice(tenantId, savedDevice.getId());

Loading…
Cancel
Save