All Downloads are FREE. Search and download functionalities are using the official Maven repository.

microsoft.exchange.webservices.data.core.service.folder.Folder Maven / Gradle / Ivy

There is a newer version: 2.15
Show newest version
/*
 * The MIT License
 * Copyright (c) 2012 Microsoft Corporation
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

package microsoft.exchange.webservices.data.core.service.folder;

import microsoft.exchange.webservices.data.attribute.ServiceObjectDefinition;
import microsoft.exchange.webservices.data.core.EwsUtilities;
import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.PropertySet;
import microsoft.exchange.webservices.data.core.XmlElementNames;
import microsoft.exchange.webservices.data.core.response.FindItemResponse;
import microsoft.exchange.webservices.data.core.response.ServiceResponseCollection;
import microsoft.exchange.webservices.data.core.service.ServiceObject;
import microsoft.exchange.webservices.data.core.service.item.Item;
import microsoft.exchange.webservices.data.core.service.schema.FolderSchema;
import microsoft.exchange.webservices.data.core.service.schema.ServiceObjectSchema;
import microsoft.exchange.webservices.data.core.enumeration.service.calendar.AffectedTaskOccurrence;
import microsoft.exchange.webservices.data.core.enumeration.service.DeleteMode;
import microsoft.exchange.webservices.data.core.enumeration.service.EffectiveRights;
import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
import microsoft.exchange.webservices.data.core.enumeration.service.SendCancellationsMode;
import microsoft.exchange.webservices.data.core.enumeration.service.error.ServiceErrorHandling;
import microsoft.exchange.webservices.data.core.enumeration.property.WellKnownFolderName;
import microsoft.exchange.webservices.data.core.exception.misc.InvalidOperationException;
import microsoft.exchange.webservices.data.core.exception.service.local.ServiceLocalException;
import microsoft.exchange.webservices.data.property.complex.ExtendedPropertyCollection;
import microsoft.exchange.webservices.data.property.complex.FolderId;
import microsoft.exchange.webservices.data.property.complex.FolderPermissionCollection;
import microsoft.exchange.webservices.data.property.complex.ManagedFolderInformation;
import microsoft.exchange.webservices.data.property.definition.ExtendedPropertyDefinition;
import microsoft.exchange.webservices.data.property.definition.PropertyDefinition;
import microsoft.exchange.webservices.data.search.FindFoldersResults;
import microsoft.exchange.webservices.data.search.FindItemsResults;
import microsoft.exchange.webservices.data.search.FolderView;
import microsoft.exchange.webservices.data.search.GroupedFindItemsResults;
import microsoft.exchange.webservices.data.search.Grouping;
import microsoft.exchange.webservices.data.search.ItemView;
import microsoft.exchange.webservices.data.search.ViewBase;
import microsoft.exchange.webservices.data.search.filter.SearchFilter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.util.ArrayList;
import java.util.EnumSet;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * Represents a generic folder.
 */
@ServiceObjectDefinition(xmlElementName = XmlElementNames.Folder)
public class Folder extends ServiceObject {

  private static final Log LOG = LogFactory.getLog(Folder.class);
  
  private static final Map WELL_KNOWN_FOLDER_MAP = Stream.of(WellKnownFolderName.values())
			.collect(Collectors.toMap(k -> k.toString().toLowerCase(), Function.identity()));

  /**
   * Initializes an unsaved local instance of {@link Folder}.
   *
   * @param service EWS service to which this object belongs
   * @throws Exception the exception
   */
  public Folder(ExchangeService service) throws Exception {
    super(service);
  }

  /**
   * Binds to an existing folder, whatever its actual type is, and loads the
   * specified set of property. Calling this method results in a call to
   * EWS.
   *
   * @param service     The service to use to bind to the folder.
   * @param id          The Id of the folder to bind to.
   * @param propertySet The set of property to load.
   * @return A Folder instance representing the folder corresponding to the
   * specified Id.
   * @throws Exception the exception
   */
  public static Folder bind(ExchangeService service, FolderId id,
      PropertySet propertySet) throws Exception {
    return service.bindToFolder(Folder.class, id, propertySet);
  }

