package io.hefuyi.listener.mvp.usecase; import android.support.annotation.NonNull; import java.io.File; import io.hefuyi.listener.respository.interfaces.Repository; import io.hefuyi.listener.util.LyricUtil; import rx.Observable; /** * Created by hefuyi on 2016/11/7. */ public class GetLyric extends UseCase<GetLyric.RequestValues,GetLyric.ResponseValue>{ private Repository mRepository; public GetLyric(Repository repository) { this.mRepository = repository; } @Override public ResponseValue execute(RequestValues requestValues) { String title = requestValues.getTitle(); String artist = requestValues.getArtist(); long duration = requestValues.getDuration(); if (LyricUtil.isLrcFileExist(title, artist)) { return new ResponseValue(LyricUtil.getLocalLyricFile(title, artist)); }else{ return new ResponseValue(mRepository.downloadLrcFile(title, artist, duration)); } } public static final class RequestValues implements UseCase.RequestValues{ private final String mTitle; private final String mArtist; private final long mDuration; public RequestValues(@NonNull String title, @NonNull String artist,long duration) { mTitle = title; mArtist = artist; mDuration = duration; } public String getTitle() { return mTitle; } public String getArtist() { return mArtist; } public long getDuration() { return mDuration; } } public static final class ResponseValue implements UseCase.ResponseValue { private final Observable<File> mLyricFile; public ResponseValue(Observable<File> lyricFile) { mLyricFile = lyricFile; } public Observable<File> getLyricFile(){ return mLyricFile; } } }