package com.beanit.asn1dsrc.enums;

import java.util.HashMap;
import java.util.Map;

public enum eAuthInfo {

//    AI_Null        (0x00, "AI_Null"),               /* NULL */
//    AI_Initiate    (0x01, "AI_Initiate"),           /* 초기 통신연결을 위한 개시 요청 데이터 패킷 */
//    AI_Login       (0x02, "AI_Login"),              /* 서버에 접속하기 위한 클라이언트의 로그인 데이터 패킷 */
//    AI_FrED        (0x03, "AI_FrED"),               /* 서버와 클라이언트의 연결을 유지하기 위한 확인 데이터 패킷 */
//    AI_Terminate   (0x04, "AI_Terminate"),          /* 연결을 종료하고자 할 때, 서버에서 클라이언트에 요청하는 데이터 패킷 */
//    AI_Logout      (0x05, "AI_Logout"),             /* 접속을 종료하기 위한 클라이언트의 로그아웃 데이터 패킷 */
//    AI_Subscription(0x06, "AI_Subscription"),       /* 클라이언트가 서버에 정보를 요청할 경우 송신하는 데이터 패킷 */
//    AI_Publication (0x07, "AI_Publication"),        /* 클라이언트가 요청한 정보를 제공하기 위한 데이터 패킷 - 요청에 대한 정보공개*/
//    AI_TransferDone(0x08, "AI_TransferDone"),       /* 클라이언트가 요청한 정보를 파일형태로 제공하기 위한 데이터 패킷 */
//    AI_Accept      (0x09, "AI_Accept"),             /* 클라이언트의 요청에 대한 수용 */
//    AI_Reject      (0x0A, "AI_Reject"),             /* 클라이언트의 요청에 대한 거부 */
//    AI_NonCryptObu (0x21, "AI_NonCryptObu"),
//    AI_Multimedia  (0x22, "AI_Multimedia");
    AI_Null        (0x00, "AI_Null"),               /* NULL */
    AI_Initiate    (0x01, "AI_Initiate"),           /* 초기 통신연결을 위한 개시 요청 데이터 패킷 */
    AI_Login       (0x02, "AI_Login"),              /* 서버에 접속하기 위한 클라이언트의 로그인 데이터 패킷 */
    AI_FrED        (0x03, "AI_FrED"),               /* 서버와 클라이언트의 연결을 유지하기 위한 확인 데이터 패킷 */
    AI_Terminate   (0x04, "AI_Terminate"),          /* 연결을 종료하고자 할 때, 서버에서 클라이언트에 요청하는 데이터 패킷 */
    AI_Logout      (0x05, "AI_Logout"),             /* 접속을 종료하기 위한 클라이언트의 로그아웃 데이터 패킷 */
    AI_Subscription(0x06, "AI_Subscription"),       /* 클라이언트가 서버에 정보를 요청할 경우 송신하는 데이터 패킷 */
    AI_Publication (0x40, "AI_Publication"),        /* 클라이언트가 요청한 정보를 제공하기 위한 데이터 패킷 - 요청에 대한 정보공개*/
    AI_TransferDone(0x07, "AI_TransferDone"),       /* 클라이언트가 요청한 정보를 파일형태로 제공하기 위한 데이터 패킷 */
    AI_Accept      (0x08, "AI_Accept"),             /* 클라이언트의 요청에 대한 수용 */
    AI_Reject      (0x09, "AI_Reject"),             /* 클라이언트의 요청에 대한 거부 */
    AI_NonCryptObu (0x21, "AI_NonCryptObu"),
    AI_Multimedia  (0x22, "AI_Multimedia");

    private final int value;
    private final String string;

    private static final Map<Integer, eAuthInfo> map;
    static {
        map = new HashMap<>();
        for (eAuthInfo e : values()) {
            map.put(Integer.valueOf(e.value), e);
        }
    }
    public static eAuthInfo getByValue(int value) {
        return map.get(Integer.valueOf(value));
    }
    public static eAuthInfo getByValue(byte value) {
        int intValue = (int)(value & 0x0F);
        return map.get(Integer.valueOf(intValue));
    }

    eAuthInfo(int value, String string) {
        this.value  = value;
        this.string = string;
    }

    public int getValue() {
        return this.value;
    }
    public String toString() {
        return this.string;
    }
}