Merge pull request #40 from TheLastSunset/optimize

refactor: optimize BasicEnumUtil
This commit is contained in:
valarchie
2023-07-13 15:41:29 +08:00
committed by GitHub
2 changed files with 94 additions and 84 deletions

View File

@@ -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);
}
}

View File

@@ -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;
}
}