package com.qianwen.core.scanner.modular.factory;
|
|
import cn.hutool.core.util.StrUtil;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
import java.util.concurrent.ConcurrentHashMap;
|
import com.qianwen.core.scanner.modular.model.ResourceDefinition;
|
|
/* loaded from: blade-starter-scanner-9.3.0.0-SNAPSHOT.jar:org/springblade/core/scanner/modular/factory/DefaultApiResourceFactory.class */
|
public class DefaultApiResourceFactory implements ApiResourceFactory {
|
private Map<String, ResourceDefinition> resourceDefinitions = new ConcurrentHashMap();
|
private Map<String, Map<String, ResourceDefinition>> modularResourceDefinitions = new ConcurrentHashMap();
|
private Map<String, String> resourceCodeNameDict = new HashMap();
|
private Map<String, ResourceDefinition> urlDefineResources = new ConcurrentHashMap();
|
|
@Override // com.qianwen.core.scanner.modular.factory.ApiResourceFactory
|
public synchronized void registerDefinition(List<ResourceDefinition> apiResource) {
|
if (apiResource != null || apiResource.size() > 0) {
|
for (ResourceDefinition resourceDefinition : apiResource) {
|
ResourceDefinition alreadyFlag = this.resourceDefinitions.get(resourceDefinition.getCode());
|
if (alreadyFlag != null) {
|
throw new RuntimeException("资源扫描过程中存在重复资源!\n已存在资源:" + alreadyFlag + "\n新资源为: " + resourceDefinition);
|
}
|
this.resourceDefinitions.put(resourceDefinition.getCode(), resourceDefinition);
|
this.urlDefineResources.put(resourceDefinition.getUrl(), resourceDefinition);
|
Map<String, ResourceDefinition> modularResources = this.modularResourceDefinitions.get(StrUtil.toUnderlineCase(resourceDefinition.getModuleCode()));
|
if (modularResources == null) {
|
Map<String, ResourceDefinition> modularResources2 = new HashMap<>();
|
modularResources2.put(resourceDefinition.getCode(), resourceDefinition);
|
this.modularResourceDefinitions.put(StrUtil.toUnderlineCase(resourceDefinition.getModuleCode()), modularResources2);
|
} else {
|
modularResources.put(resourceDefinition.getCode(), resourceDefinition);
|
}
|
bindResourceName(resourceDefinition.getCode(), resourceDefinition.getName());
|
}
|
}
|
}
|
|
@Override // com.qianwen.core.scanner.modular.factory.ApiResourceFactory
|
public ResourceDefinition getResource(String resourceCode) {
|
return this.resourceDefinitions.get(resourceCode);
|
}
|
|
@Override // com.qianwen.core.scanner.modular.factory.ApiResourceFactory
|
public List<ResourceDefinition> getAllResources() {
|
Set<Map.Entry<String, ResourceDefinition>> entries = this.resourceDefinitions.entrySet();
|
ArrayList<ResourceDefinition> resourceDefinitions = new ArrayList<>();
|
for (Map.Entry<String, ResourceDefinition> entry : entries) {
|
resourceDefinitions.add(entry.getValue());
|
}
|
return resourceDefinitions;
|
}
|
|
@Override // com.qianwen.core.scanner.modular.factory.ApiResourceFactory
|
public List<ResourceDefinition> getResourcesByModularCode(String code) {
|
Map<String, ResourceDefinition> stringResourceDefinitionMap = this.modularResourceDefinitions.get(code);
|
ArrayList<ResourceDefinition> resourceDefinitions = new ArrayList<>();
|
for (String key : stringResourceDefinitionMap.keySet()) {
|
ResourceDefinition resourceDefinition = stringResourceDefinitionMap.get(key);
|
resourceDefinitions.add(resourceDefinition);
|
}
|
return resourceDefinitions;
|
}
|
|
@Override // com.qianwen.core.scanner.modular.factory.ApiResourceFactory
|
public String getResourceName(String code) {
|
return this.resourceCodeNameDict.get(code);
|
}
|
|
@Override // com.qianwen.core.scanner.modular.factory.ApiResourceFactory
|
public void bindResourceName(String code, String name) {
|
this.resourceCodeNameDict.putIfAbsent(code, name);
|
}
|
|
@Override // com.qianwen.core.scanner.modular.factory.ApiResourceFactory
|
public Map<String, Map<String, ResourceDefinition>> getModularResources() {
|
return this.modularResourceDefinitions;
|
}
|
|
@Override // com.qianwen.core.scanner.modular.factory.ApiResourceFactory
|
public String getResourceUrl(String code) {
|
ResourceDefinition resourceDefinition = this.resourceDefinitions.get(code);
|
if (resourceDefinition == null) {
|
return null;
|
}
|
return resourceDefinition.getUrl();
|
}
|
|
@Override // com.qianwen.core.scanner.modular.factory.ApiResourceFactory
|
public ResourceDefinition getResourceByUrl(String url) {
|
return this.urlDefineResources.get(url);
|
}
|
}
|