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 + -
显示快捷键?