|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object biz.hammurapi.sql.SQLProcessor
public class SQLProcessor
This class contains methods to process SQL statements in more convenient way comparing to standard JDBC.
Constructor Summary | |
---|---|
SQLProcessor(java.sql.Connection connection,
Context nameMap)
If SQLProcessor created with this constructor then is doesn't close the connection after processing. |
|
SQLProcessor(javax.sql.DataSource dataSource,
Context nameMap)
If SQLProcessor constructed with this constructor then it obtains connection from the datasource, processes request and closes connection. |
Method Summary | |
---|---|
void |
executeScript(java.io.Reader reader)
Excecutes script with ; as statement separator |
void |
executeScript(java.io.Reader reader,
char statementSeparator)
Executes series of SQL statement read from reader and separated by statementSeparator |
void |
executeScript(java.io.Reader reader,
char statementSeparator,
ExceptionSink exceptionSink)
|
void |
executeTransaction(Transaction transaction)
|
static java.lang.String |
findProjectSingleMethodName(java.lang.String className)
Finds projectSingleXXX method for a particular type. |
java.sql.Connection |
getConnection()
Returns connection if you need it for JDBC calls outside of the SQLProcessor |
protected javax.sql.DataSource |
getDataSource()
|
Context |
getNameMap()
|
TimeIntervalCategory |
getTimeIntervalCategory()
|
void |
inject(StatementFragment fragment,
java.util.Map columnMap,
java.lang.Object target)
|
void |
inject(java.lang.String sql,
Parameterizer parameterizer,
java.util.Map columnMap,
java.lang.Object target)
Executes query and injects values from the first row to target object. |
static void |
main(java.lang.String[] args)
|
int |
nextPK(java.sql.Connection con,
java.lang.String primaryKeysTable,
java.lang.String keyName)
|
int |
nextPK(java.lang.String primaryKeysTable,
java.lang.String keyName)
Generates primary key. |
java.lang.String |
parse(java.lang.String str)
Replaces ${ |
void |
processResourceSelect(java.lang.String resourceName,
Parameterizer parameterizer,
RowProcessor rowProcessor)
Processes SELECT statement read from resource file. |
int |
processResourceUpdate(java.lang.String resourceName,
Parameterizer parameterizer)
Processes SELECT statement read from resource file. |
void |
processSelect(StatementFragment fragment,
RowProcessor rowProcessor)
|
void |
processSelect(java.lang.String sql,
Parameterizer parameterizer,
RowProcessor rowProcessor)
Processes SQL SELECT statement in the following way: Obtains connection If parameterizer==null creates Statement, creates PreparedStatement otherwise Invokes parameterizer.parameterize() if parameterizer is not null Iterates through result set and invokes rowProcessor.process() on each row If there was no rows and rowProcess is instance of RowProcessorEx then rowProcessor.onEmptyResultSet() is invoked
ResultSet, Statement and connection are properly released
|
int |
processUpdate(StatementFragment fragment)
|
int |
processUpdate(java.lang.String sql,
Parameterizer parameterizer)
Processes SQL INSERT, UPDATE or DELETE statement in the following way: Obtains connection If parameterizer==null creates Statement, creates PreparedStatement otherwise Invokes parameterizer.parameterize() if parameterizer is not null Executes update ResultSet, Statement and connection are properly released |
java.util.Collection |
project(StatementFragment fragment)
|
java.util.Collection |
project(StatementFragment fragment,
java.lang.Class theInterface)
|
java.util.Collection |
project(StatementFragment fragment,
java.lang.Class theInterface,
java.util.Collection receiver)
|
java.util.Collection |
project(StatementFragment fragment,
java.lang.Class theInterface,
int pageNum,
int pageSize)
|
java.util.Collection |
project(StatementFragment fragment,
java.lang.Class theInterface,
java.lang.Object delegate)
|
java.util.Collection |
project(StatementFragment fragment,
java.lang.Class theInterface,
java.lang.Object delegate,
java.util.Collection receiver)
|
java.util.Collection |
project(StatementFragment fragment,
java.lang.Class theInterface,
java.lang.Object delegate,
int pageNum,
int pageSize)
|
java.util.Collection |
project(StatementFragment fragment,
Projector projector)
|
java.util.Collection |
project(StatementFragment fragment,
Projector projector,
java.util.Collection receiver)
|
java.util.Collection |
project(StatementFragment fragment,
Projector projector,
java.util.Collection receiver,
int pageSize,
int pageNum)
|
java.util.Collection |
project(StatementFragment fragment,
Projector projector,
int pageNum,
int pageSize)
|
java.util.Collection |
project(java.lang.String sql)
Executes SQL statement and returns collection backed by the database. |
java.util.Collection |
project(java.lang.String sql,
Parameterizer parameterizer)
Executes SQL statement and returns collection backed by the database. |
java.util.Collection |
project(java.lang.String sql,
Parameterizer parameterizer,
java.lang.Class theInterface)
Executes SQL statement and returns collection backed by the database. |
java.util.Collection |
project(java.lang.String sql,
Parameterizer parameterizer,
java.lang.Class theInterface,
java.util.Collection receiver)
Executes SQL statement and puts results to receiver |
java.util.Collection |
project(java.lang.String sql,
Parameterizer parameterizer,
java.lang.Class theInterface,
int pageNum,
int pageSize)
Executes SQL statement and returns collection backed by the database. |
java.util.Collection |
project(java.lang.String sql,
Parameterizer parameterizer,
java.lang.Class theInterface,
java.lang.Object delegate)
Executes SQL statement and returns collection backed by the database. |
java.util.Collection |
project(java.lang.String sql,
Parameterizer parameterizer,
java.lang.Class theInterface,
java.lang.Object delegate,
java.util.Collection receiver)
Executes SQL statement and puts results to receiver |
java.util.Collection |
project(java.lang.String sql,
Parameterizer parameterizer,
java.lang.Class theInterface,
java.lang.Object delegate,
int pageNum,
int pageSize)
Executes SQL statement and returns collection backed by the database. |
java.util.Collection |
project(java.lang.String sql,
Parameterizer parameterizer,
Projector projector)
Executes SQL statement and returns collection backed by the database. |
java.util.Collection |
project(java.lang.String sql,
Parameterizer parameterizer,
Projector projector,
java.util.Collection receiver)
Executes SQL statement and puts results to receiver |
java.util.Collection |
project(java.lang.String sql,
Parameterizer parameterizer,
Projector projector,
java.util.Collection receiver,
int pageSize,
int pageNum)
Executes SQL statement and puts results to receiver |
java.util.Collection |
project(java.lang.String sql,
Parameterizer parameterizer,
Projector projector,
int pageNum,
int pageSize)
Executes SQL statement and returns collection backed by the database. |
boolean |
projectSingleBoolean(StatementFragment fragment)
|
boolean |
projectSingleBoolean(java.lang.String sql,
Parameterizer parameterizer)
|
byte |
projectSingleByte(StatementFragment fragment)
|
byte |
projectSingleByte(java.lang.String sql,
Parameterizer parameterizer)
|
byte[] |
projectSingleBytes(StatementFragment fragment)
|
byte[] |
projectSingleBytes(java.lang.String sql,
Parameterizer parameterizer)
|
char |
projectSingleChar(StatementFragment fragment)
|
char |
projectSingleChar(java.lang.String sql,
Parameterizer parameterizer)
|
double |
projectSingleDouble(StatementFragment fragment)
|
double |
projectSingleDouble(java.lang.String sql,
Parameterizer parameterizer)
|
float |
projectSingleFloat(StatementFragment fragment)
|
float |
projectSingleFloat(java.lang.String sql,
Parameterizer parameterizer)
|
int |
projectSingleInt(StatementFragment fragment)
|
int |
projectSingleInt(java.lang.String sql,
Parameterizer parameterizer)
|
long |
projectSingleLong(StatementFragment fragment)
|
long |
projectSingleLong(java.lang.String sql,
Parameterizer parameterizer)
|
java.lang.Object |
projectSingleObject(StatementFragment fragment)
|
java.lang.Object |
projectSingleObject(StatementFragment fragment,
java.lang.Class theInterface)
|
java.lang.Object |
projectSingleObject(StatementFragment fragment,
java.lang.Class theInterface,
java.lang.Object delegate)
|
java.lang.Object |
projectSingleObject(StatementFragment fragment,
Projector projector)
|
java.lang.Object |
projectSingleObject(java.lang.String sql,
Parameterizer parameterizer)
|
java.lang.Object |
projectSingleObject(java.lang.String sql,
Parameterizer parameterizer,
java.lang.Class theInterface)
|
java.lang.Object |
projectSingleObject(java.lang.String sql,
Parameterizer parameterizer,
java.lang.Class theInterface,
java.lang.Object delegate)
|
java.lang.Object |
projectSingleObject(java.lang.String sql,
Parameterizer parameterizer,
Projector projector)
|
short |
projectSingleShort(StatementFragment fragment)
|
short |
projectSingleShort(java.lang.String sql,
Parameterizer parameterizer)
|
java.lang.String |
projectSingleString(StatementFragment fragment)
|
java.lang.String |
projectSingleString(java.lang.String sql,
Parameterizer parameterizer)
|
void |
releaseConnection(java.sql.Connection connection)
Closes connection if it was provided by DataSource. |
void |
setTimeIntervalCategory(TimeIntervalCategory timeIntervalCategory)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public SQLProcessor(javax.sql.DataSource dataSource, Context nameMap)
dataSource
- DataSourcenameMap
- NameMap allows to write parameterized SQL statements
like "SELECT ${AMOUNT} FROM ${ACCOUNT} WHERE ${ANUM}=? AND CLOSED=1"
nameMap shall contain mapping from AMOUNT, ACCOUNT and ANUM to actual
database field names. If nameMap doesn't contain mapping for some
properties then property names will be used as property values.
See PropertyParser
.
One property value can contain a reference to another property.
If nameMap is null then no property parsing will happen.public SQLProcessor(java.sql.Connection connection, Context nameMap)
connection
- nameMap
- See biz.hammurapi.sql.SQLProcessor#SQLProcessor(DataSource, Properties)
Method Detail |
---|
public java.lang.String parse(java.lang.String str)
PropertyParser
str
-
public java.sql.Connection getConnection() throws java.sql.SQLException
java.sql.SQLException
public void releaseConnection(java.sql.Connection connection) throws java.sql.SQLException
connection
- Connection to release.
java.sql.SQLException
public void processSelect(StatementFragment fragment, RowProcessor rowProcessor) throws java.sql.SQLException
java.sql.SQLException
public void processSelect(java.lang.String sql, Parameterizer parameterizer, RowProcessor rowProcessor) throws java.sql.SQLException
RowProcessorEx
then rowProcessor.onEmptyResultSet() is invoked
sql
- SQL statment to executeparameterizer
- ParameterizerrowProcessor
- RowProcessor
java.sql.SQLException
public int processUpdate(StatementFragment fragment) throws java.sql.SQLException
java.sql.SQLException
public int processUpdate(java.lang.String sql, Parameterizer parameterizer) throws java.sql.SQLException
sql
- SQL statment to executeparameterizer
- Parameterizer
Statement.executeUpdate(java.lang.String)
java.sql.SQLException
public void processResourceSelect(java.lang.String resourceName, Parameterizer parameterizer, RowProcessor rowProcessor) throws java.sql.SQLException, java.io.IOException
resourceName
- parameterizer
- rowProcessor
-
java.sql.SQLException
java.io.IOException
public int processResourceUpdate(java.lang.String resourceName, Parameterizer parameterizer) throws java.sql.SQLException, java.io.IOException
resourceName
- parameterizer
-
Statement.executeUpdate(java.lang.String)
java.sql.SQLException
java.io.IOException
public void executeScript(java.io.Reader reader) throws java.io.IOException, java.sql.SQLException
reader
- Script source
java.io.IOException
java.sql.SQLException
executeScript(Reader, char)
public void executeScript(java.io.Reader reader, char statementSeparator) throws java.io.IOException, java.sql.SQLException
reader
- Script sourcestatementSeparator
- Statement separator
java.io.IOException
java.sql.SQLException
public void executeScript(java.io.Reader reader, char statementSeparator, ExceptionSink exceptionSink) throws java.io.IOException, java.sql.SQLException
reader
- Script sourcestatementSeparator
- Statement separatorexceptionSink
- Exception sink. Consumes exceptions thrown by individual statements. If sink is null then exception is
rethrown and script execution terminates.
java.io.IOException
java.sql.SQLException
public java.util.Collection project(StatementFragment fragment, Projector projector)
public java.util.Collection project(java.lang.String sql, Parameterizer parameterizer, Projector projector)
sql
- Select statement to executeparameterizer
- Parameterizerprojector
- Projector which instantiates objects. It is null then projector
which projects row to collection will be used.
public java.util.Collection project(StatementFragment fragment)
public java.util.Collection project(java.lang.String sql, Parameterizer parameterizer)
sql
- Select statement to executeparameterizer
- Parameterizerprojector
- Projector which instantiates objects. It is null then projector
which projects row to collection will be used.
public java.util.Collection project(java.lang.String sql)
sql
- Select statement to execute
public java.util.Collection project(StatementFragment fragment, java.lang.Class theInterface)
public java.util.Collection project(java.lang.String sql, Parameterizer parameterizer, java.lang.Class theInterface)
sql
- Select statement to executeparameterizer
- ParameterizertheInterface
- Iterface to implement
public java.util.Collection project(StatementFragment fragment, java.lang.Class theInterface, java.lang.Object delegate)
public java.util.Collection project(java.lang.String sql, Parameterizer parameterizer, java.lang.Class theInterface, java.lang.Object delegate)
sql
- Select statement to executeparameterizer
- ParameterizertheInterface
- Interface to implement
public java.util.Collection project(StatementFragment fragment, Projector projector, int pageNum, int pageSize)
public java.util.Collection project(java.lang.String sql, Parameterizer parameterizer, Projector projector, int pageNum, int pageSize)
sql
- Select statement to executeparameterizer
- Parameterizerprojector
- Projector which instantiates objects. If it is null
then projector which projects row to collection will be usedpageSize
- Maximum number of records to returnpageNum
- Number of page. Starts with 1.
public java.util.Collection project(StatementFragment fragment, java.lang.Class theInterface, int pageNum, int pageSize)
public java.util.Collection project(java.lang.String sql, Parameterizer parameterizer, java.lang.Class theInterface, int pageNum, int pageSize)
sql
- Select statement to executeparameterizer
- ParameterizertheInterface
- Interface to implementpageSize
- Maximum number of records to returnpageNum
- Number of page. Starts with 1.
public java.util.Collection project(StatementFragment fragment, java.lang.Class theInterface, java.lang.Object delegate, int pageNum, int pageSize)
public java.util.Collection project(java.lang.String sql, Parameterizer parameterizer, java.lang.Class theInterface, java.lang.Object delegate, int pageNum, int pageSize)
sql
- Select statement to executeparameterizer
- ParameterizertheInterface
- Interface to implementdelegate
- Object to delegate invocations which didn't match field getters/setterspageSize
- Maximum number of records to returnpageNum
- Number of page. Starts with 1.
public java.util.Collection project(StatementFragment fragment, Projector projector, java.util.Collection receiver) throws java.sql.SQLException
java.sql.SQLException
public java.util.Collection project(java.lang.String sql, Parameterizer parameterizer, Projector projector, java.util.Collection receiver) throws java.sql.SQLException
sql
- Select statement to executeparameterizer
- Parameterizerprojector
- Projector which instantiates objects. If it is null then
projector which projects row to collection will be usedreceiver
- Collection to put results to
java.sql.SQLException
public java.util.Collection project(StatementFragment fragment, java.lang.Class theInterface, java.util.Collection receiver) throws java.sql.SQLException
java.sql.SQLException
public java.util.Collection project(java.lang.String sql, Parameterizer parameterizer, java.lang.Class theInterface, java.util.Collection receiver) throws java.sql.SQLException
sql
- Select statement to executeparameterizer
- ParameterizertheInterface
- Interface to implementreceiver
- Collection to put results to
java.sql.SQLException
public java.util.Collection project(StatementFragment fragment, java.lang.Class theInterface, java.lang.Object delegate, java.util.Collection receiver) throws java.sql.SQLException
java.sql.SQLException
public java.util.Collection project(java.lang.String sql, Parameterizer parameterizer, java.lang.Class theInterface, java.lang.Object delegate, java.util.Collection receiver) throws java.sql.SQLException
sql
- Select statement to executeparameterizer
- ParameterizertheInterface
- Interface to implementdelegate
- Object to delegate invocations which didn't match field getters/setters.receiver
- Collection to put results to
java.sql.SQLException
public java.util.Collection project(StatementFragment fragment, Projector projector, java.util.Collection receiver, int pageSize, int pageNum) throws java.sql.SQLException
java.sql.SQLException
public java.util.Collection project(java.lang.String sql, Parameterizer parameterizer, Projector projector, java.util.Collection receiver, int pageSize, int pageNum) throws java.sql.SQLException
sql
- Select statement to executeparameterizer
- Parameterizerprojector
- Projector which instantiates objects. If it is null then
projector which projects row to collection will be used.receiver
- Collection to put results topageSize
- Maximum number of records to returnpageNum
- Number of page. Starts with 1.
java.sql.SQLException
public java.lang.Object projectSingleObject(StatementFragment fragment, Projector projector) throws java.sql.SQLException
java.sql.SQLException
public java.lang.Object projectSingleObject(java.lang.String sql, Parameterizer parameterizer, Projector projector) throws java.sql.SQLException
string
- parameterizer
- projector
- Projector. If it is null then projector which projects
row to collection will be used.
java.sql.SQLException
public void inject(StatementFragment fragment, java.util.Map columnMap, java.lang.Object target) throws java.sql.SQLException
java.sql.SQLException
public void inject(java.lang.String sql, Parameterizer parameterizer, java.util.Map columnMap, java.lang.Object target) throws java.sql.SQLException
string
- parameterizer
- target
- Object to inject values to
java.sql.SQLException
public java.lang.Object projectSingleObject(StatementFragment fragment, java.lang.Class theInterface) throws java.sql.SQLException
java.sql.SQLException
public java.lang.Object projectSingleObject(java.lang.String sql, Parameterizer parameterizer, java.lang.Class theInterface) throws java.sql.SQLException
sql
- parameterizer
-
java.sql.SQLException
public boolean projectSingleBoolean(StatementFragment fragment) throws java.sql.SQLException
java.sql.SQLException
public boolean projectSingleBoolean(java.lang.String sql, Parameterizer parameterizer) throws java.sql.SQLException
sql
- parameterizer
-
java.sql.SQLException
public byte projectSingleByte(StatementFragment fragment) throws java.sql.SQLException
java.sql.SQLException
public byte projectSingleByte(java.lang.String sql, Parameterizer parameterizer) throws java.sql.SQLException
sql
- parameterizer
-
java.sql.SQLException
public byte[] projectSingleBytes(StatementFragment fragment) throws java.sql.SQLException
java.sql.SQLException
public byte[] projectSingleBytes(java.lang.String sql, Parameterizer parameterizer) throws java.sql.SQLException
sql
- parameterizer
-
java.sql.SQLException
public int projectSingleInt(StatementFragment fragment) throws java.sql.SQLException
java.sql.SQLException
public int projectSingleInt(java.lang.String sql, Parameterizer parameterizer) throws java.sql.SQLException
sql
- parameterizer
-
java.sql.SQLException
public short projectSingleShort(StatementFragment fragment) throws java.sql.SQLException
java.sql.SQLException
public short projectSingleShort(java.lang.String sql, Parameterizer parameterizer) throws java.sql.SQLException
sql
- parameterizer
-
java.sql.SQLException
public double projectSingleDouble(StatementFragment fragment) throws java.sql.SQLException
java.sql.SQLException
public double projectSingleDouble(java.lang.String sql, Parameterizer parameterizer) throws java.sql.SQLException
sql
- parameterizer
-
java.sql.SQLException
public float projectSingleFloat(StatementFragment fragment) throws java.sql.SQLException
java.sql.SQLException
public float projectSingleFloat(java.lang.String sql, Parameterizer parameterizer) throws java.sql.SQLException
sql
- parameterizer
-
java.sql.SQLException
public long projectSingleLong(StatementFragment fragment) throws java.sql.SQLException
java.sql.SQLException
public long projectSingleLong(java.lang.String sql, Parameterizer parameterizer) throws java.sql.SQLException
sql
- parameterizer
-
java.sql.SQLException
public java.lang.String projectSingleString(StatementFragment fragment) throws java.sql.SQLException
java.sql.SQLException
public java.lang.String projectSingleString(java.lang.String sql, Parameterizer parameterizer) throws java.sql.SQLException
sql
- parameterizer
-
java.sql.SQLException
public java.lang.Object projectSingleObject(StatementFragment fragment) throws java.sql.SQLException
java.sql.SQLException
public java.lang.Object projectSingleObject(java.lang.String sql, Parameterizer parameterizer) throws java.sql.SQLException
sql
- parameterizer
-
java.sql.SQLException
public static java.lang.String findProjectSingleMethodName(java.lang.String className)
className
-
public char projectSingleChar(StatementFragment fragment) throws java.sql.SQLException
java.sql.SQLException
public char projectSingleChar(java.lang.String sql, Parameterizer parameterizer) throws java.sql.SQLException
sql
- parameterizer
-
java.sql.SQLException
public java.lang.Object projectSingleObject(StatementFragment fragment, java.lang.Class theInterface, java.lang.Object delegate) throws java.sql.SQLException
java.sql.SQLException
public java.lang.Object projectSingleObject(java.lang.String sql, Parameterizer parameterizer, java.lang.Class theInterface, java.lang.Object delegate) throws java.sql.SQLException
string
- parameterizer
-
java.sql.SQLException
public int nextPK(java.lang.String primaryKeysTable, java.lang.String keyName) throws java.sql.SQLException
primaryKeysTable
- Table holding primary keys counters. DDL:
CREATE TABLE table name ( KEY_NAME VARCHAR(50) NOT NULL , KEY_VALUE INTEGER DEFAULT '0' NOT NULL , PRIMARY KEY (KEY_NAME) );
keyName
- Key name
java.sql.SQLException
public int nextPK(java.sql.Connection con, java.lang.String primaryKeysTable, java.lang.String keyName) throws java.sql.SQLException
con
- primaryKeysTable
- keyName
-
java.sql.SQLException
public static void main(java.lang.String[] args) throws java.lang.Exception
java.lang.Exception
public TimeIntervalCategory getTimeIntervalCategory()
public void setTimeIntervalCategory(TimeIntervalCategory timeIntervalCategory)
public Context getNameMap()
public void executeTransaction(Transaction transaction) throws java.sql.SQLException
java.sql.SQLException
protected javax.sql.DataSource getDataSource()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |