LSC 2.0.3 contains bug fixes that make it is possible to detect and process a 
ranged attribute returned by Active Directory .  Here is a snippet of 
JavaScript designed to do this for the member attribute.

<string>
                <![CDATA[js:
                                var attrName = "member" ;
                                var newDataset = new Array();
                                var rangeStart = null ;
                                var rangeEnd = null ;
                                var rangeSize = null ;
                                var arrayCounter = 0 ;
                                var tmpDataset = 
srcBean.getDatasetValuesById(attrName).toArray() ;
                                if (tmpDataset.length > 0)
                                {
                                                rangeStart = 0
                                                rangeEnd = "*"
                                                rangeSize = 0
                                }
                                else
                                {
                                                var attrList = 
srcBean.getDatasetsNames().toArray()
                                                if (attrList != null)
                                                {
                                                                if 
(attrList.length > 0)
                                                                {
                                                                                
for (var i=0; i < attrList.length; i++ )
                                                                                
{
                                                                                
                if (attrList[i].toString().contains(attrName + ";range"))
                                                                                
                {
                                                                                
                                var startPos = null
                                                                                
                                var sepPos = null
                                                                                
                                startPos = 
attrList[i].toString().indexOf(";range=") + 7
                                                                                
                                sepPos = attrList[i].toString().indexOf("-", 
startPos)
                                                                                
                                rangeStart = 
attrList[i].toString().substring(startPos, sepPos)
                                                                                
                                rangeEnd = 
attrList[i].toString().substring(sepPos + 1)
                                                                                
                                rangeSize = Number(rangeEnd) - 
Number(rangeStart)
                                                                                
                                break
                                                                                
                }
                                                                                
}
                                                                }
                                                }
                                }
                                if (rangeStart != null)
                                {
                                                var tmpAttrName = "" ;
                                                while (rangeStart != "*")
                                                {
                                                                if (rangeStart 
== "0" && rangeEnd != "*")
                                                                {
                                                                                
tmpAttrName = attrName + ";range=" + rangeStart.toString() + "-" + 
rangeEnd.toString()
                                                                                
tmpDataset = srcBean.getDatasetValuesById(tmpAttrName).toArray()
                                                                }
                                                                else if 
(rangeStart != "0")
                                                                {
                                                                                
tmpAttrName = "member;range=" + rangeStart.toString() + "-" + 
rangeEnd.toString()
                                                                                
tmpDataset = srcLdap.attribute(srcBean.getMainIdentifier(), 
tmpAttrName).toArray()
                                                                }
                                                                if (rangeEnd == 
"*")
                                                                {
                                                                                
rangeStart = "*"
                                                                }
                                                                if (tmpDataset 
!= null)
                                                                {
                                                                                
if (tmpDataset.length > 0)
                                                                                
{
                                                                                
                for (var i=0; i<tmpDataset.length; i++ )
                                                                                
                {
                                                                                
                                // Add attribute value processing logic here;
                                                                                
                                // Be sure to explicitly type the array 
elements to prevent conversion to an object array;
                                                                                
                                newDataset[arrayCounter++] = 
String(tmpDataset[i])
                                                                                
                }
                                                                                
                if (rangeEnd != "*")
                                                                                
                {
                                                                                
                                rangeStart = Number(rangeEnd) + 1
                                                                                
                                rangeEnd = Number(rangeStart) + 
Number(rangeSize)
                                                                                
                }
                                                                                
}
                                                                                
else
                                                                                
{
                                                                                
                rangeEnd = "*"
                                                                                
}
                                                                }
                                                                else
                                                                {
                                                                                
rangeEnd = "*"
                                                                }
                                                }
                                }
                                newDataset
                ]]>
</string>

-Jon C. Kidder
American Electric Power
Middleware Services
Email: [email protected]<mailto:[email protected]>
Phone: 614-716-4970
_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org

lsc-users mailing list
[email protected]
http://lists.lsc-project.org/listinfo/lsc-users

Reply via email to