mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 12:07:42 +00:00
Merge branch 'master' of github.com:supersonicbi/supersonic into ssmaster
This commit is contained in:
@@ -2,12 +2,15 @@ package com.tencent.supersonic.headless.server.service.impl;
|
|||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.tencent.supersonic.auth.api.authentication.service.UserService;
|
import com.tencent.supersonic.auth.api.authentication.service.UserService;
|
||||||
|
import com.tencent.supersonic.common.pojo.DataEvent;
|
||||||
|
import com.tencent.supersonic.common.pojo.DataItem;
|
||||||
import com.tencent.supersonic.common.pojo.ItemDateResp;
|
import com.tencent.supersonic.common.pojo.ItemDateResp;
|
||||||
import com.tencent.supersonic.common.pojo.ModelRela;
|
import com.tencent.supersonic.common.pojo.ModelRela;
|
||||||
import com.tencent.supersonic.common.pojo.User;
|
import com.tencent.supersonic.common.pojo.User;
|
||||||
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
||||||
import com.tencent.supersonic.common.pojo.enums.EventType;
|
import com.tencent.supersonic.common.pojo.enums.EventType;
|
||||||
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
|
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
|
||||||
|
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||||
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
||||||
import com.tencent.supersonic.common.util.JsonUtil;
|
import com.tencent.supersonic.common.util.JsonUtil;
|
||||||
import com.tencent.supersonic.headless.api.pojo.DBColumn;
|
import com.tencent.supersonic.headless.api.pojo.DBColumn;
|
||||||
@@ -51,6 +54,7 @@ import com.tencent.supersonic.headless.server.utils.NameCheckUtils;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.context.ApplicationEventPublisher;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -96,13 +100,16 @@ public class ModelServiceImpl implements ModelService {
|
|||||||
|
|
||||||
private final ModelRelaService modelRelaService;
|
private final ModelRelaService modelRelaService;
|
||||||
|
|
||||||
|
private final ApplicationEventPublisher eventPublisher;
|
||||||
|
|
||||||
ExecutorService executor =
|
ExecutorService executor =
|
||||||
new ThreadPoolExecutor(0, 5, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
|
new ThreadPoolExecutor(0, 5, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
|
||||||
|
|
||||||
public ModelServiceImpl(ModelRepository modelRepository, DatabaseService databaseService,
|
public ModelServiceImpl(ModelRepository modelRepository, DatabaseService databaseService,
|
||||||
@Lazy DimensionService dimensionService, @Lazy MetricService metricService,
|
@Lazy DimensionService dimensionService, @Lazy MetricService metricService,
|
||||||
DomainService domainService, UserService userService, DataSetService dataSetService,
|
DomainService domainService, UserService userService, DataSetService dataSetService,
|
||||||
DateInfoRepository dateInfoRepository, ModelRelaService modelRelaService) {
|
DateInfoRepository dateInfoRepository, ModelRelaService modelRelaService,
|
||||||
|
ApplicationEventPublisher eventPublisher) {
|
||||||
this.modelRepository = modelRepository;
|
this.modelRepository = modelRepository;
|
||||||
this.databaseService = databaseService;
|
this.databaseService = databaseService;
|
||||||
this.dimensionService = dimensionService;
|
this.dimensionService = dimensionService;
|
||||||
@@ -112,6 +119,7 @@ public class ModelServiceImpl implements ModelService {
|
|||||||
this.dataSetService = dataSetService;
|
this.dataSetService = dataSetService;
|
||||||
this.dateInfoRepository = dateInfoRepository;
|
this.dateInfoRepository = dateInfoRepository;
|
||||||
this.modelRelaService = modelRelaService;
|
this.modelRelaService = modelRelaService;
|
||||||
|
this.eventPublisher = eventPublisher;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -122,6 +130,7 @@ public class ModelServiceImpl implements ModelService {
|
|||||||
modelRepository.createModel(modelDO);
|
modelRepository.createModel(modelDO);
|
||||||
batchCreateDimension(modelDO, user);
|
batchCreateDimension(modelDO, user);
|
||||||
batchCreateMetric(modelDO, user);
|
batchCreateMetric(modelDO, user);
|
||||||
|
sendEvent(modelDO, EventType.ADD);
|
||||||
return ModelConverter.convert(modelDO);
|
return ModelConverter.convert(modelDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,6 +157,7 @@ public class ModelServiceImpl implements ModelService {
|
|||||||
modelRepository.updateModel(modelDO);
|
modelRepository.updateModel(modelDO);
|
||||||
batchCreateDimension(modelDO, user);
|
batchCreateDimension(modelDO, user);
|
||||||
batchCreateMetric(modelDO, user);
|
batchCreateMetric(modelDO, user);
|
||||||
|
sendEvent(modelDO, EventType.UPDATE);
|
||||||
return ModelConverter.convert(modelDO);
|
return ModelConverter.convert(modelDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -608,4 +618,16 @@ public class ModelServiceImpl implements ModelService {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendEvent(ModelDO modelDO, EventType eventType) {
|
||||||
|
DataItem dataItem = getDataItem(modelDO);
|
||||||
|
eventPublisher.publishEvent(new DataEvent(this, Lists.newArrayList(dataItem), eventType));
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataItem getDataItem(ModelDO modelDO) {
|
||||||
|
return DataItem.builder().id(modelDO.getId().toString()).name(modelDO.getName())
|
||||||
|
.bizName(modelDO.getBizName()).modelId(modelDO.getId().toString())
|
||||||
|
.domainId(modelDO.getDomainId().toString()).type(TypeEnums.DIMENSION).build();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.mockito.Mockito;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import org.springframework.context.ApplicationEventPublisher;
|
||||||
|
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -76,9 +77,10 @@ class ModelServiceImplTest {
|
|||||||
DateInfoRepository dateInfoRepository = Mockito.mock(DateInfoRepository.class);
|
DateInfoRepository dateInfoRepository = Mockito.mock(DateInfoRepository.class);
|
||||||
DataSetService viewService = Mockito.mock(DataSetService.class);
|
DataSetService viewService = Mockito.mock(DataSetService.class);
|
||||||
ModelRelaService modelRelaService = Mockito.mock(ModelRelaService.class);
|
ModelRelaService modelRelaService = Mockito.mock(ModelRelaService.class);
|
||||||
|
ApplicationEventPublisher eventPublisher = Mockito.mock(ApplicationEventPublisher.class);
|
||||||
return new ModelServiceImpl(modelRepository, databaseService, dimensionService,
|
return new ModelServiceImpl(modelRepository, databaseService, dimensionService,
|
||||||
metricService, domainService, userService, viewService, dateInfoRepository,
|
metricService, domainService, userService, viewService, dateInfoRepository,
|
||||||
modelRelaService);
|
modelRelaService, eventPublisher);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ModelReq mockModelReq() {
|
private ModelReq mockModelReq() {
|
||||||
|
|||||||
Reference in New Issue
Block a user