44bd394072928d2c76f218c3fe882edb39af1228
[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 import org.commscope.tr069adapter.acs.common.dto.ConfigurationData;\r
26 import org.commscope.tr069adapter.config.constants.ConfigurationServiceConstant;\r
27 import org.commscope.tr069adapter.config.exceptions.InvalidConfigurationServiceException;\r
28 import org.commscope.tr069adapter.config.service.ConfigurationDataService;\r
29 import org.slf4j.Logger;\r
30 import org.slf4j.LoggerFactory;\r
31 import org.springframework.beans.factory.annotation.Autowired;\r
32 import org.springframework.util.StringUtils;\r
33 import org.springframework.web.bind.annotation.GetMapping;\r
34 import org.springframework.web.bind.annotation.PostMapping;\r
35 import org.springframework.web.bind.annotation.RequestParam;\r
36 import org.springframework.web.bind.annotation.RestController;\r
37 import org.springframework.web.multipart.MultipartFile;\r
38 \r
39 @RestController\r
40 public class ConfugurationDataController {\r
41   private final Logger logger = LoggerFactory.getLogger(this.getClass());\r
42 \r
43   @Autowired\r
44   ConfigurationDataService configDataService;\r
45 \r
46   @GetMapping("/isActive")\r
47   public String getMessage() {\r
48     return "Application is running";\r
49   }\r
50 \r
51   @PostMapping("/getConfig")\r
52   public ConfigurationData viewConfigurationData(@RequestParam String macId,\r
53       @RequestParam String swVersion, @RequestParam String hwVersion)\r
54       throws InvalidConfigurationServiceException {\r
55     logger.info("Processing request to get configuration data for device {}", macId);\r
56     Optional<ConfigurationData> configData = configDataService.getConfigurationData(macId, swVersion, hwVersion);\r
57     if (configData.isPresent()) {\r
58       return configData.get();\r
59     }\r
60 \r
61     logger.info("Configuration data doesn't exist for device {}", macId);\r
62     return null;\r
63   }\r
64 \r
65   @PostMapping("/importConfig")\r
66   public String uploadMultipleFiles(@RequestParam("files") MultipartFile[] files)\r
67       throws InvalidConfigurationServiceException {\r
68 \r
69     if (null == files || files.length == 0) {\r
70       logger.info("No file given for import");\r
71       return "No file given for import";\r
72     }\r
73 \r
74     List<MultipartFile> fileList = Arrays.asList(files);\r
75 \r
76     MultipartFile file = fileList.get(0);\r
77     String fileName = StringUtils.cleanPath(file.getOriginalFilename());\r
78 \r
79     logger.debug("Importing file {}", fileName);\r
80     if (!fileName.endsWith(ConfigurationServiceConstant.CONFIG_FILE_EXTENSION)) {\r
81       throw new InvalidConfigurationServiceException("Unsupported file format for file " + fileName\r
82           + ". Only XML file is supported. Ignoring file import for file " + fileName);\r
83     }\r
84 \r
85     try {\r
86       configDataService.saveConfigFileContents(file);\r
87     } catch (InvalidConfigurationServiceException ex) {\r
88       throw new InvalidConfigurationServiceException(\r
89           "Error occurred while import file " + fileName + ". Cause : " + ex.getMessage());\r
90     } catch (Exception ex) {\r
91       throw new InvalidConfigurationServiceException(\r
92           "UNKNOWN error occurred while import file " + fileName + ". Cause : " + ex.getMessage());\r
93     }\r
94 \r
95     return "File " + fileName + " imported successfully";\r
96   }\r
97 \r
98 }\r