use of com.github.hakko.musiccabinet.domain.model.aggr.DirectoryContent in project musiccabinet by hakko.
the class DirectoryBrowserServiceTest method addedSubdirectoryDetectedWhenListingFiles.
@Test
public void addedSubdirectoryDetectedWhenListingFiles() throws ApplicationException, IOException {
scannerService.add(set(media1));
File newDir = new File(media1 + separatorChar + "newdir");
newDir.mkdir();
newDir.deleteOnExit();
Directory dirMedia1 = getFirstRootDirectory();
DirectoryContent found = browserService.getDirectoryDiff(dirMedia1.getId());
Assert.assertTrue(found.getFiles().isEmpty());
Assert.assertFalse(found.getSubDirectories().isEmpty());
Assert.assertEquals(1, found.getSubDirectories().size());
Assert.assertTrue(found.getSubDirectories().contains(newDir.getAbsolutePath()));
newDir.delete();
}
use of com.github.hakko.musiccabinet.domain.model.aggr.DirectoryContent in project musiccabinet by hakko.
the class LibraryAdditionService method receive.
@SuppressWarnings("unchecked")
@Override
public void receive() {
Message<DirectoryContent> message;
while (true) {
message = (Message<DirectoryContent>) libraryAdditionChannel.receive();
if (message == null || message.equals(FINISHED_MESSAGE)) {
break;
} else {
DirectoryContent content = message.getPayload();
String dir = content.getDirectory();
libraryAdditionDao.addSubdirectories(dir, content.getSubDirectories());
libraryAdditionDao.addFiles(dir, content.getFiles());
}
}
}
use of com.github.hakko.musiccabinet.domain.model.aggr.DirectoryContent in project musiccabinet by hakko.
the class LibraryDeletionService method receive.
@SuppressWarnings("unchecked")
@Override
public void receive() {
Message<DirectoryContent> message;
while (true) {
message = (Message<DirectoryContent>) libraryDeletionChannel.receive();
if (message == null || message.equals(FINISHED_MESSAGE)) {
break;
} else {
DirectoryContent content = message.getPayload();
String dir = content.getDirectory();
libraryDeletionDao.deleteFiles(dir, content.getFiles());
libraryDeletionDao.deleteSubdirectories(dir, content.getSubDirectories());
}
}
}
use of com.github.hakko.musiccabinet.domain.model.aggr.DirectoryContent 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;
}
use of com.github.hakko.musiccabinet.domain.model.aggr.DirectoryContent 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);
}
}
}
Aggregations