Пример #1
0
  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());
      }
    }
  }
Пример #2
0
 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;
 }
Пример #3
0
 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);
   }
 }