compositeid.java
来自「RESIN 3.2 最新源码」· Java 代码 · 共 691 行 · 第 1/2 页
JAVA
691 行
*/ @Override public int generateLoadForeign(JavaWriter out, String rs, String indexVar, int index) throws IOException { return generateLoadForeign(out, rs, indexVar, index, getForeignTypeName().replace('.', '_')); } /** * Returns the foreign type. */ @Override public int generateLoadForeign(JavaWriter out, String rs, String indexVar, int index, String name) throws IOException { out.print("__caucho_load_key_" + getForeignMakeKeyName()); out.print("(aConn, " + rs + ", " + indexVar + " + " + index + ")"); ArrayList<IdField> keys = getKeys(); index += keys.size(); return index; } /** * Generates the select clause. */ @Override public String generateSelect(String id) { ArrayList<IdField> keys = getKeys(); CharBuffer cb = CharBuffer.allocate(); for (int i = 0; i < keys.size(); i++) { if (i != 0) cb.append(", "); cb.append(keys.get(i).generateSelect(id)); } return cb.close(); } /** * Generates the JPA QL select clause. */ @Override public String generateJavaSelect(String id) { ArrayList<IdField> keys = getKeys(); CharBuffer cb = CharBuffer.allocate(); for (int i = 0; i < keys.size(); i++) { if (i != 0) cb.append(", "); cb.append(keys.get(i).generateJavaSelect(id)); } return cb.close(); } /** * Generates the select clause. */ @Override public String generateLoadSelect(String id) { return null; } /** * Returns the key for the value */ @Override public String generateGet(String value) { CharBuffer cb = CharBuffer.allocate(); cb.append("__caucho_make_key_" + getForeignMakeKeyName()); cb.append("("); ArrayList<IdField> keys = getKeys(); for (int i = 0; i < keys.size(); i++) { if (i != 0) cb.append(", "); cb.append(keys.get(i).generateGet(value)); } cb.append(")"); return cb.close(); } /** * Generates loading cache */ @Override public void generateSet(JavaWriter out, String objThis, String value) throws IOException { out.println("if (" + value + " != null) {"); out.pushDepth(); AmberPersistenceUnit persistenceUnit = getOwnerType().getPersistenceUnit(); // ejb/06ie if (persistenceUnit.isJPA() && ! isEmbeddedId()) { // jpa/0u21 EmbeddableType embeddable = persistenceUnit.getEmbeddable(_tKeyClass.getName()); // jpa/0u21 ArrayList<IdField> keys = getKeys(); ArrayList<AmberField> keys = embeddable.getFields(); for (int i = 0; i < keys.size(); i++) { PropertyField key = (PropertyField) keys.get(i); String getter = "__caucho_get_field(" + i + ")"; String subValue = "((com.caucho.amber.entity.Embeddable) key)." + getter; out.println("Object field" + i + " = " + subValue + ";"); out.println("if (field" + i + " == null)"); out.println(" return;"); KeyPropertyField prop = null; AmberColumn column = key.getColumn(); // jpa/0j55 if (true || column == null) { ArrayList<IdField> fields = getKeys(); for (int j = 0; j < fields.size(); j++) { IdField id = fields.get(j); if (id.getName().equals(key.getName())) if (id instanceof KeyPropertyField) prop = (KeyPropertyField) id; } } if (prop != null) key = prop; AmberType columnType = key.getColumn().getType(); value = columnType.generateCastFromObject("field" + i); key.generateSet(out, objThis, value); } // jpa/0u21 // out.println("__caucho_compound_key = (" + getForeignTypeName() + ") " + value + ";"); /* for (int i = 0; i < keys.size(); i++) { IdField key = keys.get(i); key.generateStatementSet(out, key.generateGetKeyProperty(obj + "_key")); } */ } else { out.println(getForeignTypeName() + " " + value + "_key = (" + getForeignTypeName() + ") " + value + ";"); if (getEmbeddedIdField() == null) { // ejb/06ie ArrayList<IdField> keys = getKeys(); for (int i = 0; i < keys.size(); i++) { IdField key = keys.get(i); key.generateSet(out, objThis, key.generateGetKeyProperty(objThis + "_key")); } } else getEmbeddedIdField().generateSet(out, objThis, value + "_key"); } out.popDepth(); out.println("}"); } /** * Returns the key for the value */ public String generateGetProxyProperty(String value) { CharBuffer cb = CharBuffer.allocate(); cb.append("__caucho_make_key_" + getForeignMakeKeyName()); cb.append("("); ArrayList<IdField> keys = getKeys(); for (int i = 0; i < keys.size(); i++) { if (i != 0) cb.append(", "); cb.append(keys.get(i).generateGetProxyProperty(value)); } cb.append(")"); return cb.close(); } /** * Generates loading cache */ @Override public void generateLoadFromObject(JavaWriter out, String obj) throws IOException { ArrayList<IdField> keys = getKeys(); for (int i = 0; i < keys.size(); i++) { keys.get(i).generateLoadFromObject(out, obj); } } /** * Generates loading cache */ @Override public void generateUpdateFromObject(JavaWriter out, String obj) throws IOException { ArrayList<IdField> keys = getKeys(); for (int i = 0; i < keys.size(); i++) { keys.get(i).generateUpdateFromObject(out, obj); } } /** * Generates the where clause. */ public String generateWhere(String id) { ArrayList<IdField> keys = getKeys(); CharBuffer cb = CharBuffer.allocate(); for (int i = 0; i < keys.size(); i++) { if (i != 0) cb.append(" and "); cb.append(keys.get(i).generateWhere(id)); } return cb.close(); } /** * Generates the where clause. */ @Override public String generateCreateTableSQL(AmberPersistenceUnit manager) { return null; } /** * Generates the set clause. */ @Override public void generateSetKey(JavaWriter out, String pstmt, String obj, String index) throws IOException { generateSet(out, pstmt, obj, index); } /** * Generates code to convert to the type from the object. */ @Override public String generateCastFromObject(String value) { return value; } /** * Generates code for a match. */ @Override public void generateMatch(JavaWriter out, String key) throws IOException { out.println("return __caucho_getPrimaryKey().equals(" + key + ");"); } /** * Generates code to test the equals. */ @Override public String generateEquals(String leftBase, String value) { return leftBase + ".equals(" + value + ")"; } /** * Generates the set clause. */ @Override public void generateCheckCreateKey(JavaWriter out) throws IOException { } /** * Generates the set clause. */ /* public void generateSetGeneratedKeys(JavaWriter out, String pstmt) throws IOException { } */ /** * Generates code to convert to the object. */ @Override public String toObject(String value) { return value; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?