Search in sources :

Example 21 with Track

use of com.github.hakko.musiccabinet.domain.model.music.Track in project musiccabinet by hakko.

the class LibraryBrowserServiceTest method findsTrack.

@Test
public void findsTrack() throws Exception {
    scannerService.add(set(aretha));
    Artist artist = new Artist("Aretha Franklin");
    int artistId = musicDao.getArtistId(artist);
    List<Album> albums = browserService.getAlbums(artistId, true);
    assertAlbums(albums, artist, UNKNOWN_ALBUM);
    List<Track> tracks = browserService.getTracks(albums.get(0).getTrackIds());
    assertTracks(tracks, Arrays.asList(new Track("Aretha Franklin", "Bridge Over Troubled Water")));
}
Also used : Artist(com.github.hakko.musiccabinet.domain.model.music.Artist) Album(com.github.hakko.musiccabinet.domain.model.music.Album) Track(com.github.hakko.musiccabinet.domain.model.music.Track) Test(org.junit.Test)

Example 22 with Track

use of com.github.hakko.musiccabinet.domain.model.music.Track in project musiccabinet by hakko.

the class JdbcNameSearchDao method getTracks.

@Override
public NameSearchResult<Track> getTracks(String userQuery, int offset, int limit) {
    String sql = "select mart.id, mart.artist_name_capitalization," + " malb.id, malb.album_name_capitalization," + " lt.id, mt.track_name_capitalization from library.track lt" + " inner join music.track mt on lt.track_id = mt.id" + " inner join music.album malb on lt.album_id = malb.id" + " inner join music.artist mart on mt.artist_id = mart.id" + " where lt.track_name_search like ?" + " order by mt.track_name" + " offset ? limit ?";
    List<Track> albums = jdbcTemplate.query(sql, new Object[] { getNameQuery(userQuery), offset, limit }, new RowMapper<Track>() {

        @Override
        public Track mapRow(ResultSet rs, int rowNum) throws SQLException {
            MetaData metaData = new MetaData();
            metaData.setArtistId(rs.getInt(1));
            metaData.setArtist(rs.getString(2));
            metaData.setAlbumId(rs.getInt(3));
            metaData.setAlbum(rs.getString(4));
            return new Track(rs.getInt(5), rs.getString(6), metaData);
        }
    });
    return new NameSearchResult<>(albums, offset);
}
Also used : NameSearchResult(com.github.hakko.musiccabinet.domain.model.aggr.NameSearchResult) SQLException(java.sql.SQLException) MetaData(com.github.hakko.musiccabinet.domain.model.library.MetaData) ResultSet(java.sql.ResultSet) Track(com.github.hakko.musiccabinet.domain.model.music.Track)

Example 23 with Track

use of com.github.hakko.musiccabinet.domain.model.music.Track in project musiccabinet by hakko.

the class JdbcTrackRelationDao method getTrackRelations.

@Override
public List<TrackRelation> getTrackRelations(Track sourceTrack) {
    final int sourceTrackId = jdbcTemplate.queryForInt("select * from music.get_track_id(?,?)", sourceTrack.getArtist().getName(), sourceTrack.getName());
    String sql = "select artist_name_capitalization, track_name_capitalization, weight" + " from music.trackrelation" + " inner join music.track on music.trackrelation.target_id = music.track.id" + " inner join music.artist on music.track.artist_id = music.artist.id" + " where music.trackrelation.source_id = ?";
    List<TrackRelation> trackRelations = jdbcTemplate.query(sql, new Object[] { sourceTrackId }, new RowMapper<TrackRelation>() {

        @Override
        public TrackRelation mapRow(ResultSet rs, int rowNum) throws SQLException {
            String artistName = rs.getString(1);
            String trackName = rs.getString(2);
            float weight = rs.getFloat(3);
            return new TrackRelation(new Track(artistName, trackName), weight);
        }
    });
    return trackRelations;
}
Also used : SQLException(java.sql.SQLException) TrackRelation(com.github.hakko.musiccabinet.domain.model.music.TrackRelation) ResultSet(java.sql.ResultSet) Track(com.github.hakko.musiccabinet.domain.model.music.Track)

