// Path: src/main/java/com/leansoft/mxjc/model/CGModel.java
// public class CGModel {
// 	
// 	private final List<ClassInfo> classes = new ArrayList<ClassInfo>();
// 	
// 	private final List<EnumInfo> enums = new ArrayList<EnumInfo>();
// 
//     /**
//      *  Class model for codegen
//      * @return List<ClassInfo>
//      */
// 	public List<ClassInfo> getClasses() {
// 		return classes;
// 	}
// 	
//     /**
//      *  Enum model for codegen
//      * @return List<EnumInfo>
//      */
// 	public List<EnumInfo> getEnums() {
// 		return enums;
// 	}
// 	
// }
// 
// Path: src/main/java/com/leansoft/mxjc/model/EnumConstantInfo.java
// public class EnumConstantInfo implements Serializable {
// 	
// 	private static final long serialVersionUID = -8191948715005132615L;
// 	
// 	// simple name of this enum constant
// 	private String name;
// 	// doc comment of this enum constant
// 	private String docComment;
// 	
// 	// simple value of this enum constant
// 	private String value;
// 	
// 	/**
// 	 * value of this enum constant
// 	 * @return, value of this enum constant
// 	 */
// 	public String getValue() {
// 		return value;
// 	}
// 	
// 	/**
// 	 * set value of this enum constant
// 	 * @param value
// 	 */
// 	public void setValue(String value) {
// 		this.value = value;
// 	}
// 	/**
// 	 * simple name of this enum constant
// 	 * @return, simple name of this enum constant
// 	 */
// 	public String getName() {
// 		return name;
// 	}
// 	/**
// 	 * set the simple name of this enum constant
// 	 * @param simple name
// 	 */
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 	/**
// 	 * doc comment of this enum constant
// 	 * @return doc comment
// 	 */
// 	public String getDocComment() {
// 		return docComment;
// 	}
// 	/**
// 	 * set doc comment of this enum constant
// 	 * @param docComment
// 	 */
// 	public void setDocComment(String docComment) {
// 		this.docComment = docComment;
// 	}
// 	
// }
// 
// Path: src/main/java/com/leansoft/mxjc/model/EnumInfo.java
// public class EnumInfo implements Serializable {
// 	
// 	private static final long serialVersionUID = -683805101371156468L;
// 	
// 	// package name of this enum type
// 	private String pkgName;
// 	// simple name of this enum type
// 	private String name;
// 	// full name of this enum type
// 	private String fullName;
// 	// doc comment of this enum type
// 	private String docComment;
// 	// a list of enum constant this enum contains
// 	private final List<EnumConstantInfo> enumConstants = new ArrayList<EnumConstantInfo>();
// 	
// 	/**
// 	 * the package name of this enum type
// 	 * @return package name
// 	 */
// 	public String getPackageName() {
// 		return pkgName;
// 	}
// 	/**
// 	 * set the package name of this enum type
// 	 * @param pkgName
// 	 */
// 	public void setPackageName(String pkgName) {
// 		this.pkgName = pkgName;
// 	}
// 	/**
// 	 * get the simple name of this enum type
// 	 * @return the simple name of this enum
// 	 */
// 	public String getName() {
// 		return name;
// 	}
// 	/**
// 	 * set the simple name of this enum type
// 	 * @param simple name
// 	 */
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 	/**
// 	 * the enum constants this enum contains
// 	 * @return a list of enum constants
// 	 */
// 	public List<EnumConstantInfo> getEnumConstants() {
// 		return enumConstants;
// 	}
// 	/**
// 	 * the doc comment of this enum type
// 	 * @return doc comment
// 	 */
// 	public String getDocComment() {
// 		return docComment;
// 	}
// 	/**
// 	 * set the doc comment of this enum type
// 	 * @param docComment
// 	 */
// 	public void setDocComment(String docComment) {
// 		this.docComment = docComment;
// 	}
// 	
// 	/**
// 	 * Get full name of this enum
// 	 * 
// 	 * @return full name
// 	 */
// 	public String getFullName() {
// 		return fullName;
// 	}
// 	
// 	/**
// 	 * set full name of this enum
// 	 * 
// 	 * @param fullName
// 	 */
// 	public void setFullName(String fullName) {
// 		this.fullName = fullName;
// 	}	
// }
// 
// Path: src/main/java/com/leansoft/mxjc/util/StringUtil.java
// public class StringUtil {
// 	
// 	/**
// 	 * Check if a string is empty
// 	 * @param string
// 	 * @return true or false
// 	 */
// 	public static boolean isEmpty(String string) {
// 		if (string == null) return true;
// 		if (string.trim().length() == 0) return true;
// 		return false;
// 	}
// 
// }


import com.leansoft.mxjc.model.CGModel;
import com.leansoft.mxjc.model.EnumConstantInfo;
import com.leansoft.mxjc.model.EnumInfo;
import com.leansoft.mxjc.util.StringUtil;
import com.sun.tools.xjc.ErrorReceiver;
import com.sun.tools.xjc.outline.EnumConstantOutline;
import com.sun.tools.xjc.outline.EnumOutline;
import com.sun.tools.xjc.outline.Outline;
package com.leansoft.mxjc.builder;


public class EnumModelBuilder {
    
