blob: 741274eabd4805e5741622df25e639d3681bddbb [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;
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053024import org.onosproject.yangutils.translator.tojava.JavaImportDataContainer;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053025
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 /**
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053048 * Adds import for HasAugmentation class.
49 *
50 * @param curNode current YANG node
51 * @param imports list of imports
52 * @param operation add or delete import
53 * @return import for HasAugmentation class
54 */
55 public static List<String> addHasAugmentationImport(YangNode curNode, List<String> imports, boolean operation) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053056 if (curNode instanceof JavaImportDataContainer) {
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053057 String thisImport = getHasAugmentationImport();
58 performOperationOnImports(imports, thisImport, operation);
59 }
60 return imports;
61 }
62
63 /**
64 * Adds import for AugmentedInfo class.
65 *
66 * @param curNode current YANG node
67 * @param imports list of imports
68 * @param operation add or delete import
69 * @return import for AugmentedInfo class
70 */
71 public static List<String> addAugmentedInfoImport(YangNode curNode, List<String> imports, boolean operation) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053072 if (curNode instanceof JavaImportDataContainer) {
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053073 String thisImport = getAugmentedInfoImport();
74 performOperationOnImports(imports, thisImport, operation);
75 }
76 return imports;
77 }
78
79 /**
80 * Adds import for array list.
81 *
82 * @param curNode current YANG node
83 * @param imports list of imports
84 * @param operation add or delete import
85 * @return import for HasAugmentation class
86 */
87 public static List<String> addArrayListImport(YangNode curNode, List<String> imports, boolean operation) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053088 if (curNode instanceof JavaImportDataContainer) {
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053089 String arrayListImport = getImportForArrayList();
90 String listImport = getImportForList();
91 performOperationOnImports(imports, arrayListImport, operation);
92 if (!imports.contains(listImport)) {
93 /**
94 * List can be there because of attribute also , so no need to remove it and operation will
95 * always be add(true).
96 */
97 performOperationOnImports(imports, listImport, true);
98 }
99 }
100
101 return imports;
102 }
103
104 /**
105 * Performs given operations on import list.
106 *
107 * @param imports list of imports
108 * @param curImport current import
109 * @param operation add or remove
110 * @return import list
111 */
112 private static List<String> performOperationOnImports(List<String> imports, String curImport, boolean operation) {
113 if (operation) {
114 imports.add(curImport);
115 } else {
116 imports.remove(curImport);
117 }
Bharat saraswald72411a2016-04-19 01:00:16 +0530118 sort(imports);
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530119 return imports;
120 }
121
122 /**
123 * Prepares java file generator for extends list.
124 *
125 * @param extendsList list of classes need to be extended
126 */
127 public static void prepareJavaFileGeneratorForExtendsList(List<String> extendsList) {
128
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530129 if (extendsList != null && !extendsList.isEmpty()) {
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530130 JavaFileGenerator.setExtendsList(extendsList);
131 JavaFileGenerator.setIsExtendsList(true);
132 } else {
133 JavaFileGenerator.getExtendsList().clear();
134 JavaFileGenerator.setIsExtendsList(false);
135 }
136 }
137
138 /**
139 * Returns true if HasAugmentation class needs to be extended.
140 *
141 * @param extendsList list of classes need to be extended
142 * @return true or false
143 */
144 public static boolean isHasAugmentationExtended(List<String> extendsList) {
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530145 return (extendsList != null && extendsList.contains(HAS_AUGMENTATION));
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530146 }
147
148 /**
149 * Returns true if AugmentedInfo class needs to be extended.
150 *
151 * @param extendsList list of classes need to be extended
152 * @return true or false
153 */
154 public static boolean isAugmentedInfoExtended(List<String> extendsList) {
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530155 return (extendsList != null && extendsList.contains(AUGMENTED_INFO));
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530156 }
157
158 /**
159 * Closes the file handle for temporary file.
160 *
161 * @param file file to be closed
162 * @param toBeDeleted flag to indicate if file needs to be deleted
163 * @throws IOException when failed to close the file handle
164 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530165 public static void closeFile(File file, boolean toBeDeleted)
166 throws IOException {
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530167
168 if (file != null) {
169 updateFileHandle(file, null, true);
170 if (toBeDeleted) {
171 file.delete();
172 }
173 }
174 }
175}