package org.gbif.ipt.model;
import org.gbif.ipt.config.JdbcSupport;
/**
* A SQL view based data source.
* The view is configured via a fully custom and raw select statement that can use any db specific feature needed.
*/
public class SqlSource extends SourceBase {
private String sql;
private JdbcSupport.JdbcInfo rdbms;
private String host;
private String database;
private String username;
private Password password = new Password();
public String getDatabase() {
return database;
}
public String getHost() {
return host;
}
public String getJdbcDriver() {
return rdbms.getDriver();
}
public String getJdbcUrl() {
return rdbms.getJdbcUrl(this);
}
public String getPassword() {
return password.password;
}
public JdbcSupport.JdbcInfo getRdbms() {
return rdbms;
}
public String getSql() {
return sql;
}
/**
* The configured sql with an additional limit clause.
* The exact format of this clause depends on the database and is kept in the JdbcSupport.
* Select TOP ?, Where ROWNUM<? and LIMIT ? are readily supported.
*
* @param limit the number of rowIterator to limit this query by
*
* @return the final sql string
*/
public String getSqlLimited(int limit) {
return rdbms.addLimit(sql, limit);
}
public String getUsername() {
return username;
}
public void setDatabase(String database) {
this.database = database;
}
public void setHost(String host) {
this.host = host;
}
public void setPassword(String password) {
this.password.password = password;
}
public void setRdbms(JdbcSupport.JdbcInfo rdbms) {
this.rdbms = rdbms;
}
public void setSql(String sql) {
this.sql = sql;
}
public void setUsername(String username) {
this.username = username;
}
}