chore[orm]: simplify the code

This commit is contained in:
godotg committed 2024-06-17 15:05:58 +08:00
1 parent 0f9f7a3574
commit 0cafa52a9d
4 files changed
+42 -32

No files matched your search

@@ -2,52 +2,62 @@ package com.zfoo.orm.codec;
import com.zfoo.orm.codec.basetype.*; import com.zfoo.orm.codec.basetype.*;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 基础类型枚举 * 基础类型枚举
* @Author:lqh * @Author:lqh
* @Date:2024/6/17 11:41 * @Date:2024/6/17 11:41
*/ */
@SuppressWarnings({"rawtypes", "unchecked"})
public enum BaseTypeEnum { public enum BaseTypeEnum {
Float(java.lang.Float.class, new FloatMapCodec()),
Integer(java.lang.Integer.class, new IntMapCodec()), Character(Character.class, new CharacterMapCodec()),
Double(java.lang.Double.class, new DoubleMapCodec()),
Character(java.lang.Character.class, new CharacterMapCodec()), Boolean(Boolean.class, new BooleanMapCodec()),
Byte(java.lang.Byte.class, new ByteMapCodec()),
Boolean(java.lang.Boolean.class, new BooleanMapCodec()), Byte(Byte.class, new ByteMapCodec()),
Long(java.lang.Long.class, new LongMapCodec()),
Short(java.lang.Short.class, new ShortMapCodec()), Short(Short.class, new ShortMapCodec()),
Integer(Integer.class, new IntMapCodec()),
Long(Long.class, new LongMapCodec()),
Float(Float.class, new FloatMapCodec()),
Double(Double.class, new DoubleMapCodec()),
; ;
private final MapKeyCodec mapKeyCodec;
private final Class<?> clazz; private final Class<?> clazz;
BaseTypeEnum(Class<?> clazz, MapKeyCodec mapKeyCodec) { private final MapKeyCodec<? extends Serializable> mapKeyCodec;
BaseTypeEnum(Class<?> clazz, MapKeyCodec<? extends Serializable> mapKeyCodec) {
this.clazz = clazz; this.clazz = clazz;
this.mapKeyCodec = mapKeyCodec; this.mapKeyCodec = mapKeyCodec;
} }
public MapKeyCodec getMapKeyCodec() { public static final Map<Class<?>, MapKeyCodec<? extends Serializable>> baseTypeMap = Arrays.stream(values()).collect(Collectors.toMap(BaseTypeEnum::getClazz, BaseTypeEnum::getMapKeyCodec));
return mapKeyCodec;
}
public Class<?> getClazz() { public Class<?> getClazz() {
return clazz; return clazz;
} }
public static boolean containsKeyType(Class<?> keyClass){
for (BaseTypeEnum typeEnum : values()) { public MapKeyCodec<? extends Serializable> getMapKeyCodec() {
if (typeEnum.getClazz() == keyClass) { return mapKeyCodec;
return true;
}
}
return false;
} }
public static MapKeyCodec getCodec(Class<?> clazz) {
for (BaseTypeEnum typeEnum : values()) { public static boolean containsKeyType(Class<?> keyClass){
if (typeEnum.getClazz() == clazz) { return baseTypeMap.containsKey(keyClass);
return typeEnum.getMapKeyCodec(); }
}
} public static MapKeyCodec<? extends Serializable> getCodec(Class<?> clazz) {
return null; return baseTypeMap.get(clazz);
} }
} }
@@ -34,7 +34,7 @@ public class BaseTypeKeyMapCodec<K,V> implements Codec<Map<K, V>> {
for (var entry : map.entrySet()) { for (var entry : map.entrySet()) {
var key = entry.getKey(); var key = entry.getKey();
var value = entry.getValue(); var value = entry.getValue();
MapKeyCodec<K> codec = BaseTypeEnum.getCodec(keyCodec.getEncoderClass()); MapKeyCodec<K> codec = (MapKeyCodec<K>) BaseTypeEnum.getCodec(keyCodec.getEncoderClass());
String keyValue = codec.encode(key); String keyValue = codec.encode(key);
writer.writeName(keyValue); writer.writeName(keyValue);
if (value == null) { if (value == null) {
@@ -52,7 +52,7 @@ public class BaseTypeKeyMapCodec<K,V> implements Codec<Map<K, V>> {
reader.readStartDocument(); reader.readStartDocument();
var map = new HashMap<K, V>(); var map = new HashMap<K, V>();
while (!BsonType.END_OF_DOCUMENT.equals(reader.readBsonType())) { while (!BsonType.END_OF_DOCUMENT.equals(reader.readBsonType())) {
MapKeyCodec<K> codec = BaseTypeEnum.getCodec(keyCodec.getEncoderClass()); MapKeyCodec<K> codec = (MapKeyCodec<K>) BaseTypeEnum.getCodec(keyCodec.getEncoderClass());
K key = codec.decode(reader.readName()); K key = codec.decode(reader.readName());
V value = null; V value = null;
if (BsonType.NULL.equals(reader.getCurrentBsonType())) { if (BsonType.NULL.equals(reader.getCurrentBsonType())) {
@@ -6,7 +6,7 @@ import com.zfoo.orm.codec.MapKeyCodec;
* @Author:lqh * @Author:lqh
* @Date:2024/6/17 11:35 * @Date:2024/6/17 11:35
*/ */
public class DoubleMapCodec<V> implements MapKeyCodec<Double> { public class DoubleMapCodec implements MapKeyCodec<Double> {
@Override @Override
public String encode(Double value) { public String encode(Double value) {
@@ -6,7 +6,7 @@ import com.zfoo.orm.codec.MapKeyCodec;
* @Author:lqh * @Author:lqh
* @Date:2024/6/17 11:38 * @Date:2024/6/17 11:38
*/ */
public class ShortMapCodec<V> implements MapKeyCodec<Short> { public class ShortMapCodec implements MapKeyCodec<Short> {
@Override @Override
public String encode(Short value) { public String encode(Short value) {
return (value != null) return (value != null)