package railo.runtime.db;
import java.util.TimeZone;
import railo.runtime.type.Struct;
/**
* interface for a datasource
*/
public interface DataSource extends Cloneable {
/**
* Field <code>ALLOW_SELECT</code>
*/
public static final int ALLOW_SELECT = 1;
/**
* Field <code>ALLOW_DELETE</code>
*/
public static final int ALLOW_DELETE = 2;
/**
* Field <code>ALLOW_UPDATE</code>
*/
public static final int ALLOW_UPDATE = 4;
/**
* Field <code>ALLOW_INSERT</code>
*/
public static final int ALLOW_INSERT = 8;
/**
* Field <code>ALLOW_CREATE</code>
*/
public static final int ALLOW_CREATE = 16;
/**
* Field <code>ALLOW_GRANT</code>
*/
public static final int ALLOW_GRANT = 32;
/**
* Field <code>ALLOW_REVOKE</code>
*/
public static final int ALLOW_REVOKE = 64;
/**
* Field <code>ALLOW_DROP</code>
*/
public static final int ALLOW_DROP = 128;
/**
* Field <code>ALLOW_ALTER</code>
*/
public static final int ALLOW_ALTER = 256;
/**
* Field <code>ALLOW_ALL</code>
*/
public static final int ALLOW_ALL = ALLOW_SELECT + ALLOW_DELETE
+ ALLOW_UPDATE + ALLOW_INSERT + ALLOW_CREATE + ALLOW_GRANT
+ ALLOW_REVOKE + ALLOW_DROP + ALLOW_ALTER;
/**
* @return Returns the dsn.
*/
public abstract String getDsnOriginal(); // FUTURE deprecated
// FUTURE public abstract String getConnectionStringOriginal();
/**
* @return Returns the dsn.
*/
public abstract String getDsnTranslated(); // FUTURE deprecated
// FUTURE public abstract String getConnectionStringTranslated();
/**
* @return Returns the password.
*/
public abstract String getPassword();
/**
* @return Returns the username.
*/
public abstract String getUsername();
/**
* @return Returns the readOnly.
*/
public abstract boolean isReadOnly();
/**
* @param allow
* @return returns if given allow exists
*/
public abstract boolean hasAllow(int allow);
/**
* @return Returns the clazz.
*/
public abstract Class getClazz();
/**
* @return Returns the database.
*/
public abstract String getDatabase();
/**
* @return Returns the port.
*/
public abstract int getPort();
/**
* @return Returns the host.
*/
public abstract String getHost();
/**
* @return cloned Object
*/
public abstract Object clone();
/**
* @return clone the DataSource as ReadOnly
*/
public abstract DataSource cloneReadOnly();
/**
* @return Returns the blob.
*/
public abstract boolean isBlob();
/**
* @return Returns the clob.
*/
public abstract boolean isClob();
/**
* @return Returns the connectionLimit.
*/
public abstract int getConnectionLimit();
/**
* @return Returns the connectionTimeout.
*/
public abstract int getConnectionTimeout();
public long getMetaCacheTimeout();
public TimeZone getTimeZone();
/**
* @param key
* @return Returns matching custom value or null if not exist.
*/
public abstract String getCustomValue(String key);
/**
* @return returns all custom names
*/
public abstract String[] getCustomNames();
/**
* @return returns custom
*/
public abstract Struct getCustoms();
/**
* @return returns if database has a SQL restriction
*/
public abstract boolean hasSQLRestriction();
/**
* @return Returns the name.
*/
public abstract String getName();
/**
* @param clazz The clazz to set.
*/
public abstract void setClazz(Class clazz);
public abstract boolean isStorage();
public abstract boolean validate();
// public abstract int getMaxConnection();
// public String getDbDriver(); // FUTURE, for JIRA-569; return the dbdriver used in the Admin to edit this datasource
}