KickJava   Java API By Example, From Geeks To Geeks.

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


1 /*
2  * File : $Source: /usr/local/cvs/opencms/src/org/opencms/db/maxdb/CmsUserDriver.java,v $
3  * Date : $Date: 2005/09/11 13:27:06 $
4  * Version: $Revision: 1.1 $
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.maxdb;
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  * MaxDB/SapDB implementation of the user driver methods.<p>
58  *
59  * @author Thomas Weckert
60  * @author Carsten Weinholz
61  * @author Michael Emmerich
62  * @author Clovis Wichoski
63  * @author Fabiano Rech
64  *
65  * @version $Revision: 1.1 $
66  *
67  * @since 6.0.0
68  */

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

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

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

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