  /**
   * Binds to an existing folder, whatever its actual type is, and loads the
   * specified set of property. Calling this method results in a call to
   * EWS.
   *
   * @param service , The service to use to bind to the folder.
   * @param id      , The Id of the folder to bind to.
   * @return A Folder instance representing the folder corresponding to the
   * specified Id.
   * @throws Exception the exception
   */
  public static Folder bind(ExchangeService service, FolderId id)
      throws Exception {
    return Folder.bind(service, id, PropertySet.getFirstClassProperties());
  }

  /**
   * Binds to an existing folder, whatever its actual type is, and loads the
   * specified set of property. Calling this method results in a call to
   * EWS.
   *
   * @param service     The service to use to bind to the folder.
   * @param name        The name of the folder to bind to.
   * @param propertySet The set of property to load.
   * @return A Folder instance representing the folder corresponding to the
   * specified Id.
   * @throws Exception the exception
   */
  public static Folder bind(ExchangeService service,
      WellKnownFolderName name, PropertySet propertySet)
      throws Exception {
    return Folder.bind(service, new FolderId(name), propertySet);
  }

  /**
   * Binds to an existing folder, whatever its actual type is, and loads the
   * specified set of property. Calling this method results in a call to
   * EWS.
   *
   * @param service The service to use to bind to the folder.
   * @param name    The name of the folder to bind to.
   * @return the folder
   * @throws Exception the exception
   */
  public static Folder bind(ExchangeService service, WellKnownFolderName name)
      throws Exception {
    return Folder.bind(service, new FolderId(name), PropertySet
        .getFirstClassProperties());
  }

  /**
   * Validates this instance.
   *
   * @throws Exception the exception
   */
  @Override public void validate() throws Exception {
    super.validate();

    // Validate folder permissions
    try {
      if (this.getPropertyBag().contains(FolderSchema.Permissions)) {
        this.getPermissions().validate();
      }
    } catch (ServiceLocalException e) {
      LOG.error(e);
    }
  }

  /**
   * Internal method to return the schema associated with this type of object.
   *
   * @return The schema associated with this type of object.
   */
  @Override public ServiceObjectSchema getSchema() {
    return FolderSchema.Instance;
  }

  /**
   * Gets the minimum required server version.
   *
   * @return Earliest Exchange version in which this service object type is
   * supported.
   */
  @Override public ExchangeVersion getMinimumRequiredServerVersion() {
    return ExchangeVersion.Exchange2007_SP1;
  }

  /**
   * Gets the name of the change XML element.
   *
   * @return Xml element name
   */
  @Override public String getChangeXmlElementName() {
    return XmlElementNames.FolderChange;
  }

  /**
   * Gets the name of the set field XML element.
   *
   * @return Xml element name
   */
  @Override public String getSetFieldXmlElementName() {
    return XmlElementNames.SetFolderField;
  }

  /**
   * Gets the name of the delete field XML element.
   *
   * @return Xml element name
   */
  @Override public String getDeleteFieldXmlElementName() {
    return XmlElementNames.DeleteFolderField;
  }

  /**
   * Loads the specified set of property on the object.
   *
   * @param propertySet The property to load.
   * @throws Exception the exception
   */
  @Override
  protected void internalLoad(PropertySet propertySet) throws Exception {
    this.throwIfThisIsNew();

    this.getService().loadPropertiesForFolder(this, propertySet);
  }

  /**
   * Deletes the object.
   *
   * @param deleteMode              the delete mode
   * @param sendCancellationsMode   Indicates whether meeting cancellation messages should be
   *                                sent.
   * @param affectedTaskOccurrences Indicate which occurrence of a recurring task should be
   *                                deleted.
   * @throws Exception the exception
   */
  @Override
  protected void internalDelete(DeleteMode deleteMode,
      SendCancellationsMode sendCancellationsMode,
      AffectedTaskOccurrence affectedTaskOccurrences) throws Exception {
    try {
      this.throwIfThisIsNew();
    } catch (InvalidOperationException e) {
      LOG.error(e);
    }

    this.getService().deleteFolder(this.getId(), deleteMode);
  }

