package DAOs;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import beans.StatisticsBean;
import datastructures.Fingerprint;
import eu.bitwalker.useragentutils.Browser;
import eu.bitwalker.useragentutils.OperatingSystem;
import eu.bitwalker.useragentutils.UserAgent;
import eu.bitwalker.useragentutils.Version;
public class StatisticsDAO {
public static final void saveStatistics(int sampleID, Fingerprint fingerprint){
Connection conn = null;
try {
conn = Database.getConnection();
conn.setReadOnly(false);
String query = "INSERT INTO `SampleStatistics` (`SampleID`, `BrowserGroup`, `BrowserVersion`, `OSGroup`, `OSName`) VALUES(?, ?, ?, ?, ?);";
PreparedStatement insertStatistics = conn.prepareStatement(query);
insertStatistics.setInt(1, sampleID);
UserAgent ua = new UserAgent(fingerprint.getUser_agent());
insertStatistics.setString(2, ua.getBrowser().getGroup().toString());
Browser browser = ua.getBrowser();
if(browser == null){
insertStatistics.setString(3, "Unknown1");
}
else if(browser.getGroup().equals(Browser.UNKNOWN)){
insertStatistics.setString(3, "Unknown");
}
else{
Version ver = ua.getBrowserVersion();
if(ver == null){
insertStatistics.setString(3, "Unknown2");
}
else{
insertStatistics.setString(3, ua.getBrowserVersion().getMajorVersion());
}
}
OperatingSystem os = ua.getOperatingSystem();
if(os == null){
insertStatistics.setString(4, "Unknown");
insertStatistics.setString(5, "Unknown");
}
else{
insertStatistics.setString(4, os.getGroup().toString());
insertStatistics.setString(5, os.getName());
}
insertStatistics.execute();
} catch (Exception e) {
e.printStackTrace();
} finally {
// Close the connection
// Finally triggers even if we return
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// Ignore
}
}
}
return;
}
public static final StatisticsBean getStatistics(){
StatisticsBean statistics = new StatisticsBean();
Connection conn = null;
try {
conn = Database.getConnection();
statistics.setNumSamples(FingerprintDAO.getSampleCount(conn));
} catch (Exception e) {
e.printStackTrace();
} finally {
// Close the connection
// Finally triggers even if we return
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// Ignore
}
}
}
return statistics;
}
}