From b598a7395492151598f8fe956d0022d5b4de33c3 Mon Sep 17 00:00:00 2001 From: Andrii Shvaika Date: Mon, 19 Oct 2020 19:51:58 +0300 Subject: [PATCH] Renaming of UsageRecord to ApiUsageState --- .../apiusage/DefaultTbUsageStatsService.java | 30 +++++ .../service/apiusage/TbUsageStatsService.java | 25 ++++ .../queue/DefaultTbCoreConsumerService.java | 4 +- .../DefaultTbUsageStatsService.java | 15 --- .../usagestats/TbUsageStatsService.java | 10 -- ...Service.java => ApiUsageStateService.java} | 10 +- ...eRecordKey.java => ApiUsageRecordKey.java} | 2 +- .../{UsageRecord.java => ApiUsageState.java} | 11 +- .../server/common/data/EntityType.java | 2 +- ...sageRecordId.java => ApiUsageStateId.java} | 10 +- .../usagestats/DefaultTbUsageStatsClient.java | 11 +- .../queue/usagestats/TbUsageStatsClient.java | 4 +- .../server/dao/model/ModelConstants.java | 8 +- ...rdEntity.java => ApiUsageStateEntity.java} | 31 ++--- ...tory.java => ApiUsageStateRepository.java} | 15 +-- ...ecordDao.java => JpaApiUsageStateDao.java} | 30 ++--- .../server/dao/tenant/TenantServiceImpl.java | 8 +- .../ApiApiUsageStateServiceImpl.java | 91 ++++++++++++++ ...geRecordDao.java => ApiUsageStateDao.java} | 15 +-- .../usagerecord/UsageRecordServiceImpl.java | 112 ------------------ .../resources/sql/schema-entities-hsql.sql | 4 +- .../main/resources/sql/schema-entities.sql | 4 +- .../dao/service/AbstractServiceTest.java | 8 +- ...java => BaseApiUsageStateServiceTest.java} | 15 +-- ....java => ApiUsageStateServiceSqlTest.java} | 5 +- .../resources/sql/hsql/drop-all-tables.sql | 2 +- .../resources/sql/psql/drop-all-tables.sql | 2 +- .../sql/timescale/drop-all-tables.sql | 2 +- 28 files changed, 234 insertions(+), 252 deletions(-) create mode 100644 application/src/main/java/org/thingsboard/server/service/apiusage/DefaultTbUsageStatsService.java create mode 100644 application/src/main/java/org/thingsboard/server/service/apiusage/TbUsageStatsService.java delete mode 100644 application/src/main/java/org/thingsboard/server/service/usagestats/DefaultTbUsageStatsService.java delete mode 100644 application/src/main/java/org/thingsboard/server/service/usagestats/TbUsageStatsService.java rename common/dao-api/src/main/java/org/thingsboard/server/dao/usagerecord/{UsageRecordService.java => ApiUsageStateService.java} (73%) rename common/data/src/main/java/org/thingsboard/server/common/data/{UsageRecordKey.java => ApiUsageRecordKey.java} (96%) rename common/data/src/main/java/org/thingsboard/server/common/data/{UsageRecord.java => ApiUsageState.java} (83%) rename common/data/src/main/java/org/thingsboard/server/common/data/id/{UsageRecordId.java => ApiUsageStateId.java} (77%) rename dao/src/main/java/org/thingsboard/server/dao/model/sql/{UsageRecordEntity.java => ApiUsageStateEntity.java} (67%) rename dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/{UsageRecordRepository.java => ApiUsageStateRepository.java} (64%) rename dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/{JpaUsageRecordDao.java => JpaApiUsageStateDao.java} (51%) create mode 100644 dao/src/main/java/org/thingsboard/server/dao/usagerecord/ApiApiUsageStateServiceImpl.java rename dao/src/main/java/org/thingsboard/server/dao/usagerecord/{UsageRecordDao.java => ApiUsageStateDao.java} (69%) delete mode 100644 dao/src/main/java/org/thingsboard/server/dao/usagerecord/UsageRecordServiceImpl.java rename dao/src/test/java/org/thingsboard/server/dao/service/{BaseUsageRecordServiceTest.java => BaseApiUsageStateServiceTest.java} (68%) rename dao/src/test/java/org/thingsboard/server/dao/service/sql/{UsageRecordServiceSqlTest.java => ApiUsageStateServiceSqlTest.java} (77%) diff --git a/application/src/main/java/org/thingsboard/server/service/apiusage/DefaultTbUsageStatsService.java b/application/src/main/java/org/thingsboard/server/service/apiusage/DefaultTbUsageStatsService.java new file mode 100644 index 0000000000..e2679d6433 --- /dev/null +++ b/application/src/main/java/org/thingsboard/server/service/apiusage/DefaultTbUsageStatsService.java @@ -0,0 +1,30 @@ +/** + * Copyright © 2016-2020 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.server.service.apiusage; + +import org.springframework.stereotype.Service; +import org.thingsboard.server.common.msg.queue.TbCallback; +import org.thingsboard.server.gen.transport.TransportProtos; +import org.thingsboard.server.queue.common.TbProtoQueueMsg; + +@Service +public class DefaultTbUsageStatsService implements TbUsageStatsService { + @Override + public void process(TbProtoQueueMsg msg, TbCallback callback) { + + } + +} diff --git a/application/src/main/java/org/thingsboard/server/service/apiusage/TbUsageStatsService.java b/application/src/main/java/org/thingsboard/server/service/apiusage/TbUsageStatsService.java new file mode 100644 index 0000000000..3c54479eaf --- /dev/null +++ b/application/src/main/java/org/thingsboard/server/service/apiusage/TbUsageStatsService.java @@ -0,0 +1,25 @@ +/** + * Copyright © 2016-2020 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.server.service.apiusage; + +import org.thingsboard.server.common.msg.queue.TbCallback; +import org.thingsboard.server.gen.transport.TransportProtos; +import org.thingsboard.server.queue.common.TbProtoQueueMsg; + +public interface TbUsageStatsService { + + void process(TbProtoQueueMsg msg, TbCallback callback); +} diff --git a/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbCoreConsumerService.java b/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbCoreConsumerService.java index 3f03b65416..a389eefd1a 100644 --- a/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbCoreConsumerService.java +++ b/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbCoreConsumerService.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -62,7 +62,7 @@ import org.thingsboard.server.service.subscription.SubscriptionManagerService; import org.thingsboard.server.service.subscription.TbLocalSubscriptionService; import org.thingsboard.server.service.subscription.TbSubscriptionUtils; import org.thingsboard.server.service.transport.msg.TransportToDeviceActorMsgWrapper; -import org.thingsboard.server.service.usagestats.TbUsageStatsService; +import org.thingsboard.server.service.apiusage.TbUsageStatsService; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; diff --git a/application/src/main/java/org/thingsboard/server/service/usagestats/DefaultTbUsageStatsService.java b/application/src/main/java/org/thingsboard/server/service/usagestats/DefaultTbUsageStatsService.java deleted file mode 100644 index 6611507531..0000000000 --- a/application/src/main/java/org/thingsboard/server/service/usagestats/DefaultTbUsageStatsService.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.thingsboard.server.service.usagestats; - -import org.springframework.stereotype.Service; -import org.thingsboard.server.common.msg.queue.TbCallback; -import org.thingsboard.server.gen.transport.TransportProtos; -import org.thingsboard.server.queue.common.TbProtoQueueMsg; - -@Service -public class DefaultTbUsageStatsService implements TbUsageStatsService { - @Override - public void process(TbProtoQueueMsg msg, TbCallback callback) { - - } - -} diff --git a/application/src/main/java/org/thingsboard/server/service/usagestats/TbUsageStatsService.java b/application/src/main/java/org/thingsboard/server/service/usagestats/TbUsageStatsService.java deleted file mode 100644 index 35a7051896..0000000000 --- a/application/src/main/java/org/thingsboard/server/service/usagestats/TbUsageStatsService.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.thingsboard.server.service.usagestats; - -import org.thingsboard.server.common.msg.queue.TbCallback; -import org.thingsboard.server.gen.transport.TransportProtos; -import org.thingsboard.server.queue.common.TbProtoQueueMsg; - -public interface TbUsageStatsService { - - void process(TbProtoQueueMsg msg, TbCallback callback); -} diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/usagerecord/UsageRecordService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/usagerecord/ApiUsageStateService.java similarity index 73% rename from common/dao-api/src/main/java/org/thingsboard/server/dao/usagerecord/UsageRecordService.java rename to common/dao-api/src/main/java/org/thingsboard/server/dao/usagerecord/ApiUsageStateService.java index 55adc257ad..ad6c73f63e 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/usagerecord/UsageRecordService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/usagerecord/ApiUsageStateService.java @@ -15,14 +15,14 @@ */ package org.thingsboard.server.dao.usagerecord; -import org.thingsboard.server.common.data.UsageRecord; +import org.thingsboard.server.common.data.ApiUsageState; import org.thingsboard.server.common.data.id.TenantId; -public interface UsageRecordService { +public interface ApiUsageStateService { - UsageRecord findTenantUsageRecord(TenantId tenantId); + ApiUsageState findTenantApiUsageState(TenantId tenantId); - void deleteUsageRecordsByTenantId(TenantId tenantId); + void deleteApiUsageStateByTenantId(TenantId tenantId); - void createDefaultUsageRecord(TenantId id); + void createDefaultApiUsageState(TenantId id); } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/UsageRecordKey.java b/common/data/src/main/java/org/thingsboard/server/common/data/ApiUsageRecordKey.java similarity index 96% rename from common/data/src/main/java/org/thingsboard/server/common/data/UsageRecordKey.java rename to common/data/src/main/java/org/thingsboard/server/common/data/ApiUsageRecordKey.java index 74a54cf713..9c8690a88f 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/UsageRecordKey.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/ApiUsageRecordKey.java @@ -15,7 +15,7 @@ */ package org.thingsboard.server.common.data; -public enum UsageRecordKey { +public enum ApiUsageRecordKey { MSG_COUNT, MSG_BYTES_COUNT, diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/UsageRecord.java b/common/data/src/main/java/org/thingsboard/server/common/data/ApiUsageState.java similarity index 83% rename from common/data/src/main/java/org/thingsboard/server/common/data/UsageRecord.java rename to common/data/src/main/java/org/thingsboard/server/common/data/ApiUsageState.java index e96cf2e452..796e434c8a 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/UsageRecord.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/ApiUsageState.java @@ -19,27 +19,26 @@ import lombok.EqualsAndHashCode; import lombok.ToString; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.id.UsageRecordId; -import org.thingsboard.server.common.data.id.UserId; +import org.thingsboard.server.common.data.id.ApiUsageStateId; @ToString @EqualsAndHashCode(callSuper = true) -public class UsageRecord extends BaseData implements HasTenantId { +public class ApiUsageState extends BaseData implements HasTenantId { private static final long serialVersionUID = 8250339805336035966L; private TenantId tenantId; private EntityId entityId; - public UsageRecord() { + public ApiUsageState() { super(); } - public UsageRecord(UsageRecordId id) { + public ApiUsageState(ApiUsageStateId id) { super(id); } - public UsageRecord(UsageRecord ur) { + public ApiUsageState(ApiUsageState ur) { super(ur); this.tenantId = ur.getTenantId(); this.entityId = ur.getEntityId(); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/EntityType.java b/common/data/src/main/java/org/thingsboard/server/common/data/EntityType.java index 11bf45be76..9f7fb711e8 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/EntityType.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/EntityType.java @@ -19,5 +19,5 @@ package org.thingsboard.server.common.data; * @author Andrew Shvayka */ public enum EntityType { - TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, RULE_CHAIN, RULE_NODE, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, TENANT_PROFILE, DEVICE_PROFILE, USAGE_RECORD; + TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, RULE_CHAIN, RULE_NODE, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, TENANT_PROFILE, DEVICE_PROFILE, API_USAGE_STATE; } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/id/UsageRecordId.java b/common/data/src/main/java/org/thingsboard/server/common/data/id/ApiUsageStateId.java similarity index 77% rename from common/data/src/main/java/org/thingsboard/server/common/data/id/UsageRecordId.java rename to common/data/src/main/java/org/thingsboard/server/common/data/id/ApiUsageStateId.java index 76cfaaedf6..87983f519a 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/id/UsageRecordId.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/id/ApiUsageStateId.java @@ -22,21 +22,21 @@ import org.thingsboard.server.common.data.EntityType; import java.util.UUID; -public class UsageRecordId extends UUIDBased implements EntityId { +public class ApiUsageStateId extends UUIDBased implements EntityId { @JsonCreator - public UsageRecordId(@JsonProperty("id") UUID id) { + public ApiUsageStateId(@JsonProperty("id") UUID id) { super(id); } - public static UsageRecordId fromString(String userId) { - return new UsageRecordId(UUID.fromString(userId)); + public static ApiUsageStateId fromString(String userId) { + return new ApiUsageStateId(UUID.fromString(userId)); } @JsonIgnore @Override public EntityType getEntityType() { - return EntityType.USAGE_RECORD; + return EntityType.API_USAGE_STATE; } } diff --git a/common/queue/src/main/java/org/thingsboard/server/queue/usagestats/DefaultTbUsageStatsClient.java b/common/queue/src/main/java/org/thingsboard/server/queue/usagestats/DefaultTbUsageStatsClient.java index 87eb5e767a..534937031c 100644 --- a/common/queue/src/main/java/org/thingsboard/server/queue/usagestats/DefaultTbUsageStatsClient.java +++ b/common/queue/src/main/java/org/thingsboard/server/queue/usagestats/DefaultTbUsageStatsClient.java @@ -17,13 +17,12 @@ package org.thingsboard.server.queue.usagestats; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.thingsboard.server.common.data.UsageRecordKey; +import org.thingsboard.server.common.data.ApiUsageRecordKey; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.msg.queue.ServiceType; import org.thingsboard.server.common.msg.queue.TopicPartitionInfo; import org.thingsboard.server.gen.transport.TransportProtos.ToUsageStatsServiceMsg; import org.thingsboard.server.gen.transport.TransportProtos.UsageStatsKVProto; -import org.thingsboard.server.queue.TbQueueCallback; import org.thingsboard.server.queue.TbQueueProducer; import org.thingsboard.server.queue.common.TbProtoQueueMsg; import org.thingsboard.server.queue.discovery.PartitionService; @@ -46,7 +45,7 @@ public class DefaultTbUsageStatsClient implements TbUsageStatsClient { @Value("${usage.stats.report.interval:600}") private int interval; - private final ConcurrentMap[] values = new ConcurrentMap[UsageRecordKey.values().length]; + private final ConcurrentMap[] values = new ConcurrentMap[ApiUsageRecordKey.values().length]; private final PartitionService partitionService; private final SchedulerComponent scheduler; private final TbQueueProducerProvider producerProvider; @@ -62,7 +61,7 @@ public class DefaultTbUsageStatsClient implements TbUsageStatsClient { private void init() { if (enabled) { msgProducer = this.producerProvider.getTbUsageStatsMsgProducer(); - for (UsageRecordKey key : UsageRecordKey.values()) { + for (ApiUsageRecordKey key : ApiUsageRecordKey.values()) { values[key.ordinal()] = new ConcurrentHashMap<>(); } scheduler.scheduleWithFixedDelay(this::reportStats, new Random().nextInt(interval), interval, TimeUnit.SECONDS); @@ -72,7 +71,7 @@ public class DefaultTbUsageStatsClient implements TbUsageStatsClient { private void reportStats() { ConcurrentMap report = new ConcurrentHashMap<>(); - for (UsageRecordKey key : UsageRecordKey.values()) { + for (ApiUsageRecordKey key : ApiUsageRecordKey.values()) { values[key.ordinal()].forEach(((tenantId, atomicLong) -> { long value = atomicLong.getAndSet(0); if (value > 0) { @@ -95,7 +94,7 @@ public class DefaultTbUsageStatsClient implements TbUsageStatsClient { } @Override - public void report(TenantId tenantId, UsageRecordKey key, long value) { + public void report(TenantId tenantId, ApiUsageRecordKey key, long value) { if (enabled) { ConcurrentMap map = values[key.ordinal()]; AtomicLong atomicValue = map.computeIfAbsent(tenantId, id -> new AtomicLong()); diff --git a/common/queue/src/main/java/org/thingsboard/server/queue/usagestats/TbUsageStatsClient.java b/common/queue/src/main/java/org/thingsboard/server/queue/usagestats/TbUsageStatsClient.java index e4e659b5c5..4ed850a018 100644 --- a/common/queue/src/main/java/org/thingsboard/server/queue/usagestats/TbUsageStatsClient.java +++ b/common/queue/src/main/java/org/thingsboard/server/queue/usagestats/TbUsageStatsClient.java @@ -15,12 +15,12 @@ */ package org.thingsboard.server.queue.usagestats; -import org.thingsboard.server.common.data.UsageRecordKey; +import org.thingsboard.server.common.data.ApiUsageRecordKey; import org.thingsboard.server.common.data.id.TenantId; public interface TbUsageStatsClient { - void report(TenantId tenantId, UsageRecordKey key, long value); + void report(TenantId tenantId, ApiUsageRecordKey key, long value); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java b/dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java index 3ee942b0be..a0f5b45f02 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java +++ b/dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java @@ -441,10 +441,10 @@ public class ModelConstants { /** * Usage Record constants. */ - public static final String UR_TABLE_NAME = "usage_record"; - public static final String UR_TENANT_ID_COLUMN = TENANT_ID_PROPERTY; - public static final String UR_ENTITY_TYPE_COLUMN = ENTITY_TYPE_COLUMN; - public static final String UR_ENTITY_ID_COLUMN = ENTITY_ID_COLUMN; + public static final String API_USAGE_STATE_TABLE_NAME = "api_usage_state"; + public static final String API_USAGE_STATE_TENANT_ID_COLUMN = TENANT_ID_PROPERTY; + public static final String API_USAGE_STATE_ENTITY_TYPE_COLUMN = ENTITY_TYPE_COLUMN; + public static final String API_USAGE_STATE_ENTITY_ID_COLUMN = ENTITY_ID_COLUMN; /** * Cassandra attributes and timeseries constants. diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/UsageRecordEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/ApiUsageStateEntity.java similarity index 67% rename from dao/src/main/java/org/thingsboard/server/dao/model/sql/UsageRecordEntity.java rename to dao/src/main/java/org/thingsboard/server/dao/model/sql/ApiUsageStateEntity.java index be5cc40621..a06ec142d3 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/UsageRecordEntity.java +++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/ApiUsageStateEntity.java @@ -15,29 +15,20 @@ */ package org.thingsboard.server.dao.model.sql; -import com.fasterxml.jackson.databind.JsonNode; import lombok.Data; import lombok.EqualsAndHashCode; -import org.hibernate.annotations.Type; import org.hibernate.annotations.TypeDef; -import org.thingsboard.server.common.data.UsageRecord; -import org.thingsboard.server.common.data.User; -import org.thingsboard.server.common.data.id.CustomerId; +import org.thingsboard.server.common.data.ApiUsageState; import org.thingsboard.server.common.data.id.EntityIdFactory; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.id.UsageRecordId; -import org.thingsboard.server.common.data.id.UserId; -import org.thingsboard.server.common.data.security.Authority; +import org.thingsboard.server.common.data.id.ApiUsageStateId; import org.thingsboard.server.dao.model.BaseEntity; import org.thingsboard.server.dao.model.BaseSqlEntity; import org.thingsboard.server.dao.model.ModelConstants; -import org.thingsboard.server.dao.model.SearchTextEntity; import org.thingsboard.server.dao.util.mapping.JsonStringType; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; import javax.persistence.Table; import java.util.UUID; @@ -48,22 +39,22 @@ import java.util.UUID; @EqualsAndHashCode(callSuper = true) @Entity @TypeDef(name = "json", typeClass = JsonStringType.class) -@Table(name = ModelConstants.UR_TABLE_NAME) -public class UsageRecordEntity extends BaseSqlEntity implements BaseEntity { +@Table(name = ModelConstants.API_USAGE_STATE_TABLE_NAME) +public class ApiUsageStateEntity extends BaseSqlEntity implements BaseEntity { - @Column(name = ModelConstants.UR_TENANT_ID_COLUMN) + @Column(name = ModelConstants.API_USAGE_STATE_TENANT_ID_COLUMN) private UUID tenantId; - @Column(name = ModelConstants.UR_ENTITY_TYPE_COLUMN) + @Column(name = ModelConstants.API_USAGE_STATE_ENTITY_TYPE_COLUMN) private String entityType; - @Column(name = ModelConstants.UR_ENTITY_ID_COLUMN) + @Column(name = ModelConstants.API_USAGE_STATE_ENTITY_ID_COLUMN) private UUID entityId; - public UsageRecordEntity() { + public ApiUsageStateEntity() { } - public UsageRecordEntity(UsageRecord ur) { + public ApiUsageStateEntity(ApiUsageState ur) { if (ur.getId() != null) { this.setUuid(ur.getId().getId()); } @@ -78,8 +69,8 @@ public class UsageRecordEntity extends BaseSqlEntity implements Bas } @Override - public UsageRecord toData() { - UsageRecord ur = new UsageRecord(new UsageRecordId(this.getUuid())); + public ApiUsageState toData() { + ApiUsageState ur = new ApiUsageState(new ApiUsageStateId(this.getUuid())); ur.setCreatedTime(createdTime); if (tenantId != null) { ur.setTenantId(new TenantId(tenantId)); diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/UsageRecordRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/ApiUsageStateRepository.java similarity index 64% rename from dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/UsageRecordRepository.java rename to dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/ApiUsageStateRepository.java index dc2b0d9ad7..122bb9d966 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/UsageRecordRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/ApiUsageStateRepository.java @@ -20,24 +20,21 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; import org.springframework.transaction.annotation.Transactional; -import org.thingsboard.server.common.data.UsageRecord; -import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.dao.model.sql.UsageRecordEntity; -import org.thingsboard.server.dao.model.sql.UserEntity; +import org.thingsboard.server.dao.model.sql.ApiUsageStateEntity; import java.util.UUID; /** * @author Valerii Sosliuk */ -public interface UsageRecordRepository extends CrudRepository { +public interface ApiUsageStateRepository extends CrudRepository { - @Query("SELECT ur FROM UsageRecordEntity ur WHERE ur.tenantId = :tenantId " + + @Query("SELECT ur FROM ApiUsageStateEntity ur WHERE ur.tenantId = :tenantId " + "AND ur.entityId = :tenantId AND ur.entityType = 'TENANT' ") - UsageRecordEntity findByTenantId(@Param("tenantId") UUID tenantId); + ApiUsageStateEntity findByTenantId(@Param("tenantId") UUID tenantId); @Transactional @Modifying - @Query("DELETE FROM UsageRecordEntity ur WHERE ur.tenantId = :tenantId") - void deleteUsageRecordsByTenantId(@Param("tenantId") UUID tenantId); + @Query("DELETE FROM ApiUsageStateEntity ur WHERE ur.tenantId = :tenantId") + void deleteApiUsageStateByTenantId(@Param("tenantId") UUID tenantId); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/JpaUsageRecordDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/JpaApiUsageStateDao.java similarity index 51% rename from dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/JpaUsageRecordDao.java rename to dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/JpaApiUsageStateDao.java index 8d54e6b53b..2c6b2e924d 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/JpaUsageRecordDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/usagerecord/JpaApiUsageStateDao.java @@ -17,12 +17,12 @@ package org.thingsboard.server.dao.sql.usagerecord; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Component; -import org.thingsboard.server.common.data.UsageRecord; +import org.thingsboard.server.common.data.ApiUsageState; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.dao.DaoUtil; -import org.thingsboard.server.dao.model.sql.UsageRecordEntity; +import org.thingsboard.server.dao.model.sql.ApiUsageStateEntity; import org.thingsboard.server.dao.sql.JpaAbstractDao; -import org.thingsboard.server.dao.usagerecord.UsageRecordDao; +import org.thingsboard.server.dao.usagerecord.ApiUsageStateDao; import java.util.UUID; @@ -30,31 +30,31 @@ import java.util.UUID; * @author Andrii Shvaika */ @Component -public class JpaUsageRecordDao extends JpaAbstractDao implements UsageRecordDao { +public class JpaApiUsageStateDao extends JpaAbstractDao implements ApiUsageStateDao { - private final UsageRecordRepository usageRecordRepository; + private final ApiUsageStateRepository apiUsageStateRepository; - public JpaUsageRecordDao(UsageRecordRepository usageRecordRepository) { - this.usageRecordRepository = usageRecordRepository; + public JpaApiUsageStateDao(ApiUsageStateRepository apiUsageStateRepository) { + this.apiUsageStateRepository = apiUsageStateRepository; } @Override - protected Class getEntityClass() { - return UsageRecordEntity.class; + protected Class getEntityClass() { + return ApiUsageStateEntity.class; } @Override - protected CrudRepository getCrudRepository() { - return usageRecordRepository; + protected CrudRepository getCrudRepository() { + return apiUsageStateRepository; } @Override - public UsageRecord findTenantUsageRecord(UUID tenantId) { - return DaoUtil.getData(usageRecordRepository.findByTenantId(tenantId)); + public ApiUsageState findTenantApiUsageState(UUID tenantId) { + return DaoUtil.getData(apiUsageStateRepository.findByTenantId(tenantId)); } @Override - public void deleteUsageRecordsByTenantId(TenantId tenantId) { - usageRecordRepository.deleteUsageRecordsByTenantId(tenantId.getId()); + public void deleteApiUsageStateByTenantId(TenantId tenantId) { + apiUsageStateRepository.deleteApiUsageStateByTenantId(tenantId.getId()); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java index bd9ee321e0..3a0edf5eea 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java @@ -39,7 +39,7 @@ import org.thingsboard.server.dao.rule.RuleChainService; import org.thingsboard.server.dao.service.DataValidator; import org.thingsboard.server.dao.service.PaginatedRemover; import org.thingsboard.server.dao.service.Validator; -import org.thingsboard.server.dao.usagerecord.UsageRecordService; +import org.thingsboard.server.dao.usagerecord.ApiUsageStateService; import org.thingsboard.server.dao.user.UserService; import org.thingsboard.server.dao.widget.WidgetsBundleService; @@ -74,7 +74,7 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe private DeviceProfileService deviceProfileService; @Autowired - private UsageRecordService usageRecordService; + private ApiUsageStateService apiUsageStateService; @Autowired private EntityViewService entityViewService; @@ -121,7 +121,7 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe Tenant savedTenant = tenantDao.save(tenant.getId(), tenant); if (tenant.getId() == null) { deviceProfileService.createDefaultDeviceProfile(savedTenant.getId()); - usageRecordService.createDefaultUsageRecord(savedTenant.getId()); + apiUsageStateService.createDefaultApiUsageState(savedTenant.getId()); } return savedTenant; } @@ -139,7 +139,7 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe deviceProfileService.deleteDeviceProfilesByTenantId(tenantId); userService.deleteTenantAdmins(tenantId); ruleChainService.deleteRuleChainsByTenantId(tenantId); - usageRecordService.deleteUsageRecordsByTenantId(tenantId); + apiUsageStateService.deleteApiUsageStateByTenantId(tenantId); tenantDao.removeById(tenantId, tenantId.getId()); deleteEntityRelations(tenantId, tenantId); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/usagerecord/ApiApiUsageStateServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/usagerecord/ApiApiUsageStateServiceImpl.java new file mode 100644 index 0000000000..9e543a8f7a --- /dev/null +++ b/dao/src/main/java/org/thingsboard/server/dao/usagerecord/ApiApiUsageStateServiceImpl.java @@ -0,0 +1,91 @@ +/** + * Copyright © 2016-2020 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.server.dao.usagerecord; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.thingsboard.server.common.data.EntityType; +import org.thingsboard.server.common.data.Tenant; +import org.thingsboard.server.common.data.ApiUsageState; +import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.dao.entity.AbstractEntityService; +import org.thingsboard.server.dao.exception.DataValidationException; +import org.thingsboard.server.dao.service.DataValidator; +import org.thingsboard.server.dao.tenant.TenantDao; + +import static org.thingsboard.server.dao.service.Validator.validateId; + +@Service +@Slf4j +public class ApiApiUsageStateServiceImpl extends AbstractEntityService implements ApiUsageStateService { + public static final String INCORRECT_TENANT_ID = "Incorrect tenantId "; + + private final ApiUsageStateDao apiUsageStateDao; + private final TenantDao tenantDao; + + public ApiApiUsageStateServiceImpl(TenantDao tenantDao, ApiUsageStateDao apiUsageStateDao) { + this.tenantDao = tenantDao; + this.apiUsageStateDao = apiUsageStateDao; + } + + @Override + public void deleteApiUsageStateByTenantId(TenantId tenantId) { + log.trace("Executing deleteUsageRecordsByTenantId [{}]", tenantId); + validateId(tenantId, INCORRECT_TENANT_ID + tenantId); + apiUsageStateDao.deleteApiUsageStateByTenantId(tenantId); + } + + @Override + public void createDefaultApiUsageState(TenantId tenantId) { + log.trace("Executing createDefaultUsageRecord [{}]", tenantId); + validateId(tenantId, INCORRECT_TENANT_ID + tenantId); + ApiUsageState apiUsageState = new ApiUsageState(); + apiUsageState.setTenantId(tenantId); + apiUsageState.setEntityId(tenantId); + apiUsageStateValidator.validate(apiUsageState, ApiUsageState::getTenantId); + apiUsageStateDao.save(apiUsageState.getTenantId(), apiUsageState); + } + + @Override + public ApiUsageState findTenantApiUsageState(TenantId tenantId) { + log.trace("Executing findTenantUsageRecord, tenantId [{}]", tenantId); + validateId(tenantId, INCORRECT_TENANT_ID + tenantId); + return apiUsageStateDao.findTenantApiUsageState(tenantId.getId()); + } + + private DataValidator apiUsageStateValidator = + new DataValidator() { + @Override + protected void validateDataImpl(TenantId requestTenantId, ApiUsageState apiUsageState) { + if (apiUsageState.getTenantId() == null) { + throw new DataValidationException("ApiUsageState should be assigned to tenant!"); + } else { + Tenant tenant = tenantDao.findById(requestTenantId, apiUsageState.getTenantId().getId()); + if (tenant == null) { + throw new DataValidationException("Asset is referencing to non-existent tenant!"); + } + } + if (apiUsageState.getEntityId() == null) { + throw new DataValidationException("UsageRecord should be assigned to entity!"); + } else if (!EntityType.TENANT.equals(apiUsageState.getEntityId().getEntityType())) { + throw new DataValidationException("Only Tenant Usage Records are supported!"); + } else if (!apiUsageState.getTenantId().getId().equals(apiUsageState.getEntityId().getId())) { + throw new DataValidationException("Can't assign one Usage Record to multiple tenants!"); + } + } + }; + +} diff --git a/dao/src/main/java/org/thingsboard/server/dao/usagerecord/UsageRecordDao.java b/dao/src/main/java/org/thingsboard/server/dao/usagerecord/ApiUsageStateDao.java similarity index 69% rename from dao/src/main/java/org/thingsboard/server/dao/usagerecord/UsageRecordDao.java rename to dao/src/main/java/org/thingsboard/server/dao/usagerecord/ApiUsageStateDao.java index 3b71e4ce20..1521da525e 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/usagerecord/UsageRecordDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/usagerecord/ApiUsageStateDao.java @@ -15,24 +15,21 @@ */ package org.thingsboard.server.dao.usagerecord; -import org.thingsboard.server.common.data.UsageRecord; -import org.thingsboard.server.common.data.User; +import org.thingsboard.server.common.data.ApiUsageState; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.PageData; -import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.Dao; import java.util.UUID; -public interface UsageRecordDao extends Dao { +public interface ApiUsageStateDao extends Dao { /** * Save or update usage record object * - * @param usageRecord the usage record + * @param apiUsageState the usage record * @return saved usage record entity */ - UsageRecord save(TenantId tenantId, UsageRecord usageRecord); + ApiUsageState save(TenantId tenantId, ApiUsageState apiUsageState); /** * Find usage record by tenantId. @@ -40,12 +37,12 @@ public interface UsageRecordDao extends Dao { * @param tenantId the tenantId * @return the corresponding usage record */ - UsageRecord findTenantUsageRecord(UUID tenantId); + ApiUsageState findTenantApiUsageState(UUID tenantId); /** * Delete usage record by tenantId. * * @param tenantId the tenantId */ - void deleteUsageRecordsByTenantId(TenantId tenantId); + void deleteApiUsageStateByTenantId(TenantId tenantId); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/usagerecord/UsageRecordServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/usagerecord/UsageRecordServiceImpl.java deleted file mode 100644 index fdaa38a1a2..0000000000 --- a/dao/src/main/java/org/thingsboard/server/dao/usagerecord/UsageRecordServiceImpl.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * Copyright © 2016-2020 The Thingsboard Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.thingsboard.server.dao.usagerecord; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.util.concurrent.ListenableFuture; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.RandomStringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; -import org.thingsboard.server.common.data.Customer; -import org.thingsboard.server.common.data.EntityType; -import org.thingsboard.server.common.data.Tenant; -import org.thingsboard.server.common.data.UsageRecord; -import org.thingsboard.server.common.data.User; -import org.thingsboard.server.common.data.id.CustomerId; -import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.id.UserCredentialsId; -import org.thingsboard.server.common.data.id.UserId; -import org.thingsboard.server.common.data.page.PageData; -import org.thingsboard.server.common.data.page.PageLink; -import org.thingsboard.server.common.data.security.UserCredentials; -import org.thingsboard.server.dao.entity.AbstractEntityService; -import org.thingsboard.server.dao.exception.DataValidationException; -import org.thingsboard.server.dao.exception.IncorrectParameterException; -import org.thingsboard.server.dao.model.ModelConstants; -import org.thingsboard.server.dao.service.DataValidator; -import org.thingsboard.server.dao.tenant.TenantDao; - -import java.util.HashMap; -import java.util.Map; - -import static org.thingsboard.server.dao.service.Validator.validateId; -import static org.thingsboard.server.dao.service.Validator.validatePageLink; -import static org.thingsboard.server.dao.service.Validator.validateString; - -@Service -@Slf4j -public class UsageRecordServiceImpl extends AbstractEntityService implements UsageRecordService { - public static final String INCORRECT_TENANT_ID = "Incorrect tenantId "; - - private final UsageRecordDao usageRecordDao; - private final TenantDao tenantDao; - - public UsageRecordServiceImpl(TenantDao tenantDao, UsageRecordDao usageRecordDao) { - this.tenantDao = tenantDao; - this.usageRecordDao = usageRecordDao; - } - - @Override - public void deleteUsageRecordsByTenantId(TenantId tenantId) { - log.trace("Executing deleteUsageRecordsByTenantId [{}]", tenantId); - validateId(tenantId, INCORRECT_TENANT_ID + tenantId); - usageRecordDao.deleteUsageRecordsByTenantId(tenantId); - } - - @Override - public void createDefaultUsageRecord(TenantId tenantId) { - log.trace("Executing createDefaultUsageRecord [{}]", tenantId); - validateId(tenantId, INCORRECT_TENANT_ID + tenantId); - UsageRecord usageRecord = new UsageRecord(); - usageRecord.setTenantId(tenantId); - usageRecord.setEntityId(tenantId); - usageRecordValidator.validate(usageRecord, UsageRecord::getTenantId); - usageRecordDao.save(usageRecord.getTenantId(), usageRecord); - } - - @Override - public UsageRecord findTenantUsageRecord(TenantId tenantId) { - log.trace("Executing findTenantUsageRecord, tenantId [{}]", tenantId); - validateId(tenantId, INCORRECT_TENANT_ID + tenantId); - return usageRecordDao.findTenantUsageRecord(tenantId.getId()); - } - - private DataValidator usageRecordValidator = - new DataValidator() { - @Override - protected void validateDataImpl(TenantId requestTenantId, UsageRecord usageRecord) { - if (usageRecord.getTenantId() == null) { - throw new DataValidationException("UsageRecord should be assigned to tenant!"); - } else { - Tenant tenant = tenantDao.findById(requestTenantId, usageRecord.getTenantId().getId()); - if (tenant == null) { - throw new DataValidationException("Asset is referencing to non-existent tenant!"); - } - } - if (usageRecord.getEntityId() == null) { - throw new DataValidationException("UsageRecord should be assigned to entity!"); - } else if (!EntityType.TENANT.equals(usageRecord.getEntityId().getEntityType())) { - throw new DataValidationException("Only Tenant Usage Records are supported!"); - } else if (!usageRecord.getTenantId().getId().equals(usageRecord.getEntityId().getId())) { - throw new DataValidationException("Can't assign one Usage Record to multiple tenants!"); - } - } - }; - -} diff --git a/dao/src/main/resources/sql/schema-entities-hsql.sql b/dao/src/main/resources/sql/schema-entities-hsql.sql index e3cbbda351..c671cd2e19 100644 --- a/dao/src/main/resources/sql/schema-entities-hsql.sql +++ b/dao/src/main/resources/sql/schema-entities-hsql.sql @@ -405,11 +405,11 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration_template ( CONSTRAINT oauth2_template_provider_id_unq_key UNIQUE (provider_id) ); -CREATE TABLE IF NOT EXISTS usage_record ( +CREATE TABLE IF NOT EXISTS api_usage_state ( id uuid NOT NULL CONSTRAINT usage_record_pkey PRIMARY KEY, created_time bigint NOT NULL, tenant_id uuid, entity_type varchar(32), entity_id uuid, - CONSTRAINT usage_record_unq_key UNIQUE (tenant_id, entity_id) + CONSTRAINT api_usage_state_unq_key UNIQUE (tenant_id, entity_id) ); diff --git a/dao/src/main/resources/sql/schema-entities.sql b/dao/src/main/resources/sql/schema-entities.sql index 6cd3adb337..d8539d9af9 100644 --- a/dao/src/main/resources/sql/schema-entities.sql +++ b/dao/src/main/resources/sql/schema-entities.sql @@ -431,13 +431,13 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration_template ( CONSTRAINT oauth2_template_provider_id_unq_key UNIQUE (provider_id) ); -CREATE TABLE IF NOT EXISTS usage_record ( +CREATE TABLE IF NOT EXISTS api_usage_state ( id uuid NOT NULL CONSTRAINT usage_record_pkey PRIMARY KEY, created_time bigint NOT NULL, tenant_id uuid, entity_type varchar(32), entity_id uuid, - CONSTRAINT usage_record_unq_key UNIQUE (tenant_id, entity_id) + CONSTRAINT api_usage_state_unq_key UNIQUE (tenant_id, entity_id) ); CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl(IN ttl bigint, IN debug_ttl bigint, INOUT deleted bigint) diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/AbstractServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/AbstractServiceTest.java index 8da1727631..2a99e868a9 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/AbstractServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/AbstractServiceTest.java @@ -27,7 +27,6 @@ import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import org.thingsboard.server.common.data.BaseData; import org.thingsboard.server.common.data.DeviceProfile; import org.thingsboard.server.common.data.DeviceProfileType; import org.thingsboard.server.common.data.DeviceTransportType; @@ -38,10 +37,7 @@ import org.thingsboard.server.common.data.device.profile.DefaultDeviceProfileTra import org.thingsboard.server.common.data.device.profile.DeviceProfileData; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.HasId; -import org.thingsboard.server.common.data.id.RuleChainId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.id.UUIDBased; -import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.dao.alarm.AlarmService; import org.thingsboard.server.dao.asset.AssetService; import org.thingsboard.server.dao.audit.AuditLogLevelFilter; @@ -61,7 +57,7 @@ import org.thingsboard.server.dao.settings.AdminSettingsService; import org.thingsboard.server.dao.tenant.TenantProfileService; import org.thingsboard.server.dao.tenant.TenantService; import org.thingsboard.server.dao.timeseries.TimeseriesService; -import org.thingsboard.server.dao.usagerecord.UsageRecordService; +import org.thingsboard.server.dao.usagerecord.ApiUsageStateService; import org.thingsboard.server.dao.user.UserService; import org.thingsboard.server.dao.widget.WidgetTypeService; import org.thingsboard.server.dao.widget.WidgetsBundleService; @@ -87,7 +83,7 @@ public abstract class AbstractServiceTest { protected UserService userService; @Autowired - protected UsageRecordService usageRecordService; + protected ApiUsageStateService apiUsageStateService; @Autowired protected AdminSettingsService adminSettingsService; diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseUsageRecordServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseApiUsageStateServiceTest.java similarity index 68% rename from dao/src/test/java/org/thingsboard/server/dao/service/BaseUsageRecordServiceTest.java rename to dao/src/test/java/org/thingsboard/server/dao/service/BaseApiUsageStateServiceTest.java index 28e0a6d54a..5f56506997 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseUsageRecordServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseApiUsageStateServiceTest.java @@ -19,17 +19,12 @@ import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.thingsboard.server.common.data.Customer; import org.thingsboard.server.common.data.Tenant; -import org.thingsboard.server.common.data.UsageRecord; -import org.thingsboard.server.common.data.User; -import org.thingsboard.server.common.data.id.CustomerId; +import org.thingsboard.server.common.data.ApiUsageState; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.dao.service.AbstractServiceTest; -import org.thingsboard.server.dao.service.DaoSqlTest; -public abstract class BaseUsageRecordServiceTest extends AbstractServiceTest { +public abstract class BaseApiUsageStateServiceTest extends AbstractServiceTest { private TenantId tenantId; @@ -48,9 +43,9 @@ public abstract class BaseUsageRecordServiceTest extends AbstractServiceTest { } @Test - public void testFindUsageRecordByTenantId() { - UsageRecord usageRecord = usageRecordService.findTenantUsageRecord(tenantId); - Assert.assertNotNull(usageRecord); + public void testFindApiUsageStateByTenantId() { + ApiUsageState apiUsageState = apiUsageStateService.findTenantApiUsageState(tenantId); + Assert.assertNotNull(apiUsageState); } } diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/sql/UsageRecordServiceSqlTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/sql/ApiUsageStateServiceSqlTest.java similarity index 77% rename from dao/src/test/java/org/thingsboard/server/dao/service/sql/UsageRecordServiceSqlTest.java rename to dao/src/test/java/org/thingsboard/server/dao/service/sql/ApiUsageStateServiceSqlTest.java index 8275b92044..bbaae0a5a9 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/sql/UsageRecordServiceSqlTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/sql/ApiUsageStateServiceSqlTest.java @@ -15,10 +15,9 @@ */ package org.thingsboard.server.dao.service.sql; -import org.thingsboard.server.dao.service.BaseUsageRecordServiceTest; -import org.thingsboard.server.dao.service.BaseUserServiceTest; +import org.thingsboard.server.dao.service.BaseApiUsageStateServiceTest; import org.thingsboard.server.dao.service.DaoSqlTest; @DaoSqlTest -public class UsageRecordServiceSqlTest extends BaseUsageRecordServiceTest { +public class ApiUsageStateServiceSqlTest extends BaseApiUsageStateServiceTest { } diff --git a/dao/src/test/resources/sql/hsql/drop-all-tables.sql b/dao/src/test/resources/sql/hsql/drop-all-tables.sql index 13c1eba943..b5629b0560 100644 --- a/dao/src/test/resources/sql/hsql/drop-all-tables.sql +++ b/dao/src/test/resources/sql/hsql/drop-all-tables.sql @@ -27,5 +27,5 @@ DROP TABLE IF EXISTS rule_chain; DROP TABLE IF EXISTS oauth2_client_registration; DROP TABLE IF EXISTS oauth2_client_registration_info; DROP TABLE IF EXISTS oauth2_client_registration_template; -DROP TABLE IF EXISTS usage_record; +DROP TABLE IF EXISTS api_usage_state; DROP FUNCTION IF EXISTS to_uuid; diff --git a/dao/src/test/resources/sql/psql/drop-all-tables.sql b/dao/src/test/resources/sql/psql/drop-all-tables.sql index b8ab69c758..34985883d7 100644 --- a/dao/src/test/resources/sql/psql/drop-all-tables.sql +++ b/dao/src/test/resources/sql/psql/drop-all-tables.sql @@ -28,4 +28,4 @@ DROP TABLE IF EXISTS tb_schema_settings; DROP TABLE IF EXISTS oauth2_client_registration; DROP TABLE IF EXISTS oauth2_client_registration_info; DROP TABLE IF EXISTS oauth2_client_registration_template; -DROP TABLE IF EXISTS usage_record; \ No newline at end of file +DROP TABLE IF EXISTS api_usage_state; \ No newline at end of file diff --git a/dao/src/test/resources/sql/timescale/drop-all-tables.sql b/dao/src/test/resources/sql/timescale/drop-all-tables.sql index 4333bc33ee..211cebb2ad 100644 --- a/dao/src/test/resources/sql/timescale/drop-all-tables.sql +++ b/dao/src/test/resources/sql/timescale/drop-all-tables.sql @@ -28,4 +28,4 @@ DROP TABLE IF EXISTS tb_schema_settings; DROP TABLE IF EXISTS oauth2_client_registration; DROP TABLE IF EXISTS oauth2_client_registration_info; DROP TABLE IF EXISTS oauth2_client_registration_template; -DROP TABLE IF EXISTS usage_record; \ No newline at end of file +DROP TABLE IF EXISTS api_usage_state; \ No newline at end of file