001/*
002 * The MIT License
003 * Copyright (c) 2012 Microsoft Corporation
004 *
005 * Permission is hereby granted, free of charge, to any person obtaining a copy
006 * of this software and associated documentation files (the "Software"), to deal
007 * in the Software without restriction, including without limitation the rights
008 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
009 * copies of the Software, and to permit persons to whom the Software is
010 * furnished to do so, subject to the following conditions:
011 *
012 * The above copyright notice and this permission notice shall be included in
013 * all copies or substantial portions of the Software.
014 *
015 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
016 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
017 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
018 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
019 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
020 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
021 * THE SOFTWARE.
022 */
023
024package microsoft.exchange.webservices.data.property.complex;
025
026import microsoft.exchange.webservices.data.core.EwsServiceXmlWriter;
027import microsoft.exchange.webservices.data.core.EwsUtilities;
028import microsoft.exchange.webservices.data.core.XmlElementNames;
029import microsoft.exchange.webservices.data.core.enumeration.misc.XmlNamespace;
030import microsoft.exchange.webservices.data.core.exception.service.local.ServiceXmlSerializationException;
031
032import javax.xml.stream.XMLStreamException;
033
034/**
035 * Represents an operation to delete an existing rule.
036 */
037public final class DeleteRuleOperation extends RuleOperation {
038  /**
039   * Id of the inbox rule to delete.
040   */
041  private String ruleId;
042
043  /**
044   * Initializes a new instance of the
045   * <see cref="DeleteRuleOperation"/> class.
046   */
047  public DeleteRuleOperation() {
048    super();
049  }
050
051  /**
052   * Initializes a new instance of the
053   * <see cref="DeleteRuleOperation"/> class.
054   *
055   * @param ruleId The Id of the inbox rule to delete.
056   */
057  public DeleteRuleOperation(String ruleId) {
058    super();
059    this.ruleId = ruleId;
060  }
061
062  /**
063   * Gets or sets the Id of the rule to delete.
064   */
065  public String getRuleId() {
066    return this.ruleId;
067  }
068
069  public void setRuleId(String value) {
070    if (this.canSetFieldValue(this.ruleId, value)) {
071      this.ruleId = value;
072      this.changed();
073    }
074  }
075
076  /**
077   * Writes elements to XML.
078   *
079   * @param writer the writer
080   * @throws XMLStreamException the XML stream exception
081   */
082  @Override
083  public void writeElementsToXml(EwsServiceXmlWriter writer)
084      throws ServiceXmlSerializationException, XMLStreamException {
085    writer.writeElementValue(XmlNamespace.Types,
086        XmlElementNames.RuleId, this.getRuleId());
087  }
088
089  /**
090   * Validates this instance.
091   */
092  @Override
093  protected void internalValidate() throws Exception {
094    EwsUtilities.validateParam(this.ruleId, "RuleId");
095  }
096
097  /**
098   * Gets the Xml element name of the DeleteRuleOperation object.
099   */
100  @Override public String getXmlElementName() {
101    return XmlElementNames.DeleteRuleOperation;
102
103  }
104}