package org.dbpedia.mappings.missingbot.storage; import org.dbpedia.mappings.missingbot.rest.bean.Missing; import java.io.IOException; import java.sql.*; import java.util.Map; import java.util.TreeMap; /** * Created by peterr on 04.06.14. */ public class Store { private Connection conn = null; private static String JDBC_URL; public static void initStore(String jdbc_url) { JDBC_URL = jdbc_url; try { Connection conn = DriverManager.getConnection(JDBC_URL); Statement stat = conn.createStatement(); // stat.execute("DROP TABLE missing IF EXISTS"); stat.execute("CREATE TABLE IF NOT EXISTS missing(" + "title varchar(255)," + "label varchar(255)," + "translation varchar(255)," + "language varchar(2)," + "PRIMARY KEY(title, language))"); stat.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } public void put(String title, String label, String translation, String language) { try { Connection conn = DriverManager.getConnection(JDBC_URL); PreparedStatement stat = conn.prepareStatement("MERGE INTO missing VALUES(?, ?, ?, ?)"); stat.setString(1, title); stat.setString(2, label); stat.setString(3, translation); stat.setString(4, language); stat.execute(); stat.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } public void remove(String title, String language) { try { Connection conn = DriverManager.getConnection(JDBC_URL); PreparedStatement stat = conn.prepareStatement("DELETE FROM missing WHERE title=? and language=?"); stat.setString(1, title); stat.setString(2, language); stat.execute(); stat.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } public Map<String, Missing> getAllByLang(String language) throws IOException { Map<String, Missing> store = new TreeMap<>(); try { Connection conn = DriverManager.getConnection(JDBC_URL); PreparedStatement stat = conn.prepareStatement("SELECT * FROM missing WHERE language=?"); stat.setString(1, language); ResultSet rs = stat.executeQuery(); while(rs.next()) { store.put(rs.getString("title"), new Missing(rs.getString("title"), rs.getString("label"), rs.getString("translation"), language)); } rs.close(); stat.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return store; } }