Basic Structures

This commit is contained in:
Andrii Shvaika 2020-06-10 18:08:22 +03:00
parent accd98676f
commit 45479a79f9
25 changed files with 249 additions and 37 deletions

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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;
}

View File

@ -0,0 +1,10 @@
package org.thingsboard.server.service.telemetry.cmd.v2;
import lombok.Data;
@Data
public class EntityDataUnsubscribeCmd {
private final int cmdId;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -0,0 +1,6 @@
package org.thingsboard.server.common.data.query;
public interface EntityFilter {
EntityFilterType getType();
}

View File

@ -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;
}
}

View File

@ -0,0 +1,6 @@
package org.thingsboard.server.common.data.query;
public class EntityKey {
private EntityKeyType type;
private String key;
}

View File

@ -0,0 +1,9 @@
package org.thingsboard.server.common.data.query;
public enum EntityKeyType {
CLIENT_ATTRIBUTE,
SHARED_ATTRIBUTE,
SERVER_ATTRIBUTE,
TIMESERIES,
ENTITY_FIELD;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);