/**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.service.domain.music.impl; import org.easyrec.model.core.ActionVO; import org.easyrec.model.core.ItemVO; import org.easyrec.model.core.RankedItemVO; import org.easyrec.model.core.RatingVO; import org.easyrec.model.core.transfer.TimeConstraintVO; import org.easyrec.service.core.ActionService; import org.easyrec.service.domain.TypeMappingService; import org.easyrec.service.domain.impl.DomainActionServiceImpl; import org.easyrec.service.domain.music.MusicActionService; import org.easyrec.store.dao.domain.TypedActionDAO; import java.util.List; /** * Implementation of the {@link org.easyrec.service.domain.music.MusicActionService} interface. * <p/> * <p><b>Company: </b> * SAT, Research Studios Austria</p> * <p/> * <p><b>Copyright: </b> * (c) 2007</p> * <p/> * <p><b>last modified:</b><br/> * $Author: dmann $<br/> * $Date: 2011-12-20 15:22:22 +0100 (Di, 20 Dez 2011) $<br/> * $Revision: 18685 $</p> * * @author Roman Cerny */ public class MusicActionServiceImpl extends DomainActionServiceImpl implements MusicActionService { // constructor public MusicActionServiceImpl(ActionService actionService, TypedActionDAO typedActionDAO, TypeMappingService typeMappingService) { super(actionService, typedActionDAO, typeMappingService); } /////////////////////////////////////////////////////////////////////////////////////////////// // interface "MusicActionService" implementation /////////////////////////////////////////////////////////////////////////////////////////////// // Actions /////////////////////////////////////////////////////////////////////////////////////////////// public void purchaseTrack(Integer tenant, Integer user, String sessionId, String ip, Integer trackId, String description) { purchaseItem(tenant, user, sessionId, ip, new ItemVO<Integer, String>(tenant, trackId, TypeMappingService.ITEM_TYPE_TRACK), description); } public void viewArtist(Integer tenant, Integer user, String sessionId, String ip, Integer artistId, String description) { viewItem(tenant, user, sessionId, ip, new ItemVO<Integer, String>(tenant, artistId, TypeMappingService.ITEM_TYPE_ARTIST), description); } public void viewGenre(Integer tenant, Integer user, String sessionId, String ip, Integer genreId, String description) { viewItem(tenant, user, sessionId, ip, new ItemVO<Integer, String>(tenant, genreId, TypeMappingService.ITEM_TYPE_GENRE_CLUSTER), description); } public void viewTrack(Integer tenant, Integer user, String sessionId, String ip, Integer trackId, String description) { viewItem(tenant, user, sessionId, ip, new ItemVO<Integer, String>(tenant, trackId, TypeMappingService.ITEM_TYPE_TRACK), description); } public void rateArtist(Integer tenant, Integer user, String sessionId, String ip, Integer artistId, Integer ratingValue, String description) { rateItem(tenant, user, sessionId, ip, new ItemVO<Integer, String>(tenant, artistId, TypeMappingService.ITEM_TYPE_ARTIST), ratingValue, description); } public void rateTrack(Integer tenant, Integer user, String sessionId, String ip, Integer trackId, Integer ratingValue, String description) { rateItem(tenant, user, sessionId, ip, new ItemVO<Integer, String>(tenant, trackId, TypeMappingService.ITEM_TYPE_TRACK), ratingValue, description); } public void searchArtist(Integer tenant, Integer user, String sessionId, String ip, Integer artistId, Boolean searchSucceeded, Integer numberOfFoundArtists, String description) { searchItem(tenant, user, sessionId, ip, new ItemVO<Integer, String>(tenant, artistId, TypeMappingService.ITEM_TYPE_ARTIST), searchSucceeded, numberOfFoundArtists, description); } public void searchTrack(Integer tenant, Integer user, String sessionId, String ip, Integer trackId, Boolean searchSucceeded, Integer numberOfFoundTracks, String description) { searchItem(tenant, user, sessionId, ip, new ItemVO<Integer, String>(tenant, trackId, TypeMappingService.ITEM_TYPE_TRACK), searchSucceeded, numberOfFoundTracks, description); } public void previewTrack(Integer tenant, Integer user, String sessionId, String ip, Integer trackId, String description) { insertAction(new ActionVO<Integer, String>(tenant, user, sessionId, ip, new ItemVO<Integer, String>(tenant, trackId, TypeMappingService.ITEM_TYPE_TRACK), TypeMappingService.ACTION_TYPE_PREVIEW, null, null, null, description)); } public void addTrackToPlaylist(Integer tenant, Integer user, String sessionId, String ip, Integer trackId, String description) { insertAction(new ActionVO<Integer, String>(tenant, user, sessionId, ip, new ItemVO<Integer, String>(tenant, trackId, TypeMappingService.ITEM_TYPE_TRACK), TypeMappingService.ACTION_TYPE_ADD_TO_PLAYLIST, null, null, null, description)); } /////////////////////////////////////////////////////////////////////////////////////////////// // Rankings /////////////////////////////////////////////////////////////////////////////////////////////// public List<RankedItemVO<Integer, String>> mostBoughtTracks(Integer tenant, Integer numberOfResults, TimeConstraintVO timeRange, Boolean sortDescending) { return mostBoughtItems(tenant, TypeMappingService.ITEM_TYPE_TRACK, null, numberOfResults, timeRange, sortDescending); } public List<RankedItemVO<Integer, String>> mostViewedArtists(Integer tenant, Integer numberOfResults, TimeConstraintVO timeRange, Boolean sortDescending) { return mostViewedItems(tenant, TypeMappingService.ITEM_TYPE_ARTIST, null, numberOfResults, timeRange, sortDescending); } public List<RankedItemVO<Integer, String>> mostViewedGenres(Integer tenant, Integer numberOfResults, TimeConstraintVO timeRange, Boolean sortDescending) { return mostViewedItems(tenant, TypeMappingService.ITEM_TYPE_GENRE_CLUSTER, null, numberOfResults, timeRange, sortDescending); } public List<RankedItemVO<Integer, String>> mostViewedTracks(Integer tenant, Integer numberOfResults, TimeConstraintVO timeRange, Boolean sortDescending) { return mostViewedItems(tenant, TypeMappingService.ITEM_TYPE_TRACK, null, numberOfResults, timeRange, sortDescending); } public List<RankedItemVO<Integer, String>> mostRatedArtists(Integer tenant, Integer numberOfResults, TimeConstraintVO timeRange, Boolean sortDescending) { return mostRatedItems(tenant, TypeMappingService.ITEM_TYPE_ARTIST, null, numberOfResults, timeRange, sortDescending); } public List<RankedItemVO<Integer, String>> mostRatedTracks(Integer tenant, Integer numberOfResults, TimeConstraintVO timeRange, Boolean sortDescending) { return mostRatedItems(tenant, TypeMappingService.ITEM_TYPE_TRACK, null, numberOfResults, timeRange, sortDescending); } public List<RankedItemVO<Integer, String>> mostSearchedArtists(Integer tenant, Integer numberOfResults, TimeConstraintVO timeRange, Boolean sortDescending) { return mostSearchedItems(tenant, TypeMappingService.ITEM_TYPE_ARTIST, null, numberOfResults, timeRange, sortDescending); } public List<RankedItemVO<Integer, String>> mostSearchedTracks(Integer tenant, Integer numberOfResults, TimeConstraintVO timeRange, Boolean sortDescending) { return mostSearchedItems(tenant, TypeMappingService.ITEM_TYPE_TRACK, null, numberOfResults, timeRange, sortDescending); } public List<RankedItemVO<Integer, String>> mostPreviewedTracks(Integer tenant, Integer numberOfResults, TimeConstraintVO timeRange, Boolean sortDescending) { return typedActionDAO.getRankedItemsByActionType(tenant, TypeMappingService.ACTION_TYPE_PREVIEW, TypeMappingService.ITEM_TYPE_TRACK, numberOfResults, timeRange, sortDescending); } public List<RankedItemVO<Integer, String>> mostAddedToPlaylistTracks(Integer tenant, Integer numberOfResults, TimeConstraintVO timeRange, Boolean sortDescending) { return typedActionDAO.getRankedItemsByActionType(tenant, TypeMappingService.ACTION_TYPE_ADD_TO_PLAYLIST, TypeMappingService.ITEM_TYPE_TRACK, numberOfResults, timeRange, sortDescending); } /////////////////////////////////////////////////////////////////////////////////////////////// // Ratings /////////////////////////////////////////////////////////////////////////////////////////////// public List<RatingVO<Integer, String>> artistRatings(Integer tenant, Integer user, String sessionId, Integer numberOfResults, TimeConstraintVO timeRange) { return itemRatings(tenant, user, sessionId, TypeMappingService.ITEM_TYPE_ARTIST, numberOfResults, timeRange); } public List<RatingVO<Integer, String>> badArtistRatings(Integer tenant, Integer user, String sessionId, Integer numberOfResults, TimeConstraintVO timeRange) { return badItemRatings(tenant, user, sessionId, TypeMappingService.ITEM_TYPE_ARTIST, numberOfResults, timeRange); } public List<RatingVO<Integer, String>> goodArtistRatings(Integer tenant, Integer user, String sessionId, Integer numberOfResults, TimeConstraintVO timeRange) { return goodItemRatings(tenant, user, sessionId, TypeMappingService.ITEM_TYPE_ARTIST, numberOfResults, timeRange); } public List<RatingVO<Integer, String>> lastGoodArtistRatings(Integer tenant, Integer user, String sessionId, Integer numberOfResults) { return lastGoodItemRatings(tenant, user, sessionId, TypeMappingService.ITEM_TYPE_ARTIST, numberOfResults); } public List<RatingVO<Integer, String>> trackRatings(Integer tenant, Integer user, String sessionId, Integer numberOfResults, TimeConstraintVO timeRange) { return itemRatings(tenant, user, sessionId, TypeMappingService.ITEM_TYPE_TRACK, numberOfResults, timeRange); } public List<RatingVO<Integer, String>> badTrackRatings(Integer tenant, Integer user, String sessionId, Integer numberOfResults, TimeConstraintVO timeRange) { return badItemRatings(tenant, user, sessionId, TypeMappingService.ITEM_TYPE_TRACK, numberOfResults, timeRange); } public List<RatingVO<Integer, String>> goodTrackRatings(Integer tenant, Integer user, String sessionId, Integer numberOfResults, TimeConstraintVO timeRange) { return goodItemRatings(tenant, user, sessionId, TypeMappingService.ITEM_TYPE_TRACK, numberOfResults, timeRange); } public List<RatingVO<Integer, String>> lastGoodTrackRatings(Integer tenant, Integer user, String sessionId, Integer numberOfResults) { return lastGoodItemRatings(tenant, user, sessionId, TypeMappingService.ITEM_TYPE_TRACK, numberOfResults); } }