package biz.bokhorst.xprivacy;
import android.annotation.SuppressLint;
import android.os.Parcel;
import android.os.Parcelable;
public class PRestriction implements Parcelable {
public int uid;
public String restrictionName;
public String methodName;
public boolean restricted;
public boolean asked;
public String extra;
public String value;
public long time;
public boolean debug;
// The extra is never needed in the result
public PRestriction() {
}
public PRestriction(PRestriction other) {
uid = other.uid;
restrictionName = other.restrictionName;
methodName = other.methodName;
restricted = other.restricted;
asked = other.asked;
extra = null;
value = other.value;
time = other.time;
debug = other.debug;
}
public PRestriction(int _uid, String category, String method) {
uid = _uid;
restrictionName = category;
methodName = method;
restricted = false;
asked = false;
extra = null;
value = null;
time = 0;
debug = false;
}
public PRestriction(int _uid, String category, String method, boolean _restricted) {
uid = _uid;
restrictionName = category;
methodName = method;
restricted = _restricted;
asked = false;
extra = null;
value = null;
time = 0;
debug = false;
}
public PRestriction(int _uid, String category, String method, boolean _restricted, boolean _asked) {
uid = _uid;
restrictionName = category;
methodName = method;
restricted = _restricted;
asked = _asked;
extra = null;
value = null;
time = 0;
debug = false;
}
public static final Parcelable.Creator<PRestriction> CREATOR = new Parcelable.Creator<PRestriction>() {
public PRestriction createFromParcel(Parcel in) {
return new PRestriction(in);
}
public PRestriction[] newArray(int size) {
return new PRestriction[size];
}
};
private PRestriction(Parcel in) {
readFromParcel(in);
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(uid);
out.writeInt(restrictionName == null ? 1 : 0);
if (restrictionName != null)
out.writeString(restrictionName);
out.writeInt(methodName == null ? 1 : 0);
if (methodName != null)
out.writeString(methodName);
out.writeInt(restricted ? 1 : 0);
out.writeInt(asked ? 1 : 0);
out.writeInt(extra == null ? 1 : 0);
if (extra != null)
out.writeString(extra);
out.writeInt(value == null ? 1 : 0);
if (value != null)
out.writeString(value);
out.writeLong(time);
out.writeInt(debug ? 1 : 0);
}
public void readFromParcel(Parcel in) {
uid = in.readInt();
restrictionName = (in.readInt() > 0 ? null : in.readString());
methodName = (in.readInt() > 0 ? null : in.readString());
restricted = (in.readInt() > 0 ? true : false);
asked = (in.readInt() > 0 ? true : false);
extra = (in.readInt() > 0 ? null : in.readString());
value = (in.readInt() > 0 ? null : in.readString());
time = in.readLong();
debug = (in.readInt() > 0 ? true : false);
}
@Override
public int describeContents() {
return 0;
}
@Override
@SuppressLint("DefaultLocale")
public String toString() {
return String.format("%d/%s(%s;%s) %s=%srestricted%s", uid, methodName, extra, value, restrictionName,
(restricted ? "" : "!"), (asked ? "" : "?"));
}
}