· 5 years ago · Feb 02, 2020, 10:40 PM
1KORISNICIMODEL
2
3package ba.unsa.etf.rpr.t7;
4
5import javafx.beans.property.SimpleObjectProperty;
6import javafx.collections.FXCollections;
7import javafx.collections.ObservableList;
8
9import java.io.FileInputStream;
10import java.io.FileNotFoundException;
11import java.sql.*;
12import java.util.ArrayList;
13import java.util.Scanner;
14
15public class KorisniciModel {
16 private ObservableList<Korisnik> korisnici = FXCollections.observableArrayList();
17 private SimpleObjectProperty<Korisnik> trenutniKorisnik = new SimpleObjectProperty<>();
18 private Connection conn;
19 private PreparedStatement dajSveKorisnikeUpit,promijeniKorisnikaUpit,odrediIdKorisnikaUpit;
20
21 public KorisniciModel() {
22 try {
23 conn= DriverManager.getConnection("jdbc:sqlite:korisnici.db");
24 } catch (SQLException e) {
25 e.printStackTrace();
26 }
27 try{
28 dajSveKorisnikeUpit=conn.prepareStatement("select * from korisnik");
29 }
30 catch (SQLException e){
31 regenerisiBazu();
32 try{
33 dajSveKorisnikeUpit=conn.prepareStatement("select * from korisnik");
34 }
35 catch (SQLException e1){
36 e1.printStackTrace();
37 }
38 }
39 try {
40 promijeniKorisnikaUpit = conn.prepareStatement("UPDATE korisnik SET ime=?, prezime=?, email=?, korisnicko_ime=?, lozinka=? WHERE id=?");
41 odrediIdKorisnikaUpit = conn.prepareStatement("SELECT Max(id)+1 FROM korisnik");
42 }
43 catch(SQLException e){
44 e.printStackTrace();
45 }
46 }
47
48 private void regenerisiBazu() {
49 Scanner ulaz= null;
50 try {
51 ulaz = new Scanner(new FileInputStream("korisnici.db.sql"));
52 } catch (FileNotFoundException e) {
53 e.printStackTrace();
54 }
55 String sqlUpit="";
56 while(ulaz.hasNext()){
57 sqlUpit+=ulaz.nextLine();
58 if(sqlUpit.charAt(sqlUpit.length()-1)==';'){
59 try {
60 Statement st=conn.createStatement();
61 st.execute(sqlUpit);
62 sqlUpit="";
63 } catch (SQLException e) {
64 e.printStackTrace();
65 }
66 }
67 }
68 ulaz.close();
69 }
70 private Korisnik dajKorisnikaIzResultSeta(ResultSet rs) throws SQLException {
71 Korisnik kor = new Korisnik(rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6));
72 kor.setId(rs.getInt(1));
73 return kor;
74 }
75
76 public void napuni() {
77 korisnici.removeAll();
78 try {
79 ResultSet rs=dajSveKorisnikeUpit.executeQuery();
80 while(rs.next())
81 {
82 Korisnik kor = dajKorisnikaIzResultSeta(rs);
83 korisnici.add(kor);
84 }
85 } catch (SQLException e) {
86 e.printStackTrace();
87 }
88 trenutniKorisnik.set(null);
89 }
90 public void diskonektuj(){
91 try{
92 conn.close();
93 } catch (SQLException e) {
94 e.printStackTrace();
95 }
96 }
97
98 public void izmijeniKorisnika(Korisnik kor){
99 try {
100 promijeniKorisnikaUpit.setString(1,kor.getIme());
101 promijeniKorisnikaUpit.setString(2,kor.getPrezime());
102 promijeniKorisnikaUpit.setString(3, kor.getEmail());
103 promijeniKorisnikaUpit.setString(4, kor.getUsername());
104 promijeniKorisnikaUpit.setString(5, kor.getPassword());
105 promijeniKorisnikaUpit.setInt(6, kor.getId());
106 promijeniKorisnikaUpit.executeUpdate();
107 } catch (SQLException e) {
108 e.printStackTrace();
109 }
110 }
111
112 public ObservableList<Korisnik> getKorisnici() {
113 return korisnici;
114 }
115
116 public void setKorisnici(ObservableList<Korisnik> korisnici) {
117 this.korisnici = korisnici;
118 }
119
120 public Korisnik getTrenutniKorisnik() {
121 return trenutniKorisnik.get();
122 }
123
124 public SimpleObjectProperty<Korisnik> trenutniKorisnikProperty() {
125 return trenutniKorisnik;
126 }
127
128 public void setTrenutniKorisnik(Korisnik trenutniKorisnik) {
129 this.trenutniKorisnik.set(trenutniKorisnik);
130 }
131
132 public void setTrenutniKorisnik(int i) {
133 this.trenutniKorisnik.set(korisnici.get(i));
134 }
135}
136___________________________________________________________________________
137KORISNICICONTROLLER
138
139package ba.unsa.etf.rpr.t7;
140
141import javafx.event.ActionEvent;
142import javafx.fxml.FXML;
143import javafx.scene.control.ListView;
144import javafx.scene.control.PasswordField;
145import javafx.scene.control.TextField;
146
147public class KorisnikController {
148 public TextField fldIme;
149 public TextField fldPrezime;
150 public TextField fldEmail;
151 public TextField fldUsername;
152 public ListView<Korisnik> listKorisnici;
153 public PasswordField fldPassword;
154
155 private KorisniciModel model;
156
157 public KorisnikController(KorisniciModel model) {
158 this.model = model;
159 }
160
161 @FXML
162 public void initialize() {
163 listKorisnici.setItems(model.getKorisnici());
164 listKorisnici.getSelectionModel().selectedItemProperty().addListener((obs, oldKorisnik, newKorisnik) -> {
165 model.setTrenutniKorisnik(newKorisnik);
166 listKorisnici.refresh();
167 });
168
169 model.trenutniKorisnikProperty().addListener((obs, oldKorisnik, newKorisnik) -> {
170 if (oldKorisnik != null) {
171 model.izmijeniKorisnika(oldKorisnik);
172 fldIme.textProperty().unbindBidirectional(oldKorisnik.imeProperty() );
173 fldPrezime.textProperty().unbindBidirectional(oldKorisnik.prezimeProperty() );
174 fldEmail.textProperty().unbindBidirectional(oldKorisnik.emailProperty() );
175 fldUsername.textProperty().unbindBidirectional(oldKorisnik.usernameProperty() );
176 fldPassword.textProperty().unbindBidirectional(oldKorisnik.passwordProperty() );
177 }
178 if (newKorisnik == null) {
179 fldIme.setText("");
180 fldPrezime.setText("");
181 fldEmail.setText("");
182 fldUsername.setText("");
183 fldPassword.setText("");
184 }
185 else {
186 fldIme.textProperty().bindBidirectional( newKorisnik.imeProperty() );
187 fldPrezime.textProperty().bindBidirectional( newKorisnik.prezimeProperty() );
188 fldEmail.textProperty().bindBidirectional( newKorisnik.emailProperty() );
189 fldUsername.textProperty().bindBidirectional( newKorisnik.usernameProperty() );
190 fldPassword.textProperty().bindBidirectional( newKorisnik.passwordProperty() );
191 }
192 });
193
194 fldIme.textProperty().addListener((obs, oldIme, newIme) -> {
195 if (!newIme.isEmpty()) {
196 fldIme.getStyleClass().removeAll("poljeNijeIspravno");
197 fldIme.getStyleClass().add("poljeIspravno");
198 } else {
199 fldIme.getStyleClass().removeAll("poljeIspravno");
200 fldIme.getStyleClass().add("poljeNijeIspravno");
201 }
202 });
203
204 fldPrezime.textProperty().addListener((obs, oldIme, newIme) -> {
205 if (!newIme.isEmpty()) {
206 fldPrezime.getStyleClass().removeAll("poljeNijeIspravno");
207 fldPrezime.getStyleClass().add("poljeIspravno");
208 } else {
209 fldPrezime.getStyleClass().removeAll("poljeIspravno");
210 fldPrezime.getStyleClass().add("poljeNijeIspravno");
211 }
212 });
213
214 fldEmail.textProperty().addListener((obs, oldIme, newIme) -> {
215 if (!newIme.isEmpty()) {
216 fldEmail.getStyleClass().removeAll("poljeNijeIspravno");
217 fldEmail.getStyleClass().add("poljeIspravno");
218 } else {
219 fldEmail.getStyleClass().removeAll("poljeIspravno");
220 fldEmail.getStyleClass().add("poljeNijeIspravno");
221 }
222 });
223
224 fldUsername.textProperty().addListener((obs, oldIme, newIme) -> {
225 if (!newIme.isEmpty()) {
226 fldUsername.getStyleClass().removeAll("poljeNijeIspravno");
227 fldUsername.getStyleClass().add("poljeIspravno");
228 } else {
229 fldUsername.getStyleClass().removeAll("poljeIspravno");
230 fldUsername.getStyleClass().add("poljeNijeIspravno");
231 }
232 });
233
234 fldPassword.textProperty().addListener((obs, oldIme, newIme) -> {
235 if (!newIme.isEmpty()) {
236 fldPassword.getStyleClass().removeAll("poljeNijeIspravno");
237 fldPassword.getStyleClass().add("poljeIspravno");
238 } else {
239 fldPassword.getStyleClass().removeAll("poljeIspravno");
240 fldPassword.getStyleClass().add("poljeNijeIspravno");
241 }
242 });
243 }
244
245 public void dodajAction(ActionEvent actionEvent) {
246 model.getKorisnici().add(new Korisnik("", "", "", "", ""));
247 listKorisnici.getSelectionModel().selectLast();
248 }
249
250 public void krajAction(ActionEvent actionEvent) {
251 System.exit(0);
252 }
253}
254_______________________________________________________________________________
255KORISNIK
256package ba.unsa.etf.rpr.t7;
257
258import javafx.beans.property.SimpleIntegerProperty;
259import javafx.beans.property.SimpleStringProperty;
260
261public class Korisnik {
262 private SimpleStringProperty ime, prezime, email, username, password;
263 private SimpleIntegerProperty id;
264
265 public Korisnik(String ime, String prezime, String email, String username, String password) {
266 this.ime = new SimpleStringProperty(ime);
267 this.prezime = new SimpleStringProperty(prezime);
268 this.email = new SimpleStringProperty(email);
269 this.username = new SimpleStringProperty(username);
270 this.password = new SimpleStringProperty(password);
271 this.id=new SimpleIntegerProperty(1);
272 }
273
274 public int getId() {
275 return id.get();
276 }
277
278 public SimpleIntegerProperty idProperty() {
279 return id;
280 }
281
282 public void setId(int id) {
283 this.id.set(id);
284 }
285
286 @Override
287 public String toString() {
288 return prezime.get() + " " + ime.get();
289 }
290
291 public String getIme() {
292 return ime.get();
293 }
294
295 public SimpleStringProperty imeProperty() {
296 return ime;
297 }
298
299 public void setIme(String ime) {
300 this.ime.set(ime);
301 }
302
303 public String getPrezime() {
304 return prezime.get();
305 }
306
307 public SimpleStringProperty prezimeProperty() {
308 return prezime;
309 }
310
311 public void setPrezime(String prezime) {
312 this.prezime.set(prezime);
313 }
314
315 public String getEmail() {
316 return email.get();
317 }
318
319 public SimpleStringProperty emailProperty() {
320 return email;
321 }
322
323 public void setEmail(String email) {
324 this.email.set(email);
325 }
326
327 public String getUsername() {
328 return username.get();
329 }
330
331 public SimpleStringProperty usernameProperty() {
332 return username;
333 }
334
335 public void setUsername(String username) {
336 this.username.set(username);
337 }
338
339 public String getPassword() {
340 return password.get();
341 }
342
343 public SimpleStringProperty passwordProperty() {
344 return password;
345 }
346
347 public void setPassword(String password) {
348 this.password.set(password);
349 }
350
351
352}
353_________________________________________________________________
354KORISNICI.DB.SQL
355
356BEGIN TRANSACTION;
357CREATE TABLE IF NOT EXISTS "korisnik" (
358 "id" INTEGER,
359 "ime" TEXT,
360 "prezime" TEXT,
361 "email" TEXT,
362 "korisnicko_ime" TEXT,
363 "lozinka" TEXT,
364 PRIMARY KEY("id")
365);
366INSERT INTO "korisnik" VALUES (1,'Vedran','Ljubović','vljubovic@etf.unsa.ba','vedranlj','test');
367INSERT INTO "korisnik" VALUES (2,'Amra','Delić','adelic@etf.unsa.ba','amrad','test');
368INSERT INTO "korisnik" VALUES (3,'Tarik','Sijerčić','tsijercic@etf.unsa.ba','tsijercic','test');
369INSERT INTO "korisnik" VALUES (4,'Rijad','Fejzić','rfejzic@etf.unsa.ba','rfejzic','test');
370COMMIT;
371____________________________________________________________________________