/* * Copyright 2010 Research Studios Austria Forschungsgesellschaft mBH * * This file is part of easyrec. * * easyrec is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * easyrec is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with easyrec. If not, see <http://www.gnu.org/licenses/>. */ package org.easyrec.store.dao.web.impl; import org.easyrec.store.dao.impl.BasicDAOMysqlImpl; import org.easyrec.store.dao.web.AssocDAO; import org.springframework.jdbc.core.PreparedStatementCreatorFactory; import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.jdbc.support.KeyHolder; import javax.sql.DataSource; import java.sql.Types; /** * The Class implements the ItemDAO. * <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: 16095 $ * </p> * * @author <AUTHOR> */ public class AssocDAOMysqlImpl extends BasicDAOMysqlImpl implements AssocDAO { private static final String SQL_ADD_RULE; private static final String SQL_ACTIVATE_RULE; private static final String SQL_DEACTIVATE_RULE; private static final int[] ARGTYPES_ADD_RULE; private static final int[] ARGTYPES_SETSTATUS_RULE; private static final PreparedStatementCreatorFactory PS_ADD_RULE; static { SQL_ADD_RULE = new StringBuilder().append(" INSERT INTO itemassoc").append(" (TENANTID, ") .append(" ITEMFROMID, ITEMFROMTYPEID, ITEMTOID, ITEMTOTYPEID, ") .append(" ASSOCTYPEID, ASSOCVALUE, ").append(" sourceTypeId, sourceInfo, ") .append(" viewTypeId, active, ").append(" changeDate ").append(" ) VALUES ") .append(" (?,?,?,?,?,?,?,?,?,?,?,?) ").toString(); //.append(" ON DUPLICATE KEY UPDATE ") //.append(" DESCRIPTION = ?, ") //.append(" URL = ? "); SQL_ACTIVATE_RULE = new StringBuilder().append(" UPDATE itemassoc ").append(" SET active = 1 ") .append(" WHERE TENANTID = ? AND ").append(" ITEMFROMID = ? AND ") .append(" ITEMFROMTYPEID = ? AND ").append(" ITEMTOID = ? AND ") .append(" ITEMTOTYPEID = ? AND ").append(" ITEMID = ? AND ") .append(" ITEMTYPE = ? ").toString(); SQL_DEACTIVATE_RULE = new StringBuilder().append(" UPDATE itemassoc ").append(" SET active = 0 ") .append(" WHERE TENANTID = ? AND ").append(" ITEMFROMID = ? AND ") .append(" ITEMFROMTYPEID = ? ").toString(); ARGTYPES_ADD_RULE = new int[]{Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR}; ARGTYPES_SETSTATUS_RULE = new int[]{Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR}; PS_ADD_RULE = new PreparedStatementCreatorFactory(SQL_ADD_RULE, ARGTYPES_ADD_RULE); PS_ADD_RULE.setReturnGeneratedKeys(true); } public AssocDAOMysqlImpl(DataSource dataSource) { super(dataSource); this.setTableId("id"); this.setTableName("itemassoc"); } /* * (non-Javadoc) * * @see at.researchstudio.sat.recommender.remote.store.dao.ItemDAO#saveItem(java.lang.String, * java.lang.String, int, java.lang.String) */ public void add(Integer tenantId, Integer itemFromId, Integer itemFromType, Integer itemToId, Integer itemToTypeId, Integer assocType, Float assocValue, String url, String imageurl) { Object[] args = {tenantId, itemFromId, itemFromType, itemToId, itemToTypeId, imageurl}; KeyHolder keyHolder = new GeneratedKeyHolder(); try { int rowsAffected = getJdbcTemplate().update(PS_ADD_RULE.newPreparedStatementCreator(args), keyHolder); } catch (Exception e) { logger.debug(e); } } /* * (non-Javadoc) * @see at.researchstudio.sat.recommender.remote.store.dao.ItemDAO#activate(java.lang.String, java.lang.String, java.lang.String) */ public void activate(Integer tenantId, Integer itemFromId, Integer itemToId) { Object[] args = {tenantId, itemFromId, itemToId}; try { getJdbcTemplate().update(SQL_ACTIVATE_RULE, args, ARGTYPES_SETSTATUS_RULE); } catch (Exception e) { logger.debug(e); } } /* * (non-Javadoc) * @see at.researchstudio.sat.recommender.remote.store.dao.ItemDAO#deactivate(java.lang.String, java.lang.String, java.lang.String) */ public void deactivate(Integer tenantId, Integer itemFromId, Integer itemToId) { Object[] args = {tenantId, itemFromId, itemToId}; try { getJdbcTemplate().update(SQL_DEACTIVATE_RULE, args, ARGTYPES_SETSTATUS_RULE); } catch (Exception e) { logger.debug(e); } } }