Guest User

Untitled

a guest
Dec 5th, 2018
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.37 KB | None | 0 0
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.sql.Statement;
  7.  
  8.  
  9. public class Utilisateur {
  10. public static java.util.Scanner scanner = new java.util.Scanner(System.in);
  11.  
  12. public static void main(String[] args){
  13. try {
  14. Class.forName("org.postgresql.Driver");
  15.  
  16. } catch (ClassNotFoundException e) {
  17. System.out.println("Driver PostgreSQL manquant !");
  18. System.exit(1);
  19. }
  20.  
  21. String url = "jdbc:postgresql://localhost:5432/postgres"; // LOCAL
  22. //String url="jdbc:postgresql://172.24.2.6:5432/dbnlorphe16"; // ECOLE
  23. Connection conn = null;
  24. try {
  25.  
  26. conn = DriverManager.getConnection(url, "jdebors16", "(xrNeE9");
  27.  
  28. } catch (SQLException e) {
  29. System.out.println("Impossible de joindre le serveur");
  30. System.exit(1);
  31. }
  32.  
  33. System.err.println("Veuillez eviter les fautes d'input s'il vous plait, merci");
  34. System.err.println("Une facturation supplementaire vous sera demandee en cas d'erreur!");
  35. System.err.println("Le service IT !");
  36.  
  37. scanner.nextLine();
  38. System.out.println("1 -> S'inscrire");
  39. System.out.println("2 -> Se loger");
  40. int curse = scanner.nextInt();
  41.  
  42. /* Inscription phase */
  43. if(curse==1){
  44. try {
  45. System.out.println("Veuillez trouver un login");
  46. String lg = scanner.next();
  47. System.out.println("Veuillez entrer votre nom,");
  48. String name = scanner.next();
  49. System.out.println("votre prenom,");
  50. String fname = scanner.next();
  51. System.out.println("votre email,");
  52. String email = scanner.next();
  53. System.out.println("et enfin votre mot de passe");
  54. String pass = scanner.next();
  55. PreparedStatement ps;
  56. ps = conn.prepareStatement("SELECT projet.addUser(?,?,?,?,?);");
  57. ps.setString(1,lg);
  58. ps.setString(2,name);
  59. ps.setString(3,fname);
  60. ps.setString(4,email);
  61. ps.setString(5,pass);
  62. ResultSet rs = ps.executeQuery();
  63. while(rs.next()){
  64. System.out.println("Inscription bien effectuée");
  65. }
  66. }catch (SQLException se){
  67. System.out.println("Error, "+se.getMessage());
  68. System.exit(1);
  69. }
  70. }
  71. /* End of Inscription */
  72.  
  73.  
  74. /* Begin of the login's phase */
  75. System.out.println("Bonjour, veuillez-vous identifier svp:");
  76. System.out.println("Login:");
  77. String s = scanner.next();
  78. System.out.println("Mot de Passe:");
  79. String s2 = scanner.next();
  80. if (!authentifacte(conn, s, s2)){
  81. System.out.println("Votre login/password est incorrect");
  82. System.exit(1);
  83. }
  84. /* End of login's phase */
  85.  
  86.  
  87. /* Begin of the menu's phase for the user */
  88. System.out.println("Authentifie, bienvenue cher(e) client(e),");
  89. int choix;
  90. do{
  91. System.out.println("Voici votre menu de navigation:");
  92. System.out.println("1 -> Faire une recherche");
  93. System.out.println("2 -> Mettre un objet en vente");
  94. System.out.println("3 -> Modifier ton objet en vente");
  95. System.out.println("4 -> Terminer une vente");
  96. System.out.println("5 -> Encherir");
  97. System.out.println("6 -> Soumettre une evaluation");
  98. System.out.println("7 -> Se deconnecter");
  99. choix = scanner.nextInt();
  100.  
  101. switch (choix){
  102. case 1:
  103. visited(conn,s);
  104. break;
  105. case 2:
  106. int value = mettreObjetEnVente(s,conn);
  107. if(value!=-1)
  108. System.out.println("Objet bien mis en vente, le numero de votre objet est le suivant: "+value);
  109. break;
  110. case 3:
  111. if(modifierObjet(s,conn))
  112. System.out.println("Objet bien modifie");
  113. break;
  114. case 4:
  115. if(accepter(s,conn))
  116. System.out.println("Enchere bien acceptee vous recevrez le montant d'ici peu");
  117. break;
  118. case 5:
  119. int bidid= faireEnchere(s,conn);
  120. if(bidid!=-1)
  121. System.out.println("Enchere effectue votre enchere a l'id suivant "+bidid);
  122. break;
  123. case 6:
  124. int evalid = evaluate(s,conn);
  125. if(evalid!=-1)
  126. System.out.println("Evaluation bien effectuee son id est le suivant "+evalid);
  127. break;
  128. }
  129. }while(choix != 7);
  130. System.out.println("Merci de votre visite, a la prochaine o/");
  131. System.exit(1);
  132. /* End of the menu's phase for the user */
  133. }
  134.  
  135. /* login method */
  136.  
  137. /**
  138. * @POST: return a boolean depending on the authentification's success
  139. * @param connection
  140. * @param login
  141. * @param mdp
  142. */
  143. public static boolean authentifacte(Connection connection, String login, String mdp){
  144. try {
  145. Statement statement = connection.createStatement();
  146. try (ResultSet rs = statement.executeQuery("SELECT * FROM projet.getUser WHERE \"Login\"=" + "'" + login + "' AND \"Etat du compte\" !=2;")){//get all the users with the login whitch is equals to login
  147. while (rs.next()) {
  148. try (ResultSet rt = statement.executeQuery("SELECT * FROM projet.users WHERE login=" + "'" + login + "';")) {//get the tuple of the specified user with the login
  149. while (rt.next()){
  150. if (rt.getString(5).equals(mdp))
  151. return true;
  152. }
  153. }
  154. }
  155. }
  156. } catch (SQLException se) {
  157. return false;
  158. }
  159. return false;
  160. }
  161.  
  162.  
  163. /* User method */
  164.  
  165. /**
  166. * permet de visiter un profil?
  167. * @param connection
  168. */
  169. public static void visited(Connection connection, String login){
  170. System.out.println("Quelle type de recherche voulez vous effectuer?");
  171. int option;
  172.  
  173. System.out.println("1 -> Visiter un profil");
  174. System.out.println("2 -> Voir tous les objets en vente");
  175. System.out.println("3 -> Voir tous ses objets en vente");
  176. System.out.println("4 -> Voir ses encheres");
  177. System.out.println("5 -> Voir ses evaluations");
  178. System.out.println("6 -> Voir ses transactions");
  179. System.out.println("7 -> Retour au menu principal");
  180.  
  181. option=scanner.nextInt();
  182. switch (option){
  183. case 1:
  184. visiterProfil(connection);
  185. break;
  186. case 2:
  187. visiterTousObjets(connection,login);
  188. break;
  189. case 3:
  190. visiterTousSesObjets(connection,login);
  191. break;
  192. case 4:
  193. visiterSesEnchere(connection, login);
  194. break;
  195. case 5:
  196. visiterEvaluation(connection, login);
  197. break;
  198. case 6:
  199. visiterTransaction(connection, login);
  200. break;
  201. case 7:
  202. return;
  203. }
  204. }
  205.  
  206.  
  207. public static void visiterProfil(Connection connection){
  208. try {
  209. System.out.println("Quel profil voulez vous visiter (entrer son login)");
  210. String profil="'"+scanner.next()+"'";
  211. PreparedStatement ps;
  212. ps = connection.prepareStatement("SELECT * FROM projet.getUser WHERE \"Login\" = "+profil+" AND suspended != 2;");
  213. ResultSet rs = ps.executeQuery();
  214. while(rs.next()){
  215. System.out.println("Le compte de " +rs.getString(2)+" "+rs.getString(3)+", connu(e) sous le login de "+rs.getString(1)+", a une moyenne de "+rs.getInt(5)+"/5 et a vendu "+rs.getInt(6)+" objet(s) actuellement et possede "+rs.getInt(7)+ " objet(s) en vente actuellement");
  216. }
  217. }catch (SQLException se){
  218. System.out.println("Erreur, "+se.getMessage());
  219. }
  220. }
  221.  
  222.  
  223. public static void visiterTousObjets(Connection connection, String login){
  224. try {
  225. String owner ="'"+login+"'";
  226. PreparedStatement ps;
  227. Statement s = connection.createStatement();
  228. s.execute("SELECT update_sales();");
  229.  
  230. ps = connection.prepareStatement("SELECT * FROM projet.getOwnerSales WHERE \"Etat\"=\'pending\' AND \"Proprietaire\"!="+owner+";");
  231. ResultSet rs = ps.executeQuery();
  232. String bafouille="";
  233. while(rs.next()){
  234. if(rs.getInt(5)==0){
  235. bafouille="ne possede pas encore de meilleur enchere";
  236. }
  237. else{
  238. PreparedStatement pt;
  239. pt = connection.prepareStatement("SELECT price FROM projet.bids WHERE bid_id ="+rs.getInt(5)+";");
  240. ResultSet rt =pt.executeQuery();
  241. while(rt.next())
  242. bafouille="a comme meilleur enchere l'enchere ayant l'id "+rs.getInt(5)+ " dont le montant est de "+rt.getDouble(1)+"$";
  243. }
  244. System.out.println(rs.getString(4)+" ayant l'id " +rs.getInt(1)+", possede un prix de depart de "+rs.getDouble(2)+"$, le proprietaire est "+rs.getString(3)+", "+bafouille+", expire dans "+rs.getString(6)+" ");
  245. }
  246. }catch (SQLException se){
  247. System.out.println("Erreur, "+se.getMessage());
  248. }
  249. }
  250.  
  251. private static void visiterTousSesObjets(Connection connection, String login){
  252. try {
  253. String owner ="'"+login+"'";
  254. PreparedStatement ps;
  255. Statement s = connection.createStatement();
  256. s.execute("SELECT update_sales();");
  257.  
  258. ps = connection.prepareStatement("SELECT * FROM projet.getOwnerSalesAndBids WHERE \"Proprietaire\"="+owner+";");
  259. ResultSet rs = ps.executeQuery();
  260. String bafouille="";
  261. while(rs.next()){
  262. if(rs.getInt(5)==0){
  263. bafouille="ne possede pas encore de meilleur enchere";
  264. }
  265. else{
  266. bafouille="a comme meilleur enchere, l'enchere ayant l'id "+rs.getInt(5)+" dont le montant est de "+rs.getDouble(6)+"$";
  267. }
  268. System.out.println(rs.getString(4)+" ayant l'id " +rs.getInt(1)+", possede un prix de depart de "+rs.getDouble(2)+"$,"+bafouille);
  269. }
  270. }catch (SQLException se){
  271. System.out.println("Erreur, "+se.getMessage());
  272. }
  273. }
  274.  
  275. /**
  276. * Afficher, pour chaque objet sur lequel Damas a enchéri dans les 15 derniers jours, la meilleure enchère de l’utilisateur, sa date ainsi que son statut. -> une enchère remportée, une enchère annulée.
  277. * @param connection
  278. * @param login
  279. */
  280. private static void visiterSesEnchere(Connection connection, String login){
  281. String bidder="'"+login+"'";
  282. try {
  283. Statement s = connection.createStatement();
  284. s.execute("SELECT update_sales();");
  285. PreparedStatement ps;
  286. ps = connection.prepareStatement("SELECT * FROM projet.getOwnerBids WHERE \"Encherisseur\"="+bidder+";");
  287. ResultSet rs = ps.executeQuery();
  288. while(rs.next()){
  289. System.out.println("L'enchere ayant comme valeur "+ rs.getDouble(2)+ "$, dont la date est "+ rs.getDate(4) + " a comme statut "+rs.getString(5));
  290. }
  291. }catch (SQLException se){
  292. System.out.println("Erreur, "+se.getMessage());
  293. }
  294. }
  295.  
  296.  
  297. private static void visiterEvaluation(Connection connection, String login){
  298. String bidder="'"+login+"'";
  299. try {
  300. PreparedStatement ps;
  301. ps = connection.prepareStatement("SELECT * FROM projet.getOwnerReviews WHERE \"Evalue\"="+bidder+";");
  302. ResultSet rs = ps.executeQuery();
  303. while(rs.next()){
  304. System.out.println("L'evaluation a porte sur la transaction ayant l'id "+rs.getInt(1)+ "a ete donnee par "+rs.getString(3)+" avec la note de "+ rs.getInt(4)+ " avec en commentaire: "+ rs.getString(5));
  305. }
  306. }catch (SQLException se){
  307. System.out.println("Erreur, "+se.getMessage());
  308. }
  309. }
  310.  
  311.  
  312. private static void visiterTransaction(Connection connection, String login){
  313. String bidder="'"+login+"'";
  314. try {
  315. PreparedStatement ps;
  316. ps = connection.prepareStatement("SELECT * FROM projet.getOwnerTransaction WHERE \"Acheteur\"="+bidder+";");
  317. ResultSet rs = ps.executeQuery();
  318. while(rs.next()){
  319. System.out.println("La transaction, a porte sur l'objet ayant l'id "+rs.getInt(1)+ " vendu par "+rs.getString(2)+", et a ete effectuee a la date "+ rs.getDate(4));
  320. }
  321. }catch (SQLException se){
  322. System.out.println("Erreur, "+se.getMessage());
  323. }
  324. }
  325.  
  326. /**
  327. * Allow the owner to put a sale
  328. * @param owner
  329. * @param connection
  330. * @return the id of the sale
  331. */
  332. public static int mettreObjetEnVente(String owner,Connection connection){
  333. try {
  334.  
  335. System.out.println("Veuillez inserer les informations concernant la vente comme suit:");
  336. System.out.println("Le prix de base pour la vente:");
  337. double prix = scanner.nextDouble();
  338. System.out.println("La description de votre objet (separer votre description avec des \" _ \")");
  339. String description = scanner.next();
  340. System.out.println("La date d'expiration de votre enchere, son type (month,days, minutes ou aucune si pas de date voulue):");
  341. String date = scanner.next();
  342. System.out.println("Le nombre (de mois,jours ou minutes)");
  343. int nbr = scanner.nextInt();
  344. String datecoller = "'"+nbr+" "+date+"'";
  345. String o= "'"+owner+"'";
  346.  
  347. PreparedStatement ps;
  348. if(date.equals("aucune"))
  349. ps = connection.prepareStatement("SELECT projet.addSale(?,?,"+o+");");
  350. else
  351. ps = connection.prepareStatement("SELECT projet.addSale(?,?,"+o+",(NOW()+interval "+datecoller+")::timestamp);");
  352.  
  353. ps.setDouble(1, prix);
  354. ps.setString(2, description);
  355. ResultSet rs = ps.executeQuery();
  356. while(rs.next()){
  357. return rs.getInt(1);
  358. }
  359. }catch (SQLException se){
  360. System.out.println("Erreur, "+se.getMessage());
  361. }
  362. return -1;
  363. }
  364.  
  365.  
  366. /**
  367. * Allow the owner to modify his sale only if there isn't bid on it
  368. * @param owner
  369. * @param connection
  370. * @return boolean if the modification succeed
  371. */
  372. public static boolean modifierObjet(String owner,Connection connection){
  373. try {
  374. System.out.println("Voici la liste de tous vos objets:");
  375. visiterTousSesObjets(connection, owner);
  376.  
  377.  
  378. System.out.println("Quel objet voulez vous modifier? (inserer son ID)");
  379. int obj = scanner.nextInt();
  380. System.out.println("Veuillez inserer les nouvelles informations concernant la vente comme suit:");
  381. System.out.println("Le nouveau prix de base pour la vente:");
  382. double prix = scanner.nextDouble();
  383. System.out.println("La nouvelle description de votre objet:");
  384. String description = scanner.next();
  385. System.out.println("La nouvelle date d'expiration de votre enchere, son type (month,days, minutes ou aucune si pas de date voulue):");
  386. String date = scanner.next();
  387. String o= "'"+owner+"'";
  388.  
  389. Statement s = connection.createStatement();
  390. s.execute("SELECT update_sales();");
  391.  
  392. PreparedStatement ps;
  393. if (date.equals("aucune")) {
  394. ps = connection.prepareStatement("SELECT projet.modifySale(?,?,?,"+o+", NULL);");
  395. } else {
  396. System.out.println("Le nombre (de mois,jours ou minutes)");
  397. int nbr = scanner.nextInt();
  398. String datecoller = "'"+nbr+" "+date+"'";
  399.  
  400. ps = connection.prepareStatement("SELECT projet.modifySale(?,?,?,"+o+",(NOW()+interval ?)::timestamp);");
  401. ps.setString(4, datecoller);
  402.  
  403. }
  404.  
  405. ps.setInt(1, obj);
  406. ps.setDouble(2, prix);
  407. ps.setString(3, description);
  408. ResultSet rs = ps.executeQuery();
  409. while(rs.next())
  410. return true;
  411. }catch (SQLException se){
  412. System.out.println("Erreur, "+se.getMessage());
  413. se.printStackTrace();
  414. return false;
  415. }
  416. return false;
  417. }
  418.  
  419. /**
  420. * Allow the owner to accept the best bid on his sale
  421. * @param owner
  422. * @param connection
  423. * @return boolean if the deal has been accepted
  424. */
  425. public static boolean accepter(String owner,Connection connection){
  426. try {
  427.  
  428. System.out.println("Veuillez inserer l'id de l'objet pour lequel vous voulez accepter la meilleure enchere");
  429. int obj= scanner.nextInt();
  430. String o= "'"+owner+"'";
  431.  
  432. Statement s = connection.createStatement();
  433. s.execute("SELECT update_sales();");
  434.  
  435. PreparedStatement ps;
  436. ps = connection.prepareStatement("SELECT projet.finalizeSale(?,"+o+");");
  437. ps.setInt(1, obj);
  438. ResultSet rs = ps.executeQuery();
  439. while(rs.next()){
  440. return true;
  441. }
  442. }catch (SQLException se){
  443. System.out.println("Erreur, "+se.getMessage());
  444. }
  445. return false;
  446. }
  447.  
  448.  
  449. /**
  450. * Allow to make a bid
  451. * @param bidder
  452. * @param connection
  453. * @return the id of the bid done
  454. */
  455. public static int faireEnchere(String bidder,Connection connection){
  456. try {
  457. System.out.println("Voici la liste de tous les objets en vente actuellement:");
  458. visiterTousObjets(connection, bidder);
  459.  
  460. System.out.println("Veuillez inserer les informations concernant la vente comme suit:");
  461. System.out.println("Le prix de votre enchere pour la vente:");
  462. double prix = scanner.nextDouble();
  463. System.out.println("Surquel objet voulez vous encherir (son id):");
  464. int obj=scanner.nextInt();
  465. String o= "'"+bidder+"'";
  466.  
  467. Statement s = connection.createStatement();
  468. s.execute("SELECT update_sales();");
  469. PreparedStatement ps;
  470. ps = connection.prepareStatement("SELECT projet.addBid(?,?, "+o+");");
  471.  
  472. ps.setInt(1, obj);
  473. ps.setDouble(2, prix);
  474. ResultSet rs = ps.executeQuery();
  475. while(rs.next()){
  476. return rs.getInt(1);
  477. }
  478. }catch (SQLException se){
  479. System.out.println("Erreur, "+ se.getMessage());
  480. }
  481. return -1;
  482. }
  483.  
  484.  
  485. /**
  486. * Allow the user to give an evaluation
  487. * @param giver
  488. * @param connection
  489. * @return the id of the evaluation
  490. */
  491. public static int evaluate(String giver,Connection connection){
  492. try {
  493.  
  494. System.out.println("Quelle transaction voulez vous evaluee (son id):");
  495. int eval=scanner.nextInt();
  496. System.out.println("Quelle est la personne que vous voulez evaluee (son login):");
  497. String receiver=scanner.next();
  498. String o= "'"+giver+"'";
  499. System.out.println("Quel note vous lui attribuer: (entre 1 et 5) ");
  500. int note = scanner.nextInt();
  501. System.out.println("Desirer vous mettre un commentaire dessus ?");
  502. scanner.nextLine();
  503. String description = scanner.nextLine();
  504.  
  505. Statement s = connection.createStatement();
  506. s.execute("SELECT update_sales();");
  507. PreparedStatement ps;
  508. ps = connection.prepareStatement("SELECT projet.addReview(?,?,"+o+",?,?);");
  509. ps.setInt(1, eval);
  510. ps.setString(2, receiver);
  511. ps.setInt(3,note);
  512. ps.setString(4, description);
  513. ResultSet rs = ps.executeQuery();
  514. while(rs.next()){
  515. return rs.getInt(1);
  516. }
  517. }catch (SQLException se){
  518. System.out.println("Erreur, "+ se.getMessage());
  519. }
  520. return -1;
  521. }
  522. }
Add Comment
Please, Sign In to add comment