RA: Add capability for Policy driven VlanTags
[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     private static final Logger log = LoggerFactory.getLogger(RangeRuleDaoImpl.class);
36
37     private static final String GET_SQL = "SELECT * FROM RANGE_RULE WHERE service_model = ? AND equipment_level = ?";
38
39     private JdbcTemplate jdbcTemplate;
40
41     @Override
42     public List<RangeRule> getRangeRules(String serviceModel, String equipLevel) {
43         return jdbcTemplate.query(GET_SQL, new Object[] { serviceModel, equipLevel },
44                 (RowMapper<RangeRule>) (rs, rowNum) -> {
45                     RangeRule rl = new RangeRule();
46                     rl.id = rs.getLong("range_rule_id");
47                     rl.rangeName = rs.getString("range_name");
48                     rl.serviceModel = rs.getString("service_model");
49                     rl.endPointPosition = rs.getString("end_point_position");
50                     rl.equipmentLevel = rs.getString("equipment_level");
51                     rl.equipmentExpression = rs.getString("equipment_expression");
52
53                     String rangesStr = rs.getString("ranges");
54                     String[] ranges = rangesStr.split(",");
55                     rl.rangeList = new ArrayList<>();
56                     for (String rangeStr : ranges) {
57                         Range range = new Range();
58                         String[] nn = rangeStr.split("-");
59                         if (nn.length >= 1) {
60                             try {
61                                 range.min = range.max = Integer.parseInt(nn[0]);
62                             } catch (NumberFormatException e) {
63                                 log.warn("Invalid value found in DB for range: " + rangeStr, e);
64                             }
65                         }
66                         if (nn.length >= 2) {
67                             try {
68                                 range.max = Integer.parseInt(nn[1]);
69                             } catch (NumberFormatException e) {
70                                 log.warn("Invalid value found in DB for range: " + rangeStr, e);
71                             }
72                         }
73                         if (nn.length > 2) {
74                             log.warn("Invalid value found in DB for range: {}", rangeStr);
75                         }
76                         rl.rangeList.add(range);
77                     }
78
79                     return rl;
80                 });
81
82     }
83
84     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
85         this.jdbcTemplate = jdbcTemplate;
86     }
87 }