KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > j2ee > blueprints > signon > SignOnFacade


1 /*
2 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * - Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * - Redistribution in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * Neither the name of Sun Microsystems, Inc. or the names of
17 * contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * This software is provided "AS IS," without a warranty of any
21 * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
22 * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
24 * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
25 * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
26 * DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
27 * OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
28 * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
29 * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
30 * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE,
31 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
32 *
33 * You acknowledge that Software is not designed, licensed or intended
34 * for use in the design, construction, operation or maintenance of
35 * any nuclear facility.
36 */

37
38 package com.sun.j2ee.blueprints.signon;
39
40 import com.sun.j2ee.blueprints.util.dao.DAOFactory;
41 import com.sun.j2ee.blueprints.signon.dao.UserDAO;
42 import com.sun.j2ee.blueprints.signon.dao.JNDINames;
43 import com.sun.j2ee.blueprints.signon.dao.SignOnDAOFinderException;
44 import com.sun.j2ee.blueprints.signon.dao.InvalidPasswordException;
45 import com.sun.j2ee.blueprints.signon.dao.SignOnDAODupKeyException;
46
47
48 public class SignOnFacade {
49
50     //These constants are defined by the application to constrain
51
//the user input fields. They are used to validate user entries
52
//independent of the database
53
public static final int MAX_USERID_LENGTH = 25;
54     public static final int MAX_PASSWD_LENGTH = 25;
55
56     private UserDAO userDAO = null;
57
58     public SignOnFacade() {
59         userDAO = (UserDAO)DAOFactory.getDAO(JNDINames.SIGNON_DAO_CLASS);
60     }
61
62     /**
63      * business method used to check if a user is allowed to sign on
64      * @return true if user name and password match in database
65      */

66     public boolean authenticate(String JavaDoc userName, String JavaDoc password) {
67         boolean valid = false;
68         try {
69             valid = userDAO.matchPassword(userName, password);
70         } catch (SignOnDAOFinderException sfx) {
71             return false;
72         } catch (InvalidPasswordException ix) {
73             return false;
74         }
75         return valid;
76     }
77
78     /** business method to call to create new users **/
79     public void createSignOn(String JavaDoc userName, String JavaDoc password)
80         throws SignOnLongIdException,
81                SignOnInvalidCharException,
82                SignOnDupKeyException {
83
84        //validate user input against application constraints
85
isInputValidLength(userName, password);
86        try {
87            userDAO.createUser(userName, password);
88        } catch (SignOnDAODupKeyException sdke) {
89            throw new SignOnDupKeyException("Duplicate User: " + userName);
90        }
91     }
92
93     /**
94      * Performs user input validation for the application.
95      *
96      * @throws CreateException if user input not within length limits
97     **/

98     private void isInputValidLength(String JavaDoc userName, String JavaDoc password) throws
99                      SignOnLongIdException, SignOnInvalidCharException {
100           // check the input data
101
if(userName.length() > MAX_USERID_LENGTH) {
102             throw new SignOnLongIdException("User ID cant be more than " +
103             MAX_USERID_LENGTH + " chars long");
104         }
105         if(password.length() > MAX_PASSWD_LENGTH) {
106             throw new SignOnLongIdException("Password cant be more than " +
107             MAX_PASSWD_LENGTH + " chars long");
108         }
109         if( (userName.indexOf('%') != -1) ||
110         (userName.indexOf('*') != -1) ) {
111             throw new SignOnInvalidCharException("User Id cannot " +
112             "have '%' or '*' characters");
113         }
114     }
115 }
116
Popular Tags