From 4007e44a83024f121b719c05e7ebd2529efb47c8 Mon Sep 17 00:00:00 2001 From: blaxsior Date: Fri, 9 Aug 2024 11:57:19 +0900 Subject: [PATCH] =?UTF-8?q?[chore]=20=EC=BD=94=EB=93=9C=20=EB=A0=88?= =?UTF-8?q?=EB=B2=A8=EC=97=90=EC=84=9C=20ActionHandler=EC=9D=84=20DrawEven?= =?UTF-8?q?tAction=20enum=20=ED=83=80=EC=9E=85=20=EA=B8=B0=EB=B0=98?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=A0=91=EA=B7=BC=ED=95=A0=20=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=84=A4=EC=A0=95=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1(#40)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../orange/event/draw/DrawEventConfig.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/main/java/hyundai/softeer/orange/event/draw/DrawEventConfig.java diff --git a/src/main/java/hyundai/softeer/orange/event/draw/DrawEventConfig.java b/src/main/java/hyundai/softeer/orange/event/draw/DrawEventConfig.java new file mode 100644 index 00000000..9730affa --- /dev/null +++ b/src/main/java/hyundai/softeer/orange/event/draw/DrawEventConfig.java @@ -0,0 +1,36 @@ +package hyundai.softeer.orange.event.draw; + +import hyundai.softeer.orange.event.draw.component.score.actionHandler.ActionHandler; +import hyundai.softeer.orange.event.draw.enums.DrawEventAction; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +@Configuration +public class DrawEventConfig { + private static final String NamePattern = "(.+?)_ActionHandler"; + + // actionHandler을 Action 타입으로 가져올 수 있도록 설정 + @Bean(name = "actionHandlerMap") + public Map actionHandlerMap(Map handlers) { + Map actionHandlerMap = new HashMap<>(); + Pattern pattern = Pattern.compile(NamePattern); + + for(var entry: handlers.entrySet()) { + Matcher matcher = pattern.matcher(entry.getKey()); + if (!matcher.find()) throw new RuntimeException("no matched action"); + + String key = matcher.group(1); + ActionHandler actionHandler = entry.getValue(); + + actionHandlerMap.put(DrawEventAction.valueOf(key), actionHandler); + } + // 런타임에 변경 못하게 제한 + return Collections.unmodifiableMap(actionHandlerMap); + } +}