License.java revision 633eb826b8c97731dfc5ef12c7bf78a63734275d
1/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License
15 */
16
17package com.android.tv.license;
18
19import android.os.Parcel;
20import android.os.Parcelable;
21
22/**
23 * Container class to store the name of a library and the filename of its associated license file.
24 */
25public final class License implements Comparable<License>, Parcelable {
26    // Name of the third-party library.
27    private final String mLibraryName;
28    // Byte offset in the file to the start of the license text.
29    private final long mLicenseOffset;
30    // Byte length of the license text.
31    private final int mLicenseLength;
32    // Path to the archive that has bundled licenses.
33    // Empty string if the license is bundled in the apk itself.
34    private final String mPath;
35
36    /**
37     * Create an object representing a stored license. The text for all licenses is stored in a
38     * single file, so the offset and length describe this license's position within the file.
39     *
40     * @param path a path to an .apk-compatible archive that contains the license. An empty string
41     *     in case the license is contained within the app itself.
42     */
43    static License create(String libraryName, long licenseOffset, int licenseLength, String path) {
44        return new License(libraryName, licenseOffset, licenseLength, path);
45    }
46
47    public static final Parcelable.Creator<License> CREATOR =
48            new Parcelable.Creator<License>() {
49                @Override
50                public License createFromParcel(Parcel in) {
51                    return new License(in);
52                }
53
54                @Override
55                public License[] newArray(int size) {
56                    return new License[size];
57                }
58            };
59
60    @Override
61    public int describeContents() {
62        return 0;
63    }
64
65    @Override
66    public void writeToParcel(Parcel dest, int flags) {
67        dest.writeString(mLibraryName);
68        dest.writeLong(mLicenseOffset);
69        dest.writeInt(mLicenseLength);
70        dest.writeString(mPath);
71    }
72
73    @Override
74    public int compareTo(License o) {
75        return mLibraryName.compareToIgnoreCase(o.getLibraryName());
76    }
77
78    @Override
79    public String toString() {
80        return getLibraryName();
81    }
82
83    private License(String libraryName, long licenseOffset, int licenseLength, String path) {
84        this.mLibraryName = libraryName;
85        this.mLicenseOffset = licenseOffset;
86        this.mLicenseLength = licenseLength;
87        this.mPath = path;
88    }
89
90    private License(Parcel in) {
91        mLibraryName = in.readString();
92        mLicenseOffset = in.readLong();
93        mLicenseLength = in.readInt();
94        mPath = in.readString();
95    }
96
97    String getLibraryName() {
98        return mLibraryName;
99    }
100
101    long getLicenseOffset() {
102        return mLicenseOffset;
103    }
104
105    int getLicenseLength() {
106        return mLicenseLength;
107    }
108
109    public String getPath() {
110        return mPath;
111    }
112}
113