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 {
- public static final String CODE_GEN_DEFAULT_DIR = "code-generator-files/";
- public static final String RESOURCE_GEN_DEFAULT_DIR = "resource-generator-files/";
-
- protected File outputBaseDir;
-
- public ConfigArg(File outputBaseDir) {
- this.outputBaseDir = outputBaseDir;
- }
- public ConfigArg() {
- }
+ private final File outputBaseDir;
- public File getOutputBaseDir() {
- return outputBaseDir;
+ public ConfigArg(String outputBaseDir) {
+ this.outputBaseDir = outputBaseDir == null ? null : new File(outputBaseDir);
}
- public abstract void check();
-
- /**
- * Configuration argument for resource generator class and output directory.
- */
- public static final class ResourceProviderArg extends ConfigArg {
- private String resourceProviderClass;
-
- public ResourceProviderArg() {
- }
-
- public ResourceProviderArg(String resourceProviderClass) {
- this(resourceProviderClass, new File(RESOURCE_GEN_DEFAULT_DIR));
- }
-
- public ResourceProviderArg(String resourceProviderClass,
- File outputBaseDir) {
- super(outputBaseDir);
- this.resourceProviderClass = resourceProviderClass;
- }
-
- @Override
- public void check() {
- Preconditions
- .checkNotNull(resourceProviderClass,
- "resourceProviderClass for ResourceProvider cannot be null");
+ public File getOutputBaseDir(MavenProject project) {
+ if (outputBaseDir == null) {
+ return null;
}
-
- public String getResourceProviderClass() {
- return resourceProviderClass;
+ if (outputBaseDir.isAbsolute()) {
+ return outputBaseDir;
+ } else {
+ return new File(project.getBasedir(), outputBaseDir.getPath());
}
}
+ public abstract void check();
+
/**
* Configuration argument for code generator class and output directory.
*/
public static final class CodeGeneratorArg extends ConfigArg {
+ private static final String CODE_GEN_DEFAULT_RESOURCE_DIR = "target" + File.separator + "generated-resources";
+
private String codeGeneratorClass;
+ private File resourceBaseDir = new File(CODE_GEN_DEFAULT_RESOURCE_DIR);
+
+ private Map<String, String> additionalConfiguration = Maps.newHashMap();
public CodeGeneratorArg() {
- super(new File(CODE_GEN_DEFAULT_DIR));
+ super(null);
}
public CodeGeneratorArg(String codeGeneratorClass) {
- this(codeGeneratorClass, new File(CODE_GEN_DEFAULT_DIR));
+ this(codeGeneratorClass, null);
}
- public CodeGeneratorArg(String codeGeneratorClass, File outputBaseDir) {
+ public CodeGeneratorArg(String codeGeneratorClass, String outputBaseDir) {
super(outputBaseDir);
this.codeGeneratorClass = codeGeneratorClass;
}
+ 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(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
+}