diff --git a/pom.xml b/pom.xml index 0fb61ca..389df3e 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.cloudowr sdk - 1.1.1 + 1.1.2 @@ -42,7 +42,7 @@ com.alibaba fastjson - 1.2.6 + 1.2.24 provided diff --git a/src/main/java/cn/cloudowr/sdk/FastJSONUtil.java b/src/main/java/cn/cloudowr/sdk/FastJSONUtil.java index 667898f..ef98470 100644 --- a/src/main/java/cn/cloudowr/sdk/FastJSONUtil.java +++ b/src/main/java/cn/cloudowr/sdk/FastJSONUtil.java @@ -1,17 +1,41 @@ package cn.cloudowr.sdk; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.serializer.SerializeConfig; +import com.alibaba.fastjson.serializer.*; +import org.bson.types.ObjectId; + +import java.io.IOException; +import java.lang.reflect.Type; /** * Created by lyf66 on 2017/2/18. */ public class FastJSONUtil { - private static ObjectIdSerializer serializer = new ObjectIdSerializer(); + private static ObjectSerializer serializer = new ObjectSerializer() { + @Override + public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException { + if (object == null) { + serializer.getWriter().writeNull(); + } else { + serializer.write(((ObjectId) object).toString()); + } + } + }; + private static NameFilter nameFilter = new NameFilter() { + + @Override + public String process(Object object, String name, Object value) { + if ("_id".equals(name)) { + return "id"; + } + return name; + } + }; public static String bsonToJSON(Object object) { SerializeConfig mapping = new SerializeConfig(); mapping.put(org.bson.types.ObjectId.class, serializer); - return JSON.toJSONString(object, mapping); + + return JSON.toJSONString(object, mapping, nameFilter); } } diff --git a/src/main/java/cn/cloudowr/sdk/ObjectIdSerializer.java b/src/main/java/cn/cloudowr/sdk/ObjectIdSerializer.java deleted file mode 100644 index df3f2c9..0000000 --- a/src/main/java/cn/cloudowr/sdk/ObjectIdSerializer.java +++ /dev/null @@ -1,22 +0,0 @@ -package cn.cloudowr.sdk; - -import com.alibaba.fastjson.serializer.JSONSerializer; -import com.alibaba.fastjson.serializer.ObjectSerializer; -import org.bson.types.ObjectId; - -import java.io.IOException; -import java.lang.reflect.Type; - -/** - * Created by lisai on 17/2/9. - */ -public class ObjectIdSerializer implements ObjectSerializer { - @Override - public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException { - if(object == null) { - serializer.getWriter().writeNull(); - } else { - serializer.write(((ObjectId)object).toString()); - } - } -} diff --git a/src/main/java/cn/cloudowr/sdk/mongo/DBModel.java b/src/main/java/cn/cloudowr/sdk/mongo/DBModel.java new file mode 100644 index 0000000..9069d2f --- /dev/null +++ b/src/main/java/cn/cloudowr/sdk/mongo/DBModel.java @@ -0,0 +1,7 @@ +package cn.cloudowr.sdk.mongo; + +/** + * Created by lyf66 on 2017/2/19. + */ +public abstract class DBModel { +} diff --git a/src/main/java/cn/cloudowr/sdk/mongo/MongoQueryModel.java b/src/main/java/cn/cloudowr/sdk/mongo/MongoQueryModel.java new file mode 100644 index 0000000..bc0334a --- /dev/null +++ b/src/main/java/cn/cloudowr/sdk/mongo/MongoQueryModel.java @@ -0,0 +1,7 @@ +package cn.cloudowr.sdk.mongo; + +/** + * Created by lyf66 on 2017/2/19. + */ +public class MongoQueryModel extends QueryModel{ +} diff --git a/src/main/java/cn/cloudowr/sdk/mongo/MongoQueryModelBuilder.java b/src/main/java/cn/cloudowr/sdk/mongo/MongoQueryModelBuilder.java new file mode 100644 index 0000000..2133576 --- /dev/null +++ b/src/main/java/cn/cloudowr/sdk/mongo/MongoQueryModelBuilder.java @@ -0,0 +1,103 @@ +package cn.cloudowr.sdk.mongo; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; +import com.mongodb.client.model.Filters; +import com.mongodb.client.model.Updates; +import org.bson.Document; +import org.bson.conversions.Bson; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by lyf66 on 2017/2/19. + */ +public class MongoQueryModelBuilder { + private static Map> cachedRequiedFieldNames = new HashMap<>(); + private String key; + + public MongoQueryModel build(String json, Class klass) { + + return null; + } + + public MongoQueryModel build(String json, List requiedFieldNames) { + return null; + } + + public Document build(String json, boolean throwOnException) { + Bson filter; + Bson update; + Bson proj; + + HashMap map = JSON.parseObject(json, new TypeReference>() {}); + List f = (List) map.get("f"); + List upd = (List) map.get("upd"); + + + filter = getFilter(f); + update = getUpdate(upd); + return null; + } + + private Bson getUpdate(List upd) { + List ops = new ArrayList<>(); + Bson update = null; + for (String s : upd) { + List list = JSON.parseObject(s, new TypeReference>() {}); + String opString = list.get(0); + bbb(ops, list, opString); + } + return null; + } + + private Bson getFilter(List f) { + List ops = new ArrayList<>(); + Bson filter = null; + + for (String s : f) { + List list = JSON.parseObject(s, new TypeReference>() {}); + String opString = list.get(1); + bbb(ops, list, opString); + + filter = Filters.and(ops); + } + return filter; + } + + private void bbb(List ops, List list, String opString) { + String key = list.get(1); +// Object val = + switch (opString) { + case "=": + ops.add(Filters.eq(list.get(1), list.get(2))); + break; + case ">": + ops.add(Filters.gt(list.get(1), list.get(2))); + break; + case "<": + ops.add(Filters.lt(list.get(1), list.get(2))); + break; + case ">=": + ops.add(Filters.gte(list.get(1), list.get(2))); + break; + case "<=": + + ops.add(Filters.lte(key, list.get(2))); + break; + case "$set": + ops.add(Updates.set(list.get(1), list.get(2))); + } + } + + private Document typeCheck(boolean throwOnException, String msg) { + if (throwOnException) { + throw new ClassCastException(msg); + } else { + return null; + } + } +} diff --git a/src/main/java/cn/cloudowr/sdk/mongo/QueryBuilder.java b/src/main/java/cn/cloudowr/sdk/mongo/QueryBuilder.java new file mode 100644 index 0000000..1a88ca0 --- /dev/null +++ b/src/main/java/cn/cloudowr/sdk/mongo/QueryBuilder.java @@ -0,0 +1,13 @@ +package cn.cloudowr.sdk.mongo; + +import java.util.List; +import java.util.Map; + +/** + * Created by lyf66 on 2017/2/19. + */ +public interface QueryBuilder { + T build(String json, Class klass); + T build(String json, List requiedFieldNames); + T build(String json); +} diff --git a/src/main/java/cn/cloudowr/sdk/mongo/QueryModel.java b/src/main/java/cn/cloudowr/sdk/mongo/QueryModel.java new file mode 100644 index 0000000..9889821 --- /dev/null +++ b/src/main/java/cn/cloudowr/sdk/mongo/QueryModel.java @@ -0,0 +1,7 @@ +package cn.cloudowr.sdk.mongo; + +/** + * Created by lyf66 on 2017/2/19. + */ +public abstract class QueryModel { +}