import java.sql.*; import java.io.*; import java.util.*; public class sampleRelation { private static Connection conn; public static void main(String[] args) { try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Properties props = new Properties(); TreeSet sam = getSampleSizes(); props.put("user", ""); props.put("password", ""); conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://:1433;databasename=" + args[0], props); createSample(1); //Create R1Sample createSample(2); //Create R2Sample for (Iterator it = sam.iterator(); it.hasNext();) { int S = ((Integer) it.next()).intValue(); performSampleJoin(1, S); performSampleJoin(2, S); } } catch (SQLException e) { System.err.println("SQLException: " + e.getMessage()); } catch (java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); } catch (Exception e) { e.printStackTrace(); } } private static TreeSet getSampleSizes() { TreeSet sam = new TreeSet(); sam.add(new Integer(1)); sam.add(new Integer(2)); sam.add(new Integer(4)); sam.add(new Integer(8)); sam.add(new Integer(16)); sam.add(new Integer(32)); sam.add(new Integer(64)); sam.add(new Integer(128)); sam.add(new Integer(256)); return sam; } private static void createSample(int i) { try { Statement stmtSelect = conn.createStatement(); Statement stmtInsert = conn.createStatement(); String queryR = "SELECT rw.tid AS tid, rw.token AS token, rw.weight/rs.total AS P " + "FROM R" + i + "Weights rw, R" + i + "Sum rs " + "WHERE rw.token = rs.token"; ResultSet rs = stmtSelect.executeQuery(queryR); while (rs.next()) { int tid = rs.getInt("tid"); String token = rs.getString("token"); float P = rs.getFloat("P"); // Run the S Bernoulli trials TreeSet sam = getSampleSizes(); for (Iterator it = sam.iterator(); it.hasNext();) { int S = ((Integer) it.next()).intValue(); Random r = new Random(); int cnt = 0; for (int b = 0; b < S; b++) { if (P > r.nextFloat()) { cnt++; } } if (cnt > 0) { String insertR = "INSERT INTO R" + i + "Sample " + "VALUES(" + tid + "," + "'" + token + "'," + cnt + "," + S + ")"; stmtInsert.executeUpdate(insertR); } } } } catch (Exception e) { e.printStackTrace(); } } }