KickJava   Java API By Example, From Geeks To Geeks.

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


1 /*
2  * File : $Source: /usr/local/cvs/opencms/src/org/opencms/db/mssql/CmsUserDriver.java,v $
3  * Date : $Date: 2006/03/27 14:52:44 $
4  * Version: $Revision: 1.2 $
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.mssql;
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  * MS SQL implementation of the user driver methods.<p>
58  *
59  * @author Andras Balogh
60  *
61  * @version $Revision: 1.2 $
62  *
63  * @since 6.0.0
64  */

65 public class CmsUserDriver extends org.opencms.db.generic.CmsUserDriver {
66
67     /** The log object for this class. */
68     private static final Log LOG = CmsLog.getLog(org.opencms.db.mssql.CmsUserDriver.class);
69
70     /**
71      * @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)
72      */

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

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

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