  /**
   * Deletes the folder. Calling this method results in a call to EWS.
   *
   * @param deleteMode the delete mode
   * @throws Exception the exception
   */
  public void delete(DeleteMode deleteMode) throws Exception {
    this.internalDelete(deleteMode, null, null);
  }

  /**
   * Empties the folder. Calling this method results in a call to EWS.
   *
   * @param deletemode       the delete mode
   * @param deleteSubFolders Indicates whether sub-folder should also be deleted.
   * @throws Exception
   */
  public void empty(DeleteMode deletemode, boolean deleteSubFolders)
      throws Exception {
    this.throwIfThisIsNew();
    this.getService().emptyFolder(this.getId(),
        deletemode, deleteSubFolders);
  }

  /**
   * Saves this folder in a specific folder. Calling this method results in a
   * call to EWS.
   *
   * @param parentFolderId The Id of the folder in which to save this folder.
   * @throws Exception the exception
   */
  public void save(FolderId parentFolderId) throws Exception {
    this.throwIfThisIsNotNew();

    EwsUtilities.validateParam(parentFolderId, "parentFolderId");

    if (this.isDirty()) {
      this.getService().createFolder(this, parentFolderId);
    }
  }

  /**
   * Saves this folder in a specific folder. Calling this method results in a
   * call to EWS.
   *
   * @param parentFolderName The name of the folder in which to save this folder.
   * @throws Exception the exception
   */
  public void save(WellKnownFolderName parentFolderName) throws Exception {
    this.save(new FolderId(parentFolderName));
  }

  /**
   * Applies the local changes that have been made to this folder. Calling
   * this method results in a call to EWS.
   *
   * @throws Exception the exception
   */
  public void update() throws Exception {
    if (this.isDirty()) {
      if (this.getPropertyBag().getIsUpdateCallNecessary()) {
        this.getService().updateFolder(this);
      }
    }
  }

  /**
   * Copies this folder into a specific folder. Calling this method results in
   * a call to EWS.
   *
   * @param destinationFolderId The Id of the folder in which to copy this folder.
   * @return A Folder representing the copy of this folder.
   * @throws Exception the exception
   */
  public Folder copy(FolderId destinationFolderId) throws Exception {
    this.throwIfThisIsNew();

    EwsUtilities.validateParam(destinationFolderId, "destinationFolderId");

    return this.getService().copyFolder(this.getId(), destinationFolderId);
  }

  /**
   * Copies this folder into the specified folder. Calling this method results
   * in a call to EWS.
   *
   * @param destinationFolderName The name of the folder in which to copy this folder.
   * @return A Folder representing the copy of this folder.
   * @throws Exception the exception
   */
  public Folder copy(WellKnownFolderName destinationFolderName)
      throws Exception {
    return this.copy(new FolderId(destinationFolderName));
  }

  /**
   * Moves this folder to a specific folder. Calling this method results in a
   * call to EWS.
   *
   * @param destinationFolderId The Id of the folder in which to move this folder.
   * @return A new folder representing this folder in its new location. After
   * Move completes, this folder does not exist anymore.
   * @throws Exception the exception
   */
  public Folder move(FolderId destinationFolderId) throws Exception {
    this.throwIfThisIsNew();

    EwsUtilities.validateParam(destinationFolderId, "destinationFolderId");

    return this.getService().moveFolder(this.getId(), destinationFolderId);
  }

  /**
   * Moves this folder to a specific folder. Calling this method results in a
   * call to EWS.
   *
   * @param destinationFolderName The name of the folder in which to move this folder.
   * @return A new folder representing this folder in its new location. After
   * Move completes, this folder does not exist anymore.
   * @throws Exception the exception
   */
  public Folder move(WellKnownFolderName destinationFolderName)
      throws Exception {
    return this.move(new FolderId(destinationFolderName));
  }

