Refactored yang-maven-plugin. Updated tests.
[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     public static final String CODE_GEN_DEFAULT_DIR = "code-generator-files/";
19     public static final String RESOURCE_GEN_DEFAULT_DIR = "resource-generator-files/";
20
21     protected File outputBaseDir;
22
23     public ConfigArg(File outputBaseDir) {
24         this.outputBaseDir = outputBaseDir;
25     }
26
27     public ConfigArg() {
28     }
29
30     public File getOutputBaseDir() {
31         return outputBaseDir;
32     }
33
34     public abstract void check();
35
36     /**
37      * Configuration argument for resource generator class and output directory.
38      */
39     public static final class ResourceProviderArg extends ConfigArg {
40         private String resourceProviderClass;
41
42         public ResourceProviderArg() {
43         }
44
45         public ResourceProviderArg(String resourceProviderClass) {
46             this(resourceProviderClass, new File(RESOURCE_GEN_DEFAULT_DIR));
47         }
48
49         public ResourceProviderArg(String resourceProviderClass,
50                 File outputBaseDir) {
51             super(outputBaseDir);
52             this.resourceProviderClass = resourceProviderClass;
53         }
54
55         @Override
56         public void check() {
57             Preconditions
58                     .checkNotNull(resourceProviderClass,
59                             "resourceProviderClass for ResourceProvider cannot be null");
60         }
61
62         public String getResourceProviderClass() {
63             return resourceProviderClass;
64         }
65     }
66
67     /**
68      * Configuration argument for code generator class and output directory.
69      */
70     public static final class CodeGeneratorArg extends ConfigArg {
71         private String codeGeneratorClass;
72
73         public CodeGeneratorArg() {
74             super(new File(CODE_GEN_DEFAULT_DIR));
75         }
76
77         public CodeGeneratorArg(String codeGeneratorClass) {
78             this(codeGeneratorClass, new File(CODE_GEN_DEFAULT_DIR));
79         }
80
81         public CodeGeneratorArg(String codeGeneratorClass, File outputBaseDir) {
82             super(outputBaseDir);
83             this.codeGeneratorClass = codeGeneratorClass;
84         }
85
86         @Override
87         public void check() {
88             Preconditions.checkNotNull(codeGeneratorClass,
89                     "codeGeneratorClass for CodeGenerator cannot be null");
90         }
91
92         public String getCodeGeneratorClass() {
93             return codeGeneratorClass;
94         }
95     }
96 }