diff options
author | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-08-11 17:12:02 +0200 |
---|---|---|
committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-08-11 17:12:02 +0200 |
commit | 4f6475f11bb8b268775b6633d9f23e3a269aff96 (patch) | |
tree | b4adbb7b184ba25a7ee70bc6a7703ae1b17a0950 | |
parent | fab79b605f0317891fe4260dcec0dea1a76fa04f (diff) |
Add metadata parcel
-rw-r--r-- | src/org/openintents/openpgp/OpenPgpDecryptMetadata.java | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/src/org/openintents/openpgp/OpenPgpDecryptMetadata.java b/src/org/openintents/openpgp/OpenPgpDecryptMetadata.java new file mode 100644 index 000000000..cfb507458 --- /dev/null +++ b/src/org/openintents/openpgp/OpenPgpDecryptMetadata.java @@ -0,0 +1,133 @@ +/* + * Copyright (C) 2014 Dominik Schürmann <dominik@dominikschuermann.de> + * + * 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 org.openintents.openpgp; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * Parcelable versioning has been copied from Dashclock Widget + * https://code.google.com/p/dashclock/source/browse/api/src/main/java/com/google/android/apps/dashclock/api/ExtensionData.java + */ +public class OpenPgpDecryptMetadata implements Parcelable { + /** + * Since there might be a case where new versions of the client using the library getting + * old versions of the protocol (and thus old versions of this class), we need a versioning + * system for the parcels sent between the clients and the providers. + */ + public static final int PARCELABLE_VERSION = 1; + + String filename; + long modificationTime; + int format; + long originalSize; + + public String getFilename() { + return filename; + } + + public long getModificationTime() { + return modificationTime; + } + + public long getOriginalSize() { + return originalSize; + } + + public int getFormat() { + return format; + } + + public OpenPgpDecryptMetadata() { + } + + public OpenPgpDecryptMetadata(String filename, long modificationTime, + int format, long originalSize) { + this.filename = filename; + this.modificationTime = modificationTime; + this.format = format; + this.originalSize = originalSize; + } + + public OpenPgpDecryptMetadata(OpenPgpDecryptMetadata b) { + this.filename = b.filename; + this.modificationTime = b.modificationTime; + this.format = b.format; + this.originalSize = b.originalSize; + } + + public int describeContents() { + return 0; + } + + public void writeToParcel(Parcel dest, int flags) { + /** + * NOTE: When adding fields in the process of updating this API, make sure to bump + * {@link #PARCELABLE_VERSION}. + */ + dest.writeInt(PARCELABLE_VERSION); + // Inject a placeholder that will store the parcel size from this point on + // (not including the size itself). + int sizePosition = dest.dataPosition(); + dest.writeInt(0); + int startPosition = dest.dataPosition(); + // version 1 + dest.writeString(filename); + dest.writeLong(modificationTime); + dest.writeInt(format); + dest.writeLong(originalSize); + // Go back and write the size + int parcelableSize = dest.dataPosition() - startPosition; + dest.setDataPosition(sizePosition); + dest.writeInt(parcelableSize); + dest.setDataPosition(startPosition + parcelableSize); + } + + public static final Creator<OpenPgpDecryptMetadata> CREATOR = new Creator<OpenPgpDecryptMetadata>() { + public OpenPgpDecryptMetadata createFromParcel(final Parcel source) { + int parcelableVersion = source.readInt(); + int parcelableSize = source.readInt(); + int startPosition = source.dataPosition(); + + OpenPgpDecryptMetadata vr = new OpenPgpDecryptMetadata(); + vr.filename = source.readString(); + vr.modificationTime = source.readLong(); + vr.format = source.readInt(); + vr.originalSize = source.readLong(); + + // skip over all fields added in future versions of this parcel + source.setDataPosition(startPosition + parcelableSize); + + return vr; + } + + public OpenPgpDecryptMetadata[] newArray(final int size) { + return new OpenPgpDecryptMetadata[size]; + } + }; + + @Override + public String toString() { + String out = new String(); + out += "\nfilename: " + filename; + out += "\nmodificationTime: " + modificationTime; + out += "\nformat: " + format; + out += "\noriginalSize: " + originalSize; + return out; + } + +} |