package com.dianping.loader.model;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Parcel;
import android.os.Parcelable;
public class FileSpec implements Parcelable {
/**
* Download when required<br>
* 需要时再下载
*/
public static final int DOWN_NONE = 0;
/**
* Try to download in background if Wifi or faster network is available<br>
* Wifi网络下尝试后台下载
*/
public static final int DOWN_WIFI = 1;
/**
* Try to download in background if 3G or faster network is available<br>
* 3G或Wifi网络下尝试后台下载
*/
public static final int DOWN_3G = 2;
/**
* Try to download in background<br>
* 任何时候都尝试后台下载
*/
public static final int DOWN_ALWAYS = 5;
private String id;
private String url;
private String md5;
private int down;
private int length;
private String[] deps;
public FileSpec(String id, String url, String md5, int down, int length,
String[] deps) {
this.id = id;
this.url = url;
this.md5 = md5;
this.down = down;
this.length = length;
this.deps = deps;
}
public FileSpec(JSONObject json) throws JSONException {
id = json.getString("id");
url = json.getString("url");
md5 = json.optString("md5");
down = json.optInt("down", 0);
length = json.optInt("length", 0);
JSONArray arr = json.optJSONArray("deps");
if (arr != null) {
deps = new String[arr.length()];
for (int i = 0; i < deps.length; i++) {
deps[i] = arr.getString(i);
}
}
}
public String id() {
return id;
}
public String url() {
return url;
}
public String md5() {
return md5;
}
public int down() {
return down;
}
public int length() {
return length;
}
public String[] deps() {
return deps;
}
@Override
public int hashCode() {
return id.hashCode();
}
@Override
public boolean equals(Object o) {
if (o == this)
return true;
if (!(o instanceof FileSpec))
return false;
return id.equals(((FileSpec) o).id);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(id);
if (deps != null && deps.length > 0) {
sb.append(':');
sb.append(deps[0]);
for (int i = 1; i < deps.length; i++) {
sb.append(',').append(deps[i]);
}
}
return sb.toString();
}
//
// Parcelable
//
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeString(id);
out.writeString(url);
out.writeString(md5);
out.writeInt(down);
out.writeInt(length);
out.writeStringArray(deps);
}
@Override
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<FileSpec> CREATOR = new Parcelable.Creator<FileSpec>() {
public FileSpec createFromParcel(Parcel in) {
return new FileSpec(in);
}
public FileSpec[] newArray(int size) {
return new FileSpec[size];
}
};
protected FileSpec(Parcel in) {
id = in.readString();
url = in.readString();
md5 = in.readString();
down = in.readInt();
length = in.readInt();
deps = in.createStringArray();
}
}