package com.andreiolar.abms.server;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.andreiolar.abms.client.exception.ConsumptionReportNotFoundException;
import com.andreiolar.abms.client.rpc.DBSearchForConsumptionReport;
import com.andreiolar.abms.shared.SelfReading;
import com.andreiolar.abms.shared.UserDetails;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class DBSearchForConsumptionReportImpl extends RemoteServiceServlet implements DBSearchForConsumptionReport {
private static final long serialVersionUID = 3882952232018953915L;
@Override
public SelfReading searchForConsumptionReport(UserDetails userDetails, String date) throws Exception {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
SelfReading reading = null;
boolean submitted = false;
try {
conn = MyConnection.getConnection();
try {
String q = "select * from self_readings where apartment_number=? and month=?";
stmt = conn.prepareStatement(q);
stmt.setString(1, userDetails.getApartmentNumber());
stmt.setString(2, date);
rs = stmt.executeQuery();
if (rs.next()) {
submitted = true;
String aptNumber = rs.getString("apartment_number");
String coldWater = rs.getString("cold_water");
String hotWater = rs.getString("hot_water");
String electricity = rs.getString("electricity");
String gaz = rs.getString("gaz");
reading = new SelfReading(aptNumber, coldWater, hotWater, electricity, gaz, date);
}
} catch (Exception ex) {
throw new RuntimeException("Something went wrong: " + ex.getMessage(), ex);
} finally {
rs.close();
stmt.close();
}
} catch (Exception ex) {
throw new RuntimeException("Something went wrong: " + ex.getMessage(), ex);
} finally {
conn.close();
}
if (!submitted) {
throw new ConsumptionReportNotFoundException();
}
return reading;
}
}