1 /* 2 * Copyright (C) 2019 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 android.processor.compat.changeid; 18 19 /** 20 * Simple data class that represents a change, built from the code annotations. 21 */ 22 final class Change { 23 final Long id; 24 final String name; 25 final boolean disabled; 26 final boolean loggingOnly; 27 final Integer enabledAfter; 28 final String description; 29 /** 30 * Package name that the change is defined in. 31 */ 32 final String javaPackage; 33 /** 34 * Name of the class within it's package that the change is defined in. 35 */ 36 final String className; 37 /** 38 * Fully qualified class name (including the package) that the change is defined in. 39 */ 40 final String qualifiedClass; 41 /** 42 * Source position, in the form path/to/File.java:line 43 */ 44 final String sourcePosition; 45 46 Change(Long id, String name, boolean disabled, boolean loggingOnly, Integer enabledAfter, 47 String description, String javaPackage, String className, String qualifiedClass, 48 String sourcePosition) { 49 this.id = id; 50 this.name = name; 51 this.disabled = disabled; 52 this.loggingOnly = loggingOnly; 53 this.enabledAfter = enabledAfter; 54 this.description = description; 55 this.javaPackage = javaPackage; 56 this.className = className; 57 this.qualifiedClass = qualifiedClass; 58 this.sourcePosition = sourcePosition; 59 } 60 61 public static class Builder { 62 Long id; 63 String name; 64 boolean disabled; 65 boolean loggingOnly; 66 Integer enabledAfter; 67 String description; 68 String javaPackage; 69 String javaClass; 70 String qualifiedClass; 71 String sourcePosition; 72 73 Builder() { 74 } 75 76 public Builder id(long id) { 77 this.id = id; 78 return this; 79 } 80 81 public Builder name(String name) { 82 this.name = name; 83 return this; 84 } 85 86 public Builder disabled() { 87 this.disabled = true; 88 return this; 89 } 90 91 public Builder loggingOnly() { 92 this.loggingOnly = true; 93 return this; 94 } 95 96 public Builder enabledAfter(int sdkVersion) { 97 this.enabledAfter = sdkVersion; 98 return this; 99 } 100 101 public Builder description(String description) { 102 this.description = description; 103 return this; 104 } 105 106 public Builder javaPackage(String javaPackage) { 107 this.javaPackage = javaPackage; 108 return this; 109 } 110 111 public Builder javaClass(String javaClass) { 112 this.javaClass = javaClass; 113 return this; 114 } 115 116 public Builder qualifiedClass(String className) { 117 this.qualifiedClass = className; 118 return this; 119 } 120 121 public Builder sourcePosition(String sourcePosition) { 122 this.sourcePosition = sourcePosition; 123 return this; 124 } 125 126 public Change build() { 127 return new Change(id, name, disabled, loggingOnly, enabledAfter, description, 128 javaPackage, javaClass, qualifiedClass, sourcePosition); 129 } 130 } 131 } 132