/* This file is part of FutureSonic. FutureSonic 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. FutureSonic 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 FutureSonic. If not, see <http://www.gnu.org/licenses/>. Copyright 2013 (C) Madevil */ package net.sourceforge.subsonic.dao; import net.sourceforge.subsonic.Logger; import net.sourceforge.subsonic.domain.LastFMArtist; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; /** * Provides database services for artists. * * @author Sindre Mehus */ public class LastFMArtistDao extends AbstractDao { private static final Logger LOG = Logger.getLogger(LastFMArtistDao.class); private static final String COLUMNS = "id, artistname, mbid, since, genre, url, fanart, coverart1, coverart2, coverart3, coverart4, coverart5, toptag, topalbum, bio, summary, play_count"; private final RowMapper rowMapper = new LastFMArtistMapper(); public List<LastFMArtist> getAllArtists() { return query("select " + COLUMNS + " from lastfm_artist order by name", rowMapper); } public LastFMArtist getArtist(String artistName) { return queryOne("select " + COLUMNS + " from lastfm_artist where lower(artistName)=?", rowMapper, artistName.toLowerCase()); } public LastFMArtist getArtist(int mbid) { return queryOne("select " + COLUMNS + " from lastfm_artist where mbid=?", rowMapper, mbid); } public void CleanupArtist() { update("DELETE FROM lastfm_artist where mbid=''"); } public synchronized void createOrUpdateLastFMArtist(LastFMArtist lastFMArtist) { String sql ="update lastfm_artist set " + "artistname=?," + "mbid=?," + "since=?," + "genre=?," + "url=?," + "fanart=?," + "coverart1=?, " + "coverart2=?, " + "coverart3=?, " + "coverart4=?, " + "coverart5=?, " + "toptag=?, " + "topalbum=?, " + "bio=?, " + "summary=?, " + "play_count=? " + "where artistname=?"; int n = update(sql, lastFMArtist.getArtistname(), lastFMArtist.getMbid(), lastFMArtist.getSince(), lastFMArtist.getGenre(), lastFMArtist.getUrl(), lastFMArtist.getFanart(), lastFMArtist.getCoverart1(), lastFMArtist.getCoverart2(), lastFMArtist.getCoverart3(), lastFMArtist.getCoverart4(), lastFMArtist.getCoverart5(), lastFMArtist.getToptag(), lastFMArtist.getTopalbum(), lastFMArtist.getBio(), lastFMArtist.getSummary(), lastFMArtist.getPlayCount(), lastFMArtist.getArtistname()); if (n == 0) { update("insert into lastfm_artist (" + COLUMNS + ") values (" + questionMarks(COLUMNS) + ")", null, lastFMArtist.getArtistname(), lastFMArtist.getMbid(), lastFMArtist.getSince(), lastFMArtist.getGenre(), lastFMArtist.getUrl(), lastFMArtist.getFanart(), lastFMArtist.getCoverart1(), lastFMArtist.getCoverart2(), lastFMArtist.getCoverart3(), lastFMArtist.getCoverart4(), lastFMArtist.getCoverart5(), lastFMArtist.getToptag(), lastFMArtist.getTopalbum(), lastFMArtist.getBio(), lastFMArtist.getSummary(), lastFMArtist.getPlayCount()); } // int id = queryForInt("select id from lastfm_artist where artistname=?", null, lastFMArtist.getArtistname()); // lastFMArtist.setId(id); } private static class LastFMArtistMapper implements ParameterizedRowMapper<LastFMArtist> { public LastFMArtist mapRow(ResultSet rs, int rowNum) throws SQLException { return new LastFMArtist( rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9), rs.getString(10), rs.getString(11), rs.getString(12), rs.getString(13), rs.getString(14), rs.getString(15), rs.getString(16), rs.getInt(17)); } } }