|
2.17.2: 2011-06-17 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object net.sf.basedb.core.AbstractBatcher net.sf.basedb.core.BasicBatcher<D>
public abstract class BasicBatcher<D extends BatchableData>
This is an abstract class for batching functionallity.
Add all objects and then call flush
to
send the batch to the database. BasicBatcher
can
also have a limit on the batch size, when the batch is
full BasicBatcher
will automatically call
flush
to send the current batch to
the database.
Field Summary | |
---|---|
private Class<D> |
dataClass
The class of data objects accepted by this batcher. |
protected static boolean |
debugEnabled
So we don't always have to call logParam.debug() |
private int |
deleteCount
|
private String |
deleteSql
|
private PreparedStatement |
deleteStatement
|
private String |
entityName
The entity name as known to Hibernate. |
private String |
idPropertyName
The name of the ID property. |
private int |
insertCount
|
private int |
insertCountTotal
Counts the number of inserts done by the batcher. |
private List<BatchedPropertyInfo> |
insertPropertyOrder
|
private String |
insertSql
|
private PreparedStatement |
insertStatement
|
protected static Logger |
logParam
Log all parameter bindings to prepared statement. |
private org.hibernate.metadata.ClassMetadata |
metaData
Hibernate metadata for the batchable object. |
private int |
permissions
The logged in user's permission to this item. |
private org.hibernate.mapping.Table |
table
The table where items of this type are stored. |
private int |
totalCount
|
private int |
updateCount
|
private List<BatchedPropertyInfo> |
updatePropertyOrder
|
private String |
updateSql
|
private PreparedStatement |
updateStatement
|
Fields inherited from class net.sf.basedb.core.AbstractBatcher |
---|
debugSqlEnabled, logSql |
Constructor Summary | |
---|---|
BasicBatcher(org.hibernate.Session session,
Class<D> dataClass,
String entityName)
Constructor that initiate everything. |
Method Summary | |
---|---|
private void |
addToBatch(D data,
PreparedStatement ps,
List<BatchedPropertyInfo> propertyOrder)
Add the data object to the batch represented by the prepared statement |
void |
checkPermission(Permission permission)
Checks if the logged in user has the specified permission on this item. |
void |
delete(D data)
Delete a data object. |
void |
delete(int id)
Delete a data object by id. |
void |
flush()
Flush the batcher and send all remaining items in memory to the database. |
void |
flushDelete()
Flush the SQL delete command buffer. |
void |
flushInsert()
Flush the SQL insert command buffer. |
void |
flushUpdate()
Flush the SQL insert command buffer. |
Set<Permission> |
getPermissions()
Get the logged in user's permissions on the item. |
(package private) PluginPermission |
getPluginPermissions()
|
(package private) Object |
getPropertyValue(D data,
String propertyName)
Get the value of a protected property value on a data object using Hibernate built-in reflection methods. |
int |
getTotalInsertCount()
Gets the total number of inserts done by the batcher |
abstract Item |
getType()
Get the type of item supported by the batcher. |
boolean |
hasPermission(Permission permission)
Checks if the logged in user has the specified permission on this item. |
(package private) void |
initPermissions(int granted,
int denied)
Initialise the logged in user's permissions for this batcher. |
void |
insert(D data)
Insert a data object. |
(package private) void |
onBeforeClose()
Close all open SQL statements. |
(package private) void |
onBeforeCommit(D data,
Transactional.Action action)
Called after the object has been validated just before the SQL is added to the batch queue. |
(package private) void |
setPropertyValue(D data,
String propertyName,
Object value)
Set a protected property value on a data object using Hibernate built-in reflection methods. |
void |
update(D data)
Update a data object. |
abstract void |
validate(D data)
Validate the data, since no validation is possible in set methods of the data object. |
Methods inherited from class net.sf.basedb.core.AbstractBatcher |
---|
analyzeTable, close, getBatchSize, getDbControl, getSessionControl, isClosed, setBatchSize, setDbControl, updateLastAccess |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final Logger logParam
protected static final boolean debugEnabled
private int insertCountTotal
private final Class<D extends BatchableData> dataClass
private final String entityName
private int permissions
initPermissions(int, int)
method.
private final org.hibernate.metadata.ClassMetadata metaData
private final org.hibernate.mapping.Table table
private final String idPropertyName
private final PreparedStatement insertStatement
private final PreparedStatement updateStatement
private final PreparedStatement deleteStatement
private final String insertSql
private final String updateSql
private final String deleteSql
private final List<BatchedPropertyInfo> insertPropertyOrder
private final List<BatchedPropertyInfo> updatePropertyOrder
private int insertCount
private int updateCount
private int deleteCount
private int totalCount
Constructor Detail |
---|
BasicBatcher(org.hibernate.Session session, Class<D> dataClass, String entityName) throws BaseException
dataClass
- The class of the data objects that are accepted by this batcherentityName
- The entity name of the data as known by Hibernate, use null
to use the dataClass as the entity name
BaseException
- If there is an errorMethod Detail |
---|
public final boolean hasPermission(Permission permission)
Subclasses that needs to check other keys, should override the initPermissions(int,int)
method instead.
hasPermission
in interface AccessControlled
permission
- A value from the Permission
class
TRUE
if the user has the permission,
FALSE
otherwisepublic final void checkPermission(Permission permission) throws PermissionDeniedException
PermissionDeniedException
is thrown.
checkPermission
in interface AccessControlled
permission
- A value from the Permission
class
PermissionDeniedException
- If the logged in user doesn't
have the requested permissionpublic final Set<Permission> getPermissions()
AccessControlled
getPermissions
in interface AccessControlled
public void flush() throws BaseException
Batcher
flush
in interface Batcher
BaseException
- If there is an errorBatcher.close()
void onBeforeClose() throws BaseException
onBeforeClose
in class AbstractBatcher
BaseException
void initPermissions(int granted, int denied) throws BaseException
Subclasses that needs to check other keys or properties, such
as the RawDataBatcher
should override
this method. The subclass should calculate additional permissions
to be granted or denied, and combine those with whatever was passed
as parameters. Use the binary OR operator ( | ) to combine
the permissions. Finally the subclass must call
super.initPermissions(granted, denied)
.
granted
- Permissions that have been granted by the subclassdenied
- Permissions that have been denied by the subclass
BaseException
- If the permissions couldn't be initialisedPluginPermission getPluginPermissions()
public void insert(D data) throws InvalidDataException, PermissionDeniedException, BaseException
data
- Data object to be inserted
InvalidDataException
- If the data is null or it doesn't validate
against the validate(BatchableData)
method
PermissionDeniedException
- If the logged in user doesn't
have create permission
BaseException
- If there is another errorpublic void update(D data) throws InvalidDataException, PermissionDeniedException, BaseException
data
- Data object to be updated
InvalidDataException
- If the data is null or it doesn't validate
against the validate(BatchableData)
method
PermissionDeniedException
- If the logged in user doesn't
have write permission
BaseException
- If there is another errorpublic void delete(D data) throws InvalidDataException, PermissionDeniedException, BaseException
data
- Data object to be deleted
InvalidDataException
- If the data is null
PermissionDeniedException
- If the logged in user doesn't
have delete permission
BaseException
- If there is another errorpublic void delete(int id) throws PermissionDeniedException, BaseException
id
- Id of the object to be deleted
PermissionDeniedException
- If the logged in user doesn't
have delete permission
BaseException
- If there is another errorpublic void flushInsert() throws BaseException
BaseException
- Thrown if there is a database error.public void flushUpdate() throws BaseException
BaseException
- Thrown if there is a database error.public void flushDelete() throws BaseException
BaseException
- Thrown if there is a database error.private void addToBatch(D data, PreparedStatement ps, List<BatchedPropertyInfo> propertyOrder) throws DatabaseException
data
- Data object to get property values fromps
- The prepared statement to add the data object topropertyOrder
- The property names of the parameter order in the prepared statement
DatabaseException
- If there is an errorvoid setPropertyValue(D data, String propertyName, Object value)
data
- The data object to set the property onpropertyName
- The name of the property, ie. same
as getXxx
method name minus the get
partvalue
- The value to give to the propertyObject getPropertyValue(D data, String propertyName)
data
- The data object to set the property onpropertyName
- The name of the property, ie. same
as getXxx
method name minus the get
part
void onBeforeCommit(D data, Transactional.Action action) throws BaseException
data
- Object to updateaction
- The action
BaseException
public abstract void validate(D data) throws InvalidDataException
data
- Data object to validate
InvalidDataException
- If the data object is invalidpublic abstract Item getType()
Item
enumeration.
Item
public int getTotalInsertCount()
|
2.17.2: 2011-06-17 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |