001    /**
002     * Copyright 2005-2013 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.ldap;
017    
018    import static org.apache.commons.lang.StringUtils.equalsIgnoreCase;
019    import static org.apache.commons.lang.StringUtils.isBlank;
020    import static org.kuali.rice.core.util.BufferedLogger.debug;
021    
022    import org.kuali.rice.kim.api.identity.CodedAttribute;
023    import org.kuali.rice.kim.api.identity.phone.EntityPhone;
024    import org.springframework.ldap.core.DirContextOperations;
025    
026    /**
027     * 
028     * @author Kuali Rice Team (rice.collab@kuali.org)
029     */
030    public class EntityPhoneMapper extends BaseMapper<EntityPhone> {
031    
032            @Override
033        EntityPhone mapDtoFromContext(DirContextOperations context) {
034            return mapDtoFromContext(context, true);
035        }
036        
037        EntityPhone mapDtoFromContext(DirContextOperations context, boolean isdefault) {
038            EntityPhone.Builder builder = mapBuilderFromContext(context, isdefault);
039            return builder != null ? builder.build() : null;
040        }
041    
042        EntityPhone.Builder mapBuilderFromContext(DirContextOperations context) {
043            return mapBuilderFromContext(context, true);
044        }
045    
046        EntityPhone.Builder mapBuilderFromContext(DirContextOperations context, boolean isdefault) {        
047            final EntityPhone.Builder builder = EntityPhone.Builder.create();
048            debug("Looking up attribute from context ", getConstants().getEmployeePhoneLdapProperty());
049            final String pn = context.getStringAttribute(getConstants().getEmployeePhoneLdapProperty());
050            
051            if (isBlank(pn) || equalsIgnoreCase("NA", pn)) {
052                debug("Got nothing. Giving nothing back.");
053                return null;
054            }
055            
056            String phoneNumber = pn;
057            if (pn.length() >= 10) {
058                phoneNumber = pn.substring(0, 3) + "-" + pn.substring(3, 6) + "-" + pn.substring(6);
059            } else if (pn.length() >= 6) {
060                        phoneNumber = pn.substring(0, 3) + "-" + pn.substring(3);
061            }
062            final String countryCode = getConstants().getDefaultCountryCode();
063            
064            builder.setCountryCode(countryCode);
065            builder.setPhoneNumber(phoneNumber);
066            builder.setPhoneType(CodedAttribute.Builder.create("WORK"));
067            builder.setActive(true);
068            builder.setDefaultValue(isdefault);
069    
070            return builder;
071        }
072    
073    }