Issue 617
Restores optimization in AlbumUpnpProcessor and instead re-implements default behavior in RecentAlbumUpnpProcessor subclass.
This commit is contained in:
@@ -26,8 +26,10 @@ import org.airsonic.player.domain.CoverArtScheme;
|
||||
import org.airsonic.player.domain.MediaFile;
|
||||
import org.airsonic.player.domain.MusicFolder;
|
||||
import org.airsonic.player.service.SearchService;
|
||||
import org.fourthline.cling.support.model.BrowseResult;
|
||||
import org.fourthline.cling.support.model.DIDLContent;
|
||||
import org.fourthline.cling.support.model.PersonWithRole;
|
||||
import org.fourthline.cling.support.model.SortCriterion;
|
||||
import org.fourthline.cling.support.model.container.Container;
|
||||
import org.fourthline.cling.support.model.container.MusicAlbum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -59,6 +61,20 @@ public class AlbumUpnpProcessor extends UpnpContentProcessor <Album, MediaFile>
|
||||
setRootTitle("Albums");
|
||||
}
|
||||
|
||||
/**
|
||||
* Browses the top-level content of a type.
|
||||
*/
|
||||
public BrowseResult browseRoot(String filter, long firstResult, long maxResults, SortCriterion[] orderBy) throws Exception {
|
||||
DIDLContent didl = new DIDLContent();
|
||||
|
||||
List<MusicFolder> allFolders = getDispatchingContentDirectory().getSettingsService().getAllMusicFolders();
|
||||
List<Album> selectedItems = getAlbumDao().getAlphabeticalAlbums((int) firstResult, (int) maxResults, false, true, allFolders);
|
||||
for (Album item : selectedItems) {
|
||||
addItem(didl, item);
|
||||
}
|
||||
|
||||
return createBrowseResult(didl, (int) didl.getCount(), getAllItemsSize());
|
||||
}
|
||||
public Container createContainer(Album album) throws Exception {
|
||||
MusicAlbum container = new MusicAlbum();
|
||||
|
||||
|
||||
+26
@@ -20,6 +20,10 @@
|
||||
package org.airsonic.player.service.upnp;
|
||||
import org.airsonic.player.domain.Album;
|
||||
import org.airsonic.player.domain.MusicFolder;
|
||||
import org.airsonic.player.util.Util;
|
||||
import org.fourthline.cling.support.model.BrowseResult;
|
||||
import org.fourthline.cling.support.model.DIDLContent;
|
||||
import org.fourthline.cling.support.model.SortCriterion;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
@@ -37,6 +41,28 @@ public class RecentAlbumUpnpProcessor extends AlbumUpnpProcessor {
|
||||
setRootTitle("RecentAlbums");
|
||||
}
|
||||
|
||||
/**
|
||||
* Browses the top-level content.
|
||||
*/
|
||||
public BrowseResult browseRoot(String filter, long firstResult, long maxResults, SortCriterion[] orderBy) throws Exception {
|
||||
// AlbumUpnpProcessor overrides browseRoot() with an optimization;
|
||||
// this restores the default behavior for the subclass.
|
||||
DIDLContent didl = new DIDLContent();
|
||||
List<Album> allItems = getAllItems();
|
||||
if (filter != null) {
|
||||
// filter items (not implemented yet)
|
||||
}
|
||||
if (orderBy != null) {
|
||||
// sort items (not implemented yet)
|
||||
}
|
||||
List<Album> selectedItems = Util.subList(allItems, firstResult, maxResults);
|
||||
for (Album item : selectedItems) {
|
||||
addItem(didl, item);
|
||||
}
|
||||
|
||||
return createBrowseResult(didl, (int) didl.getCount(), allItems.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Album> getAllItems() {
|
||||
List<MusicFolder> allFolders = getDispatchingContentDirectory().getSettingsService().getAllMusicFolders();
|
||||
|
||||
Reference in New Issue
Block a user