use of com.bluenimble.platform.db.DatabaseObjectSerializer.Fields in project serverless by bluenimble.
the class DatabaseObjectImpl method toJson.
@SuppressWarnings({ "unchecked", "rawtypes" })
private JsonObject toJson(DatabaseObjectImpl dbo, DatabaseObjectSerializer serializer, int level) {
if (serializer == null) {
serializer = DatabaseObjectSerializer.Default;
}
String entity = dbo.entity();
Fields fields = serializer.fields(level);
if (fields == null || Fields.None.equals(fields)) {
return null;
}
String[] fieldNames = null;
if (Fields.All.equals(fields)) {
fieldNames = dbo.document.fieldNames();
} else {
fieldNames = MinimalFields;
}
JsonObject json = serializer.create(entity, level);
if (json == null) {
return null;
}
for (String f : fieldNames) {
Object v = dbo.get(f);
if (v == null) {
continue;
}
if (v instanceof Date) {
v = Lang.toUTC((Date) v);
} else if (v instanceof Map) {
v = new JsonObject((Map<String, Object>) v, true);
} else if (v instanceof List) {
List<Object> list = (List<Object>) v;
if (list.isEmpty()) {
continue;
}
JsonArray arr = new JsonArray();
for (Object o : list) {
if (o == null) {
continue;
}
if (o instanceof DatabaseObjectImpl) {
arr.add(toJson((DatabaseObjectImpl) o, serializer, level + 1));
} else {
if (o instanceof Date) {
arr.add(Lang.toUTC((Date) o));
} else if (Map.class.isAssignableFrom(o.getClass())) {
arr.add(new JsonObject((Map) o, true));
} else {
arr.add(o);
}
}
}
v = arr;
} else if (v instanceof DatabaseObjectImpl) {
v = toJson((DatabaseObjectImpl) v, serializer, level + 1);
}
serializer.set(entity, json, f, v);
}
return json;
}
use of com.bluenimble.platform.db.DatabaseObjectSerializer.Fields in project serverless by bluenimble.
the class DatabaseObjectImpl method toJson.
@SuppressWarnings({ "unchecked", "rawtypes" })
private JsonObject toJson(DatabaseObjectImpl dbo, DatabaseObjectSerializer serializer, int level, boolean refresh) {
if (serializer == null) {
serializer = DatabaseObjectSerializer.Default;
}
String entity = dbo.entity();
Fields fields = serializer.fields(level);
if (fields == null || Fields.None.equals(fields)) {
return null;
}
Set<String> keys = dbo.document.keySet();
if (keys == null || keys.isEmpty()) {
return null;
}
String[] fieldNames = null;
if (Fields.All.equals(fields)) {
fieldNames = keys.toArray(new String[keys.size()]);
} else {
fieldNames = MinimalFields;
}
// If object is partial and more than minimal fields are requested
if (dbo.partial && Fields.All.equals(fields) && refresh) {
dbo.refresh();
keys = dbo.document.keySet();
fieldNames = keys.toArray(new String[keys.size()]);
}
JsonObject json = serializer.create(entity, level);
if (json == null) {
return null;
}
for (String f : fieldNames) {
Object v = dbo.get(f);
if (v == null) {
continue;
}
if (ObjectIdKey.equals(f)) {
f = Database.Fields.Id;
}
if (v instanceof Date) {
v = Lang.toUTC((Date) v);
} else if (v instanceof Map) {
v = new JsonObject((Map<String, Object>) v, true);
} else if (v instanceof DatabaseObjectImpl) {
v = toJson(((DatabaseObjectImpl) v), serializer, level + 1, true);
} else if (v instanceof DatabaseObjectList) {
List<Object> list = (List<Object>) v;
if (list.isEmpty()) {
continue;
}
JsonArray arr = new JsonArray();
for (Object o : list) {
if (o == null) {
continue;
}
if (o instanceof DatabaseObjectImpl) {
arr.add(toJson(((DatabaseObjectImpl) o), serializer, level + 1, true));
} else {
if (o instanceof Date) {
arr.add(Lang.toUTC((Date) o));
} else if (Map.class.isAssignableFrom(o.getClass())) {
arr.add(new JsonObject((Map) o, true));
} else if (List.class.isAssignableFrom(o.getClass())) {
arr.add(new JsonArray((List<Object>) o));
} else {
arr.add(o);
}
}
}
v = arr;
}
serializer.set(entity, json, f, v);
}
return json;
}
Aggregations