ambermappedcomponent.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 1,961 行 · 第 1/4 页

JAVA
1,961
字号
    out.println();    out.println("public void __caucho_mergeFrom(AmberConnection aConn,");    out.println("                               Entity sourceEntity)");    out.println("{");    out.pushDepth();    out.println(getClassName() + " source = (" + getClassName() + ") sourceEntity;");    _entityType.generateMergeFrom(out, "this", "source");    // XXX: can't be right    /*    out.println();    out.println("try {");    out.pushDepth();    // jpa/1622    // out.println("targetEntity.__caucho_cascadePostPersist(aConn);");    out.popDepth();    out.println("} catch (java.sql.SQLException e) {");    out.println("  throw new com.caucho.amber.AmberRuntimeException(e);");    out.println("}");    */    // jpa/1900    //generateLogFine(out, " merged");    out.popDepth();    out.println("}");  }  void generateSetLoadMask(JavaWriter out)    throws IOException  {  }  /**   * Generates the copy   */  void generateMakePersistent(JavaWriter out)    throws IOException  {    out.println();    out.println("public void __caucho_makePersistent(com.caucho.amber.manager.AmberConnection aConn,");    out.println("                                    com.caucho.amber.entity.EntityItem cacheItem)");    out.println("{");    out.pushDepth();    out.println(_extClassName + " entity = (" + _extClassName + ") cacheItem.getEntity();");    out.println("__caucho_home = entity.__caucho_home;");    out.println("if (__caucho_home == null) throw new NullPointerException();");    out.println("__caucho_cacheItem = cacheItem;");    // jpa/0ge6: MappedSuperclass    if (_entityType.getId() != null) {      _entityType.getId().generateCopy(out, "super", "entity");    }    out.println("__caucho_session = aConn;");    out.println("__caucho_state = com.caucho.amber.entity.EntityState.P_NON_TRANSACTIONAL;");    out.popDepth();    out.println("}");  }  /**   * Generates the cascade persist   */  void generateCascadePersist(JavaWriter out)    throws IOException  {    out.println();    out.println("public void __caucho_cascadePrePersist(com.caucho.amber.manager.AmberConnection aConn)");    out.println("  throws java.sql.SQLException");    out.println("{");    out.pushDepth();    // jpa/0i60    /*      out.println("if (__caucho_state == com.caucho.amber.entity.EntityState.P_TRANSACTIONAL)");      out.println("  __caucho_state = com.caucho.amber.entity.EntityState.P_PERSIST;");    */    // out.println("if (aConn == null)");    // out.println("  throw new com.caucho.amber.AmberException(\"Null AmberConnection when object \" + " + getDebug() + " + \" is trying to cascade persist child objects.\");");    ArrayList<AmberField> fields = _entityType.getFields();    for (int i = 0; i < fields.size(); i++) {      AmberField field = fields.get(i);      if (field.isCascadable()) {        CascadableField cascadable = (CascadableField) field;        out.println();        cascadable.generatePreCascade(out, "aConn", CascadeType.PERSIST);      }    }    out.popDepth();    out.println("}");    out.println();    out.println("public void __caucho_cascadePostPersist(com.caucho.amber.manager.AmberConnection aConn)");    out.println("  throws java.sql.SQLException");    out.println("{");    out.pushDepth();    for (int i = 0; i < fields.size(); i++) {      AmberField field = fields.get(i);      if (field.isCascadable()) {        CascadableField cascadable = (CascadableField) field;        out.println();        cascadable.generatePostCascade(out, "aConn", CascadeType.PERSIST);      }    }    out.popDepth();    out.println("}");  }  /**   * Generates the cascade remove   */  void generateCascadeRemove(JavaWriter out)    throws IOException  {    out.println();    out.println("public void __caucho_cascadePreRemove(com.caucho.amber.manager.AmberConnection aConn)");    out.println("  throws java.sql.SQLException");    out.println("{");    out.pushDepth();    ArrayList<AmberField> fields = _entityType.getFields();    for (int i = 0; i < fields.size(); i++) {      AmberField field = fields.get(i);      if (field.isCascadable()) {        CascadableField cascadable = (CascadableField) field;        out.println();        cascadable.generatePreCascade(out, "aConn", CascadeType.REMOVE);      }    }    out.popDepth();    out.println("}");    out.println();    out.println("public void __caucho_cascadePostRemove(com.caucho.amber.manager.AmberConnection aConn)");    out.println("  throws java.sql.SQLException");    out.println("{");    out.pushDepth();    for (int i = 0; i < fields.size(); i++) {      AmberField field = fields.get(i);      if (field.isCascadable()) {        CascadableField cascadable = (CascadableField) field;        out.println();        cascadable.generatePostCascade(out, "aConn", CascadeType.REMOVE);      }    }    out.popDepth();    out.println("}");  }  /**   * Generates the home methods   */  void generateHome(JavaWriter out)    throws IOException  {    generateHomeFind(out);    boolean generateHomeNew = true;    // jpa/0ge2    if (_entityType instanceof MappedSuperclassType)      generateHomeNew = false;    /* XXX       if (_entityType instanceof SubEntityType) {         SubEntityType sub = (SubEntityType) _entityType;         // jpa/0ge2         if (! sub.isParentMappedSuperclass()) {           if (! sub.getParentType().isAbstractClass())             generateHomeNew = false;         }       }    */    if (generateHomeNew) {      generateHomeNew(out);      generateHomeFindNew(out);    }  }  /**   * Generates the load key.   */  void generateLoadKey(JavaWriter out)    throws IOException  {    out.println();    out.print("public Object __caucho_load_key(");    out.print("com.caucho.amber.manager.AmberConnection aConn,");    out.println("java.sql.ResultSet rs, int index)");    out.println("  throws java.sql.SQLException");    out.println("{");    out.pushDepth();    boolean isAbstract      = Modifier.isAbstract(_entityType.getBeanClass().getModifiers());    // jpa/0gg0    if (_entityType.getId() == null || isAbstract) {      // jpa/0ge6: MappedSuperclass      out.println("return null;");      out.popDepth();      out.println("}");      return;    }    out.print("return ");    int index = _entityType.getId().generateLoadForeign(out, "rs", "index", 0);    out.println(";");    out.popDepth();    out.println("}");  }  /**   * Generates the home methods   */  void generateHomeFind(JavaWriter out)    throws IOException  {    out.println();    out.print("public com.caucho.amber.entity.EntityItem __caucho_home_find(");    out.print("com.caucho.amber.manager.AmberConnection aConn,");    out.print("com.caucho.amber.entity.AmberEntityHome home,");    out.println("java.sql.ResultSet rs, int index)");    out.println("  throws java.sql.SQLException");    out.println("{");    out.pushDepth();    boolean isAbstract      = Modifier.isAbstract(_entityType.getBeanClass().getModifiers());    if (_entityType.getId() == null || isAbstract) {      // jpa/0ge6: MappedSuperclass      out.println("return null;");      out.popDepth();      out.println("}");      return;    }    out.print("Object key = ");    int index = _entityType.getId().generateLoadForeign(out, "rs", "index", 0);    out.println(";");    if (_entityType.getDiscriminator() == null) {      out.println("return aConn.loadCacheItem(home.getJavaClass(), key, home);");    }    else {      out.println("String discriminator = rs.getString(index + " + index + ");");      out.println();      out.println("return home.findDiscriminatorEntityItem(aConn, key, discriminator);");    }    out.popDepth();    out.println("}");  }  void generateHomeNew(JavaWriter out)    throws IOException  {    out.println();    out.print("public com.caucho.amber.entity.Entity __caucho_home_new(");    out.print("com.caucho.amber.entity.AmberEntityHome home");    out.println(", Object key");    out.println(", AmberConnection aConn");    out.println(", EntityItem cacheItem");    out.println(")");    out.println("{");    out.pushDepth();    if (_entityType.isAbstractClass() || _entityType.getId() == null) {      out.println("return null;");      out.popDepth();      out.println("}");      return;    }    out.println(getClassName() + " entity = new " + getClassName() + "();");    out.println("entity.__caucho_home = home.getEntityType();");    out.println("entity.__caucho_setPrimaryKey(key);");    out.println("entity.__caucho_session = aConn;");    out.println("entity.__caucho_cacheItem = cacheItem;");    out.println("return entity;");    out.popDepth();    out.println("}");  }  void generateHomeFindNew(JavaWriter out)    throws IOException  {    EntityType parentType = _entityType.getParentType();    // jpa/0ge3    // jpa/0l32: find(SubBean.class, "2") would try to select the    // discriminator column from the "sub-table".    if (isEntityParent())      return;    out.println();    out.print("public com.caucho.amber.entity.Entity __caucho_home_find(");    out.print("com.caucho.amber.manager.AmberConnection aConn, ");    out.print("com.caucho.amber.entity.AmberEntityHome home, ");    out.println("Object key)");    out.println("{");    out.pushDepth();    AmberColumn discriminator = _entityType.getDiscriminator();    if (_entityType.isAbstractClass()        || _entityType.getId() == null        || discriminator == null) {      out.println("return __caucho_home_new(home, key, aConn, null);");      out.popDepth();      out.println("}");      return;    }    String rootTableName = _entityType.getRootTableName();    if (rootTableName == null)      rootTableName = "";    out.println("java.sql.ResultSet rs = null;");    out.println("java.sql.PreparedStatement pstmt = null;");    out.println("String sql = null;");    out.println();    out.println("try {");    out.pushDepth();    String keyType = _entityType.getId().getForeignTypeName();    String discriminatorVar = "discriminator";    out.println("String " + discriminatorVar + " = null;");    generateHomeNewLoading(out, discriminatorVar);    out.println("com.caucho.amber.entity.Entity entity = home.newDiscriminatorEntity(key, " + discriminatorVar + ");");    out.println("entity.__caucho_load(aConn, rs, 1);");    out.println("return entity;");    out.popDepth();    out.println("} catch (RuntimeException e) {");    out.println("  throw e;");    out.println("} catch (Exception e) {");    out.println("  throw new com.caucho.amber.AmberRuntimeException(e);");    out.println("} finally {");    /*      out.println("  if (rs != null)");      out.println("    rs.close();");      out.println("  if (pstmt != null)");      out.println("    aConn.closeStatement(sql);");    */    out.println("}");    out.popDepth();    out.println("}");  }  /**   * Generates the loading for home_new   */  void generateHomeNewLoading(JavaWriter out,                              String discriminatorVar)    throws IOException  {    out.print("sql = \"select ");    EntityType parentType = _entityType;    /* XXX: jpa/0gg3    // jpa/0l32    if (_entityType.getDiscriminator() != null) {      while (parentType.getParentType() != null)        parentType = parentType.getParentType();    }    */    out.printJavaString(parentType.generateLoadSelect("o"));    out.print(" from ");    /*      if (rootTableName == null)        out.print(_entityType.getTable().getName());      else        out.print(rootTableName);    */    out.printJavaString(_entityType.getTable().getName());    out.print(" o where ");    // jpa/0s27    out.printJavaString((parentType.getId().generateMatchArgWhere("o")));    out.println("\";");    out.println("pstmt = aConn.prepareStatement(sql);");    String keyType = _entityType.getId().getForeignTypeName();    out.println(keyType + " " + "keyValue = (" + keyType + ") key;");    out.println("int index = 1;");    _entityType.getId().generateSetKey(out, "pstmt", "index", "keyValue");    out.println("rs = pstmt.executeQuery();");    out.println("if (rs.next()) {");    out.println("  " + discriminatorVar + " = rs.getString(1);"); // XXX:    out.println("}");  }  void generateCallbacks(JavaWriter out,                         String object,                         ArrayList<Method> callbacks)    throws IOException  {    if (callbacks.size() > 0) {      out.println();      for (Method method : callbacks) {        out.println(object + "." + method.getName() + "();");      }    }  }  protected void generateLogFine(JavaWriter out, String msg)    throws IOException  {    out.println("if (__caucho_log.isLoggable(java.util.logging.Level.FINE))");    out.print("  __caucho_log.fine(");    out.print("getClass().getName() + \"[\" + __caucho_getPrimaryKey() + \"]\"");    out.print(" + \"");    out.printJavaString(msg);    out.println("\");");  }  protected void generateLogFinest(JavaWriter out, String msg)    throws IOException  {    out.println("if (__caucho_log.isLoggable(java.util.logging.Level.FINEST))");    out.print("  __caucho_log.finest(");    out.print("getClass().getName() + \"[\" + __caucho_getPrimaryKey() + \"]\"");    out.print(" + \"");    out.printJavaString(msg);    out.println("\");");  }}

⌨️ 快捷键说明

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