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 extends DBModel> 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 extends DBModel> 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 {
+}