/** * */ package preprocessing; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import outputter.ApplicationUtilities; /** * @author Hong Cui * * Add character and state ids to Wasila's goldstandard * so it can be used to evaluate machine output */ public class AddIds2PatternsGoldstandard { String goldtablename; String machinetablename; Connection conn; /** * */ public AddIds2PatternsGoldstandard(String goldtablename, String machinetablename) { this.goldtablename = goldtablename; this.machinetablename = machinetablename; try{ if(conn == null){ Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(ApplicationUtilities.getProperty("database.url")); } }catch(Exception e){ e.printStackTrace(); } } public void fillInIDs(){ try{ Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select characterlabel, statelabel from "+this.goldtablename); int count = 0; while(rs.next()){ String[] ids = getIds(rs.getString("characterlabel"), rs.getString("statelabel"));//0: charaid, 1:stateid if(ids[0]!=null && ids[1]!=null && ids[0].length()>0 && ids[1].length()>0){ //System.out.println("found ids for record #"+ count); Statement update = conn.createStatement(); update.execute("update "+this.goldtablename+" set characterid='"+ids[0]+"', stateid='"+ids[1]+"'" + " where characterlabel='"+rs.getString("characterlabel")+"' and statelabel='"+rs.getString("statelabel")+"'"); }else{ System.out.println("not found ids for record #"+ count + " "+ rs.getString("characterlabel") +"]["+ rs.getString("statelabel")); } count++; } }catch(Exception e){ e.printStackTrace(); } } private String[] getIds(String characterlabel, String statelabel) { characterlabel = characterlabel.replaceAll("&", "and"); statelabel = statelabel.replaceAll("&", "and"); String[] ids = new String[2]; try{ Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select characterid, stateid, characterlabel, statelabel from "+this.machinetablename); while(rs.next()){ String clabel = rs.getString("characterlabel"); String slabel = rs.getString("statelabel"); //System.out.println("clabel:"+clabel); //System.out.println("slabel:"+slabel); if(clabel.replaceAll("\\W", "").trim().compareToIgnoreCase(characterlabel.replaceAll("\\W", "").trim())==0 && slabel.replaceAll("\\W", "").trim().compareToIgnoreCase(statelabel.replaceAll("\\W", "").trim())==0){ ids[0] = rs.getString("characterid"); ids[1] = rs.getString("stateid"); break; } } }catch(Exception e){ e.printStackTrace(); } return ids; } /** * @param args */ public static void main(String[] args) { String gold = "goldstandard"; String machine = "pattern_xml2eq"; AddIds2PatternsGoldstandard apg = new AddIds2PatternsGoldstandard(gold, machine); apg.fillInIDs(); } }