日志优化

This commit is contained in:
iqudoo
2026-04-12 16:24:12 +08:00
parent 4bddff2de9
commit 6ecdf66eeb
4 changed files with 149 additions and 40 deletions

View File

@@ -56,12 +56,14 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
@SuppressWarnings("DuplicatedCode") @SuppressWarnings("DuplicatedCode")
@Override @Override
public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
PrimitiveTypeWrapper integerWrapper = FullyQualifiedJavaType.getIntInstance().getPrimitiveTypeWrapper(); FullyQualifiedJavaType integerType = new FullyQualifiedJavaType("java.lang.Integer");
FullyQualifiedJavaType booleanType = new FullyQualifiedJavaType("java.lang.Boolean");
FullyQualifiedJavaType stringType = new FullyQualifiedJavaType("java.lang.String");
// 添加 startPageNum、maxPageSize、ignorePageSize 字段 // 添加 startPageNum、maxPageSize、ignorePageSize 字段
Field maxPageSizeField = ElementTools.generateField( Field maxPageSizeField = ElementTools.generateField(
"maxPageSize", "maxPageSize",
JavaVisibility.PROTECTED, JavaVisibility.PROTECTED,
integerWrapper, integerType,
this.maxPageSize + "" this.maxPageSize + ""
); );
topLevelClass.addField(maxPageSizeField); topLevelClass.addField(maxPageSizeField);
@@ -69,7 +71,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
Field ignorePageSizeField = ElementTools.generateField( Field ignorePageSizeField = ElementTools.generateField(
"ignorePageSize", "ignorePageSize",
JavaVisibility.PROTECTED, JavaVisibility.PROTECTED,
integerWrapper, integerType,
this.ignorePageSize + "" this.ignorePageSize + ""
); );
topLevelClass.addField(ignorePageSizeField); topLevelClass.addField(ignorePageSizeField);
@@ -77,7 +79,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
Field startPageNumField = ElementTools.generateField( Field startPageNumField = ElementTools.generateField(
"startPageNum", "startPageNum",
JavaVisibility.PROTECTED, JavaVisibility.PROTECTED,
integerWrapper, integerType,
startPageNum + "" startPageNum + ""
); );
topLevelClass.addField(startPageNumField); topLevelClass.addField(startPageNumField);
@@ -86,7 +88,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
Field offsetField = ElementTools.generateField( Field offsetField = ElementTools.generateField(
"offset", "offset",
JavaVisibility.PROTECTED, JavaVisibility.PROTECTED,
integerWrapper, integerType,
"null" "null"
); );
topLevelClass.addField(offsetField); topLevelClass.addField(offsetField);
@@ -94,7 +96,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
Field rowsField = ElementTools.generateField( Field rowsField = ElementTools.generateField(
"rows", "rows",
JavaVisibility.PROTECTED, JavaVisibility.PROTECTED,
integerWrapper, integerType,
"null" "null"
); );
topLevelClass.addField(rowsField); topLevelClass.addField(rowsField);
@@ -105,7 +107,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
Field withBLOBsField = ElementTools.generateField( Field withBLOBsField = ElementTools.generateField(
"withBLOBs", "withBLOBs",
JavaVisibility.PROTECTED, JavaVisibility.PROTECTED,
new FullyQualifiedJavaType("java.lang.Boolean"), booleanType,
"true" "true"
); );
topLevelClass.addField(withBLOBsField); topLevelClass.addField(withBLOBsField);
@@ -142,7 +144,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
"limit", "limit",
JavaVisibility.PUBLIC, JavaVisibility.PUBLIC,
topLevelClass.getType(), topLevelClass.getType(),
new Parameter(integerWrapper, "rows") new Parameter(integerType, "rows")
); );
setLimitByRows = ElementTools.generateMethodBody( setLimitByRows = ElementTools.generateMethodBody(
setLimitByRows, setLimitByRows,
@@ -156,8 +158,8 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
"limit", "limit",
JavaVisibility.PUBLIC, JavaVisibility.PUBLIC,
topLevelClass.getType(), topLevelClass.getType(),
new Parameter(integerWrapper, "offset"), new Parameter(integerType, "offset"),
new Parameter(integerWrapper, "rows") new Parameter(integerType, "rows")
); );
setLimitByOffsetRows = ElementTools.generateMethodBody( setLimitByOffsetRows = ElementTools.generateMethodBody(
setLimitByOffsetRows, setLimitByOffsetRows,
@@ -171,8 +173,8 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
"usePage", "usePage",
JavaVisibility.PUBLIC, JavaVisibility.PUBLIC,
topLevelClass.getType(), topLevelClass.getType(),
new Parameter(integerWrapper, "pageNum"), new Parameter(integerType, "pageNum"),
new Parameter(integerWrapper, "pageSize") new Parameter(integerType, "pageSize")
); );
usePage = ElementTools.generateMethodBody( usePage = ElementTools.generateMethodBody(
usePage, usePage,
@@ -194,7 +196,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
Method getPageNum = ElementTools.generateMethod( Method getPageNum = ElementTools.generateMethod(
"getPageNum", "getPageNum",
JavaVisibility.PUBLIC, JavaVisibility.PUBLIC,
integerWrapper integerType
); );
getPageNum = ElementTools.generateMethodBody( getPageNum = ElementTools.generateMethodBody(
getPageNum, getPageNum,
@@ -208,7 +210,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
Method getPageSize = ElementTools.generateMethod( Method getPageSize = ElementTools.generateMethod(
"getPageSize", "getPageSize",
JavaVisibility.PUBLIC, JavaVisibility.PUBLIC,
integerWrapper integerType
); );
getPageSize = ElementTools.generateMethodBody( getPageSize = ElementTools.generateMethodBody(
getPageSize, getPageSize,
@@ -222,7 +224,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
Method getRows = ElementTools.generateMethod( Method getRows = ElementTools.generateMethod(
"getRows", "getRows",
JavaVisibility.PUBLIC, JavaVisibility.PUBLIC,
integerWrapper integerType
); );
getRows = ElementTools.generateMethodBody( getRows = ElementTools.generateMethodBody(
getRows, getRows,
@@ -233,7 +235,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
Method getOffset = ElementTools.generateMethod( Method getOffset = ElementTools.generateMethod(
"getOffset", "getOffset",
JavaVisibility.PUBLIC, JavaVisibility.PUBLIC,
integerWrapper integerType
); );
getOffset = ElementTools.generateMethodBody( getOffset = ElementTools.generateMethodBody(
getOffset, getOffset,
@@ -241,14 +243,65 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter {
); );
FormatTools.addMethodWithBestPosition(topLevelClass, getOffset); FormatTools.addMethodWithBestPosition(topLevelClass, getOffset);
Method getWhereString = ElementTools.generateMethod(
"getWhereString",
JavaVisibility.PUBLIC,
stringType
);
getWhereString.addAnnotation("@SuppressWarnings(\"DuplicatedCode\")");
getWhereString = ElementTools.generateMethodBody(
getWhereString,
"if (getOredCriteria() != null) {",
"List<String> whereGroup = new ArrayList<>();",
"for (Criteria criteria : getOredCriteria()) {",
"List<String> criterionList = new ArrayList<>();",
"for (Criterion criterion : criteria.getAllCriteria()) {",
"if (criterion.isNoValue()) {",
"criterionList.add(criterion.getCondition());",
"} else if (criterion.isBetweenValue()) {",
"criterionList.add(criterion.getCondition() + \" \" + criterion.getValue() + \",\" + criterion.getSecondValue());",
"} else {",
"criterionList.add(criterion.getCondition() + \" \" + criterion.getValue());",
"}",
"}",
"whereGroup.add(String.join(\" and \", criterionList));",
"}",
"if (whereGroup.size() > 1) {",
"List<String> mapWhereGroup = new ArrayList<>();",
"for (String where : whereGroup) {",
"mapWhereGroup.add(\"(\" + where + \")\");",
"}",
"whereGroup = mapWhereGroup;",
"}",
"return String.join(\" or \", whereGroup);",
"}",
"return null;"
);
FormatTools.addMethodWithBestPosition(topLevelClass, getWhereString);
// !!! clear 方法增加 offset 和 rows的清理 // !!! clear 方法增加 offset 和 rows的清理
boolean hasClear = false;
List<Method> methodList = topLevelClass.getMethods(); List<Method> methodList = topLevelClass.getMethods();
for (Method method : methodList) { for (Method method : methodList) {
if (method.getName().equals("clear")) { if (method.getName().equals("clear")) {
method.addBodyLine("rows = null;"); method.addBodyLine("rows = null;");
method.addBodyLine("offset = null;"); method.addBodyLine("offset = null;");
hasClear = true;
} }
} }
if (!hasClear) {
Method clear = ElementTools.generateMethod(
"clear",
JavaVisibility.PUBLIC,
new FullyQualifiedJavaType("void")
);
clear = ElementTools.generateMethodBody(
clear,
"rows = null;",
"offset = null;"
);
FormatTools.addMethodWithBestPosition(topLevelClass, clear);
}
return true; return true;
} }

View File

@@ -832,9 +832,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter {
method.addBodyLine("}"); method.addBodyLine("}");
method.addBodyLine("long findPrimaryKeyTime = new Date().getTime() - startTime;"); method.addBodyLine("long findPrimaryKeyTime = new Date().getTime() - startTime;");
method.addBodyLine("if (findPrimaryKeyTime > " + slowQueryLoggerTime + ") {"); method.addBodyLine("if (findPrimaryKeyTime > " + slowQueryLoggerTime + ") {");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " valid list primary key use long time: \" + findPrimaryKeyTime + \"ms\" +"); method.addBodyLine("String exampleString = \"\";");
method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); method.addBodyLine("if (example.getWhereString() != null) {");
method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();");
method.addBodyLine("}");
method.addBodyLine("if (example.getOrderByClause() != null) {");
method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();");
method.addBodyLine("}");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " valid list primary key use long time\" +");
method.addBodyLine(" \"\\n\\t|-> time\" + findPrimaryKeyTime + \"ms\" +");
method.addBodyLine(" exampleString +");
method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(" \"\\n\\t|-----------------------------------\"");
method.addBodyLine(");"); method.addBodyLine(");");
method.addBodyLine("}"); method.addBodyLine("}");
@@ -857,9 +864,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter {
} }
method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("long useTime = new Date().getTime() - startTime;");
method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {"); method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " valid list use long time: \" + useTime + \"ms\" +"); method.addBodyLine("String exampleString = \"\";");
method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); method.addBodyLine("if (example.getWhereString() != null) {");
method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();");
method.addBodyLine("}");
method.addBodyLine("if (example.getOrderByClause() != null) {");
method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();");
method.addBodyLine("}");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " valid list use long time\" +");
method.addBodyLine(" \"\\n\\t|-> time\" + useTime + \"ms\" +");
method.addBodyLine(" exampleString +");
method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(" \"\\n\\t|-----------------------------------\"");
method.addBodyLine(");"); method.addBodyLine(");");
method.addBodyLine("}"); method.addBodyLine("}");
@@ -889,9 +903,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter {
method.addBodyLine("}"); method.addBodyLine("}");
method.addBodyLine("long findPrimaryKeyTime = new Date().getTime() - startTime;"); method.addBodyLine("long findPrimaryKeyTime = new Date().getTime() - startTime;");
method.addBodyLine("if (findPrimaryKeyTime > " + slowQueryLoggerTime + ") {"); method.addBodyLine("if (findPrimaryKeyTime > " + slowQueryLoggerTime + ") {");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " trash list primary key use long time: \" + findPrimaryKeyTime + \"ms\" +"); method.addBodyLine("String exampleString = \"\";");
method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); method.addBodyLine("if (example.getWhereString() != null) {");
method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();");
method.addBodyLine("}");
method.addBodyLine("if (example.getOrderByClause() != null) {");
method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();");
method.addBodyLine("}");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " trash list primary key use long time\" +");
method.addBodyLine(" \"\\n\\t|-> time\" + findPrimaryKeyTime + \"ms\" +");
method.addBodyLine(" exampleString +");
method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(" \"\\n\\t|-----------------------------------\"");
method.addBodyLine(");"); method.addBodyLine(");");
method.addBodyLine("}"); method.addBodyLine("}");
@@ -914,9 +935,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter {
} }
method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("long useTime = new Date().getTime() - startTime;");
method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {"); method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " trash list use long time: \" + useTime + \"ms\" +"); method.addBodyLine("String exampleString = \"\";");
method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); method.addBodyLine("if (example.getWhereString() != null) {");
method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();");
method.addBodyLine("}");
method.addBodyLine("if (example.getOrderByClause() != null) {");
method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();");
method.addBodyLine("}");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " trash list use long time\" +");
method.addBodyLine(" \"\\n\\t|-> time\" + useTime + \"ms\" +");
method.addBodyLine(" exampleString +");
method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(" \"\\n\\t|-----------------------------------\"");
method.addBodyLine(");"); method.addBodyLine(");");
method.addBodyLine("}"); method.addBodyLine("}");
@@ -939,9 +967,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter {
method.addBodyLine("long count = " + mapperFieldName + ".countByExample(example);"); method.addBodyLine("long count = " + mapperFieldName + ".countByExample(example);");
method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("long useTime = new Date().getTime() - startTime;");
method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {"); method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " valid count use long time: \" + useTime + \"ms\" +"); method.addBodyLine("String exampleString = \"\";");
method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); method.addBodyLine("if (example.getWhereString() != null) {");
method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();");
method.addBodyLine("}");
method.addBodyLine("if (example.getOrderByClause() != null) {");
method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();");
method.addBodyLine("}");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " valid count use long time\" +");
method.addBodyLine(" \"\\n\\t|-> time\" + useTime + \"ms\" +");
method.addBodyLine(" exampleString +");
method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(" \"\\n\\t|-----------------------------------\"");
method.addBodyLine(");"); method.addBodyLine(");");
method.addBodyLine("}"); method.addBodyLine("}");
@@ -982,9 +1017,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter {
method.addBodyLine("long count = " + mapperFieldName + ".countByExample(example);"); method.addBodyLine("long count = " + mapperFieldName + ".countByExample(example);");
method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("long useTime = new Date().getTime() - startTime;");
method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {"); method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " trash count use long time: \" + useTime + \"ms\" +"); method.addBodyLine("String exampleString = \"\";");
method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); method.addBodyLine("if (example.getWhereString() != null) {");
method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();");
method.addBodyLine("}");
method.addBodyLine("if (example.getOrderByClause() != null) {");
method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();");
method.addBodyLine("}");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " trash count use long time\" +");
method.addBodyLine(" \"\\n\\t|-> time\" + useTime + \"ms\" +");
method.addBodyLine(" exampleString +");
method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(" \"\\n\\t|-----------------------------------\"");
method.addBodyLine(");"); method.addBodyLine(");");
method.addBodyLine("}"); method.addBodyLine("}");

