mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-10-20 00:15:55 +00:00
chore[orm]: simplify the code
This commit is contained in:
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)
|
||||||
|
|||||||
Reference in new issue
Block a user