listmember

<%@page import="org.apache.jackrabbit.api.security.user.Authorizable"%>

<%@page import="org.apache.jackrabbit.api.security.user.Group"%>

<%@page session="false" import="javax.jcr.*,

        java.util.*,

        org.apache.sling.api.resource.Resource,

        org.apache.sling.api.resource.ValueMap,

        com.day.cq.commons.jcr.*,

        java.util.Date,

        java.text.SimpleDateFormat, 

        java.text.FieldPosition, java.text.ParsePosition,

        java.util.Iterator,

        javax.jcr.Property,

        javax.jcr.Node,

        javax.jcr.PropertyType,

        javax.jcr.Session" %><%

%><%@taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling/1.0" %><%

%><%@taglib prefix="cq" uri="http://www.day.com/taglibs/cq/1.0" %><%

%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%

%><%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><%

%><%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><%

%><sling:defineObjects />

<html>

<head>

<title>List Group</title>

</head>

<body>

<h3>List Group Info</h3>

<table border="1">

<tr><th>Group name</th><th>Number of member</th></tr>

<%

String query = "//element(*,rep:Group)";

Iterator<Resource> iter = resourceResolver.findResources(query,"xpath");

int totalGroupCount=0;

int totalMembers = 0;

Map<String,Integer> allgroups = new TreeMap<String,Integer>();

while(iter.hasNext()){

    int memberCount=0;

    Resource authresource = iter.next();

    Node node = authresource.adaptTo(Node.class);

    Group group = (Group)((authresource).adaptTo(Authorizable.class));

    Iterator<Authorizable> members = group.getMembers();

    

    while(members.hasNext()){

        members.next();

        memberCount++;

    }

    allgroups.put(group.getID(),memberCount);

     totalGroupCount++;

}

allgroups=sortByValue(allgroups);

for(Map.Entry<String,Integer> entry:allgroups.entrySet()){

totalMembers+=entry.getValue();

    out.print("<tr><td>"+entry.getKey()+"</td><td align=center>"+entry.getValue()+"</td></tr>");

}


%>

<%!

public static <K, V extends Comparable<? super V>> Map<K, V> 

sortByValue( Map<K, V> map )

{

List<Map.Entry<K, V>> list =

    new LinkedList<Map.Entry<K, V>>( map.entrySet() );

Collections.sort( list, new Comparator<Map.Entry<K, V>>()

{

    public int compare( Map.Entry<K, V> o1, Map.Entry<K, V> o2 )

    {

        return (o2.getValue()).compareTo( o1.getValue() );

    }

} );


Map<K, V> result = new LinkedHashMap<K, V>();

for (Map.Entry<K, V> entry : list)

{

    result.put( entry.getKey(), entry.getValue() );

}

return result;

}


%>

</table>

<%

out.println("Total Number of Group is "+ totalGroupCount + "<BR>");

out.println("Average number of user in Group is "+totalMembers/totalGroupCount);

%>

</body>

</html>

Comments