org.thingsboard.server.dao.entity.BaseEntityService.java Source code

Java tutorial

Introduction

Here is the source code for org.thingsboard.server.dao.entity.BaseEntityService.java

Source

/**
 * Copyright  2016-2018 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.entity;

import com.google.common.base.Function;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.thingsboard.server.common.data.HasName;
import org.thingsboard.server.common.data.alarm.AlarmId;
import org.thingsboard.server.common.data.id.*;
import org.thingsboard.server.dao.alarm.AlarmService;
import org.thingsboard.server.dao.asset.AssetService;
import org.thingsboard.server.dao.customer.CustomerService;
import org.thingsboard.server.dao.dashboard.DashboardService;
import org.thingsboard.server.dao.device.DeviceService;
import org.thingsboard.server.dao.entityview.EntityViewService;
import org.thingsboard.server.dao.rule.RuleChainService;
import org.thingsboard.server.dao.tenant.TenantService;
import org.thingsboard.server.dao.user.UserService;

/**
 * Created by ashvayka on 04.05.17.
 */
@Service
@Slf4j
public class BaseEntityService extends AbstractEntityService implements EntityService {

    @Autowired
    private AssetService assetService;

    @Autowired
    private DeviceService deviceService;

    @Autowired
    private EntityViewService entityViewService;

    @Autowired
    private TenantService tenantService;

    @Autowired
    private CustomerService customerService;

    @Autowired
    private UserService userService;

    @Autowired
    private DashboardService dashboardService;

    @Autowired
    private AlarmService alarmService;

    @Autowired
    private RuleChainService ruleChainService;

    @Override
    public void deleteEntityRelations(TenantId tenantId, EntityId entityId) {
        super.deleteEntityRelations(tenantId, entityId);
    }

    @Override
    public ListenableFuture<String> fetchEntityNameAsync(TenantId tenantId, EntityId entityId) {
        log.trace("Executing fetchEntityNameAsync [{}]", entityId);
        ListenableFuture<String> entityName;
        ListenableFuture<? extends HasName> hasName;
        switch (entityId.getEntityType()) {
        case ASSET:
            hasName = assetService.findAssetByIdAsync(tenantId, new AssetId(entityId.getId()));
            break;
        case DEVICE:
            hasName = deviceService.findDeviceByIdAsync(tenantId, new DeviceId(entityId.getId()));
            break;
        case ENTITY_VIEW:
            hasName = entityViewService.findEntityViewByIdAsync(tenantId, new EntityViewId(entityId.getId()));
            break;
        case TENANT:
            hasName = tenantService.findTenantByIdAsync(tenantId, new TenantId(entityId.getId()));
            break;
        case CUSTOMER:
            hasName = customerService.findCustomerByIdAsync(tenantId, new CustomerId(entityId.getId()));
            break;
        case USER:
            hasName = userService.findUserByIdAsync(tenantId, new UserId(entityId.getId()));
            break;
        case DASHBOARD:
            hasName = dashboardService.findDashboardInfoByIdAsync(tenantId, new DashboardId(entityId.getId()));
            break;
        case ALARM:
            hasName = alarmService.findAlarmByIdAsync(tenantId, new AlarmId(entityId.getId()));
            break;
        case RULE_CHAIN:
            hasName = ruleChainService.findRuleChainByIdAsync(tenantId, new RuleChainId(entityId.getId()));
            break;
        default:
            throw new IllegalStateException("Not Implemented!");
        }
        entityName = Futures.transform(hasName,
                (Function<HasName, String>) hasName1 -> hasName1 != null ? hasName1.getName() : null);
        return entityName;
    }

}