• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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