blob: 6531eb4e78205c21330211863ece61abd238a841 [file] [log] [blame]
Vinod Kumar S38046502016-03-23 15:30:27 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Vinod Kumar S38046502016-03-23 15:30:27 +05303 *
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;
Bharat saraswal6ef0b762016-04-05 12:45:45 +053019import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S38046502016-03-23 15:30:27 +053020import org.onosproject.yangutils.translator.tojava.HasJavaFileInfo;
21import org.onosproject.yangutils.translator.tojava.HasJavaImportData;
22import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
23import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
24import org.onosproject.yangutils.translator.tojava.JavaImportData;
25
26import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
27import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
28import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
29import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCurNodePackage;
30import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
31
32/**
33 * Uses information extended to support java code generation.
34 */
35public class YangJavaUses extends YangUses 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 YangJavaUses() {
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() {
Bharat saraswal6ef0b762016-04-05 12:45:45 +053065
Vinod Kumar S38046502016-03-23 15:30:27 +053066 if (javaFileInfo == null) {
Bharat saraswal6ef0b762016-04-05 12:45:45 +053067 throw new TranslatorException("Missing java info in java datamodel node");
Vinod Kumar S38046502016-03-23 15:30:27 +053068 }
69 return javaFileInfo;
70 }
71
72 /**
73 * Set the java file info object.
74 *
75 * @param javaInfo java file info object
76 */
77 @Override
78 public void setJavaFileInfo(JavaFileInfo javaInfo) {
79 javaFileInfo = javaInfo;
80 }
81
82 /**
83 * Get the data of java imports to be included in generated file.
84 *
85 * @return data of java imports to be included in generated file
86 */
87 @Override
88 public JavaImportData getJavaImportData() {
89 return javaImportData;
90 }
91
92 /**
93 * Set the data of java imports to be included in generated file.
94 *
95 * @param javaImportData data of java imports to be included in generated
96 * file
97 */
98 @Override
99 public void setJavaImportData(JavaImportData javaImportData) {
100 this.javaImportData = javaImportData;
101 }
102
103 /**
104 * Prepare the information for java code generation corresponding to YANG
105 * container info.
106 *
107 * @param codeGenDir code generation directory
108 */
109 @Override
110 public void generateCodeEntry(String codeGenDir) {
Bharat saraswal6ef0b762016-04-05 12:45:45 +0530111
Vinod Kumar S38046502016-03-23 15:30:27 +0530112 getJavaFileInfo().setJavaName(getCaptialCase(getCamelCase(getName())));
113 getJavaFileInfo().setPackage(getCurNodePackage(this));
114 getJavaFileInfo().setPackageFilePath(
115 getPackageDirPathFromJavaJPackage(getJavaFileInfo().getPackage()));
116 getJavaFileInfo().setBaseCodeGenPath(codeGenDir);
117 //TODO:addCurNodeLeavesInfoToTempFiles(this);
118 //TODO:addCurNodeInfoInParentTempFile(this, false);
119 }
120
121 /**
122 * Create a java file using the YANG grouping info.
123 */
124 @Override
125 public void generateCodeExit() {
126 // TODO Auto-generated method stub
127
128 }
129}