package org.openslx.imagemaster.db; import org.apache.log4j.Logger; import org.openslx.imagemaster.session.User; public class DbUser extends User { private static Logger log = Logger.getLogger( DbUser.class ); public DbUser(int userId, String username, String password, String organization, String firstName, String lastName, String eMail, String satelliteAddress) { super( userId, username, password, organization, firstName, lastName, eMail, satelliteAddress ); } /** * Query database for user with given login * * @param login * (user@organization) * @return instance of DbUser for matching entry from DB, or null if not * found */ public static DbUser forLogin( final String login ) { final String[] parts = login.split( "@" ); if ( parts.length != 2 ) return null; return MySQL .findUniqueOrNull( DbUser.class, "SELECT user.userid, user.username, user.password, user.organization, user.firstname, user.lastname, user.email, satellite.address FROM user" + " LEFT JOIN satellite USING (organization)" + " WHERE user.username = ? AND user.organization = ? LIMIT 1", parts[0], parts[1] ); } public static boolean insertOrUpdate( User user ) { log.debug( "Inserted user '" + user.username + "' into db." ); MySQL.update( "INSERT INTO user (username, password, organization, firstname, lastname, email) VALUES (?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE password=VALUES(password), organization=VALUES(organization), firstname=VALUES(firstname), lastname=VALUES(lastname), email=VALUES(email)", user.username, user.password, user.organization, user.firstName, user.lastName, user.eMail ); return false; } public static int getUserIdByName( String username ) { DbUser user = MySQL .findUniqueOrNull( DbUser.class, "SELECT user.userid, user.username, user.password, user.organization, user.firstname, user.lastname, user.email, satellite.address FROM user" + " LEFT JOIN satellite USING (organization)" + " WHERE user.username = ? LIMIT 1", username ); if ( user != null ) { return user.userId; } else { return 0; } } }