You can search and retrieve workspaces according to the specified search criteria, as well as define various parameters for the presentation of search results, such as sort order or number of results to display on one page.
The following example illustrates searching for workspaces using the SearchControl object:
private void searchForWorkspace(IPortalComponentRequest request, String inputQuery) { // Retrieve the workspace directory IWorkspacesRuntime workspacesRuntime = RuntimeFactory.getWorkspacesRuntime(); IWorkspaceDirectory workspaceDirectory = (IWorkspaceDirectory) workspacesRuntime.getService(IWorkspaceDirectory.class); SearchControl searchControl = new SearchControl(); // Define the workspace permission policies to include in search PermissionPolicy[] permissionPolicies = new PermissionPolicy[2]; permissionPolicies[0] = PermissionPolicy.PUBLIC; permissionPolicies[1] = PermissionPolicy.RESTRICTED; searchControl.setPermissionPolicies(permissionPolicies); // Define the workspace categories to include in search WorkspaceCategory[] categories = new WorkspaceCategory[1]; WorkspaceCategory category = new WorkspaceCategory("categoryKey"); category.setValueIDs(new String["valueId1", "valueId2"]); categories[1] = category; // Define the sort order of search results searchControl.setSortBy(SortBy.NAME_DESCENDING); // Define the maximum number of workspaces to return as search results searchControl.setMaxResults(5000); //Set a SearchFilter object that defines additional search parameters SearchFilter searchFilter = new SearchFilter(); searchFilter.setLocale(request.getLocale()); searchFilter.setOwner("Denise Smith"); searchControl.setSearchFilter(searchFilter); // Search for workspaces according to the specified parameters ISearchResults searchResults = workspaceDirectory.search(searchControl); // Return an array of workspaces that match the search criteria WorkspaceInfo[] sharedWorskpaces = searchResults.getWorkspacesInfo(); }