浏览代码

新增表单解析器,用于将定义内容解析为表定义对象

周浩 9 年之前
父节点
当前提交
9561673e0b

+ 83 - 0
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/CommonFormParser.java

@@ -0,0 +1,83 @@
+package org.hsweb.web.service.impl.form;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.hsweb.web.bean.po.form.Form;
+import org.springframework.util.ReflectionUtils;
+import org.webbuilder.sql.FieldMetaData;
+import org.webbuilder.sql.TableMetaData;
+import org.webbuilder.utils.common.BeanUtils;
+
+import java.lang.reflect.Field;
+import java.util.Map;
+
+/**
+ * Created by zhouhao on 16-4-20.
+ */
+public class CommonFormParser implements FormParser {
+    @Override
+    public TableMetaData parse(Form form) {
+        String meta = form.getMeta();
+        TableMetaData metaData = new TableMetaData();
+        metaData.setName(form.getName());
+        metaData.setLocation(form.getU_id());
+        metaData.setComment(form.getRemark());
+        JSONObject object = JSON.parseObject(meta);
+        object.forEach((id, field) -> {
+            if ("main".equals(id)) return;
+            FieldMetaData fieldMeta = new FieldMetaData();
+            JSONArray obj = ((JSONArray) field);
+            obj.forEach((defT) -> {
+                JSONObject def = ((JSONObject) defT);
+                String key = def.getString("key");
+                Object value = def.get("value");
+                Field ftmp = ReflectionUtils.findField(FieldMetaData.class, key);
+                if (ftmp != null) {
+                    try {
+                        if ("javaType".equals(key)) value = mapperJavaType(value.toString());
+                        BeanUtils.attr(fieldMeta, key, value);
+                    } catch (Exception e) {
+                    }
+                } else {
+                    if (value instanceof String) {
+                        try {
+                            if (value.toString().trim().startsWith("[")
+                                    || value.toString().trim().startsWith("{"))
+                                value = castObj2JsonObject(value);
+                        } catch (Throwable e) {
+                        }
+                    }
+                    fieldMeta.attr(key, value);
+                    metaData.addField(fieldMeta);
+                }
+            });
+        });
+        return metaData;
+    }
+
+    protected JSONObject castObj2JsonObject(Object object) {
+        JSONObject obj = null;
+        if (object instanceof JSONObject) {
+            obj = ((JSONObject) object);
+        } else if (object instanceof Map) {
+            obj = new JSONObject(((Map) object));
+        } else if (object instanceof String) {
+            obj = JSON.parseObject(object.toString());
+        }
+        return obj;
+    }
+
+    public void validField(JSONObject field) {
+
+    }
+
+    public Class mapperJavaType(String str) {
+
+        return null;
+    }
+
+    public static void main(String[] args) {
+
+    }
+}

+ 11 - 0
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/FormParser.java

@@ -0,0 +1,11 @@
+package org.hsweb.web.service.impl.form;
+
+import org.hsweb.web.bean.po.form.Form;
+import org.webbuilder.sql.TableMetaData;
+
+/**
+ * Created by zhouhao on 16-4-20.
+ */
+public interface FormParser {
+    TableMetaData parse(Form form);
+}