子データ追加プロビジョニング操作用のサンプルのGroovyスクリプト

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

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

import org.identityconnectors.framework.common.objects.*;
import java.text.*;
 
System.out.println("[addMultiValuedAttributeScript-Groovy] Adding Child data::"+ attributes);
childst =null;
try {
	//Adding Group data
	childDataEOSet = null;
	
	/**The child attributes are returned as a set of embedded objects. Each	Embedded    object will provide a row of data in the child table.
	For example, if DBAT contains USER_GROUP as a child in OIM and contains two rows of groups data then, we will get a set of embedded objects with count 2 and each embedded	object represents a row in child data.
	This groovy script is based on a child table named USER_GROUP and containing USERID, GROUP_ID  as its columns.**/
	
	if(attributes.get("USER_GROUP")!=null)
	{
		childDataEOSet=attributes.get("USER_GROUP").getValue();
		childst = conn.prepareStatement("INSERT INTO USER_GROUP VALUES (?,?)");
		String id = attributes.get("__UID__").getValue().get(0);
		if(childDataEOSet !=null){
			//Iterate through child data and insert into table
			System.out.println("[addMultiValuedAttributeScript] Adding Group data.");
			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);
					childst.setString(1, id);
					childst.setString(2, groupid);
					childst.executeUpdate();
					childst.clearParameters();
				} };
		} } } finally {
	if (childst != null)
	childst.close();
};

try {
	//Adding Role data
	childDataEOSet = null;
	if(attributes.get("USER_ROLE")!=null){
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S");
		DateFormat targetFormat = new SimpleDateFormat("dd-MMM-yy");
		childDataEOSet=attributes.get("USER_ROLE").getValue();
		childst = conn.prepareStatement("INSERT INTO USER_ROLE VALUES (?,?,?,?)");
		String id = attributes.get("__UID__").getValue().get(0);
		if(childDataEOSet !=null){
			System.out.println("[addMultiValuedAttributeScript] Adding Role data.");
			for( iterator = childDataEOSet.iterator(); iterator.hasNext(); ) {
				eo = iterator.next();
				attrsSet = eo.getAttributes();
				roleattr=AttributeUtil.find("ROLEID",attrsSet);
				fromdateAttr=AttributeUtil.find("FROMDATE",attrsSet);
				todateAttr=AttributeUtil.find("TODATE",attrsSet);
								if(roleattr!=null){
					roleid=roleattr.getValue().get(0);
	    			childst.setString(1, id);
					childst.setString(2, roleid);
					fromdate = null;
					if(fromdateAttr!= null)
					{
						java.util.Date date= df.parse(fromdateAttr.getValue().get(0));
						fromdate = targetFormat.format(date);
					}
					childst.setString(3, fromdate);
					todate = null;
					if(todateAttr!= null)
					{
						java.util.Date date= df.parse(todateAttr.getValue().get(0));
						todate = targetFormat.format(date);
					}
					childst.setString(4, todate);
					childst.executeUpdate();
					childst.clearParameters();
				} };
	} } } finally {
	if (childst != null)
	childst.close();
};