Advertisement
Guest User

Untitled

a guest
Dec 16th, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.40 KB | None | 0 0
  1. package eg.edu.alexu.csd.oop.jdbc.main;
  2.  
  3. import java.io.File;
  4. import java.net.URISyntaxException;
  5. import java.sql.Connection;
  6. import java.sql.Driver;
  7. import java.sql.DriverPropertyInfo;
  8. import java.sql.ResultSet;
  9. import java.sql.ResultSetMetaData;
  10. import java.sql.SQLException;
  11. import java.sql.Statement;
  12. import java.util.ArrayList;
  13. import java.util.Properties;
  14. import java.util.Scanner;
  15.  
  16. import eg.edu.alexu.csd.oop.jdbc.jdbc.JDBCDriver;
  17.  
  18. public class Main {
  19.  
  20. public static void main(final String[] args) {
  21. Main JDBC = new Main();
  22. if (JDBC.intialize()) {
  23. JDBC.run();
  24. }
  25. }
  26.  
  27. private Driver driver;
  28. private Scanner s;
  29. private Connection connection;
  30. private Statement statement;
  31. private String URL;
  32. private Formatter formatter;
  33.  
  34. private ArrayList<String> getColumns(final ResultSetMetaData data) {
  35. int size;
  36. try {
  37. size = data.getColumnCount();
  38. } catch (SQLException e1) {
  39. return null;
  40. }
  41. ArrayList<String> columns = new ArrayList<String>();
  42. for (int i = 0; i < size; i++) {
  43. try {
  44. columns.add(data.getColumnName(i + 1));
  45. } catch (SQLException e) {
  46. return null;
  47. }
  48. }
  49. return columns;
  50. }
  51.  
  52. private ArrayList<ArrayList<String>> getData(final ResultSet result) {
  53. ArrayList<ArrayList<String>> data;
  54. try {
  55. int size = result.getMetaData().getColumnCount();
  56. data = new ArrayList<ArrayList<String>>();
  57. for (int i = 0; i < size; i++) {
  58. data.add(new ArrayList<String>());
  59. }
  60. while (result.next()) {
  61. for (int i = 0; i < size; i++) {
  62. Object value = result.getObject(i + 1);
  63. String nxt;
  64. if (value == null) {
  65. nxt = "null";
  66. } else {
  67. nxt = value.toString();
  68. }
  69. ArrayList<String> tmp = data.get(i);
  70. tmp.add(nxt);
  71. }
  72. }
  73. return data;
  74. } catch (SQLException e) {
  75. return null;
  76. }
  77. }
  78.  
  79. private Properties getProperty() {
  80. Properties info = new Properties();
  81. String tmpDir = System.getProperty("java.io.tmpdir");
  82. File dbDir = new File(tmpDir);
  83. info.put("path", dbDir.getAbsoluteFile());
  84. return info;
  85. }
  86.  
  87. private boolean getURL() {
  88. System.out.println("Enter a URL:");
  89. URL = s.nextLine();
  90. try {
  91. boolean accept = driver.acceptsURL(URL);
  92. return accept;
  93. } catch (SQLException e) {
  94. return false;
  95. }
  96. }
  97.  
  98. private boolean getUser() {
  99. String user, password;
  100. System.out.println("Enter username:");
  101. user = s.nextLine();
  102. System.out.println("Enter password:");
  103. password = s.nextLine();
  104. DriverPropertyInfo[] info;
  105. try {
  106. info = driver.getPropertyInfo(null, null);
  107. for (int i = 0; i < info.length; ++i) {
  108. if (user.equals(info[i].name) && password.equals(
  109. info[i].value)) {
  110. System.out.println("Welcome " + user + ".");
  111. return true;
  112. }
  113. }
  114. return false;
  115. } catch (SQLException e) {
  116. System.err.println(e.getMessage());
  117. return false;
  118. }
  119. }
  120.  
  121. public boolean intialize() {
  122. s = new Scanner(System.in);
  123. formatter = new Formatter();
  124. String path;
  125. try {
  126. path = Main.class.getProtectionDomain().getCodeSource()
  127. .getLocation().toURI().getPath();
  128. driver = new JDBCDriver(path + "users.txt", path + "passwords.txt");
  129. } catch (URISyntaxException e) {
  130. System.err.println("Path not found.");
  131. return false;
  132. }
  133. while (!getUser()) {
  134. System.err.println("Invalid username or password.");
  135. }
  136. while (!getURL()) {
  137. System.err.println("Invalid URL.");
  138. }
  139. return true;
  140. }
  141.  
  142. public void run() {
  143. try {
  144. connection = driver.connect(URL, getProperty());
  145. System.out.println("Enter a command or \'exit\' to exit.");
  146. while (true) {
  147. String command = s.nextLine().trim();
  148. if (command.equalsIgnoreCase("exit")) {
  149. break;
  150. }
  151. try {
  152. ResultSet data;
  153. ResultSetMetaData result;
  154. statement = connection.createStatement();
  155. if (statement.execute(command)) {
  156. data = statement.getResultSet();
  157. result = data.getMetaData();
  158. ArrayList<String> columnNames = getColumns(result);
  159. ArrayList<ArrayList<String>> rows = getData(data);
  160. formatter.print(rows, columnNames);
  161. }
  162. statement.close();
  163. } catch (SQLException e) {
  164. System.err.println(e.getMessage());
  165. }
  166. }
  167. } catch (SQLException e) {
  168. System.err.println(e.getMessage());
  169. }
  170. s.close();
  171. }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement