package com.andreiolar.abms.server;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.andreiolar.abms.client.exception.AptNumberUnavailableException;
import com.andreiolar.abms.client.exception.EmailUnavailableException;
import com.andreiolar.abms.client.rpc.DBRegisterTenant;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class DBRegisterTenantImpl extends RemoteServiceServlet implements DBRegisterTenant {
private static final long serialVersionUID = -4922566502544725777L;
@Override
public void registerTenant(String email, String aptNumber) throws Exception {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
boolean emailExists = false;
boolean aptNumberExists = false;
try {
conn = MyConnection.getConnection();
try {
String q = "select * from email_for_registration where email=?";
stmt = conn.prepareStatement(q);
stmt.setString(1, email);
rs = stmt.executeQuery();
if (rs.next()) {
emailExists = true;
}
} catch (Exception e) {
throw new RuntimeException("Something went wrong: " + e.getMessage(), e);
} finally {
rs.close();
stmt.close();
}
if (!emailExists) {
try {
String q = "select * from user_info where apartment_number=?";
stmt = conn.prepareStatement(q);
stmt.setString(1, aptNumber);
rs = stmt.executeQuery();
if (rs.next()) {
aptNumberExists = true;
}
} catch (Exception e) {
throw new RuntimeException("Something went wrong: " + e.getMessage(), e);
} finally {
rs.close();
stmt.close();
}
try {
String q = "select * from email_for_registration where apartment_number=?";
stmt = conn.prepareStatement(q);
stmt.setString(1, aptNumber);
rs = stmt.executeQuery();
if (rs.next()) {
aptNumberExists = true;
}
} catch (Exception e) {
throw new RuntimeException("Something went wrong: " + e.getMessage(), e);
} finally {
rs.close();
stmt.close();
}
if (!aptNumberExists) {
try {
String q = "insert into email_for_registration(email, apartment_number) values(?,?)";
stmt = conn.prepareStatement(q);
stmt.setString(1, email);
stmt.setString(2, aptNumber);
stmt.executeUpdate();
} catch (Exception e) {
throw new RuntimeException("Something went wrong: " + e.getMessage(), e);
} finally {
stmt.close();
}
}
}
} catch (Exception e) {
throw new RuntimeException("Something went wrong: " + e.getMessage(), e);
} finally {
conn.close();
}
if (emailExists) {
throw new EmailUnavailableException();
}
if (aptNumberExists) {
throw new AptNumberUnavailableException();
}
}
}