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