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