2010-02-05 7 views
3

J'ai créé un domaine dans ce domaine j'ai créé près de 500 comptes utilisateur.Je veux récupérer tous les utilisateurs de mon domaine .so que j'utilise le codage suivant pour récupérer tous les utilisateurs dans mon domaine domaine.Mais dans ce codage j'ai affiché seulement 100 premiers utilisateurs.Et aussi il affiche les entrées de l'utilisateur total 100.Je ne sais pas quel problème dans ce codage.Comment récupérer tous les utilisateurs de mon domaine

import com.google.gdata.client.appsforyourdomain.UserService; 
import com.google.gdata.data.appsforyourdomain.provisioning.UserEntry; 
import com.google.gdata.data.appsforyourdomain.provisioning.UserFeed; 
import com.google.gdata.util.AuthenticationException; 
import com.google.gdata.util.ServiceException; 

import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.List; 

/** 
* This is a test template 
*/ 

    public class AppsProvisioning { 

    public static void main(String[] args) { 

     try { 

     // Create a new Apps Provisioning service 
     UserService myService = new UserService("My Application"); 
     myService.setUserCredentials(admin,password); 

     // Get a list of all entries 
     URL metafeedUrl = new URL("https://www.google.com/a/feeds/"+domain+"/user/2.0/"); 
     System.out.println("Getting user entries...\n"); 
     UserFeed resultFeed = myService.getFeed(metafeedUrl, UserFeed.class); 
     List<UserEntry> entries = resultFeed.getEntries(); 
     for(int i=0; i<entries.size(); i++) { 
      UserEntry entry = entries.get(i); 
      System.out.println("\t" + entry.getTitle().getPlainText()); 
     } 
     System.out.println("\nTotal Entries: "+entries.size()); 
     } 
     catch(AuthenticationException e) { 
     e.printStackTrace(); 
     } 
     catch(MalformedURLException e) { 
     e.printStackTrace(); 
     } 
     catch(ServiceException e) { 
     e.printStackTrace(); 
     } 
     catch(IOException e) { 
     e.printStackTrace(); 
     } 
    } 
    } 

quel est le problème dans ce codage?

Répondre

2

La liste des utilisateurs est renvoyée dans un flux atomique. C'est un flux paginé, avec un maximum de 100 entrées par page. S'il y a plus d'entrées dans le flux, il y aura un élément atom: link avec un attribut rel = "next", pointant vers la page suivante. Vous devez continuer à suivre ces liens jusqu'à ce qu'il n'y ait plus de pages "suivantes".

Voir: http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html#Results_Pagination

Le code ressemblera à quelque chose comme:

URL metafeedUrl = new URL("https://www.google.com/a/feeds/"+domain+"/user/2.0/"); 
System.out.println("Getting user entries...\n"); 
List<UserEntry> entries = new ArrayList<UserEntry>(); 

while (metafeedUrl != null) { 
    // Fetch page 
    System.out.println("Fetching page...\n"); 
    UserFeed resultFeed = myService.getFeed(metafeedUrl, UserFeed.class); 
    entries.addAll(resultFeed.getEntries()); 

    // Check for next page 
    Link nextLink = resultFeed.getNextLink(); 
    if (nextLink == null) { 
     metafeedUrl = null; 
    } else { 
     metafeedUrl = nextLink.getHref(); 
    } 
} 

// Handle results 
for(int i=0; i<entries.size(); i++) { 
    UserEntry entry = entries.get(i); 
    System.out.println("\t" + entry.getTitle().getPlainText()); 
} 
System.out.println("\nTotal Entries: "+entries.size()); 
Questions connexes