package org.opendaylight.controller.yang2sources.plugin;
import java.io.File;
+import java.util.Map;
+
+import org.apache.maven.project.MavenProject;
import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
/**
* Base complex configuration arguments
*/
public abstract class ConfigArg {
- protected File outputBaseDir;
-
- public ConfigArg(File outputBaseDir) {
- this.outputBaseDir = outputBaseDir;
- }
+ private final File outputBaseDir;
- public ConfigArg() {
+ public ConfigArg(String outputBaseDir) {
+ this.outputBaseDir = outputBaseDir == null ? null : new File(outputBaseDir);
}
- public File getOutputBaseDir() {
- return outputBaseDir;
+ public File getOutputBaseDir(MavenProject project) {
+ if (outputBaseDir == null) {
+ return null;
+ }
+ if (outputBaseDir.isAbsolute()) {
+ return outputBaseDir;
+ } else {
+ return new File(project.getBasedir(), outputBaseDir.getPath());
+ }
}
public abstract void check();
/**
- * Configuration argument for resource generator class and output directory.
+ * Configuration argument for code generator class and output directory.
*/
- public static final class ResourceProviderArg extends ConfigArg {
- private String resourceProviderClass;
+ public static final class CodeGeneratorArg extends ConfigArg {
+ private static final String CODE_GEN_DEFAULT_RESOURCE_DIR = "target" + File.separator + "generated-resources";
- public ResourceProviderArg() {
- }
+ private String codeGeneratorClass;
+ private File resourceBaseDir = new File(CODE_GEN_DEFAULT_RESOURCE_DIR);
- public ResourceProviderArg(String resourceProviderClass,
- File outputBaseDir) {
- super(outputBaseDir);
- this.resourceProviderClass = resourceProviderClass;
- }
+ private Map<String, String> additionalConfiguration = Maps.newHashMap();
- @Override
- public void check() {
- Preconditions
- .checkNotNull(resourceProviderClass,
- "resourceProviderClass for ResourceProvider cannot be null");
- Preconditions.checkNotNull(outputBaseDir,
- "outputBaseDir for ResourceProvider cannot be null, "
- + resourceProviderClass);
+ public CodeGeneratorArg() {
+ super(null);
}
- public String getResourceProviderClass() {
- return resourceProviderClass;
+ public CodeGeneratorArg(String codeGeneratorClass) {
+ this(codeGeneratorClass, null);
}
- }
-
- /**
- * Configuration argument for code generator class and output directory.
- */
- public static final class CodeGeneratorArg extends ConfigArg {
- private String codeGeneratorClass;
- public CodeGeneratorArg() {
+ public CodeGeneratorArg(String codeGeneratorClass, String outputBaseDir) {
+ super(outputBaseDir);
+ this.codeGeneratorClass = codeGeneratorClass;
}
- public CodeGeneratorArg(String codeGeneratorClass, File outputBaseDir) {
+ public CodeGeneratorArg(String codeGeneratorClass, String outputBaseDir, String resourceBaseDir) {
super(outputBaseDir);
this.codeGeneratorClass = codeGeneratorClass;
+ this.resourceBaseDir = new File(resourceBaseDir);
}
@Override
public void check() {
- Preconditions.checkNotNull(codeGeneratorClass,
- "codeGeneratorClass for CodeGenerator cannot be null");
- Preconditions.checkNotNull(outputBaseDir,
- "outputBaseDir for CodeGenerator cannot be null, "
- + codeGeneratorClass);
+ Preconditions.checkNotNull(codeGeneratorClass, "codeGeneratorClass for CodeGenerator cannot be null");
}
public String getCodeGeneratorClass() {
return codeGeneratorClass;
}
+
+ public File getResourceBaseDir(MavenProject project) {
+ if (resourceBaseDir.isAbsolute()) {
+ return resourceBaseDir;
+ } else {
+ return new File(project.getBasedir(), resourceBaseDir.getPath());
+ }
+ }
+
+ public Map<String, String> getAdditionalConfiguration() {
+ return additionalConfiguration;
+ }
}
-}
\ No newline at end of file
+}