// Path: QuickProject-Generator/src/main/java/chanedi/generator/model/Bean.java
// public class Bean {
// 
//     @Getter@Setter
//     private String name;
//     @Getter@Setter
//     private String capitalizeName;
//     @Getter
//     private String tableName;
//     @Getter@Setter
//     private String comment;
//     private Map<String, Property> propertyColumnNameMap = new HashMap<String, Property>(); // 乱序
//     private List<Property> propertyList = new ArrayList<Property>(); // 按加入的顺序
// 
//     public void addProperty(Property property) {
//         propertyColumnNameMap.put(property.getColumnName(), property);
//         propertyList.add(property);
//     }
// 
//     public Property getPropertyByColumnName(String columnName) {
//         return propertyColumnNameMap.get(columnName);
//     }
// 
//     public Collection<Property> getProperties() {
//         return propertyList;
//     }
// 
//     public void setTableName(String tableName) {
//         this.tableName = tableName;
//         setName(StringUtils.uncapitalizeCamelBySeparator(tableName, "_"));
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//         this.capitalizeName = StringUtils.capitalize(name);
//     }
// 
//     public void setCapitalizeName(String capitalizeName) {
//         this.capitalizeName = capitalizeName;
//         this.name = StringUtils.uncapitalize(capitalizeName);;
//     }
// 
// }
// 
// Path: QuickProject-Generator/src/main/java/chanedi/generator/model/Property.java
// public class Property {
// 
//     @Getter
//     private String name;
//     @Getter
//     private String capitalizeName;
//     @Getter
//     private String columnName;
//     @Getter@Setter
//     private String comment;
//     @Getter@Setter
//     private PropertyType type;
// 
//     public void setColumnName(String columnName) {
//         this.columnName = columnName;
//         this.name = StringUtils.uncapitalizeCamelBySeparator(columnName, "_");
//         this.capitalizeName = StringUtils.capitalize(name);
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//         this.columnName = name.replaceAll("([A-Z])", "_$0").toUpperCase();
//         this.capitalizeName = StringUtils.capitalize(name);
//     }
// 
// }
// 
// Path: QuickProject-Generator/src/main/java/chanedi/generator/model/PropertyType.java
// public class PropertyType extends HashMap {
// 
//     public PropertyType(String javaType) {
//         super();
//         addType("java", javaType);
//     }
// 
//     public void addType(String typeKey, String type) {
//         put(typeKey, type);
//     }
// 
// }
// 
// Path: QuickProject-Util/src/main/java/chanedi/util/StringUtils.java
// public class StringUtils extends org.apache.commons.lang3.StringUtils {
// 
//     public static String capitalizeCamelBySeparator(String str, String separatorChars) {
//         if (str == null || str.length() == 0) {
//             return str;
//         }
//         String[] splits = str.toLowerCase().split(separatorChars);
//         StringBuffer result = new StringBuffer();
//         for (String split : splits) {
//             result.append(capitalize(split));
//         }
//         return result.toString();
//     }
// 
//     public static String uncapitalizeCamelBySeparator(String str, String separatorChars) {
//         return uncapitalize(capitalizeCamelBySeparator(str, separatorChars));
//     }
// 
// }


import chanedi.generator.model.Bean;
import chanedi.generator.model.Property;
import chanedi.generator.model.PropertyType;
import chanedi.util.StringUtils;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.springframework.core.io.ResourceLoader;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
package chanedi.generator;



/**
 * Created by jijingyu625 on 2016/4/18.
 */
public class CodeGenerator {

    private static ResourceLoader resourceLoader = new PathMatchingResourcePatternResolver();

    public static void generateSetter(File file, String className) throws IOException {
// Path: QuickProject-Generator/src/main/java/chanedi/generator/model/Bean.java
// public class Bean {
// 
//     @Getter@Setter
//     private String name;
//     @Getter@Setter
//     private String capitalizeName;
//     @Getter
//     private String tableName;
//     @Getter@Setter
//     private String comment;
//     private Map<String, Property> propertyColumnNameMap = new HashMap<String, Property>(); // 乱序
//     private List<Property> propertyList = new ArrayList<Property>(); // 按加入的顺序
// 
//     public void addProperty(Property property) {
//         propertyColumnNameMap.put(property.getColumnName(), property);
//         propertyList.add(property);
//     }
// 
//     public Property getPropertyByColumnName(String columnName) {
//         return propertyColumnNameMap.get(columnName);
//     }
// 
//     public Collection<Property> getProperties() {
//         return propertyList;
//     }
// 
//     public void setTableName(String tableName) {
//         this.tableName = tableName;
//         setName(StringUtils.uncapitalizeCamelBySeparator(tableName, "_"));
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//         this.capitalizeName = StringUtils.capitalize(name);
//     }
// 
//     public void setCapitalizeName(String capitalizeName) {
//         this.capitalizeName = capitalizeName;
//         this.name = StringUtils.uncapitalize(capitalizeName);;
//     }
// 
// }
// 
// Path: QuickProject-Generator/src/main/java/chanedi/generator/model/Property.java
// public class Property {
// 
//     @Getter
//     private String name;
//     @Getter
//     private String capitalizeName;
//     @Getter
//     private String columnName;
//     @Getter@Setter
//     private String comment;
//     @Getter@Setter
//     private PropertyType type;
// 
//     public void setColumnName(String columnName) {
//         this.columnName = columnName;
//         this.name = StringUtils.uncapitalizeCamelBySeparator(columnName, "_");
//         this.capitalizeName = StringUtils.capitalize(name);
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//         this.columnName = name.replaceAll("([A-Z])", "_$0").toUpperCase();
//         this.capitalizeName = StringUtils.capitalize(name);
//     }
// 
// }
// 
// Path: QuickProject-Generator/src/main/java/chanedi/generator/model/PropertyType.java
// public class PropertyType extends HashMap {
// 
//     public PropertyType(String javaType) {
//         super();
//         addType("java", javaType);
//     }
// 
//     public void addType(String typeKey, String type) {
//         put(typeKey, type);
//     }
// 
// }
// 
// Path: QuickProject-Util/src/main/java/chanedi/util/StringUtils.java
// public class StringUtils extends org.apache.commons.lang3.StringUtils {
// 
//     public static String capitalizeCamelBySeparator(String str, String separatorChars) {
//         if (str == null || str.length() == 0) {
//             return str;
//         }
//         String[] splits = str.toLowerCase().split(separatorChars);
//         StringBuffer result = new StringBuffer();
//         for (String split : splits) {
//             result.append(capitalize(split));
//         }
//         return result.toString();
//     }
// 
//     public static String uncapitalizeCamelBySeparator(String str, String separatorChars) {
//         return uncapitalize(capitalizeCamelBySeparator(str, separatorChars));
//     }
// 
// }


// Path: QuickProject-Generator/src/main/java/chanedi/generator/CodeGenerator.java
import chanedi.generator.model.Bean;
import chanedi.generator.model.Property;
import chanedi.generator.model.PropertyType;
import chanedi.util.StringUtils;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.springframework.core.io.ResourceLoader;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

package chanedi.generator;



/**
 * Created by jijingyu625 on 2016/4/18.
 */
public class CodeGenerator {

    private static ResourceLoader resourceLoader = new PathMatchingResourcePatternResolver();

    public static void generateSetter(File file, String className) throws IOException {
        String variableName = StringUtils.uncapitalize(className);