package com.mcxiaoke.minicat.service;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import org.json.JSONException;
import org.json.JSONObject;
/**
* @author mcxiaoke
* @version 2.0 2011.10.31
*/
public final class VersionInfo implements Parcelable {
public static final String TYPE_BUGFIX = "bugfix";
public static final String TYPE_MINOR = "minor";
public static final String TYPE_MAJOR = "major";
public static final Parcelable.Creator<VersionInfo> CREATOR = new Parcelable.Creator<VersionInfo>() {
@Override
public VersionInfo createFromParcel(Parcel source) {
Bundle bundle = source.readBundle();
return parseBundle(bundle);
}
@Override
public VersionInfo[] newArray(int size) {
return new VersionInfo[size];
}
};
public int versionCode;// 版本号
public String versionName;// 版本显示
public String releaseDate;// 发布日期
public String changelog;// 升级日志
public String downloadUrl;// 下载地址
public String versionType;// 升级类型:BUG修复,功能改进,重大更新
public String packageName;// 安装包文件名
public boolean forceUpdate;// 是否强制升级
public VersionInfo() {
}
public VersionInfo(Parcel in) {
this();
Bundle bundle = in.readBundle();
readFromBundle(bundle);
}
public static VersionInfo parse(String response) {
try {
JSONObject o = new JSONObject(response);
VersionInfo info = new VersionInfo();
info.versionCode = o.getInt("versionCode");
info.versionName = o.getString("versionName");
info.releaseDate = o.getString("releaseDate");
info.changelog = o.getString("changelog");
info.downloadUrl = o.getString("downloadUrl");
info.versionType = o.getString("versionType");
info.packageName = o.getString("packageName");
info.forceUpdate = o.getBoolean("forceUpdate");
return info;
} catch (JSONException e) {
return null;
}
}
public static VersionInfo parseBundle(Bundle bundle) {
VersionInfo info = new VersionInfo();
info.versionCode = bundle.getInt("versionCode");
info.versionName = bundle.getString("versionName");
info.releaseDate = bundle.getString("releaseDate");
info.changelog = bundle.getString("changelog");
info.downloadUrl = bundle.getString("downloadUrl");
info.versionType = bundle.getString("versionType");
info.packageName = bundle.getString("packageName");
info.forceUpdate = bundle.getBoolean("forceUpdate");
if (info.versionCode > 0) {
return info;
} else {
return null;
}
}
public void readFromBundle(Bundle bundle) {
versionCode = bundle.getInt("versionCode");
versionName = bundle.getString("versionName");
releaseDate = bundle.getString("releaseDate");
changelog = bundle.getString("changelog");
downloadUrl = bundle.getString("downloadUrl");
versionType = bundle.getString("versionType");
packageName = bundle.getString("packageName");
forceUpdate = bundle.getBoolean("forceUpdate");
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("[VersionInfo] versionCode=" + versionCode);
sb.append("[VersionInfo] versionName=" + versionName);
sb.append("[VersionInfo] releaseDate=" + releaseDate);
sb.append("[VersionInfo] changelog=(" + changelog).append(")");
sb.append("[VersionInfo] downloadUrl=" + downloadUrl);
sb.append("[VersionInfo] versionType=" + versionType);
sb.append("[VersionInfo] packageName=" + packageName);
sb.append("[VersionInfo] forceUpdate=" + forceUpdate);
return sb.toString();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
Bundle bundle = new Bundle();
bundle.putInt("versionCode", versionCode);
bundle.putString("versionName", versionName);
bundle.putString("releaseDate", releaseDate);
bundle.putString("changelog", changelog);
bundle.putString("downloadUrl", downloadUrl);
bundle.putString("versionType", versionType);
bundle.putString("packageName", packageName);
bundle.putBoolean("forceUpdate", forceUpdate);
dest.writeBundle(bundle);
}
}