-
Notifications
You must be signed in to change notification settings - Fork 1
/
swaggerGenWeb.pkb
140 lines (116 loc) · 3.45 KB
/
swaggerGenWeb.pkb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
create or replace PACKAGE BODY swaggerGenWeb
AS
l_tapigen_rt tapi_h_tapigen.h_tapigen_rt;
PROCEDURE save_error (p_sqlerrm VARCHAR2)
AS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
l_tapigen_rt.error := p_sqlerrm;
tapi_h_tapigen.upd (l_tapigen_rt);
COMMIT;
END save_error;
FUNCTION create_swagger (p_tablename VARCHAR2
, p_columns VARCHAR2
, p_primary VARCHAR2
, p_template VARCHAR2)
RETURN CLOB
AS
l_sql VARCHAR2 (32767);
l_pojo_code CLOB;
l_dummy VARCHAR2 (200);
l_raise_exceptions BOOLEAN := FALSE;
BEGIN
--Save data
l_tapigen_rt.id := h_tapigen_seq.nextval;
l_tapigen_rt.session_id := null;
l_tapigen_rt.table_name := p_tablename;
l_tapigen_rt.table_pks := p_primary;
l_tapigen_rt.audit_created_by := p_template;
tapi_h_tapigen.ins (l_tapigen_rt);
COMMIT;
/**
* Validations
*/
BEGIN
l_dummy := sys.dbms_assert.simple_sql_name (p_tablename);
EXCEPTION
WHEN OTHERS
THEN
save_error ('Invalid table name: ' || sqlerrm);
RETURN 'Invalid table name: ' || sqlerrm;
END;
/**
* Create table
*/
l_sql := 'CREATE TABLE ' || p_tablename || '(' || p_columns || ')';
l_tapigen_rt.table_sql := l_sql;
tapi_h_tapigen.upd (l_tapigen_rt);
COMMIT;
BEGIN
EXECUTE IMMEDIATE l_sql;
EXCEPTION
WHEN OTHERS
THEN
IF sqlcode = -00955
THEN
save_error ('Table "' || p_tablename || '" is already used by an existing object');
RETURN 'Table "' || p_tablename || '" is already used by an existing object';
ELSE
save_error ('Invalid Columns Definitions: ' || sqlerrm);
RETURN 'Invalid Columns Definitions: ' || sqlerrm;
END IF;
END;
/**
* Creaate primary key
*/
l_sql :=
'ALTER TABLE '
|| p_tablename
|| ' ADD (CONSTRAINT '
|| p_tablename
|| '_PK PRIMARY KEY ('
|| p_primary
|| '))';
BEGIN
EXECUTE IMMEDIATE l_sql;
EXCEPTION
WHEN OTHERS
THEN
save_error ('Invalid Primary Key Columns: ' || sqlerrm);
EXECUTE IMMEDIATE 'DROP TABLE ' || p_tablename;
RETURN 'Invalid Primary Key Columns: ' || sqlerrm;
END;
/**
* Create code
*/
BEGIN
l_pojo_code := swaggerGen.create_swagger(p_table_name => p_tablename, p_template => p_template, p_unique_key => p_primary);
EXCEPTION
WHEN OTHERS
THEN
save_error ('Error creating Code: ' || sqlerrm);
EXECUTE IMMEDIATE 'DROP TABLE ' || p_tablename;
RETURN sqlerrm;
END;
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE ' || p_tablename;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
RETURN l_pojo_code;
EXCEPTION
WHEN OTHERS
THEN
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE ' || p_tablename;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
save_error ('WHEN OTHERS: ' || sqlerrm);
RETURN sqlerrm;
END;
END swaggerGenWeb;