国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

WMS系統(tǒng)異常體系結(jié)構(gòu)

cppowboy / 2538人閱讀

摘要:故其承載的功能主要是多語異常列表。多語系統(tǒng)的異常按業(yè)務(wù)功能區(qū)分,每個業(yè)務(wù)功能一個,下面以數(shù)據(jù)導入為例進行說明。多語包異常消息構(gòu)造體其方法即多語支持,在方法中進行語言判斷。

WMS系統(tǒng)異常體系結(jié)構(gòu) 前言

WMS系統(tǒng)的異常均繼承自RuntimeException, 主要作用于業(yè)務(wù)處理中異常信息的收集。故其承載的功能主要是 1.多語 2.異常列表。下面就以這兩個功能分別進行描述。

多語

WMS系統(tǒng)的異常按業(yè)務(wù)功能區(qū)分,每個業(yè)務(wù)功能一個,下面以數(shù)據(jù)導入為例進行說明。

public class DataImportException extends BizException {
    private static final long serialVersionUID = 1L;
    
    //多語包
    private static ResourceBundle resourceBundle = ResourceBundle.getBundle("exceptionConfig-import", locale);
    private static ResourceBundle usEnResourceBundle = ResourceBundle.getBundle("exceptionConfig-import", usLocale);

    //異常消息CODE
    public static final String ERR_IMPORT_METADATA_ORG_NOT_UNIQUE = "ERR_IMPORT_METADATA_ORG_NOT_UNIQUE"; 
    public static final String ERR_TALLYHEADER_EXIST = "ERR_TALLYHEADER_EXIST";

    //構(gòu)造體
    public DataImportException(String code, String... values) {
        super(code, getMessage(code), values);
    }
    public static String getMessage(@NotNull String key) {
        switch (WmsStatic.getLanguage()) {
            case ZH : return getCnMessage(key);
            case EN : return getEnMessage(key);
            default : return getCnMessage(key);
        }
    }
    private static String getCnMessage(String key) {
        try {
            return resourceBundle.getString(key);
        } catch (MissingResourceException e) {
            logger.warn("DataImportException: " + key + "CN no named");
            return NO_NAMED_EXCEPTION;
        }
    }
    private static String getEnMessage(String key) {
        try {
            return usEnResourceBundle.getString(key);
        } catch (MissingResourceException e) {
            logger.warn("DataImportException: " + key + "EN no named");
            return getCnMessage(key);
        }
    }

其getMessage方法即多語支持,在方法中進行語言判斷。

異常列表

在BizException中,維護了一個列表,用于對多個異常信息的保存。

public class BizException extends GeniDcException {
  private List errorList = new ArrayList();
  //按values順序替換message中的[]
  public BizException(String code, String message, String... values) {
        ClientMessage clientMessage = new ClientMessage();
        clientMessage.setCode(code);
        String msg = null;
        if ((NO_NAMED_EXCEPTION.equalsIgnoreCase(message)) && values.length > 0) {
            msg = values[0];
        } else {
            msg = parseMessage(message, values);
        }
        clientMessage.setMessage(msg);
        clientMessage.setMessageCN(msg);
        this.errorList.add(clientMessage);
        // 統(tǒng)一記錄下錯誤信息
        logger.info(this.toString());
    }
    //無須替換
    public BizException(Long id, String code, String message) {
        ClientMessage clientMessage = new ClientMessage();
        clientMessage.setId(id);
        clientMessage.setCode(code);
        clientMessage.setMessage(message);
        clientMessage.setMessageCN(message);
        this.errorList.add(clientMessage);
        // 統(tǒng)一記錄下錯誤信息
        logger.info(this.toString());
    }
    //將map的值替換message中的[]
    public BizException(Long id, String code, @NotNull String message, Map map) {
        ClientMessage clientMessage = new ClientMessage();
        clientMessage.setId(id);
        clientMessage.setCode(code);
        clientMessage.setContent(map);
        clientMessage.setMessage(message);
        clientMessage.setMessageCN(parseMessageFromMap(code, message, map));
        this.errorList.add(clientMessage);

        // 統(tǒng)一記錄下錯誤信息
        logger.info(this.toString());

    }
    private static String parseMessage(String message, @NotNull String... values) {
        if (values.length == 0) {
            return message;
        }
        message = message.replaceAll("[", "{").replaceAll("]", "}");
        Pattern pattern = Pattern.compile("{(.*?)}");
        Matcher matcher;
        for (String value : values) {
            matcher = pattern.matcher(message);
            value = Matcher.quoteReplacement(value);
            message = matcher.replaceFirst("[" + value + "]");
        }
        return message;
    }
    public BizException(@NotNull List errorList) {
        this.errorList.addAll(errorList);
    }
    private String parseMessageFromMap(String expCode, @NotNull String message, @Nullable Map map) {
        String[] splits = message.split("[");
        if (splits.length > 0) {
            for (int i = 0; i < splits.length; i++) {
                if (splits[i].indexOf("]") > 0) {
                    String mapKey = splits[i].substring(0, splits[i].indexOf("]"));
                    String mepValue = "";
                    if (map == null) {
                        mepValue = "[]";
                    } else if (map.containsKey(mapKey)) {
                        mepValue = "[" + String.valueOf(map.get(mapKey)) + "]";
                    } else {
                        logger.warn("when throw exception[" + expCode + "], you hadn"t set key [" + mapKey + "] and value into map ");
                    }
                    // replaceAll之前, 對特殊字符的處理
                    mepValue = Matcher.quoteReplacement(mepValue);
                    message = message.replaceAll("[" + mapKey + "]", mepValue);
                }
            }
            return message;
        } else {
            return message;
        }
    }
    
}

最終,Exception對象成了維護異常信息的容器。

結(jié)構(gòu)圖


總的來說, BizExcetion 維護了異常信息列表,DataImportException 支持了多語

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70736.html

相關(guān)文章

