-
Seyed Reza Sajjadinasab authoredSeyed Reza Sajjadinasab authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
DBinterface.java 23.66 KiB
package DBinterface;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.io.IOException;
import java.util.Map;
import java.io.BufferedReader;
import java.io.FileReader;
import DirectedGraph.DirectedGraph;
import java.sql.*;
import StateMachine.*;
import TypoCorrector.TypoCorrector;
import util.TwoListStruct;
import util.StringFileWriter;
import util.StringProcessor;
import GUI.SelectCorrectionHandler;
public class DBinterface {
String url;
String dicFileName;
public DBinterface(String url, String dicFileName){
this.url = "jdbc:sqlite:./"+url;
this.dicFileName = dicFileName;
}
public int checkTokenInDatabase(String sentence, DirectedGraph<State> graph){
StateMachine SM = new StateMachine();
sentence = sentence.replaceAll("\\p{Punct}", " $0");
String[] tokens = sentence.split("\\s+");
//String url = "jdbc:sqlite:./SQLite/mydatabase.db";
//String dicFileName = "./SQLite/smallDic.txt";
TypoCorrector typoChecker = TypoCorrector.of(this.dicFileName);
int initialConf = 0;
try (Connection connection = DriverManager.getConnection(this.url)) {
// Lookup each token in the database and categorize it
for (int i = 0; i < tokens.length; i++) {
String token = tokens[i];
try (Statement statement = connection.createStatement()) {
String query = "SELECT role FROM word_roles WHERE word = '" + token + "';";
String role = new String();
ResultSet resultSet = statement.executeQuery(query);
if (resultSet.next()) {
role = resultSet.getString("role");
////System.out.print("first try: " + token + " -> " + role);
tokens[i] = role;
}else{
String tokenCorrected = new String();
if(role.isEmpty()){
tokenCorrected = typoChecker.closestWord(token);
if(!tokenCorrected.equals(token))
initialConf += 5;
////System.out.print("Corrected token: " + token + " -> " + tokenCorrected);
query = "SELECT role FROM word_roles WHERE word = '" + tokenCorrected + "';";
// Replace the token with its role
resultSet = statement.executeQuery(query);
if (resultSet.next()) {
role = resultSet.getString("role");
////System.out.print("| Second try: "+ token + " -> " + role);
tokens[i] = role;
}
}