Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package com.github.oceanc.mybatis3.generator.plugin;
 
Created by chengyang
public class JacksonAnnotationPlugin extends PluginAdapter {
    @Override
    public boolean validate(List<Stringwarnings) {
        return true;
    }
    @Override
    public boolean modelFieldGenerated(Field fieldTopLevelClass topLevelClassIntrospectedColumn introspectedColumnIntrospectedTable introspectedTableModelClassType modelClassType) {
        String prop = annotateProperty(introspectedColumnintrospectedTable);
        if (prop != null) {
            String ann = "@JsonProperty(\"" + prop + "\")";
            field.addAnnotation(ann);
            topLevelClass.addImportedType(new FullyQualifiedJavaType("com.fasterxml.jackson.annotation.JsonProperty"));
            .debug("{} add field annotation {} to {} implement by Jackson2."topLevelClass.getType().getShortName(), annfield.getName());
        }
        String format = annotateFormat(introspectedColumnintrospectedTable);
        if (format != null) {
            String ann ="@JsonFormat(pattern = \"" + format + "\")";
            field.addAnnotation(ann);
            topLevelClass.addImportedType(new FullyQualifiedJavaType("com.fasterxml.jackson.annotation.JsonFormat"));
            .debug("{} add field annotation {} to {} implement by Jackson2."topLevelClass.getType().getShortName(), annfield.getName());
        }
        annotateIgnore(fieldtopLevelClassintrospectedColumnintrospectedTable);
        return true;
    }
    private String annotateProperty(IntrospectedColumn introspectedColumnIntrospectedTable introspectedTable) {
        String cls = introspectedTable.getTableConfigurationProperty();
        if (cls != null && !"".equals(cls)) {
            String[] columns = cls.split();
            for (int i = 0; i < columns.lengthi++) {
                if (columns[i].trim().equals(introspectedColumn.getActualColumnName())) {
                    String pps = introspectedTable.getTableConfigurationProperty();
                    return pps.split()[i].trim();
                }
            }
        }
        return null;
    }
    private String annotateFormat(IntrospectedColumn introspectedColumnIntrospectedTable introspectedTable) {
        String fmts = introspectedTable.getTableConfigurationProperty();
        if (fmts != null && !"".equals(fmts)) {
            String[] formats = fmts.split();
            String anno = formats[1];
            String[] columns = formats[0].split();
            for (String column : columns) {
                if (column.equals(introspectedColumn.getActualColumnName())) {
                    return anno;
                }
            }
        }
        return null;
    }
    private void annotateIgnore(Field fieldTopLevelClass topLevelClassIntrospectedColumn introspectedColumnIntrospectedTable introspectedTable) {
        String cls = introspectedTable.getTableConfigurationProperty();
        if (cls != null && !"".equals(cls)) {
            String[] columns = cls.split();
            for (String column : columns) {
                if (column.trim().equals(introspectedColumn.getActualColumnName())) {
                    field.addAnnotation("@JsonIgnore");
                    topLevelClass.addImportedType(new FullyQualifiedJavaType("com.fasterxml.jackson.annotation.JsonIgnore"));
                    .debug("{} add field annotation @JsonIgnore to {} implement by Jackson2."topLevelClass.getType().getShortName(), field.getName());
                }
            }
        }
    }
    private Logger log = LoggerFactory.getLogger(JacksonAnnotationPlugin.class);
    private static final String DELIMITER = ",";
    private static final String DELIMITER_FORMAT = "@";
    private static final String JACKSON_COLUMNS = "jacksonColumns";
    private static final String JACKSON_PROPERTIES = "jacksonProperties";
    private static final String JACKSON_FORMATS = "jacksonFormats";
    private static final String JACKSON_IGNORES = "jacksonIgnores";
New to GrepCode? Check out our FAQ X