  /**
   * Find item.
   *
   * @param      The type of the item.
   * @param queryString query string to be used for indexed search
   * @param view        The view controlling the number of item returned.
   * @param groupBy     The group by.
   * @return FindItems response collection.
   * @throws Exception the exception
   */
   ServiceResponseCollection>
  internalFindItems(String queryString,
      ViewBase view, Grouping groupBy)
      throws Exception {
    ArrayList folderIdArry = new ArrayList();
    folderIdArry.add(this.getId());

    this.throwIfThisIsNew();
    return this.getService().findItems(folderIdArry,
        null, /* searchFilter */
        queryString, view, groupBy, ServiceErrorHandling.ThrowOnError);

  }

  /**
   * Find item.
   *
   * @param       The type of the item.
   * @param searchFilter The search filter. Available search filter classes include
   *                     SearchFilter.IsEqualTo, SearchFilter.ContainsSubstring and
   *                     SearchFilter.SearchFilterCollection
   * @param view         The view controlling the number of item returned.
   * @param groupBy      The group by.
   * @return FindItems response collection.
   * @throws Exception the exception
   */
   ServiceResponseCollection>
  internalFindItems(SearchFilter searchFilter,
      ViewBase view, Grouping groupBy)
      throws Exception {
    ArrayList folderIdArry = new ArrayList();
    folderIdArry.add(this.getId());
    this.throwIfThisIsNew();

    return this.getService().findItems(folderIdArry, searchFilter,
        null, /* queryString */
        view, groupBy, ServiceErrorHandling.ThrowOnError);
  }

  /**
   * Find item.
   *
   * @param searchFilter The search filter. Available search filter classes include
   *                     SearchFilter.IsEqualTo, SearchFilter.ContainsSubstring and
   *                     SearchFilter.SearchFilterCollection
   * @param view         The view controlling the number of item returned.
   * @return FindItems results collection.
   * @throws Exception the exception
   */
  public FindItemsResults findItems(SearchFilter searchFilter,
      ItemView view) throws Exception {
    EwsUtilities.validateParamAllowNull(searchFilter, "searchFilter");

    ServiceResponseCollection> responses = this
        .internalFindItems(searchFilter, view, null /* groupBy */);

    return responses.getResponseAtIndex(0).getResults();
  }

  /**
   * Find item.
   *
   * @param queryString query string to be used for indexed search
   * @param view        The view controlling the number of item returned.
   * @return FindItems results collection.
   * @throws Exception the exception
   */
  public FindItemsResults findItems(String queryString, ItemView view)
      throws Exception {
    EwsUtilities.validateParamAllowNull(queryString, "queryString");

    ServiceResponseCollection> responses = this
        .internalFindItems(queryString, view, null /* groupBy */);

    return responses.getResponseAtIndex(0).getResults();
  }

  /**
   * Find item.
   *
   * @param view The view controlling the number of item returned.
   * @return FindItems results collection.
   * @throws Exception the exception
   */
  public FindItemsResults findItems(ItemView view) throws Exception {
    ServiceResponseCollection> responses = this
        .internalFindItems((SearchFilter) null, view,
            null /* groupBy */);

    return responses.getResponseAtIndex(0).getResults();
  }

  /**
   * Find item.
   *
   * @param searchFilter The search filter. Available search filter classes include
   *                     SearchFilter.IsEqualTo, SearchFilter.ContainsSubstring and
   *                     SearchFilter.SearchFilterCollection
   * @param view         The view controlling the number of item returned.
   * @param groupBy      The group by.
   * @return A collection of grouped item representing the contents of this
   * folder.
   * @throws Exception the exception
   */
  public GroupedFindItemsResults findItems(SearchFilter searchFilter,
      ItemView view, Grouping groupBy) throws Exception {
    EwsUtilities.validateParam(groupBy, "groupBy");
    EwsUtilities.validateParamAllowNull(searchFilter, "searchFilter");

    ServiceResponseCollection> responses = this
        .internalFindItems(searchFilter, view, groupBy);

    return responses.getResponseAtIndex(0).getGroupedFindResults();
  }

  /**
   * Find item.
   *
   * @param queryString query string to be used for indexed search
   * @param view        The view controlling the number of item returned.
   * @param groupBy     The group by.
   * @return A collection of grouped item representing the contents of this
   * folder.
   * @throws Exception the exception
   */
  public GroupedFindItemsResults findItems(String queryString,
      ItemView view, Grouping groupBy) throws Exception {
    EwsUtilities.validateParam(groupBy, "groupBy");

    ServiceResponseCollection> responses = this
        .internalFindItems(queryString, view, groupBy);

    return responses.getResponseAtIndex(0).getGroupedFindResults();
  }

