子データ削除プロビジョニング操作用のサンプルのストアド・プロシージャおよびGroovyスクリプト

次に、子データを削除するためのサンプルのgroovyスクリプトを示します。

子データ削除プロシージャは次のように呼び出されます。

delSt= conn.prepareCall("{call DELETE_USERGROUP(?,?)}");

delSt= conn.prepareCall("{call DELETE_USERROLE(?,?)}");

DELETE_USERGROUPのプロシージャは次のとおりです。

create or replace PROCEDURE DELETE_USERGROUP
(  userin IN VARCHAR2, gId IN VARCHAR2
) AS
BEGIN
DELETE from USER_GROUP where USERID=userin and GROUPID=gId;
END DELETE_USERGROUP;

DELETE_USERROLEのプロシージャは次のとおりです。

create or replace PROCEDURE DELETE_USERROLE
(  userin IN VARCHAR2, rId IN VARCHAR2
) AS
BEGIN
DELETE  from USER_ROLE where USERID=userin and ROLEID=rId;
END DELETE_USERROLE;

次のように子データ削除スクリプトを登録します。

import org.identityconnectors.framework.common.objects.*;
System.out.println("[removeMultiValuedAttributeScript] Removing Child data::"+ attributes);
 
try {
	childDataEOSet = null;
	delSt = null;
	//Get UID 
	String id = attributes.get("__UID__").getValue().get(0);
	if(attributes.get("USER_GROUP")!=null)
	{
		childDataEOSet=attributes.get("USER_GROUP").getValue();
		//Delete child data using stored procedure
		delSt= conn.prepareCall("{call DELETE_USERGROUP(?,?)}");
	    if(childDataEOSet !=null){
			System.out.println("[removeMultiValuedAttributeScript] Removing Group data.");
			//Iterate through child data and delete
			for( iterator = childDataEOSet.iterator(); iterator.hasNext(); )
			{
				eo = iterator.next();
				attrsSet = eo.getAttributes();
				grpattr=AttributeUtil.find("GROUPID",attrsSet);
				if(grpattr!=null){
					groupid=grpattr.getValue().get(0);
					delSt.setString(1, id);
					delSt.setString(2, groupid);
					delSt.executeUpdate();
					System.out.println("[removeMultiValuedAttributeScript] Deleted Group::"+ grpattr);
				} }; } }
} finally {
	if (delSt != null)
	delSt.close();
};
try {
	childDataEOSet = null;
	delSt = null;
	String id      = attributes.get("__UID__").getValue().get(0);
	if(attributes.get("USER_ROLE")!=null)
	{
		childDataEOSet=attributes.get("USER_ROLE").getValue();
		delSt= conn.prepareCall("{call DELETE_USERROLE(?,?)}");
	    if(childDataEOSet !=null){
			System.out.println("[removeMultiValuedAttributeScript] Removing Role data.");
			for( iterator = childDataEOSet.iterator(); iterator.hasNext(); )
			{
					eo = iterator.next();
				attrsSet = eo.getAttributes();
				roleattr=AttributeUtil.find("ROLEID",attrsSet);
				if(roleattr!=null){
					rolename=roleattr.getValue().get(0);
					delSt.setString(1, id);
					delSt.setString(2, rolename);
					delSt.executeUpdate();
					System.out.println("[removeMultiValuedAttributeScript] Deleted Role::"+ rolename);
				} 			}; 		} 	}
} finally {
	if (delSt != null)
		delSt.close();
};