📄 dictutil.java
字号:
package org.xinguan.common.util;
import java.util.*;
import org.xinguan.common.logs.*;
public class DictUtil
{
private static class DictInfo
{
public String view;
public String core;
}
private static class DictMap
{
final private boolean viewonly;
private Hashtable<String,DictInfo> views;
private Hashtable<String,DictInfo> cores;
public DictMap(boolean viewonly)
{
this.viewonly=viewonly;
views=new Hashtable<String,DictInfo>(20);
cores=new Hashtable<String,DictInfo>(20);
}
public void reset()
{
views.clear();
cores.clear();
}
}
private static Hashtable<String,DictMap> dictmaps=new Hashtable<String,DictMap>(20);
static public synchronized void updateDict(String dict,boolean viewonly,String[][] maps)
{
if(!checkDict(dict,viewonly,maps))
{
return;
}
if(dictmaps.containsKey(dict))
{
LogsUtil.log(Level.Show,"系统中已经存在相同的"+dict+"字典配置");
dictmaps.get(dict).reset();
}
DictMap dictmap=new DictMap(viewonly);
for(String[] map:maps)
{
DictInfo info=new DictInfo();
info.view=map[0];
info.core=map[1];
dictmap.views.put(info.view,info);
dictmap.cores.put(info.core,info);
}
if(!dictmaps.containsKey(dict))
{
LogsUtil.log(Level.Show,"系统"+dict+"字典配置添加成功");
}
dictmaps.put(dict,dictmap);
}
static public String dictView(String dict,String core)
{
return dictView(dict,core,"unknow");
}
static public String dictView(String dict,String core,String vdef)
{
if(dictmaps.containsKey(dict)&&!dictmaps.get(dict).viewonly&&dictmaps.get(dict).cores.containsKey(core))
{
return dictmaps.get(dict).cores.get(core).view;
}
return vdef;
}
static public String dictCore(String dict,String view)
{
return dictCore(dict,view,"unknow");
}
static public String dictCore(String dict,String view,String vdef)
{
if(dictmaps.containsKey(dict)&&dictmaps.get(dict).views.containsKey(view))
{
return dictmaps.get(dict).views.get(view).core;
}
return vdef;
}
static private boolean checkDict(String dict,boolean viewonly,String[][] maps)
{
Hashtable<String,Object> vtmp=new Hashtable<String,Object>();
Hashtable<String,Object> ctmp=new Hashtable<String,Object>();
try
{
for(String[] map:maps)
{
if(map.length!=2)
{
LogsUtil.log(Level.Warn,"系统字典"+dict+"存在异常的映射配置");
return false;
}
if(viewonly&&ctmp.containsKey(map[1]))
{
LogsUtil.log(Level.Warn,"系统字典"+dict+"存在同样的核心值:"+map[1]);
return false;
}
if(!viewonly&&vtmp.containsKey(map[0]))
{
LogsUtil.log(Level.Warn,"系统字典"+dict+"存在同样的显示值:"+map[0]+"-->"+map[1]);
return false;
}
vtmp.put(map[0],maps);
ctmp.put(map[1],maps);
}
return true;
}
finally
{
vtmp.clear();
ctmp.clear();
}
}
public static void main(String[] args)
{
DictUtil.updateDict("dict1",false,new String[][]{new String[]{"大","2"},new String[]{"中","1"},new String[]{"小","0"}});
DictUtil.updateDict("dict2",true,new String[][]{new String[]{"大","2"},new String[]{"中","2"},new String[]{"小","0"}});
DictUtil.updateDict("dict3",false,new String[][]{new String[]{"大","2"},new String[]{"大","1"},new String[]{"小","0"}});
DictUtil.updateDict("dict4",true,new String[][]{new String[]{"大","2"},new String[]{"中","1"},new String[]{"小","0"}});
DictUtil.updateDict("dict5",true,new String[][]{new String[]{"大","2"},new String[]{"大","1"},new String[]{"小","0"}});
System.out.println(DictUtil.dictView("dict1","1")+" "+DictUtil.dictView("dict1","4")+" "+DictUtil.dictCore("dict1","大")+" "+DictUtil.dictCore("dict1","X"));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -