1 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 ; 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 65 public class CmsUserDriver extends org.opencms.db.generic.CmsUserDriver { 66 67 68 private static final Log LOG = CmsLog.getLog(org.opencms.db.mssql.CmsUserDriver.class); 69 70 73 public CmsUser createUser( 74 CmsDbContext dbc, 75 String name, 76 String password, 77 String description, 78 String firstname, 79 String lastname, 80 String email, 81 long lastlogin, 82 int flags, 83 Map additionalInfos, 84 String address, 85 int type) throws CmsDataAccessException, CmsPasswordEncryptionException { 86 87 CmsUUID id = new CmsUUID(); 88 PreparedStatement stmt = null; 89 Connection 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 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 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 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 135 public org.opencms.db.generic.CmsSqlManager initSqlManager(String classname) { 136 137 return CmsSqlManager.getInstance(classname); 138 } 139 140 143 public void writeUser(CmsDbContext dbc, CmsUser user) throws CmsDataAccessException { 144 145 PreparedStatement stmt = null; 146 Connection conn = null; 147 148 try { 149 conn = m_sqlManager.getConnection(dbc); 150 stmt = m_sqlManager.getPreparedStatement(conn, "C_USERS_WRITE"); 151 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 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 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 |