
org.dromara.northstar.gateway.GatewayMetaProvider Maven / Gradle / Ivy
package org.dromara.northstar.gateway;
import java.util.Collection;
import java.util.EnumMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import org.dromara.northstar.common.IDataServiceManager;
import org.dromara.northstar.common.constant.ChannelType;
import org.dromara.northstar.common.model.ComponentField;
import org.dromara.northstar.common.model.DynamicParams;
import org.dromara.northstar.common.model.GatewaySettings;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class GatewayMetaProvider {
/* gatewayType -> settings */
private Map settingsMap = new EnumMap<>(ChannelType.class);
private Map factoryMap = new EnumMap<>(ChannelType.class);
private Map mdRepoMap = new EnumMap<>(ChannelType.class);
public Collection getSettings(ChannelType channelType) {
return ((DynamicParams)settingsMap.get(channelType)).getMetaInfo().values();
}
public GatewayFactory getFactory(ChannelType channelType) {
if(!factoryMap.containsKey(channelType)) {
throw new IllegalStateException("没有该渠道的网关类型:" + channelType);
}
return factoryMap.get(channelType);
}
public IDataServiceManager getMarketDataRepo(ChannelType channelType) {
if(mdRepoMap.containsKey(channelType)) {
return mdRepoMap.get(channelType);
}
throw new IllegalStateException("没有该渠道的数据来源:" + channelType);
}
public void add(ChannelType channelType, GatewaySettings settings, GatewayFactory factory, IDataServiceManager dsMgr) {
log.info("注册 [{}] 渠道元信息", channelType);
if(Objects.nonNull(settings))
settingsMap.put(channelType, settings);
if(Objects.nonNull(factory))
factoryMap.put(channelType, factory);
if(Objects.nonNull(dsMgr))
mdRepoMap.put(channelType, dsMgr);
}
public List availableChannel() {
Set channels = new HashSet<>();
channels.addAll(factoryMap.keySet());
channels.addAll(settingsMap.keySet());
return channels.stream().sorted().toList();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy