Merge "Refactor frontend JS"
[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  * Base 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     /**
35      * Configuration argument for resource generator class and output directory.
36      */
37     public static final class ResourceProviderArg extends ConfigArg {
38         private String resourceProviderClass;
39
40         public ResourceProviderArg() {
41         }
42
43         public ResourceProviderArg(String resourceProviderClass,
44                 File outputBaseDir) {
45             super(outputBaseDir);
46             this.resourceProviderClass = resourceProviderClass;
47         }
48
49         @Override
50         public void check() {
51             Preconditions
52                     .checkNotNull(resourceProviderClass,
53                             "resourceProviderClass for ResourceProvider cannot be null");
54             Preconditions.checkNotNull(outputBaseDir,
55                     "outputBaseDir for ResourceProvider cannot be null, "
56                             + resourceProviderClass);
57         }
58
59         public String getResourceProviderClass() {
60             return resourceProviderClass;
61         }
62     }
63
64     /**
65      * Configuration argument for code generator class and output directory.
66      */
67     public static final class CodeGeneratorArg extends ConfigArg {
68         private String codeGeneratorClass;
69
70         public CodeGeneratorArg() {
71         }
72
73         public CodeGeneratorArg(String codeGeneratorClass, File outputBaseDir) {
74             super(outputBaseDir);
75             this.codeGeneratorClass = codeGeneratorClass;
76         }
77
78         @Override
79         public void check() {
80             Preconditions.checkNotNull(codeGeneratorClass,
81                     "codeGeneratorClass for CodeGenerator cannot be null");
82             Preconditions.checkNotNull(outputBaseDir,
83                     "outputBaseDir for CodeGenerator cannot be null, "
84                             + codeGeneratorClass);
85         }
86
87         public String getCodeGeneratorClass() {
88             return codeGeneratorClass;
89         }
90     }
91 }