summaryrefslogtreecommitdiff
path: root/apex/blobstore/framework/java/android/app/blob/BlobInfo.java
blob: 73ef310c7b40ee8c7bfa867c143b239ca95098e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * 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 android.app.blob;

import static android.text.format.Formatter.FLAG_IEC_UNITS;

import android.annotation.NonNull;
import android.app.AppGlobals;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.format.Formatter;

import java.util.Collections;
import java.util.List;

/**
 * Class to provide information about a shared blob.
 *
 * @hide
 */
public final class BlobInfo implements Parcelable {
    private final long mId;
    private final long mExpiryTimeMs;
    private final CharSequence mLabel;
    private final long mSizeBytes;
    private final List<LeaseInfo> mLeaseInfos;

    public BlobInfo(long id, long expiryTimeMs, CharSequence label, long sizeBytes,
            List<LeaseInfo> leaseInfos) {
        mId = id;
        mExpiryTimeMs = expiryTimeMs;
        mLabel = label;
        mSizeBytes = sizeBytes;
        mLeaseInfos = leaseInfos;
    }

    @SuppressWarnings("UnsafeParcelApi")
    private BlobInfo(Parcel in) {
        mId = in.readLong();
        mExpiryTimeMs = in.readLong();
        mLabel = in.readCharSequence();
        mSizeBytes = in.readLong();
        mLeaseInfos = in.readArrayList(null /* classloader */);
    }

    public long getId() {
        return mId;
    }

    public long getExpiryTimeMs() {
        return mExpiryTimeMs;
    }

    public CharSequence getLabel() {
        return mLabel;
    }

    public long getSizeBytes() {
        return mSizeBytes;
    }

    public List<LeaseInfo> getLeases() {
        return Collections.unmodifiableList(mLeaseInfos);
    }

    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeLong(mId);
        dest.writeLong(mExpiryTimeMs);
        dest.writeCharSequence(mLabel);
        dest.writeLong(mSizeBytes);
        dest.writeList(mLeaseInfos);
    }

    @Override
    public String toString() {
        return toShortString();
    }

    private String toShortString() {
        return "BlobInfo {"
                + "id: " + mId + ","
                + "expiryMs: " + mExpiryTimeMs + ","
                + "label: " + mLabel + ","
                + "size: " + formatBlobSize(mSizeBytes) + ","
                + "leases: " + LeaseInfo.toShortString(mLeaseInfos) + ","
                + "}";
    }

    private static String formatBlobSize(long sizeBytes) {
        return Formatter.formatFileSize(AppGlobals.getInitialApplication(),
                sizeBytes, FLAG_IEC_UNITS);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @NonNull
    public static final Creator<BlobInfo> CREATOR = new Creator<BlobInfo>() {
        @Override
        @NonNull
        public BlobInfo createFromParcel(Parcel source) {
            return new BlobInfo(source);
        }

        @Override
        @NonNull
        public BlobInfo[] newArray(int size) {
            return new BlobInfo[size];
        }
    };
}