blob: cc29a74bce32ce8a70ba6fb41f464cf92401132b [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.YangUses;
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 * Uses information extended to support java code generation.
33 */
34public class YangJavaUses extends YangUses implements JavaCodeGenerator, HasJavaFileInfo, HasJavaImportData {
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 * Default constructor.
49 */
50 public YangJavaUses() {
51 super();
52 setJavaFileInfo(new JavaFileInfo());
53 setJavaImportData(new JavaImportData());
54 getJavaFileInfo().setGeneratedFileTypes(GENERATE_INTERFACE_WITH_BUILDER);
55 }
56
57 /**
58 * Get the generated java file information.
59 *
60 * @return generated java file information
61 */
62 @Override
63 public JavaFileInfo getJavaFileInfo() {
64 if (javaFileInfo == null) {
65 throw new RuntimeException("Missing java info in java datamodel node");
66 }
67 return javaFileInfo;
68 }
69
70 /**
71 * Set the java file info object.
72 *
73 * @param javaInfo java file info object
74 */
75 @Override
76 public void setJavaFileInfo(JavaFileInfo javaInfo) {
77 javaFileInfo = javaInfo;
78 }
79
80 /**
81 * Get the data of java imports to be included in generated file.
82 *
83 * @return data of java imports to be included in generated file
84 */
85 @Override
86 public JavaImportData getJavaImportData() {
87 return javaImportData;
88 }
89
90 /**
91 * Set the data of java imports to be included in generated file.
92 *
93 * @param javaImportData data of java imports to be included in generated
94 * file
95 */
96 @Override
97 public void setJavaImportData(JavaImportData javaImportData) {
98 this.javaImportData = javaImportData;
99 }
100
101 /**
102 * Prepare the information for java code generation corresponding to YANG
103 * container info.
104 *
105 * @param codeGenDir code generation directory
106 */
107 @Override
108 public void generateCodeEntry(String codeGenDir) {
109 getJavaFileInfo().setJavaName(getCaptialCase(getCamelCase(getName())));
110 getJavaFileInfo().setPackage(getCurNodePackage(this));
111 getJavaFileInfo().setPackageFilePath(
112 getPackageDirPathFromJavaJPackage(getJavaFileInfo().getPackage()));
113 getJavaFileInfo().setBaseCodeGenPath(codeGenDir);
114 //TODO:addCurNodeLeavesInfoToTempFiles(this);
115 //TODO:addCurNodeInfoInParentTempFile(this, false);
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}