weka.core.converters
Class DatabaseSaver

java.lang.Object
  extended by weka.core.converters.AbstractSaver
      extended by weka.core.converters.DatabaseSaver
All Implemented Interfaces:
java.io.Serializable, weka.core.CapabilitiesHandler, weka.core.converters.BatchConverter, weka.core.converters.DatabaseConverter, weka.core.converters.IncrementalConverter, weka.core.converters.Saver, weka.core.OptionHandler, weka.core.RevisionHandler

public class DatabaseSaver
extends weka.core.converters.AbstractSaver
implements weka.core.converters.BatchConverter, weka.core.converters.IncrementalConverter, weka.core.converters.DatabaseConverter, weka.core.OptionHandler

Writes to a database (tested with MySQL, InstantDB, HSQLDB).

Valid options are:

 -url <JDBC URL>
  The JDBC URL to connect to.
  (default: from DatabaseUtils.props file)
 -user <name>
  The user to connect with to the database.
  (default: none)
 -password <password>
  The password to connect with to the database.
  (default: none)
 -T <table name>
  The name of the table.
  (default: the relation name)
 -P
  Add an ID column as primary key. The name is specified
  in the DatabaseUtils file ('idColumn'). The DatabaseLoader
  won't load this column.
 -i <input file name>
  Input file in arff format that should be saved in database.
WARNING:This class was taken from the weka_src.jar and modified in order to put some logs and to make possible the connection to the DB through SpagoBI

Version:
$Revision: 5240 $
Author:
Stefan Mutter (mutter@cs.waikato.ac.nz)
See Also:
Serialized Form

Field Summary
protected  int dbWriteMode
          reads the property file
static int DELETE_INSERT
           
static int DROP_INSERT
           
static int INSERT
           
protected  java.lang.String[] keyColumnNames
           
protected static java.util.Properties PROPERTIES
          Properties associated with the database connection.
protected static java.lang.String PROPERTY_FILE
          The property file for the database connection.
static int UPDATE_INSERT
           
protected  java.lang.String version
           
protected  java.lang.String versionColumnName
           
protected  boolean versioning
           
 
Fields inherited from class weka.core.converters.AbstractSaver
CANCEL, m_retrieval, STRUCTURE_READY, WAIT, WRITE
 
Fields inherited from interface weka.core.converters.Saver
BATCH, INCREMENTAL, NONE
 
Constructor Summary
DatabaseSaver()
          Constructor.
 
Method Summary
 java.lang.String autoKeyGenerationTipText()
          Returns the tip text for this property.
 void cancel()
          Cancels the incremental saving process and tries to drop the table if the write mode is CANCEL.
 void connectToDatabase()
          Opens a connection to the database.
 boolean getAutoKeyGeneration()
          Gets whether or not a primary key will be generated automatically.
 weka.core.Capabilities getCapabilities()
          Returns the Capabilities of this saver.
 java.lang.String[] getKeyColumnNames()
          Gets the key column names.
 java.lang.String[] getOptions()
          Gets the setting.
 java.lang.String getPassword()
          Returns the database password.
 boolean getRelationForTableName()
          Gets whether or not the relation name is used as name of the table.
 java.lang.String getRevision()
          Returns the revision string.
 java.lang.String getTableName()
          Gets the table's name.
 java.lang.String getUrl()
          Gets the database URL.
 java.lang.String getUser()
          Gets the database user.
 java.lang.String getVersion()
          Gets the version.
 java.lang.String getVersionColumnName()
          Gets the version column name.
 java.lang.String globalInfo()
          Returns a string describing this Saver.
 boolean isKeyColumnName(java.lang.String columnName)
          Checks if is key column name.
 boolean isVersioning()
          Checks if is versioning.
 java.util.Enumeration listOptions()
          Lists the available options.
static void main(java.lang.String[] options)
          Main method.
 java.lang.String passwordTipText()
          Returns the tip text for this property.
 java.lang.String relationForTableNameTipText()
          Returns the tip text fo this property.
 void resetOptions()
          Resets the Saver ready to save a new data set.
 void setAutoKeyGeneration(boolean flag)
          En/Dis-ables the automatic generation of a primary key.
 void setDbWriteMode(java.lang.String dbWriteMode)
          Sets the db write mode.
 void setDestination()
          Sets the database url using the DatabaseUtils file.
 void setDestination(java.sql.Connection connection)
          Sets the database url using the given connection.
 void setDestination(java.lang.String url)
          Sets the database url.
 void setDestination(java.lang.String url, java.lang.String userName, java.lang.String password)
          Sets the database url.
 void setKeyColumnNames(java.lang.String[] keyColumnNames)
          Sets the key column names.
 void setOptions(java.lang.String[] options)
          Sets the options.
 void setPassword(java.lang.String password)
          Sets the database password.
 void setRelationForTableName(boolean flag)
          En/Dis-ables that the relation name is used for the name of the table (default enabled).
 void setTableName(java.lang.String tn)
          Sets the table's name.
 void setUrl(java.lang.String url)
          Sets the database URL.
 void setUser(java.lang.String user)
          Sets the database user.
 void setVersion(java.lang.String version)
          Sets the version.
 void setVersionColumnName(java.lang.String versionColumnName)
          Sets the version column name.
 void setVersioning(boolean versioning)
          Sets the versioning.
 java.lang.String tableNameTipText()
          Returns the tip text for this property.
 java.lang.String urlTipText()
          Returns the tip text for this property.
 java.lang.String userTipText()
          Returns the tip text for this property.
 void writeBatch()
          Writes a Batch of instances.
 void writeIncremental(weka.core.Instance inst)
          Saves an instances incrementally.
 
