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;
}
}
}