  /**
   * Obtains a list of folder by searching the sub-folder of this folder.
   * Calling this method results in a call to EWS.
   *
   * @param view The view controlling the number of folder returned.
   * @return An object representing the results of the search operation.
   * @throws Exception the exception
   */
  public FindFoldersResults findFolders(FolderView view) throws Exception {
    this.throwIfThisIsNew();

    return this.getService().findFolders(this.getId(), view);
  }

  /**
   * Obtains a list of folder by searching the sub-folder of this folder.
   * Calling this method results in a call to EWS.
   *
   * @param searchFilter The search filter. Available search filter classes include
   *                     SearchFilter.IsEqualTo, SearchFilter.ContainsSubstring and
   *                     SearchFilter.SearchFilterCollection
   * @param view         The view controlling the number of folder returned.
   * @return An object representing the results of the search operation.
   * @throws Exception the exception
   */
  public FindFoldersResults findFolders(SearchFilter searchFilter,
      FolderView view) throws Exception {
    this.throwIfThisIsNew();

    return this.getService().findFolders(this.getId(), searchFilter, view);
  }

  /**
   * Obtains a grouped list of item by searching the contents of this folder.
   * Calling this method results in a call to EWS.
   *
   * @param view    The view controlling the number of folder returned.
   * @param groupBy The grouping criteria.
   * @return A collection of grouped item representing the contents of this
   * folder.
   * @throws Exception the exception
   */
  public GroupedFindItemsResults findItems(ItemView view,
      Grouping groupBy) throws Exception {
    EwsUtilities.validateParam(groupBy, "groupBy");

    return this.findItems((SearchFilter) null, view, groupBy);
  }

  /**
   * Get the property definition for the Id property.
   *
   * @return the id property definition
   */
  @Override public PropertyDefinition getIdPropertyDefinition() {
    return FolderSchema.Id;
  }

  /**
   * Sets the extended property.
   *
   * @param extendedPropertyDefinition The extended property definition.
   * @param value                      The value.
   * @throws Exception the exception
   */
  public void setExtendedProperty(
      ExtendedPropertyDefinition extendedPropertyDefinition, Object value)
      throws Exception {
    this.getExtendedProperties().setExtendedProperty(
        extendedPropertyDefinition, value);
  }

  /**
   * Removes an extended property.
   *
   * @param extendedPropertyDefinition The extended property definition.
   * @return True if property was removed.
   * @throws Exception the exception
   */
  public boolean removeExtendedProperty(
      ExtendedPropertyDefinition extendedPropertyDefinition)
      throws Exception {
    return this.getExtendedProperties().removeExtendedProperty(
        extendedPropertyDefinition);
  }

  /**
   * True if property was removed.
   *
   * @return Extended property collection.
   * @throws Exception the exception
   */
  @Override
  protected ExtendedPropertyCollection getExtendedProperties()
      throws Exception {
    return this.getExtendedPropertiesForService();
  }

  /**
   * Gets the Id of the folder.
   *
   * @return the id
   */
  public FolderId getId() {
    try {
      return getPropertyBag().getObjectFromPropertyDefinition(
          getIdPropertyDefinition());
    } catch (ServiceLocalException e) {
      LOG.error(e);
      return null;
    }
  }

  /**
   * Gets the Id of this folder's parent folder.
   *
   * @return the parent folder id
   * @throws ServiceLocalException the service local exception
   */
  public FolderId getParentFolderId() throws ServiceLocalException {
    return getPropertyBag().getObjectFromPropertyDefinition(
        FolderSchema.ParentFolderId);
  }

  /**
   * Gets the number of child folder this folder has.
   *
   * @return the child folder count
   * @throws NumberFormatException the number format exception
   * @throws ServiceLocalException the service local exception
   */
  public int getChildFolderCount() throws NumberFormatException,
      ServiceLocalException {
    return (Integer.parseInt(this.getPropertyBag()
        .getObjectFromPropertyDefinition(FolderSchema.ChildFolderCount)
        .toString()));
  }

