Support for defining multiple ranges in RANGE_RULE
[ccsdk/sli/adaptors.git] / resource-assignment / provider / src / main / java / org / onap / ccsdk / sli / adaptors / ra / rule / dao / RangeRuleDaoImpl.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * openECOMP : SDN-C
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                         reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.ccsdk.sli.adaptors.ra.rule.dao;
23
24 import java.util.ArrayList;
25 import java.util.List;
26 import org.onap.ccsdk.sli.adaptors.ra.rule.data.RangeRule;
27 import org.onap.ccsdk.sli.adaptors.rm.data.Range;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30 import org.springframework.jdbc.core.JdbcTemplate;
31 import org.springframework.jdbc.core.RowMapper;
32
33 public class RangeRuleDaoImpl implements RangeRuleDao {
34
35     @SuppressWarnings("unused")
36     private static final Logger log = LoggerFactory.getLogger(RangeRuleDaoImpl.class);
37
38     private static final String GET_SQL = "SELECT * FROM RANGE_RULE WHERE service_model = ? AND equipment_level = ?";
39
40     private JdbcTemplate jdbcTemplate;
41
42     @Override
43     public List<RangeRule> getRangeRules(String serviceModel, String equipLevel) {
44         List<RangeRule> rangeRuleList =
45                 jdbcTemplate.query(GET_SQL, new Object[] {serviceModel, equipLevel}, (RowMapper<RangeRule>) (rs, rowNum) -> {
46                     RangeRule rl = new RangeRule();
47                     rl.id = rs.getLong("range_rule_id");
48                     rl.rangeName = rs.getString("range_name");
49                     rl.serviceModel = rs.getString("service_model");
50                     rl.endPointPosition = rs.getString("end_point_position");
51                     rl.equipmentLevel = rs.getString("equipment_level");
52                     rl.equipmentExpression = rs.getString("equipment_expression");
53
54                     String rangesStr = rs.getString("ranges");
55                     String[] ranges = rangesStr.split(",");
56                     rl.rangeList = new ArrayList<>();
57                     for (String rangeStr : ranges) {
58                         Range range = new Range();
59                         String[] nn = rangeStr.split("-");
60                         if (nn.length >= 1) {
61                             try {
62                                 range.min = range.max = Integer.parseInt(nn[0]);
63                             } catch (NumberFormatException e) {
64                                 log.warn("Invalid value found in DB for range: " + rangeStr, e);
65                             }
66                         }
67                         if (nn.length >= 2) {
68                             try {
69                                 range.max = Integer.parseInt(nn[1]);
70                             } catch (NumberFormatException e) {
71                                 log.warn("Invalid value found in DB for range: " + rangeStr, e);
72                             }
73                         }
74                         if (nn.length > 2) {
75                             log.warn("Invalid value found in DB for range: " + rangeStr);
76                         }
77                         rl.rangeList.add(range);
78                     }
79
80                     return rl;
81                 });
82         return rangeRuleList;
83     }
84
85     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
86         this.jdbcTemplate = jdbcTemplate;
87     }
88 }