aaf7080a6234c8e6a4155b42ec8dc20d3c7cc58f
[controller.git] / opendaylight / sal / yang-prototype / code-generator / maven-yang-plugin / src / main / java / org / opendaylight / controller / yang2sources / plugin / ConfigArg.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.controller.yang2sources.plugin;
9
10 import java.io.File;
11 import java.util.Map;
12
13 import org.apache.maven.project.MavenProject;
14
15 import com.google.common.base.Preconditions;
16 import com.google.common.collect.Maps;
17
18 /**
19  * Base complex configuration arguments
20  */
21 public abstract class ConfigArg {
22
23     private final File outputBaseDir;
24
25     public ConfigArg(String outputBaseDir) {
26         this.outputBaseDir = new File(outputBaseDir);
27     }
28
29     public File getOutputBaseDir(MavenProject project) {
30         if (outputBaseDir.isAbsolute()) {
31             return outputBaseDir;
32         } else {
33             return new File(project.getBasedir(), outputBaseDir.getPath());
34         }
35     }
36
37     public abstract void check();
38
39     /**
40      * Configuration argument for code generator class and output directory.
41      */
42     public static final class CodeGeneratorArg extends ConfigArg {
43         private static final String CODE_GEN_DEFAULT_DIR = "target"
44                 + File.separator + "generated-sources";
45         private String codeGeneratorClass;
46
47         private Map<String, String> additionalConfiguration = Maps.newHashMap();
48
49         public CodeGeneratorArg() {
50             super(CODE_GEN_DEFAULT_DIR);
51         }
52
53         public CodeGeneratorArg(String codeGeneratorClass) {
54             this(codeGeneratorClass, CODE_GEN_DEFAULT_DIR);
55         }
56
57         public CodeGeneratorArg(String codeGeneratorClass, String outputBaseDir) {
58             super(outputBaseDir);
59             this.codeGeneratorClass = codeGeneratorClass;
60         }
61
62         @Override
63         public void check() {
64             Preconditions.checkNotNull(codeGeneratorClass,
65                     "codeGeneratorClass for CodeGenerator cannot be null");
66         }
67
68         public String getCodeGeneratorClass() {
69             return codeGeneratorClass;
70         }
71
72         public Map<String, String> getAdditionalConfiguration() {
73             return additionalConfiguration;
74         }
75     }
76 }