From 7bb6d625e49a351b450a3d6a82c6e779d2819024 Mon Sep 17 00:00:00 2001 From: TheLastSunset <88444633+TheLastSunset@users.noreply.github.com> Date: Thu, 13 Jul 2023 14:11:40 +0800 Subject: [PATCH] refactor: optimize BasicEnumUtil --- .../enums/interfaces/BasicEnumUtilTest.java | 53 +++++--- .../orm/common/util/BasicEnumUtil.java | 125 +++++++++--------- 2 files changed, 94 insertions(+), 84 deletions(-) diff --git a/agileboot-infrastructure/src/test/java/com/agileboot/orm/enums/interfaces/BasicEnumUtilTest.java b/agileboot-infrastructure/src/test/java/com/agileboot/orm/enums/interfaces/BasicEnumUtilTest.java index 732f70f..f3c8953 100644 --- a/agileboot-infrastructure/src/test/java/com/agileboot/orm/enums/interfaces/BasicEnumUtilTest.java +++ b/agileboot-infrastructure/src/test/java/com/agileboot/orm/enums/interfaces/BasicEnumUtilTest.java @@ -1,21 +1,32 @@ -package com.agileboot.orm.enums.interfaces; - - -import com.agileboot.orm.common.enums.YesOrNoEnum; -import com.agileboot.orm.common.util.BasicEnumUtil; -import org.junit.Assert; -import org.junit.Test; - -public class BasicEnumUtilTest { - - @Test - public void testFromValue() { - - YesOrNoEnum yes = BasicEnumUtil.fromValue(YesOrNoEnum.class, 1); - YesOrNoEnum no = BasicEnumUtil.fromValue(YesOrNoEnum.class, 0); - - Assert.assertEquals(yes.description(), "是"); - Assert.assertEquals(no.description(), "否"); - - } -} +package com.agileboot.orm.enums.interfaces; + + +import com.agileboot.orm.common.enums.YesOrNoEnum; +import com.agileboot.orm.common.util.BasicEnumUtil; +import org.junit.Assert; +import org.junit.Test; + +public class BasicEnumUtilTest { + + @Test + public void testFromValue() { + + YesOrNoEnum yes = BasicEnumUtil.fromValue(YesOrNoEnum.class, 1); + YesOrNoEnum no = BasicEnumUtil.fromValue(YesOrNoEnum.class, 0); + + Assert.assertEquals("是", yes.description()); + Assert.assertEquals("否", no.description()); + + } + + @Test + public void testFromBool() { + + String yesDescription = BasicEnumUtil.getDescriptionByBool(YesOrNoEnum.class, true); + String noDescription = BasicEnumUtil.getDescriptionByBool(YesOrNoEnum.class, false); + + Assert.assertEquals("是", yesDescription); + Assert.assertEquals("否", noDescription); + + } +} diff --git a/agileboot-orm/src/main/java/com/agileboot/orm/common/util/BasicEnumUtil.java b/agileboot-orm/src/main/java/com/agileboot/orm/common/util/BasicEnumUtil.java index 1da873c..1921ed1 100644 --- a/agileboot-orm/src/main/java/com/agileboot/orm/common/util/BasicEnumUtil.java +++ b/agileboot-orm/src/main/java/com/agileboot/orm/common/util/BasicEnumUtil.java @@ -1,63 +1,62 @@ -package com.agileboot.orm.common.util; - -import cn.hutool.core.convert.Convert; -import com.agileboot.common.exception.ApiException; -import com.agileboot.common.exception.error.ErrorCode; -import com.agileboot.orm.common.interfaces.BasicEnum; - -import java.util.Objects; - -/** - * @author valarchie - */ -public class BasicEnumUtil { - - private BasicEnumUtil() { - } - - public static final String UNKNOWN = "未知"; - - public static > E fromValueSafely(Class enumClass, Object value) { - E target = null; - - for (E enumConstant : enumClass.getEnumConstants()) { - BasicEnum basicEnum = (BasicEnum) enumConstant; - if (Objects.equals(basicEnum.getValue(), value)) { - target = (E) basicEnum; - } - } - - return target; - } - - public static > E fromValue(Class enumClass, Object value) { - E target = null; - - for (E enumConstant : enumClass.getEnumConstants()) { - BasicEnum basicEnum = (BasicEnum) enumConstant; - if (Objects.equals(basicEnum.getValue(), value)) { - target = (E) basicEnum; - } - } - - if (target == null) { - throw new ApiException(ErrorCode.Internal.GET_ENUM_FAILED, enumClass.getSimpleName()); - } - - return target; - } - - public static > String getDescriptionByBool(Class enumClass, Boolean bool) { - Integer value = Convert.toInt(bool, 0); - return getDescriptionByValue(enumClass, value); - } - - public static > String getDescriptionByValue(Class enumClass, Object value) { - E basicEnum = fromValueSafely(enumClass, value); - if (basicEnum != null) { - return ((BasicEnum) basicEnum).description(); - } - return UNKNOWN; - } - -} +package com.agileboot.orm.common.util; + +import cn.hutool.core.convert.Convert; +import com.agileboot.common.exception.ApiException; +import com.agileboot.common.exception.error.ErrorCode; +import com.agileboot.orm.common.interfaces.BasicEnum; +import lombok.experimental.UtilityClass; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Objects; + +/** + * @author valarchie + */ +@UtilityClass +public class BasicEnumUtil { + + public static final String UNKNOWN = "未知"; + + @Nullable + public static & BasicEnum> E fromValueSafely(@NotNull Class enumClass, T value) { + E target = null; + + for (E enumConstant : enumClass.getEnumConstants()) { + if (Objects.equals(enumConstant.getValue(), value)) { + target = enumConstant; + } + } + + return target; + } + + @NotNull + public static & BasicEnum> E fromValue(@NotNull Class enumClass, T value) { + E target = fromValueSafely(enumClass, value); + + if (target == null) { + throw new ApiException(ErrorCode.Internal.GET_ENUM_FAILED, enumClass.getSimpleName()); + } + + return target; + } + + @NotNull + public static & BasicEnum> String getDescriptionByBool( + @NotNull Class enumClass, Boolean bool) { + Integer value = Convert.toInt(bool, 0); + return getDescriptionByValue(enumClass, value); + } + + @NotNull + public static & BasicEnum> String getDescriptionByValue( + @NotNull Class enumClass, T value) { + E basicEnum = fromValueSafely(enumClass, value); + if (basicEnum != null) { + return basicEnum.description(); + } + return UNKNOWN; + } + +}