⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dictutil.java

📁 字典工具类。系统中常用的错误定义和解析功能类
💻 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 + -