View File

@@ -313,9 +313,16 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter {
} }
method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("long useTime = new Date().getTime() - startTime;");
method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {"); method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " view list use long time: \" + useTime + \"ms\" +"); method.addBodyLine("String exampleString = \"\";");
method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); method.addBodyLine("if (example.getWhereString() != null) {");
method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();");
method.addBodyLine("}");
method.addBodyLine("if (example.getOrderByClause() != null) {");
method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();");
method.addBodyLine("}");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " view list use long time\" +");
method.addBodyLine(" \"\\n\\t|-> time\" + useTime + \"ms\" +");
method.addBodyLine(" exampleString +");
method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(" \"\\n\\t|-----------------------------------\"");
method.addBodyLine(");"); method.addBodyLine(");");
method.addBodyLine("}"); method.addBodyLine("}");
@@ -340,9 +347,16 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter {
method.addBodyLine("long count = " + mapperFieldName + ".countByExample(example);"); method.addBodyLine("long count = " + mapperFieldName + ".countByExample(example);");
method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("long useTime = new Date().getTime() - startTime;");
method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {"); method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " view count use long time: \" + useTime + \"ms\" +"); method.addBodyLine("String exampleString = \"\";");
method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); method.addBodyLine("if (example.getWhereString() != null) {");
method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();");
method.addBodyLine("}");
method.addBodyLine("if (example.getOrderByClause() != null) {");
method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();");
method.addBodyLine("}");
method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " view count use long time\" +");
method.addBodyLine(" \"\\n\\t|-> time\" + useTime + \"ms\" +");
method.addBodyLine(" exampleString +");
method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(" \"\\n\\t|-----------------------------------\"");
method.addBodyLine(");"); method.addBodyLine(");");
method.addBodyLine("}"); method.addBodyLine("}");