blob: 434e09f921337f780e3d91592833af1f00a06aeb [file] [log] [blame]
Bharat saraswal4bf8b152016-02-25 02:26:43 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal4bf8b152016-02-25 02:26:43 +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 */
16
17package org.onosproject.yangutils.translator.tojava.utils;
18
19import java.io.File;
20import java.io.IOException;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +053021import java.util.ArrayList;
Bharat saraswal4bf8b152016-02-25 02:26:43 +053022import java.util.List;
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053023
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053024import org.onosproject.yangutils.datamodel.YangAugmentableNode;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053025import org.onosproject.yangutils.datamodel.YangChoice;
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053026import org.onosproject.yangutils.datamodel.YangDerivedInfo;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053027import org.onosproject.yangutils.datamodel.YangLeavesHolder;
Bharat saraswald50c6382016-07-14 21:57:13 +053028import org.onosproject.yangutils.datamodel.YangModule;
Vinod Kumar S38046502016-03-23 15:30:27 +053029import org.onosproject.yangutils.datamodel.YangNode;
Bharat saraswale707f032016-07-14 23:33:55 +053030import org.onosproject.yangutils.datamodel.YangSubModule;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053031import org.onosproject.yangutils.datamodel.YangType;
Bharat saraswald50c6382016-07-14 21:57:13 +053032import org.onosproject.yangutils.datamodel.YangTypeDef;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053033import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
34import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053035import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswalb551aae2016-07-14 15:18:20 +053036import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Bharat saraswalb1170bd2016-07-14 13:26:18 +053037import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053038import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053039import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053040import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
Bharat saraswalc0e04842016-05-12 13:16:57 +053041import org.onosproject.yangutils.translator.tojava.TempJavaEnumerationFragmentFiles;
Bharat saraswald50c6382016-07-14 21:57:13 +053042import org.onosproject.yangutils.translator.tojava.TempJavaEventFragmentFiles;
Bharat saraswal33dfa012016-05-17 19:59:16 +053043import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
Bharat saraswale707f032016-07-14 23:33:55 +053044import org.onosproject.yangutils.translator.tojava.TempJavaTypeFragmentFiles;
Vinod Kumar S38046502016-03-23 15:30:27 +053045
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053046import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
47import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS;
Vinod Kumar S38046502016-03-23 15:30:27 +053048import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
49import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053050import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.DEFAULT_CLASS_MASK;
Bharat saraswald72411a2016-04-19 01:00:16 +053051import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053052import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
53import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
Bharat saraswal33dfa012016-05-17 19:59:16 +053054import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053055import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Vinod Kumar S38046502016-03-23 15:30:27 +053056import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053057import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
Vinod Kumar S38046502016-03-23 15:30:27 +053058import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053059import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ADD_TO_LIST_IMPL_MASK;
60import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ADD_TO_LIST_INTERFACE_MASK;
Vinod Kumar S38046502016-03-23 15:30:27 +053061import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ATTRIBUTES_MASK;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053062import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_FOR_TYPE_MASK;
Vinod Kumar S38046502016-03-23 15:30:27 +053063import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_IMPL_MASK;
Bharat saraswald72411a2016-04-19 01:00:16 +053064import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ENUM_IMPL_MASK;
Vinod Kumar S38046502016-03-23 15:30:27 +053065import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EQUALS_IMPL_MASK;
Bharat saraswal33dfa012016-05-17 19:59:16 +053066import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_ENUM_MASK;
67import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_METHOD_MASK;
68import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_SUBJECT_ATTRIBUTE_MASK;
69import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_SUBJECT_GETTER_MASK;
70import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_SUBJECT_SETTER_MASK;
Gaurav Agrawal56527662016-04-20 15:49:17 +053071import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FROM_STRING_IMPL_MASK;
Vinod Kumar S38046502016-03-23 15:30:27 +053072import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_CLASS_MASK;
73import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_INTERFACE_MASK;
74import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.HASH_CODE_IMPL_MASK;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053075import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053076import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.OF_STRING_IMPL_MASK;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053077import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_INTERFACE_MASK;
Vinod Kumar S38046502016-03-23 15:30:27 +053078import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK;
79import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
80import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053081import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053082import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.getQualifiedTypeInfoOfCurNode;
Bharat saraswalb551aae2016-07-14 15:18:20 +053083import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getCurNodeAsAttributeInTarget;
Bharat saraswalb1170bd2016-07-14 13:26:18 +053084import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEnumsValueAttribute;
Bharat saraswalb551aae2016-07-14 15:18:20 +053085import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEventEnumTypeStart;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053086import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationAttributeForConstructor;
87import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationAttributes;
88import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationTypeAttr;
89import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationTypeEnum;
90import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationTypeForConstructor;
Bharat saraswalb551aae2016-07-14 15:18:20 +053091import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getDataFromTempFileHandle;
Bharat saraswale2d51d62016-03-23 19:40:35 +053092import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.initiateJavaFileGeneration;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053093import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.builderMethod;
Bharat saraswalb551aae2016-07-14 15:18:20 +053094import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddAugmentInfoMethodImpl;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053095import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddAugmentInfoMethodInterface;
Bharat saraswalb551aae2016-07-14 15:18:20 +053096import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentsDataMethodForService;
Vinod Kumar S38046502016-03-23 15:30:27 +053097import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructorStart;
Bharat saraswalb1170bd2016-07-14 13:26:18 +053098import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEnumsConstructor;
Bharat saraswalc0e04842016-05-12 13:16:57 +053099import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEnumsOfMethod;
Vinod Kumar S38046502016-03-23 15:30:27 +0530100import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEqualsMethodClose;
101import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEqualsMethodOpen;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530102import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getFromStringMethodClose;
103import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getFromStringMethodSignature;
Bharat saraswald72411a2016-04-19 01:00:16 +0530104import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetter;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530105import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterForOperationType;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530106import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterString;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530107import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGettersForValueAndSelectLeaf;
Vinod Kumar S38046502016-03-23 15:30:27 +0530108import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethodClose;
109import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethodOpen;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530110import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getInterfaceLeafIdEnumMethods;
111import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getInterfaceLeafIdEnumSignature;
Bharat saraswald50c6382016-07-14 21:57:13 +0530112import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getIsFilterContentMatch;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530113import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOmitNullValueString;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530114import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOperationAttributesGetters;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530115import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOverRideString;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530116import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRangeValidatorMethodForUnion;
117import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForOperationType;
118import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForSelectLeaf;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530119import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterString;
Vinod Kumar S38046502016-03-23 15:30:27 +0530120import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodClose;
121import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodOpen;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530122import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoImpl;
123import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoInterface;
124import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoMapImpl;
125import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoMapInterface;
126import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.isFilterContentMatchInterface;
127import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.isLeafValueSetInterface;
128import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.isSelectLeafSetInterface;
129import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.setSelectLeafSetInterface;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530130import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
Bharat saraswale707f032016-07-14 23:33:55 +0530131import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530132import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
133import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530134import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswald72411a2016-04-19 01:00:16 +0530135import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530136import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
137import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530138import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
Bharat saraswald50c6382016-07-14 21:57:13 +0530139import static org.onosproject.yangutils.utils.UtilConstants.ENCODE_TO_STRING;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530140import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_STRING;
141import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530142import static org.onosproject.yangutils.utils.UtilConstants.EVENT_SUBJECT_NAME_SUFFIX;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530143import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530144import static org.onosproject.yangutils.utils.UtilConstants.GET_ENCODER;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530145import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
Bharat saraswald72411a2016-04-19 01:00:16 +0530146import static org.onosproject.yangutils.utils.UtilConstants.INT;
Bharat saraswald50c6382016-07-14 21:57:13 +0530147import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_IMPORT_BASE64_CLASS;
148import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_OBJECTS_IMPORT_PKG;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530149import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswald50c6382016-07-14 21:57:13 +0530150import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530151import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530152import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
Bharat saraswald50c6382016-07-14 21:57:13 +0530153import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
154import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
155import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530156import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Bharat saraswald50c6382016-07-14 21:57:13 +0530157import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
158import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_METHOD_STRING;
159import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530160import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
161import static org.onosproject.yangutils.utils.UtilConstants.TO;
Bharat saraswald72411a2016-04-19 01:00:16 +0530162import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
163import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530164import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530165import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530166import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
Bharat saraswald72411a2016-04-19 01:00:16 +0530167import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530168import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.validateLineLength;
Bharat saraswale707f032016-07-14 23:33:55 +0530169import static java.util.Collections.sort;
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530170
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530171/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530172 * Representation of java file generator.
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530173 */
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530174public final class JavaFileGenerator {
175
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530176 private JavaFileGenerator() {
177 }
178
179 /**
180 * Returns generated interface file for current node.
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530181 *
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530182 * @param file file
183 * @param imports imports for the file
184 * @param curNode current YANG node
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530185 * @param isAttrPresent if any attribute is present or not
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530186 * @return interface file
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530187 * @throws IOException when fails to write in file
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530188 */
Bharat saraswalc0e04842016-05-12 13:16:57 +0530189 public static File generateInterfaceFile(File file, List<String> imports, YangNode curNode,
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530190 boolean isAttrPresent)
Bharat saraswal2f11f652016-03-25 18:19:46 +0530191 throws IOException {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530192
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530193 JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
Bharat saraswald50c6382016-07-14 21:57:13 +0530194
195 String path;
Bharat saraswale707f032016-07-14 23:33:55 +0530196 if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
Bharat saraswald50c6382016-07-14 21:57:13 +0530197 path = javaFileInfo.getPluginConfig().getCodeGenDir() + javaFileInfo.getPackageFilePath();
198 } else {
199 path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
200 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530201
janani b4a6711a2016-05-17 13:12:22 +0530202 String className = getCapitalCase(javaFileInfo.getJavaName());
Vinod Kumar S38046502016-03-23 15:30:27 +0530203
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530204 boolean isLeavesPresent;
205 YangLeavesHolder leavesHolder;
206 if (curNode instanceof YangLeavesHolder) {
207 leavesHolder = (YangLeavesHolder) curNode;
208 isLeavesPresent = leavesHolder.getListOfLeaf() != null && !leavesHolder.getListOfLeaf().isEmpty()
209 || leavesHolder.getListOfLeafList() != null && !leavesHolder.getListOfLeafList().isEmpty();
210 } else {
211 isLeavesPresent = false;
212 }
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530213
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530214 initiateJavaFileGeneration(file, INTERFACE_MASK, imports, curNode, className);
215 List<String> methods = new ArrayList<>();
Bharat saraswal2f11f652016-03-25 18:19:46 +0530216 if (isAttrPresent) {
Bharat saraswale707f032016-07-14 23:33:55 +0530217 // Add getter methods to interface file.
Bharat saraswal2f11f652016-03-25 18:19:46 +0530218 try {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530219 //Leaf identifier enum.
220 if (isLeavesPresent) {
221 insertDataIntoJavaFile(file, NEW_LINE + getInterfaceLeafIdEnumSignature(className) + NEW_LINE +
222 trimAtLast(trimAtLast(
223 getDataFromTempFileHandle(LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK,
224 ((TempJavaCodeFragmentFilesContainer) curNode)
225 .getTempJavaCodeFragmentFiles()
226 .getBeanTempFiles(), path), COMMA), NEW_LINE) + SEMI_COLAN
227 + NEW_LINE + NEW_LINE + getInterfaceLeafIdEnumMethods());
228 }
229
Bharat saraswale707f032016-07-14 23:33:55 +0530230 //Getter methods.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530231 insertDataIntoJavaFile(file, getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK,
232 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530233 .getBeanTempFiles(), path));
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530234 //Add to list method.
235 insertDataIntoJavaFile(file, getDataFromTempFileHandle(ADD_TO_LIST_INTERFACE_MASK,
236 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
237 .getBeanTempFiles(), path));
Bharat saraswal2f11f652016-03-25 18:19:46 +0530238 } catch (IOException e) {
239 throw new IOException("No data found in temporary java code fragment files for " + className
240 + " while interface file generation");
241 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530242 }
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530243
244 if (curNode instanceof YangAugmentableNode && !(curNode instanceof YangChoice)) {
245 methods.add(getAddAugmentInfoMethodInterface());
246 methods.add(getYangAugmentInfoInterface());
247 methods.add(getYangAugmentInfoMapInterface(javaFileInfo.getPluginConfig()));
248 }
249 if (!(curNode instanceof YangChoice)) {
250 methods.add(NEW_LINE + isFilterContentMatchInterface(className));
251 }
252 if (!(curNode instanceof YangChoice) && isLeavesPresent) {
253 methods.add(NEW_LINE + isLeafValueSetInterface());
254 methods.add(NEW_LINE + isSelectLeafSetInterface());
255 }
256 for (String method : methods) {
257 insertDataIntoJavaFile(file, method);
258 }
Bharat saraswal33dfa012016-05-17 19:59:16 +0530259 return validateLineLength(file);
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530260
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530261 }
262
263 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530264 * Returns generated builder interface file for current node.
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530265 *
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530266 * @param file file
267 * @param curNode current YANG node
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530268 * @param isAttrPresent if any attribute is present or not
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530269 * @return builder interface file
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530270 * @throws IOException when fails to write in file
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530271 */
Bharat saraswal2f11f652016-03-25 18:19:46 +0530272 public static File generateBuilderInterfaceFile(File file, YangNode curNode, boolean isAttrPresent)
273 throws IOException {
Vinod Kumar S38046502016-03-23 15:30:27 +0530274
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530275 JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
Bharat saraswal33dfa012016-05-17 19:59:16 +0530276 YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
Vinod Kumar S38046502016-03-23 15:30:27 +0530277
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530278 boolean isLeavesPresent;
279 YangLeavesHolder leavesHolder;
280 if (curNode instanceof YangLeavesHolder) {
281 leavesHolder = (YangLeavesHolder) curNode;
282 isLeavesPresent = leavesHolder.getListOfLeaf() != null && !leavesHolder.getListOfLeaf().isEmpty()
283 || leavesHolder.getListOfLeafList() != null && !leavesHolder.getListOfLeafList().isEmpty();
284 } else {
285 isLeavesPresent = false;
286 }
287
janani b4a6711a2016-05-17 13:12:22 +0530288 String className = getCapitalCase(javaFileInfo.getJavaName());
Bharat saraswald50c6382016-07-14 21:57:13 +0530289 String path;
Bharat saraswale707f032016-07-14 23:33:55 +0530290 if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
Bharat saraswald50c6382016-07-14 21:57:13 +0530291 path = javaFileInfo.getPluginConfig().getCodeGenDir() + javaFileInfo.getPackageFilePath();
292 } else {
293 path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
294 }
Vinod Kumar S38046502016-03-23 15:30:27 +0530295
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530296 initiateJavaFileGeneration(file, BUILDER_INTERFACE_MASK, null, curNode, className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530297 List<String> methods = new ArrayList<>();
Bharat saraswal2f11f652016-03-25 18:19:46 +0530298 if (isAttrPresent) {
299 try {
Bharat saraswale707f032016-07-14 23:33:55 +0530300
301 //Getter methods.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530302 methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK,
303 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530304 .getBeanTempFiles(), path));
Bharat saraswale707f032016-07-14 23:33:55 +0530305
306 //Setter methods.
Bharat saraswal2f11f652016-03-25 18:19:46 +0530307 methods.add(NEW_LINE);
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530308 methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(SETTER_FOR_INTERFACE_MASK,
309 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530310 .getBeanTempFiles(), path));
Bharat saraswal2f11f652016-03-25 18:19:46 +0530311 } catch (IOException e) {
312 throw new IOException("No data found in temporary java code fragment files for " + className
313 + " while builder interface file generation");
314 }
Bharat saraswal8f2a6c52016-03-09 18:34:56 +0530315 }
Bharat saraswale707f032016-07-14 23:33:55 +0530316
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530317 if (isLeavesPresent) {
318 methods.add(NEW_LINE + setSelectLeafSetInterface(className));
319 }
Bharat saraswale707f032016-07-14 23:33:55 +0530320 //Add build method to builder interface file.
Bharat saraswale2d51d62016-03-23 19:40:35 +0530321 methods.add(
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530322 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswal33dfa012016-05-17 19:59:16 +0530323 .addBuildMethodForInterface(pluginConfig));
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530324
Bharat saraswale707f032016-07-14 23:33:55 +0530325
326 //Add getters and setters in builder interface.
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530327 for (String method : methods) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530328 insertDataIntoJavaFile(file, method);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530329 }
330
Bharat saraswale2d51d62016-03-23 19:40:35 +0530331 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
Bharat saraswal33dfa012016-05-17 19:59:16 +0530332 return validateLineLength(file);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530333 }
334
335 /**
336 * Returns generated builder class file for current node.
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530337 *
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530338 * @param file file
339 * @param curNode current YANG node
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530340 * @param isAttrPresent if any attribute is present or not
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530341 * @return builder class file
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530342 * @throws IOException when fails to write in file
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530343 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530344
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530345 public static File generateBuilderClassFile(File file, YangNode curNode,
346 boolean isAttrPresent) throws IOException {
Vinod Kumar S38046502016-03-23 15:30:27 +0530347
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530348 JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
Bharat saraswal33dfa012016-05-17 19:59:16 +0530349 YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
Vinod Kumar S38046502016-03-23 15:30:27 +0530350
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530351 boolean isLeavesPresent;
352 YangLeavesHolder leavesHolder;
353 if (curNode instanceof YangLeavesHolder) {
354 leavesHolder = (YangLeavesHolder) curNode;
355 isLeavesPresent = leavesHolder.getListOfLeaf() != null && !leavesHolder.getListOfLeaf().isEmpty()
356 || leavesHolder.getListOfLeafList() != null && !leavesHolder.getListOfLeafList().isEmpty();
357 } else {
358 isLeavesPresent = false;
359 }
Bharat saraswald50c6382016-07-14 21:57:13 +0530360
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530361 String className = getCapitalCase(javaFileInfo.getJavaName());
362 boolean isRootNode = false;
Bharat saraswald50c6382016-07-14 21:57:13 +0530363 String path;
Bharat saraswale707f032016-07-14 23:33:55 +0530364 if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530365 isRootNode = true;
Bharat saraswald50c6382016-07-14 21:57:13 +0530366 path = javaFileInfo.getPluginConfig().getCodeGenDir() + javaFileInfo.getPackageFilePath();
367 } else {
368 path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
369 }
Vinod Kumar S38046502016-03-23 15:30:27 +0530370
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530371 initiateJavaFileGeneration(file, BUILDER_CLASS_MASK, null, curNode, className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530372 List<String> methods = new ArrayList<>();
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530373
Bharat saraswal2f11f652016-03-25 18:19:46 +0530374 if (isAttrPresent) {
Bharat saraswale707f032016-07-14 23:33:55 +0530375
376 //Add attribute strings.
Bharat saraswal2f11f652016-03-25 18:19:46 +0530377 try {
378 insertDataIntoJavaFile(file,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530379 NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK,
380 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530381 .getBeanTempFiles(), path));
Bharat saraswal2f11f652016-03-25 18:19:46 +0530382 } catch (IOException e) {
383 throw new IOException("No data found in temporary java code fragment files for " + className
384 + " while builder class file generation");
385 }
Vinod Kumar S38046502016-03-23 15:30:27 +0530386
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530387 insertDataIntoJavaFile(file, getOperationTypeAttr());
388 if (isLeavesPresent) {
389 insertDataIntoJavaFile(file, getOperationAttributes());
390 }
Bharat saraswal2f11f652016-03-25 18:19:46 +0530391 try {
Bharat saraswale707f032016-07-14 23:33:55 +0530392 //Getter methods.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530393 methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
394 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530395 .getBeanTempFiles(), path));
Bharat saraswale707f032016-07-14 23:33:55 +0530396 // Setter methods.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530397 methods.add(getDataFromTempFileHandle(SETTER_FOR_CLASS_MASK,
398 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530399 .getBeanTempFiles(), path));
400
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530401 insertDataIntoJavaFile(file, NEW_LINE);
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530402
403 methods.add(getGetterForOperationType());
404 methods.add(getSetterForOperationType(className));
405 //Add operation attribute methods.
406 if (isLeavesPresent) {
407 methods.add(getOperationAttributesGetters() + NEW_LINE);
408 methods.add(getSetterForSelectLeaf(className, isRootNode));
409 }
Bharat saraswal2f11f652016-03-25 18:19:46 +0530410 } catch (IOException e) {
411 throw new IOException("No data found in temporary java code fragment files for " + className
412 + " while builder class file generation");
413 }
414 } else {
415 insertDataIntoJavaFile(file, NEW_LINE);
416 }
Bharat saraswale707f032016-07-14 23:33:55 +0530417
418 // Add default constructor and build method impl.
Bharat saraswalc0e04842016-05-12 13:16:57 +0530419 methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530420 .addBuildMethodImpl(curNode));
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530421 methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530422 .addDefaultConstructor(PUBLIC, BUILDER, pluginConfig, curNode));
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530423
Bharat saraswale707f032016-07-14 23:33:55 +0530424
425 //Add methods in builder class.
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530426 for (String method : methods) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530427 insertDataIntoJavaFile(file, method);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530428 }
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530429
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530430 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET);
Bharat saraswal33dfa012016-05-17 19:59:16 +0530431 return validateLineLength(file);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530432 }
433
434 /**
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530435 * Returns generated default class file for current node.
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530436 *
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530437 * @param file file
438 * @param curNode current YANG node
Bharat saraswal2f11f652016-03-25 18:19:46 +0530439 * @param isAttrPresent if any attribute is present or not
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530440 * @param imports list of imports
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530441 * @return impl class file
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530442 * @throws IOException when fails to write in file
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530443 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530444 public static File generateDefaultClassFile(File file, YangNode curNode, boolean isAttrPresent,
445 List<String> imports)
Vinod Kumar S38046502016-03-23 15:30:27 +0530446 throws IOException {
447
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530448 JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
Bharat saraswal33dfa012016-05-17 19:59:16 +0530449 YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
Vinod Kumar S38046502016-03-23 15:30:27 +0530450
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530451 boolean isLeavesPresent;
452 YangLeavesHolder leavesHolder;
453 if (curNode instanceof YangLeavesHolder) {
454 leavesHolder = (YangLeavesHolder) curNode;
455 isLeavesPresent = leavesHolder.getListOfLeaf() != null && !leavesHolder.getListOfLeaf().isEmpty()
456 || leavesHolder.getListOfLeafList() != null && !leavesHolder.getListOfLeafList().isEmpty();
457 } else {
458 isLeavesPresent = false;
459 }
460
461 boolean isRootNode = false;
462
janani b4a6711a2016-05-17 13:12:22 +0530463 String className = getCapitalCase(javaFileInfo.getJavaName());
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530464 String opParamClassName = className;
Bharat saraswald50c6382016-07-14 21:57:13 +0530465 String path;
Bharat saraswale707f032016-07-14 23:33:55 +0530466 if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530467 opParamClassName = className + OP_PARAM;
468 isRootNode = true;
Bharat saraswald50c6382016-07-14 21:57:13 +0530469 path = javaFileInfo.getPluginConfig().getCodeGenDir() + javaFileInfo.getPackageFilePath();
470 } else {
471 path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
472 }
Vinod Kumar S38046502016-03-23 15:30:27 +0530473
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530474 initiateJavaFileGeneration(file, DEFAULT_CLASS_MASK, imports, curNode, className);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530475
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530476 List<String> methods = new ArrayList<>();
Bharat saraswalb551aae2016-07-14 15:18:20 +0530477 if (curNode instanceof YangAugmentableNode) {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530478 insertDataIntoJavaFile(file, JavaCodeSnippetGen.addAugmentationAttribute());
Bharat saraswalb551aae2016-07-14 15:18:20 +0530479 }
Bharat saraswal2f11f652016-03-25 18:19:46 +0530480 if (isAttrPresent) {
Bharat saraswale707f032016-07-14 23:33:55 +0530481
482 //Add attribute strings.
Bharat saraswal2f11f652016-03-25 18:19:46 +0530483 try {
484 insertDataIntoJavaFile(file,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530485 NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK,
486 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530487 .getBeanTempFiles(), path));
Bharat saraswal2f11f652016-03-25 18:19:46 +0530488 } catch (IOException e) {
489 throw new IOException("No data found in temporary java code fragment files for " + className
490 + " while impl class file generation");
491 }
Bharat saraswal8f2a6c52016-03-09 18:34:56 +0530492
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530493 //Add operation attributes
494 insertDataIntoJavaFile(file, getOperationTypeEnum());
495 insertDataIntoJavaFile(file, getOperationTypeAttr());
496 if (isLeavesPresent) {
497 insertDataIntoJavaFile(file, getOperationAttributes());
498 }
499
Bharat saraswal2f11f652016-03-25 18:19:46 +0530500 try {
Bharat saraswale707f032016-07-14 23:33:55 +0530501 //Getter methods.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530502 methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
503 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530504 .getBeanTempFiles(), path));
Bharat saraswal2f11f652016-03-25 18:19:46 +0530505
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530506 //Add to list impl method.
507 methods.add(getDataFromTempFileHandle(ADD_TO_LIST_IMPL_MASK,
508 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
509 .getBeanTempFiles(), path));
Bharat saraswale707f032016-07-14 23:33:55 +0530510
511 // Hash code method.
Bharat saraswal33dfa012016-05-17 19:59:16 +0530512 methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() +
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530513 getDataFromTempFileHandle(HASH_CODE_IMPL_MASK,
514 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530515 .getBeanTempFiles(), path).replace(NEW_LINE, EMPTY_STRING)));
Bharat saraswale707f032016-07-14 23:33:55 +0530516
517 //Equals method.
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530518 if (isRootNode) {
519 methods.add(getEqualsMethodClose(getEqualsMethodOpen(opParamClassName)
520 + getDataFromTempFileHandle(EQUALS_IMPL_MASK,
521 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
522 .getBeanTempFiles(), path)));
523 } else {
524 methods.add(getEqualsMethodClose(getEqualsMethodOpen(getCapitalCase(DEFAULT) + className)
525 + getDataFromTempFileHandle(EQUALS_IMPL_MASK,
526 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
527 .getBeanTempFiles(), path)));
528 }
Bharat saraswale707f032016-07-14 23:33:55 +0530529 // To string method.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530530 methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK,
531 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530532 .getBeanTempFiles(), path)
Bharat saraswal2f11f652016-03-25 18:19:46 +0530533 + getToStringMethodClose());
534
535 } catch (IOException e) {
536 throw new IOException("No data found in temporary java code fragment files for " + className
537 + " while impl class file generation");
538 }
539 } else {
540 insertDataIntoJavaFile(file, NEW_LINE);
Vinod Kumar S38046502016-03-23 15:30:27 +0530541 }
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530542
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530543 if (curNode instanceof YangAugmentableNode) {
544 methods.add(getAddAugmentInfoMethodImpl());
545 methods.add(getYangAugmentInfoImpl());
546 methods.add(getYangAugmentInfoMapImpl());
547 }
548 try {
Bharat saraswale707f032016-07-14 23:33:55 +0530549 //Constructor.
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530550 String constructor = getConstructorStart(className, pluginConfig, isRootNode);
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530551 constructor = constructor + getDataFromTempFileHandle(CONSTRUCTOR_IMPL_MASK,
552 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
553 .getBeanTempFiles(), path);
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530554
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530555 if (isAttrPresent) {
556 constructor = constructor + getOperationTypeForConstructor();
557 }
558 if (isLeavesPresent) {
559 constructor = constructor + getOperationAttributeForConstructor();
560 }
561 methods.add(constructor + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE);
Vinod Kumar S38046502016-03-23 15:30:27 +0530562 } catch (IOException e) {
563 throw new IOException("No data found in temporary java code fragment files for " + className
564 + " while impl class file generation");
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530565 }
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530566
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530567 methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
568 .addDefaultConstructor(PUBLIC, DEFAULT, pluginConfig, curNode));
Bharat saraswalb551aae2016-07-14 15:18:20 +0530569
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530570 methods.add(builderMethod(className));
571 methods.add(getIsFilterContentMatch(curNode, pluginConfig));
572 if (isLeavesPresent) {
573 methods.add(getOperationAttributesGetters());
574 methods.add(getGettersForValueAndSelectLeaf());
575 }
Bharat saraswale707f032016-07-14 23:33:55 +0530576 // Add methods in impl class.
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530577 for (String method : methods) {
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530578 insertDataIntoJavaFile(file, method);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530579 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530580
Bharat saraswal33dfa012016-05-17 19:59:16 +0530581 return validateLineLength(file);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530582 }
583
584 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530585 * Generates class file for type def.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530586 *
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530587 * @param file generated file
Vinod Kumar S38046502016-03-23 15:30:27 +0530588 * @param curNode current YANG node
Bharat saraswale2d51d62016-03-23 19:40:35 +0530589 * @param imports imports for file
590 * @return type def class file
591 * @throws IOException when fails to generate class file
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530592 */
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530593 public static File generateTypeDefClassFile(File file, YangNode curNode, List<String> imports)
594 throws IOException {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530595
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530596 JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
Bharat saraswal33dfa012016-05-17 19:59:16 +0530597 YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
Vinod Kumar S38046502016-03-23 15:30:27 +0530598
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530599 // import
janani b4a6711a2016-05-17 13:12:22 +0530600 String className = getCapitalCase(javaFileInfo.getJavaName());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530601 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530602 YangTypeDef typeDef = (YangTypeDef) curNode;
603 List<YangType<?>> types = typeDef.getTypeList();
604 YangType type = types.get(0);
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +0530605 YangDataTypes yangDataTypes = type.getDataType();
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530606 if (type.getDataType().equals(BINARY)) {
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530607 imports.add(IMPORT + JAVA_UTIL_OBJECTS_IMPORT_PKG + PERIOD + JAVA_UTIL_IMPORT_BASE64_CLASS);
608 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530609
Bharat saraswal33dfa012016-05-17 19:59:16 +0530610 initiateJavaFileGeneration(file, className, GENERATE_TYPEDEF_CLASS, imports, path, pluginConfig);
Vinod Kumar S38046502016-03-23 15:30:27 +0530611
Bharat saraswale2d51d62016-03-23 19:40:35 +0530612 List<String> methods = new ArrayList<>();
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530613
Bharat saraswale707f032016-07-14 23:33:55 +0530614
615 //Add attribute strings.
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530616 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530617 insertDataIntoJavaFile(file,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530618 NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK,
619 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530620 .getTypeTempFiles(), path));
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530621 } catch (IOException e) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530622 throw new IOException("No data found in temporary java code fragment files for " + className
623 + " while type def class file generation");
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530624 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530625
Bharat saraswale707f032016-07-14 23:33:55 +0530626
627 //Default constructor.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530628 methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530629 .addDefaultConstructor(PRIVATE, EMPTY_STRING, pluginConfig, curNode));
Vinod Kumar S38046502016-03-23 15:30:27 +0530630
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530631 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530632
Bharat saraswale707f032016-07-14 23:33:55 +0530633 //Type constructor.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530634 methods.add(getDataFromTempFileHandle(CONSTRUCTOR_FOR_TYPE_MASK,
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530635 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
636 path));
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530637
Bharat saraswale707f032016-07-14 23:33:55 +0530638
639 //Of method.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530640 methods.add(getDataFromTempFileHandle(OF_STRING_IMPL_MASK,
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530641 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
642 path));
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530643
Bharat saraswale707f032016-07-14 23:33:55 +0530644 //Getter methods.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530645 methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530646 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
647 path));
Bharat saraswale2d51d62016-03-23 19:40:35 +0530648
Bharat saraswale707f032016-07-14 23:33:55 +0530649
650 // Hash code method.
Bharat saraswal33dfa012016-05-17 19:59:16 +0530651 methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() +
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530652 getDataFromTempFileHandle(HASH_CODE_IMPL_MASK,
653 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530654 .getTypeTempFiles(), path)
655 .replace(NEW_LINE, EMPTY_STRING)));
Bharat saraswale2d51d62016-03-23 19:40:35 +0530656
Bharat saraswale707f032016-07-14 23:33:55 +0530657
658 //Equals method.
Bharat saraswale2d51d62016-03-23 19:40:35 +0530659 methods.add(getEqualsMethodClose(getEqualsMethodOpen(className + EMPTY_STRING)
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530660 + getDataFromTempFileHandle(EQUALS_IMPL_MASK,
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530661 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
662 .getTypeTempFiles(), path)));
Bharat saraswale2d51d62016-03-23 19:40:35 +0530663
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530664
Bharat saraswale707f032016-07-14 23:33:55 +0530665 //To string method.
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530666 if (type.getDataType().equals(BINARY)) {
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +0530667 JavaQualifiedTypeInfoTranslator qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode,
Bharat saraswale707f032016-07-14 23:33:55 +0530668 getCapitalCase("binary"));
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530669
Bharat saraswale707f032016-07-14 23:33:55 +0530670 JavaAttributeInfo attr = getAttributeInfoForTheData(qualifiedTypeInfo, "binary", null, false,
671 false);
672 String attributeName = attr.getAttributeName();
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530673 String bitsToStringMethod = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC
Bharat saraswale707f032016-07-14 23:33:55 +0530674 + SPACE + STRING_DATA_TYPE + SPACE + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS
675 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
676 + RETURN + SPACE + BASE64 + PERIOD + GET_ENCODER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
677 + PERIOD + ENCODE_TO_STRING + OPEN_PARENTHESIS + attributeName + CLOSE_PARENTHESIS
678 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
679 methods.add(bitsToStringMethod);
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530680 } else if (type.getDataType().equals(BITS)) {
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +0530681 JavaQualifiedTypeInfoTranslator qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode,
Bharat saraswale707f032016-07-14 23:33:55 +0530682 getCapitalCase("bits"));
683
684 JavaAttributeInfo attr = getAttributeInfoForTheData(qualifiedTypeInfo, "bits", null, false, false);
685 String attributeName = attr.getAttributeName();
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530686 String bitsToStringMethod = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC
Bharat saraswale707f032016-07-14 23:33:55 +0530687 + SPACE + STRING_DATA_TYPE + SPACE + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS
688 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
689 + RETURN + SPACE + attributeName + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS
690 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
691 + NEW_LINE;
692 methods.add(bitsToStringMethod);
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530693 } else {
694 methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK,
Bharat saraswale707f032016-07-14 23:33:55 +0530695 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
696 .getTypeTempFiles(), path) + getToStringMethodClose());
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530697 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530698
Bharat saraswale707f032016-07-14 23:33:55 +0530699 JavaCodeGeneratorInfo javaGenInfo = (JavaCodeGeneratorInfo) curNode;
700
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530701 //From string method.
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +0530702 if ((type.getDataType().equals(YangDataTypes.DERIVED))
703 && (((YangDerivedInfo) type.getDataTypeExtendedInfo()).getEffectiveBuiltInType()
704 .equals(YangDataTypes.IDENTITYREF))) {
705 yangDataTypes = YangDataTypes.IDENTITYREF;
706 }
707
708 if (type.getDataType().equals(YangDataTypes.IDENTITYREF)) {
709 yangDataTypes = YangDataTypes.IDENTITYREF;
710 }
711
712 if (!yangDataTypes.equals(YangDataTypes.IDENTITYREF)) {
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +0530713 methods.add(getFromStringMethodSignature(className, pluginConfig)
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530714 + getDataFromTempFileHandle(FROM_STRING_IMPL_MASK, javaGenInfo.getTempJavaCodeFragmentFiles()
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +0530715 .getTypeTempFiles(), path)
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530716 + getFromStringMethodClose());
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +0530717 }
Gaurav Agrawal56527662016-04-20 15:49:17 +0530718
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530719 } catch (IOException e) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530720 throw new IOException("No data found in temporary java code fragment files for " + className
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530721 + " while type def class file generation");
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530722 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530723
Bharat saraswale2d51d62016-03-23 19:40:35 +0530724 for (String method : methods) {
725 insertDataIntoJavaFile(file, method);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530726 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530727 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530728
Bharat saraswal33dfa012016-05-17 19:59:16 +0530729 return validateLineLength(file);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530730 }
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530731
732 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530733 * Generates class file for union type.
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530734 *
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530735 * @param file generated file
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530736 * @param curNode current YANG node
737 * @param imports imports for file
738 * @return type def class file
739 * @throws IOException when fails to generate class file
740 */
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530741 public static File generateUnionClassFile(File file, YangNode curNode, List<String> imports)
742 throws IOException {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530743
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530744 JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
Bharat saraswal33dfa012016-05-17 19:59:16 +0530745 YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530746
janani b4a6711a2016-05-17 13:12:22 +0530747 String className = getCapitalCase(javaFileInfo.getJavaName());
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530748 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
749
Bharat saraswale707f032016-07-14 23:33:55 +0530750 TempJavaTypeFragmentFiles tempJavaTypeFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
751 .getTempJavaCodeFragmentFiles().getTypeTempFiles();
752
753 boolean isIntConflict = false;
754 boolean isLongConflict = false;
755 JavaAttributeInfo intAttr = tempJavaTypeFragmentFiles.getIntAttribute();
756 if (intAttr == null) {
757 intAttr = tempJavaTypeFragmentFiles.getUIntAttribute();
758 }
759
760 JavaAttributeInfo longAttr = tempJavaTypeFragmentFiles.getLongAttribute();
761 if (longAttr == null) {
762 longAttr = tempJavaTypeFragmentFiles.getULongAttribute();
763 }
764
765 if (intAttr != null) {
766 isIntConflict = intAttr.isIntConflict();
767 }
768 if (longAttr != null) {
769 isLongConflict = longAttr.isLongConflict();
770 }
771
772 if (isLongConflict) {
773 imports.add(tempJavaTypeFragmentFiles.getJavaImportData().getBigIntegerImport());
774 sort(imports);
775 }
776
Bharat saraswal33dfa012016-05-17 19:59:16 +0530777 initiateJavaFileGeneration(file, className, GENERATE_UNION_CLASS, imports, path, pluginConfig);
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530778
779 List<String> methods = new ArrayList<>();
780
Bharat saraswale707f032016-07-14 23:33:55 +0530781
782 // Add attribute strings.
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530783 try {
Bharat saraswale707f032016-07-14 23:33:55 +0530784 if (isIntConflict) {
785 insertDataIntoJavaFile(file, JavaCodeSnippetGen.addStaticAttributeIntRange(PRIVATE,
786 tempJavaTypeFragmentFiles.getIntIndex() < tempJavaTypeFragmentFiles.getUIntIndex()));
787 }
788
789 if (isLongConflict) {
790 insertDataIntoJavaFile(file, JavaCodeSnippetGen.addStaticAttributeLongRange(PRIVATE,
791 tempJavaTypeFragmentFiles.getLongIndex() < tempJavaTypeFragmentFiles.getULongIndex()));
792 }
793
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530794 insertDataIntoJavaFile(file,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530795 NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK,
796 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530797 .getTypeTempFiles(), path));
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530798 } catch (IOException e) {
799 throw new IOException("No data found in temporary java code fragment files for " + className
800 + " while union class file generation");
801 }
802
Bharat saraswale707f032016-07-14 23:33:55 +0530803
804 //Default constructor.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530805 methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530806 .addDefaultConstructor(PRIVATE, EMPTY_STRING, pluginConfig, curNode));
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530807
808 try {
809
Bharat saraswale707f032016-07-14 23:33:55 +0530810
811 //Type constructor.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530812 methods.add(getDataFromTempFileHandle(CONSTRUCTOR_FOR_TYPE_MASK,
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530813 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
814 path));
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530815
Bharat saraswale707f032016-07-14 23:33:55 +0530816
817 // Of string method.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530818 methods.add(getDataFromTempFileHandle(OF_STRING_IMPL_MASK,
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530819 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
820 path));
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530821
Bharat saraswale707f032016-07-14 23:33:55 +0530822 //Getter methods.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530823 methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530824 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
825 path));
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530826
Bharat saraswale707f032016-07-14 23:33:55 +0530827
828 //Hash code method.
Bharat saraswal33dfa012016-05-17 19:59:16 +0530829 methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() +
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530830 getDataFromTempFileHandle(HASH_CODE_IMPL_MASK,
831 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530832 .getTypeTempFiles(), path)
833 .replace(NEW_LINE, EMPTY_STRING)));
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530834
Bharat saraswale707f032016-07-14 23:33:55 +0530835 //Equals method.
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530836 methods.add(getEqualsMethodClose(getEqualsMethodOpen(className + EMPTY_STRING)
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530837 + getDataFromTempFileHandle(EQUALS_IMPL_MASK,
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530838 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
839 .getTypeTempFiles(), path)));
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530840
Bharat saraswale707f032016-07-14 23:33:55 +0530841
842 //To string method.
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530843 methods.add(getToStringMethodOpen() + getOmitNullValueString() +
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530844 getDataFromTempFileHandle(TO_STRING_IMPL_MASK,
845 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530846 .getTypeTempFiles(), path)
847 + getToStringMethodClose());
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530848
Bharat saraswale707f032016-07-14 23:33:55 +0530849
850 //From string method.
Bharat saraswal33dfa012016-05-17 19:59:16 +0530851 methods.add(getFromStringMethodSignature(className, pluginConfig)
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530852 + getDataFromTempFileHandle(FROM_STRING_IMPL_MASK,
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530853 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
854 .getTypeTempFiles(), path)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530855 + getFromStringMethodClose());
856
Bharat saraswale707f032016-07-14 23:33:55 +0530857 if (isIntConflict) {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530858 methods.add(getRangeValidatorMethodForUnion(INT));
Bharat saraswale707f032016-07-14 23:33:55 +0530859 }
860 if (isLongConflict) {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530861 methods.add(getRangeValidatorMethodForUnion(BIG_INTEGER));
Bharat saraswale707f032016-07-14 23:33:55 +0530862 }
863
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530864 } catch (IOException e) {
865 throw new IOException("No data found in temporary java code fragment files for " + className
866 + " while union class file generation");
867 }
868
869 for (String method : methods) {
870 insertDataIntoJavaFile(file, method);
871 }
872 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
873
Bharat saraswal33dfa012016-05-17 19:59:16 +0530874 return validateLineLength(file);
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530875 }
Bharat saraswald72411a2016-04-19 01:00:16 +0530876
877 /**
878 * Generates class file for type enum.
879 *
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530880 * @param file generated file
Bharat saraswald72411a2016-04-19 01:00:16 +0530881 * @param curNode current YANG node
882 * @return class file for type enum
883 * @throws IOException when fails to generate class file
Gaurav Agrawal56527662016-04-20 15:49:17 +0530884 */
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530885 public static File generateEnumClassFile(File file, YangNode curNode)
886 throws IOException {
Bharat saraswald72411a2016-04-19 01:00:16 +0530887
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530888 JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
Bharat saraswal33dfa012016-05-17 19:59:16 +0530889 YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
Bharat saraswald72411a2016-04-19 01:00:16 +0530890
janani b4a6711a2016-05-17 13:12:22 +0530891 String className = javaFileInfo.getJavaName();
Bharat saraswald72411a2016-04-19 01:00:16 +0530892 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
893
Bharat saraswal33dfa012016-05-17 19:59:16 +0530894 initiateJavaFileGeneration(file, getCapitalCase(className), GENERATE_ENUM_CLASS, null, path, pluginConfig);
Bharat saraswale707f032016-07-14 23:33:55 +0530895
896 //Add attribute strings.
Bharat saraswald72411a2016-04-19 01:00:16 +0530897 try {
Bharat saraswale707f032016-07-14 23:33:55 +0530898 JavaCodeGeneratorInfo javaGenInfo = (JavaCodeGeneratorInfo) curNode;
Bharat saraswald72411a2016-04-19 01:00:16 +0530899 insertDataIntoJavaFile(file,
Bharat saraswale707f032016-07-14 23:33:55 +0530900 trimAtLast(trimAtLast(getDataFromTempFileHandle(ENUM_IMPL_MASK, javaGenInfo
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530901 .getTempJavaCodeFragmentFiles().getEnumerationTempFiles(), path), COMMA), NEW_LINE)
Bharat saraswald72411a2016-04-19 01:00:16 +0530902 + SEMI_COLAN + NEW_LINE);
903 } catch (IOException e) {
janani b4a6711a2016-05-17 13:12:22 +0530904 throw new IOException("No data found in temporary java code fragment files for " + getCapitalCase(className)
Bharat saraswald72411a2016-04-19 01:00:16 +0530905 + " while enum class file generation");
906 }
907
Bharat saraswale707f032016-07-14 23:33:55 +0530908
909 // Add an attribute to get the enum's values.
janani b4a6711a2016-05-17 13:12:22 +0530910 insertDataIntoJavaFile(file, getEnumsValueAttribute(getCapitalCase(className)));
Bharat saraswald72411a2016-04-19 01:00:16 +0530911
Bharat saraswale707f032016-07-14 23:33:55 +0530912 // Add a constructor for enum.
Bharat saraswal33dfa012016-05-17 19:59:16 +0530913 insertDataIntoJavaFile(file, getJavaDoc(TYPE_CONSTRUCTOR, className, false, pluginConfig)
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530914 + getEnumsConstructor(getCapitalCase(className)) + NEW_LINE);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530915
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530916 TempJavaEnumerationFragmentFiles enumFragFiles = ((TempJavaCodeFragmentFilesContainer) curNode)
917 .getTempJavaCodeFragmentFiles()
918 .getEnumerationTempFiles();
Bharat saraswalc0e04842016-05-12 13:16:57 +0530919 insertDataIntoJavaFile(file, getEnumsOfMethod(className,
Bharat saraswal33dfa012016-05-17 19:59:16 +0530920 enumFragFiles.getJavaAttributeForEnum(pluginConfig),
Bharat saraswalc0e04842016-05-12 13:16:57 +0530921 enumFragFiles.getEnumSetJavaMap(),
Bharat saraswal33dfa012016-05-17 19:59:16 +0530922 enumFragFiles.getEnumStringList(), pluginConfig)
Bharat saraswalc0e04842016-05-12 13:16:57 +0530923 + NEW_LINE);
Bharat saraswald72411a2016-04-19 01:00:16 +0530924
Bharat saraswale707f032016-07-14 23:33:55 +0530925 // Add a getter method for enum.
Bharat saraswal33dfa012016-05-17 19:59:16 +0530926 insertDataIntoJavaFile(file, getJavaDoc(GETTER_METHOD, className, false, pluginConfig)
janani b4a6711a2016-05-17 13:12:22 +0530927 + getGetter(INT, className, GENERATE_ENUM_CLASS) + NEW_LINE);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530928
929 try {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530930 insertDataIntoJavaFile(file, getFromStringMethodSignature(getCapitalCase(className), pluginConfig)
Bharat saraswalc0e04842016-05-12 13:16:57 +0530931 + getDataFromTempFileHandle(FROM_STRING_IMPL_MASK,
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530932 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
933 .getEnumerationTempFiles(), path)
Bharat saraswalc0e04842016-05-12 13:16:57 +0530934 + getFromStringMethodClose());
935 } catch (IOException e) {
janani b4a6711a2016-05-17 13:12:22 +0530936 throw new IOException("No data found in temporary java code fragment files for " +
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530937 getCapitalCase(className) + " while enum class file generation");
Bharat saraswalc0e04842016-05-12 13:16:57 +0530938 }
Bharat saraswald72411a2016-04-19 01:00:16 +0530939
940 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
941
Bharat saraswal33dfa012016-05-17 19:59:16 +0530942 return validateLineLength(file);
Bharat saraswald72411a2016-04-19 01:00:16 +0530943 }
Gaurav Agrawal56527662016-04-20 15:49:17 +0530944
945 /**
946 * Generates interface file for rpc.
947 *
Bharat saraswale707f032016-07-14 23:33:55 +0530948 * @param file generated file
949 * @param curNode current YANG node
950 * @param imports imports for file
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530951 * @return rpc class file
Gaurav Agrawal56527662016-04-20 15:49:17 +0530952 * @throws IOException when fails to generate class file
953 */
Bharat saraswalb551aae2016-07-14 15:18:20 +0530954 public static File generateServiceInterfaceFile(File file, YangNode curNode, List<String> imports)
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530955 throws IOException {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530956
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530957 JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
Gaurav Agrawal56527662016-04-20 15:49:17 +0530958
Bharat saraswalb551aae2016-07-14 15:18:20 +0530959 TempJavaServiceFragmentFiles tempJavaServiceFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
960 .getTempJavaCodeFragmentFiles().getServiceTempFiles();
janani b4a6711a2016-05-17 13:12:22 +0530961 String className = getCapitalCase(javaFileInfo.getJavaName()) + SERVICE_METHOD_STRING;
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530962 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530963 initiateJavaFileGeneration(file, GENERATE_SERVICE_AND_MANAGER, imports, curNode, className);
Gaurav Agrawal56527662016-04-20 15:49:17 +0530964
965 List<String> methods = new ArrayList<>();
Bharat saraswalb551aae2016-07-14 15:18:20 +0530966 JavaAttributeInfo rootAttribute = getCurNodeAsAttributeInTarget(curNode, curNode, false,
967 tempJavaServiceFragmentFiles);
Gaurav Agrawal56527662016-04-20 15:49:17 +0530968
969 try {
Bharat saraswale707f032016-07-14 23:33:55 +0530970
971 //Getter methods.
Bharat saraswalb551aae2016-07-14 15:18:20 +0530972 methods.add(getGetterString(rootAttribute, GENERATE_SERVICE_AND_MANAGER,
973 javaFileInfo.getPluginConfig()) + NEW_LINE);
Bharat saraswale707f032016-07-14 23:33:55 +0530974 // Setter methods.
Bharat saraswalb551aae2016-07-14 15:18:20 +0530975 methods.add(getSetterString(rootAttribute, className, GENERATE_SERVICE_AND_MANAGER,
976 javaFileInfo.getPluginConfig()) + NEW_LINE);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530977
Bharat saraswalb551aae2016-07-14 15:18:20 +0530978 methods.add(getAugmentsDataMethodForService(curNode) + NEW_LINE);
979
Bharat saraswalc0e04842016-05-12 13:16:57 +0530980 if (((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles().getServiceTempFiles() != null) {
Bharat saraswale707f032016-07-14 23:33:55 +0530981 JavaCodeGeneratorInfo javaGenInfo = (JavaCodeGeneratorInfo) curNode;
982
983 // Rpc methods
Bharat saraswalc0e04842016-05-12 13:16:57 +0530984 methods.add(getDataFromTempFileHandle(RPC_INTERFACE_MASK,
Bharat saraswale707f032016-07-14 23:33:55 +0530985 javaGenInfo.getTempJavaCodeFragmentFiles().getServiceTempFiles(), path));
Bharat saraswalc0e04842016-05-12 13:16:57 +0530986 }
Gaurav Agrawal56527662016-04-20 15:49:17 +0530987 } catch (IOException e) {
988 throw new IOException("No data found in temporary java code fragment files for " + className
989 + " while rpc class file generation");
990 }
991
992 for (String method : methods) {
993 insertDataIntoJavaFile(file, method);
994 }
995 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
996
Bharat saraswal33dfa012016-05-17 19:59:16 +0530997 return validateLineLength(file);
Gaurav Agrawal56527662016-04-20 15:49:17 +0530998 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530999
1000 /**
1001 * Generates event file.
1002 *
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301003 * @param file generated file
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +05301004 * @param curNode current YANG node
1005 * @param imports imports for file
1006 * @throws IOException when fails to generate class file
1007 */
Bharat saraswalab4c6ba2016-05-17 14:19:38 +05301008 public static void generateEventFile(File file, YangNode curNode, List<String> imports) throws IOException {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +05301009
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301010 String className = getCapitalCase(((JavaFileInfoContainer) curNode).getJavaFileInfo().getJavaName())
1011 + EVENT_STRING;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +05301012
Bharat saraswald50c6382016-07-14 21:57:13 +05301013 TempJavaEventFragmentFiles tempFiles = ((TempJavaCodeFragmentFilesContainer) curNode)
1014 .getTempJavaCodeFragmentFiles().getEventFragmentFiles();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +05301015
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301016 String path = ((JavaFileInfoContainer) curNode).getJavaFileInfo().getBaseCodeGenPath()
1017 + ((JavaFileInfoContainer) curNode).getJavaFileInfo().getPackageFilePath();
Bharat saraswal33dfa012016-05-17 19:59:16 +05301018 initiateJavaFileGeneration(file, GENERATE_EVENT_CLASS, imports, curNode, className);
1019 try {
1020 insertDataIntoJavaFile(file, NEW_LINE + getEventEnumTypeStart() +
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301021 trimAtLast(getDataFromTempFileHandle(EVENT_ENUM_MASK, tempFiles, path), COMMA)
Bharat saraswal33dfa012016-05-17 19:59:16 +05301022 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE);
1023
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301024 insertDataIntoJavaFile(file, getDataFromTempFileHandle(EVENT_METHOD_MASK, tempFiles, path));
Bharat saraswal33dfa012016-05-17 19:59:16 +05301025
1026 } catch (IOException e) {
1027 throw new IOException("No data found in temporary java code fragment files for " + className
1028 + " while event class file generation");
1029 }
1030
1031 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
1032 validateLineLength(file);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +05301033 }
1034
1035 /**
1036 * Generates event listener file.
1037 *
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301038 * @param file generated file
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +05301039 * @param curNode current YANG node
1040 * @param imports imports for file
1041 * @throws IOException when fails to generate class file
1042 */
1043 public static void generateEventListenerFile(File file, YangNode curNode, List<String> imports)
1044 throws IOException {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +05301045
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301046 String className = getCapitalCase(((JavaFileInfoContainer) curNode).getJavaFileInfo().getJavaName())
1047 + EVENT_LISTENER_STRING;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +05301048
Bharat saraswal33dfa012016-05-17 19:59:16 +05301049 initiateJavaFileGeneration(file, GENERATE_EVENT_LISTENER_INTERFACE, imports, curNode, className);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +05301050 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
Bharat saraswal33dfa012016-05-17 19:59:16 +05301051 validateLineLength(file);
1052 }
1053
1054 /**
1055 * Generates event subject's file.
1056 *
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301057 * @param file file handle
Bharat saraswal33dfa012016-05-17 19:59:16 +05301058 * @param curNode current YANG node
1059 * @throws IOException when fails to do IO exceptions
1060 */
1061 public static void generateEventSubjectFile(File file, YangNode curNode)
1062 throws IOException {
1063
1064 String className = getCapitalCase(((JavaFileInfoContainer) curNode).getJavaFileInfo().getJavaName())
1065 + EVENT_SUBJECT_NAME_SUFFIX;
1066
1067 initiateJavaFileGeneration(file, GENERATE_EVENT_SUBJECT_CLASS, null, curNode, className);
1068
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301069 String path = ((JavaFileInfoContainer) curNode).getJavaFileInfo().getBaseCodeGenPath()
1070 + ((JavaFileInfoContainer) curNode).getJavaFileInfo().getPackageFilePath();
Bharat saraswald50c6382016-07-14 21:57:13 +05301071
1072 TempJavaEventFragmentFiles tempFiles = ((TempJavaCodeFragmentFilesContainer) curNode)
1073 .getTempJavaCodeFragmentFiles().getEventFragmentFiles();
Bharat saraswal33dfa012016-05-17 19:59:16 +05301074
1075 insertDataIntoJavaFile(file, NEW_LINE);
1076 try {
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301077 insertDataIntoJavaFile(file, getDataFromTempFileHandle(EVENT_SUBJECT_ATTRIBUTE_MASK, tempFiles, path));
Bharat saraswal33dfa012016-05-17 19:59:16 +05301078
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301079 insertDataIntoJavaFile(file, getDataFromTempFileHandle(EVENT_SUBJECT_GETTER_MASK, tempFiles, path));
Bharat saraswal33dfa012016-05-17 19:59:16 +05301080
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301081 insertDataIntoJavaFile(file, getDataFromTempFileHandle(EVENT_SUBJECT_SETTER_MASK, tempFiles, path));
Bharat saraswal33dfa012016-05-17 19:59:16 +05301082
1083 } catch (IOException e) {
1084 throw new IOException("No data found in temporary java code fragment files for " + className
1085 + " while event class file generation");
1086 }
1087
1088 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
1089 validateLineLength(file);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +05301090 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +05301091}