/* * 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.property.complex; import microsoft.exchange.webservices.data.core.EwsServiceXmlReader; import microsoft.exchange.webservices.data.core.EwsServiceXmlWriter; import microsoft.exchange.webservices.data.core.EwsUtilities; import microsoft.exchange.webservices.data.core.XmlElementNames; import microsoft.exchange.webservices.data.core.enumeration.misc.FlaggedForAction; import microsoft.exchange.webservices.data.core.enumeration.property.Importance; import microsoft.exchange.webservices.data.core.enumeration.property.Sensitivity; import microsoft.exchange.webservices.data.core.enumeration.misc.XmlNamespace; /** * Represents the set of conditions and exception available for a rule. */ public final class RulePredicates extends ComplexProperty { /** * The HasCategories predicate. */ private StringList categories; /** * The ContainsBodyStrings predicate. */ private StringList containsBodyStrings; /** * The ContainsHeaderStrings predicate. */ private StringList containsHeaderStrings; /** * The ContainsRecipientStrings predicate. */ private StringList containsRecipientStrings; /** * The ContainsSenderStrings predicate. */ private StringList containsSenderStrings; /** * The ContainsSubjectOrBodyStrings predicate. */ private StringList containsSubjectOrBodyStrings; /** * The ContainsSubjectStrings predicate. */ private StringList containsSubjectStrings; /** * The FlaggedForAction predicate. */ private FlaggedForAction flaggedForAction; /** * The FromAddresses predicate. */ private EmailAddressCollection fromAddresses; /** * The FromConnectedAccounts predicate. */ private StringList fromConnectedAccounts; /** * The HasAttachments predicate. */ private boolean hasAttachments; /** * The Importance predicate. */ private Importance importance; /** * The IsApprovalRequest predicate. */ private boolean isApprovalRequest; /** * The IsAutomaticForward predicate. */ private boolean isAutomaticForward; /** * The IsAutomaticReply predicate. */ private boolean isAutomaticReply; /** * The IsEncrypted predicate. */ private boolean isEncrypted; /** * The IsMeetingRequest predicate. */ private boolean isMeetingRequest; /** * The IsMeetingResponse predicate. */ private boolean isMeetingResponse; /** * The IsNDR predicate. */ private boolean isNonDeliveryReport; /** * The IsPermissionControlled predicate. */ private boolean isPermissionControlled; /** * The IsSigned predicate. */ private boolean isSigned; /** * The IsVoicemail predicate. */ private boolean isVoicemail; /** * The IsReadReceipt predicate. */ private boolean isReadReceipt; /** * ItemClasses predicate. */ private StringList itemClasses; /** * The MessageClassifications predicate. */ private StringList messageClassifications; /** * The NotSentToMe predicate. */ private boolean notSentToMe; /** * SentCcMe predicate. */ private boolean sentCcMe; /** * The SentOnlyToMe predicate. */ private boolean sentOnlyToMe; /** * The SentToAddresses predicate. */ private EmailAddressCollection sentToAddresses; /** * The SentToMe predicate. */ private boolean sentToMe; /** * The SentToOrCcMe predicate. */ private boolean sentToOrCcMe; /** * The Sensitivity predicate. */ private Sensitivity sensitivity; /** * The Sensitivity predicate. */ private RulePredicateDateRange withinDateRange; /** * The Sensitivity predicate. */ private RulePredicateSizeRange withinSizeRange; /** * Initializes a new instance of the RulePredicates class. */ protected RulePredicates() { super(); this.categories = new StringList(); this.containsBodyStrings = new StringList(); this.containsHeaderStrings = new StringList(); this.containsRecipientStrings = new StringList(); this.containsSenderStrings = new StringList(); this.containsSubjectOrBodyStrings = new StringList(); this.containsSubjectStrings = new StringList(); this.fromAddresses = new EmailAddressCollection(XmlElementNames.Address); this.fromConnectedAccounts = new StringList(); this.itemClasses = new StringList(); this.messageClassifications = new StringList(); this.sentToAddresses = new EmailAddressCollection(XmlElementNames.Address); this.withinDateRange = new RulePredicateDateRange(); this.withinSizeRange = new RulePredicateSizeRange(); } /** * Gets the categories that an incoming message * should be stamped with for the condition or exception to apply. * To disable this predicate, empty the list. */ public StringList getCategories() { return this.categories; } /** * Gets the strings that should appear in the body of * incoming messages for the condition or exception to apply. * To disable this predicate, empty the list. */ public StringList getContainsBodyStrings() { return this.containsBodyStrings; } /** * Gets the strings that should appear in the * headers of incoming messages for the condition or * exception to apply. To disable this predicate, empty the list. */ public StringList getContainsHeaderStrings() { return this.containsHeaderStrings; } /** * Gets the strings that should appear in either the * To or Cc fields of incoming messages for the condition * or exception to apply. To disable this predicate, empty the list. */ public StringList getContainsRecipientStrings() { return this.containsRecipientStrings; } /** * Gets the strings that should appear * in the From field of incoming messages * for the condition or exception to apply. * To disable this predicate, empty the list. */ public StringList getContainsSenderStrings() { return this.containsSenderStrings; } /** * Gets the strings that should appear in either * the body or the subject of incoming messages for the * condition or exception to apply. * To disable this predicate, empty the list. */ public StringList getContainsSubjectOrBodyStrings() { return this.containsSubjectOrBodyStrings; } /** * Gets the strings that should appear in the subject * of incoming messages for the condition or exception * to apply. To disable this predicate, empty the list. */ public StringList getContainsSubjectStrings() { return this.containsSubjectStrings; } /** * Gets or sets the flag for action value that should * appear on incoming messages for the condition or execption to apply. * To disable this predicate, set it to null. */ public FlaggedForAction getFlaggedForAction() { return this.flaggedForAction; } public void setFlaggedForAction(FlaggedForAction value) { if (this.canSetFieldValue(this.flaggedForAction, value)) { this.flaggedForAction = value; this.changed(); } } /** * Gets the e-mail addresses of the senders of incoming * messages for the condition or exception to apply. * To disable this predicate, empty the list. */ public EmailAddressCollection getFromAddresses() { return this.fromAddresses; } /** * Gets or sets a value indicating whether incoming messages must have * attachments for the condition or exception to apply. */ public boolean getHasAttachments() { return this.hasAttachments; } public void setHasAttachments(boolean value) { if (this.canSetFieldValue(this.hasAttachments, value)) { this.hasAttachments = value; this.changed(); } } /** * Gets or sets the importance that should be stamped on incoming messages * for the condition or exception to apply. * To disable this predicate, set it to null. */ public Importance getImportance() { return this.importance; } public void setImportance(Importance value) { if (this.canSetFieldValue(this.importance, value)) { this.importance = value; this.changed(); } } /** * Gets or sets a value indicating whether incoming messages must be * approval request for the condition or exception to apply. */ public boolean getIsApprovalRequest() { return this.isApprovalRequest; } public void setIsApprovalRequest(boolean value) { if (this.canSetFieldValue(this.isApprovalRequest, value)) { this.isApprovalRequest = value; this.changed(); } } /** * Gets or sets a value indicating whether incoming messages must be * automatic forwards for the condition or exception to apply. */ public boolean getIsAutomaticForward() { return this.isAutomaticForward; } public void setIsAutomaticForward(boolean value) { if (this.canSetFieldValue(this.isAutomaticForward, value)) { this.isAutomaticForward = value; this.changed(); } } /** * Gets or sets a value indicating whether incoming messages must be * automatic replies for the condition or exception to apply. */ public boolean getIsAutomaticReply() { return this.isAutomaticReply; } public void setIsAutomaticReply(boolean value) { if (this.canSetFieldValue(this.isAutomaticReply, value)) { this.isAutomaticReply = value; this.changed(); } } /** * Gets or sets a value indicating whether incoming messages must be * S/MIME encrypted for the condition or exception to apply. */ public boolean getIsEncrypted() { return this.isEncrypted; } public void setIsEncrypted(boolean value) { if (this.canSetFieldValue(this.isEncrypted, value)) { this.isEncrypted = value; this.changed(); } } /** * Gets or sets a value indicating whether incoming messages must be * meeting request for the condition or exception to apply. */ public boolean getIsMeetingRequest() { return this.isMeetingRequest; } public void setIsMeetingRequest(boolean value) { if (this.canSetFieldValue(this.isEncrypted, value)) { this.isEncrypted = value; this.changed(); } } /** * Gets or sets a value indicating whether incoming messages must be * meeting response for the condition or exception to apply. */ public boolean getIsMeetingResponse() { return this.isMeetingResponse; } public void setIsMeetingResponse(boolean value) { if (this.canSetFieldValue(this.isMeetingResponse, value)) { this.isMeetingResponse = value; this.changed(); } } /** * Gets or sets a value indicating whether incoming messages must be * non-delivery reports (NDR) for the condition or exception to apply. */ public boolean getIsNonDeliveryReport() { return this.isNonDeliveryReport; } public void setIsNonDeliveryReport(boolean value) { if (this.canSetFieldValue(this.isNonDeliveryReport, value)) { this.isNonDeliveryReport = value; this.changed(); } } /** * Gets or sets a value indicating whether incoming messages must be * permission controlled (RMS protected) for the condition or exception * to apply. */ public boolean getIsPermissionControlled() { return this.isPermissionControlled; } public void setIsPermissionControlled(boolean value) { if (this.canSetFieldValue(this.isPermissionControlled, value)) { this.isPermissionControlled = value; this.changed(); } } /** * Gets or sets a value indicating whether incoming messages must be * S/MIME signed for the condition or exception to apply. */ public boolean getIsSigned() { return this.isSigned; } public void setIsSigned(boolean value) { if (this.canSetFieldValue(this.isSigned, value)) { this.isSigned = value; this.changed(); } } /** * Gets or sets a value indicating whether incoming messages must be * voice mails for the condition or exception to apply. */ public boolean getIsVoicemail() { return this.isVoicemail; } public void setIsVoicemail(boolean value) { if (this.canSetFieldValue(this.isVoicemail, value)) { this.isVoicemail = value; this.changed(); } } /** * Gets or sets a value indicating whether incoming messages must be * read receipts for the condition or exception to apply. */ public boolean getIsReadReceipt() { return this.isReadReceipt; } public void setIsReadReceipt(boolean value) { if (this.canSetFieldValue(this.isReadReceipt, value)) { this.isReadReceipt = value; this.changed(); } } /** * Gets the e-mail account names from which incoming messages must have * been aggregated for the condition or exception to apply. To disable * this predicate, empty the list. */ public StringList getFromConnectedAccounts() { return this.fromConnectedAccounts; } /** * Gets the item classes that must be stamped on incoming messages for * the condition or exception to apply. To disable this predicate, * empty the list. */ public StringList getItemClasses() { return this.itemClasses; } /** * Gets the message classifications that * must be stamped on incoming messages * for the condition or exception to apply. To disable this predicate, * empty the list. */ public StringList getMessageClassifications() { return this.messageClassifications; } /** * Gets or sets a value indicating whether the owner of the mailbox must * NOT be a To recipient of the incoming messages for the condition or * exception to apply. */ public boolean getNotSentToMe() { return this.notSentToMe; } public void setNotSentToMe(boolean value) { if (this.canSetFieldValue(this.notSentToMe, value)) { this.notSentToMe = value; this.changed(); } } /** * Gets or sets a value indicating whether the owner of the mailbox must be * a Cc recipient of incoming messages * for the condition or exception to apply. */ public boolean getSentCcMe() { return this.sentCcMe; } public void setSentCcMe(boolean value) { if (this.canSetFieldValue(this.sentCcMe, value)) { this.sentCcMe = value; this.changed(); } } /** * Gets or sets a value indicating whether the owner of the mailbox must be * the only To recipient of incoming * messages for the condition or exception * to apply. */ public boolean getSentOnlyToMe() { return this.sentOnlyToMe; } public void setSentOnlyToMe(boolean value) { if (this.canSetFieldValue(this.sentOnlyToMe, value)) { this.sentOnlyToMe = value; this.changed(); } } /** * Gets the e-mail addresses incoming messages must have been sent to for * the condition or exception to apply. To disable this predicate, empty * the list. */ public EmailAddressCollection getSentToAddresses() { return this.sentToAddresses; } /** * Gets or sets a value indicating whether the owner of the mailbox must be * a To recipient of incoming messages * for the condition or exception to apply. */ public boolean getSentToMe() { return this.sentToMe; } public void setSentToMe(boolean value) { if (this.canSetFieldValue(this.sentToMe, value)) { this.sentToMe = value; this.changed(); } } /** * Gets or sets a value indicating whether the owner of the mailbox must be * either a To or Cc recipient of incoming messages for the condition or * exception to apply. */ public boolean getSentToOrCcMe() { return this.sentToOrCcMe; } public void setSentToOrCcMe(boolean value) { if (this.canSetFieldValue(this.sentToOrCcMe, value)) { this.sentToOrCcMe = value; this.changed(); } } /** * Gets or sets the sensitivity that must be stamped on incoming messages * for the condition or exception to apply. * To disable this predicate, set it * to null. */ public Sensitivity getSensitivity() { return this.sensitivity; } public void setSensitivity(Sensitivity value) { if (this.canSetFieldValue(this.sensitivity, value)) { this.sensitivity = value; this.changed(); } } /** * Gets the date range within which * incoming messages must have been received * for the condition or exception to apply. * To disable this predicate, set both * its Start and End property to null. */ public RulePredicateDateRange getWithinDateRange() { return this.withinDateRange; } /** * Gets the minimum and maximum sizes incoming messages must have for the * condition or exception to apply. To disable this predicate, set both its * MinimumSize and MaximumSize property to null. */ public RulePredicateSizeRange getWithinSizeRange() { return this.withinSizeRange; } /** * Tries to read element from XML. * * @param reader The reader * @return True if element was read. * @throws Exception */ @Override public boolean tryReadElementFromXml(EwsServiceXmlReader reader) throws Exception { if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.Categories)) { this.categories.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.ContainsBodyStrings)) { this.containsBodyStrings.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.ContainsHeaderStrings)) { this.containsHeaderStrings.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.ContainsRecipientStrings)) { this.containsRecipientStrings.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.ContainsSenderStrings)) { this.containsSenderStrings.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.ContainsSubjectOrBodyStrings)) { this.containsSubjectOrBodyStrings.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.ContainsSubjectStrings)) { this.containsSubjectStrings.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.FlaggedForAction)) { this.flaggedForAction = reader. readElementValue(FlaggedForAction.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.FromAddresses)) { this.fromAddresses.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.FromConnectedAccounts)) { this.fromConnectedAccounts.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.HasAttachments)) { this.hasAttachments = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.Importance)) { this.importance = reader.readElementValue(Importance.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.IsApprovalRequest)) { this.isApprovalRequest = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.IsAutomaticForward)) { this.isAutomaticForward = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.IsAutomaticReply)) { this.isAutomaticReply = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.IsEncrypted)) { this.isEncrypted = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.IsMeetingRequest)) { this.isMeetingRequest = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.IsMeetingResponse)) { this.isMeetingResponse = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.IsNDR)) { this.isNonDeliveryReport = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.IsPermissionControlled)) { this.isPermissionControlled = reader. readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.IsSigned)) { this.isSigned = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.IsVoicemail)) { this.isVoicemail = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.IsReadReceipt)) { this.isReadReceipt = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.ItemClasses)) { this.itemClasses.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.MessageClassifications)) { this.messageClassifications.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.NotSentToMe)) { this.notSentToMe = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.SentCcMe)) { this.sentCcMe = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.SentOnlyToMe)) { this.sentOnlyToMe = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.SentToAddresses)) { this.sentToAddresses.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.SentToMe)) { this.sentToMe = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.SentToOrCcMe)) { this.sentToOrCcMe = reader.readElementValue(Boolean.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.Sensitivity)) { this.sensitivity = reader.readElementValue(Sensitivity.class); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.WithinDateRange)) { this.withinDateRange.loadFromXml(reader, reader.getLocalName()); return true; } else if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.WithinSizeRange)) { this.withinSizeRange.loadFromXml(reader, reader.getLocalName()); return true; } else { return false; } } /** * Writes elements to XML. * * @param writer The writer. * @throws Exception */ @Override public void writeElementsToXml(EwsServiceXmlWriter writer) throws Exception { if (this.getCategories().getSize() > 0) { this.getCategories().writeToXml(writer, XmlElementNames.Categories); } if (this.getContainsBodyStrings().getSize() > 0) { this.getContainsBodyStrings().writeToXml(writer, XmlElementNames.ContainsBodyStrings); } if (this.getContainsHeaderStrings().getSize() > 0) { this.getContainsHeaderStrings().writeToXml(writer, XmlElementNames.ContainsHeaderStrings); } if (this.getContainsRecipientStrings().getSize() > 0) { this.getContainsRecipientStrings().writeToXml(writer, XmlElementNames.ContainsRecipientStrings); } if (this.getContainsSenderStrings().getSize() > 0) { this.getContainsSenderStrings().writeToXml(writer, XmlElementNames.ContainsSenderStrings); } if (this.getContainsSubjectOrBodyStrings().getSize() > 0) { this.getContainsSubjectOrBodyStrings().writeToXml(writer, XmlElementNames.ContainsSubjectOrBodyStrings); } if (this.getContainsSubjectStrings().getSize() > 0) { this.getContainsSubjectStrings().writeToXml(writer, XmlElementNames.ContainsSubjectStrings); } if (this.getFlaggedForAction() != null) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.FlaggedForAction, this.getFlaggedForAction().values()); } if (this.getFromAddresses().getCount() > 0) { this.getFromAddresses().writeToXml(writer, XmlElementNames.FromAddresses); } if (this.getFromConnectedAccounts().getSize() > 0) { this.getFromConnectedAccounts().writeToXml(writer, XmlElementNames.FromConnectedAccounts); } if (this.getHasAttachments() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.HasAttachments, this.getHasAttachments()); } if (this.getImportance() != null) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.Importance, this.getImportance()); } if (this.getIsApprovalRequest() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.IsApprovalRequest, this.getIsApprovalRequest()); } if (this.getIsAutomaticForward() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.IsAutomaticForward, this.getIsAutomaticForward()); } if (this.getIsAutomaticReply() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.IsAutomaticReply, this.getIsAutomaticReply()); } if (this.getIsEncrypted() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.IsEncrypted, this.getIsEncrypted()); } if (this.getIsMeetingRequest() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.IsMeetingRequest, this.getIsMeetingRequest()); } if (this.getIsMeetingResponse() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.IsMeetingResponse, this.getIsMeetingResponse()); } if (this.getIsNonDeliveryReport() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.IsNDR, this.getIsNonDeliveryReport()); } if (this.getIsPermissionControlled() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.IsPermissionControlled, this.getIsPermissionControlled()); } if (this.getIsReadReceipt() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.IsReadReceipt, this.getIsReadReceipt()); } if (this.getIsSigned() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.IsSigned, this.getIsSigned()); } if (this.getIsVoicemail() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.IsVoicemail, this.getIsVoicemail()); } if (this.getItemClasses().getSize() > 0) { this.getItemClasses().writeToXml(writer, XmlElementNames.ItemClasses); } if (this.getMessageClassifications().getSize() > 0) { this.getMessageClassifications().writeToXml(writer, XmlElementNames.MessageClassifications); } if (this.getNotSentToMe() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.NotSentToMe, this.getNotSentToMe()); } if (this.getSentCcMe() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.SentCcMe, this.getSentCcMe()); } if (this.getSentOnlyToMe() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.SentOnlyToMe, this.getSentOnlyToMe()); } if (this.getSentToAddresses().getCount() > 0) { this.getSentToAddresses().writeToXml(writer, XmlElementNames.SentToAddresses); } if (this.getSentToMe() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.SentToMe, this.getSentToMe()); } if (this.getSentToOrCcMe() != false) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.SentToOrCcMe, this.getSentToOrCcMe()); } if (this.getSensitivity() != null) { writer.writeElementValue( XmlNamespace.Types, XmlElementNames.Sensitivity, this.getSensitivity().values()); } if (this.getWithinDateRange().getStart() != null || this.getWithinDateRange().getEnd() != null) { this.getWithinDateRange().writeToXml(writer, XmlElementNames.WithinDateRange); } if (this.getWithinSizeRange().getMaximumSize() != null || this.getWithinSizeRange().getMinimumSize() != null) { this.getWithinSizeRange().writeToXml(writer, XmlElementNames.WithinSizeRange); } } /** * Validates this instance. */ @Override protected void internalValidate() throws Exception { super.internalValidate(); EwsUtilities.validateParam(this.fromAddresses, "FromAddresses"); EwsUtilities.validateParam(this.sentToAddresses, "SentToAddresses"); EwsUtilities.validateParam(this.withinDateRange, "WithinDateRange"); EwsUtilities.validateParam(this.withinSizeRange, "WithinSizeRange"); } }