1b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets/* 2b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * Copyright 2017 The Android Open Source Project 3b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * 4b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * Licensed under the Apache License, Version 2.0 (the "License"); 5b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * you may not use this file except in compliance with the License. 6b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * You may obtain a copy of the License at 7b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * 8b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * http://www.apache.org/licenses/LICENSE-2.0 9b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * 10b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * Unless required by applicable law or agreed to in writing, software 11b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * distributed under the License is distributed on an "AS IS" BASIS, 12b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * See the License for the specific language governing permissions and 14b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets * limitations under the License. 15b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets */ 16b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets 171503d52153986fdcfe7e744795010708b7410892Ian Lakepackage androidx.navigation.safe.args.generator.models 18b3e31f33297405a0a5dd0182a42403722f6aad2cSergey Vasilinets 1990ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinetsimport com.squareup.javapoet.ClassName 2090ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets 2116e05dcb2c2b47193b55239be6ae498f7e6e082aSergey Vasilinetsdata class Destination( 229ca584405af88767f97ec06fbb5f5e1b7e98b1b4Sergey Vasilinets val id: ResReference?, 2390ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets val name: ClassName?, 2416e05dcb2c2b47193b55239be6ae498f7e6e082aSergey Vasilinets val type: String, 2516e05dcb2c2b47193b55239be6ae498f7e6e082aSergey Vasilinets val args: List<Argument>, 2616e05dcb2c2b47193b55239be6ae498f7e6e082aSergey Vasilinets val actions: List<Action>, 2790ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets val nested: List<Destination> = emptyList()) { 2890ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets 2990ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets companion object { 309ca584405af88767f97ec06fbb5f5e1b7e98b1b4Sergey Vasilinets fun createName(id: ResReference?, name: String, applicationId: String): ClassName? = when { 3190ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets name.isNotEmpty() -> { 3290ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets val specifiedPackage = name.substringBeforeLast('.', "") 33e287a49fd22dc33cdb989945866bdf7095ef356cSergey Vasilinets val classPackage = if (name.startsWith(".")) { 34e287a49fd22dc33cdb989945866bdf7095ef356cSergey Vasilinets "$applicationId$specifiedPackage" 35e287a49fd22dc33cdb989945866bdf7095ef356cSergey Vasilinets } else { 36e287a49fd22dc33cdb989945866bdf7095ef356cSergey Vasilinets specifiedPackage 3790ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets } 38e287a49fd22dc33cdb989945866bdf7095ef356cSergey Vasilinets ClassName.get(classPackage, name.substringAfterLast('.')) 3990ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets } 4090ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets id != null -> ClassName.get(id.packageName, id.name.capitalize()) 4190ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets else -> null 4290ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets } 4390ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets } 4490ee199ee11cc50ff6abbad162cca5c4b75fa3fcSergey Vasilinets}