001    /*
002     * Copyright 2007-2008 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     */
016    package org.kuali.rice.kim.bo.ui;
017    
018    import org.apache.commons.lang.StringUtils;
019    import org.hibernate.annotations.GenericGenerator;
020    import org.hibernate.annotations.Parameter;
021    import org.kuali.rice.kim.api.identity.TypeContract;
022    import org.kuali.rice.kim.impl.identity.phone.EntityPhoneTypeBo;
023    
024    import javax.persistence.Column;
025    import javax.persistence.Entity;
026    import javax.persistence.FetchType;
027    import javax.persistence.GeneratedValue;
028    import javax.persistence.Id;
029    import javax.persistence.IdClass;
030    import javax.persistence.JoinColumn;
031    import javax.persistence.ManyToOne;
032    import javax.persistence.Table;
033    
034    /**
035     * This is a description of what this class does - shyu don't forget to fill this in. 
036     * 
037     * @author Kuali Rice Team (rice.collab@kuali.org)
038     *
039     */
040    @IdClass(PersonDocumentPhoneId.class)
041    @Entity
042    @Table(name = "KRIM_PND_PHONE_MT")
043    public class PersonDocumentPhone extends PersonDocumentBoDefaultBase {
044            @Id
045            @GeneratedValue(generator="KRIM_ENTITY_PHONE_ID_S")
046            @GenericGenerator(name="KRIM_ENTITY_PHONE_ID_S",strategy="org.kuali.rice.core.jpa.spring.RiceNumericStringSequenceStyleGenerator",parameters={
047                            @Parameter(name="sequence_name",value="KRIM_ENTITY_PHONE_ID_S"),
048                            @Parameter(name="value_column",value="id")
049                    })
050            @Column(name = "ENTITY_PHONE_ID")
051            protected String entityPhoneId;
052                    
053            @Column(name = "ENT_TYP_CD")
054            protected String entityTypeCode;
055            
056            @Column(name = "PHONE_TYP_CD")
057            protected String phoneTypeCode;
058            
059            @Column(name = "PHONE_NBR")
060            protected String phoneNumber;
061            
062            @Column(name = "PHONE_EXTN_NBR")
063            protected String extensionNumber;
064            
065            @Column(name = "POSTAL_CNTRY_CD")
066            protected String countryCode;
067            
068            @ManyToOne(targetEntity=EntityPhoneTypeBo.class, fetch = FetchType.EAGER, cascade = {})
069            @JoinColumn(name = "PHONE_TYP_CD", insertable = false, updatable = false)
070            protected TypeContract phoneType;
071    
072            // Waiting until we pull in from KFS
073            // protected Country country;
074            public PersonDocumentPhone() {
075                    this.active = true;
076            }
077            
078            /**
079             * @see org.kuali.rice.kim.bo.entity.KimEntityPhone#getCountryCode()
080             */
081            public String getCountryCode() {
082                    return countryCode;
083            }
084    
085            /**
086             * @see org.kuali.rice.kim.bo.entity.KimEntityPhone#getEntityPhoneId()
087             */
088            public String getEntityPhoneId() {
089                    return entityPhoneId;
090            }
091    
092            /**
093             * @see org.kuali.rice.kim.bo.entity.KimEntityPhone#getExtensionNumber()
094             */
095            public String getExtensionNumber() {
096                    return extensionNumber;
097            }
098    
099            /**
100             * @see org.kuali.rice.kim.bo.entity.KimEntityPhone#getPhoneNumber()
101             */
102            public String getPhoneNumber() {
103                    return phoneNumber;
104            }
105    
106            /**
107             * @see org.kuali.rice.kim.bo.entity.KimEntityPhone#getPhoneTypeCode()
108             */
109            public String getPhoneTypeCode() {
110                    return phoneTypeCode;
111            }
112    
113            /**
114             * @see org.kuali.rice.kim.bo.entity.KimEntityPhone#setCountryCode(java.lang.String)
115             */
116            public void setCountryCode(String countryCode) {
117                    this.countryCode = countryCode;
118            }
119    
120            /**
121             * @see org.kuali.rice.kim.bo.entity.KimEntityPhone#setExtensionNumber(java.lang.String)
122             */
123            public void setExtensionNumber(String extensionNumber) {
124                    this.extensionNumber = extensionNumber;
125            }
126    
127            /**
128             * @see org.kuali.rice.kim.bo.entity.KimEntityPhone#setPhoneNumber(java.lang.String)
129             */
130            public void setPhoneNumber(String phoneNumber) {
131                    this.phoneNumber = phoneNumber;
132            }
133    
134            /**
135             * @see org.kuali.rice.kim.bo.entity.KimEntityPhone#setPhoneTypeCode(java.lang.String)
136             */
137            public void setPhoneTypeCode(String phoneTypeCode) {
138                    this.phoneTypeCode = phoneTypeCode;
139            }
140    
141            /**
142             * @see org.kuali.rice.kim.bo.entity.KimDefaultableEntityTypeData#getEntityTypeCode()
143             */
144            public String getEntityTypeCode() {
145                    return entityTypeCode;
146            }
147    
148            /**
149             * @see org.kuali.rice.kim.bo.entity.KimDefaultableEntityTypeData#setEntityTypeCode(java.lang.String)
150             */
151            public void setEntityTypeCode(String entityTypeCode) {
152                    this.entityTypeCode = entityTypeCode;
153            }
154    
155            public TypeContract getPhoneType() {
156                    return this.phoneType;
157            }
158    
159            public void setPhoneType(TypeContract phoneType) {
160                    this.phoneType = phoneType;
161            }
162    
163            public void setEntityPhoneId(String entityPhoneId) {
164                    this.entityPhoneId = entityPhoneId;
165            }
166    
167            public String getFormattedPhoneNumber() {
168                    StringBuffer sb = new StringBuffer( 30 );
169                    
170                    // TODO: get extension from country code table
171                    // TODO: append "+xxx" if country is not the default country
172                    sb.append( getPhoneNumber() );
173                    if ( StringUtils.isNotBlank( getExtensionNumber() ) ) {
174                            sb.append( " x" );
175                            sb.append( getExtensionNumber() );
176                    }
177                    
178                    return sb.toString();
179            }
180    
181    }