KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > opencms > db > mysql > CmsUserDriver


1 /*
2  * File : $Source: /usr/local/cvs/opencms/src/org/opencms/db/mysql/CmsUserDriver.java,v $
3  * Date : $Date: 2005/06/28 08:05:43 $
4  * Version: $Revision: 1.33 $
5  *
6  * This library is part of OpenCms -
7  * the Open Source Content Mananagement System
8  *
9  * Copyright (c) 2005 Alkacon Software GmbH (http://www.alkacon.com)
10  *
11  * This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Lesser General Public
13  * License as published by the Free Software Foundation; either
14  * version 2.1 of the License, or (at your option) any later version.
15  *
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19  * Lesser General Public License for more details.
20  *
21  * For further information about Alkacon Software GmbH, please see the
22  * company website: http://www.alkacon.com
23  *
24  * For further information about OpenCms, please see the
25  * project website: http://www.opencms.org
26  *
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30  */

31
32 package org.opencms.db.mysql;
33
34 import org.opencms.db.CmsDbContext;
35 import org.opencms.db.CmsDbEntryAlreadyExistsException;
36 import org.opencms.db.CmsDbIoException;
37 import org.opencms.db.CmsDbSqlException;
38 import org.opencms.db.generic.CmsSqlManager;
39 import org.opencms.db.generic.Messages;
40 import org.opencms.file.CmsDataAccessException;
41 import org.opencms.file.CmsUser;
42 import org.opencms.i18n.CmsMessageContainer;
43 import org.opencms.main.CmsLog;
44 import org.opencms.main.OpenCms;
45 import org.opencms.security.CmsPasswordEncryptionException;
46 import org.opencms.util.CmsUUID;
47
48 import java.io.IOException JavaDoc;
49 import java.sql.Connection JavaDoc;
50 import java.sql.PreparedStatement JavaDoc;
51 import java.sql.SQLException JavaDoc;
52 import java.util.Map JavaDoc;
53
54 import org.apache.commons.logging.Log;
55
56 /**
57  * MySQL implementation of the user driver methods.<p>
58  *
59  * @author Thomas Weckert
60  * @author Carsten Weinholz
61  * @author Michael Emmerich
62  *
63  * @version $Revision: 1.33 $
64  *
65  * @since 6.0.0
66  */

67 public class CmsUserDriver extends org.opencms.db.generic.CmsUserDriver {
68
69     /** The log object for this class. */
70     private static final Log LOG = CmsLog.getLog(org.opencms.db.mysql.CmsUserDriver.class);
71
72     /**
73      * @see org.opencms.db.I_CmsUserDriver#createUser(org.opencms.db.CmsDbContext, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, long, int, java.util.Map, java.lang.String, int)
74      */

75     public CmsUser createUser(
76         CmsDbContext dbc,
77         String JavaDoc name,
78         String JavaDoc password,
79         String JavaDoc description,
80         String JavaDoc firstname,
81         String JavaDoc lastname,
82         String JavaDoc email,
83         long lastlogin,
84         int flags,
85         Map JavaDoc additionalInfos,
86         String JavaDoc address,
87         int type) throws CmsDataAccessException, CmsPasswordEncryptionException {
88
89         CmsUUID id = new CmsUUID();
90         PreparedStatement JavaDoc stmt = null;
91         Connection JavaDoc conn = null;
92
93         if (existsUser(dbc, name, type, null)) {
94             CmsMessageContainer message = Messages.get().container(Messages.ERR_USER_WITH_NAME_ALREADY_EXISTS_1, name);
95             if (LOG.isErrorEnabled()) {
96                 LOG.error(message.key());
97             }
98             throw new CmsDbEntryAlreadyExistsException(message);
99         }
100
101         try {
102             // user data is project independent- use a "dummy" project ID to receive
103
// a JDBC connection from the offline connection pool
104
conn = m_sqlManager.getConnection(dbc);
105             stmt = m_sqlManager.getPreparedStatement(conn, "C_USERS_ADD");
106
107             stmt.setString(1, id.toString());
108             stmt.setString(2, name);
109             stmt.setString(3, OpenCms.getPasswordHandler().digest(password));
110             stmt.setString(4, description);
111             stmt.setString(5, firstname);
112             stmt.setString(6, lastname);
113             stmt.setString(7, email);
114             stmt.setLong(8, lastlogin);
115             stmt.setInt(9, flags);
116             stmt.setBytes(10, internalSerializeAdditionalUserInfo(additionalInfos));
117             stmt.setString(11, address);
118             stmt.setInt(12, type);
119
120             stmt.executeUpdate();
121         } catch (SQLException JavaDoc e) {
122             throw new CmsDbSqlException(org.opencms.db.generic.Messages.get().container(
123                 org.opencms.db.generic.Messages.ERR_GENERIC_SQL_1,
124                 CmsDbSqlException.getErrorQuery(stmt)), e);
125         } catch (IOException JavaDoc e) {
126             throw new CmsDbIoException(Messages.get().container(Messages.ERR_SERIALIZING_USER_DATA_1, name), e);
127         } finally {
128             m_sqlManager.closeAll(dbc, conn, stmt, null);
129         }
130
131         return readUser(dbc, id);
132     }
133
134     /**
135      * @see org.opencms.db.I_CmsUserDriver#initSqlManager(String)
136      */

137     public org.opencms.db.generic.CmsSqlManager initSqlManager(String JavaDoc classname) {
138
139         return CmsSqlManager.getInstance(classname);
140     }
141
142     /**
143      * @see org.opencms.db.I_CmsUserDriver#writeUser(org.opencms.db.CmsDbContext, org.opencms.file.CmsUser)
144      */

145     public void writeUser(CmsDbContext dbc, CmsUser user) throws CmsDataAccessException {
146
147         PreparedStatement JavaDoc stmt = null;
148         Connection JavaDoc conn = null;
149
150         try {
151             conn = m_sqlManager.getConnection(dbc);
152             stmt = m_sqlManager.getPreparedStatement(conn, "C_USERS_WRITE");
153             // write data to database
154
stmt.setString(1, user.getDescription());
155             stmt.setString(2, user.getFirstname());
156             stmt.setString(3, user.getLastname());
157             stmt.setString(4, user.getEmail());
158             stmt.setLong(5, user.getLastlogin());
159             stmt.setInt(6, user.getFlags());
160             stmt.setBytes(7, internalSerializeAdditionalUserInfo(user.getAdditionalInfo()));
161             stmt.setString(8, user.getAddress());
162             stmt.setInt(9, user.getType());
163             stmt.setString(10, user.getId().toString());
164             stmt.executeUpdate();
165         } catch (SQLException JavaDoc e) {
166             throw new CmsDbSqlException(org.opencms.db.generic.Messages.get().container(
167                 org.opencms.db.generic.Messages.ERR_GENERIC_SQL_1,
168                 CmsDbSqlException.getErrorQuery(stmt)), e);
169         } catch (IOException JavaDoc e) {
170             throw new CmsDbIoException(
171                 Messages.get().container(Messages.ERR_SERIALIZING_USER_DATA_1, user.getName()),
172                 e);
173         } finally {
174             m_sqlManager.closeAll(dbc, conn, stmt, null);
175         }
176     }
177 }
178
Popular Tags