package com.alibaba.doris.common.adminservice.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import com.alibaba.doris.common.AdminServiceConstants;
import com.alibaba.doris.common.Namespace;
import com.alibaba.doris.common.adminservice.BaseAdminService;
import com.alibaba.doris.common.adminservice.NamespaceService;
import com.alibaba.fastjson.JSON;
public class NamespaceServiceImpl extends BaseAdminService<List<Namespace>> implements NamespaceService {
private static NamespaceServiceImpl instance = new NamespaceServiceImpl();
private Map<String, Namespace> nameSpaceMap = new ConcurrentHashMap<String, Namespace>();
private NamespaceServiceImpl() {
fetchNameSpace();
}
public static NamespaceServiceImpl getInstance() {
return instance;
}
public Namespace fetchNameSpace(String nameSpace) {
Map<String, String> params = new HashMap<String, String>();
params.put(AdminServiceConstants.NAME_SPACE_NAME, nameSpace);
List<Namespace> nsList = requestForce(params);
if (nsList != null && !nsList.isEmpty()) {
/*if (!nameSpaceMap.isEmpty()) {
return nameSpaceMap.get(nameSpace);
} else {
return null;
}*/
Namespace ns = nsList.get(0);
nameSpaceMap.put(nameSpace, ns);
}
return nameSpaceMap.get(nameSpace);
}
public Map<String, Namespace> fetchNameSpace() {
List<Namespace> nsList = requestForce(null);
/*if (nsList == null || nsList.isEmpty()) {
if (!nameSpaceMap.isEmpty()) {
return nameSpaceMap;
} else {
return null;
}
}*/
//Map<String, Namespace> map = new HashMap<String, Namespace>();
if (nsList != null && !nsList.isEmpty()) {
for (Namespace ns : nsList) {
nameSpaceMap.put(ns.getName(), ns);
}
} else {
nameSpaceMap.clear();
}
//nameSpaceMap = map;
return nameSpaceMap;
}
@Override
public List<Namespace> convert(String response) {
return JSON.parseArray(response, Namespace.class);
}
@Override
public String getActionName() {
return AdminServiceConstants.NAME_SPACE_ACTION;
}
}