【Java】Enumで警告とエラー番号を共通番号に変換する

■概要

別システムから応答された想定の警告(WARN)およびエラー(ERROR)番号を自システムの共通番号に変更する処理をEnumで実装する。

他システム
他システム
自システム
自システム
ERROR1
ERROR1
変換後
1001
変換後 1001
Text is not SVG – cannot display

・警告、エラー番号対応表

変換前番号変換後番号
WARN10001
WARN20002
WARN30003
WARN40004
WARN50005
ERROR11001
ERROR21002
ERROR31003
ERROR41004
ERROR51005
ERROR61006
ERROR71007
ERROR81008
ERROR91009
ERROR101010
上記以外(想定外)9999

■フローチャート

Enum内の警告およびエラー変換処理について、フローチャートを以下に示す。

開始
開始
Enumの要素数分繰り返し
Enumの要素数分繰り返し
変換対象
変換対象
あり
あり
なし
なし
return
変換後コード
return…
return
9999
return…
終了
終了
Text is not SVG – cannot display

■サンプルコード

・WarnErrorCode.java

package constant;

public enum WarnErrorCode {

  // Warning
  WARN1("WARN1", "0001"),
  WARN2("WARN2", "0002"),
  WARN3("WARN3", "0003"),
  WARN4("WARN4", "0004"),
  WARN5("WARN5", "0005"),

  // Error
  ERROR1("ERROR1", "1001"),
  ERROR2("ERROR2", "1002"),
  ERROR3("ERROR3", "1003"),
  ERROR4("ERROR4", "1004"),
  ERROR5("ERROR5", "1005"),
  ERROR6("ERROR6", "1006"),
  ERROR7("ERROR7", "1007"),
  ERROR8("ERROR8", "1008"),
  ERROR9("ERROR9", "1009"),
  ERROR10("ERROR10", "1010");

  // 変換前WarnErrorコード
  private final String inputCode;

  // 変換後WarnErrorコード
  private final String outputCode;

  /**
   * WarnErrorコード変換Enumコンストラクタ
   *
   * @param inputCode:  変換前WarnErrorコード
   * @param outputCode: 変換後WarnErrorコード
   */
  WarnErrorCode(String inputCode, String outputCode) {
    this.inputCode = inputCode;
    this.outputCode = outputCode;
  }

  // getter: 変換前WarnErrorコード
  public String getInputCode() {
    return inputCode;
  }

  // getter: 変換後WarnErrorコード
  public String getOutputCode() {
    return outputCode;
  }

  /**
   * Warn, Error コードコンバート処理
   *
   * @param targetCode: 変換対象コード
   * @return 変換後コード
   */
  public static String getConvertCode(String targetCode) {
    // enumの要素数分繰り返し
    for (WarnErrorCode warnErrorCode : values()) {
      // 変換対象コードが変換前コードに含まれている場合
      if (warnErrorCode.inputCode.equals(targetCode)) {
        // 変換後コードを返却
        return warnErrorCode.outputCode;
      }
    }
    // 変換対象コードが変換前コードに含まれていない場合は、想定外エラーコードを返す
    return "9999";
  }

}

・WarnErrorCodeMain.java

import constant.WarnErrorCode;

public class WarnErrorCodeMain {

  public static void main(String[] args) {
    // Warnサンプル
    String warnSampleCode3 = "WARN3";
    System.out.printf("warnSampleCode3(before): %s%n", warnSampleCode3);
    System.out.printf("warnSampleCode3(after): %s%n",
        WarnErrorCode.getConvertCode(warnSampleCode3));
    System.out.println("###########################");

    // Errorサンプル
    String errorSampleCode7 = "ERROR7";
    System.out.printf("errorSampleCode7(before): %s%n", errorSampleCode7);
    System.out.printf("errorSampleCode7(after): %s%n",
        WarnErrorCode.getConvertCode(errorSampleCode7));
    System.out.println("###########################");

    // 想定外サンプル
    String otherSampleCode = "AAAAAA";
    System.out.printf("otherSampleCode(before): %s%n", otherSampleCode);
    System.out.printf("otherSampleCode(after): %s%n",
        WarnErrorCode.getConvertCode(otherSampleCode));
    System.out.println("###########################");
  }
}

■実行結果

変換前の番号が、「WARN3」、「ERROR7」、「AAAAAA(想定外)」に対する実行結果を以下に示す。

warnSampleCode3(before): WARN3
warnSampleCode3(after): 0003
###########################
errorSampleCode7(before): ERROR7
errorSampleCode7(after): 1007
###########################
otherSampleCode(before): AAAAAA
otherSampleCode(after): 9999
###########################

コメント

タイトルとURLをコピーしました