1 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 ; 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 69 public class CmsUserDriver extends org.opencms.db.generic.CmsUserDriver { 70 71 72 private static final Log LOG = CmsLog.getLog(org.opencms.db.maxdb.CmsUserDriver.class); 73 74 77 public CmsUser createUser( 78 CmsDbContext dbc, 79 String name, 80 String password, 81 String description, 82 String firstname, 83 String lastname, 84 String email, 85 long lastlogin, 86 int flags, 87 Map additionalInfos, 88 String address, 89 int type) throws CmsDataAccessException, CmsPasswordEncryptionException { 90 91 CmsUUID id = new CmsUUID(); 92 PreparedStatement stmt = null; 93 Connection 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 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 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 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 139 public org.opencms.db.generic.CmsSqlManager initSqlManager(String classname) { 140 141 return CmsSqlManager.getInstance(classname); 142 } 143 144 147 public void writeUser(CmsDbContext dbc, CmsUser user) throws CmsDataAccessException { 148 149 PreparedStatement stmt = null; 150 Connection conn = null; 151 152 try { 153 conn = m_sqlManager.getConnection(dbc); 154 stmt = m_sqlManager.getPreparedStatement(conn, "C_USERS_WRITE"); 155 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 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 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 |