  /**
   * Gets the display name of the folder.
   *
   * @return the display name
   * @throws ServiceLocalException the service local exception
   */
  public String getDisplayName() throws ServiceLocalException {
    return getPropertyBag().getObjectFromPropertyDefinition(
        FolderSchema.DisplayName);
  }

  /**
   * Gets the well known folder name.
   *
   * @return the WellKnownFolderName
   * @throws ServiceLocalException the service local exception
   */
  public WellKnownFolderName getWellKnownFolderName() throws ServiceLocalException {
	  return WELL_KNOWN_FOLDER_MAP.get(getPropertyBag().getObjectFromPropertyDefinition(FolderSchema.WellKnownFolderName));
  }
  
  /**
   * Sets the display name of the folder.
   *
   * @param value Name of the folder
   * @throws Exception the exception
   */
  public void setDisplayName(String value) throws Exception {
    this.getPropertyBag().setObjectFromPropertyDefinition(
        FolderSchema.DisplayName, value);
  }

  /**
   * Gets the custom class name of this folder.
   *
   * @return the folder class
   * @throws ServiceLocalException the service local exception
   */
  public String getFolderClass() throws ServiceLocalException {
    return getPropertyBag().getObjectFromPropertyDefinition(
        FolderSchema.FolderClass);
  }

  /**
   * Sets the custom class name of this folder.
   *
   * @param value name of the folder
   * @throws Exception the exception
   */
  public void setFolderClass(String value) throws Exception {
    this.getPropertyBag().setObjectFromPropertyDefinition(
        FolderSchema.FolderClass, value);
  }

  /**
   * Gets the total number of item contained in the folder.
   *
   * @return the total count
   * @throws NumberFormatException the number format exception
   * @throws ServiceLocalException the service local exception
   */
  public int getTotalCount() throws NumberFormatException,
      ServiceLocalException {
    return (Integer.parseInt(this.getPropertyBag()
        .getObjectFromPropertyDefinition(FolderSchema.TotalCount)
        .toString()));
  }

  /**
   * Gets a list of extended property associated with the folder.
   *
   * @return the extended property for service
   * @throws ServiceLocalException the service local exception
   */
  // changed the name of method as another method with same name exists
  public ExtendedPropertyCollection getExtendedPropertiesForService()
      throws ServiceLocalException {
    return getPropertyBag().getObjectFromPropertyDefinition(
        ServiceObjectSchema.extendedProperties);
  }

  /**
   * Gets the Email Lifecycle Management (ELC) information associated with the
   * folder.
   *
   * @return the managed folder information
   * @throws ServiceLocalException the service local exception
   */
  public ManagedFolderInformation getManagedFolderInformation()
      throws ServiceLocalException {
    return getPropertyBag().getObjectFromPropertyDefinition(
        FolderSchema.ManagedFolderInformation);
  }

  /**
   * Gets a value indicating the effective rights the current authenticated
   * user has on the folder.
   *
   * @return the effective rights
   * @throws ServiceLocalException the service local exception
   */
  public EnumSet getEffectiveRights() throws ServiceLocalException {
    return getPropertyBag().getObjectFromPropertyDefinition(
        FolderSchema.EffectiveRights);
  }

  /**
   * Gets a list of permissions for the folder.
   *
   * @return the permissions
   * @throws ServiceLocalException the service local exception
   */
  public FolderPermissionCollection getPermissions()
      throws ServiceLocalException {
    return getPropertyBag().getObjectFromPropertyDefinition(
        FolderSchema.Permissions);
  }

  /**
   * Gets the number of unread item in the folder.
   *
   * @return the unread count
   * @throws NumberFormatException the number format exception
   * @throws ServiceLocalException the service local exception
   */
  public int getUnreadCount() throws NumberFormatException,
      ServiceLocalException {
    return (Integer.parseInt(this.getPropertyBag()
        .getObjectFromPropertyDefinition(FolderSchema.UnreadCount)
        .toString()));
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy