1 /*
2  * Copyright 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 
17 package androidx.navigation.safe.args.generator.models
18 
19 import com.squareup.javapoet.ClassName
20 
21 data class Destination(
22         val id: ResReference?,
23         val name: ClassName?,
24         val type: String,
25         val args: List<Argument>,
26         val actions: List<Action>,
27         val nested: List<Destination> = emptyList()) {
28 
29     companion object {
createNamenull30         fun createName(id: ResReference?, name: String, applicationId: String): ClassName? = when {
31             name.isNotEmpty() -> {
32                 val specifiedPackage = name.substringBeforeLast('.', "")
33                 val classPackage = if (name.startsWith(".")) {
34                     "$applicationId$specifiedPackage"
35                 } else {
36                     specifiedPackage
37                 }
38                 ClassName.get(classPackage, name.substringAfterLast('.'))
39             }
40             id != null -> ClassName.get(id.packageName, id.name.capitalize())
41             else -> null
42         }
43     }
44 }