DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_SC_GRANTS_TBL_PVT

Source


1 PACKAGE BODY IGS_SC_GRANTS_TBL_PVT AS
2 /* $Header: IGSSC04B.pls 120.1 2005/06/03 08:30:48 appldev  $ */
3 
4 /******************************************************************
5 
6     Copyright (c) 2002 Oracle Corporation, Redwood Shores, CA, USA
7                          All rights reserved.
8 
9  Created By         : Arkadi Tereshenkov
10 
11  Date Created By    : Oct-01-2002
12 
13 
14  Purpose            : This is a package used for a grant model for each object
15 
16  remarks            :
17 
18  Change History
19 
20 Who                   When           What
21 -----------------------------------------------------------
22 Arkadi Tereshenkov    Apr-10-2002    New Package created.
23 
24 ******************************************************************/
25 
26 
27 G_PKG_NAME         CONSTANT VARCHAR2(30) := 'IGS_SC_GRANTS_TBL_PVT';
28 
29 FUNCTION  Generate_and_raise (p_object IN VARCHAR2)
30 RETURN VARCHAR2
31 IS
32 
33   l_msg_count      NUMBER;
34   l_msg_data       VARCHAR2(2000);
35   l_parameter_list wf_parameter_list_t := wf_parameter_list_t();
36   l_event_name    VARCHAR2(255) := 'oracle.apps.igs.sc.error';
37   l_event_key     VARCHAR2(255);
38 
39 BEGIN
40 
41    FND_MSg_PUB.Count_And_Get ( p_count => l_msg_count,
42                                p_data  => l_msg_data );
43 
44    IF (l_msg_count > 0) THEN
45 
46       l_msg_data := '';
47 
48       FOR l_cur IN 1..l_msg_count LOOP
49 
50          l_msg_data :=l_msg_data||'  '|| FND_MSg_PUB.GET(l_cur, FND_API.g_FALSE);
51 
52       END LOOP;
53 
54    ELSE
55 
56          l_msg_data  := 'Error Returned but Error stack has no data';
57    END IF;
58 
59 
60     RETURN l_msg_data;
61 
62     wf_event.AddParameterToList(p_name=>'OBJECT_NAME',p_value=>p_object,p_parameterlist=>l_parameter_list);
63     wf_event.AddParameterToList(p_name=>'ERROR_TEXT',p_value=>l_msg_data,p_parameterlist=>l_parameter_list);
64 
65     wf_event.raise( p_event_name => l_event_name,
66                     p_event_key  => l_event_key,
67                     p_parameters => l_parameter_list);
68 
69 
70     l_parameter_list.DELETE;
71 
72     RETURN l_msg_data;
73 
74 END Generate_and_raise;
75 
76 
77 FUNCTION get_grant
78 ( p_schema IN VARCHAR2,
79   p_object IN VARCHAR2,
80   p_action IN VARCHAR2 )
81 RETURN VARCHAR2 IS
82 
83   l_return_status   VARCHAR2(1);
84   l_msg_count       NUMBER;
85   l_msg_data        VARCHAR(2000);
86   l_where_clause    VARCHAR2(32000);
87 
88 
89 BEGIN
90 /* Call get grant main procedure */
91 
92   -- Check if the tables are SECURITY tables:
93 
94   IF SUBSTR(p_object,1,6) = 'IGS_SC' THEN
95 
96      IF p_action = 'S' THEN
97 
98        RETURN '1=1';
99 
100      ELSE
101 
102        RETURN '1=2';
103 
104      END IF;
105 
106   END IF;
107 
108   IF SYS_CONTEXT('OSS_APP_CTX','SECURITY') IS NULL THEN
109       RETURN NULL;
110   ELSE
111       -- If not
112 
113       IGS_SC_GRANTS_PVT.generate_grant(
114         p_api_version       => 1.0,
115         p_object_name       => p_object,
116         p_function_type     => p_action,
117         x_where_clause      => l_where_clause,
118         x_return_status     =>  l_return_status,
119         x_msg_count         =>  l_msg_count,
120         x_msg_data          =>  l_msg_data );
121 
122       IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
123         raise FND_API.G_EXC_ERROR;
124       END IF;
125       RETURN l_where_clause;
126   END IF;
127 EXCEPTION
128     WHEN FND_API.G_EXC_ERROR THEN
129 
130     l_where_clause := Generate_and_raise(p_object);
131 
132     RETURN '1=2';
133 
134   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
135 
136     l_where_clause := Generate_and_raise(p_object);
137 
138     RETURN '1=2';
139 
140   WHEN OTHERS THEN
141 
142     -- Unexpected error during the execution. We need to return no wrows to the caller and raise business event
143 
144      IF (FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
145         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'GET_GRANT');
146      END IF;
147 
148     l_where_clause := Generate_and_raise(p_object);
149 
150     RETURN l_where_clause;
151 
152 END get_grant;
153 
154 
155 
156 FUNCTION insert_row
157 ( p_schema IN VARCHAR2,
158   p_object IN VARCHAR2 )
159 RETURN VARCHAR2
160 IS
161 BEGIN
162 
163   RETURN GET_GRANT ( p_schema => p_schema,
164          p_object => p_object,
165          p_action => 'I');
166 
167 END insert_row;
168 
169 FUNCTION select_row
170 ( p_schema IN VARCHAR2,
171   p_object IN VARCHAR2 )
172 RETURN VARCHAR2
173 IS
174 BEGIN
175 
176   RETURN GET_GRANT ( p_schema => p_schema,
177          p_object => p_object,
178          p_action => 'S');
179 
180 END select_row;
181 
182 
183 FUNCTION update_row
184 ( p_schema IN VARCHAR2,
185   p_object IN VARCHAR2 )
186 RETURN VARCHAR2
187 IS
188 BEGIN
189 
190   RETURN GET_GRANT ( p_schema => p_schema,
191          p_object => p_object,
192          p_action => 'U');
193 
194 END update_row;
195 
196 
197 FUNCTION delete_row
198 ( p_schema IN VARCHAR2,
199   p_object IN VARCHAR2 )
200 RETURN VARCHAR2
201 IS
202 BEGIN
203 
204   RETURN GET_GRANT ( p_schema => p_schema,
205          p_object => p_object,
206          p_action => 'D');
207 
208 END delete_row;
209 
210 
211 
212 END IGS_SC_GRANTS_TBL_PVT;
213