package org.easyrec.store.dao.web.impl;
import org.easyrec.store.dao.web.BackTrackingDAO;
import org.springframework.jdbc.core.PreparedStatementCreatorFactory;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import javax.sql.DataSource;
import java.sql.Types;
/**
* The Class implements the BacktrackingDAO
* <p/>
* <p>
* <b>Company: </b> SAT, Research Studios Austria
* </p>
* <p/>
* <p>
* <b>Copyright: </b> (c) 2007
* <p/>
* <b>last modified:</b><br/> $Author: phlavac $<br/> $Date: 2008-07-17
* 20:00:46 +0200 (Do, 17 Jul 2008) $<br/> $Revision: 15249 $
* </p>
*
* @author phlavac
*/
public class BackTrackingDAOMysqlImpl extends JdbcDaoSupport implements BackTrackingDAO {
private static final String SQL_ADD_ITEM;
private static final String SQL_COUNT_ITEM;
private static final int[] ARGTYPES_ADD_ITEM;
private static final PreparedStatementCreatorFactory PS_ADD_ITEM;
static {
SQL_ADD_ITEM = new StringBuilder().append(" INSERT INTO backtracking ")
.append(" (userId, tenantId, itemFromId, itemToId, assocType, timestamp) VALUES ")
.append(" (?,?,?,?,?,now()) ").toString();
SQL_COUNT_ITEM = new StringBuilder().append(" SELECT count(1) FROM backtracking WHERE")
.append(" tenantId = ? AND itemFromId = ? and itemToId = ? and assocType = ? ").toString();
ARGTYPES_ADD_ITEM = new int[]{Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER};
PS_ADD_ITEM = new PreparedStatementCreatorFactory(SQL_ADD_ITEM, ARGTYPES_ADD_ITEM);
PS_ADD_ITEM.setReturnGeneratedKeys(true);
}
public BackTrackingDAOMysqlImpl() {}
public BackTrackingDAOMysqlImpl(DataSource dataSource) {
setDataSource(dataSource);
}
/*
* (non-Javadoc)
*
* @see at.researchstudio.sat.recommender.remote.store.dao.ItemDAO#saveItem(java.lang.String,
* java.lang.String, int, java.lang.String)
*/
public void track(Integer userId, Integer tenantId, Integer itemFromId, Integer itemToId, Integer assocType) {
Object[] args = {userId, tenantId, itemFromId, itemToId, assocType};
try {
getJdbcTemplate().update(PS_ADD_ITEM.newPreparedStatementCreator(args));
} catch (Exception e) {
if (logger.isDebugEnabled()) {
logger.debug(e);
}
}
}
/*
* (non-Javadoc)
*
* @see at.researchstudio.sat.recommender.remote.store.dao.ItemDAO#saveItem(java.lang.String,
* java.lang.String, int, java.lang.String)
*/
public Integer getItemCount(Integer tenantId, Integer itemFromId, Integer itemToId, Integer assocType) {
try {
return getJdbcTemplate()
.queryForInt(SQL_COUNT_ITEM, new Object[]{tenantId, itemFromId, itemToId, assocType},
new int[]{Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER});
} catch (Exception e) {
if (logger.isDebugEnabled()) {
logger.debug(e);
}
}
return null;
}
/**
* Clear tenant specific backtracking data.
*
* @param tenantId
*/
public void clear(Integer tenantId) {
try {
getJdbcTemplate().update("DELETE FROM backtracking WHERE tenantId = ?", new Object[]{tenantId});
} catch (Exception e) {
if (logger.isDebugEnabled()) {
logger.debug(e);
}
}
}
}