Advertisement
Guest User

Untitled

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