keepass2android/src/java/JavaFileStorage/app/src/main/java/com/microsoft/live/LiveDownloadOperation.java

132 lines
3.3 KiB
Java

//------------------------------------------------------------------------------
// Copyright (c) 2012 Microsoft Corporation. All rights reserved.
//
// Description: See the class level JavaDoc comments.
//------------------------------------------------------------------------------
package com.microsoft.live;
import java.io.InputStream;
import android.text.TextUtils;
/**
* Represents data returned from a download call to the Live Connect Representational State
* Transfer (REST) API.
*/
public class LiveDownloadOperation {
static class Builder {
private ApiRequestAsync<InputStream> apiRequestAsync;
private final String method;
private final String path;
private InputStream stream;
private Object userState;
public Builder(String method, String path) {
assert !TextUtils.isEmpty(method);
assert !TextUtils.isEmpty(path);
this.method = method;
this.path = path;
}
/**
* Set if the operation to build is an async operation.
*
* @param apiRequestAsync
* @return this Builder
*/
public Builder apiRequestAsync(ApiRequestAsync<InputStream> apiRequestAsync) {
assert apiRequestAsync != null;
this.apiRequestAsync = apiRequestAsync;
return this;
}
public LiveDownloadOperation build() {
return new LiveDownloadOperation(this);
}
public Builder stream(InputStream stream) {
assert stream != null;
this.stream = stream;
return this;
}
public Builder userState(Object userState) {
this.userState = userState;
return this;
}
}
private final ApiRequestAsync<InputStream> apiRequestAsync;
private int contentLength;
private final String method;
private final String path;
private InputStream stream;
private final Object userState;
LiveDownloadOperation(Builder builder) {
this.apiRequestAsync = builder.apiRequestAsync;
this.method = builder.method;
this.path = builder.path;
this.stream = builder.stream;
this.userState = builder.userState;
}
public void cancel() {
final boolean isCancelable = this.apiRequestAsync != null;
if (isCancelable) {
this.apiRequestAsync.cancel(true);
}
}
/**
* @return The type of HTTP method used to make the call.
*/
public String getMethod() {
return this.method;
}
/**
* @return The length of the stream.
*/
public int getContentLength() {
return this.contentLength;
}
/**
* @return The path for the stream object.
*/
public String getPath() {
return this.path;
}
/**
* @return The stream object that contains the downloaded file.
*/
public InputStream getStream() {
return this.stream;
}
/**
* @return The user state.
*/
public Object getUserState() {
return this.userState;
}
void setContentLength(int contentLength) {
assert contentLength >= 0;
this.contentLength = contentLength;
}
void setStream(InputStream stream) {
assert stream != null;
this.stream = stream;
}
}