/*************************************************************************
 * The contents of this file are subject to the Adempiere License.  You may
 * obtain a copy of the License at    http://www.adempiere.org/license.html
 * Software is on an  "AS IS" basis,  WITHOUT WARRANTY OF ANY KIND, either
 * express or implied. See the License for details. Code: Adempiere ERP+CRM
 * Copyright (C) 1999-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved.
 *************************************************************************
 * $Id: Policy_Add.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $
 ***
 * Title:		Create Policies	 
 * Description:
 ************************************************************************/
DECLARE
	CURSOR	Cur_Tables	IS
		SELECT 	TableName 
		FROM 	AD_Table
		  --	General accessible tables
		WHERE 	TableName NOT LIKE 'RV%' 	--	Report Views
		  AND	TableName NOT LIKE 'T%' 	--	Temporary
		  --	Login Tables
		  AND	TableName NOT IN ('AD_User', 'AD_User_Roles', 'AD_Role', 'AD_Client', 'AD_Org', 'M_Warehouse')
		  --	Non Standard Tables
		  AND	TableName NOT LIKE 'AD_PInstance%'
		  AND	TableName NOT IN ('AD_Find')
		ORDER BY TableName;
BEGIN
	DBMS_OUTPUT.PUT_LINE('Loging in ...');
	Adempiere_Context.Login('SuperUser','System','System Administrator');
--  Adempiere_Context.Login('Adempiere','Internal','Server');
	--
	DBMS_OUTPUT.PUT_LINE('Creating Policies ...');
    FOR t IN Cur_Tables LOOP
		BEGIN
			DBMS_OUTPUT.PUT(t.TableName);
			DBMS_RLS.ADD_POLICY (
				'Adempiere',					--	object_schema
				t.TableName,				--  object_name
				t.TableName || '_Pol',		--	policy_name
				'Adempiere',					--	function_schema
				'Adempiere_Context.GetPredicate',	--	policy_function
				NULL,						--	statement_types 'SELECT,INSERT,UPDATE,DELETE'
				TRUE,						--	update_check
				TRUE);						--	enable          
			DBMS_OUTPUT.PUT_LINE(' ok');
			EXCEPTION
				WHEN OTHERS THEN
					DBMS_OUTPUT.PUT_LINE(' *** error ***');
		END;
	END LOOP;
END;
/