package com.pugh.sockso.commands;
import com.pugh.sockso.Validater;
import com.pugh.sockso.ValidationException;
import com.pugh.sockso.db.Database;
import com.pugh.sockso.resources.Locale;
import com.pugh.sockso.web.User;
import java.sql.SQLException;
public class UserAdd extends BaseCommand {
private final Database db;
private final Locale locale;
public UserAdd( final Database db, final Locale locale ) {
this.db = db;
this.locale = locale;
}
public String getName() {
return "useradd";
}
public String getDescription() {
return "Adds a new user";
}
/**
* Tries to add a new user
*
* @param args
*
* @return
*
* @throws SQLException
*
*/
public String execute( final String[] args ) throws SQLException {
try {
final Validater v = new Validater( db );
final String name = args[ 1 ];
final String pass = args[ 2 ];
final String email = args[ 3 ];
final String isAdmin = args[ 4 ];
if ( v.usernameExists(name) ) {
throw new ValidationException( locale.getString("con.err.usernameExists") );
}
if ( v.emailExists(email) ) {
throw new ValidationException( locale.getString("con.err.emailExists") );
}
final User newUser = new User(
name,
pass,
email,
isAdmin.equals("1") ? true : false
);
newUser.save( db );
return newUser.getId() != -1
? locale.getString( "con.msg.userCreated")
: locale.getString( "con.err.errorCreatingUser");
}
catch ( final ValidationException e ) {
return e.getMessage();
}
}
@Override
public int getNumArgs() {
return 4;
}
@Override
public String[] getArguments() {
return new String[] { "NAME", "PASS", "EMAIL", "ISADMIN 1/0" };
}
}