1a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar/*
2a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar * Copyright (C) 2017 The Android Open Source Project
3a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar *
4a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License");
5a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar * you may not use this file except in compliance with the License.
6a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar * You may obtain a copy of the License at
7a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar *
8a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar *      http://www.apache.org/licenses/LICENSE-2.0
9a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar *
10a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar * Unless required by applicable law or agreed to in writing, software
11a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS,
12a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar * See the License for the specific language governing permissions and
14a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar * limitations under the License.
15a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar */
16a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar
17bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viverettepackage androidx.room.migration.bundle;
18a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar
19bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.annotation.RestrictTo;
20a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar
21a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyarimport com.google.gson.annotations.SerializedName;
22a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar
23a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar/**
24a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar * Data class that holds the schema information for an
25bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viverette * {@link androidx.room.Entity Entity} field.
26a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar *
27a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar * @hide
28a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar */
29a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
30e5ed537fe6f14f0bbb43ddef605ed22f09714142Yigit Boyarpublic class FieldBundle implements SchemaEquality<FieldBundle> {
31a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    @SerializedName("fieldPath")
32a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    private String mFieldPath;
33a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    @SerializedName("columnName")
34a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    private String mColumnName;
35a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    @SerializedName("affinity")
36a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    private String mAffinity;
37b2bfd37e6320e795bffafe24cfdc6a1d1b3da035Yuichi Araki    @SerializedName("notNull")
38b2bfd37e6320e795bffafe24cfdc6a1d1b3da035Yuichi Araki    private boolean mNonNull;
39a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar
40b2bfd37e6320e795bffafe24cfdc6a1d1b3da035Yuichi Araki    public FieldBundle(String fieldPath, String columnName, String affinity, boolean nonNull) {
41a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar        mFieldPath = fieldPath;
42a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar        mColumnName = columnName;
43a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar        mAffinity = affinity;
44b2bfd37e6320e795bffafe24cfdc6a1d1b3da035Yuichi Araki        mNonNull = nonNull;
45a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    }
46a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar
47a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    public String getFieldPath() {
48a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar        return mFieldPath;
49a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    }
50a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar
51a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    public String getColumnName() {
52a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar        return mColumnName;
53a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    }
54a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar
55a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    public String getAffinity() {
56a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar        return mAffinity;
57a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar    }
58b2bfd37e6320e795bffafe24cfdc6a1d1b3da035Yuichi Araki
59b2bfd37e6320e795bffafe24cfdc6a1d1b3da035Yuichi Araki    public boolean isNonNull() {
60b2bfd37e6320e795bffafe24cfdc6a1d1b3da035Yuichi Araki        return mNonNull;
61b2bfd37e6320e795bffafe24cfdc6a1d1b3da035Yuichi Araki    }
62e5ed537fe6f14f0bbb43ddef605ed22f09714142Yigit Boyar
63e5ed537fe6f14f0bbb43ddef605ed22f09714142Yigit Boyar    @Override
64e5ed537fe6f14f0bbb43ddef605ed22f09714142Yigit Boyar    public boolean isSchemaEqual(FieldBundle other) {
65e5ed537fe6f14f0bbb43ddef605ed22f09714142Yigit Boyar        if (mNonNull != other.mNonNull) return false;
66e5ed537fe6f14f0bbb43ddef605ed22f09714142Yigit Boyar        if (mColumnName != null ? !mColumnName.equals(other.mColumnName)
67e5ed537fe6f14f0bbb43ddef605ed22f09714142Yigit Boyar                : other.mColumnName != null) {
68e5ed537fe6f14f0bbb43ddef605ed22f09714142Yigit Boyar            return false;
69e5ed537fe6f14f0bbb43ddef605ed22f09714142Yigit Boyar        }
70e5ed537fe6f14f0bbb43ddef605ed22f09714142Yigit Boyar        return mAffinity != null ? mAffinity.equals(other.mAffinity) : other.mAffinity == null;
71e5ed537fe6f14f0bbb43ddef605ed22f09714142Yigit Boyar    }
72a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar}
73