diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/service/RESTMusicService.java b/ultrasonic/src/main/java/org/moire/ultrasonic/service/RESTMusicService.java index 1f8e002c..ebe8a4ca 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/service/RESTMusicService.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/service/RESTMusicService.java @@ -58,6 +58,7 @@ import org.moire.ultrasonic.R; import org.moire.ultrasonic.api.subsonic.SubsonicAPIClient; import org.moire.ultrasonic.api.subsonic.models.AlbumListType; import org.moire.ultrasonic.api.subsonic.models.MusicDirectoryChild; +import org.moire.ultrasonic.api.subsonic.response.GetAlbumList2Response; import org.moire.ultrasonic.api.subsonic.response.GetAlbumListResponse; import org.moire.ultrasonic.api.subsonic.response.GetAlbumResponse; import org.moire.ultrasonic.api.subsonic.response.GetArtistResponse; @@ -98,7 +99,6 @@ import org.moire.ultrasonic.domain.SearchResult; import org.moire.ultrasonic.domain.Share; import org.moire.ultrasonic.domain.UserInfo; import org.moire.ultrasonic.domain.Version; -import org.moire.ultrasonic.service.parser.AlbumListParser; import org.moire.ultrasonic.service.parser.BookmarkParser; import org.moire.ultrasonic.service.parser.ChatMessageParser; import org.moire.ultrasonic.service.parser.ErrorParser; @@ -678,21 +678,26 @@ public class RESTMusicService implements MusicService return result; } - @Override - public MusicDirectory getAlbumList2(String type, int size, int offset, Context context, ProgressListener progressListener) throws Exception - { - checkServerVersion(context, "1.8", "Album list by ID3 tag not supported."); + @Override + public MusicDirectory getAlbumList2(String type, + int size, + int offset, + Context context, + ProgressListener progressListener) throws Exception { + if (type == null) { + throw new IllegalArgumentException("Type is null!"); + } - Reader reader = getReader(context, progressListener, "getAlbumList2", null, asList("type", "size", "offset"), Arrays.asList(type, size, offset)); - try - { - return new AlbumListParser(context).parse(reader, progressListener, true); - } - finally - { - Util.close(reader); - } - } + updateProgressListener(progressListener, R.string.parser_reading); + Response response = subsonicAPIClient.getApi() + .getAlbumList2(AlbumListType.fromName(type), size, offset, null, null, + null, null).execute(); + checkResponseSuccessful(response); + + MusicDirectory result = new MusicDirectory(); + result.addAll(APIAlbumConverter.toDomainEntityList(response.body().getAlbumList())); + return result; + } @Override public MusicDirectory getRandomSongs(int size, Context context, ProgressListener progressListener) throws Exception diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/service/parser/AlbumListParser.java b/ultrasonic/src/main/java/org/moire/ultrasonic/service/parser/AlbumListParser.java deleted file mode 100644 index 77c85eb6..00000000 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/service/parser/AlbumListParser.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - This file is part of Subsonic. - - Subsonic 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. - - Subsonic 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 Subsonic. If not, see . - - Copyright 2009 (C) Sindre Mehus - */ -package org.moire.ultrasonic.service.parser; - -import android.content.Context; - -import org.moire.ultrasonic.R; -import org.moire.ultrasonic.domain.MusicDirectory; -import org.moire.ultrasonic.util.ProgressListener; - -import org.xmlpull.v1.XmlPullParser; - -import java.io.Reader; - -/** - * @author Sindre Mehus - */ -public class AlbumListParser extends MusicDirectoryEntryParser -{ - public AlbumListParser(Context context) - { - super(context); - } - - public MusicDirectory parse(Reader reader, ProgressListener progressListener, boolean useId3) throws Exception - { - - updateProgress(progressListener, R.string.parser_reading); - init(reader); - - MusicDirectory dir = new MusicDirectory(); - int eventType; - do - { - eventType = nextParseEvent(); - if (eventType == XmlPullParser.START_TAG) - { - String name = getElementName(); - if ("album".equals(name)) - { - dir.addChild(parseEntry("", useId3, 0)); - } - else if ("error".equals(name)) - { - handleError(); - } - } - } while (eventType != XmlPullParser.END_DOCUMENT); - - validate(); - updateProgress(progressListener, R.string.parser_reading_done); - - return dir; - } -} \ No newline at end of file