  • WMS項目中使用到的切面

    摘要:前言目前系統(tǒng)剛啟動,骨架剛剛搭建完成,在項目中,使用了一些切面,做一些業(yè)務(wù)無關(guān)的處理。在現(xiàn)在的項目里面,分別在,調(diào)用,分頁,處理,均使用到了切面。希望本文的閱讀者也不吝將項目中使用的切面分享出來。 前言 目前系統(tǒng)剛啟動,骨架剛剛搭建完成,在項目中,使用了一些切面,做一些業(yè)務(wù)無關(guān)的處理。在本文中,將各個切面例舉出來,用以加深自己對切面的理解。記得在初學切面的時候,一般文章介紹切面的時候,...

    Tikitoo 評論0 收藏0
  • Android之Window和彈窗問題

    摘要:指向的主要是實現(xiàn)和通信的。子不能單獨存在,需附屬特定的父。系統(tǒng)需申明權(quán)限才能創(chuàng)建。和類似,同樣是通過來實現(xiàn)。將添加到中顯示。方法完成的顯示。執(zhí)行的檢查參數(shù)等設(shè)置檢查將保存到中將保存到中。因為通過和的將無法獲取到從而導致失敗。 目錄介紹 10.0.0.1 Window是什么?如何通過WindowManager添加Window(代碼實現(xiàn))?WindowManager的主要功能是什么? 1...

    Lorry_Lu 評論0 收藏0
  • Linux服務(wù)器中搭建 Java / Postgres / Tomcat / Ngnix 環(huán)境 +

    摘要:生產(chǎn)環(huán)境服務(wù)器環(huán)境搭建安裝安裝在系統(tǒng)中通過以下命令輸入查看是否安裝正確,輸出如下創(chuàng)建發(fā)布目錄,并給出相應(yīng)的權(quán)限服務(wù)器和后臺文件夾上傳前端文件夾改變文件所有權(quán)文件的所有權(quán)變?yōu)榧尤雲(yún)?shù),文件夾以及文件夾里的所有 生產(chǎn)環(huán)境服務(wù)器環(huán)境搭建 安裝jdk 安裝 openjdk-8-jdk 在 ubuntu-16.04 系統(tǒng)中通過以下命令: 1.sudo add-apt-repository pp...

    evin2016 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<