static void processProperties( JSONObject entity, ViewEntityModel viewModel, DbContext ctx, EntityModelVersion version) { JSONArray properties = entity.getJSONArray("properties"); for (int p = 0; p < properties.length(); p++) { JSONObject property = properties.getJSONObject(p); EntityModel child; String alias; if (property.has("model")) { String model = property.getString("model"); if (model.equals(viewModel.getRootModel().getName())) { child = viewModel.getRootModel(); alias = viewModel.getRootAlias(); } else { ViewEntityModel.EntityRelationship relationship = viewModel.getModel(property.getString("model")); child = relationship.getModel(); alias = relationship.getAlias(); } } else { child = viewModel; alias = viewModel.getRootAlias(); } String propertyName = property.getString("name"); if ("*".equals(propertyName)) { for (EntityProperty childProperty : child.getAllProperties(version.getVersion())) { String name = childProperty.getName(); if (childProperty.getModel() instanceof ViewEntityModel && childProperty.getAlias() != null) name = childProperty.getAlias(); EntityProperty cp = version.newProperty( childProperty.getType(), name, childProperty.isNullable(), null, null); cp.setModelAlias(alias); cp.setOriginalModel(childProperty.getModel()); } } else { EntityProperty childProperty = null; try { childProperty = child.getProperty(version.getVersion(), propertyName); } catch (IllegalArgumentException ignore) { } EntityProperty cp = version.newProperty( childProperty == null ? EntityProperty.Type.valueOf(property.getString("type")) : childProperty.getType(), property.getString("name"), !property.has("nullable") || property.getBoolean("nullable"), property.has("alias") ? property.getString("alias") : null, property.has("sql") ? property.getString("sql") : null); cp.setModelAlias(alias); if (childProperty != null) cp.setOriginalModel(childProperty.getModel()); } } }
static List<EntityProperty> getProperties(JSONObject query, EntityModel m, Version version) { List<EntityProperty> props; if (query.has("properties")) { props = new ArrayList<EntityProperty>(); JSONArray names = query.getJSONArray("properties"); for (int n = 0; n < names.length(); n++) { props.add(m.getProperty(version, names.getString(n))); } } else props = m.getAllProperties(version); return props; }
void renderModels(Configuration cfg) throws IOException { List<EntityModel> allModels = getAllModels(); Map<String, Object> params = new HashMap<String, Object>(); params.put("models", allModels); params.put("packageName", defaultPackageName + ".providers"); params.put("authority", authority); params.put("version", currentVersion()); writeFile( defaultPackageName + ".providers", "Schemas", getTemplate(cfg, "java", "schema"), params); for (EntityModel model : allModels) { if (!model.isRender()) continue; params = new HashMap<String, Object>(); params.put("model", model); params.put("version", currentVersion()); params.put("properties", model.getAllProperties(null)); writeFile( model.getPackageName() + ".model", model.getName(), getTemplate(cfg, "java", "model"), params); } }