blob: ccb82c68c20f37828dde55201e6c2c640b6cbf56 [file] [log] [blame]
Bharat saraswal68fa0d12016-04-19 01:00:16 +05301/*
2 * Copyright 2016-present Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yangutils.translator.tojava.javamodel;
18
19import java.io.IOException;
Bharat saraswal68fa0d12016-04-19 01:00:16 +053020import org.onosproject.yangutils.datamodel.YangEnumeration;
21import org.onosproject.yangutils.translator.exception.TranslatorException;
22import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
23import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
24import org.onosproject.yangutils.translator.tojava.JavaImportData;
25import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
26import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
27
28import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +053029import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode;
Bharat saraswal68fa0d12016-04-19 01:00:16 +053030
31/**
32 * Represents YANG java enumeration information extended to support java code generation.
33 */
34public class YangJavaEnumeration extends YangEnumeration implements JavaCodeGenerator, JavaCodeGeneratorInfo {
35
36 /**
37 * Contains the information of the java file being generated.
38 */
39 private JavaFileInfo javaFileInfo;
40
41 /**
42 * Contains information of the imports to be inserted in the java file
43 * generated.
44 */
45 private JavaImportData javaImportData;
46
47 /**
48 * File handle to maintain temporary java code fragments as per the code
49 * snippet types.
50 */
51 private TempJavaCodeFragmentFiles tempFileHandle;
52
53 /**
54 * Creates YANG java enumeration object.
55 */
56 public YangJavaEnumeration() {
57 super();
58 setJavaFileInfo(new JavaFileInfo());
59 setJavaImportData(new JavaImportData());
60 getJavaFileInfo().setGeneratedFileTypes(GENERATE_ENUM_CLASS);
61 }
62
63 /**
64 * Returns the generated java file information.
65 *
66 * @return generated java file information
67 */
68 @Override
69 public JavaFileInfo getJavaFileInfo() {
70
71 if (javaFileInfo == null) {
72 throw new TranslatorException("Missing java info in java datamodel node");
73 }
74 return javaFileInfo;
75 }
76
77 /**
78 * Sets the java file info object.
79 *
80 * @param javaInfo java file info object
81 */
82 @Override
83 public void setJavaFileInfo(JavaFileInfo javaInfo) {
84
85 javaFileInfo = javaInfo;
86 }
87
88 /**
89 * Returns the data of java imports to be included in generated file.
90 *
91 * @return data of java imports to be included in generated file
92 */
93 @Override
94 public JavaImportData getJavaImportData() {
95
96 return javaImportData;
97 }
98
99 /**
100 * Sets the data of java imports to be included in generated file.
101 *
102 * @param javaImportData data of java imports to be included in generated
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530103 * file
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530104 */
105 @Override
106 public void setJavaImportData(JavaImportData javaImportData) {
107
108 this.javaImportData = javaImportData;
109 }
110
111 /**
112 * Returns the temporary file handle.
113 *
114 * @return temporary file handle
115 */
116 @Override
117 public TempJavaCodeFragmentFiles getTempJavaCodeFragmentFiles() {
118
119 return tempFileHandle;
120 }
121
122 /**
123 * Sets temporary file handle.
124 *
125 * @param fileHandle temporary file handle
126 */
127 @Override
128 public void setTempJavaCodeFragmentFiles(TempJavaCodeFragmentFiles fileHandle) {
129
130 tempFileHandle = fileHandle;
131 }
132
133 /**
134 * Prepare the information for java code generation corresponding to YANG
135 * enumeration info.
136 *
137 * @param yangPlugin YANG plugin config
138 * @throws IOException IO operations fails
139 */
140 @Override
141 public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException {
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530142 generateCodeOfNode(this, yangPlugin);
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530143 }
144
145 /**
146 * Creates a java file using the YANG enumeration info.
147 *
148 * @throws IOException IO operation fail
149 */
150 @Override
151 public void generateCodeExit() throws IOException {
152 getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_ENUM_CLASS, this);
153 }
154
155}