Basic Structures
This commit is contained in:
parent
accd98676f
commit
45479a79f9
@ -55,12 +55,12 @@ import org.thingsboard.server.service.subscription.TbLocalSubscriptionService;
|
||||
import org.thingsboard.server.service.subscription.TbAttributeSubscriptionScope;
|
||||
import org.thingsboard.server.service.subscription.TbAttributeSubscription;
|
||||
import org.thingsboard.server.service.subscription.TbTimeseriesSubscription;
|
||||
import org.thingsboard.server.service.telemetry.cmd.AttributesSubscriptionCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.GetHistoryCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.SubscriptionCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.TelemetryPluginCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.v1.AttributesSubscriptionCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.v1.GetHistoryCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.v1.SubscriptionCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.v1.TelemetryPluginCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.TelemetryPluginCmdsWrapper;
|
||||
import org.thingsboard.server.service.telemetry.cmd.TimeseriesSubscriptionCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.v1.TimeseriesSubscriptionCmd;
|
||||
import org.thingsboard.server.service.telemetry.exception.UnauthorizedException;
|
||||
import org.thingsboard.server.service.telemetry.sub.SubscriptionErrorCode;
|
||||
import org.thingsboard.server.service.telemetry.sub.SubscriptionUpdate;
|
||||
|
||||
@ -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,
|
||||
@ -15,11 +15,19 @@
|
||||
*/
|
||||
package org.thingsboard.server.service.telemetry.cmd;
|
||||
|
||||
import lombok.Data;
|
||||
import org.thingsboard.server.service.telemetry.cmd.v1.AttributesSubscriptionCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.v1.GetHistoryCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.v1.TimeseriesSubscriptionCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.v2.EntityDataCmd;
|
||||
import org.thingsboard.server.service.telemetry.cmd.v2.EntityDataUnsubscribeCmd;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Andrew Shvayka
|
||||
*/
|
||||
@Data
|
||||
public class TelemetryPluginCmdsWrapper {
|
||||
|
||||
private List<AttributesSubscriptionCmd> attrSubCmds;
|
||||
@ -28,31 +36,8 @@ public class TelemetryPluginCmdsWrapper {
|
||||
|
||||
private List<GetHistoryCmd> historyCmds;
|
||||
|
||||
public TelemetryPluginCmdsWrapper() {
|
||||
super();
|
||||
}
|
||||
private List<EntityDataCmd> entityDataCmds;
|
||||
|
||||
public List<AttributesSubscriptionCmd> getAttrSubCmds() {
|
||||
return attrSubCmds;
|
||||
}
|
||||
private List<EntityDataUnsubscribeCmd> entityDataUnsubscribeCmds;
|
||||
|
||||
public void setAttrSubCmds(List<AttributesSubscriptionCmd> attrSubCmds) {
|
||||
this.attrSubCmds = attrSubCmds;
|
||||
}
|
||||
|
||||
public List<TimeseriesSubscriptionCmd> getTsSubCmds() {
|
||||
return tsSubCmds;
|
||||
}
|
||||
|
||||
public void setTsSubCmds(List<TimeseriesSubscriptionCmd> tsSubCmds) {
|
||||
this.tsSubCmds = tsSubCmds;
|
||||
}
|
||||
|
||||
public List<GetHistoryCmd> getHistoryCmds() {
|
||||
return historyCmds;
|
||||
}
|
||||
|
||||
public void setHistoryCmds(List<GetHistoryCmd> historyCmds) {
|
||||
this.historyCmds = historyCmds;
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.thingsboard.server.service.telemetry.cmd;
|
||||
package org.thingsboard.server.service.telemetry.cmd.v1;
|
||||
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.thingsboard.server.service.telemetry.TelemetryFeature;
|
||||
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.thingsboard.server.service.telemetry.cmd;
|
||||
package org.thingsboard.server.service.telemetry.cmd.v1;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.thingsboard.server.service.telemetry.cmd;
|
||||
package org.thingsboard.server.service.telemetry.cmd.v1;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.thingsboard.server.service.telemetry.cmd;
|
||||
package org.thingsboard.server.service.telemetry.cmd.v1;
|
||||
|
||||
/**
|
||||
* @author Andrew Shvayka
|
||||
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.thingsboard.server.service.telemetry.cmd;
|
||||
package org.thingsboard.server.service.telemetry.cmd.v1;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@ -0,0 +1,15 @@
|
||||
package org.thingsboard.server.service.telemetry.cmd.v2;
|
||||
|
||||
import lombok.Data;
|
||||
import org.thingsboard.server.common.data.query.EntityDataQuery;
|
||||
|
||||
@Data
|
||||
public class EntityDataCmd {
|
||||
|
||||
private final int cmdId;
|
||||
private final EntityDataQuery query;
|
||||
private final EntityHistoryCmd historyCmd;
|
||||
private final LatestValueCmd latestCmd;
|
||||
private final TimeSeriesCmd tsCmd;
|
||||
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
package org.thingsboard.server.service.telemetry.cmd.v2;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class EntityDataUnsubscribeCmd {
|
||||
|
||||
private final int cmdId;
|
||||
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
package org.thingsboard.server.service.telemetry.cmd.v2;
|
||||
|
||||
import lombok.Data;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
import org.thingsboard.server.common.data.query.EntityData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class EntityDataUpdate {
|
||||
|
||||
private final int cmdId;
|
||||
private final PageData<EntityData> data;
|
||||
private final List<EntityData> update;
|
||||
private int errorCode;
|
||||
private String errorMsg;
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package org.thingsboard.server.service.telemetry.cmd.v2;
|
||||
|
||||
import org.thingsboard.server.common.data.kv.Aggregation;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class EntityHistoryCmd {
|
||||
|
||||
private List<String> keys;
|
||||
private long startTs;
|
||||
private long endTs;
|
||||
private long interval;
|
||||
private int limit;
|
||||
private Aggregation agg;
|
||||
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package org.thingsboard.server.service.telemetry.cmd.v2;
|
||||
|
||||
import org.thingsboard.server.common.data.query.EntityKey;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LatestValueCmd {
|
||||
|
||||
private List<EntityKey> keys;
|
||||
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package org.thingsboard.server.service.telemetry.cmd.v2;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TimeSeriesCmd {
|
||||
|
||||
private List<String> keys;
|
||||
private long startTs;
|
||||
private long timeWindow;
|
||||
private long interval;
|
||||
private int limit;
|
||||
private String agg;
|
||||
|
||||
}
|
||||
@ -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,
|
||||
@ -18,6 +18,10 @@ package org.thingsboard.server.dao.entity;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import org.thingsboard.server.common.data.id.EntityId;
|
||||
import org.thingsboard.server.common.data.id.TenantId;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
import org.thingsboard.server.common.data.query.EntityCountQuery;
|
||||
import org.thingsboard.server.common.data.query.EntityData;
|
||||
import org.thingsboard.server.common.data.query.EntityDataQuery;
|
||||
|
||||
public interface EntityService {
|
||||
|
||||
@ -25,4 +29,8 @@ public interface EntityService {
|
||||
|
||||
void deleteEntityRelations(TenantId tenantId, EntityId entityId);
|
||||
|
||||
long countEntitiesByQuery(TenantId tenantId, EntityCountQuery query);
|
||||
|
||||
PageData<EntityData> findEntityDataByQuery(TenantId tenantId, EntityDataQuery query);
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,13 @@
|
||||
package org.thingsboard.server.common.data.query;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
public class EntityCountQuery {
|
||||
|
||||
@Getter
|
||||
private final EntityFilter entityFilter;
|
||||
|
||||
public EntityCountQuery(EntityFilter entityFilter) {
|
||||
this.entityFilter = entityFilter;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.thingsboard.server.common.data.query;
|
||||
|
||||
import lombok.Data;
|
||||
import org.thingsboard.server.common.data.id.EntityId;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class EntityData {
|
||||
|
||||
private final EntityId entityId;
|
||||
private final Map<EntityKeyType, Map<String, TsValue>> latest;
|
||||
private final Map<String, TsValue[]> timeseries;
|
||||
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
package org.thingsboard.server.common.data.query;
|
||||
|
||||
import lombok.Data;
|
||||
import org.thingsboard.server.common.data.page.SortOrder;
|
||||
|
||||
@Data
|
||||
public class EntityDataPageLink {
|
||||
|
||||
private final int pageSize;
|
||||
private final int page;
|
||||
private final SortOrder sortOrder;
|
||||
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
package org.thingsboard.server.common.data.query;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class EntityDataQuery extends EntityCountQuery {
|
||||
|
||||
@Getter
|
||||
private final EntityDataPageLink pageLink;
|
||||
@Getter
|
||||
private final List<EntityKey> entityFields;
|
||||
@Getter
|
||||
private final List<EntityKey> latestValues;
|
||||
|
||||
public EntityDataQuery(EntityFilter entityFilter, EntityDataPageLink pageLink, List<EntityKey> entityFields, List<EntityKey> latestValues) {
|
||||
super(entityFilter);
|
||||
this.pageLink = pageLink;
|
||||
this.entityFields = entityFields;
|
||||
this.latestValues = latestValues;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
package org.thingsboard.server.common.data.query;
|
||||
|
||||
public interface EntityFilter {
|
||||
|
||||
EntityFilterType getType();
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
package org.thingsboard.server.common.data.query;
|
||||
|
||||
public enum EntityFilterType {
|
||||
SINGLE_ENTITY("singleEntity"),
|
||||
ENTITY_LIST("entityList"),
|
||||
ENTITY_NAME("entityName");
|
||||
// stateEntity = 'stateEntity',
|
||||
// assetType = 'assetType',
|
||||
// deviceType = 'deviceType',
|
||||
// entityViewType = 'entityViewType',
|
||||
// relationsQuery = 'relationsQuery',
|
||||
// assetSearchQuery = 'assetSearchQuery',
|
||||
// deviceSearchQuery = 'deviceSearchQuery',
|
||||
// entityViewSearchQuery = 'entityViewSearchQuery'
|
||||
|
||||
private final String label;
|
||||
|
||||
EntityFilterType(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
package org.thingsboard.server.common.data.query;
|
||||
|
||||
public class EntityKey {
|
||||
private EntityKeyType type;
|
||||
private String key;
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
package org.thingsboard.server.common.data.query;
|
||||
|
||||
public enum EntityKeyType {
|
||||
CLIENT_ATTRIBUTE,
|
||||
SHARED_ATTRIBUTE,
|
||||
SERVER_ATTRIBUTE,
|
||||
TIMESERIES,
|
||||
ENTITY_FIELD;
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.thingsboard.server.common.data.query;
|
||||
|
||||
import lombok.Data;
|
||||
import org.thingsboard.server.common.data.id.EntityId;
|
||||
|
||||
@Data
|
||||
public class SingleEntityFilter implements EntityFilter {
|
||||
@Override
|
||||
public EntityFilterType getType() {
|
||||
return EntityFilterType.SINGLE_ENTITY;
|
||||
}
|
||||
|
||||
private EntityId singleEntity;
|
||||
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
package org.thingsboard.server.common.data.query;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TsValue {
|
||||
|
||||
private final long ts;
|
||||
private final String value;
|
||||
}
|
||||
@ -33,6 +33,7 @@ import org.thingsboard.server.common.data.id.EntityViewId;
|
||||
import org.thingsboard.server.common.data.id.RuleChainId;
|
||||
import org.thingsboard.server.common.data.id.TenantId;
|
||||
import org.thingsboard.server.common.data.id.UserId;
|
||||
import org.thingsboard.server.common.data.query.EntityDataQuery;
|
||||
import org.thingsboard.server.dao.alarm.AlarmService;
|
||||
import org.thingsboard.server.dao.asset.AssetService;
|
||||
import org.thingsboard.server.dao.customer.CustomerService;
|
||||
@ -82,6 +83,11 @@ public class BaseEntityService extends AbstractEntityService implements EntitySe
|
||||
super.deleteEntityRelations(tenantId, entityId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long countEntitiesByQuery(TenantId tenantId, EntityDataQuery query) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ListenableFuture<String> fetchEntityNameAsync(TenantId tenantId, EntityId entityId) {
|
||||
log.trace("Executing fetchEntityNameAsync [{}]", entityId);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user