[Home] [Help]
PACKAGE BODY: APPS.XLA_SECURITY_POLICY_PKG
Source
1 PACKAGE BODY xla_security_policy_pkg AS
2 -- $Header: xlacmpol.pkb 120.5 2005/11/10 20:13:35 weshen ship $
3 /*===========================================================================+
4 | Copyright (c) 2001-2002 Oracle Corporation |
5 | Redwood Shores, CA, USA |
6 | All rights reserved. |
7 +============================================================================+
8 | FILENAME |
9 | xlacmpol.pkb |
10 | |
11 | PACKAGE NAME |
12 | xla_security_policy_pkg |
13 | |
14 | DESCRIPTION |
15 | Security policy package that contains standard XLA security policy |
16 | attatched to the events |
17 | |
18 | HISTORY |
19 | 11-Feb-02 S. Singhania Created from the package XLA_SECURITY_PKG |
20 | 25-Aug-05 Shishir Joshi Added MO_Policy. |
21 | 10-Nov-05 W. Shen fix bug 4717192. |
22 | |
23 +===========================================================================*/
24
25 --=============================================================================
26 -- *********** public procedures and functions **********
27 --=============================================================================
28 --=============================================================================
29 --
30 --
31 --
32 --
33 -- Following are the public routines.
34 --
35 -- 1. xla_standard_policy
36 --
37 --
38 --
39 --
40 --
41 --
42 --
43 --
44 --
45 --
46 --
47 --
48 --=============================================================================
49 --=============================================================================
50 --
51 --
52 --
53 --=============================================================================
54
55 -- Constants
56
57 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
58 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
59 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
60 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
61 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
62 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
63 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
64 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.xla_security_policy_pkg';
65
66
67 -- Global variables for debugging
68 g_log_level PLS_INTEGER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
69 g_log_enabled BOOLEAN := fnd_log.test
70 (log_level => g_log_level
71 ,module => C_DEFAULT_MODULE);
72
73
74
75 /*===================================================================
76 print DEBUG messages
77
78 =====================================================================*/
79
80 PROCEDURE trace (p_msg IN VARCHAR2
81 ,p_level IN NUMBER
82 ,p_module IN VARCHAR2) IS
83 BEGIN
84
85 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
86 fnd_log.message(p_level, p_module);
87 ELSIF p_level >= g_log_level THEN
88 fnd_log.string(p_level, p_module, p_msg);
89 END IF;
90 EXCEPTION
91 WHEN xla_exceptions_pkg.application_exception THEN
92 RAISE;
93 WHEN OTHERS THEN
94 xla_exceptions_pkg.raise_message
95 (p_location => 'xla_security_policy_pkg.trace');
96 END trace;
97
98
99 FUNCTION xla_standard_policy
100 (p_obj_schema IN VARCHAR2
101 ,p_obj_name IN VARCHAR2)
102 RETURN VARCHAR2 IS
103 BEGIN
104 RETURN '1 = 1';
105 END xla_standard_policy;
106
107
108 /*===================================================================
109
110 Derived MO Policy
111
112 =====================================================================*/
113
114
115 FUNCTION MO_Policy
116 (p_obj_schema IN VARCHAR2
117 ,p_obj_name IN VARCHAR2)
118 RETURN VARCHAR2 IS
119
120 l_mo_policy VARCHAR2(4000);
121 l_log_module VARCHAR2(240);
122 BEGIN
123
124 IF g_log_enabled THEN
125 l_log_module := C_DEFAULT_MODULE||'.MO_Policy';
126 END IF;
127
128 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129 trace('MO_Policy.Begin',C_LEVEL_PROCEDURE,l_log_module);
130 END IF;
131
132 l_mo_policy := mo_global.org_security
133 ( obj_schema => null
134 ,obj_name => null
135 );
136
137 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138 trace('l_mo_policy after calling mo_global.org_security = ' || l_mo_policy,C_LEVEL_STATEMENT,l_log_module);
139 END IF;
140
141 l_mo_policy := REGEXP_REPLACE(l_mo_policy, 'org_id', 'security_id_int_1',1,1);
142
143 -- Security identifiers are not populated. In case of, manual journal entires
144 -- or third party merge events.
145 -- bug 4717192, add the if condition
146 IF(l_mo_policy is not null) THEN
147 l_mo_policy := l_mo_policy || ' OR security_id_int_1 IS NULL ';
148 END IF;
149
150 xla_utility_pkg.print_logfile
151 ('l_mo_policy after replace = ' || l_mo_policy);
152
153 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154 trace('MO_Policy.End',C_LEVEL_PROCEDURE,l_log_module);
155 END IF;
156 RETURN(l_mo_policy);
157 END MO_Policy;
158
159 END xla_security_policy_pkg;