edu.uchicago.duo.validator.DeviceExistDuoValidator.java Source code

Java tutorial

Introduction

Here is the source code for edu.uchicago.duo.validator.DeviceExistDuoValidator.java

Source

/**
 * Copyright 2014 University of Chicago
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 *
 * Author: Daniel Yu <danielyu@uchicago.edu>
 */
package edu.uchicago.duo.validator;

import edu.uchicago.duo.domain.DuoPersonObj;
import edu.uchicago.duo.service.DuoObjInterface;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

@Component
public class DeviceExistDuoValidator implements Validator {

    @Autowired
    private DuoObjInterface duoPhoneService;
    @Autowired
    private DuoObjInterface duoTokenService;

    @Override
    public boolean supports(Class clazz) {
        return DuoPersonObj.class.isAssignableFrom(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {
        DuoPersonObj duoPersonObj = (DuoPersonObj) target;
        String userName;
        String tokenId;
        String phoneId = null;

        if (duoPersonObj.getChoosenDevice().matches("mobile|landline")) {
            userName = duoPhoneService.getObjByParam(duoPersonObj.getCompletePhonenumber(),
                    duoPersonObj.getLandLineExtension(), "username");
            if (userName != null && userName.equals(duoPersonObj.getUsername())) {
                errors.rejectValue("phonenumber", "DeviceExistDuoValidator.alreadyReg");
            } else if (userName != null) {
                errors.rejectValue("phonenumber", "DeviceExistDuoValidator.belongSomeoneElse");
            } else {
                phoneId = duoPhoneService.createObjByParam(duoPersonObj.getCompletePhonenumber(), "landline", null,
                        null, duoPersonObj.getLandLineExtension());
                if (StringUtils.hasLength(phoneId)) {
                    duoPhoneService.deleteObj(phoneId, null);
                } else {
                    errors.rejectValue("phonenumber", "DeviceExistDuoValidator.badnumber");
                }
            }
        }

        if (duoPersonObj.getChoosenDevice().matches("token")) {
            userName = duoTokenService.getObjByParam(duoPersonObj.getTokenSerial(), duoPersonObj.getTokenType(),
                    "username");
            tokenId = duoTokenService.getObjByParam(duoPersonObj.getTokenSerial(), duoPersonObj.getTokenType(),
                    "tokenId");

            if (tokenId == null) {
                errors.rejectValue("tokenSerial", "DeviceExistDuoValidator.deviceNotInDB");
            } else if (userName != null && userName.toLowerCase().contains(duoPersonObj.getUsername())) {
                errors.rejectValue("tokenSerial", "DeviceExistDuoValidator.alreadyReg");
            } else if (userName != null) {
                errors.rejectValue("tokenSerial", "DeviceExistDuoValidator.belongSomeoneElse");
            }
        }

    }
}