--- /dev/null
+/*\r
+ * ============LICENSE_START========================================================================\r
+ * ONAP : tr-069-adapter\r
+ * =================================================================================================\r
+ * Copyright (C) 2020 CommScope Inc Intellectual Property.\r
+ * =================================================================================================\r
+ * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,\r
+ * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You\r
+ * may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\r
+ * either express or implied. See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ===============LICENSE_END=======================================================================\r
+ */\r
+\r
+\r
+package org.commscope.tr069adapter.config.controllers;\r
+\r
+import java.util.Arrays;\r
+import java.util.List;\r
+import java.util.Optional;\r
+\r
+import org.commscope.tr069adapter.config.constants.ConfigurationServiceConstant;\r
+import org.commscope.tr069adapter.config.dto.ConfigurationData;\r
+import org.commscope.tr069adapter.config.exceptions.InvalidConfigurationServiceException;\r
+import org.commscope.tr069adapter.config.model.ConfigFileContent;\r
+import org.commscope.tr069adapter.config.service.ConfigurationDataService;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.util.StringUtils;\r
+import org.springframework.web.bind.annotation.GetMapping;\r
+import org.springframework.web.bind.annotation.PathVariable;\r
+import org.springframework.web.bind.annotation.PostMapping;\r
+import org.springframework.web.bind.annotation.RequestParam;\r
+import org.springframework.web.bind.annotation.RestController;\r
+import org.springframework.web.multipart.MultipartFile;\r
+\r
+@RestController\r
+public class ConfugurationDataController {\r
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());\r
+\r
+ @Autowired\r
+ ConfigurationDataService configDataService;\r
+\r
+ @GetMapping("/isActive")\r
+ public String getMessage() {\r
+ return "Application is running";\r
+ }\r
+\r
+ @GetMapping("/getFileContent/{id}")\r
+ public Optional<ConfigFileContent> viewFileContent(@PathVariable("id") String macId) {\r
+ logger.info("Processing request to view configuration file content for device {}", macId);\r
+ return configDataService.getConfigFileContent(macId);\r
+ }\r
+\r
+ @GetMapping("/getConfig/{id}")\r
+ public ConfigurationData viewConfigurationData(@PathVariable("id") String macId)\r
+ throws InvalidConfigurationServiceException {\r
+ logger.info("Processing request to get configuration data for device {}", macId);\r
+ Optional<ConfigurationData> configData = configDataService.getConfigurationData(macId);\r
+ if (configData.isPresent()) {\r
+ return configData.get();\r
+ }\r
+\r
+ logger.info("Configuration data doesn't exist for device {}", macId);\r
+ return null;\r
+ }\r
+\r
+ @PostMapping("/importConfig")\r
+ public String uploadMultipleFiles(@RequestParam("files") MultipartFile[] files)\r
+ throws InvalidConfigurationServiceException {\r
+\r
+ if (null == files || files.length == 0) {\r
+ logger.info("No file given for import");\r
+ return "No file given for import";\r
+ }\r
+\r
+ List<MultipartFile> fileList = Arrays.asList(files);\r
+\r
+ MultipartFile file = fileList.get(0);\r
+ String fileName = StringUtils.cleanPath(file.getOriginalFilename());\r
+\r
+ logger.debug("Importing file {}", fileName);\r
+ if (!fileName.endsWith(ConfigurationServiceConstant.CONFIG_FILE_EXTENSION)) {\r
+ throw new InvalidConfigurationServiceException("Unsupported file format for file " + fileName\r
+ + ". Only XML file is supported. Ignoring file import for file " + fileName);\r
+ }\r
+\r
+ try {\r
+ configDataService.saveConfigFileContents(file);\r
+ } catch (InvalidConfigurationServiceException ex) {\r
+ throw new InvalidConfigurationServiceException(\r
+ "Error occurred while import file " + fileName + ". Cause : " + ex.getMessage());\r
+ } catch (Exception ex) {\r
+ throw new InvalidConfigurationServiceException(\r
+ "UNKNOWN error occurred while import file " + fileName + ". Cause : " + ex.getMessage());\r
+ }\r
+\r
+ return "File " + fileName + " imported successfully";\r
+ }\r
+\r
+}\r