· 7 years ago · Jan 06, 2019, 09:14 PM
1/*
2 * To change this license header, choose License Headers in Project Properties.
3 * To change this template file, choose Tools | Templates
4 * and open the template in the editor.
5 */
6package lapr.project.utils;
7
8import java.io.File;
9import java.io.FileNotFoundException;
10import java.sql.SQLException;
11
12import java.util.ArrayList;
13import java.util.HashSet;
14import java.util.List;
15import java.util.Scanner;
16import java.util.Set;
17import lapr.project.data.ParkDB;
18import lapr.project.data.UserDB;
19import lapr.project.model.exceptions.InvalidCreditNumberException;
20import lapr.project.model.exceptions.InvalidEmailException;
21
22import lapr.project.model.user.Role;
23import lapr.project.model.user.User;
24
25/**
26 *
27 * @author pedro
28 */
29public class ReadFileUser {
30
31 private UserDB userDB = new UserDB();
32 private Double height = 1.70;
33 private Role role;
34
35 public int readFileUser(String fileName) throws InvalidEmailException, InvalidCreditNumberException {
36 int addUsers = 0;
37 User user;
38
39 File file = new File(fileName);
40 System.out.println(fileName);
41 Long creditCardNumber = 100000000000000L;
42
43 List<User> addedUsers = new ArrayList<>();
44 try {
45 try (Scanner inputStream = new Scanner(file)) {
46
47 while (inputStream.hasNext()) {
48 String[] line = inputStream.nextLine().split(";");
49 if (!(line.length == 1)) {
50 // line = inputStream.nextLine().split(";");
51
52 String username = line[0];
53 String auxUsername;
54 String a1 = line[1];
55 String a2 = line[2];
56
57 if (!line[1].matches("[A-Za-z]") && !line[2].matches("[A-Za-z]")) {
58 Double weight = Double.parseDouble(a1);
59 Double velocity = Double.parseDouble(a2);
60
61 if (weight > 0 && weight <= 150 && velocity > 0) {
62
63 creditCardNumber = creditCardNumber + 1L;
64
65 user = new User(username, line[0], line[0] + "@gmail.com", creditCardNumber, height, weight, velocity, Role.RIDER);
66
67 addedUsers.add(user);
68
69 } else {
70// System.console().writer().println("Username invalid! " + System.lineSeparator());
71// System.console().writer().println("User : " + line[0] + " Weight : " + line[1] + " Velocity : " + line[2]);
72 }
73
74 }
75
76 }
77 }
78 }
79 } catch (FileNotFoundException e) {
80 e.printStackTrace();
81 }
82
83// try {
84// for (int i = 0; i < addedUsers.size(); i++) {
85//
86// userDB.addUser(addedUsers.get(i));
87// addUsers++;
88// }
89// } catch (Exception e) {
90// e.printStackTrace();
91// }
92
93
94 System.out.println(addedUsers.size() + " tamamanho");
95
96 List<User> currentUsers = userDB.getUsersList();
97
98
99 List<Integer> removeUsers = new ArrayList<>();
100
101 //verificar duplicado guardar posiçao
102 for (int i = 0; i < addedUsers.size() - 1; i++) {
103 for (int j = i + 1; j < addedUsers.size(); j++) {
104 if (addedUsers.get(i).equals(addedUsers.get(j))) {
105 System.out.println(addedUsers.get(i));
106 removeUsers.add(j);
107 }
108 }
109 }
110
111 //vai remover pela posiçao o user reptido guardado na lista
112 for (int i = 0; i < addedUsers.size(); i++) {
113 if (removeUsers.contains(i)) {
114 addedUsers.remove(i);
115 }
116 }
117
118 //limpa lista
119 removeUsers.clear();
120
121 //compara com a db
122 for (int i = 0; i < addedUsers.size(); i++) {
123 if (currentUsers.contains(addedUsers.get(i))) {
124 // System.out.println(addedUsers.get(i));
125 removeUsers.add(i);
126 }
127 }
128
129 //remove da que pretendo add
130 for (int i = 0; i < addedUsers.size(); i++) {
131 if (removeUsers.contains(i)) {
132 addedUsers.remove(i);
133 }
134 }
135
136 //adiciona db
137 for (int i = 0; i < addedUsers.size(); i++) {
138
139 userDB.addUser(addedUsers.get(i));
140 }
141 return addUsers;
142 }
143}