private String addNewInteraction(String fingerprint, BiologicalInteraction interaction) throws SQLException { String sql = String.format( "INSERT IGNORE INTO interaction (fingerprint) VALUES (%s)", SqlUtil.toSqlVarchar(fingerprint)); if (1 != DBUtil.update(sql)) { System.out.println("SQL update failed? " + sql); } String interaction_id = DBUtil.querySingle("SELECT LAST_INSERT_ID()"); Iterator<BiologicalEntity> iter = interaction.getEntityIterator(); StringBuffer sb = new StringBuffer( "INSERT IGNORE INTO interaction_pool (interaction_id, gene_id, entity_src_table, role) VALUES "); while (iter.hasNext()) { BiologicalEntity entity = iter.next(); sb.append("(") .append(interaction_id) .append(", ") .append(SqlUtil.toSqlVarchar(entity.getId())) .append(", '") .append(srcTableLookup.get(entity.getId_src())) .append("', '") .append(entity.getRole()) .append("')"); if (iter.hasNext()) sb.append(", "); } if (DBUtil.update(sb.toString()) != interaction.getEnvolvedEntityCount()) { System.out.println("SQL update failed? " + sb); } return interaction_id; }
public void flush() throws SQLException { InteractionFingerprinter fingerprinter = new InteractionFingerprinter(); for (BiologicalInteraction interaction : interactions) { String fingerprint = fingerprinter.getFingerprint(interaction); String sql = String.format( "SELECT interaction_id FROM interaction WHERE fingerprint=%s", SqlUtil.toSqlVarchar(fingerprint)); String id = DBUtil.querySingle(sql); if (id == null) { id = addNewInteraction(fingerprint, interaction); } interaction.setInteractionId(Integer.valueOf(id)); } System.out.println("Evidences count: " + evidences.size()); for (Evidence evidence : evidences) { String sql = "INSERT INTO evidence SET " + "interaction_id=" + evidence.getInteraction().getInteractionId() + ", " + "negative=0, " + "directed=" + (evidence.getInteraction().isDirected() ? 1 : 0) + ", " + "interaction_type='" + evidence.getInteraction().getInteractionType() + "', " + "source='" + evidence.getDataSource() + "', " + "macro_id='" + evidence.getMacroId() + "', " + "micro_id='" + evidence.getMicroId() + "', " + "confidence=100, " + "evidence_text=" + SqlUtil.toSqlVarchar(evidence.getEvidenceText()) + ", " + "curator=0"; DBUtil.update(sql); } }