001/** 002 * Copyright 2005-2017 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.kuali.rice.kim.api.identity.type; 017 018import org.kuali.rice.core.api.CoreConstants; 019import org.kuali.rice.core.api.mo.AbstractDataTransferObject; 020import org.kuali.rice.core.api.mo.ModelBuilder; 021import org.kuali.rice.kim.api.identity.address.EntityAddress; 022import org.kuali.rice.kim.api.identity.email.EntityEmail; 023import org.kuali.rice.kim.api.identity.phone.EntityPhone; 024import org.w3c.dom.Element; 025 026import javax.xml.bind.annotation.XmlAccessType; 027import javax.xml.bind.annotation.XmlAccessorType; 028import javax.xml.bind.annotation.XmlAnyElement; 029import javax.xml.bind.annotation.XmlElement; 030import javax.xml.bind.annotation.XmlRootElement; 031import javax.xml.bind.annotation.XmlType; 032import java.io.Serializable; 033import java.util.Collection; 034 035@XmlRootElement(name = EntityTypeContactInfoDefault.Constants.ROOT_ELEMENT_NAME) 036@XmlAccessorType(XmlAccessType.NONE) 037@XmlType(name = EntityTypeContactInfoDefault.Constants.TYPE_NAME, propOrder = { 038 EntityTypeContactInfoDefault.Elements.ENTITY_TYPE_CODE, 039 EntityTypeContactInfoDefault.Elements.DEFAULT_ADDRESS, 040 EntityTypeContactInfoDefault.Elements.DEFAULT_EMAIL_ADDRESS, 041 EntityTypeContactInfoDefault.Elements.DEFAULT_PHONE_NUMBER, 042 CoreConstants.CommonElements.FUTURE_ELEMENTS 043}) 044public final class EntityTypeContactInfoDefault extends AbstractDataTransferObject 045{ 046 @XmlElement(name = Elements.ENTITY_TYPE_CODE, required = true) 047 private final String entityTypeCode; 048 @XmlElement(name = Elements.DEFAULT_ADDRESS, required = false) 049 private final EntityAddress defaultAddress; 050 @XmlElement(name = Elements.DEFAULT_EMAIL_ADDRESS, required = false) 051 private final EntityEmail defaultEmailAddress; 052 @XmlElement(name = Elements.DEFAULT_PHONE_NUMBER, required = false) 053 private final EntityPhone defaultPhoneNumber; 054 @SuppressWarnings("unused") 055 @XmlAnyElement 056 private final Collection<Element> _futureElements = null; 057 058 /** 059 * Private constructor used only by JAXB. 060 */ 061 private EntityTypeContactInfoDefault() { 062 this.entityTypeCode = null; 063 this.defaultAddress = null; 064 this.defaultEmailAddress = null; 065 this.defaultPhoneNumber = null; 066 067 } 068 069 public EntityTypeContactInfoDefault(String entityTypeCode, EntityAddress defaultAddress, 070 EntityEmail defaultEmailAddress, EntityPhone defaultPhoneNumber) { 071 this.entityTypeCode = entityTypeCode; 072 this.defaultAddress = defaultAddress; 073 this.defaultEmailAddress = defaultEmailAddress; 074 this.defaultPhoneNumber = defaultPhoneNumber; 075 } 076 077 public EntityTypeContactInfoDefault(Builder builder) { 078 this.entityTypeCode = builder.getEntityTypeCode(); 079 this.defaultAddress = builder.getDefaultAddress() == null ? null : builder.getDefaultAddress().build(); 080 this.defaultEmailAddress = builder.getDefaultEmailAddress() == null ? null : builder.getDefaultEmailAddress().build(); 081 this.defaultPhoneNumber = builder.getDefaultPhoneNumber() == null ? null : builder.getDefaultPhoneNumber().build(); 082 083 } 084 085 public String getEntityTypeCode() { 086 return this.entityTypeCode; 087 } 088 public EntityAddress getDefaultAddress() { 089 return this.defaultAddress; 090 } 091 092 public EntityEmail getDefaultEmailAddress() { 093 return this.defaultEmailAddress; 094 } 095 096 public EntityPhone getDefaultPhoneNumber() { 097 return this.defaultPhoneNumber; 098 } 099 100 public final static class Builder 101 implements Serializable, ModelBuilder 102 { 103 private String entityTypeCode; 104 private EntityAddress.Builder defaultAddress; 105 private EntityEmail.Builder defaultEmailAddress; 106 private EntityPhone.Builder defaultPhoneNumber; 107 108 private Builder() { } 109 110 public static Builder create() { 111 return new Builder(); 112 } 113 114 public static Builder create(EntityTypeContactInfoDefault immutable) { 115 if (immutable == null) { 116 throw new IllegalArgumentException("EntityTypeDataDefault is null"); 117 } 118 Builder builder = new Builder(); 119 builder.setEntityTypeCode(immutable.entityTypeCode); 120 if (immutable.getDefaultAddress() != null) { 121 builder.setDefaultAddress(EntityAddress.Builder.create(immutable.getDefaultAddress())); 122 } 123 if (immutable.getDefaultEmailAddress() != null) { 124 builder.setDefaultEmailAddress(EntityEmail.Builder.create(immutable.getDefaultEmailAddress())); 125 } 126 if (immutable.getDefaultPhoneNumber() != null) { 127 builder.setDefaultPhoneNumber(EntityPhone.Builder.create(immutable.getDefaultPhoneNumber())); 128 } 129 return builder; 130 } 131 132 public static Builder create(EntityTypeContactInfoContract contract) { 133 if (contract == null) { 134 throw new IllegalArgumentException("contract is null"); 135 } 136 Builder builder = new Builder(); 137 builder.setEntityTypeCode(contract.getEntityTypeCode()); 138 if (contract.getDefaultAddress() != null) { 139 builder.setDefaultAddress(EntityAddress.Builder.create(contract.getDefaultAddress())); 140 } 141 if (contract.getDefaultEmailAddress() != null) { 142 builder.setDefaultEmailAddress(EntityEmail.Builder.create(contract.getDefaultEmailAddress())); 143 } 144 if (contract.getDefaultPhoneNumber() != null) { 145 builder.setDefaultPhoneNumber(EntityPhone.Builder.create(contract.getDefaultPhoneNumber())); 146 } 147 return builder; 148 } 149 150 public EntityTypeContactInfoDefault build() { 151 return new EntityTypeContactInfoDefault(this); 152 } 153 154 public String getEntityTypeCode() { 155 return entityTypeCode; 156 } 157 158 public void setEntityTypeCode(String entityTypeCode) { 159 this.entityTypeCode = entityTypeCode; 160 } 161 162 public EntityAddress.Builder getDefaultAddress() { 163 return defaultAddress; 164 } 165 166 public void setDefaultAddress(EntityAddress.Builder defaultAddress) { 167 this.defaultAddress = defaultAddress; 168 } 169 170 public EntityEmail.Builder getDefaultEmailAddress() { 171 return defaultEmailAddress; 172 } 173 174 public void setDefaultEmailAddress(EntityEmail.Builder defaultEmailAddress) { 175 this.defaultEmailAddress = defaultEmailAddress; 176 } 177 178 public EntityPhone.Builder getDefaultPhoneNumber() { 179 return defaultPhoneNumber; 180 } 181 182 public void setDefaultPhoneNumber(EntityPhone.Builder defaultPhoneNumber) { 183 this.defaultPhoneNumber = defaultPhoneNumber; 184 } 185 } 186 187 188 189 /** 190 * Defines some internal constants used on this class. 191 * 192 */ 193 static class Constants { 194 195 final static String ROOT_ELEMENT_NAME = "entityTypeDataDefault"; 196 final static String TYPE_NAME = "EntityTypeDataDefaultType"; 197 } 198 199 200 /** 201 * A private class which exposes constants which define the XML element names to use when this object is marshalled to XML. 202 * 203 */ 204 static class Elements { 205 final static String ENTITY_TYPE_CODE = "entityTypeCode"; 206 final static String DEFAULT_ADDRESS = "defaultAddress"; 207 final static String DEFAULT_EMAIL_ADDRESS = "defaultEmailAddress"; 208 final static String DEFAULT_PHONE_NUMBER = "defaultPhoneNumber"; 209 210 } 211 212}