Итерация по папке, не касаясь подпапок - PullRequest
0 голосов
/ 18 марта 2019

Здравствуйте, я хочу перебрать папку Входящие родительской папки. Но и сообщения, которые находятся в моей подпапке, вообще не должны быть затронуты, чтобы сэкономить время и ресурсы.

public static void listFirstTenItems() throws Exception {
    ItemView view = new ItemView(10);
    Folder folder = Folder.bind(service,  WellKnownFolderName.Inbox);
    Folder subfolder = Folder.bind(service,  new FolderId(uniqueId));
    FindItemsResults<Item> findInbox = service.findItems(folder.getId(), view);
    FindItemsResults<Item> findSub = service.findItems(subfolder.getId(), view);

        service.loadPropertiesForItems(findInbox, PropertySet.FirstClassProperties);
        service.loadPropertiesForItems(findSub, PropertySet.FirstClassProperties);
        System.out.println("Total number of items found: " + findInbox.getTotalCount());
        for (Item item : findInbox.getItems()) {
            if (subfolder.getId() != item.getParentFolderId()) {
                System.out.println("sub==========" + item.getSubject());
            }
        }

Но в этом случае я касаюсь их.

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Это работает для меня:

    public static void listItems() throws Exception {

    ItemView view = new ItemView(100);
    FolderView view1 = new FolderView(100);
    Folder folder = Folder.bind(service, WellKnownFolderName.MsgFolderRoot);
    SearchFilter filterFolder = new SearchFilter.IsEqualTo(FolderSchema.DisplayName,"Posteingang");
    FindItemsResults<Item> findInbox = service.findItems(new FolderId(uniqueId),view);
    FindFoldersResults findFolderResults = folder.findFolders(filterFolder, view1);
    service.loadPropertiesForFolder(folder, PropertySet.FirstClassProperties);
    service.loadPropertiesForItems(findInbox, PropertySet.FirstClassProperties);

    for (Folder f : findFolderResults.getFolders()) {
        System.out.println("Displayname=====" + f.getDisplayName());
        for (Item item : findInbox.getItems()) {
            System.out.println("sub==========" + item.getSubject());
            System.out.println(item.getClass());
            counter++;          
        }
    }
    System.out.println(counter);
}

}

Сервер выполняет работу, а не мое приложение.

0 голосов
/ 19 марта 2019

Таким образом, все, что вам нужно сделать, это удалить код, который перечисляет элементы в подпапке, EWS позволит вам перечислять элементы только в одной папке за раз, поэтому удаляйте этот код все вместе, так как это не имеет смысла для варианта использования, вашего спрашивая, например,

ItemView view = new ItemView(10);
Folder folder = Folder.bind(service,  WellKnownFolderName.Inbox);
Folder subfolder = Folder.bind(service,  new FolderId(uniqueId));
FindItemsResults<Item> findInbox = service.findItems(folder.getId(), view);

    service.loadPropertiesForItems(findInbox, PropertySet.FirstClassProperties);
    System.out.println("Total number of items found: " + findInbox.getTotalCount());
    for (Item item : findInbox.getItems()) {

    }

Также в зависимости от того, что вы делаете и какие свойства вам нужны для доступа к следующей строке, может или не может быть необходимо

 service.loadPropertiesForItems(findInbox, PropertySet.FirstClassProperties);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...