Initial source code
[oam/tr069-adapter.git] / config-data / src / main / java / org / commscope / tr069adapter / config / controllers / ConfugurationDataController.java
diff --git a/config-data/src/main/java/org/commscope/tr069adapter/config/controllers/ConfugurationDataController.java b/config-data/src/main/java/org/commscope/tr069adapter/config/controllers/ConfugurationDataController.java
new file mode 100644 (file)
index 0000000..84bab64
--- /dev/null
@@ -0,0 +1,106 @@
+/*\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