1 package org.apache.torque.generator.configuration; 2 3 /* 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 22 import org.apache.torque.generator.configuration.controller.Loglevel; 23 import org.apache.torque.generator.configuration.option.OptionsConfiguration; 24 import org.apache.torque.generator.configuration.paths.ProjectPaths; 25 import org.apache.torque.generator.configuration.paths.TorqueGeneratorPaths; 26 import org.apache.torque.generator.source.SourceProvider; 27 28 /** 29 * Contains all necessary information about a generation unit. 30 */ 31 public class UnitDescriptor 32 { 33 /** 34 * Possible packaging forms of a unit of generation. 35 */ 36 public enum Packaging 37 { 38 /** the generation unit is provided as a jar file .*/ 39 JAR, 40 /** the generation unit is provided in a local directory. */ 41 DIRECTORY, 42 /** the generation unit is provided in the classpath. */ 43 CLASSPATH 44 } 45 46 /** 47 * The packaging of the generation unit. 48 */ 49 private Packaging packaging; 50 51 /** 52 * The paths the Torque generator must know about the surrounding project. 53 */ 54 private ProjectPaths projectPaths; 55 56 /** 57 * How the Torque generator's configuration is organized internally. 58 */ 59 private TorqueGeneratorPaths configurationPaths; 60 61 /** 62 * The parent of this generation unit, or null if it has no parent. 63 */ 64 private UnitDescriptor inheritsFrom; 65 66 /** Overrides the source defined in the control file. */ 67 private SourceProvider overrideSourceProvider; 68 69 /** Options to override the settings in the project Directory. */ 70 private OptionsConfiguration overrideOptions; 71 72 /** 73 * The Loglevel to override the loglevel in the Torque 74 * generator configuration. 75 */ 76 private Loglevel loglevel; 77 78 /** 79 * The output encoding if no specific encoding has been set in the output; 80 * null for the default platform encoding. 81 */ 82 private String defaultOutputEncoding = null; 83 84 /** 85 * Constructor without inheritance, override options, overrideSourceFileset 86 * and loglevel. 87 * 88 * @param packaging The packaging of the generation unit, not null. 89 * @param projectPaths The paths the Torque generator must know about 90 * the surrounding project, not null. 91 * @param configurationPaths The paths within the configuration 92 * of the configuration unit, not null. 93 */ 94 public UnitDescriptor( 95 Packaging packaging, 96 ProjectPaths projectPaths, 97 TorqueGeneratorPaths configurationPaths) 98 { 99 if (packaging == null) 100 { 101 throw new NullPointerException("packaging must not be null"); 102 } 103 if (projectPaths == null) 104 { 105 throw new NullPointerException( 106 "projectPaths must not be null"); 107 } 108 if (configurationPaths == null) 109 { 110 throw new NullPointerException( 111 "configurationPaths must not be null"); 112 } 113 114 this.packaging = packaging; 115 this.projectPaths = projectPaths; 116 this.configurationPaths = configurationPaths; 117 } 118 119 /** 120 * Returns the packaging of the unit of generation. 121 * 122 * @return the packaging of the unit of generation, not null. 123 */ 124 public Packaging getPackaging() 125 { 126 return packaging; 127 } 128 129 /** 130 * Returns the paths which the Torque generator must know about the 131 * surrounding project. 132 * 133 * @return the paths of the surrounding project, not null. 134 */ 135 public ProjectPaths getProjectPaths() 136 { 137 return projectPaths; 138 } 139 140 /** 141 * Returns the paths in the configuration of this generation unit. 142 * @return the paths in the configuration of this generation unit, 143 * not null. 144 */ 145 public TorqueGeneratorPaths getConfigurationPaths() 146 { 147 return configurationPaths; 148 } 149 150 /** 151 * Returns the descriptor of the generation unit from which this generation 152 * unit inherits, or null if this generation unit does not inherit from 153 * another generation unit. 154 * 155 * @return the parents unit descriptor, or null if no parent exists. 156 */ 157 public UnitDescriptor getInheritsFrom() 158 { 159 return inheritsFrom; 160 } 161 162 /** 163 * Sets the descriptor of the generation unit from which this generation 164 * unit inherits. 165 * 166 * @param inheritsFrom the parents unit descriptor, 167 * or null if no parent exists. 168 */ 169 public void setInheritsFrom(UnitDescriptor inheritsFrom) 170 { 171 this.inheritsFrom = inheritsFrom; 172 } 173 174 /** 175 * Returns the source provider overriding the source defined in the 176 * control file, or null if the control file definition 177 * is not overridden. 178 * 179 * @return the overriding source provider, or null. 180 */ 181 public SourceProvider getOverrideSourceProvider() 182 { 183 return overrideSourceProvider; 184 } 185 186 /** 187 * Sets the source provider overriding the source defined in the 188 * control file. 189 * 190 * @param overrideSourceProvider the overriding source provider, 191 * or null if the control file definition is not overridden. 192 */ 193 public void setOverrideSourceProvider(SourceProvider overrideSourceProvider) 194 { 195 this.overrideSourceProvider = overrideSourceProvider; 196 } 197 198 /** 199 * Returns the configuration of the overriding options, if any. 200 * 201 * @return the configuration of the overriding options, or null. 202 */ 203 public OptionsConfiguration getOverrideOptions() 204 { 205 return overrideOptions; 206 } 207 208 /** 209 * Sets the configuration of the overriding options, if any. 210 * 211 * @param overrideOptions the configuration of the overriding options, 212 * or null. 213 */ 214 public void setOverrideOptions(OptionsConfiguration overrideOptions) 215 { 216 this.overrideOptions = overrideOptions; 217 } 218 219 /** 220 * Returns the log level overriding the loglevel defined in the 221 * configuration unit. 222 * 223 * @return the log level, or null. 224 */ 225 public Loglevel getLoglevel() 226 { 227 return loglevel; 228 } 229 230 /** 231 * Sets the log level overriding the loglevel defined in the 232 * configuration unit. 233 * 234 * @param loglevel the log level, or null. 235 */ 236 public void setLoglevel(Loglevel loglevel) 237 { 238 this.loglevel = loglevel; 239 } 240 241 /** 242 * Returns the output encoding if no specific encoding has been set 243 * in the output. 244 * 245 * @return the default output encoding, null for the default 246 * platform encoding. 247 */ 248 public String getDefaultOutputEncoding() 249 { 250 return defaultOutputEncoding; 251 } 252 253 /** 254 * Sets the output encoding which is used if no specific encoding 255 * has been set in the output. 256 * 257 * @param defaultOutputEncoding the default output encoding, 258 * null for the default platform encoding. 259 */ 260 public void setDefaultOutputEncoding(String defaultOutputEncoding) 261 { 262 this.defaultOutputEncoding = defaultOutputEncoding; 263 } 264 }