Independentsoft
- any library, any programming language
Home
Purchase
Support
Company
Contact
JWebDAV for Exchange
>
Tutorial
> Display public folder tree
The following example shows you how to use recursive search to display public folders structure.
import java.util.ArrayList; import java.util.List; import com.independentsoft.webdav.exchange.Condition; import com.independentsoft.webdav.exchange.FolderPropertyName; import com.independentsoft.webdav.exchange.From; import com.independentsoft.webdav.exchange.MessagePropertyName; import com.independentsoft.webdav.exchange.MultiStatus; import com.independentsoft.webdav.exchange.Operator; import com.independentsoft.webdav.exchange.Property; import com.independentsoft.webdav.exchange.PropertyName; import com.independentsoft.webdav.exchange.SearchResult; import com.independentsoft.webdav.exchange.SearchResultRecord; import com.independentsoft.webdav.exchange.Select; import com.independentsoft.webdav.exchange.SqlQuery; import com.independentsoft.webdav.exchange.WebdavClient; import com.independentsoft.webdav.exchange.WebdavException; import com.independentsoft.webdav.exchange.Where; public class Example { private static WebdavClient client = null; private static List
folders = new ArrayList
(); public static void main(final String[] args) { try { client = new WebdavClient(); client.setUsername("username"); client.setPassword("password"); searchPublicFolder("https://myserver/public"); for (int i = 0; i < folders.size(); i++) { System.out.println(folders.get(i)); } } catch (WebdavException e) { e.printStackTrace(); } } private static void searchPublicFolder(String folderUrl) throws WebdavException { List
propertyNames = new ArrayList
(); propertyNames.add(FolderPropertyName.IS_FOLDER); propertyNames.add(FolderPropertyName.HAS_SUBFOLDERS); Select select = new Select(propertyNames); From from = new From(folderUrl); Where where = new Where(); Condition condition1 = new Condition(MessagePropertyName.IS_FOLDER, Operator.EQUALS, true); where.add(condition1); SqlQuery sqlQuery = new SqlQuery(select, from, where); MultiStatus multiStatus = client.search(folderUrl, sqlQuery); SearchResult searchResult = new SearchResult(multiStatus, propertyNames); SearchResultRecord[] allRecords = searchResult.getRecords(); for (int i = 0; i < allRecords.length; i++) { String url = allRecords[i].getUrl(); folders.add(url); Property[] properties = allRecords[i].getProperties(); Property hasSubFolder = properties[1]; if (hasSubFolder.getValue().equals("1")) { searchPublicFolder(url); } } } }