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.core; 025 026/** 027 * Represents Exchange server information. 028 */ 029public final class ExchangeServerInfo { 030 031 /** 032 * The major version. 033 */ 034 private int majorVersion; 035 036 /** 037 * The minor version. 038 */ 039 private int minorVersion; 040 041 /** 042 * The major build number. 043 */ 044 private int majorBuildNumber; 045 046 /** 047 * The minor build number. 048 */ 049 private int minorBuildNumber; 050 051 /** 052 * The version string. 053 */ 054 private String versionString; 055 056 /* 057 * Default constructor 058 */ 059 060 /** 061 * Instantiates a new exchange server info. 062 */ 063 public ExchangeServerInfo() { 064 065 } 066 067 /** 068 * Parse current element to extract server information. 069 * 070 * @param reader EwsServiceXmlReader 071 * @return ExchangeServerInfo 072 * @throws Exception the exception 073 */ 074 public static ExchangeServerInfo parse(EwsServiceXmlReader reader) 075 throws Exception { 076 EwsUtilities.ewsAssert(reader.hasAttributes(), "ExchangeServerVersion.Parse", 077 "Current element doesn't have attribute"); 078 079 ExchangeServerInfo info = new ExchangeServerInfo(); 080 info.majorVersion = reader.readAttributeValue(Integer.class, 081 "MajorVersion"); 082 info.minorVersion = reader.readAttributeValue(Integer.class, 083 "MinorVersion"); 084 info.majorBuildNumber = reader.readAttributeValue(Integer.class, 085 "MajorBuildNumber"); 086 info.minorBuildNumber = reader.readAttributeValue(Integer.class, 087 "MinorBuildNumber"); 088 info.versionString = reader.readAttributeValue("Version"); 089 return info; 090 } 091 092 /** 093 * Gets the Major Exchange server version number. 094 * 095 * @return the major version 096 */ 097 public int getMajorVersion() { 098 return this.majorVersion; 099 } 100 101 /** 102 * Sets the major version. 103 * 104 * @param majorVersion the new major version 105 */ 106 public void setMajorVersion(int majorVersion) { 107 this.majorVersion = majorVersion; 108 } 109 110 /** 111 * Gets the Minor Exchange server version number. 112 * 113 * @return the minor version 114 */ 115 public int getMinorVersion() { 116 return minorVersion; 117 } 118 119 /** 120 * Sets the minor version. 121 * 122 * @param minorVersion the new minor version 123 */ 124 public void setMinorVersion(int minorVersion) { 125 this.minorVersion = minorVersion; 126 } 127 128 /** 129 * Gets the Major Exchange server build number. 130 * 131 * @return the major build number 132 */ 133 public int getMajorBuildNumber() { 134 return majorBuildNumber; 135 } 136 137 /** 138 * Sets the major build number. 139 * 140 * @param majorBuildNumber the new major build number 141 */ 142 public void setMajorBuildNumber(int majorBuildNumber) { 143 this.majorBuildNumber = majorBuildNumber; 144 } 145 146 /** 147 * Gets the Minor Exchange server build number. 148 * 149 * @return the minor build number 150 */ 151 public int getMinorBuildNumber() { 152 return minorBuildNumber; 153 } 154 155 /** 156 * Sets the minor build number. 157 * 158 * @param minorBuildNumber the new minor build number 159 */ 160 public void setMinorBuildNumber(int minorBuildNumber) { 161 this.minorBuildNumber = minorBuildNumber; 162 } 163 164 /** 165 * Gets the Exchange server version string (e.g. "Exchange2010") 166 * 167 * @return the version string 168 */ 169 // / The version is a string rather than an enum since its possible for the 170 // client to 171 // / be connected to a later server for which there would be no appropriate 172 // enum value. 173 public String getVersionString() { 174 return versionString; 175 } 176 177 /** 178 * Sets the version string. 179 * 180 * @param versionString the new version string 181 */ 182 public void setVersionString(String versionString) { 183 this.versionString = versionString; 184 } 185 186 /** 187 * Override ToString method. 188 * 189 * @return the string 190 */ 191 @Override 192 public String toString() { 193 return String 194 .format("%d,%2d,%4d,%3d", this.majorVersion, this.minorVersion, 195 this.majorBuildNumber, this.minorBuildNumber); 196 } 197}