class AbstractDatabase implements Database {

    //Database attributes
    protected String name;
    protected String driver;
    protected String host;
    protected int port;
    protected String username;
    protected String passwd;
    protected String DBName;
    //PropertiesAssociations
    protected PropertiesAssociations properties = new PropertiesAssociations();

    @Override
    public String getDBName() {
        return DBName;
    }

    @Override
    public void setDBName(String DBName) {
        this.DBName = DBName;
    }

    @Override
    public SQLDriver getSQLDriver() {
        return SQLUtils.getDriver(driver);
    }

    @Override
    public void setSQLDriver(SQLDriver driver) {<FILL_FUNCTION_BODY>}

    @Override
    public String getHost() {
        return host;
    }

    @Override
    public void setHost(String host) {
        this.host = host;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String getPasswd() {
        return passwd;
    }

    @Override
    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }

    @Override
    public int getPort() {
        return port;
    }

    @Override
    public void setPort(int port) {
        this.port = port;
    }

    @Override
    public String getUsername() {
        return username;
    }

    @Override
    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public PropertiesAssociations getPropertiesAssociations() {
        return properties;
    }
}

        if (driver != null) {
            this.driver = driver.getPrefix();
        }
    
<no_super_class>