blob: a82d7d4634d7b73c70dba8f6b9fe8fa01188d830 [file] [log] [blame]
Bharat saraswalcc1cdab2016-04-16 02:28:25 +05301/*
2 * Copyright 2016-present 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 */
16
17package org.onosproject.yangutils.translator.tojava.utils;
18
19import java.io.File;
20import java.io.IOException;
21import java.util.List;
22
23import org.onosproject.yangutils.datamodel.YangNode;
24import org.onosproject.yangutils.translator.tojava.HasJavaImportData;
25
26import static org.onosproject.yangutils.translator.tojava.JavaImportData.getAugmentedInfoImport;
27import static org.onosproject.yangutils.translator.tojava.JavaImportData.getHasAugmentationImport;
28import static org.onosproject.yangutils.translator.tojava.JavaImportData.getImportForArrayList;
29import static org.onosproject.yangutils.translator.tojava.JavaImportData.getImportForList;
30import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
31import static org.onosproject.yangutils.utils.UtilConstants.HAS_AUGMENTATION;
32import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.updateFileHandle;
33
Bharat saraswald72411a2016-04-19 01:00:16 +053034import static java.util.Collections.sort;
35
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053036/**
37 * Represents utilities for temporary java code fragments.
38 */
39public final class TempJavaCodeFragmentFilesUtils {
40
41 /**
42 * Creates a private instance of temporary java code fragment utils.
43 */
44 private TempJavaCodeFragmentFilesUtils() {
45 }
46
47 /**
48 * Adds imports for ToString and HashCodeMethod.
49 *
50 * @param curNode current YANG node
51 * @param imports import list
52 * @return import list
53 */
54 public static List<String> addImportsToStringAndHasCodeMethods(YangNode curNode, List<String> imports) {
55 if (curNode instanceof HasJavaImportData) {
56 imports.add(((HasJavaImportData) curNode).getJavaImportData().getImportForHashAndEquals());
57 imports.add(((HasJavaImportData) curNode).getJavaImportData().getImportForToString());
58 }
59 return imports;
60 }
61
62 /**
63 * Adds import for HasAugmentation class.
64 *
65 * @param curNode current YANG node
66 * @param imports list of imports
67 * @param operation add or delete import
68 * @return import for HasAugmentation class
69 */
70 public static List<String> addHasAugmentationImport(YangNode curNode, List<String> imports, boolean operation) {
71 if (curNode instanceof HasJavaImportData) {
72 String thisImport = getHasAugmentationImport();
73 performOperationOnImports(imports, thisImport, operation);
74 }
75 return imports;
76 }
77
78 /**
79 * Adds import for AugmentedInfo class.
80 *
81 * @param curNode current YANG node
82 * @param imports list of imports
83 * @param operation add or delete import
84 * @return import for AugmentedInfo class
85 */
86 public static List<String> addAugmentedInfoImport(YangNode curNode, List<String> imports, boolean operation) {
87 if (curNode instanceof HasJavaImportData) {
88 String thisImport = getAugmentedInfoImport();
89 performOperationOnImports(imports, thisImport, operation);
90 }
91 return imports;
92 }
93
94 /**
95 * Adds import for array list.
96 *
97 * @param curNode current YANG node
98 * @param imports list of imports
99 * @param operation add or delete import
100 * @return import for HasAugmentation class
101 */
102 public static List<String> addArrayListImport(YangNode curNode, List<String> imports, boolean operation) {
103 if (curNode instanceof HasJavaImportData) {
104 String arrayListImport = getImportForArrayList();
105 String listImport = getImportForList();
106 performOperationOnImports(imports, arrayListImport, operation);
107 if (!imports.contains(listImport)) {
108 /**
109 * List can be there because of attribute also , so no need to remove it and operation will
110 * always be add(true).
111 */
112 performOperationOnImports(imports, listImport, true);
113 }
114 }
115
116 return imports;
117 }
118
119 /**
120 * Performs given operations on import list.
121 *
122 * @param imports list of imports
123 * @param curImport current import
124 * @param operation add or remove
125 * @return import list
126 */
127 private static List<String> performOperationOnImports(List<String> imports, String curImport, boolean operation) {
128 if (operation) {
129 imports.add(curImport);
130 } else {
131 imports.remove(curImport);
132 }
Bharat saraswald72411a2016-04-19 01:00:16 +0530133 sort(imports);
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530134 return imports;
135 }
136
137 /**
138 * Prepares java file generator for extends list.
139 *
140 * @param extendsList list of classes need to be extended
141 */
142 public static void prepareJavaFileGeneratorForExtendsList(List<String> extendsList) {
143
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530144 if (extendsList != null && !extendsList.isEmpty()) {
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530145 JavaFileGenerator.setExtendsList(extendsList);
146 JavaFileGenerator.setIsExtendsList(true);
147 } else {
148 JavaFileGenerator.getExtendsList().clear();
149 JavaFileGenerator.setIsExtendsList(false);
150 }
151 }
152
153 /**
154 * Returns true if HasAugmentation class needs to be extended.
155 *
156 * @param extendsList list of classes need to be extended
157 * @return true or false
158 */
159 public static boolean isHasAugmentationExtended(List<String> extendsList) {
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530160 return (extendsList != null && extendsList.contains(HAS_AUGMENTATION));
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530161 }
162
163 /**
164 * Returns true if AugmentedInfo class needs to be extended.
165 *
166 * @param extendsList list of classes need to be extended
167 * @return true or false
168 */
169 public static boolean isAugmentedInfoExtended(List<String> extendsList) {
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530170 return (extendsList != null && extendsList.contains(AUGMENTED_INFO));
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530171 }
172
173 /**
174 * Closes the file handle for temporary file.
175 *
176 * @param file file to be closed
177 * @param toBeDeleted flag to indicate if file needs to be deleted
178 * @throws IOException when failed to close the file handle
179 */
180 public static void closeFile(File file, boolean toBeDeleted) throws IOException {
181
182 if (file != null) {
183 updateFileHandle(file, null, true);
184 if (toBeDeleted) {
185 file.delete();
186 }
187 }
188 }
189}