Example 24 with Track

use of com.github.hakko.musiccabinet.domain.model.music.Track in project musiccabinet by hakko.

the class JdbcUserLovedTracksDao method batchInsert.

private void batchInsert(String lastFmUsername, List<Track> lovedTracks) {
    String sql = "insert into music.lovedtrack_import" + " (lastfm_user, artist_name, track_name) values (?,?,?)";
    BatchSqlUpdate batchUpdate = new BatchSqlUpdate(jdbcTemplate.getDataSource(), sql);
    batchUpdate.setBatchSize(1000);
    batchUpdate.declareParameter(new SqlParameter("lastfm_user", Types.VARCHAR));
    batchUpdate.declareParameter(new SqlParameter("artist_name", Types.VARCHAR));
    batchUpdate.declareParameter(new SqlParameter("track_name", Types.VARCHAR));
    for (Track track : lovedTracks) {
        batchUpdate.update(new Object[] { lastFmUsername, track.getArtist().getName(), track.getName() });
    }
    batchUpdate.flush();
}
Also used : SqlParameter(org.springframework.jdbc.core.SqlParameter) BatchSqlUpdate(org.springframework.jdbc.object.BatchSqlUpdate) Track(com.github.hakko.musiccabinet.domain.model.music.Track) UserStarredTrack(com.github.hakko.musiccabinet.domain.model.aggr.UserStarredTrack)

Example 25 with Track

use of com.github.hakko.musiccabinet.domain.model.music.Track in project musiccabinet by hakko.

the class TrackRowMapper method mapRow.

@Override
public Track mapRow(ResultSet rs, int rowNum) throws SQLException {
    Track track = new Track();
    track.setId(rs.getInt(1));
    track.setName(rs.getString(2));
    return track;
}
Also used : Track(com.github.hakko.musiccabinet.domain.model.music.Track)

Aggregations

Track (com.github.hakko.musiccabinet.domain.model.music.Track)40 Test (org.junit.Test)23 LastFmUser (com.github.hakko.musiccabinet.domain.model.library.LastFmUser)9 Artist (com.github.hakko.musiccabinet.domain.model.music.Artist)9 UserStarredTrack (com.github.hakko.musiccabinet.domain.model.aggr.UserStarredTrack)6 File (com.github.hakko.musiccabinet.domain.model.library.File)5 Album (com.github.hakko.musiccabinet.domain.model.music.Album)5 ResourceUtil (com.github.hakko.musiccabinet.util.ResourceUtil)5 UserLovedTracks (com.github.hakko.musiccabinet.domain.model.aggr.UserLovedTracks)4 WebserviceInvocation (com.github.hakko.musiccabinet.domain.model.library.WebserviceInvocation)4 ApplicationException (com.github.hakko.musiccabinet.exception.ApplicationException)4 UnittestLibraryUtil.getFile (com.github.hakko.musiccabinet.util.UnittestLibraryUtil.getFile)4 ArrayList (java.util.ArrayList)4 NameValuePair (org.apache.http.NameValuePair)4 Before (org.junit.Before)4 MetaData (com.github.hakko.musiccabinet.domain.model.library.MetaData)3 Calltype (com.github.hakko.musiccabinet.domain.model.library.WebserviceInvocation.Calltype)3 UserLovedTracksParserImpl (com.github.hakko.musiccabinet.parser.lastfm.UserLovedTracksParserImpl)3 UnittestLibraryUtil.submitFile (com.github.hakko.musiccabinet.util.UnittestLibraryUtil.submitFile)3 WSResponse (com.github.hakko.musiccabinet.ws.lastfm.WSResponse)3