package com.andreiolar.abms.server;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Random;
import com.andreiolar.abms.client.rpc.DBForgotPassword;
import com.andreiolar.abms.mail.MailSender;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class DBForgotPasswordImpl extends RemoteServiceServlet implements DBForgotPassword {
private static final long serialVersionUID = 681017190615010623L;
@Override
public Boolean sendMailToServer(String email) throws SQLException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
boolean isValidEmail = false;
int executed = 0;
try {
conn = MyConnection.getConnection();
try {
String q = "select email from user_info where email=?";
stmt = conn.prepareStatement(q);
stmt.setString(1, email);
rs = stmt.executeQuery();
if (rs.next()) {
isValidEmail = true;
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
rs.close();
stmt.close();
}
if (isValidEmail) {
try {
String q = "INSERT INTO password_recovery(email, token) VALUES (?, ?) ON DUPLICATE KEY UPDATE token = VALUES(token)";
stmt = conn.prepareStatement(q);
stmt.setString(1, email);
Random random = new Random();
int token = random.nextInt(999999 - 1 + 1) + 1;
stmt.setString(2, String.valueOf(token));
executed = stmt.executeUpdate();
if (executed > 0) {
String subject = "Password Recovery";
String to = email;
String message = "<p>"
+ "You have successuflly requested a new password reset. In order to reset your password please use the token below."
+ "</p>" + "<p>Token: <b>" + token + "</b></p>" + "<br />" + "Thank you,<br />" + "Administration";
MailSender.sendMail(subject, to, message, null);
}
} catch (SQLException sqle) {
sqle.printStackTrace();
} finally {
stmt.close();
}
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
conn.close();
}
return true;
}
}