Renamed yang-to-sources-plugin to maven-yang-plugin.
[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
12 import com.google.common.base.Preconditions;
13
14 /**
15  * Complex configuration arguments
16  */
17 public abstract class ConfigArg {
18
19     protected File outputBaseDir;
20
21     public ConfigArg(File outputBaseDir) {
22         this.outputBaseDir = outputBaseDir;
23     }
24
25     public ConfigArg() {
26     }
27
28     public File getOutputBaseDir() {
29         return outputBaseDir;
30     }
31
32     public abstract void check();
33
34     public static final class ResourceProviderArg extends ConfigArg {
35         private String resourceProviderClass;
36
37         public ResourceProviderArg() {
38         }
39
40         public ResourceProviderArg(String resourceProviderClass,
41                 File outputBaseDir) {
42             super(outputBaseDir);
43             this.resourceProviderClass = resourceProviderClass;
44         }
45
46         @Override
47         public void check() {
48             Preconditions
49                     .checkNotNull(resourceProviderClass,
50                             "resourceProviderClass for ResourceProvider cannot be null");
51             Preconditions.checkNotNull(outputBaseDir,
52                     "outputBaseDir for ResourceProvider cannot be null, "
53                             + resourceProviderClass);
54         }
55
56         public String getResourceProviderClass() {
57             return resourceProviderClass;
58         }
59     }
60
61     /**
62      * Transfer object for code generator class and output directory.
63      */
64     public static final class CodeGeneratorArg extends ConfigArg {
65         private String codeGeneratorClass;
66
67         public CodeGeneratorArg() {
68         }
69
70         public CodeGeneratorArg(String codeGeneratorClass, File outputBaseDir) {
71             super(outputBaseDir);
72             this.codeGeneratorClass = codeGeneratorClass;
73         }
74
75         @Override
76         public void check() {
77             Preconditions.checkNotNull(codeGeneratorClass,
78                     "codeGeneratorClass for CodeGenerator cannot be null");
79             Preconditions.checkNotNull(outputBaseDir,
80                     "outputBaseDir for CodeGenerator cannot be null, "
81                             + codeGeneratorClass);
82         }
83
84         public String getCodeGeneratorClass() {
85             return codeGeneratorClass;
86         }
87     }
88 }