blob: 50ecc2dec294df2307077589bf9cf0ae804f68cb [file] [log] [blame]
Vinod Kumar S38046502016-03-23 15:30:27 +05301/*
2 * Copyright 2016 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 */
16package org.onosproject.yangutils.translator.tojava.javamodel;
17
18import org.onosproject.yangutils.datamodel.YangTypeDef;
19import org.onosproject.yangutils.translator.tojava.HasJavaFileInfo;
20import org.onosproject.yangutils.translator.tojava.HasJavaImportData;
21import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
22import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
23import org.onosproject.yangutils.translator.tojava.JavaImportData;
24
25import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
26import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
27import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
28import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCurNodePackage;
29import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
30
31/**
32 * Type define information extended to support java code generation.
33 */
34public class YangJavaTypeDef extends YangTypeDef
35 implements JavaCodeGenerator, HasJavaFileInfo, HasJavaImportData {
36
37 /**
38 * Contains the information of the java file being generated.
39 */
40 private JavaFileInfo javaFileInfo;
41
42 /**
43 * Contains information of the imports to be inserted in the java file
44 * generated.
45 */
46 private JavaImportData javaImportData;
47
48 /**
49 * Default constructor.
50 */
51 public YangJavaTypeDef() {
52 super();
53 setJavaFileInfo(new JavaFileInfo());
54 setJavaImportData(new JavaImportData());
55 getJavaFileInfo().setGeneratedFileTypes(GENERATE_INTERFACE_WITH_BUILDER);
56 }
57
58 /**
59 * Get the generated java file information.
60 *
61 * @return generated java file information
62 */
63 @Override
64 public JavaFileInfo getJavaFileInfo() {
65 if (javaFileInfo == null) {
66 throw new RuntimeException("Missing java info in java datamodel node");
67 }
68 return javaFileInfo;
69 }
70
71 /**
72 * Set the java file info object.
73 *
74 * @param javaInfo java file info object
75 */
76 @Override
77 public void setJavaFileInfo(JavaFileInfo javaInfo) {
78 javaFileInfo = javaInfo;
79 }
80
81 /**
82 * Get the data of java imports to be included in generated file.
83 *
84 * @return data of java imports to be included in generated file
85 */
86 @Override
87 public JavaImportData getJavaImportData() {
88 return javaImportData;
89 }
90
91 /**
92 * Set the data of java imports to be included in generated file.
93 *
94 * @param javaImportData data of java imports to be included in generated
95 * file
96 */
97 @Override
98 public void setJavaImportData(JavaImportData javaImportData) {
99 this.javaImportData = javaImportData;
100 }
101
102 /**
103 * Prepare the information for java code generation corresponding to YANG
104 * container info.
105 *
106 * @param codeGenDir code generation directory
107 */
108 @Override
109 public void generateCodeEntry(String codeGenDir) {
110 getJavaFileInfo().setJavaName(getCaptialCase(getCamelCase(getName())));
111 getJavaFileInfo().setPackage(getCurNodePackage(this));
112 getJavaFileInfo().setPackageFilePath(
113 getPackageDirPathFromJavaJPackage(getJavaFileInfo().getPackage()));
114 getJavaFileInfo().setBaseCodeGenPath(codeGenDir);
115 // TODO: generate type define temporary files
116 }
117
118 /**
119 * Create a java file using the YANG grouping info.
120 */
121 @Override
122 public void generateCodeExit() {
123 // TODO Auto-generated method stub
124
125 }
126
127}