public Student getStudent(final String studentId) throws SisException {
        if (isEmpty(studentId)) {
            throw new SisException("ID Cannot be null");
        } else if (studentId.contains(" ") && !settings.allowSpacesInID()) {
            throw new SisException("Spaces in ID numbers are not allowed as configured in the settings file.");
        } else if (!studentId.equals(Student.NOSTUDENT) && settings.idFixedWidth() &&
                (studentId.length() != settings.idFixedWidthLength())) {
            throw new SisException("Invalid Student ID, Fixed width of " + settings.idFixedWidthLength() + " required");
        }
        if(studentId.equals(SchoolStudent.NOSTUDENT)){
            return getAnonymousStudent();
        }
        Student buyer;
        if(isOfficerId(studentId)){
            buyer = officerDAO.loadOfficer(studentId.substring(1));
        } else {
            buyer = studentDao.getStudent(studentId);
        }

        if(buyer == null){
            SchoolStudent schoolStudent = new SchoolStudent();
            schoolStudent.id = String.valueOf(studentId);
            buyer = schoolStudent;
        }
        return buyer;
    }