Methods inherited from class weka.core.converters.AbstractSaver
filePrefix, getFileExtension, getInstances, getRetrieval, getWriteMode, resetStructure, retrieveDir, setDestination, setDestination, setDir, setDirAndPrefix, setFile, setFilePrefix, setInstances, setRetrieval, setStructure, setWriteMode
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROPERTY_FILE

protected static java.lang.String PROPERTY_FILE
The property file for the database connection.


PROPERTIES

protected static java.util.Properties PROPERTIES
Properties associated with the database connection.


dbWriteMode

protected int dbWriteMode
reads the property file


keyColumnNames

protected java.lang.String[] keyColumnNames

versioning

protected boolean versioning

versionColumnName

protected java.lang.String versionColumnName

version

protected java.lang.String version

DROP_INSERT

public static final int DROP_INSERT
See Also:
Constant Field Values

DELETE_INSERT

public static final int DELETE_INSERT
See Also:
Constant Field Values

INSERT

public static final int INSERT
See Also:
Constant Field Values

UPDATE_INSERT

public static final int UPDATE_INSERT
See Also:
Constant Field Values
Constructor Detail

DatabaseSaver

public DatabaseSaver()
              throws java.lang.Exception
Constructor.

Throws:
java.lang.Exception - throws Exception if property file cannot be read
Method Detail

setDbWriteMode

public void setDbWriteMode(java.lang.String dbWriteMode)
Sets the db write mode.

Parameters:
dbWriteMode - the new db write mode

resetOptions

public void resetOptions()
Resets the Saver ready to save a new data set.

Overrides:
resetOptions in class weka.core.converters.AbstractSaver

cancel

public void cancel()
Cancels the incremental saving process and tries to drop the table if the write mode is CANCEL.

Overrides:
cancel in class weka.core.converters.AbstractSaver

globalInfo

public java.lang.String globalInfo()
Returns a string describing this Saver.

Returns:
a description of the Saver suitable for displaying in the explorer/experimenter gui

setTableName

public void setTableName(java.lang.String tn)
Sets the table's name.

Parameters:
tn - the name of the table

getTableName

public java.lang.String getTableName()
Gets the table's name.

Returns:
the table's name

tableNameTipText

public java.lang.String tableNameTipText()
Returns the tip text for this property.

Returns:
the tip text for this property

setAutoKeyGeneration

public void setAutoKeyGeneration(boolean flag)
En/Dis-ables the automatic generation of a primary key.

Parameters:
flag - flag for automatic key-genereration

getAutoKeyGeneration

public boolean getAutoKeyGeneration()
Gets whether or not a primary key will be generated automatically.

Returns:
true if a primary key column will be generated, false otherwise

autoKeyGenerationTipText

public java.lang.String autoKeyGenerationTipText()
Returns the tip text for this property.

Returns:
tip text for this property

setRelationForTableName

public void setRelationForTableName(boolean flag)
En/Dis-ables that the relation name is used for the name of the table (default enabled).

Parameters:
flag - if true the relation name is used as table name

getRelationForTableName

public boolean getRelationForTableName()
Gets whether or not the relation name is used as name of the table.

Returns:
true if the relation name is used as the name of the table, false otherwise

relationForTableNameTipText

public java.lang.String relationForTableNameTipText()
Returns the tip text fo this property.

Returns:
the tip text for this property

setUrl

public void setUrl(java.lang.String url)
Sets the database URL.

Specified by:
setUrl in interface weka.core.converters.DatabaseConverter
Parameters:
url - the URL

getUrl

public java.lang.String getUrl()
Gets the database URL.

Specified by:
getUrl in interface weka.core.converters.DatabaseConverter
Returns:
the URL

urlTipText

public java.lang.String urlTipText()
Returns the tip text for this property.

Returns:
the tip text for this property

setUser

public void setUser(java.lang.String user)
Sets the database user.

Specified by:
setUser in interface weka.core.converters.DatabaseConverter
Parameters:
user - the user name

