1 package com.android.onboarding.bedsteadonboarding.queryable 2 3 import android.os.Parcel 4 import android.os.Parcelable 5 import com.android.onboarding.nodes.OnboardingGraphNodeData.Component 6 import com.android.queryable.Queryable 7 import com.android.queryable.queries.StringQueryHelper 8 9 /** 10 * Implementation of [ComponentQuery]. 11 */ 12 class ComponentQueryHelper<E: Queryable> : ComponentQuery<E> { 13 14 @Transient private lateinit var query: E 15 16 private val nameQueryHelper: StringQueryHelper<E> 17 18 constructor(query: E) { 19 this.query = query 20 nameQueryHelper = StringQueryHelper(query) 21 } 22 23 constructor(parcel: Parcel) { 24 nameQueryHelper = parcel.readParcelable(ComponentQueryHelper::class.java.classLoader) 25 as StringQueryHelper<E>? ?: throw IllegalStateException() 26 } 27 namenull28 override fun name() = nameQueryHelper 29 30 override fun matches(component: Component?): Boolean { 31 return nameQueryHelper.matches(component?.name) 32 } 33 describeQuerynull34 override fun describeQuery(fieldName: String?): String { 35 return Queryable.joinQueryStrings(nameQueryHelper.describeQuery("$fieldName.name")) 36 } 37 isEmptyQuerynull38 override fun isEmptyQuery(): Boolean { 39 return Queryable.isEmptyQuery(nameQueryHelper) 40 } 41 writeToParcelnull42 override fun writeToParcel(out: Parcel, flags: Int) { 43 out.writeParcelable(nameQueryHelper, flags) 44 } 45 describeContentsnull46 override fun describeContents(): Int { 47 return 0 48 } 49 50 companion object CREATOR : Parcelable.Creator<ComponentQueryHelper<Queryable>> { createFromParcelnull51 override fun createFromParcel(parcel: Parcel): ComponentQueryHelper<Queryable> { 52 return ComponentQueryHelper(parcel) 53 } 54 newArraynull55 override fun newArray(size: Int): Array<ComponentQueryHelper<Queryable>?> { 56 return arrayOfNulls(size) 57 } 58 } 59 } 60