package Lib;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Sql {
	private Sql(){}

	public static interface SqlConn {
		String getUser();
		String getPass();
		String getUrl();
	}
	public static SqlConn makeSqlConn(final String user, final String pass, final String url){
		return new SqlConn(){
			public String getUser() {
				return user;
			}
			public String getPass() {
				return pass;
			}
			public String getUrl() {
				return url;
			}
		};
	}
	public static SqlConn loadSqlConn(String filename) throws Exception{
		Reader in = IO.openReader(filename);
		Parse.expect(in, "jdbc.url");
		Parse.expect(in, "=");
		String sqlUrl = Parse.read(in);
		Parse.expect(in, "jdbc.username");
		Parse.expect(in, "=");
		String sqlUser = Parse.read(in);
		Parse.expect(in, "jdbc.password");
		Parse.expect(in, "=");
		String sqlPass = Parse.read(in);
		Parse.expect(in, "jdbc.driver");
		Parse.expect(in, "=");
		Class.forName(Parse.read(in));		//make sure driver is available

		in.close();

		return makeSqlConn(sqlUser, sqlPass, sqlUrl);
	}

	public static Connection connectSql(final SqlConn c) throws SQLException{
		return DriverManager.getConnection(c.getUrl(),c.getUser(),c.getPass());
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
