Search in sources :

Example 16 with File

use of com.github.hakko.musiccabinet.domain.model.library.File in project musiccabinet by hakko.

the class JdbcLibraryDaoTest method storesFiles.

@Test
public void storesFiles() {
    String d1 = "/d1", d2 = "/d1/d2";
    File f1 = getFile(d1, "f1");
    File f2a = getFile(d2, "f2a");
    File f2b = getFile(d2, "f2b");
    additionDao.addSubdirectories(null, set(d1));
    additionDao.addSubdirectories(d1, set(d2));
    additionDao.addFiles(d1, set(f1));
    additionDao.addFiles(d2, set(f2a, f2b));
    additionDao.updateLibrary();
    Assert.assertEquals(set(f1), presenceDao.getFiles(d1));
    Assert.assertEquals(set(f2a, f2b), presenceDao.getFiles(d2));
}
Also used : UnittestLibraryUtil.getFile(com.github.hakko.musiccabinet.util.UnittestLibraryUtil.getFile) File(com.github.hakko.musiccabinet.domain.model.library.File) Test(org.junit.Test)

Example 17 with File

use of com.github.hakko.musiccabinet.domain.model.library.File in project musiccabinet by hakko.

the class DirectoryBrowserService method getContent.

private DirectoryContent getContent(Directory dir) {
    Set<File> foundFiles = new HashSet<>();
    Set<String> foundSubDirs = new HashSet<>();
    DirectoryContent content = new DirectoryContent(dir.getPath(), foundSubDirs, foundFiles);
    Path path = Paths.get(dir.getPath());
    try (DirectoryStream<Path> stream = Files.newDirectoryStream(path)) {
        for (Path file : stream) {
            BasicFileAttributeView view = getFileAttributeView(file, BasicFileAttributeView.class);
            BasicFileAttributes attr = view.readAttributes();
            if (attr.isDirectory()) {
                foundSubDirs.add(file.toAbsolutePath().toString());
            } else if (attr.isRegularFile()) {
                foundFiles.add(new File(file, attr));
            }
        }
    } catch (IOException | DirectoryIteratorException e) {
        throw new ApplicationContextException("Couldn't read " + dir.getPath(), e);
    }
    return content;
}
Also used : Path(java.nio.file.Path) DirectoryIteratorException(java.nio.file.DirectoryIteratorException) IOException(java.io.IOException) ApplicationContextException(org.springframework.context.ApplicationContextException) BasicFileAttributeView(java.nio.file.attribute.BasicFileAttributeView) DirectoryContent(com.github.hakko.musiccabinet.domain.model.aggr.DirectoryContent) File(com.github.hakko.musiccabinet.domain.model.library.File) BasicFileAttributes(java.nio.file.attribute.BasicFileAttributes) HashSet(java.util.HashSet)

Example 18 with File

use of com.github.hakko.musiccabinet.domain.model.library.File in project musiccabinet by hakko.

the class LibraryMetadataService method receive.

@SuppressWarnings("unchecked")
@Override
public void receive() {
    Message<DirectoryContent> message;
    progress.reset();
    progress.setFinishedOperations(0);
    while (true) {
        message = (Message<DirectoryContent>) libraryMetadataChannel.receive();
        if (message == null || message.equals(FINISHED_MESSAGE)) {
            libraryAdditionChannel.send(message);
            break;
        } else {
            for (File file : message.getPayload().getFiles()) {
                audioTagService.updateMetadata(file);
                progress.addFinishedOperation();
            }
            libraryAdditionChannel.send(message);
        }
    }
}
Also used : DirectoryContent(com.github.hakko.musiccabinet.domain.model.aggr.DirectoryContent) File(com.github.hakko.musiccabinet.domain.model.library.File)

Example 19 with File

use of com.github.hakko.musiccabinet.domain.model.library.File in project musiccabinet by hakko.

the class ArtistTopTracksServiceTest method clearLibraryAndAddCherTrack.

private void clearLibraryAndAddCherTrack() throws ApplicationException {
    PostgreSQLUtil.truncateTables(artistTopTracksDao);
    File file = getFile(artistName, null, "Believe");
    UnittestLibraryUtil.submitFile(additionDao, file);
}
Also used : UnittestLibraryUtil.getFile(com.github.hakko.musiccabinet.util.UnittestLibraryUtil.getFile) File(com.github.hakko.musiccabinet.domain.model.library.File)

Example 20 with File

use of com.github.hakko.musiccabinet.domain.model.library.File in project musiccabinet by hakko.

the class UserLovedTracksServiceTest method updatesStarredTracksWhenImportIsOnlyAllowedForOneUser.

/*
	 * User story: user1 has starred track2, user2 has starred track3 & track4.
	 * When importing loved tracks, user2 is unavailable and user1 has loved track1.
	 * Expected outcome: afterwards, user1 has starred track1 & 2 and user2 track3 & 4.
	 */
