1 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 ; 49 import java.sql.Connection ; 50 import java.sql.PreparedStatement ; 51 import java.sql.SQLException ; 52 import java.util.Map ; 53 54 import org.apache.commons.logging.Log; 55 56 67 public class CmsUserDriver extends org.opencms.db.generic.CmsUserDriver { 68 69 70 private static final Log LOG = CmsLog.getLog(org.opencms.db.mysql.CmsUserDriver.class); 71 72 75 public CmsUser createUser( 76 CmsDbContext dbc, 77 String name, 78 String password, 79 String description, 80 String firstname, 81 String lastname, 82 String email, 83 long lastlogin, 84 int flags, 85 Map additionalInfos, 86 String address, 87 int type) throws CmsDataAccessException, CmsPasswordEncryptionException { 88 89 CmsUUID id = new CmsUUID(); 90 PreparedStatement stmt = null; 91 Connection 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 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 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 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 137 public org.opencms.db.generic.CmsSqlManager initSqlManager(String classname) { 138 139 return CmsSqlManager.getInstance(classname); 140 } 141 142 145 public void writeUser(CmsDbContext dbc, CmsUser user) throws CmsDataAccessException { 146 147 PreparedStatement stmt = null; 148 Connection conn = null; 149 150 try { 151 conn = m_sqlManager.getConnection(dbc); 152 stmt = m_sqlManager.getPreparedStatement(conn, "C_USERS_WRITE"); 153 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 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 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 |