2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.yang2sources.plugin;
10 import com.google.common.base.Preconditions;
12 import java.util.HashMap;
14 import org.apache.maven.project.MavenProject;
17 * Base complex configuration arguments
19 public abstract class ConfigArg {
21 private final File outputBaseDir;
23 public ConfigArg(String outputBaseDir) {
24 this.outputBaseDir = outputBaseDir == null ? null : new File(outputBaseDir);
27 public File getOutputBaseDir(MavenProject project) {
28 if (outputBaseDir == null) {
31 if (outputBaseDir.isAbsolute()) {
34 return new File(project.getBasedir(), outputBaseDir.getPath());
38 public abstract void check();
41 * Configuration argument for code generator class and output directory.
43 public static final class CodeGeneratorArg extends ConfigArg {
45 private final Map<String, String> additionalConfiguration = new HashMap<>();
47 private String codeGeneratorClass;
48 private File resourceBaseDir;
50 public CodeGeneratorArg() {
54 public CodeGeneratorArg(String codeGeneratorClass) {
55 this(codeGeneratorClass, null);
58 public CodeGeneratorArg(String codeGeneratorClass, String outputBaseDir) {
60 this.codeGeneratorClass = codeGeneratorClass;
63 public CodeGeneratorArg(String codeGeneratorClass, String outputBaseDir, String resourceBaseDir) {
65 this.codeGeneratorClass = codeGeneratorClass;
66 this.resourceBaseDir = new File(resourceBaseDir);
71 Preconditions.checkNotNull(codeGeneratorClass, "codeGeneratorClass for CodeGenerator cannot be null");
74 public String getCodeGeneratorClass() {
75 return codeGeneratorClass;
78 public File getResourceBaseDir(MavenProject project) {
79 if (resourceBaseDir == null) {
80 // if it has not been set, use a default (correctly dealing with target/ VS target-ide)
81 return new GeneratedDirectories(project).getYangServicesDir();
84 return resourceBaseDir.isAbsolute() ? resourceBaseDir
85 : new File(project.getBasedir(), resourceBaseDir.getPath());
88 public Map<String, String> getAdditionalConfiguration() {
89 return additionalConfiguration;