    public static void buildEnumModel(Outline outline, CGModel cgModel, ErrorReceiver errorReceiver) {
		for (EnumOutline eo : outline.getEnums()) {
			EnumInfo enumInfo = new EnumInfo();
			enumInfo.setPackageName(eo._package()._package().name());
			enumInfo.setName(eo.clazz.name());
// Path: src/main/java/com/leansoft/mxjc/model/CGModel.java
// public class CGModel {
// 	
// 	private final List<ClassInfo> classes = new ArrayList<ClassInfo>();
// 	
// 	private final List<EnumInfo> enums = new ArrayList<EnumInfo>();
// 
//     /**
//      *  Class model for codegen
//      * @return List<ClassInfo>
//      */
// 	public List<ClassInfo> getClasses() {
// 		return classes;
// 	}
// 	
//     /**
//      *  Enum model for codegen
//      * @return List<EnumInfo>
//      */
// 	public List<EnumInfo> getEnums() {
// 		return enums;
// 	}
// 	
// }
// 
// Path: src/main/java/com/leansoft/mxjc/model/EnumConstantInfo.java
// public class EnumConstantInfo implements Serializable {
// 	
// 	private static final long serialVersionUID = -8191948715005132615L;
// 	
// 	// simple name of this enum constant
// 	private String name;
// 	// doc comment of this enum constant
// 	private String docComment;
// 	
// 	// simple value of this enum constant
// 	private String value;
// 	
// 	/**
// 	 * value of this enum constant
// 	 * @return, value of this enum constant
// 	 */
// 	public String getValue() {
// 		return value;
// 	}
// 	
// 	/**
// 	 * set value of this enum constant
// 	 * @param value
// 	 */
// 	public void setValue(String value) {
// 		this.value = value;
// 	}
// 	/**
// 	 * simple name of this enum constant
// 	 * @return, simple name of this enum constant
// 	 */
// 	public String getName() {
// 		return name;
// 	}
// 	/**
// 	 * set the simple name of this enum constant
// 	 * @param simple name
// 	 */
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 	/**
// 	 * doc comment of this enum constant
// 	 * @return doc comment
// 	 */
// 	public String getDocComment() {
// 		return docComment;
// 	}
// 	/**
// 	 * set doc comment of this enum constant
// 	 * @param docComment
// 	 */
// 	public void setDocComment(String docComment) {
// 		this.docComment = docComment;
// 	}
// 	
// }
// 
// Path: src/main/java/com/leansoft/mxjc/model/EnumInfo.java
// public class EnumInfo implements Serializable {
// 	
// 	private static final long serialVersionUID = -683805101371156468L;
// 	
// 	// package name of this enum type
// 	private String pkgName;
// 	// simple name of this enum type
// 	private String name;
// 	// full name of this enum type
// 	private String fullName;
// 	// doc comment of this enum type
// 	private String docComment;
// 	// a list of enum constant this enum contains
// 	private final List<EnumConstantInfo> enumConstants = new ArrayList<EnumConstantInfo>();
// 	
// 	/**
// 	 * the package name of this enum type
// 	 * @return package name
// 	 */
// 	public String getPackageName() {
// 		return pkgName;
// 	}
// 	/**
// 	 * set the package name of this enum type
// 	 * @param pkgName
// 	 */
// 	public void setPackageName(String pkgName) {
// 		this.pkgName = pkgName;
// 	}
// 	/**
// 	 * get the simple name of this enum type
// 	 * @return the simple name of this enum
// 	 */
// 	public String getName() {
// 		return name;
// 	}
// 	/**
// 	 * set the simple name of this enum type
// 	 * @param simple name
// 	 */
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 	/**
// 	 * the enum constants this enum contains
// 	 * @return a list of enum constants
// 	 */
// 	public List<EnumConstantInfo> getEnumConstants() {
// 		return enumConstants;
// 	}
// 	/**
// 	 * the doc comment of this enum type
// 	 * @return doc comment
// 	 */
// 	public String getDocComment() {
// 		return docComment;
// 	}
// 	/**
// 	 * set the doc comment of this enum type
// 	 * @param docComment
// 	 */
// 	public void setDocComment(String docComment) {
// 		this.docComment = docComment;
// 	}
// 	
// 	/**
// 	 * Get full name of this enum
// 	 * 
// 	 * @return full name
// 	 */
// 	public String getFullName() {
// 		return fullName;
// 	}
// 	
// 	/**
// 	 * set full name of this enum
// 	 * 
// 	 * @param fullName
// 	 */
// 	public void setFullName(String fullName) {
// 		this.fullName = fullName;
// 	}	
// }
// 
// Path: src/main/java/com/leansoft/mxjc/util/StringUtil.java
// public class StringUtil {
// 	
// 	/**
// 	 * Check if a string is empty
// 	 * @param string
// 	 * @return true or false
// 	 */
// 	public static boolean isEmpty(String string) {
// 		if (string == null) return true;
// 		if (string.trim().length() == 0) return true;
// 		return false;
// 	}
// 
// }


// Path: src/main/java/com/leansoft/mxjc/builder/EnumModelBuilder.java
import com.leansoft.mxjc.model.CGModel;
import com.leansoft.mxjc.model.EnumConstantInfo;
import com.leansoft.mxjc.model.EnumInfo;
import com.leansoft.mxjc.util.StringUtil;
import com.sun.tools.xjc.ErrorReceiver;
import com.sun.tools.xjc.outline.EnumConstantOutline;
import com.sun.tools.xjc.outline.EnumOutline;
import com.sun.tools.xjc.outline.Outline;

package com.leansoft.mxjc.builder;


public class EnumModelBuilder {
    
    public static void buildEnumModel(Outline outline, CGModel cgModel, ErrorReceiver errorReceiver) {
		for (EnumOutline eo : outline.getEnums()) {
			EnumInfo enumInfo = new EnumInfo();
			enumInfo.setPackageName(eo._package()._package().name());
			enumInfo.setName(eo.clazz.name());
			if (!StringUtil.isEmpty(enumInfo.getPackageName())) {