diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2014-10-05 10:09:50 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2014-10-05 10:09:50 +0200 |
commit | 7fedde2638217d4aacbbe276ce50af7096222838 (patch) | |
tree | bc86065e588df0e7d93b36bbea171597ce0f7a6c /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java | |
parent | 0b9308753d7339251f9051316b00f6f0c9b0efbc (diff) | |
download | open-keychain-7fedde2638217d4aacbbe276ce50af7096222838.tar.gz open-keychain-7fedde2638217d4aacbbe276ce50af7096222838.tar.bz2 open-keychain-7fedde2638217d4aacbbe276ce50af7096222838.zip |
add support for hierarchical log entries
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java index d32e3a4a9..495f9f861 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java @@ -106,7 +106,7 @@ public abstract class OperationResult implements Parcelable { mType = type; mParameters = parameters; mIndent = indent; - Log.v(Constants.TAG, "log: " + this.toString()); + Log.v(Constants.TAG, "log: " + this); } public LogEntryParcel(Parcel source) { @@ -122,6 +122,7 @@ public abstract class OperationResult implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(0); dest.writeInt(mType.ordinal()); dest.writeSerializable(mParameters); dest.writeInt(mIndent); @@ -129,7 +130,12 @@ public abstract class OperationResult implements Parcelable { public static final Creator<LogEntryParcel> CREATOR = new Creator<LogEntryParcel>() { public LogEntryParcel createFromParcel(final Parcel source) { - return new LogEntryParcel(source); + // Actually create LogEntryParcel or SubLogEntryParcel depending on type indicator + if (source.readInt() == 0) { + return new LogEntryParcel(source); + } else { + return new SubLogEntryParcel(source); + } } public LogEntryParcel[] newArray(final int size) { @@ -139,7 +145,7 @@ public abstract class OperationResult implements Parcelable { @Override public String toString() { - return "LogEntryParcel{" + + return getClass().getSimpleName() + "{" + "mLevel=" + mType.mLevel + ", mType=" + mType + ", mParameters=" + Arrays.toString(mParameters) + @@ -148,6 +154,42 @@ public abstract class OperationResult implements Parcelable { } } + public static class SubLogEntryParcel extends LogEntryParcel { + + OperationResult mSubResult; + + public SubLogEntryParcel(OperationResult subResult, LogType type, int indent, Object... parameters) { + super(type, indent, parameters); + mSubResult = subResult; + + Log.v(Constants.TAG, "log: " + this); + } + + public SubLogEntryParcel(Parcel source) { + super(source); + mSubResult = source.readParcelable(SubLogEntryParcel.class.getClassLoader()); + } + + public OperationResult getSubResult() { + return mSubResult; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(1); + dest.writeInt(mType.ordinal()); + dest.writeSerializable(mParameters); + dest.writeInt(mIndent); + dest.writeParcelable(mSubResult, 0); + } + + } + public SuperCardToast createNotify(final Activity activity) { int color; @@ -597,6 +639,15 @@ public abstract class OperationResult implements Parcelable { mParcels.add(new OperationResult.LogEntryParcel(type, indent, (Object[]) null)); } + public void add(OperationResult subResult, int indent) { + OperationLog subLog = subResult.getLog(); + mParcels.add(new SubLogEntryParcel(subResult, subLog.getLast().mType, indent, subLog.getLast().mParameters)); + } + + public void clear() { + mParcels.clear(); + } + public boolean containsType(LogType type) { for(LogEntryParcel entry : new IterableIterator<LogEntryParcel>(mParcels.iterator())) { if (entry.mType == type) { |