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.service.schema; 025 026import microsoft.exchange.webservices.data.attribute.Schema; 027import microsoft.exchange.webservices.data.core.XmlElementNames; 028import microsoft.exchange.webservices.data.core.enumeration.service.ContactSource; 029import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion; 030import microsoft.exchange.webservices.data.core.enumeration.service.FileAsMapping; 031import microsoft.exchange.webservices.data.core.enumeration.property.PhysicalAddressIndex; 032import microsoft.exchange.webservices.data.core.enumeration.property.PropertyDefinitionFlags; 033import microsoft.exchange.webservices.data.property.complex.ByteArrayArray; 034import microsoft.exchange.webservices.data.property.complex.CompleteName; 035import microsoft.exchange.webservices.data.property.complex.EmailAddress; 036import microsoft.exchange.webservices.data.property.complex.EmailAddressCollection; 037import microsoft.exchange.webservices.data.property.complex.EmailAddressDictionary; 038import microsoft.exchange.webservices.data.property.complex.ICreateComplexPropertyDelegate; 039import microsoft.exchange.webservices.data.property.complex.ImAddressDictionary; 040import microsoft.exchange.webservices.data.property.complex.PhoneNumberDictionary; 041import microsoft.exchange.webservices.data.property.complex.PhysicalAddressDictionary; 042import microsoft.exchange.webservices.data.property.complex.StringList; 043import microsoft.exchange.webservices.data.property.definition.BoolPropertyDefinition; 044import microsoft.exchange.webservices.data.property.definition.ByteArrayPropertyDefinition; 045import microsoft.exchange.webservices.data.property.definition.ComplexPropertyDefinition; 046import microsoft.exchange.webservices.data.property.definition.ContainedPropertyDefinition; 047import microsoft.exchange.webservices.data.property.definition.DateTimePropertyDefinition; 048import microsoft.exchange.webservices.data.property.definition.GenericPropertyDefinition; 049import microsoft.exchange.webservices.data.property.definition.IndexedPropertyDefinition; 050import microsoft.exchange.webservices.data.property.definition.PropertyDefinition; 051import microsoft.exchange.webservices.data.property.definition.StringPropertyDefinition; 052 053import java.util.EnumSet; 054 055/** 056 * Represents the schema for contacts. 057 */ 058@Schema 059public class ContactSchema extends ItemSchema { 060 061 /** 062 * FieldURIs for contacts. 063 */ 064 private interface FieldUris { 065 066 /** 067 * The File as. 068 */ 069 String FileAs = "contacts:FileAs"; 070 071 /** 072 * The File as mapping. 073 */ 074 String FileAsMapping = "contacts:FileAsMapping"; 075 076 /** 077 * The Display name. 078 */ 079 String DisplayName = "contacts:DisplayName"; 080 081 /** 082 * The Given name. 083 */ 084 String GivenName = "contacts:GivenName"; 085 086 /** 087 * The Initials. 088 */ 089 String Initials = "contacts:Initials"; 090 091 /** 092 * The Middle name. 093 */ 094 String MiddleName = "contacts:MiddleName"; 095 096 /** 097 * The Nick name. 098 */ 099 String NickName = "contacts:Nickname"; 100 101 /** 102 * The Complete name. 103 */ 104 String CompleteName = "contacts:CompleteName"; 105 106 /** 107 * The Company name. 108 */ 109 String CompanyName = "contacts:CompanyName"; 110 111 /** 112 * The Email address. 113 */ 114 String EmailAddress = "contacts:EmailAddress"; 115 116 /** 117 * The Email addresses. 118 */ 119 String EmailAddresses = "contacts:EmailAddresses"; 120 121 /** 122 * The Physical addresses. 123 */ 124 String PhysicalAddresses = "contacts:PhysicalAddresses"; 125 126 /** 127 * The Phone number. 128 */ 129 String PhoneNumber = "contacts:PhoneNumber"; 130 131 /** 132 * The Phone numbers. 133 */ 134 String PhoneNumbers = "contacts:PhoneNumbers"; 135 136 /** 137 * The Assistant name. 138 */ 139 String AssistantName = "contacts:AssistantName"; 140 141 /** 142 * The Birthday. 143 */ 144 String Birthday = "contacts:Birthday"; 145 146 /** 147 * The Business home page. 148 */ 149 String BusinessHomePage = "contacts:BusinessHomePage"; 150 151 /** 152 * The Children. 153 */ 154 String Children = "contacts:Children"; 155 156 /** 157 * The Companies. 158 */ 159 String Companies = "contacts:Companies"; 160 161 /** 162 * The Contact source. 163 */ 164 String ContactSource = "contacts:ContactSource"; 165 166 /** 167 * The Department. 168 */ 169 String Department = "contacts:Department"; 170 171 /** 172 * The Generation. 173 */ 174 String Generation = "contacts:Generation"; 175 176 /** 177 * The Im address. 178 */ 179 String ImAddress = "contacts:ImAddress"; 180 181 /** 182 * The Im addresses. 183 */ 184 String ImAddresses = "contacts:ImAddresses"; 185 186 /** 187 * The Job title. 188 */ 189 String JobTitle = "contacts:JobTitle"; 190 191 /** 192 * The Manager. 193 */ 194 String Manager = "contacts:Manager"; 195 196 /** 197 * The Mileage. 198 */ 199 String Mileage = "contacts:Mileage"; 200 201 /** 202 * The Office location. 203 */ 204 String OfficeLocation = "contacts:OfficeLocation"; 205 206 /** 207 * The Physical address city. 208 */ 209 String PhysicalAddressCity = "contacts:PhysicalAddress:City"; 210 211 /** 212 * The Physical address country or region. 213 */ 214 String PhysicalAddressCountryOrRegion = 215 "contacts:PhysicalAddress:CountryOrRegion"; 216 217 /** 218 * The Physical address state. 219 */ 220 String PhysicalAddressState = "contacts:PhysicalAddress:State"; 221 222 /** 223 * The Physical address street. 224 */ 225 String PhysicalAddressStreet = "contacts:PhysicalAddress:Street"; 226 227 /** 228 * The Physical address postal code. 229 */ 230 String PhysicalAddressPostalCode = 231 "contacts:PhysicalAddress:PostalCode"; 232 233 /** 234 * The Postal address index. 235 */ 236 String PostalAddressIndex = "contacts:PostalAddressIndex"; 237 238 /** 239 * The Profession. 240 */ 241 String Profession = "contacts:Profession"; 242 243 /** 244 * The Spouse name. 245 */ 246 String SpouseName = "contacts:SpouseName"; 247 248 /** 249 * The Surname. 250 */ 251 String Surname = "contacts:Surname"; 252 253 /** 254 * The Wedding anniversary. 255 */ 256 String WeddingAnniversary = "contacts:WeddingAnniversary"; 257 258 /** 259 * The Has picture. 260 */ 261 String HasPicture = "contacts:HasPicture"; 262 263 /** 264 * The PhoneticFullName. 265 */ 266 267 String PhoneticFullName = "contacts:PhoneticFullName"; 268 269 /** 270 * The PhoneticFirstName. 271 */ 272 273 String PhoneticFirstName = "contacts:PhonetiFirstName"; 274 275 /** 276 * The PhoneticFirstName. 277 */ 278 279 String PhoneticLastName = "contacts:PhonetiLastName"; 280 281 /** 282 * The Aias. 283 */ 284 285 String Alias = "contacts:Alias"; 286 287 /** 288 * The Notes. 289 */ 290 291 String Notes = "contacts:Notes"; 292 293 /** 294 * The Photo. 295 */ 296 297 String Photo = "contacts:Photo"; 298 299 /** 300 * The UserSMIMECertificate. 301 */ 302 303 String UserSMIMECertificate = "contacts:UserSMIMECertificate"; 304 305 /** 306 * The MSExchangeCertificate. 307 */ 308 309 String MSExchangeCertificate = "contacts:MSExchangeCertificate"; 310 311 /** 312 * The DirectoryId. 313 */ 314 315 String DirectoryId = "contacts:DirectoryId"; 316 317 /** 318 * The ManagerMailbox. 319 */ 320 321 String ManagerMailbox = "contacts:ManagerMailbox"; 322 323 /** 324 * The DirectReports. 325 */ 326 327 String DirectReports = "contacts:DirectReports"; 328 } 329 330 331 /** 332 * Defines the FileAs property. 333 */ 334 public static final PropertyDefinition FileAs = 335 new StringPropertyDefinition( 336 XmlElementNames.FileAs, FieldUris.FileAs, EnumSet.of( 337 PropertyDefinitionFlags.CanSet, 338 PropertyDefinitionFlags.CanUpdate, 339 PropertyDefinitionFlags.CanDelete, 340 PropertyDefinitionFlags.CanFind), 341 ExchangeVersion.Exchange2007_SP1); 342 343 /** 344 * Defines the FileAsMapping property. 345 */ 346 public static final PropertyDefinition FileAsMapping = 347 new GenericPropertyDefinition<FileAsMapping>( 348 FileAsMapping.class, 349 XmlElementNames.FileAsMapping, FieldUris.FileAsMapping, EnumSet.of( 350 PropertyDefinitionFlags.CanSet, 351 PropertyDefinitionFlags.CanUpdate, 352 PropertyDefinitionFlags.CanDelete, 353 PropertyDefinitionFlags.CanFind), 354 ExchangeVersion.Exchange2007_SP1); 355 356 /** 357 * Defines the DisplayName property. 358 */ 359 public static final PropertyDefinition DisplayName = 360 new StringPropertyDefinition( 361 XmlElementNames.DisplayName, FieldUris.DisplayName, EnumSet.of( 362 PropertyDefinitionFlags.CanSet, 363 PropertyDefinitionFlags.CanUpdate, 364 PropertyDefinitionFlags.CanDelete, 365 PropertyDefinitionFlags.CanFind), 366 ExchangeVersion.Exchange2007_SP1); 367 368 /** 369 * Defines the GivenName property. 370 */ 371 public static final PropertyDefinition GivenName = 372 new StringPropertyDefinition( 373 XmlElementNames.GivenName, FieldUris.GivenName, EnumSet.of( 374 PropertyDefinitionFlags.CanSet, 375 PropertyDefinitionFlags.CanUpdate, 376 PropertyDefinitionFlags.CanDelete, 377 PropertyDefinitionFlags.CanFind), 378 ExchangeVersion.Exchange2007_SP1); 379 380 /** 381 * Defines the Initials property. 382 */ 383 public static final PropertyDefinition Initials = 384 new StringPropertyDefinition( 385 XmlElementNames.Initials, FieldUris.Initials, EnumSet.of( 386 PropertyDefinitionFlags.CanSet, 387 PropertyDefinitionFlags.CanUpdate, 388 PropertyDefinitionFlags.CanDelete, 389 PropertyDefinitionFlags.CanFind), 390 ExchangeVersion.Exchange2007_SP1); 391 392 /** 393 * Defines the MiddleName property. 394 */ 395 public static final PropertyDefinition MiddleName = 396 new StringPropertyDefinition( 397 XmlElementNames.MiddleName, FieldUris.MiddleName, EnumSet.of( 398 PropertyDefinitionFlags.CanSet, 399 PropertyDefinitionFlags.CanUpdate, 400 PropertyDefinitionFlags.CanDelete, 401 PropertyDefinitionFlags.CanFind), 402 ExchangeVersion.Exchange2007_SP1); 403 404 /** 405 * Defines the NickName property. 406 */ 407 public static final PropertyDefinition NickName = 408 new StringPropertyDefinition( 409 XmlElementNames.NickName, FieldUris.NickName, EnumSet.of( 410 PropertyDefinitionFlags.CanSet, 411 PropertyDefinitionFlags.CanUpdate, 412 PropertyDefinitionFlags.CanDelete, 413 PropertyDefinitionFlags.CanFind), 414 ExchangeVersion.Exchange2007_SP1); 415 416 /** 417 * Defines the CompleteName property. 418 */ 419 public static final PropertyDefinition CompleteName = 420 new ComplexPropertyDefinition<microsoft.exchange.webservices.data.property.complex.CompleteName>( 421 CompleteName.class, 422 XmlElementNames.CompleteName, FieldUris.CompleteName, EnumSet 423 .of(PropertyDefinitionFlags.CanFind), 424 ExchangeVersion.Exchange2007_SP1, 425 new ICreateComplexPropertyDelegate<CompleteName>() { 426 @Override 427 public CompleteName createComplexProperty() { 428 return new CompleteName(); 429 } 430 }); 431 432 /** 433 * Defines the CompanyName property. 434 */ 435 public static final PropertyDefinition CompanyName = 436 new StringPropertyDefinition( 437 XmlElementNames.CompanyName, FieldUris.CompanyName, EnumSet.of( 438 PropertyDefinitionFlags.CanSet, 439 PropertyDefinitionFlags.CanUpdate, 440 PropertyDefinitionFlags.CanDelete, 441 PropertyDefinitionFlags.CanFind), 442 ExchangeVersion.Exchange2007_SP1); 443 444 /** 445 * Defines the EmailAddresses property. 446 */ 447 public static final PropertyDefinition EmailAddresses = 448 new ComplexPropertyDefinition<EmailAddressDictionary>( 449 EmailAddressDictionary.class, 450 XmlElementNames.EmailAddresses, 451 FieldUris.EmailAddresses, 452 EnumSet.of(PropertyDefinitionFlags.AutoInstantiateOnRead, 453 PropertyDefinitionFlags.CanSet, 454 PropertyDefinitionFlags.CanUpdate), 455 ExchangeVersion.Exchange2007_SP1, 456 new ICreateComplexPropertyDelegate 457 <EmailAddressDictionary>() { 458 @Override 459 public EmailAddressDictionary createComplexProperty() { 460 return new EmailAddressDictionary(); 461 } 462 }); 463 464 /** 465 * Defines the PhysicalAddresses property. 466 */ 467 public static final PropertyDefinition PhysicalAddresses = 468 new ComplexPropertyDefinition<PhysicalAddressDictionary>( 469 PhysicalAddressDictionary.class, 470 XmlElementNames.PhysicalAddresses, 471 FieldUris.PhysicalAddresses, 472 EnumSet.of(PropertyDefinitionFlags.AutoInstantiateOnRead, 473 PropertyDefinitionFlags.CanSet, 474 PropertyDefinitionFlags.CanUpdate), 475 ExchangeVersion.Exchange2007_SP1, 476 new ICreateComplexPropertyDelegate 477 <PhysicalAddressDictionary>() { 478 @Override 479 public PhysicalAddressDictionary createComplexProperty() { 480 return new PhysicalAddressDictionary(); 481 } 482 }); 483 484 /** 485 * Defines the PhoneNumbers property. 486 */ 487 public static final PropertyDefinition PhoneNumbers = 488 new ComplexPropertyDefinition<PhoneNumberDictionary>( 489 PhoneNumberDictionary.class, 490 XmlElementNames.PhoneNumbers, 491 FieldUris.PhoneNumbers, 492 EnumSet.of(PropertyDefinitionFlags.AutoInstantiateOnRead, 493 PropertyDefinitionFlags.CanSet, 494 PropertyDefinitionFlags.CanUpdate), 495 ExchangeVersion.Exchange2007_SP1, 496 new ICreateComplexPropertyDelegate 497 <PhoneNumberDictionary>() { 498 @Override 499 public PhoneNumberDictionary createComplexProperty() { 500 return new PhoneNumberDictionary(); 501 } 502 }); 503 504 /** 505 * Defines the AssistantName property. 506 */ 507 public static final PropertyDefinition AssistantName = 508 new StringPropertyDefinition( 509 XmlElementNames.AssistantName, FieldUris.AssistantName, EnumSet.of( 510 PropertyDefinitionFlags.CanSet, 511 PropertyDefinitionFlags.CanUpdate, 512 PropertyDefinitionFlags.CanDelete, 513 PropertyDefinitionFlags.CanFind), 514 ExchangeVersion.Exchange2007_SP1); 515 516 /** 517 * Defines the Birthday property. 518 */ 519 public static final PropertyDefinition Birthday = 520 new DateTimePropertyDefinition( 521 XmlElementNames.Birthday, FieldUris.Birthday, EnumSet.of( 522 PropertyDefinitionFlags.CanSet, 523 PropertyDefinitionFlags.CanUpdate, 524 PropertyDefinitionFlags.CanDelete, 525 PropertyDefinitionFlags.CanFind), 526 ExchangeVersion.Exchange2007_SP1); 527 528 /** 529 * Defines the BusinessHomePage property. 530 * 531 * Defined as anyURI in the EWS schema. String is fine here. 532 */ 533 public static final PropertyDefinition BusinessHomePage = 534 new StringPropertyDefinition( 535 XmlElementNames.BusinessHomePage, FieldUris.BusinessHomePage, 536 EnumSet.of(PropertyDefinitionFlags.CanSet, 537 PropertyDefinitionFlags.CanUpdate, 538 PropertyDefinitionFlags.CanDelete, 539 PropertyDefinitionFlags.CanFind), 540 ExchangeVersion.Exchange2007_SP1); 541 542 /** 543 * Defines the Children property. 544 */ 545 public static final PropertyDefinition Children = 546 new ComplexPropertyDefinition<StringList>( 547 StringList.class, 548 XmlElementNames.Children, FieldUris.Children, EnumSet.of( 549 PropertyDefinitionFlags.AutoInstantiateOnRead, 550 PropertyDefinitionFlags.CanSet, 551 PropertyDefinitionFlags.CanUpdate, 552 PropertyDefinitionFlags.CanDelete, 553 PropertyDefinitionFlags.CanFind), 554 ExchangeVersion.Exchange2007_SP1, 555 new ICreateComplexPropertyDelegate<StringList>() { 556 @Override 557 public StringList createComplexProperty() { 558 return new StringList(); 559 } 560 }); 561 562 /** 563 * Defines the Companies property. 564 */ 565 public static final PropertyDefinition Companies = 566 new ComplexPropertyDefinition<StringList>( 567 StringList.class, 568 XmlElementNames.Companies, FieldUris.Companies, EnumSet.of( 569 PropertyDefinitionFlags.AutoInstantiateOnRead, 570 PropertyDefinitionFlags.CanSet, 571 PropertyDefinitionFlags.CanUpdate, 572 PropertyDefinitionFlags.CanDelete, 573 PropertyDefinitionFlags.CanFind), 574 ExchangeVersion.Exchange2007_SP1, 575 new ICreateComplexPropertyDelegate<StringList>() { 576 @Override 577 public StringList createComplexProperty() { 578 return new StringList(); 579 } 580 }); 581 582 /** 583 * Defines the ContactSource property. 584 */ 585 public static final PropertyDefinition ContactSource = 586 new GenericPropertyDefinition<ContactSource>( 587 ContactSource.class, 588 XmlElementNames.ContactSource, FieldUris.ContactSource, EnumSet 589 .of(PropertyDefinitionFlags.CanFind), 590 ExchangeVersion.Exchange2007_SP1); 591 592 /** 593 * Defines the Department property. 594 */ 595 public static final PropertyDefinition Department = 596 new StringPropertyDefinition( 597 XmlElementNames.Department, FieldUris.Department, EnumSet.of( 598 PropertyDefinitionFlags.CanSet, 599 PropertyDefinitionFlags.CanUpdate, 600 PropertyDefinitionFlags.CanDelete, 601 PropertyDefinitionFlags.CanFind), 602 ExchangeVersion.Exchange2007_SP1); 603 604 /** 605 * Defines the Generation property. 606 */ 607 public static final PropertyDefinition Generation = 608 new StringPropertyDefinition( 609 XmlElementNames.Generation, FieldUris.Generation, EnumSet.of( 610 PropertyDefinitionFlags.CanSet, 611 PropertyDefinitionFlags.CanUpdate, 612 PropertyDefinitionFlags.CanDelete, 613 PropertyDefinitionFlags.CanFind), 614 ExchangeVersion.Exchange2007_SP1); 615 616 /** 617 * Defines the ImAddresses property. 618 */ 619 public static final PropertyDefinition ImAddresses = 620 new ComplexPropertyDefinition<ImAddressDictionary>( 621 ImAddressDictionary.class, 622 XmlElementNames.ImAddresses, FieldUris.ImAddresses, EnumSet.of( 623 PropertyDefinitionFlags.AutoInstantiateOnRead, 624 PropertyDefinitionFlags.CanSet, 625 PropertyDefinitionFlags.CanUpdate), 626 ExchangeVersion.Exchange2007_SP1, 627 new ICreateComplexPropertyDelegate<ImAddressDictionary>() { 628 @Override 629 public ImAddressDictionary createComplexProperty() { 630 return new ImAddressDictionary(); 631 } 632 }); 633 634 /** 635 * Defines the JobTitle property. 636 */ 637 public static final PropertyDefinition JobTitle = 638 new StringPropertyDefinition( 639 XmlElementNames.JobTitle, FieldUris.JobTitle, EnumSet.of( 640 PropertyDefinitionFlags.CanSet, 641 PropertyDefinitionFlags.CanUpdate, 642 PropertyDefinitionFlags.CanDelete, 643 PropertyDefinitionFlags.CanFind), 644 ExchangeVersion.Exchange2007_SP1); 645 646 /** 647 * Defines the Manager property. 648 */ 649 public static final PropertyDefinition Manager = 650 new StringPropertyDefinition( 651 XmlElementNames.Manager, FieldUris.Manager, EnumSet.of( 652 PropertyDefinitionFlags.CanSet, 653 PropertyDefinitionFlags.CanUpdate, 654 PropertyDefinitionFlags.CanDelete, 655 PropertyDefinitionFlags.CanFind), 656 ExchangeVersion.Exchange2007_SP1); 657 658 /** 659 * Defines the Mileage property. 660 */ 661 public static final PropertyDefinition Mileage = 662 new StringPropertyDefinition( 663 XmlElementNames.Mileage, FieldUris.Mileage, EnumSet.of( 664 PropertyDefinitionFlags.CanSet, 665 PropertyDefinitionFlags.CanUpdate, 666 PropertyDefinitionFlags.CanDelete, 667 PropertyDefinitionFlags.CanFind), 668 ExchangeVersion.Exchange2007_SP1); 669 670 /** 671 * Defines the OfficeLocation property. 672 */ 673 public static final PropertyDefinition OfficeLocation = 674 new StringPropertyDefinition( 675 XmlElementNames.OfficeLocation, FieldUris.OfficeLocation, EnumSet 676 .of(PropertyDefinitionFlags.CanSet, 677 PropertyDefinitionFlags.CanUpdate, 678 PropertyDefinitionFlags.CanDelete, 679 PropertyDefinitionFlags.CanFind), 680 ExchangeVersion.Exchange2007_SP1); 681 682 /** 683 * Defines the PostalAddressIndex property. 684 */ 685 public static final PropertyDefinition PostalAddressIndex = 686 new GenericPropertyDefinition<PhysicalAddressIndex>( 687 PhysicalAddressIndex.class, 688 XmlElementNames.PostalAddressIndex, FieldUris.PostalAddressIndex, 689 EnumSet.of(PropertyDefinitionFlags.CanSet, 690 PropertyDefinitionFlags.CanUpdate, 691 PropertyDefinitionFlags.CanDelete, 692 PropertyDefinitionFlags.CanFind), 693 ExchangeVersion.Exchange2007_SP1); 694 695 /** 696 * Defines the Profession property. 697 */ 698 public static final PropertyDefinition Profession = 699 new StringPropertyDefinition( 700 XmlElementNames.Profession, FieldUris.Profession, EnumSet.of( 701 PropertyDefinitionFlags.CanSet, 702 PropertyDefinitionFlags.CanUpdate, 703 PropertyDefinitionFlags.CanDelete, 704 PropertyDefinitionFlags.CanFind), 705 ExchangeVersion.Exchange2007_SP1); 706 707 /** 708 * Defines the SpouseName property. 709 */ 710 public static final PropertyDefinition SpouseName = 711 new StringPropertyDefinition( 712 XmlElementNames.SpouseName, FieldUris.SpouseName, EnumSet.of( 713 PropertyDefinitionFlags.CanSet, 714 PropertyDefinitionFlags.CanUpdate, 715 PropertyDefinitionFlags.CanDelete, 716 PropertyDefinitionFlags.CanFind), 717 ExchangeVersion.Exchange2007_SP1); 718 719 /** 720 * Defines the Surname property. 721 */ 722 public static final PropertyDefinition Surname = 723 new StringPropertyDefinition( 724 XmlElementNames.Surname, FieldUris.Surname, EnumSet.of( 725 PropertyDefinitionFlags.CanSet, 726 PropertyDefinitionFlags.CanUpdate, 727 PropertyDefinitionFlags.CanDelete, 728 PropertyDefinitionFlags.CanFind), 729 ExchangeVersion.Exchange2007_SP1); 730 731 /** 732 * Defines the WeddingAnniversary property. 733 */ 734 public static final PropertyDefinition WeddingAnniversary = 735 new DateTimePropertyDefinition( 736 XmlElementNames.WeddingAnniversary, FieldUris.WeddingAnniversary, 737 EnumSet.of(PropertyDefinitionFlags.CanSet, 738 PropertyDefinitionFlags.CanUpdate, 739 PropertyDefinitionFlags.CanDelete, 740 PropertyDefinitionFlags.CanFind), 741 ExchangeVersion.Exchange2007_SP1); 742 743 /** 744 * Defines the HasPicture property. 745 */ 746 public static final PropertyDefinition HasPicture = 747 new BoolPropertyDefinition( 748 XmlElementNames.HasPicture, FieldUris.HasPicture, EnumSet 749 .of(PropertyDefinitionFlags.CanFind), 750 ExchangeVersion.Exchange2010); 751 /** 752 * Defines PhoeniticFullName property ** 753 */ 754 755 public static final PropertyDefinition PhoneticFullName = 756 new StringPropertyDefinition( 757 XmlElementNames.PhoneticFullName, 758 FieldUris.PhoneticFullName, 759 EnumSet.of(PropertyDefinitionFlags.CanFind), 760 ExchangeVersion.Exchange2010_SP1); 761 762 /** 763 * Defines PhoenticFirstName property ** 764 */ 765 766 public static final PropertyDefinition PhoneticFirstName = 767 new StringPropertyDefinition( 768 XmlElementNames.PhoneticFirstName, 769 FieldUris.PhoneticFirstName, 770 EnumSet.of(PropertyDefinitionFlags.CanFind), 771 ExchangeVersion.Exchange2010_SP1); 772 773 /** 774 * Defines PhoneticLastName Property ** 775 */ 776 777 public static final PropertyDefinition PhoneticLastName = 778 new StringPropertyDefinition( 779 XmlElementNames.PhoneticLastName, 780 FieldUris.PhoneticLastName, 781 EnumSet.of(PropertyDefinitionFlags.CanFind), 782 ExchangeVersion.Exchange2010_SP1); 783 784 /** 785 * Defines the Alias Property ** 786 */ 787 788 public static final PropertyDefinition Alias = 789 new StringPropertyDefinition( 790 XmlElementNames.Alias, 791 FieldUris.Alias, 792 EnumSet.of(PropertyDefinitionFlags.CanFind), 793 ExchangeVersion.Exchange2010_SP1); 794 795 796 /** 797 * Defines the Notes Property ** 798 */ 799 800 public static final PropertyDefinition Notes = 801 new StringPropertyDefinition( 802 XmlElementNames.Notes, 803 FieldUris.Notes, 804 EnumSet.of(PropertyDefinitionFlags.CanFind), 805 ExchangeVersion.Exchange2010_SP1); 806 807 /** 808 * Defines Photo Property ** 809 */ 810 811 public static final PropertyDefinition Photo = 812 new ByteArrayPropertyDefinition( 813 XmlElementNames.Photo, 814 FieldUris.Photo, 815 EnumSet.of(PropertyDefinitionFlags.CanFind), 816 ExchangeVersion.Exchange2010_SP1); 817 818 /** 819 * Defines UserSMIMECertificate Property ** 820 */ 821 822 public static final PropertyDefinition UserSMIMECertificate = 823 new ComplexPropertyDefinition<ByteArrayArray>( 824 ByteArrayArray.class, 825 XmlElementNames.UserSMIMECertificate, 826 FieldUris.UserSMIMECertificate, 827 EnumSet.of(PropertyDefinitionFlags.CanFind), 828 ExchangeVersion.Exchange2010_SP1, 829 new ICreateComplexPropertyDelegate<ByteArrayArray>() { 830 @Override 831 public ByteArrayArray createComplexProperty() { 832 return new ByteArrayArray(); 833 } 834 }); 835 836 /** 837 * Defines MSExchangeCertificate Property ** 838 */ 839 840 public static final PropertyDefinition MSExchangeCertificate = 841 new ComplexPropertyDefinition<ByteArrayArray>( 842 ByteArrayArray.class, 843 XmlElementNames.MSExchangeCertificate, 844 FieldUris.MSExchangeCertificate, 845 EnumSet.of(PropertyDefinitionFlags.CanFind), 846 ExchangeVersion.Exchange2010_SP1, 847 new ICreateComplexPropertyDelegate<ByteArrayArray>() { 848 @Override 849 public ByteArrayArray createComplexProperty() { 850 return new ByteArrayArray(); 851 } 852 }); 853 854 855 /** 856 * Defines DirectoryId Property ** 857 */ 858 859 public static final PropertyDefinition DirectoryId = 860 new StringPropertyDefinition( 861 XmlElementNames.DirectoryId, 862 FieldUris.DirectoryId, 863 EnumSet.of(PropertyDefinitionFlags.CanFind), 864 ExchangeVersion.Exchange2010_SP1); 865 866 /** 867 * Defines ManagerMailbox Property ** 868 */ 869 870 public static final PropertyDefinition ManagerMailbox = 871 new ContainedPropertyDefinition<EmailAddress>( 872 EmailAddress.class, 873 XmlElementNames.ManagerMailbox, 874 FieldUris.ManagerMailbox, 875 XmlElementNames.Mailbox, 876 EnumSet.of(PropertyDefinitionFlags.CanFind), 877 ExchangeVersion.Exchange2010_SP1, 878 new ICreateComplexPropertyDelegate<EmailAddress>() { 879 @Override 880 public EmailAddress createComplexProperty() { 881 return new EmailAddress(); 882 } 883 }); 884 885 /** 886 * Defines DirectReports Property ** 887 */ 888 889 public static final PropertyDefinition DirectReports = 890 new ComplexPropertyDefinition<EmailAddressCollection>( 891 EmailAddressCollection.class, 892 XmlElementNames.DirectReports, 893 FieldUris.DirectReports, 894 EnumSet.of(PropertyDefinitionFlags.CanFind), 895 ExchangeVersion.Exchange2010_SP1, 896 new ICreateComplexPropertyDelegate<EmailAddressCollection>() { 897 @Override 898 public EmailAddressCollection createComplexProperty() 899 900 { 901 return new EmailAddressCollection(); 902 } 903 }); 904 905 906 907 /** 908 * Defines the EmailAddress1 property. 909 */ 910 public static final IndexedPropertyDefinition EmailAddress1 = 911 new IndexedPropertyDefinition( 912 FieldUris.EmailAddress, "EmailAddress1"); 913 914 /** 915 * Defines the EmailAddress2 property. 916 */ 917 public static final IndexedPropertyDefinition EmailAddress2 = 918 new IndexedPropertyDefinition( 919 FieldUris.EmailAddress, "EmailAddress2"); 920 921 /** 922 * Defines the EmailAddress3 property. 923 */ 924 public static final IndexedPropertyDefinition EmailAddress3 = 925 new IndexedPropertyDefinition( 926 FieldUris.EmailAddress, "EmailAddress3"); 927 928 /** 929 * Defines the ImAddress1 property. 930 */ 931 public static final IndexedPropertyDefinition ImAddress1 = 932 new IndexedPropertyDefinition( 933 FieldUris.ImAddress, "ImAddress1"); 934 935 /** 936 * Defines the ImAddress2 property. 937 */ 938 public static final IndexedPropertyDefinition ImAddress2 = 939 new IndexedPropertyDefinition( 940 FieldUris.ImAddress, "ImAddress2"); 941 942 /** 943 * Defines the ImAddress3 property. 944 */ 945 public static final IndexedPropertyDefinition ImAddress3 = 946 new IndexedPropertyDefinition( 947 FieldUris.ImAddress, "ImAddress3"); 948 949 /** 950 * Defines the AssistentPhone property. 951 */ 952 public static final IndexedPropertyDefinition AssistantPhone = 953 new IndexedPropertyDefinition( 954 FieldUris.PhoneNumber, "AssistantPhone"); 955 956 /** 957 * Defines the BusinessFax property. 958 */ 959 public static final IndexedPropertyDefinition BusinessFax = 960 new IndexedPropertyDefinition( 961 FieldUris.PhoneNumber, "BusinessFax"); 962 963 /** 964 * Defines the BusinessPhone property. 965 */ 966 public static final IndexedPropertyDefinition BusinessPhone = 967 new IndexedPropertyDefinition( 968 FieldUris.PhoneNumber, "BusinessPhone"); 969 970 /** 971 * Defines the BusinessPhone2 property. 972 */ 973 public static final IndexedPropertyDefinition BusinessPhone2 = 974 new IndexedPropertyDefinition( 975 FieldUris.PhoneNumber, "BusinessPhone2"); 976 977 /** 978 * Defines the Callback property. 979 */ 980 public static final IndexedPropertyDefinition Callback = 981 new IndexedPropertyDefinition( 982 FieldUris.PhoneNumber, "Callback"); 983 984 /** 985 * Defines the CarPhone property. 986 */ 987 public static final IndexedPropertyDefinition CarPhone = 988 new IndexedPropertyDefinition( 989 FieldUris.PhoneNumber, "CarPhone"); 990 991 /** 992 * Defines the CompanyMainPhone property. 993 */ 994 public static final IndexedPropertyDefinition CompanyMainPhone = 995 new IndexedPropertyDefinition( 996 FieldUris.PhoneNumber, "CompanyMainPhone"); 997 998 /** 999 * Defines the HomeFax property. 1000 */ 1001 public static final IndexedPropertyDefinition HomeFax = 1002 new IndexedPropertyDefinition( 1003 FieldUris.PhoneNumber, "HomeFax"); 1004 1005 /** 1006 * Defines the HomePhone property. 1007 */ 1008 public static final IndexedPropertyDefinition HomePhone = 1009 new IndexedPropertyDefinition( 1010 FieldUris.PhoneNumber, "HomePhone"); 1011 1012 /** 1013 * Defines the HomePhone2 property. 1014 */ 1015 public static final IndexedPropertyDefinition HomePhone2 = 1016 new IndexedPropertyDefinition( 1017 FieldUris.PhoneNumber, "HomePhone2"); 1018 1019 /** 1020 * Defines the Isdn property. 1021 */ 1022 public static final IndexedPropertyDefinition Isdn = 1023 new IndexedPropertyDefinition( 1024 FieldUris.PhoneNumber, "Isdn"); 1025 1026 /** 1027 * Defines the MobilePhone property. 1028 */ 1029 public static final IndexedPropertyDefinition MobilePhone = 1030 new IndexedPropertyDefinition( 1031 FieldUris.PhoneNumber, "MobilePhone"); 1032 1033 /** 1034 * Defines the OtherFax property. 1035 */ 1036 public static final IndexedPropertyDefinition OtherFax = 1037 new IndexedPropertyDefinition( 1038 FieldUris.PhoneNumber, "OtherFax"); 1039 1040 /** 1041 * Defines the OtherTelephone property. 1042 */ 1043 public static final IndexedPropertyDefinition OtherTelephone = 1044 new IndexedPropertyDefinition( 1045 FieldUris.PhoneNumber, "OtherTelephone"); 1046 1047 /** 1048 * Defines the Pager property. 1049 */ 1050 public static final IndexedPropertyDefinition Pager = 1051 new IndexedPropertyDefinition( 1052 FieldUris.PhoneNumber, "Pager"); 1053 1054 /** 1055 * Defines the PrimaryPhone property. 1056 */ 1057 public static final IndexedPropertyDefinition PrimaryPhone = 1058 new IndexedPropertyDefinition( 1059 FieldUris.PhoneNumber, "PrimaryPhone"); 1060 1061 /** 1062 * Defines the RadioPhone property. 1063 */ 1064 public static final IndexedPropertyDefinition RadioPhone = 1065 new IndexedPropertyDefinition( 1066 FieldUris.PhoneNumber, "RadioPhone"); 1067 1068 /** 1069 * Defines the Telex property. 1070 */ 1071 public static final IndexedPropertyDefinition Telex = 1072 new IndexedPropertyDefinition( 1073 FieldUris.PhoneNumber, "Telex"); 1074 1075 /** 1076 * Defines the TtyTddPhone property. 1077 */ 1078 public static final IndexedPropertyDefinition TtyTddPhone = 1079 new IndexedPropertyDefinition( 1080 FieldUris.PhoneNumber, "TtyTddPhone"); 1081 1082 /** 1083 * Defines the BusinessAddressStreet property. 1084 */ 1085 public static final IndexedPropertyDefinition BusinessAddressStreet = 1086 new IndexedPropertyDefinition( 1087 FieldUris.PhysicalAddressStreet, "Business"); 1088 1089 /** 1090 * Defines the BusinessAddressCity property. 1091 */ 1092 public static final IndexedPropertyDefinition BusinessAddressCity = 1093 new IndexedPropertyDefinition( 1094 FieldUris.PhysicalAddressCity, "Business"); 1095 1096 /** 1097 * Defines the BusinessAddressState property. 1098 */ 1099 public static final IndexedPropertyDefinition BusinessAddressState = 1100 new IndexedPropertyDefinition( 1101 FieldUris.PhysicalAddressState, "Business"); 1102 1103 /** 1104 * Defines the BusinessAddressCountryOrRegion property. 1105 */ 1106 public static final IndexedPropertyDefinition 1107 BusinessAddressCountryOrRegion = 1108 new IndexedPropertyDefinition( 1109 FieldUris.PhysicalAddressCountryOrRegion, "Business"); 1110 1111 /** 1112 * Defines the BusinessAddressPostalCode property. 1113 */ 1114 public static final IndexedPropertyDefinition BusinessAddressPostalCode = 1115 new IndexedPropertyDefinition( 1116 FieldUris.PhysicalAddressPostalCode, "Business"); 1117 1118 /** 1119 * Defines the HomeAddressStreet property. 1120 */ 1121 public static final IndexedPropertyDefinition HomeAddressStreet = 1122 new IndexedPropertyDefinition( 1123 FieldUris.PhysicalAddressStreet, "Home"); 1124 1125 /** 1126 * Defines the HomeAddressCity property. 1127 */ 1128 public static final IndexedPropertyDefinition HomeAddressCity = 1129 new IndexedPropertyDefinition( 1130 FieldUris.PhysicalAddressCity, "Home"); 1131 1132 /** 1133 * Defines the HomeAddressState property. 1134 */ 1135 public static final IndexedPropertyDefinition HomeAddressState = 1136 new IndexedPropertyDefinition( 1137 FieldUris.PhysicalAddressState, "Home"); 1138 1139 /** 1140 * Defines the HomeAddressCountryOrRegion property. 1141 */ 1142 public static final IndexedPropertyDefinition HomeAddressCountryOrRegion = 1143 new IndexedPropertyDefinition( 1144 FieldUris.PhysicalAddressCountryOrRegion, "Home"); 1145 1146 /** 1147 * Defines the HomeAddressPostalCode property. 1148 */ 1149 public static final IndexedPropertyDefinition HomeAddressPostalCode = 1150 new IndexedPropertyDefinition( 1151 FieldUris.PhysicalAddressPostalCode, "Home"); 1152 1153 /** 1154 * Defines the OtherAddressStreet property. 1155 */ 1156 public static final IndexedPropertyDefinition OtherAddressStreet = 1157 new IndexedPropertyDefinition( 1158 FieldUris.PhysicalAddressStreet, "Other"); 1159 1160 /** 1161 * Defines the OtherAddressCity property. 1162 */ 1163 public static final IndexedPropertyDefinition OtherAddressCity = 1164 new IndexedPropertyDefinition( 1165 FieldUris.PhysicalAddressCity, "Other"); 1166 1167 /** 1168 * Defines the OtherAddressState property. 1169 */ 1170 public static final IndexedPropertyDefinition OtherAddressState = 1171 new IndexedPropertyDefinition( 1172 FieldUris.PhysicalAddressState, "Other"); 1173 1174 /** 1175 * Defines the OtherAddressCountryOrRegion property. 1176 */ 1177 public static final IndexedPropertyDefinition OtherAddressCountryOrRegion = 1178 new IndexedPropertyDefinition( 1179 FieldUris.PhysicalAddressCountryOrRegion, "Other"); 1180 1181 /** 1182 * Defines the OtherAddressPostalCode property. 1183 */ 1184 public static final IndexedPropertyDefinition OtherAddressPostalCode = 1185 new IndexedPropertyDefinition( 1186 FieldUris.PhysicalAddressPostalCode, "Other"); 1187 1188 // This must be declared after the property definitions 1189 /** 1190 * The Constant Instance. 1191 */ 1192 public static final ContactSchema Instance = new ContactSchema(); 1193 1194 /** 1195 * Registers property. 1196 * 1197 * IMPORTANT NOTE: PROPERTIES MUST BE REGISTERED IN SCHEMA ORDER (i.e. the 1198 * same order as they are defined in types.xsd) 1199 */ 1200 @Override 1201 protected void registerProperties() { 1202 super.registerProperties(); 1203 1204 this.registerProperty(FileAs); 1205 this.registerProperty(FileAsMapping); 1206 this.registerProperty(DisplayName); 1207 this.registerProperty(GivenName); 1208 this.registerProperty(Initials); 1209 this.registerProperty(MiddleName); 1210 this.registerProperty(NickName); 1211 this.registerProperty(CompleteName); 1212 this.registerProperty(CompanyName); 1213 this.registerProperty(EmailAddresses); 1214 this.registerProperty(PhysicalAddresses); 1215 this.registerProperty(PhoneNumbers); 1216 this.registerProperty(AssistantName); 1217 this.registerProperty(Birthday); 1218 this.registerProperty(BusinessHomePage); 1219 this.registerProperty(Children); 1220 this.registerProperty(Companies); 1221 this.registerProperty(ContactSource); 1222 this.registerProperty(Department); 1223 this.registerProperty(Generation); 1224 this.registerProperty(ImAddresses); 1225 this.registerProperty(JobTitle); 1226 this.registerProperty(Manager); 1227 this.registerProperty(Mileage); 1228 this.registerProperty(OfficeLocation); 1229 this.registerProperty(PostalAddressIndex); 1230 this.registerProperty(Profession); 1231 this.registerProperty(SpouseName); 1232 this.registerProperty(Surname); 1233 this.registerProperty(WeddingAnniversary); 1234 this.registerProperty(HasPicture); 1235 this.registerProperty(PhoneticFullName); 1236 this.registerProperty(PhoneticFirstName); 1237 this.registerProperty(PhoneticLastName); 1238 this.registerProperty(Alias); 1239 this.registerProperty(Notes); 1240 this.registerProperty(Photo); 1241 this.registerProperty(UserSMIMECertificate); 1242 this.registerProperty(MSExchangeCertificate); 1243 this.registerProperty(DirectoryId); 1244 this.registerProperty(ManagerMailbox); 1245 this.registerProperty(DirectReports); 1246 1247 this.registerIndexedProperty(EmailAddress1); 1248 this.registerIndexedProperty(EmailAddress2); 1249 this.registerIndexedProperty(EmailAddress3); 1250 this.registerIndexedProperty(ImAddress1); 1251 this.registerIndexedProperty(ImAddress2); 1252 this.registerIndexedProperty(ImAddress3); 1253 this.registerIndexedProperty(AssistantPhone); 1254 this.registerIndexedProperty(BusinessFax); 1255 this.registerIndexedProperty(BusinessPhone); 1256 this.registerIndexedProperty(BusinessPhone2); 1257 this.registerIndexedProperty(Callback); 1258 this.registerIndexedProperty(CarPhone); 1259 this.registerIndexedProperty(CompanyMainPhone); 1260 this.registerIndexedProperty(HomeFax); 1261 this.registerIndexedProperty(HomePhone); 1262 this.registerIndexedProperty(HomePhone2); 1263 this.registerIndexedProperty(Isdn); 1264 this.registerIndexedProperty(MobilePhone); 1265 this.registerIndexedProperty(OtherFax); 1266 this.registerIndexedProperty(OtherTelephone); 1267 this.registerIndexedProperty(Pager); 1268 this.registerIndexedProperty(PrimaryPhone); 1269 this.registerIndexedProperty(RadioPhone); 1270 this.registerIndexedProperty(Telex); 1271 this.registerIndexedProperty(TtyTddPhone); 1272 this.registerIndexedProperty(BusinessAddressStreet); 1273 this.registerIndexedProperty(BusinessAddressCity); 1274 this.registerIndexedProperty(BusinessAddressState); 1275 this.registerIndexedProperty(BusinessAddressCountryOrRegion); 1276 this.registerIndexedProperty(BusinessAddressPostalCode); 1277 this.registerIndexedProperty(HomeAddressStreet); 1278 this.registerIndexedProperty(HomeAddressCity); 1279 this.registerIndexedProperty(HomeAddressState); 1280 this.registerIndexedProperty(HomeAddressCountryOrRegion); 1281 this.registerIndexedProperty(HomeAddressPostalCode); 1282 this.registerIndexedProperty(OtherAddressStreet); 1283 this.registerIndexedProperty(OtherAddressCity); 1284 this.registerIndexedProperty(OtherAddressState); 1285 this.registerIndexedProperty(OtherAddressCountryOrRegion); 1286 this.registerIndexedProperty(OtherAddressPostalCode); 1287 1288 } 1289 1290 /** 1291 * Instantiates a new contact schema. 1292 */ 1293 ContactSchema() { 1294 super(); 1295 } 1296}