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
024 package microsoft.exchange.webservices.data.property.complex.availability;
025
026 import microsoft.exchange.webservices.data.core.EwsServiceXmlReader;
027 import microsoft.exchange.webservices.data.core.XmlElementNames;
028 import microsoft.exchange.webservices.data.core.enumeration.property.ConflictType;
029 import microsoft.exchange.webservices.data.core.enumeration.property.LegacyFreeBusyStatus;
030 import microsoft.exchange.webservices.data.property.complex.ComplexProperty;
031
032 /**
033 * Represents a conflict in a meeting time suggestion.
034 */
035 public final class Conflict extends ComplexProperty {
036
037 /**
038 * The conflict type.
039 */
040 private ConflictType conflictType;
041
042 /**
043 * The number of members.
044 */
045 private int numberOfMembers;
046
047 /**
048 * The number of members available.
049 */
050 private int numberOfMembersAvailable;
051
052 /**
053 * The number of members with conflict.
054 */
055 private int numberOfMembersWithConflict;
056
057 /**
058 * The number of members with no data.
059 */
060 private int numberOfMembersWithNoData;
061
062 /**
063 * The free busy status.
064 */
065 private LegacyFreeBusyStatus freeBusyStatus;
066
067 /**
068 * Initializes a new instance of the Conflict class.
069 *
070 * @param conflictType the conflict type
071 */
072 protected Conflict(ConflictType conflictType) {
073 super();
074 this.conflictType = conflictType;
075 }
076
077 /**
078 * Tries to read element from XML.
079 *
080 * @param reader the reader
081 * @return True if appropriate element was read.
082 * @throws Exception the exception
083 */
084 @Override
085 public boolean tryReadElementFromXml(EwsServiceXmlReader reader)
086 throws Exception {
087 if (reader.getLocalName().equals(XmlElementNames.NumberOfMembers)) {
088 this.numberOfMembers = reader.readElementValue(Integer.class);
089 return true;
090 } else if (reader.getLocalName().equals(
091 XmlElementNames.NumberOfMembersAvailable)) {
092 this.numberOfMembersAvailable = reader
093 .readElementValue(Integer.class);
094 return true;
095 } else if (reader.getLocalName().equals(
096 XmlElementNames.NumberOfMembersWithConflict)) {
097 this.numberOfMembersWithConflict = reader
098 .readElementValue(Integer.class);
099 return true;
100 } else if (reader.getLocalName().equals(
101 XmlElementNames.NumberOfMembersWithNoData)) {
102 this.numberOfMembersWithNoData = reader
103 .readElementValue(Integer.class);
104 return true;
105 } else if (reader.getLocalName().equals(XmlElementNames.BusyType)) {
106 this.freeBusyStatus = reader
107 .readElementValue(LegacyFreeBusyStatus.class);
108 return true;
109 } else {
110 return false;
111 }
112 }
113
114 /**
115 * Gets the type of the conflict.
116 *
117 * @return the conflict type
118 */
119 public ConflictType getConflictType() {
120 return conflictType;
121 }
122
123 /**
124 * Gets the number of users, resources, and rooms in the conflicting group.
125 * The value of this property is only meaningful when ConflictType is equal
126 * to ConflictType.GroupConflict.
127 *
128 * @return the number of members
129 */
130 public int getNumberOfMembers() {
131 return numberOfMembers;
132 }
133
134 /**
135 * Gets the number of members who are available (whose status is Free) in
136 * the conflicting group. The value of this property is only meaningful when
137 * ConflictType is equal to ConflictType.GroupConflict.
138 *
139 * @return the number of members available
140 */
141 public int getNumberOfMembersAvailable() {
142 return numberOfMembersAvailable;
143 }
144
145 /**
146 * Gets the number of members who have a conflict (whose status is Busy, OOF
147 * or Tentative) in the conflicting group. The value of this property is
148 * only meaningful when ConflictType is equal to ConflictType.GroupConflict.
149 *
150 * @return the number of members with conflict
151 */
152 public int getNumberOfMembersWithConflict() {
153 return numberOfMembersWithConflict;
154 }
155
156 /**
157 * Gets the number of members who do not have published free/busy data in
158 * the conflicting group. The value of this property is only meaningful when
159 * ConflictType is equal to ConflictType.GroupConflict.
160 *
161 * @return the number of members with no data
162 */
163 public int getNumberOfMembersWithNoData() {
164 return numberOfMembersWithNoData;
165 }
166
167 /**
168 * Gets the free/busy status of the conflicting attendee. The value of this
169 * property is only meaningful when ConflictType is equal to
170 * ConflictType.IndividualAttendee.
171 *
172 * @return the free busy status
173 */
174 public LegacyFreeBusyStatus getFreeBusyStatus() {
175 return freeBusyStatus;
176 }
177
178 }