package me.devsaki.hentoid.dirpicker.observable;
import java.io.File;
import java.io.IOException;
import me.devsaki.hentoid.dirpicker.exceptions.DirExistsException;
import me.devsaki.hentoid.dirpicker.exceptions.PermissionDeniedException;
import rx.Observable;
import rx.Subscriber;
/**
* Created by avluis on 06/12/2016.
* Make (create) Directory Observable
*/
public class MakeDirObservable {
public Observable<File> create(final File rootDir, final String dirName) {
return Observable.create(new Observable.OnSubscribe<File>() {
@Override
public void call(Subscriber<? super File> subscriber) {
if (!rootDir.canWrite()) {
subscriber.onError(new PermissionDeniedException());
}
File newDir = new File(rootDir, dirName);
if (newDir.exists()) {
subscriber.onError(new DirExistsException());
} else {
boolean isDirCreated = newDir.mkdir();
if (isDirCreated) {
subscriber.onNext(newDir);
subscriber.onCompleted();
} else {
subscriber.onError(new IOException());
}
}
}
});
}
}