/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.telephony.mbms;
import android.content.Intent;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import java.net.URISyntaxException;
/**
* A Parcelable class describing a pending Cell-Broadcast download request
* @hide
*/
public class DownloadRequest implements Parcelable {
/** @hide */
public static class Builder {
private int id;
private FileServiceInfo serviceInfo;
private Uri source;
private Uri dest;
private int sub;
private String appIntent;
public Builder setId(int id) {
this.id = id;
return this;
}
public Builder setServiceInfo(FileServiceInfo serviceInfo) {
this.serviceInfo = serviceInfo;
return this;
}
public Builder setSource(Uri source) {
this.source = source;
return this;
}
public Builder setDest(Uri dest) {
this.dest = dest;
return this;
}
public Builder setSub(int sub) {
this.sub = sub;
return this;
}
public Builder setAppIntent(Intent intent) {
this.appIntent = intent.toUri(0);
return this;
}
public DownloadRequest build() {
return new DownloadRequest(id, serviceInfo, source, dest, sub, appIntent);
}
}
private final int downloadId;
private final FileServiceInfo fileServiceInfo;
private final Uri sourceUri;
private final Uri destinationUri;
private final int subId;
private final String serializedResultIntentForApp;
private DownloadRequest(int id, FileServiceInfo serviceInfo,
Uri source, Uri dest,
int sub, String appIntent) {
downloadId = id;
fileServiceInfo = serviceInfo;
sourceUri = source;
destinationUri = dest;
subId = sub;
serializedResultIntentForApp = appIntent;
}
public static DownloadRequest copy(DownloadRequest other) {
return new DownloadRequest(other);
}
private DownloadRequest(DownloadRequest dr) {
downloadId = dr.downloadId;
fileServiceInfo = dr.fileServiceInfo;
sourceUri = dr.sourceUri;
destinationUri = dr.destinationUri;
subId = dr.subId;
serializedResultIntentForApp = dr.serializedResultIntentForApp;
}
private DownloadRequest(Parcel in) {
downloadId = in.readInt();
fileServiceInfo = in.readParcelable(getClass().getClassLoader());
sourceUri = in.readParcelable(getClass().getClassLoader());
destinationUri = in.readParcelable(getClass().getClassLoader());
subId = in.readInt();
serializedResultIntentForApp = in.readString();
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(downloadId);
out.writeParcelable(fileServiceInfo, flags);
out.writeParcelable(sourceUri, flags);
out.writeParcelable(destinationUri, flags);
out.writeInt(subId);
out.writeString(serializedResultIntentForApp);
}
public int getDownloadId() {
return downloadId;
}
public FileServiceInfo getFileServiceInfo() {
return fileServiceInfo;
}
public Uri getSourceUri() {
return sourceUri;
}
public Uri getDestinationUri() {
return destinationUri;
}
public int getSubId() {
return subId;
}
public Intent getIntentForApp() {
try {
return Intent.parseUri(serializedResultIntentForApp, 0);
} catch (URISyntaxException e) {
return null;
}
}
public static final Parcelable.Creator<DownloadRequest> CREATOR =
new Parcelable.Creator<DownloadRequest>() {
public DownloadRequest createFromParcel(Parcel in) {
return new DownloadRequest(in);
}
public DownloadRequest[] newArray(int size) {
return new DownloadRequest[size];
}
};
}