Skip to content

Commit d003132

Browse files
committed
Make service program extension of program, and add parameter parent class
1 parent 4c4ba0f commit d003132

File tree

6 files changed

+48
-19
lines changed

6 files changed

+48
-19
lines changed

pykit/Character.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
class Character:
1+
import Parameter
2+
class Character(Parameter):
23
"""
34
Object for IBM i Character.
45
"""
@@ -19,5 +20,5 @@ def __init__(self, name, length, value):
1920

2021
def get_payload(self):
2122
self.payload['type'] = str(self.length) + 'a'
22-
self.payload['value'] = self.value
23+
Parameter.get_payload(self);
2324
return self.payload

pykit/Float.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
class Float:
1+
import Parameter
2+
class Float(Parameter):
23
"""
34
Object for IBM i Float.
45
"""
@@ -21,5 +22,5 @@ def __init__(self, name, length, precision, value):
2122

2223
def get_payload(self):
2324
self.payload['type'] = str(self.length) + 'f' + str(self.precision)
24-
self.payload['value'] = self.value
25+
Parameter.get_payload(self);
2526
return self.payload

pykit/Integer.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
class Integer:
1+
import Parameter
2+
class Integer(Parameter):
23
"""
34
Object for IBM i Integer.
45
"""
@@ -20,5 +21,6 @@ def __init__(self, name, length, value, signed=True):
2021

2122
def get_payload(self):
2223
self.payload['type'] = str(self.length) + ('i' if self.signed else 'u') + '0'
23-
self.payload['value'] = self.value
24+
Parameter.get_payload(self);
25+
2426
return self.payload

pykit/Parameter.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Parameter:
2+
"""
3+
Object for IBM i Parameters.
4+
"""
5+
def __init__(self, name, value):
6+
"""
7+
:param name:
8+
:param value:
9+
"""
10+
self.value = value
11+
self.name = str(name)
12+
self.isReturn = False
13+
self.payload = {"name":self.name}
14+
15+
16+
def get_payload(self):
17+
self.payload['value'] = self.value
18+
if self.isReturn:
19+
self.payload['by'] = 'return'
20+
21+
return self.payload

pykit/ServiceProgram.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
class ServiceProgram:
1+
import Program
2+
3+
class ServiceProgram(Program):
24
"""
35
Object for calling an IBM i Program.
46
"""
@@ -10,20 +12,13 @@ def __init__(self, name, library='', function=''):
1012
"pgm": [{"name": name, "lib": library, "func": function}]
1113
}
1214

13-
def add_parameter(self, parameter):
15+
def add_return(self, parameter):
1416
"""
1517
16-
:param parameter: Parameter to be added
18+
:param parameter: Return parameter to be added
1719
:return:
1820
"""
21+
parameter.isReturn = True
1922
self.parameters.append(parameter)
20-
21-
def get_payload(self):
22-
if len(self.parameters) is 1:
23-
self.payload["pgm"].append({"s": self.parameters[0].get_payload()})
24-
else:
25-
self.payload["pgm"].append({"s":[]})
26-
for p in self.parameters:
27-
self.payload["pgm"][-1]["s"].append(p.get_payload())
28-
29-
return self.payload
23+
24+

pykit/tests/test_service_program.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,23 @@
77
class TestServiceProgram(unittest.TestCase):
88
def setUp(self):
99
char = Character("char", 128, "Hi there")
10+
char_return = Character("char", 128, "Hi back")
1011
self.hello_prog = ServiceProgram("HELLOSRV", "DB2JSON", "HELLO")
1112
self.hello_prog.add_parameter(char)
13+
self.hello_prog_return = ServiceProgram("HELLOSRV", "DB2JSON", "HELLOAGAIN")
14+
self.hello_prog_return.add_parameter(char)
15+
self.hello_prog_return.add_return(char_return)
16+
1217

1318
def test_hello(self):
1419
self.assertEqual(
1520
self.hello_prog.get_payload(),
1621
{"pgm":[{"name":"HELLOSRV", "lib":"DB2JSON", "func": "HELLO"}, {"s":{"name":"char", "type":"128a", "value":"Hi there"}}]}
1722
)
23+
self.assertEqual(
24+
self.hello_prog_return.get_payload(),
25+
{"pgm":[{"name":"HELLOSRV", "lib":"DB2JSON", "func": "HELLOAGAIN"}, {"s":[{"name":"char", "type":"128a", "value":"Hi there"},{"name":"char", "type":"128a", "value":"Hi back", "by":"return"}]}]}
26+
)
1827

1928
def test_execute_hello_world(self):
2029
connection = connect(

0 commit comments

Comments
 (0)