blob: 808c4c1a4e296b310e800ab368d25e96a8af22cd [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
Bharat saraswalcad0e652016-05-26 23:48:38 +053018import java.io.IOException;
19
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053020import org.onosproject.yangutils.datamodel.YangGrouping;
Bharat saraswalcad0e652016-05-26 23:48:38 +053021import org.onosproject.yangutils.translator.exception.TranslatorException;
22import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053023import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
Bharat saraswalcad0e652016-05-26 23:48:38 +053024import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
25import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053026import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
Bharat saraswalcad0e652016-05-26 23:48:38 +053027
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053028import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.updatePackageInfo;
Vinod Kumar S38046502016-03-23 15:30:27 +053029
30/**
Bharat saraswald9822e92016-04-05 15:13:44 +053031 * Represents grouping information extended to support java code generation.
Vinod Kumar S38046502016-03-23 15:30:27 +053032 */
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053033public class YangJavaGrouping
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +053034 extends YangGrouping
35 implements JavaCodeGeneratorInfo, JavaCodeGenerator {
Bharat saraswalcad0e652016-05-26 23:48:38 +053036
Bharat saraswal96dfef02016-06-16 00:29:12 +053037 private static final long serialVersionUID = 806201628L;
38
Bharat saraswalcad0e652016-05-26 23:48:38 +053039 /**
40 * Contains the information of the java file being generated.
41 */
42 private JavaFileInfo javaFileInfo;
43
44 /**
45 * File handle to maintain temporary java code fragments as per the code
46 * snippet types.
47 */
Bharat saraswal96dfef02016-06-16 00:29:12 +053048 private transient TempJavaCodeFragmentFiles tempFileHandle;
Vinod Kumar S38046502016-03-23 15:30:27 +053049
50 /**
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053051 * Creates YANG Java grouping object.
Vinod Kumar S38046502016-03-23 15:30:27 +053052 */
53 public YangJavaGrouping() {
54 super();
Bharat saraswalcad0e652016-05-26 23:48:38 +053055 setJavaFileInfo(new JavaFileInfo());
Vinod Kumar S38046502016-03-23 15:30:27 +053056 }
Bharat saraswalcad0e652016-05-26 23:48:38 +053057
58 /**
59 * Returns 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 TranslatorException("Missing java info in java datamodel node");
67 }
68 return javaFileInfo;
69 }
70
71 /**
72 * Sets 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 * Returns the temporary file handle.
83 *
84 * @return temporary file handle
85 */
86 @Override
87 public TempJavaCodeFragmentFiles getTempJavaCodeFragmentFiles() {
88 return tempFileHandle;
89 }
90
91 /**
92 * Sets temporary file handle.
93 *
94 * @param fileHandle temporary file handle
95 */
96 @Override
97 public void setTempJavaCodeFragmentFiles(TempJavaCodeFragmentFiles fileHandle) {
98 tempFileHandle = fileHandle;
99 }
100
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530101
Bharat saraswalcad0e652016-05-26 23:48:38 +0530102 @Override
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530103 public void generateCodeEntry(YangPluginConfig yangPlugin)
104 throws TranslatorException {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530105 try {
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530106 updatePackageInfo(this, yangPlugin);
Bharat saraswalcad0e652016-05-26 23:48:38 +0530107 } catch (IOException e) {
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530108 throw new TranslatorException(e.getCause());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530109 }
110 }
111
Bharat saraswalcad0e652016-05-26 23:48:38 +0530112 @Override
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530113 public void generateCodeExit()
114 throws TranslatorException {
115 /*
116 * Do nothing.
117 */
Bharat saraswalcad0e652016-05-26 23:48:38 +0530118 }
Vinod Kumar S38046502016-03-23 15:30:27 +0530119}