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