Loading CheckerCorrector/Checker.java +11 −1 Original line number Diff line number Diff line Loading @@ -3,7 +3,9 @@ import java.security.NoSuchAlgorithmException; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import javax.swing.*; import GUI.*; import HashTableMaker.HashTableMaker; import DirectedGraph.BasicGraph; import DirectedGraph.DirectedGraph; Loading @@ -21,7 +23,15 @@ public class Checker { DBinterface dbInterface = new DBinterface(); DirectedGraph<State> graph = basicGraphClass.getGraph(); JsonMaker jsonMaker = JsonMaker.create(); if(argPars.isUpdateToken()){ if(argPars.isValidateUpdates()){ SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new WordRoleUpdater(); } }); }else if(argPars.isUpdateToken()){ dbInterface.readDataFromDatabase(); if(argPars.isCheckFile()){ SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName()); Loading CheckerCorrector/DirectedGraph/BasicGraph.java +177 −0 Original line number Diff line number Diff line package DirectedGraph; import java.util.HashMap; import java.sql.*; import StateMachine.State; public class BasicGraph { Loading @@ -19,60 +22,234 @@ public class BasicGraph { cur = cur.next(); graph.addEdge(State.first(), cur); } createTable(); graph.addEdge(State.START, State.PRONOUN); edgeList.put(State.START.toString(), State.PRONOUN.toString()); graph.addEdge(State.PRONOUN, State.VERB); edgeList.put(State.PRONOUN.toString(), State.VERB.toString()); graph.addEdge(State.VERB, State.ADVERB); edgeList.put(State.VERB.toString(), State.ADVERB.toString()); graph.addEdge(State.ADVERB, State.ADJECTIVE); edgeList.put(State.ADVERB.toString(), State.ADJECTIVE.toString()); graph.addEdge(State.VERB, State.ARTICLE); edgeList.put(State.VERB.toString(), State.ARTICLE.toString()); graph.addEdge(State.ARTICLE, State.ADVERB); edgeList.put(State.ARTICLE.toString(), State.ADVERB.toString()); graph.addEdge(State.ARTICLE, State.ADJECTIVE); edgeList.put(State.ARTICLE.toString(), State.ADJECTIVE.toString()); graph.addEdge(State.ARTICLE, State.NOUN); edgeList.put(State.ARTICLE.toString(), State.NOUN.toString()); graph.addEdge(State.ADJECTIVE, State.DOT); edgeList.put(State.ADJECTIVE.toString(), State.DOT.toString()); graph.addEdge(State.ADJECTIVE, State.NOUN); edgeList.put(State.ADJECTIVE.toString(), State.NOUN.toString()); graph.addEdge(State.ADJECTIVE, State.COMMA); edgeList.put(State.ADJECTIVE.toString(), State.COMMA.toString()); graph.addEdge(State.NOUN, State.DOT); edgeList.put(State.NOUN.toString(), State.DOT.toString()); graph.addEdge(State.NOUN, State.COMMA); edgeList.put(State.NOUN.toString(), State.COMMA.toString()); graph.addEdge(State.DOT, State.END); edgeList.put(State.DOT.toString(), State.END.toString()); //graph.addEdge(State.COMMA, State.PRONOUN); graph.addEdge(State.COMMA, State.CONJ); edgeList.put(State.COMMA.toString(), State.CONJ.toString()); graph.addEdge(State.CONJ, State.PRONOUN); edgeList.put(State.CONJ.toString(), State.PRONOUN.toString()); graph.addEdge(State.PRONOUN, State.MODAL); edgeList.put(State.PRONOUN.toString(), State.MODAL.toString()); graph.addEdge(State.NOUN, State.MODAL); edgeList.put(State.NOUN.toString(), State.MODAL.toString()); graph.addEdge(State.MODAL, State.VERB); edgeList.put(State.MODAL.toString(), State.VERB.toString()); graph.addEdge(State.IF, State.PRONOUN); edgeList.put(State.IF.toString(), State.PRONOUN.toString()); graph.addEdge(State.THAT, State.PRONOUN); edgeList.put(State.THAT.toString(), State.PRONOUN.toString()); graph.addEdge(State.IF, State.NOUN); edgeList.put(State.IF.toString(), State.NOUN.toString()); graph.addEdge(State.THAT, State.NOUN); edgeList.put(State.THAT.toString(), State.NOUN.toString()); graph.addEdge(State.NOUN, State.VERB); edgeList.put(State.NOUN.toString(), State.VERB.toString()); graph.addEdge(State.NOUN, State.MODAL); edgeList.put(State.NOUN.toString(), State.MODAL.toString()); //graph.addEdge(State.VERB, State.NOT); graph.addEdge(State.PRONOUN, State.DOES); edgeList.put(State.PRONOUN.toString(), State.DOES.toString()); graph.addEdge(State.NOUN, State.DOES); edgeList.put(State.NOUN.toString(), State.DOES.toString()); graph.addEdge(State.DOES, State.NOT); edgeList.put(State.DOES.toString(), State.NOT.toString()); graph.addEdge(State.NOT, State.VERB); edgeList.put(State.NOT.toString(), State.VERB.toString()); graph.addEdge(State.NOT, State.ADVERB); edgeList.put(State.NOT.toString(), State.ADVERB.toString()); graph.addEdge(State.NOT, State.ADJECTIVE); edgeList.put(State.NOT.toString(), State.ADJECTIVE.toString()); graph.addEdge(State.NOT, State.ARTICLE); edgeList.put(State.NOT.toString(), State.ARTICLE.toString()); graph.addEdge(State.NOT, State.DOT); edgeList.put(State.NOT.toString(), State.DOT.toString()); graph.addEdge(State.PREPOS, State.PRONOUN); edgeList.put(State.PREPOS.toString(), State.PRONOUN.toString()); graph.addEdge(State.NOUN, State.IS); edgeList.put(State.NOUN.toString(), State.IS.toString()); graph.addEdge(State.PRONOUN, State.IS); edgeList.put(State.PRONOUN.toString(), State.IS.toString()); graph.addEdge(State.IS, State.ADJECTIVE); edgeList.put(State.IS.toString(), State.ADJECTIVE.toString()); graph.addEdge(State.IS, State.ADVERB); edgeList.put(State.IS.toString(), State.ADVERB.toString()); graph.addEdge(State.IS, State.ARTICLE); edgeList.put(State.IS.toString(), State.ARTICLE.toString()); graph.addEdge(State.IS, State.NOT); edgeList.put(State.IS.toString(), State.NOT.toString()); graph.addEdge(State.THAT, State.IF); edgeList.put(State.THAT.toString(), State.IF.toString()); graph.addEdge(State.VERB, State.PREPOS); edgeList.put(State.VERB.toString(), State.PREPOS.toString()); graph.addEdge(State.IS, State.PREPOS); edgeList.put(State.IS.toString(), State.PREPOS.toString()); graph.addEdge(State.PREPOS, State.NOUN); edgeList.put(State.PREPOS.toString(), State.NOUN.toString()); graph.addEdge(State.PREPOS, State.ARTICLE); edgeList.put(State.PREPOS.toString(), State.ARTICLE.toString()); graph.addEdge(State.PREPOS, State.ADJECTIVE); edgeList.put(State.PREPOS.toString(), State.ADJECTIVE.toString()); graph.addEdge(State.ADVERB, State.VERB); edgeList.put(State.ADVERB.toString(), State.VERB.toString()); graph.addEdge(State.NOUN, State.NOUN); edgeList.put(State.NOUN.toString(), State.NOUN.toString()); graph.addEdge(State.ADJECTIVE, State.ADJECTIVE); edgeList.put(State.ADJECTIVE.toString(), State.ADJECTIVE.toString()); } public DirectedGraph<State> getGraph() { return graph; } private HashMap<String, String> edgeList; private static final String URL = "jdbc:sqlite:./SQLite/graphdatabase_name"; // Method to create the table private void createTable() { edgeList = new HashMap<>(); // SQL statement to create the table String sqlCreateTable = "CREATE TABLE nodeOne_nodeTwo (" + "nodeOne VARCHAR(50) PRIMARY KEY," + "nodeTwo VARCHAR(50)" + ")"; try (Connection conn = DriverManager.getConnection(URL); Statement stmt = conn.createStatement()) { // Execute the SQL statement to create the table stmt.execute(sqlCreateTable); } catch (SQLException e) { e.printStackTrace(); } } // Method to read data from SQLite database into HashMap public void readDataFromDatabase() { edgeList = new HashMap<>(); String dbUrl = "jdbc:sqlite:./SQLite/graphdatabase.db"; try (Connection connection = DriverManager.getConnection(dbUrl)) { Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM nodeOne_nodeTwo"); while (resultSet.next()) { String word = resultSet.getString("nodeOne"); String role = resultSet.getString("nodeTwo"); edgeList.put(word, role); } } catch (SQLException e) { e.printStackTrace(); } } // Method to update SQLite database with updated HashMap public void updateDatabase() { String dbUrl = "jdbc:sqlite:./SQLite/newdatabase.db"; try (Connection connection = DriverManager.getConnection(dbUrl)) { // Clear existing data in the table Statement clearStatement = connection.createStatement(); clearStatement.executeUpdate("DELETE FROM nodeOne_nodeTwo"); // Insert updated data from HashMap into the table PreparedStatement insertStatement = connection.prepareStatement("INSERT INTO word_roles (nodeOne, nodeTwo) VALUES (?, ?)"); for (String word : edgeList.keySet()) { String role = edgeList.get(word); insertStatement.setString(1, word); insertStatement.setString(2, role); insertStatement.addBatch(); } insertStatement.executeBatch(); } catch (SQLException e) { e.printStackTrace(); } } // Getter method for the HashMap public HashMap<String, String> getEdgeList() { return edgeList; } // Setter method for the HashMap public void setWordRolesMap(HashMap<String, String> edgeList) { this.edgeList = edgeList; } } CheckerCorrector/GUI/WordRoleUpdater.java 0 → 100644 +208 −0 Original line number Diff line number Diff line package GUI; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.*; import java.util.HashMap; import java.util.Map; public class WordRoleUpdater extends JFrame { private static final String DB_URL = "jdbc:sqlite:./SQLite/newdatabase.db"; private static final String TABLE_NAME = "word_roles"; private static final int POPUP_WIDTH = 300; private static final int POPUP_HEIGHT = 200; private Connection connection; private Map<String, String> wordRoles; private Map<String, Boolean> changes; private int currentIndex; private JLabel progressLabel; private JLabel wordLabel; private JLabel roleLabel; private JButton acceptButton; private JButton rejectButton; private JButton acceptAllButton; private JButton rejectAllButton; public WordRoleUpdater() { try { connection = DriverManager.getConnection(DB_URL); loadWordRoles(); initializeUI(); updateWordLabel(); // Show the first word and its role updateRoleLabel(); } catch (SQLException e) { e.printStackTrace(); } } private void loadWordRoles() throws SQLException { wordRoles = new HashMap<>(); changes = new HashMap<>(); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM " + TABLE_NAME); while (resultSet.next()) { String word = resultSet.getString("word"); String role = resultSet.getString("role"); wordRoles.put(word, role); changes.put(word, false); } statement.close(); } private void initializeUI() { setTitle("Word Role Updater"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); progressLabel = new JLabel(); progressLabel.setHorizontalAlignment(SwingConstants.CENTER); updateProgressLabel(); wordLabel = new JLabel(); wordLabel.setHorizontalAlignment(SwingConstants.CENTER); updateWordLabel(); roleLabel = new JLabel(); roleLabel.setHorizontalAlignment(SwingConstants.CENTER); updateRoleLabel(); JPanel labelPanel = new JPanel(new GridLayout(3, 1)); labelPanel.add(progressLabel); labelPanel.add(wordLabel); labelPanel.add(roleLabel); acceptButton = new JButton("Accept"); rejectButton = new JButton("Reject"); acceptAllButton = new JButton("Accept All"); rejectAllButton = new JButton("Reject All"); JPanel buttonPanel = new JPanel(new GridLayout(2, 2)); buttonPanel.add(acceptButton); buttonPanel.add(rejectButton); buttonPanel.add(acceptAllButton); buttonPanel.add(rejectAllButton); acceptButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { changes.put(getCurrentWord(), true); updateNextWord(); } }); rejectButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { wordRoles.remove(getCurrentWord()); // Remove the current word changes.remove(getCurrentWord()); // Remove the change for the current word updateNextWord(); // Move to the next word } }); acceptAllButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { for (String word : wordRoles.keySet()) { changes.put(word, true); } updateDatabase(); // Update database before ending JOptionPane.showMessageDialog(WordRoleUpdater.this, "All changes accepted. Database updated."); System.exit(0); } }); rejectAllButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { wordRoles.clear(); // Clear all word roles changes.clear(); // Clear all changes updateDatabase(); // Update database (clear the table) JOptionPane.showMessageDialog(WordRoleUpdater.this, "All changes rejected. Table cleared."); System.exit(0); } }); JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.setPreferredSize(new Dimension(POPUP_WIDTH, POPUP_HEIGHT)); mainPanel.add(labelPanel, BorderLayout.NORTH); mainPanel.add(buttonPanel, BorderLayout.SOUTH); add(mainPanel); pack(); setLocationRelativeTo(null); // Center the window setVisible(true); } private String getCurrentWord() { return (String) wordRoles.keySet().toArray()[currentIndex]; } private void updateNextWord() { currentIndex++; if (currentIndex >= wordRoles.size()) { updateDatabase(); JOptionPane.showMessageDialog(this, "No more changes to review."); System.exit(0); } else { updateWordLabel(); updateRoleLabel(); updateProgressLabel(); } } private void updateProgressLabel() { progressLabel.setText((currentIndex + 1) + "/" + wordRoles.size()); } private void updateWordLabel() { String word = getCurrentWord(); wordLabel.setText("Word: " + word); } private void updateRoleLabel() { String word = getCurrentWord(); String role = wordRoles.get(word); roleLabel.setText("Role: " + role); } private void updateDatabase() { try { Statement statement = connection.createStatement(); statement.executeUpdate("DELETE FROM " + TABLE_NAME); PreparedStatement insertStatement = connection.prepareStatement("INSERT INTO " + TABLE_NAME + " (word, role) VALUES (?, ?)"); for (Map.Entry<String, Boolean> entry : changes.entrySet()) { String word = entry.getKey(); boolean accept = entry.getValue(); if (accept) { String role = wordRoles.get(word); insertStatement.setString(1, word); insertStatement.setString(2, role); insertStatement.executeUpdate(); } } statement.close(); insertStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new WordRoleUpdater(); } }); } } CheckerCorrector/SQLite/graphdatabase_name 0 → 100644 +12 KiB File added.No diff preview for this file type. View file CheckerCorrector/SQLite/newdatabase.db (12 KiB) File changed.No diff preview for this file type. View original file View changed file Loading
CheckerCorrector/Checker.java +11 −1 Original line number Diff line number Diff line Loading @@ -3,7 +3,9 @@ import java.security.NoSuchAlgorithmException; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import javax.swing.*; import GUI.*; import HashTableMaker.HashTableMaker; import DirectedGraph.BasicGraph; import DirectedGraph.DirectedGraph; Loading @@ -21,7 +23,15 @@ public class Checker { DBinterface dbInterface = new DBinterface(); DirectedGraph<State> graph = basicGraphClass.getGraph(); JsonMaker jsonMaker = JsonMaker.create(); if(argPars.isUpdateToken()){ if(argPars.isValidateUpdates()){ SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new WordRoleUpdater(); } }); }else if(argPars.isUpdateToken()){ dbInterface.readDataFromDatabase(); if(argPars.isCheckFile()){ SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName()); Loading
CheckerCorrector/DirectedGraph/BasicGraph.java +177 −0 Original line number Diff line number Diff line package DirectedGraph; import java.util.HashMap; import java.sql.*; import StateMachine.State; public class BasicGraph { Loading @@ -19,60 +22,234 @@ public class BasicGraph { cur = cur.next(); graph.addEdge(State.first(), cur); } createTable(); graph.addEdge(State.START, State.PRONOUN); edgeList.put(State.START.toString(), State.PRONOUN.toString()); graph.addEdge(State.PRONOUN, State.VERB); edgeList.put(State.PRONOUN.toString(), State.VERB.toString()); graph.addEdge(State.VERB, State.ADVERB); edgeList.put(State.VERB.toString(), State.ADVERB.toString()); graph.addEdge(State.ADVERB, State.ADJECTIVE); edgeList.put(State.ADVERB.toString(), State.ADJECTIVE.toString()); graph.addEdge(State.VERB, State.ARTICLE); edgeList.put(State.VERB.toString(), State.ARTICLE.toString()); graph.addEdge(State.ARTICLE, State.ADVERB); edgeList.put(State.ARTICLE.toString(), State.ADVERB.toString()); graph.addEdge(State.ARTICLE, State.ADJECTIVE); edgeList.put(State.ARTICLE.toString(), State.ADJECTIVE.toString()); graph.addEdge(State.ARTICLE, State.NOUN); edgeList.put(State.ARTICLE.toString(), State.NOUN.toString()); graph.addEdge(State.ADJECTIVE, State.DOT); edgeList.put(State.ADJECTIVE.toString(), State.DOT.toString()); graph.addEdge(State.ADJECTIVE, State.NOUN); edgeList.put(State.ADJECTIVE.toString(), State.NOUN.toString()); graph.addEdge(State.ADJECTIVE, State.COMMA); edgeList.put(State.ADJECTIVE.toString(), State.COMMA.toString()); graph.addEdge(State.NOUN, State.DOT); edgeList.put(State.NOUN.toString(), State.DOT.toString()); graph.addEdge(State.NOUN, State.COMMA); edgeList.put(State.NOUN.toString(), State.COMMA.toString()); graph.addEdge(State.DOT, State.END); edgeList.put(State.DOT.toString(), State.END.toString()); //graph.addEdge(State.COMMA, State.PRONOUN); graph.addEdge(State.COMMA, State.CONJ); edgeList.put(State.COMMA.toString(), State.CONJ.toString()); graph.addEdge(State.CONJ, State.PRONOUN); edgeList.put(State.CONJ.toString(), State.PRONOUN.toString()); graph.addEdge(State.PRONOUN, State.MODAL); edgeList.put(State.PRONOUN.toString(), State.MODAL.toString()); graph.addEdge(State.NOUN, State.MODAL); edgeList.put(State.NOUN.toString(), State.MODAL.toString()); graph.addEdge(State.MODAL, State.VERB); edgeList.put(State.MODAL.toString(), State.VERB.toString()); graph.addEdge(State.IF, State.PRONOUN); edgeList.put(State.IF.toString(), State.PRONOUN.toString()); graph.addEdge(State.THAT, State.PRONOUN); edgeList.put(State.THAT.toString(), State.PRONOUN.toString()); graph.addEdge(State.IF, State.NOUN); edgeList.put(State.IF.toString(), State.NOUN.toString()); graph.addEdge(State.THAT, State.NOUN); edgeList.put(State.THAT.toString(), State.NOUN.toString()); graph.addEdge(State.NOUN, State.VERB); edgeList.put(State.NOUN.toString(), State.VERB.toString()); graph.addEdge(State.NOUN, State.MODAL); edgeList.put(State.NOUN.toString(), State.MODAL.toString()); //graph.addEdge(State.VERB, State.NOT); graph.addEdge(State.PRONOUN, State.DOES); edgeList.put(State.PRONOUN.toString(), State.DOES.toString()); graph.addEdge(State.NOUN, State.DOES); edgeList.put(State.NOUN.toString(), State.DOES.toString()); graph.addEdge(State.DOES, State.NOT); edgeList.put(State.DOES.toString(), State.NOT.toString()); graph.addEdge(State.NOT, State.VERB); edgeList.put(State.NOT.toString(), State.VERB.toString()); graph.addEdge(State.NOT, State.ADVERB); edgeList.put(State.NOT.toString(), State.ADVERB.toString()); graph.addEdge(State.NOT, State.ADJECTIVE); edgeList.put(State.NOT.toString(), State.ADJECTIVE.toString()); graph.addEdge(State.NOT, State.ARTICLE); edgeList.put(State.NOT.toString(), State.ARTICLE.toString()); graph.addEdge(State.NOT, State.DOT); edgeList.put(State.NOT.toString(), State.DOT.toString()); graph.addEdge(State.PREPOS, State.PRONOUN); edgeList.put(State.PREPOS.toString(), State.PRONOUN.toString()); graph.addEdge(State.NOUN, State.IS); edgeList.put(State.NOUN.toString(), State.IS.toString()); graph.addEdge(State.PRONOUN, State.IS); edgeList.put(State.PRONOUN.toString(), State.IS.toString()); graph.addEdge(State.IS, State.ADJECTIVE); edgeList.put(State.IS.toString(), State.ADJECTIVE.toString()); graph.addEdge(State.IS, State.ADVERB); edgeList.put(State.IS.toString(), State.ADVERB.toString()); graph.addEdge(State.IS, State.ARTICLE); edgeList.put(State.IS.toString(), State.ARTICLE.toString()); graph.addEdge(State.IS, State.NOT); edgeList.put(State.IS.toString(), State.NOT.toString()); graph.addEdge(State.THAT, State.IF); edgeList.put(State.THAT.toString(), State.IF.toString()); graph.addEdge(State.VERB, State.PREPOS); edgeList.put(State.VERB.toString(), State.PREPOS.toString()); graph.addEdge(State.IS, State.PREPOS); edgeList.put(State.IS.toString(), State.PREPOS.toString()); graph.addEdge(State.PREPOS, State.NOUN); edgeList.put(State.PREPOS.toString(), State.NOUN.toString()); graph.addEdge(State.PREPOS, State.ARTICLE); edgeList.put(State.PREPOS.toString(), State.ARTICLE.toString()); graph.addEdge(State.PREPOS, State.ADJECTIVE); edgeList.put(State.PREPOS.toString(), State.ADJECTIVE.toString()); graph.addEdge(State.ADVERB, State.VERB); edgeList.put(State.ADVERB.toString(), State.VERB.toString()); graph.addEdge(State.NOUN, State.NOUN); edgeList.put(State.NOUN.toString(), State.NOUN.toString()); graph.addEdge(State.ADJECTIVE, State.ADJECTIVE); edgeList.put(State.ADJECTIVE.toString(), State.ADJECTIVE.toString()); } public DirectedGraph<State> getGraph() { return graph; } private HashMap<String, String> edgeList; private static final String URL = "jdbc:sqlite:./SQLite/graphdatabase_name"; // Method to create the table private void createTable() { edgeList = new HashMap<>(); // SQL statement to create the table String sqlCreateTable = "CREATE TABLE nodeOne_nodeTwo (" + "nodeOne VARCHAR(50) PRIMARY KEY," + "nodeTwo VARCHAR(50)" + ")"; try (Connection conn = DriverManager.getConnection(URL); Statement stmt = conn.createStatement()) { // Execute the SQL statement to create the table stmt.execute(sqlCreateTable); } catch (SQLException e) { e.printStackTrace(); } } // Method to read data from SQLite database into HashMap public void readDataFromDatabase() { edgeList = new HashMap<>(); String dbUrl = "jdbc:sqlite:./SQLite/graphdatabase.db"; try (Connection connection = DriverManager.getConnection(dbUrl)) { Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM nodeOne_nodeTwo"); while (resultSet.next()) { String word = resultSet.getString("nodeOne"); String role = resultSet.getString("nodeTwo"); edgeList.put(word, role); } } catch (SQLException e) { e.printStackTrace(); } } // Method to update SQLite database with updated HashMap public void updateDatabase() { String dbUrl = "jdbc:sqlite:./SQLite/newdatabase.db"; try (Connection connection = DriverManager.getConnection(dbUrl)) { // Clear existing data in the table Statement clearStatement = connection.createStatement(); clearStatement.executeUpdate("DELETE FROM nodeOne_nodeTwo"); // Insert updated data from HashMap into the table PreparedStatement insertStatement = connection.prepareStatement("INSERT INTO word_roles (nodeOne, nodeTwo) VALUES (?, ?)"); for (String word : edgeList.keySet()) { String role = edgeList.get(word); insertStatement.setString(1, word); insertStatement.setString(2, role); insertStatement.addBatch(); } insertStatement.executeBatch(); } catch (SQLException e) { e.printStackTrace(); } } // Getter method for the HashMap public HashMap<String, String> getEdgeList() { return edgeList; } // Setter method for the HashMap public void setWordRolesMap(HashMap<String, String> edgeList) { this.edgeList = edgeList; } }
CheckerCorrector/GUI/WordRoleUpdater.java 0 → 100644 +208 −0 Original line number Diff line number Diff line package GUI; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.*; import java.util.HashMap; import java.util.Map; public class WordRoleUpdater extends JFrame { private static final String DB_URL = "jdbc:sqlite:./SQLite/newdatabase.db"; private static final String TABLE_NAME = "word_roles"; private static final int POPUP_WIDTH = 300; private static final int POPUP_HEIGHT = 200; private Connection connection; private Map<String, String> wordRoles; private Map<String, Boolean> changes; private int currentIndex; private JLabel progressLabel; private JLabel wordLabel; private JLabel roleLabel; private JButton acceptButton; private JButton rejectButton; private JButton acceptAllButton; private JButton rejectAllButton; public WordRoleUpdater() { try { connection = DriverManager.getConnection(DB_URL); loadWordRoles(); initializeUI(); updateWordLabel(); // Show the first word and its role updateRoleLabel(); } catch (SQLException e) { e.printStackTrace(); } } private void loadWordRoles() throws SQLException { wordRoles = new HashMap<>(); changes = new HashMap<>(); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM " + TABLE_NAME); while (resultSet.next()) { String word = resultSet.getString("word"); String role = resultSet.getString("role"); wordRoles.put(word, role); changes.put(word, false); } statement.close(); } private void initializeUI() { setTitle("Word Role Updater"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); progressLabel = new JLabel(); progressLabel.setHorizontalAlignment(SwingConstants.CENTER); updateProgressLabel(); wordLabel = new JLabel(); wordLabel.setHorizontalAlignment(SwingConstants.CENTER); updateWordLabel(); roleLabel = new JLabel(); roleLabel.setHorizontalAlignment(SwingConstants.CENTER); updateRoleLabel(); JPanel labelPanel = new JPanel(new GridLayout(3, 1)); labelPanel.add(progressLabel); labelPanel.add(wordLabel); labelPanel.add(roleLabel); acceptButton = new JButton("Accept"); rejectButton = new JButton("Reject"); acceptAllButton = new JButton("Accept All"); rejectAllButton = new JButton("Reject All"); JPanel buttonPanel = new JPanel(new GridLayout(2, 2)); buttonPanel.add(acceptButton); buttonPanel.add(rejectButton); buttonPanel.add(acceptAllButton); buttonPanel.add(rejectAllButton); acceptButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { changes.put(getCurrentWord(), true); updateNextWord(); } }); rejectButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { wordRoles.remove(getCurrentWord()); // Remove the current word changes.remove(getCurrentWord()); // Remove the change for the current word updateNextWord(); // Move to the next word } }); acceptAllButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { for (String word : wordRoles.keySet()) { changes.put(word, true); } updateDatabase(); // Update database before ending JOptionPane.showMessageDialog(WordRoleUpdater.this, "All changes accepted. Database updated."); System.exit(0); } }); rejectAllButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { wordRoles.clear(); // Clear all word roles changes.clear(); // Clear all changes updateDatabase(); // Update database (clear the table) JOptionPane.showMessageDialog(WordRoleUpdater.this, "All changes rejected. Table cleared."); System.exit(0); } }); JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.setPreferredSize(new Dimension(POPUP_WIDTH, POPUP_HEIGHT)); mainPanel.add(labelPanel, BorderLayout.NORTH); mainPanel.add(buttonPanel, BorderLayout.SOUTH); add(mainPanel); pack(); setLocationRelativeTo(null); // Center the window setVisible(true); } private String getCurrentWord() { return (String) wordRoles.keySet().toArray()[currentIndex]; } private void updateNextWord() { currentIndex++; if (currentIndex >= wordRoles.size()) { updateDatabase(); JOptionPane.showMessageDialog(this, "No more changes to review."); System.exit(0); } else { updateWordLabel(); updateRoleLabel(); updateProgressLabel(); } } private void updateProgressLabel() { progressLabel.setText((currentIndex + 1) + "/" + wordRoles.size()); } private void updateWordLabel() { String word = getCurrentWord(); wordLabel.setText("Word: " + word); } private void updateRoleLabel() { String word = getCurrentWord(); String role = wordRoles.get(word); roleLabel.setText("Role: " + role); } private void updateDatabase() { try { Statement statement = connection.createStatement(); statement.executeUpdate("DELETE FROM " + TABLE_NAME); PreparedStatement insertStatement = connection.prepareStatement("INSERT INTO " + TABLE_NAME + " (word, role) VALUES (?, ?)"); for (Map.Entry<String, Boolean> entry : changes.entrySet()) { String word = entry.getKey(); boolean accept = entry.getValue(); if (accept) { String role = wordRoles.get(word); insertStatement.setString(1, word); insertStatement.setString(2, role); insertStatement.executeUpdate(); } } statement.close(); insertStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new WordRoleUpdater(); } }); } }
CheckerCorrector/SQLite/graphdatabase_name 0 → 100644 +12 KiB File added.No diff preview for this file type. View file
CheckerCorrector/SQLite/newdatabase.db (12 KiB) File changed.No diff preview for this file type. View original file View changed file