/**
*
*/
package preprocessing;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.apache.log4j.Logger;
import outputter.search.TermSearcher;
/**
* @author Hong Updates
*
*/
public class SourceAdder {
private String termtable;
private String sentencetable;
private Connection conn;
private String username="root";
private String password="root";
private String srcprefix;
private String termcolumn;
private String mode;
private static final Logger LOGGER = Logger.getLogger(SourceAdder.class);
public SourceAdder(String termtable, String termcolumn, String mode, String sentencetable, String termdatabase){
this.termtable = termtable;
this.sentencetable = sentencetable;
this.srcprefix = sentencetable.substring(0, sentencetable.indexOf("."));
this.termcolumn = termcolumn;
this.mode = mode;
try{
if(conn == null){
Class.forName("com.mysql.jdbc.Driver");
String URL = "jdbc:mysql://localhost/"+termdatabase+"?user="+username+"&password="+password;
conn = DriverManager.getConnection(URL);
}
}catch(Exception e){
LOGGER.error("", e);
}
}
public void addSource(){
try{
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select "+this.termcolumn+" from "+this.termtable);
while(rs.next()){
String term = rs.getString(1);
String copyterm = term;
term = term.replaceAll("\\[.*?\\]", "").replaceAll("-", "_").trim();
Statement stmt1 = conn.createStatement();
ResultSet rs1 = null;
if(this.mode.compareTo("structure")==0)
rs1 = stmt1.executeQuery("select source, sentence from "+this.sentencetable+" where concat(modifier, \" \",tag) like '% "+term+" %' or tag like '"+term+" %' or tag like '% "+term+"' or tag = '"+term+"'");
else if (this.mode.compareTo("character")==0){
String q = "select source, sentence from "+this.sentencetable+" where sentence like '% "+term+" %' or sentence like '"+term+" %' or sentence like '% "+term+"' or sentence = '"+term+"'";
rs1 = stmt1.executeQuery(q);
if(!rs1.next())
rs1 = stmt1.executeQuery("select source, sentence from "+this.sentencetable+" where sentence like '%"+term+"%'");
}
if(rs1.next()){
System.out.println(term);
addSource4Structure(copyterm, rs1.getString("source"), rs1.getString("sentence"));
}
}
}catch(Exception e){
LOGGER.error("", e);
}
}
private void addSource4Structure(String term, String source, String sentence) {
try{
Statement stmt = conn.createStatement();
stmt.execute("update "+this.termtable+ " set srcfile='"+srcprefix+"."+source+"', srcsentence='"+sentence+"' where "+this.termcolumn+"='"+term+"'");
}catch(Exception e){
LOGGER.error("", e);
}
}
/**
* @param args
*/
public static void main(String[] args) {
//String termtable="anstructure2hao_checked";
//String sourcetable="plaziant_benchmark.plaziant_nn_sentence";
String termtable="fna2pato_checked"; //termtable must have columns of srcfile and srcsentence
String sourcetable="fnav19_benchmark.sentence";
String termcolumn ="term";
String mode = "character"; //or "structure"
String database="ontologymapping";
SourceAdder sa = new SourceAdder(termtable, termcolumn, mode, sourcetable, database);
sa.addSource();
}
}