// Path: cango-common/src/main/java/com/bella/cango/enums/DbType.java
// public enum DbType {
//     MYSQL(1, "com.mysql.jdbc.Driver"),
//     ORACLE(2, "oracle.jdbc.driver.OracleDriver"),
//     DRDS(3, "com.mysql.jdbc.Driver");
// 
//     private Integer code;
//     private String driver;
// 
//     DbType(Integer type, String driver) {
//         this.code = type;
//     }
// 
//     public Integer getCode() {
//         return code;
//     }
// 
//     public String getDriver() {
//         return driver;
//     }
// 
//     public boolean isOracle() {
//         return this.equals(ORACLE);
//     }
// 
// 
//     public boolean isMysql() {
//         return this.equals(MYSQL);
//     }
// 
//     public boolean isDRDS() {
//         return this.equals(DRDS);
//     }
// 
//     public DbType parse(Integer code) {
//         switch (code) {
//             case 1:
//                 return MYSQL;
//             case 2:
//                 return ORACLE;
//             case 3:
//                 return DRDS;
//             default:
//                 return null;
//         }
//     }
// }
// 
// Path: cango-instance/src/main/java/com/bella/cango/instance/oracle/common/utils/YuGongToStringStyle.java
// public class YuGongToStringStyle extends ToStringStyle {
// 
//     private static final long serialVersionUID = -6568177374288222145L;
// 
//     public static final ToStringStyle DEFAULT_STYLE = new DateStyle("yyyy-MM-dd HH:mm:ss");
// 
//     private static class DateStyle extends ToStringStyle {
// 
//         private static final long serialVersionUID = 5208917932254652886L;
// 
//         private String datePattern;
// 
//         public DateStyle(String datePattern) {
//             super();
//             this.setUseIdentityHashCode(false);
//             this.setUseShortClassName(true);
//             this.datePattern = datePattern;
//         }
// 
//         protected void appendDetail(StringBuffer buffer, String fieldName, Object value) {
//             if (value instanceof Date) {
//                 value = new SimpleDateFormat(datePattern).format(value);
//             } else {
//                 buffer.append(value);
//             }
//         }
//     }
// }


import com.bella.cango.enums.DbType;
import com.bella.cango.instance.oracle.common.utils.YuGongToStringStyle;
import org.apache.commons.lang.builder.ToStringBuilder;
import java.io.Serializable;
import java.util.Properties;
        result = prime * result + ((username == null) ? 0 : username.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null) return false;
        if (getClass() != obj.getClass()) return false;
        DataSourceConfig other = (DataSourceConfig) obj;
        if (encode == null) {
            if (other.encode != null) return false;
        } else if (!encode.equals(other.encode)) return false;
        if (password == null) {
            if (other.password != null) return false;
        } else if (!password.equals(other.password)) return false;
        if (properties == null) {
            if (other.properties != null) return false;
        } else if (!properties.equals(other.properties)) return false;
        if (type != other.type) return false;
        if (url == null) {
            if (other.url != null) return false;
        } else if (!url.equals(other.url)) return false;
        if (username == null) {
            if (other.username != null) return false;
        } else if (!username.equals(other.username)) return false;
        return true;
    }

    public String toString() {
// Path: cango-common/src/main/java/com/bella/cango/enums/DbType.java
// public enum DbType {
//     MYSQL(1, "com.mysql.jdbc.Driver"),
//     ORACLE(2, "oracle.jdbc.driver.OracleDriver"),
//     DRDS(3, "com.mysql.jdbc.Driver");
// 
//     private Integer code;
//     private String driver;
// 
//     DbType(Integer type, String driver) {
//         this.code = type;
//     }
// 
//     public Integer getCode() {
//         return code;
//     }
// 
//     public String getDriver() {
//         return driver;
//     }
// 
//     public boolean isOracle() {
//         return this.equals(ORACLE);
//     }
// 
// 
//     public boolean isMysql() {
//         return this.equals(MYSQL);
//     }
// 
//     public boolean isDRDS() {
//         return this.equals(DRDS);
//     }
// 
//     public DbType parse(Integer code) {
//         switch (code) {
//             case 1:
//                 return MYSQL;
//             case 2:
//                 return ORACLE;
//             case 3:
//                 return DRDS;
//             default:
//                 return null;
//         }
//     }
// }
// 
// Path: cango-instance/src/main/java/com/bella/cango/instance/oracle/common/utils/YuGongToStringStyle.java
// public class YuGongToStringStyle extends ToStringStyle {
// 
//     private static final long serialVersionUID = -6568177374288222145L;
// 
//     public static final ToStringStyle DEFAULT_STYLE = new DateStyle("yyyy-MM-dd HH:mm:ss");
// 
//     private static class DateStyle extends ToStringStyle {
// 
//         private static final long serialVersionUID = 5208917932254652886L;
// 
//         private String datePattern;
// 
//         public DateStyle(String datePattern) {
//             super();
//             this.setUseIdentityHashCode(false);
//             this.setUseShortClassName(true);
//             this.datePattern = datePattern;
//         }
// 
//         protected void appendDetail(StringBuffer buffer, String fieldName, Object value) {
//             if (value instanceof Date) {
//                 value = new SimpleDateFormat(datePattern).format(value);
//             } else {
//                 buffer.append(value);
//             }
//         }
//     }
// }


// Path: cango-instance/src/main/java/com/bella/cango/instance/oracle/common/model/DataSourceConfig.java
import com.bella.cango.enums.DbType;
import com.bella.cango.instance.oracle.common.utils.YuGongToStringStyle;
import org.apache.commons.lang.builder.ToStringBuilder;
import java.io.Serializable;
import java.util.Properties;

        result = prime * result + ((username == null) ? 0 : username.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null) return false;
        if (getClass() != obj.getClass()) return false;
        DataSourceConfig other = (DataSourceConfig) obj;
        if (encode == null) {
            if (other.encode != null) return false;
        } else if (!encode.equals(other.encode)) return false;
        if (password == null) {
            if (other.password != null) return false;
        } else if (!password.equals(other.password)) return false;
        if (properties == null) {
            if (other.properties != null) return false;
        } else if (!properties.equals(other.properties)) return false;
        if (type != other.type) return false;
        if (url == null) {
            if (other.url != null) return false;
        } else if (!url.equals(other.url)) return false;
        if (username == null) {
            if (other.username != null) return false;
        } else if (!username.equals(other.username)) return false;
        return true;
    }

    public String toString() {
        return ToStringBuilder.reflectionToString(this, YuGongToStringStyle.DEFAULT_STYLE);