getUser

public java.lang.String getUser()
Gets the database user.

Specified by:
getUser in interface weka.core.converters.DatabaseConverter
Returns:
the user name

userTipText

public java.lang.String userTipText()
Returns the tip text for this property.

Returns:
the tip text for this property

setPassword

public void setPassword(java.lang.String password)
Sets the database password.

Specified by:
setPassword in interface weka.core.converters.DatabaseConverter
Parameters:
password - the password

getPassword

public java.lang.String getPassword()
Returns the database password.

Returns:
the database password

passwordTipText

public java.lang.String passwordTipText()
Returns the tip text for this property.

Returns:
the tip text for this property

getVersion

public java.lang.String getVersion()
Gets the version.

Returns:
the version

setVersion

public void setVersion(java.lang.String version)
Sets the version.

Parameters:
version - the new version

getVersionColumnName

public java.lang.String getVersionColumnName()
Gets the version column name.

Returns:
the version column name

setVersionColumnName

public void setVersionColumnName(java.lang.String versionColumnName)
Sets the version column name.

Parameters:
versionColumnName - the new version column name

isVersioning

public boolean isVersioning()
Checks if is versioning.

Returns:
true, if is versioning

setVersioning

public void setVersioning(boolean versioning)
Sets the versioning.

Parameters:
versioning - the new versioning

getKeyColumnNames

public java.lang.String[] getKeyColumnNames()
Gets the key column names.

Returns:
the key column names

setKeyColumnNames

public void setKeyColumnNames(java.lang.String[] keyColumnNames)
Sets the key column names.

Parameters:
keyColumnNames - the new key column names

setDestination

public void setDestination(java.lang.String url,
                           java.lang.String userName,
                           java.lang.String password)
Sets the database url.

Parameters:
url - the database url
userName - the user name
password - the password

setDestination

public void setDestination(java.lang.String url)
Sets the database url.

Parameters:
url - the database url

setDestination

public void setDestination()
Sets the database url using the DatabaseUtils file.


setDestination

public void setDestination(java.sql.Connection connection)
Sets the database url using the given connection.

Parameters:
connection - the connection

getCapabilities

public weka.core.Capabilities getCapabilities()
Returns the Capabilities of this saver.

Specified by:
getCapabilities in interface weka.core.CapabilitiesHandler
Overrides:
getCapabilities in class weka.core.converters.AbstractSaver
Returns:
the capabilities of this object
See Also:
Capabilities

connectToDatabase

public void connectToDatabase()
Opens a connection to the database.


isKeyColumnName

public boolean isKeyColumnName(java.lang.String columnName)
Checks if is key column name.

Parameters:
columnName - the column name
Returns:
true, if is key column name

writeIncremental

public void writeIncremental(weka.core.Instance inst)
                      throws java.io.IOException
Saves an instances incrementally. Structure has to be set by using the setStructure() method or setInstances() method. When a structure is set, a table is created.

Specified by:
writeIncremental in interface weka.core.converters.Saver
Overrides:
writeIncremental in class weka.core.converters.AbstractSaver
Parameters:
inst - the instance to save
Throws:
java.io.IOException - throws IOEXception.

writeBatch

public void writeBatch()
                throws java.io.IOException
Writes a Batch of instances.

Specified by:
writeBatch in interface weka.core.converters.Saver
Specified by:
writeBatch in class weka.core.converters.AbstractSaver
Throws:
java.io.IOException - throws IOException

getOptions

public java.lang.String[] getOptions()
Gets the setting.

Specified by:
getOptions in interface weka.core.OptionHandler
Returns:
the current setting

listOptions

public java.util.Enumeration listOptions()
Lists the available options.

Specified by:
listOptions in interface weka.core.OptionHandler
Returns:
an enumeration of the available options

setOptions

public void setOptions(java.lang.String[] options)
                throws java.lang.Exception
Sets the options.

Valid options are:

 -url <JDBC URL>
  The JDBC URL to connect to.
  (default: from DatabaseUtils.props file)
 -user <name>
  The user to connect with to the database.
  (default: none)
 -password <password>
  The password to connect with to the database.
  (default: none)
 -T <table name>
  The name of the table.
  (default: the relation name)
 -P
  Add an ID column as primary key. The name is specified
  in the DatabaseUtils file ('idColumn'). The DatabaseLoader
  won't load this column.
 -i <input file name>
  Input file in arff format that should be saved in database.

Specified by:
setOptions in interface weka.core.OptionHandler
Parameters:
options - the options
Throws:
java.lang.Exception - if options cannot be set

getRevision

public java.lang.String getRevision()
Returns the revision string.

Specified by:
getRevision in interface weka.core.RevisionHandler
Returns:
the revision

main

public static void main(java.lang.String[] options)
Main method.

Parameters:
options - should contain the options of a Saver.