@Test
public void updatesStarredTracksWhenImportIsOnlyAllowedForOneUser() throws ApplicationException {
    lastFmDao.createOrUpdateLastFmUser(new LastFmUser(USER1));
    lastFmDao.createOrUpdateLastFmUser(new LastFmUser(USER2));
    LastFmUser user1 = lastFmDao.getLastFmUser(USER1), user2 = lastFmDao.getLastFmUser(USER2);
    Track track1 = new Track("Frank Ocean", "Lost"), track2 = new Track("Kate Bush", "Cloudbusting"), track3 = new Track("Adele", "Skyfall"), track4 = new Track("Kath Bloom", "Fall Again");
    File f1, f2, f3, f4;
    deleteLovedAndStarredTracks();
    submitFile(additionDao, asList(f1 = getFile(track1), f2 = getFile(track2), f3 = getFile(track3), f4 = getFile(track4)));
    int track1Id = browserDao.getTrackId(f1), track2Id = browserDao.getTrackId(f2), track3Id = browserDao.getTrackId(f3), track4Id = browserDao.getTrackId(f4);
    LastFmSettingsService lastFmSettingsService = mock(LastFmSettingsService.class);
    when(lastFmSettingsService.getLastFmUsers()).thenReturn(asList(user1, user2));
    when(lastFmSettingsService.isSyncStarredAndLovedTracks()).thenReturn(true);
    UserLovedTracksClient userLovedTracksClient = mock(UserLovedTracksClient.class);
    when(userLovedTracksClient.getUserLovedTracks(user1, (short) 0)).thenReturn(new WSResponse(new ResourceUtil(LOVED_TRACKS_FILE, UTF8).getContent()));
    when(userLovedTracksClient.getUserLovedTracks(user2, (short) 0)).thenReturn(new WSResponse(false, 403, "Forbidden"));
    UserLovedTracksService userLovedTracksService = new UserLovedTracksService();
    userLovedTracksService.setLastFmSettingsService(lastFmSettingsService);
    userLovedTracksService.setUserLovedTracksClient(userLovedTracksClient);
    userLovedTracksService.setUserLovedTracksDao(userLovedTracksDao);
    userLovedTracksService.setStarService(mock(StarService.class));
    userLovedTracksService.setTrackLoveClient(mock(TrackLoveClient.class));
    starDao.starTrack(user1, track2Id);
    starDao.starTrack(user2, track3Id);
    starDao.starTrack(user2, track4Id);
    userLovedTracksService.updateSearchIndex();
    assertEquals(sort(asList(track1Id, track2Id)), sort(starDao.getStarredTrackIds(user1)));
    assertEquals(sort(asList(track3Id, track4Id)), sort(starDao.getStarredTrackIds(user2)));
}
Also used : UserLovedTracksClient(com.github.hakko.musiccabinet.ws.lastfm.UserLovedTracksClient) ResourceUtil(com.github.hakko.musiccabinet.util.ResourceUtil) LastFmUser(com.github.hakko.musiccabinet.domain.model.library.LastFmUser) WSResponse(com.github.hakko.musiccabinet.ws.lastfm.WSResponse) TrackLoveClient(com.github.hakko.musiccabinet.ws.lastfm.TrackLoveClient) UnittestLibraryUtil.getFile(com.github.hakko.musiccabinet.util.UnittestLibraryUtil.getFile) File(com.github.hakko.musiccabinet.domain.model.library.File) UnittestLibraryUtil.submitFile(com.github.hakko.musiccabinet.util.UnittestLibraryUtil.submitFile) Track(com.github.hakko.musiccabinet.domain.model.music.Track) StarService(com.github.hakko.musiccabinet.service.StarService) Test(org.junit.Test)

Aggregations

File (com.github.hakko.musiccabinet.domain.model.library.File)43 UnittestLibraryUtil.getFile (com.github.hakko.musiccabinet.util.UnittestLibraryUtil.getFile)18 Test (org.junit.Test)14 ArrayList (java.util.ArrayList)9 Artist (com.github.hakko.musiccabinet.domain.model.music.Artist)8 UnittestLibraryUtil.submitFile (com.github.hakko.musiccabinet.util.UnittestLibraryUtil.submitFile)7 DateTime (org.joda.time.DateTime)7 HashSet (java.util.HashSet)6 Before (org.junit.Before)6 DirectoryContent (com.github.hakko.musiccabinet.domain.model.aggr.DirectoryContent)5 ArtistInfo (com.github.hakko.musiccabinet.domain.model.music.ArtistInfo)5 Track (com.github.hakko.musiccabinet.domain.model.music.Track)5 ResourceUtil (com.github.hakko.musiccabinet.util.ResourceUtil)4 MetaData (com.github.hakko.musiccabinet.domain.model.library.MetaData)3 SqlParameter (org.springframework.jdbc.core.SqlParameter)3 BatchSqlUpdate (org.springframework.jdbc.object.BatchSqlUpdate)3 LastFmUser (com.github.hakko.musiccabinet.domain.model.library.LastFmUser)2 LibraryPresenceDao (com.github.hakko.musiccabinet.dao.LibraryPresenceDao)1 LibraryStatistics (com.github.hakko.musiccabinet.domain.model.aggr.LibraryStatistics)1 PlaylistItem (com.github.hakko.musiccabinet.domain.model.aggr.PlaylistItem)1