onetomanyfield.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 807 行 · 第 1/2 页

JAVA
807
字号
    out.println(" " + var + ";");    out.println();    out.println("public " + getJavaTypeName() + " " + getGetterName() + "()");    out.println("{");    out.pushDepth();    out.println("if (" + var + " != null) {");    out.pushDepth();    out.println("if (__caucho_state.isPersist()) {");    out.pushDepth();    out.println(var + ".setSession(__caucho_session);");    out.println("return " + var + ";");    out.popDepth();    out.println("}");    out.println();    // jpa/1621    out.println("if (" + var + ".getSession() != null");    out.println("    && " + var + ".getSession() == __caucho_session)");    out.println("  return " + var + ";");    out.popDepth();    out.println("}");    out.println();    out.println("com.caucho.amber.AmberQuery query = null;");        String newEmptyCollection = "new " + collectionImpl;    if (param != null) {      newEmptyCollection += "<" + param.getPrintName();      if (isMap) {        newEmptyCollection += ", ";        newEmptyCollection += param2.getPrintName();      }      newEmptyCollection += ">";    }    newEmptyCollection += "(query";    if (isMap) {      // jpa/0v00      newEmptyCollection += "," + getEntityTargetType().getBeanClass().getName();      newEmptyCollection += ".class.getDeclaredMethod(\"";      String getterMapKey = getMapKey();      // jpa/0j63      if (getterMapKey == null) {        getterMapKey = getEntityTargetType().getId().generateGet("this");      }      else {        getterMapKey = "get" + Character.toUpperCase(getterMapKey.charAt(0))          + getterMapKey.substring(1);      }      newEmptyCollection += getterMapKey; // "getId");      newEmptyCollection += "\", (Class []) null)";    }    newEmptyCollection += ")";    out.println();    out.println("try {");    out.pushDepth();    out.println("if (__caucho_session == null) {");    out.pushDepth();    /*    out.println("if (" + var + " == null)");    out.println("  " + var + " = " + newEmptyCollection + ";");    // if (! isAbstract())    out.println();    out.println("return " + var + ";");    */        out.println("return " + generateSuperGetter("this") + ";");    out.popDepth();    out.println("}");    out.println();    out.print("String sql=\"");    out.print("SELECT c");    out.print(" FROM " + getEntitySourceType().getName() + " o,");    out.print("      o." + getName() + " c");    out.print(" WHERE ");    out.print(getEntitySourceType().getId().generateRawWhere("o"));    if (_orderByFields != null) {      out.print(" ORDER BY ");      for (int i = 0; i < _orderByFields.size(); i++) {        if (i != 0)          out.print(", ");        out.print("c." + _orderByFields.get(i));        if (Boolean.FALSE.equals(_orderByAscending.get(i)))          out.print(" DESC");      }    }    out.println("\";");    out.println("query = __caucho_session.prepareQuery(sql);");    out.println("int index = 1;");    getEntitySourceType().getId().generateSet(out, "query", "index", "this");    // Ex: _caucho_getChildren = new com.caucho.amber.collection.CollectionImpl    out.print(var);    out.print(" = " + newEmptyCollection + ";");    /*      out.pushDepth();      //generateAdd(out);      //generateRemove(out);      //generateClear(out);      // generateSize(out);      out.popDepth();      out.println("};");    */    // ejb/0aj2    if (getEntitySourceType().getPersistenceUnit().isJPA()) {      // jpa/0l43      out.println();      out.print("for (Object o : " + var);      // jpa/0v04      if (getJavaType().isAssignableTo(Map.class))        out.print(".values()");      out.println(")");      //out.println("  __caucho_session.makeTransactional((com.caucho.amber.entity.Entity) o);");    }    // jpa/0j70    out.println(generateSuperSetter("this", var) + ";");    out.println();    out.println("return " + var + ";");    out.popDepth();    out.println("} catch (Exception e) {");    out.println("  throw com.caucho.amber.AmberRuntimeException.create(e);");    out.println("}");    out.popDepth();    out.println("}");  }  /**   * Generates the size method.   */  private void generateSize(JavaWriter out)    throws IOException  {    out.println("public int size()");    out.println("{");    out.pushDepth();    out.println("if (__caucho_session == null || isValid())");    out.println("  return super.size();");    out.println("try {");    out.pushDepth();    out.println("__caucho_session.flushNoChecks();");    out.print("String sql=\"");    out.print("SELECT count(*) FROM ");    out.print(getEntitySourceType().getName());    out.print(" AS o ");    out.print(" WHERE ");    // getKeyColumn().generateRawMatchArgWhere("o");    ArrayList<IdField> keys = getEntitySourceType().getId().getKeys();    for (int i = 0; i < keys.size(); i++) {      if (i != 0)        out.print(" AND ");      out.print("o." + keys.get(i).getName());      out.print("=?");    }    out.println("\";");    out.println("com.caucho.amber.AmberQuery query;");    out.println("query = __caucho_session.prepareQuery(sql);");    out.println("int index = 1;");    // ejb/06h0    getEntitySourceType().getId().generateSet(out, "query", "index", getEntitySourceType().getInstanceClassName() + ".this"); // "__ResinExt.this");    out.println("java.sql.ResultSet rs = query.executeQuery();");    out.println("if (rs.next())");    out.println("  return rs.getInt(1);");    out.println("else");    out.println("  return 0;");    out.popDepth();    out.println("} catch (java.sql.SQLException e) {");    out.println("  throw com.caucho.amber.AmberRuntimeException.create(e);");    out.println("}");    out.popDepth();    out.println("}");  }  /**   * Generates the set property.   */  @Override  public void generateSetterMethod(JavaWriter out)    throws IOException  {    // commented out: jpa/0s2d    // JMethod setter = getSetterMethod();    //    // if (setter == null)    //   return;    //    // JClass []paramTypes = setter.getParameterTypes();    JType type;    ClassLoader loader = getSourceType().getPersistenceUnit().getTempClassLoader();        if (! getEntitySourceType().isFieldAccess()) {      type = JTypeWrapper.create(getGetterMethod().getGenericReturnType(),				 loader);    }    else {      Field field = EntityType.getField(getBeanClass(), getName());      type = JTypeWrapper.create(field.getGenericType(),				 loader);    }    out.println();    // commented out: jpa/0s2d    // out.print("public void " + setter.getName() + "(");    // out.print(getJavaTypeName() + " value)");    out.print("public void " + getSetterName() + "(");    out.print(type.getName() + " value)");    out.println("{");    out.pushDepth();    // out.println("if (" + generateSuperGetterMethod() + " == value)");    // out.println("  return;");    // out.println();    //    // jpa/0j57 needs to generate the following snippet:    //    // _caucho___caucho_get_xAnnualReviews    //   = new com.caucho.amber.collection.CollectionImpl<qa.XAnnualReview>(__caucho_session, null);    // _caucho___caucho_get_xAnnualReviews.addAll(0, value);    //    // jpa/0j57:    out.println("if (__caucho_session == null) {");    out.pushDepth();    out.println(generateSuperSetter("this", "value") + ";");    out.popDepth();    out.println("} else {");    out.pushDepth();        out.println("try {");    out.pushDepth();    String var = "_caucho_field_" + getGetterName();    out.print(var + " = new ");    type = getJavaType();    boolean isSet = type.isAssignableTo(Set.class);    boolean isMap = false;    if (!isSet) {      isMap = type.isAssignableTo(Map.class);    }    JType []paramArgs = type.getActualTypeArguments();    JType param = paramArgs.length > 0 ? paramArgs[0] : null;    JType param2 = paramArgs.length > 1 ? paramArgs[1] : null;    String collectionImpl;    if (isSet)      collectionImpl = "com.caucho.amber.collection.SetImpl";    else if (isMap)      collectionImpl = "com.caucho.amber.collection.MapImpl";    else      collectionImpl = "com.caucho.amber.collection.CollectionImpl";    out.print(collectionImpl);    if (param != null) {      out.print("<");      out.print(param.getPrintName());      if (isMap) {        if (param2 != null) {          out.print(", ");          out.print(param2.getPrintName());        }      }      out.print(">");    }    out.print("(__caucho_session, null");    if (isMap) {      out.print(", ");      out.print(getEntityTargetType().getBeanClass().getName());      out.print(".class.getDeclaredMethod(\"");      String getterMapKey = getMapKey();      // jpa/0j63      if (getterMapKey == null) {        getterMapKey = getEntityTargetType().getId().getKey().getGetterName();      }      else {        getterMapKey = "get" + Character.toUpperCase(getterMapKey.charAt(0))          + getterMapKey.substring(1);      }      out.print(getterMapKey); // "getId");      out.print("\")");    }    out.println(");");    out.print(var + ".");    if (isMap)      out.println("putAll(value);");    else if (isSet)      out.println("addAll(value);");    else      out.println("addAll(0, value);");    out.popDepth();    out.println("} catch(Exception e) {");    out.println("  throw com.caucho.amber.AmberRuntimeException.create(e);");    out.println("}");    out.popDepth();    out.println("}");    out.popDepth();    out.println("}");  }  /**   * Generates code for foreign entity create/delete   */  @Override  public void generateInvalidateForeign(JavaWriter out)    throws IOException  {    // XXX: jpa/0gg2    if (getEntitySourceType().getPersistenceUnit().isJPA())      return;    AmberTable table = getLinkColumns().getSourceTable();    out.println("if (\"" + table.getName() + "\".equals(table)) {");    out.pushDepth();    String var = "_caucho_field_" + getGetterName();    out.println("if (" + var + " != null)");    out.println("  " + var + ".update();");    out.popDepth();    out.println("}");  }  /**   * Generates the expire code   *   * ejb/06hi   */  @Override  public void generateExpire(JavaWriter out)    throws IOException  {    String var = "_caucho_field_" + getGetterName();    out.println(var + " = null;");  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?