importorg.mybatis.generator.api.CommentGenerator;importorg.mybatis.generator.api.IntrospectedColumn;importorg.mybatis.generator.api.IntrospectedTable;import org.mybatis.generator.api.dom.java.*;importorg.mybatis.generator.api.dom.xml.XmlElement;importorg.mybatis.generator.config.MergeConstants;importorg.mybatis.generator.config.PropertyRegistry;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Properties;import staticorg.mybatis.generator.internal.util.StringUtility.isTrue;/*** TODO
*
* @Author mx
* @Date: 2019-04-09 11:32*/
public class MybatisCommentGenerator implementsCommentGenerator {privateProperties properties;privateProperties systemPro;private booleansuppressDate;private booleansuppressAllComments;privateString currentDateStr;publicMybatisCommentGenerator() {super();
properties= newProperties();
systemPro=System.getProperties();
suppressDate= false;
suppressAllComments= false;
currentDateStr= (new SimpleDateFormat("yyyy-MM-dd")).format(newDate());
}/*** Adds properties for this instance from any properties configured in the
* CommentGenerator configuration.
*
* This method will be called before any of the other methods.
*
*@paramproperties All properties from the configuration*/
public voidaddConfigurationProperties(Properties properties) {this.properties.putAll(properties);
suppressDate=isTrue(properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_DATE));
suppressAllComments=isTrue(properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_ALL_COMMENTS));
}/***@paramfield the field
*@paramintrospectedTable the introspected table
*@paramintrospectedColumn*/
public voidaddFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {if(suppressAllComments) {return;
}
StringBuilder sb= newStringBuilder();
field.addJavaDocLine("/**");
sb.append(" * ");
sb.append(introspectedColumn.getRemarks());
field.addJavaDocLine(sb.toString());
addJavadocTag(field,false);
field.addJavaDocLine(" */");
}/*** Adds the field comment.
*
*@paramfield the field
*@paramintrospectedTable*/
public voidaddFieldComment(Field field, IntrospectedTable introspectedTable) {if(suppressAllComments) {return;
}
StringBuilder sb= newStringBuilder();
field.addJavaDocLine("/**");
sb.append(" * ");
sb.append(introspectedTable.getFullyQualifiedTable());
field.addJavaDocLine(sb.toString());
field.addJavaDocLine(" */");
}public voidaddModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {if(suppressAllComments) {return;
}
StringBuilder sb= newStringBuilder();
topLevelClass.addJavaDocLine("/**");
sb.append(" * ");
sb.append(introspectedTable.getRemarks());
sb.append(" ");
sb.append(introspectedTable.getTableType());
sb.append(" ");
sb.append(getDateString());
topLevelClass.addJavaDocLine(sb.toString());
topLevelClass.addJavaDocLine(" */");
}/*** Adds the inner class comment.
*
*@paraminnerClass the inner class
*@paramintrospectedTable*/
public voidaddClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {if(suppressAllComments) {return;
}
StringBuilder sb= newStringBuilder();
innerClass.addJavaDocLine("/**");
sb.append(" * ");
sb.append(introspectedTable.getFullyQualifiedTable());
sb.append(" ");
sb.append(getDateString());
innerClass.addJavaDocLine(sb.toString());
innerClass.addJavaDocLine(" */");
}/*** Adds the inner class comment.
*
*@paraminnerClass the inner class
*@paramintrospectedTable the introspected table
*@parammarkAsDoNotDelete*/
public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, booleanmarkAsDoNotDelete) {if(suppressAllComments) {return;
}
StringBuilder sb= newStringBuilder();
innerClass.addJavaDocLine("/**");
sb.append(" * ");
sb.append(introspectedTable.getFullyQualifiedTable());
innerClass.addJavaDocLine(sb.toString());
sb.setLength(0);
sb.append(" * @author ");
sb.append(systemPro.getProperty("user.name"));
sb.append(" ");
sb.append(currentDateStr);
addJavadocTag(innerClass, markAsDoNotDelete);
innerClass.addJavaDocLine(" */");
}/*** Adds the enum comment.
*
*@paraminnerEnum the inner enum
*@paramintrospectedTable*/
public voidaddEnumComment(InnerEnum innerEnum, IntrospectedTable introspectedTable) {if(suppressAllComments) {return;
}
StringBuilder sb= newStringBuilder();
innerEnum.addJavaDocLine("/**");
addJavadocTag(innerEnum,false);
sb.append(" * ");
sb.append(introspectedTable.getFullyQualifiedTable());
innerEnum.addJavaDocLine(sb.toString());
innerEnum.addJavaDocLine(" */");
}/*** Adds the getter comment.
*
*@parammethod the method
*@paramintrospectedTable the introspected table
*@paramintrospectedColumn*/
public voidaddGetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {if(suppressAllComments) {return;
}
method.addJavaDocLine("/**");
StringBuilder sb= newStringBuilder();
sb.append(" * ");
sb.append(introspectedColumn.getRemarks());
method.addJavaDocLine(sb.toString());
sb.setLength(0);
sb.append(" * @return ");
sb.append(introspectedColumn.getActualColumnName());
sb.append(" ");
sb.append(introspectedColumn.getRemarks());
method.addJavaDocLine(sb.toString());
addJavadocTag(method,false);
method.addJavaDocLine(" */");
}/*** Adds the setter comment.
*
*@parammethod the method
*@paramintrospectedTable the introspected table
*@paramintrospectedColumn*/
public voidaddSetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {if(suppressAllComments) {return;
}
method.addJavaDocLine("/**");
StringBuilder sb= newStringBuilder();
sb.append(" * ");
sb.append(introspectedColumn.getRemarks());
method.addJavaDocLine(sb.toString());
Parameter parm= method.getParameters().get(0);
sb.setLength(0);
sb.append(" * @param ");
sb.append(parm.getName());
sb.append(" ");
sb.append(introspectedColumn.getRemarks());
method.addJavaDocLine(sb.toString());
addJavadocTag(method,false);
method.addJavaDocLine(" */");
}/*** Adds the general method comment.
*
*@parammethod the method
*@paramintrospectedTable*/
public voidaddGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {if(suppressAllComments) {return;
}
method.addJavaDocLine("/**");//addJavadocTag(method, false);
StringBuilder sb = newStringBuilder();
sb.append(" * ");
sb.append(MergeConstants.NEW_ELEMENT_TAG);
String s=method.getName();
sb.append(' ');
sb.append(s);
method.addJavaDocLine(sb.toString());
method.addJavaDocLine(" */");
}public voidaddJavaFileComment(CompilationUnit compilationUnit) {
}public voidaddComment(XmlElement xmlElement) {
}public voidaddRootComment(XmlElement rootElement) {
}protected void addJavadocTag(JavaElement javaElement, booleanmarkAsDoNotDelete) {
javaElement.addJavaDocLine(" *");
StringBuilder sb= newStringBuilder();
sb.append(" * ");
sb.append(MergeConstants.NEW_ELEMENT_TAG);if(markAsDoNotDelete) {
sb.append(" do_not_delete_during_merge");
}
String s=getDateString();if (s != null) {
sb.append(' ');
sb.append(s);
}
javaElement.addJavaDocLine(sb.toString());
}protectedString getDateString() {
String result= null;if (!suppressDate) {
result=currentDateStr;
}returnresult;
}
}