refactor: optimize BasicEnumUtil
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 extends Enum<E>> E fromValueSafely(Class<E> 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 extends Enum<E>> E fromValue(Class<E> 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 <E extends Enum<E>> String getDescriptionByBool(Class<E> enumClass, Boolean bool) {
|
||||
Integer value = Convert.toInt(bool, 0);
|
||||
return getDescriptionByValue(enumClass, value);
|
||||
}
|
||||
|
||||
public static <E extends Enum<E>> String getDescriptionByValue(Class<E> 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 <T, E extends Enum<E> & BasicEnum<T>> E fromValueSafely(@NotNull Class<E> enumClass, T value) {
|
||||
E target = null;
|
||||
|
||||
for (E enumConstant : enumClass.getEnumConstants()) {
|
||||
if (Objects.equals(enumConstant.getValue(), value)) {
|
||||
target = enumConstant;
|
||||
}
|
||||
}
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static <T, E extends Enum<E> & BasicEnum<T>> E fromValue(@NotNull Class<E> 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 <E extends Enum<E> & BasicEnum<Integer>> String getDescriptionByBool(
|
||||
@NotNull Class<E> enumClass, Boolean bool) {
|
||||
Integer value = Convert.toInt(bool, 0);
|
||||
return getDescriptionByValue(enumClass, value);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static <T, E extends Enum<E> & BasicEnum<T>> String getDescriptionByValue(
|
||||
@NotNull Class<E> enumClass, T value) {
|
||||
E basicEnum = fromValueSafely(enumClass, value);
|
||||
if (basicEnum != null) {
|
||||
return basicEnum.description();
|
||||
}
|
||||
return UNKNOWN;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user