자식 enum 이 이런 것들이 있다고 치고
public enum EnumDataTableName {
Map_Building_Info {
@Override public String getCode() { return "TI_SPBD_BULD"; }
@Override public String getDesc() { return "건물정보"; }
}
,Map_Building_Group {
@Override public String getCode() { return "TI_SPBD_EQB"; }
@Override public String getDesc() { return "건물군정보"; }
}
,Map_Road_Info {
@Override public String getCode() { return "TI_SPRD_MANAGE"; }
@Override public String getDesc() { return "도로구간"; }
}
,Map_Road_Detail {
@Override public String getCode() { return "TI_SPRD_RW"; }
@Override public String getDesc() { return "실폭도로"; }
}
,Map_Road_Detail_Split {
@Override public String getCode() { return "TI_SPRD_INTRVL"; }
@Override public String getDesc() { return "기초구간"; }
}
,Map_Building_Gate {
@Override public String getCode() { return "TI_SPBD_ENTRC"; }
@Override public String getDesc() { return "출입구"; }
}
,Addr_Building_Info {
@Override public String getCode() { return "TI_SPBD_BULD"; }
@Override public String getDesc() { return "건물정보"; }
}
,Addr_Building_Jibon {
@Override public String getCode() { return "TI_SCCO_MVMN"; }
@Override public String getDesc() { return "건물지번"; }
}
,Addr_Road_Code {
@Override public String getCode() { return "TI_SPRD_STRET"; }
@Override public String getDesc() { return "도로명코드"; }
}
,Addr_Juso_Road_Code {
@Override public String getCode() { return "MATCHING_ROAD"; }
@Override public String getDesc() { return "도로명코드"; }
}
,Addr_Juso_Road_Addr {
@Override public String getCode() { return "MATCHING_JUSO"; }
@Override public String getDesc() { return "도로명주소"; }
}
,Addr_Juso_Jibon {
@Override public String getCode() { return "MATCHING_JIBUN"; }
@Override public String getDesc() { return "지번주소"; }
}
,Addr_Juso_Add_Info {
@Override public String getCode() { return "MATCHING_ADDINFO"; }
@Override public String getDesc() { return "부가정보"; }
}
,Addr_Road_Split {
@Override public String getCode() { return "TH_SPRD_INTRVL_POSITION"; }
@Override public String getDesc() { return "기초번호위치정보"; }
}
,Addr_Navi_Building {
@Override public String getCode() { return "MATCH_ENTRC_BULD"; }
@Override public String getDesc() { return "내비게이션 건물정보"; }
}
,Addr_Navi_Jibon {
@Override public String getCode() { return "MATCH_ENTRC_JIBUN"; }
@Override public String getDesc() { return "내비게이션 지번정보"; }
}
,Addr_Navi_Gate_Extra {
@Override public String getCode() { return "TH_SGCO_ADR_ENTRC"; }
@Override public String getDesc() { return "내비게이션 보조출입구"; }
}
;
public String getCode() {
throw new AbstractMethodError();
}
public String getDesc() {
throw new AbstractMethodError();
}
public static EnumDataTableName findByCode(String code) {
if(code != null) {
for(EnumDataTableName entity : EnumDataTableName.values()) {
if(entity.getCode().equals(code)) {
return entity;
}
}
}
return Addr_Road_Code;
}
}
부모 enum 을 선택하면 하위 enum 을 구할 수 있다
예를 들면 콤보박스1을 선택했을 때 콤보박스2의 내용이 바뀌어야 하는 시나리오?
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@SuppressWarnings("unchecked")
public enum EnumDataCode {
D001000("001000","JUSUBU","지도정보(건물)",Arrays.asList(EnumDataTableName.Map_Building_Info))
,D002000("002000","JUSUBC","지도정보(건물군)",Arrays.asList(EnumDataTableName.Map_Building_Group))
,D003000("003000","JUSULS","지도정보(도로구간)",Arrays.asList(EnumDataTableName.Map_Road_Info))
,D004000("004000","JUSURD","지도정보(실폭도로/기초구간)",Arrays.asList(EnumDataTableName.Map_Road_Detail,EnumDataTableName.Map_Road_Detail_Split))
,D005000("005000","JUSUBD","지도정보(출입구)",Arrays.asList(EnumDataTableName.Map_Building_Gate))
,Building("009000","JUSUBM","건물DB(대표지번+도로명주소, 관련지번)",Arrays.asList(EnumDataTableName.Addr_Building_Info,EnumDataTableName.Addr_Building_Jibon))
,Road_Code("009003","JUSUZC","도로명코드",Arrays.asList(EnumDataTableName.Addr_Road_Code))
,Addr("009004","JUSUMT","주소DB(도로명코드, 주소, 지번, 부가정보)",Arrays.asList(EnumDataTableName.Addr_Juso_Road_Code,EnumDataTableName.Addr_Juso_Road_Addr,EnumDataTableName.Addr_Juso_Jibon,EnumDataTableName.Addr_Juso_Add_Info))
,Road_Split("009021","JUSUIP","기초번호 위치정보DB",Arrays.asList(EnumDataTableName.Addr_Road_Split))
,Navi("009011","JUSUPE","내비게이션(건물+지번+보조출입구)",Arrays.asList(EnumDataTableName.Addr_Navi_Building,EnumDataTableName.Addr_Navi_Jibon,EnumDataTableName.Addr_Navi_Gate_Extra))
,Empty("000000","empty","empty",Collections.EMPTY_LIST)
;
private String code;
private String codeDocu;
private String desc;
private List<EnumDataTableName> listEnumDataTableName;
EnumDataCode(String code,String codeDocu,String desc,List<EnumDataTableName> listEnumDataTableName){
this.code = code;
this.codeDocu = codeDocu;
this.desc = desc;
this.listEnumDataTableName = listEnumDataTableName;
}
public String getCode() {
return this.code;
}
public String getCodeDocu() {
return this.codeDocu;
}
public String getDesc() {
return this.desc;
}
public boolean hasTableName(EnumDataTableName enumDataTableName) {
return listEnumDataTableName.stream()
.anyMatch(tableName -> tableName == enumDataTableName);
}
public static EnumDataCode findByEnumTableName(EnumDataTableName enumDataTableName) {
return Arrays.stream(EnumDataCode.values())
.filter(enumDataCode -> enumDataCode.hasTableName(enumDataTableName))
.findAny()
.orElse(Empty);
}
public static EnumDataCode findByCode(String code) {
return Arrays.stream(EnumDataCode.values())
.filter(enumDataCode -> enumDataCode.getCode().equals(code))
.findFirst()
.orElse(Empty);
}
}
'프로그램 > Java' 카테고리의 다른 글
logback 설정 일부 (0) | 2021.05.14 |
---|---|
spring boot mongo query (0) | 2021.05.14 |
spring boot mongodb (0) | 2021.05.14 |
좌표계 변환 (0) | 2021.05.14 |
jar/war 파일을 직접 실행할 수 있게 만드는 옵션 (0) | 2021.05.14 |