Merge "docs: Update install and release docs for DPDK migration support"
[samplevnf.git] / VNFs / DPPD-PROX / helper-scripts / dpi / csvreader.py
1 #!/bin/env python
2
3 ##
4 ## Copyright (c) 2010-2017 Intel Corporation
5 ##
6 ## Licensed under the Apache License, Version 2.0 (the "License");
7 ## you may not use this file except in compliance with the License.
8 ## You may obtain a copy of the License at
9 ##
10 ##     http://www.apache.org/licenses/LICENSE-2.0
11 ##
12 ## Unless required by applicable law or agreed to in writing, software
13 ## distributed under the License is distributed on an "AS IS" BASIS,
14 ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 ## See the License for the specific language governing permissions and
16 ## limitations under the License.
17 ##
18
19 from decimal import *
20
21 class CsvReaderError:
22     def __init__(self, msg):
23         self._msg = msg;
24
25     def __str__(self):
26         return self._msg;
27
28 class CsvReader:
29     def __init__(self, fieldTypes = None):
30         self._file_name = None;
31         self._fieldTypes = fieldTypes;
32
33     def open(self, file_name):
34         self._file = open(file_name, 'r');
35         self._file_name = file_name;
36
37     def read(self):
38         line = "#"
39         while (len(line) != 0 and line[0] == "#"):
40             line = self._file.readline();
41
42         if (len(line) != 0):
43             return self._lineToEntry(line)
44         else:
45             return None;
46
47     def _lineToEntry(self, line):
48         split = line.strip().split(',');
49         if (self._fieldTypes is None):
50             return split;
51         have = len(split)
52         expected = len(self._fieldTypes)
53         if (have != expected):
54             raise CsvReaderError("Invalid number of fields %d != %d" % (have, expected))
55
56         entry = {};
57         for i in range(len(self._fieldTypes)):
58             curFieldType = self._fieldTypes[i][1]
59             curFieldName = self._fieldTypes[i][0];
60             if (curFieldType == "int"):
61                 entry[curFieldName] = int(split[i])
62             elif (curFieldType == "Decimal"):
63                 entry[curFieldName] = Decimal(split[i])
64             else:
65                 raise CsvReaderError("Invalid field type %s" % curFieldType);
66         return entry;
67
68     def readAll(self):
69         ret = []
70         line = self.read();
71         while (line != None):
72             ret.append(line);
73             line = self.read();
74         return ret;
75
76     def close(self):
77         self._file.close();
78         self._file = None;