VES Heartbeat and Software Management Feature
[oam/tr069-adapter.git] / config-data / src / main / java / org / commscope / tr069adapter / config / controllers / ConfugurationDataController.java
1 /*\r
2  * ============LICENSE_START========================================================================\r
3  * ONAP : tr-069-adapter\r
4  * =================================================================================================\r
5  * Copyright (C) 2020 CommScope Inc Intellectual Property.\r
6  * =================================================================================================\r
7  * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,\r
8  * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You\r
9  * may obtain a copy of the License at\r
10  *\r
11  * http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\r
14  * either express or implied. See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  * ===============LICENSE_END=======================================================================\r
17  */\r
18 \r
19 \r
20 package org.commscope.tr069adapter.config.controllers;\r
21 \r
22 import java.util.Arrays;\r
23 import java.util.List;\r
24 import java.util.Optional;\r
25 \r
26 import org.commscope.tr069adapter.acs.common.dto.ConfigurationData;\r
27 import org.commscope.tr069adapter.config.constants.ConfigurationServiceConstant;\r
28 import org.commscope.tr069adapter.config.exceptions.InvalidConfigurationServiceException;\r
29 import org.commscope.tr069adapter.config.model.ConfigFileContent;\r
30 import org.commscope.tr069adapter.config.service.ConfigurationDataService;\r
31 import org.slf4j.Logger;\r
32 import org.slf4j.LoggerFactory;\r
33 import org.springframework.beans.factory.annotation.Autowired;\r
34 import org.springframework.util.StringUtils;\r
35 import org.springframework.web.bind.annotation.GetMapping;\r
36 import org.springframework.web.bind.annotation.PathVariable;\r
37 import org.springframework.web.bind.annotation.PostMapping;\r
38 import org.springframework.web.bind.annotation.RequestParam;\r
39 import org.springframework.web.bind.annotation.RestController;\r
40 import org.springframework.web.multipart.MultipartFile;\r
41 \r
42 @RestController\r
43 public class ConfugurationDataController {\r
44   private final Logger logger = LoggerFactory.getLogger(this.getClass());\r
45 \r
46   @Autowired\r
47   ConfigurationDataService configDataService;\r
48 \r
49   @GetMapping("/isActive")\r
50   public String getMessage() {\r
51     return "Application is running";\r
52   }\r
53 \r
54   @GetMapping("/getFileContent/{id}")\r
55   public Optional<ConfigFileContent> viewFileContent(@PathVariable("id") String macId) {\r
56     logger.info("Processing request to view configuration file content for device {}", macId);\r
57     return configDataService.getConfigFileContent(macId);\r
58   }\r
59 \r
60   @GetMapping("/getConfig/{id}")\r
61   public ConfigurationData viewConfigurationData(@PathVariable("id") String macId)\r
62       throws InvalidConfigurationServiceException {\r
63     logger.info("Processing request to get configuration data for device {}", macId);\r
64     Optional<ConfigurationData> configData = configDataService.getConfigurationData(macId);\r
65     if (configData.isPresent()) {\r
66       return configData.get();\r
67     }\r
68 \r
69     logger.info("Configuration data doesn't exist for device {}", macId);\r
70     return null;\r
71   }\r
72 \r
73   @PostMapping("/importConfig")\r
74   public String uploadMultipleFiles(@RequestParam("files") MultipartFile[] files)\r
75       throws InvalidConfigurationServiceException {\r
76 \r
77     if (null == files || files.length == 0) {\r
78       logger.info("No file given for import");\r
79       return "No file given for import";\r
80     }\r
81 \r
82     List<MultipartFile> fileList = Arrays.asList(files);\r
83 \r
84     MultipartFile file = fileList.get(0);\r
85     String fileName = StringUtils.cleanPath(file.getOriginalFilename());\r
86 \r
87     logger.debug("Importing file {}", fileName);\r
88     if (!fileName.endsWith(ConfigurationServiceConstant.CONFIG_FILE_EXTENSION)) {\r
89       throw new InvalidConfigurationServiceException("Unsupported file format for file " + fileName\r
90           + ". Only XML file is supported. Ignoring file import for file " + fileName);\r
91     }\r
92 \r
93     try {\r
94       configDataService.saveConfigFileContents(file);\r
95     } catch (InvalidConfigurationServiceException ex) {\r
96       throw new InvalidConfigurationServiceException(\r
97           "Error occurred while import file " + fileName + ". Cause : " + ex.getMessage());\r
98     } catch (Exception ex) {\r
99       throw new InvalidConfigurationServiceException(\r
100           "UNKNOWN error occurred while import file " + fileName + ". Cause : " + ex.getMessage());\r
101     }\r
102 \r
103     return "File " + fileName + " imported successfully";\r
104   }\r
105 \r
106 }\r