Untitled
//POGODI CIFRE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //Kreiranje brojeva na serverskoj strani-pogodi cifre, pise su inicijalizaciji sfe tblBrojevi.getModel().addTableModelListener(new TableModelListener() { @Override public void tableChanged(TableModelEvent e) { if(Kontroler.getInstanca().getBrojevi().size()>=3) { JOptionPane.showMessageDialog(null, "Uneli ste 3 broja"); } else{ int red=e.getFirstRow(); int kolona=e.getColumn(); TableModel model=(TableModel) e.getSource(); if(model.getValueAt(red, kolona)!=null) { int vrednost=(int) model.getValueAt(red, kolona); Broj broj=new Broj(kolona, red, vrednost); boolean postoji=Kontroler.getInstanca().postoji(broj); if(postoji) { model.setValueAt(null, red, kolona); JOptionPane.showMessageDialog(null, "Broj je vec unet"); } else { Kontroler.getInstanca().dodajBroj(broj); if(Kontroler.getInstanca().getBrojevi().size()==3) { btnPokreniServer.setEnabled(true); } } } } } }); //Biranje brojeva na klijentskoj strani na tbl mouseClicked private int brojPokusaja=0;//Nalazi se iznad inicijalizacije private int brojPogodjenih=0;//Da bi se znalo da li je pobedio if(brojPokusaja<5) { JTable tabela=(JTable) evt.getSource(); Point point=evt.getPoint(); int red=tabela.rowAtPoint(point); int kolona=tabela.columnAtPoint(point); if(red!=-1 && kolona!=-1) { System.out.println("Koordinate "+red+" "+kolona); Broj broj=new Broj(kolona, red, -1); KlijentskiZahtev kz=new KlijentskiZahtev(Operacije.POGODI_BROJ, broj); Komunikacija.getInstanca().posaljiZahtev(kz); ServerskiOdgovor so=Komunikacija.getInstanca().primiOdgovor(); Broj br1=(Broj) so.getOdgovor(); //TableModel model=(TableModel) evt.getSource(); if(br1==null) { //model tabela.setValueAt(-1, red, kolona); } else { //model tabela.setValueAt(br1.getVrednost(), br1.getRed(), br1.getKolona()); brojPogodjenih++; if(brojPogodjenih==3) { JOptionPane.showMessageDialog(null, "Pobedili ste"); this.dispose(); } } brojPokusaja++; } } else { JOptionPane.showMessageDialog(null, "Izgubili ste"); this.dispose(); } //Kontroler private List<User> admini=new ArrayList<>(); private List<Broj> brojevi=new ArrayList<>(); private User ulogovani=null;//Polja public void dodajBroj(Broj broj) { brojevi.add(broj); System.out.println(brojevi); } public boolean postoji(Broj broj) { for(Broj br: brojevi) { if(br.getVrednost()==broj.getVrednost()) { return true; } } return false; } //BINGO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! private int rb; private String kombinacija; private int brojPogodjenihNaMestu; private int brojPogodjenihVanMesta; //private int rezultat; private int id; private Date datumVreme; private String dobitnaKombinacija; private int brojPokusaja; private String rezultat;//Pobedio, ili izgubio private List<Igra> igra;//Nema u bazi //DBBroker public void sacuvajIgru(RezultatIgre rezultat) { int idRezultata=-1; try { String upit="INSERT INTO rezultat(datumVreme, dobitnaKombinacija, brojPokusaja, rezultat) VALUES(?, ?, ?, ?)"; PreparedStatement ps=Konekcija.getInstanca().getKonekcija().prepareStatement(upit, Statement.RETURN_GENERATED_KEYS); java.sql.Timestamp datumTS=new java.sql.Timestamp(rezultat.getDatumVreme().getTime()); ps.setTimestamp(1, datumTS); ps.setString(2, rezultat.getDobitnaKombinacija()); ps.setInt(3, rezultat.getBrojPokusaja()); ps.setString(4, rezultat.getRezultat()); ps.executeUpdate(); ResultSet rs=ps.getGeneratedKeys(); if(rs.next()) { idRezultata=rs.getInt(1); } String upit1="INSERT INTO igra(datumVreme, dobitnaKombinacija, brojPokusaja, rezultat) VALUES(?, ?, ?, ?)"; PreparedStatement ps1=Konekcija.getInstanca().getKonekcija().prepareStatement(upit1); for (Igra igra: rezultat.getIgra()) { ps1.setString(1, igra.getKombinacija()); ps1.setInt(2, igra.getBrojPogodjenihNaMestu()); ps1.setInt(3, igra.getBrojPogodjenihVanMesta()); ps1.setInt(4, idRezultata); ps1.addBatch(); } ps1.executeBatch(); Konekcija.getInstanca().getKonekcija().commit(); } catch (SQLException ex) { Logger.getLogger(DBBroker.class.getName()).log(Level.SEVERE, null, ex); } } //Nit Server private boolean kraj=false; private JLabel lblBroj1; private JLabel lblBroj2; private JLabel lblBroj3; private JLabel lblBroj4; public Nit(JLabel lblBroj1, JLabel lblBroj2, JLabel lblBroj3, JLabel lblBroj4) { this.lblBroj1 = lblBroj1; this.lblBroj2 = lblBroj2; this.lblBroj3 = lblBroj3; this.lblBroj4 = lblBroj4; } @Override public void run() { while(!kraj) { int broj1=(int) Math.round(Math.random()*5); int broj2=(int) Math.round(Math.random()*5); int broj3=(int) Math.round(Math.random()*5); int broj4=(int) Math.round(Math.random()*5); lblBroj1.setText(broj1+""); lblBroj2.setText(broj2+""); lblBroj3.setText(broj3+""); lblBroj4.setText(broj4+""); try { Thread.sleep(200); } catch (InterruptedException ex) { Logger.getLogger(Nit.class.getName()).log(Level.SEVERE, null, ex); } } } public void zaustaviNit() { System.out.println("Nit je prekinuta"); kraj=true; interrupt(); } //ModelTabeleIgre public List<Igra> getListaIgre() { return listaIgre; } void dodajIgri(Igra igra) { int rb=listaIgre.size()+1; igra.setRb(rb); listaIgre.add(igra); fireTableDataChanged(); } //Kontroler private static Kontroler instanca; private DBBroker db; private ServerskaForma sf; private List<Igra> igre; private RezultatIgre rezultat; public Kontroler() { db=new DBBroker(); igre=new ArrayList<>(); rezultat=new RezultatIgre(-1, new Date(), null, -1, "izgubio", igre); } public static Kontroler getInstanca() { if(instanca==null) { instanca=new Kontroler(); } return instanca; } public void sacuvajIgru() { rezultat.setDobitnaKombinacija(sf.vratiKombinaciju()); rezultat.setBrojPokusaja(igre.size()); db.sacuvajIgru(rezultat); } public Igra pogadjaj(Igra igra) { if(igre.size()>5) { return igra; } String kombinacijuNaServeru=sf.vratiKombinaciju(); String kombinacijaNaKlijentu=igra.getKombinacija(); int brojacNaMestu=0; int brojacVanMesta=0; String[] niz1=kombinacijuNaServeru.split("-"); String[] niz2=kombinacijaNaKlijentu.split("-"); if(niz1[0].equals(niz2[0])) { brojacNaMestu++; } else { if(kombinacijaNaKlijentu.contains(niz1[0])) { brojacVanMesta++; } } if(niz1[1].equals(niz2[1])) { brojacNaMestu++; } else { if(kombinacijaNaKlijentu.contains(niz1[1])) { brojacVanMesta++; } } if(niz1[2].equals(niz2[2])) { brojacNaMestu++; } else { if(kombinacijaNaKlijentu.contains(niz1[2])) { brojacVanMesta++; } } if(niz1[3].equals(niz2[3])) { brojacNaMestu++; } else { if(kombinacijaNaKlijentu.contains(niz1[3])) { brojacVanMesta++; } } igra.setBrojPogodjenihNaMestu(brojacNaMestu); igra.setBrojPogodjenihVanMesta(brojacVanMesta); igre.add(igra); if(brojacNaMestu==4) { rezultat.setRezultat("pobedio"); } return igra; } public void setSf(ServerskaForma sf) { this.sf = sf; } public List<Igra> getIgre() { return igre; } public void setIgre(List<Igra> igre) { this.igre = igre; } public RezultatIgre getRezultat() { return rezultat; } public void setRezultat(RezultatIgre rezultat) { this.rezultat = rezultat; } //btnPosaljiKombinaciju na klijentskoj formi brojPokusaja++; if(brojPokusaja<=6) { String kombinacija=lblBroj1.getText()+"-"+lblBroj2.getText()+"-"+lblBroj3.getText()+"-"+lblBroj4.getText(); Igra igra=new Igra(-1, kombinacija, -1, -1); KlijentskiZahtev kz=new KlijentskiZahtev(Operacije.POGADJAJ, igra); Komunikacija.getInstanca().posaljiZahtev(kz); ServerskiOdgovor so=Komunikacija.getInstanca().primiOdgovor(); igra=(Igra) so.getOdgovor(); lblBrojPogodjenihNaMestu.setText(igra.getBrojPogodjenihNaMestu()+""); lblBrojPogodjenihVanMesta.setText(igra.getBrojPogodjenihVanMesta()+""); ModelTabeleIgra mti=(ModelTabeleIgra) tblIgra.getModel(); mti.dodajIgri(igra); } else { JOptionPane.showMessageDialog(this, "Nemate vise pokusaja na raspolaganju"); } // VESALA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //btnPokreniIgru na serverskoj formi Kontroler.getInstanca().setSf(this); ---- KontrolerK.getInstanca().setKf(this); List<ObradaKlijentskihZahteva> klijenti=Kontroler.getInstanca().getKlijenti(); if(klijenti.size()==2) { odabranaRec=(String) cmbOdaberiRec.getSelectedItem(); Kontroler.getInstanca().setOdabranaRec(odabranaRec); txtSlovo1.setText(odabranaRec.charAt(0)+""); txtSlovo2.setText(odabranaRec.charAt(1)+""); txtSlovo3.setText(odabranaRec.charAt(2)+""); txtSlovo4.setText(odabranaRec.charAt(3)+""); txtSlovo5.setText(odabranaRec.charAt(4)+""); //Server mora da obavesti klijente da je igra pocela for(ObradaKlijentskihZahteva k: klijenti) { k.obavestiKlijenta(Operacije.POCELA_IGRA, null); } } else { JOptionPane.showMessageDialog(null, "Cekaju se 2 klijenta"); } //Dodatak za pokreni server Socket s = serverskiSoket.accept(); broj++; System.out.println("KLIJENT JE POVEZAN BROJ "+broj); ObradaKlijentskihZahteva nit = new ObradaKlijentskihZahteva(s,broj); Kontroler.getInstance().getKlijenti().add(nit); nit.start(); //Obrada klijentskih zahteva dodatak private int brojIgraca; //prvi ili drugi private int brojPokusaja=0; private int brojPogodjeni=0; public ObradaKlijentskihZahteva(Socket s,int brojIgraca) { this.s = s; this.brojIgraca = brojIgraca; } //Obrada klijentskih zahteva dodatak public void obavestiKlijenta(int operacije, Object odgovor) { ServerskiOdgovor so=new ServerskiOdgovor(); so.setOperacije(operacije); so.setOdgovor(odgovor); posaljiOdgovor(so); } //Kontroler Server private List<String> zadateReci = new ArrayList<>(); private String odabranaRec; private int brojPogodaka=0; private static Kontroler instance; private List<ObradaKlijentskihZahteva> klijenti = new ArrayList<>(); private ServerskaForma sf; private Kontroler() { zadateReci.add("PETAO"); zadateReci.add("MARKO"); zadateReci.add("PETAR"); zadateReci.add("JANKO"); zadateReci.add("VANJA"); } public static Kontroler getInstance() { if (instance == null) { instance = new Kontroler(); } return instance; } public List<String> getZadateReci() { return zadateReci; } public void setZadateReci(List<String> zadateReci) { this.zadateReci = zadateReci; } public String getOdabranaRec() { return odabranaRec; } public void setOdabranaRec(String odabranaRec) { this.odabranaRec = odabranaRec; } public int brojPogodjenih(Slovo slovo) { List<Slovo> slova = new ArrayList<>(); int brojac=0; char karakter = slovo.getSlovo(); for(int i=0;i<odabranaRec.length();i++){ if(odabranaRec.charAt(i)==karakter){ Slovo novoSlovo = new Slovo(i+1,karakter); slova.add(novoSlovo); brojPogodaka++; brojac++; //slovo.setPozicija(i+1); } } if(slova.size()==0){ slova.add(slovo);//pozicija==-1 } for (ObradaKlijentskihZahteva k : klijenti) { k.obavestiKlijenta(Operacije.POGADJAJ,slova); } return brojac; } public void proveraKrajaIgre( ) { String poruka=""; if(brojPogodaka==5){ if(klijenti.get(0).getBrojPogodjeni()>klijenti.get(1).getBrojPogodjeni()){ poruka = "POBEDIO IGRAC 1"; }else{ poruka = "POBEDIO IGRAC 2"; } }else{ if( klijenti.get(0).getBrojPokusaja()>=10 && klijenti.get(1).getBrojPokusaja()>=10){ poruka = "KOMP JE POBEDIO"; } } if(!poruka.isEmpty() || !poruka.equals("")){ klijenti.get(0).obavestiKlijenta(Operacije.KRAJ_IGRE,poruka); klijenti.get(1).obavestiKlijenta(Operacije.KRAJ_IGRE,poruka); sf.prikaziPorukuKrajIGre(poruka); } } public List<ObradaKlijentskihZahteva> getKlijenti() { return klijenti; } public void setKlijenti(List<ObradaKlijentskihZahteva> klijenti) { this.klijenti = klijenti; } public int getBrojPogodaka() { return brojPogodaka; } public void setBrojPogodaka(int brojPogodaka) { this.brojPogodaka = brojPogodaka; } public ServerskaForma getSf() { return sf; } public void setSf(ServerskaForma sf) { this.sf = sf; } public void osveziLabeleNaFormi() { sf.osveziLabeleNaFormi(); } //Kontroler Klijent private static Kontroler instance; private KlijentskaForma kf; private Kontroler() { } public static Kontroler getInstance() { if(instance==null){ instance= new Kontroler(); } return instance; } public KlijentskaForma getKf() { return kf; } public void setKf(KlijentskaForma kf) { this.kf = kf; } public void pocelaIgra() { kf.pocelaIgra(); } public void postaviSlovoPokusaj(List<Slovo> slova) { //(2,A) (4,A) if(slova.get(0).getPozicija()==-1){ kf.nijePogodjeno(); }else{ kf.jestePogodjeno(); } for (Slovo s : slova) { kf.postaviSlovoPokusaj(s); } } public void krajIgre(String poruka) { kf.krajIgre(poruka); } //btnPogadjaj na klijentskoj formi brojPokusaja++; lblBrojPokusaja.setText(10-brojPokusaja+""); if(brojPokusaja>10) { JOptionPane.showMessageDialog(this, "Nemate vise pokusaja"); btnPogadjaj.setEnabled(false); return; } String slovoTekst=txtUnesiSlovo.getText(); char slovo=Character.toUpperCase(slovoTekst.charAt(0)); Slovo s=new Slovo(-1, slovo); if(pokusanaSlova.contains(slovo)) { JOptionPane.showMessageDialog(this, "Vec je iskorisceno to slovo"); return; } KlijentskiZahtev kz=new KlijentskiZahtev(Operacije.POGADJAJ, s); Komunikacija.getInstanca().posaljiZahtev(kz); //PostaviSlovoPokusaj f-ja if(!pokusanaSlova.contains(slovo.getSlovo())) { pokusanaSlova.add(slovo.getSlovo()); } pokusanaSlova.add(slovo.getSlovo()); slovoPokusaj=slovo; if(slovoPokusaj.getPozicija()==-1) { } else { brojPogodjenih++; if(slovoPokusaj.getPozicija()==1) { txtSlovo1.setText(slovoPokusaj.getSlovo()+""); } ... } //ObradaKlijentskihZahteva ima samo KlijentskiZahtev kz=primiZahtev(); case Operacije.POGADJAJ: int brojSlova=Kontroler.getInstanca().brojPogodjenihSlova((Slovo)kz.getParam()); brojPogodjenih+=brojSlova; brojPokusaja++; Kontroler.getInstanca().proveraKrajaIgre(); break; //Komunikacija dodatak ServerskiOdgovor so=primiOdgovor(); switch(so.getOperacije()) { case Operacije.POCELA_IGRA: KontrolerK.getInstanca().pocelaIgra(); break; case Operacije.POGADJAJ: KontrolerK.getInstanca().postaviSlovoPokusaj((List<Slovo>)so.getOdgovor()); break; case Operacije.KRAJ_IGRE: KontrolerK.getInstanca().krajIgre((String)so.getOdgovor()); break; //CET!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //Prikaz celog teksta poruke tblMouseClicked JTable tabelaPoruka=(JTable) evt.getSource(); Point p=evt.getPoint(); int red=tabelaPoruka.rowAtPoint(p); ModelTabelePoruka mtp=(ModelTabelePoruka) tblPoruke.getModel(); String tekst=mtp.getListaPoruka().get(red).getTekst(); JOptionPane.showMessageDialog(null, tekst); //Kontroler private static Kontroler instanca; private DBBroker db; private List<User> trenutnoUlogovaniKorisnici=new ArrayList<>(); private Admin admin;//Da ne moramo da ga prosledjujemo preko konstruktora forme, vec preko metode za login public Kontroler() { db=new DBBroker(); } public static Kontroler getInstanca() { if(instanca==null) { instanca=new Kontroler(); } return instanca; } public boolean login(Admin admin1) { admin=db.login(admin1); if(admin==null) { return false; } return true; } public boolean proveriKorisnickoIme(String korisnickoIme) { return db.proveriKorisnickoIme(korisnickoIme); } public boolean unesiKorisnika(String korisnickoIme, String lozinka) { return db.unesiKorisnika(korisnickoIme, lozinka); } public List<Poruka> vratiPoruke() { return db.vratiPoruke(); } public User loginUser(User user) { User u=db.loginUser(user); if(!trenutnoUlogovaniKorisnici.contains(u)) { trenutnoUlogovaniKorisnici.add(u); } return u; } public void posaljiSvima(Poruka poruka) { db.posaljiSvima(poruka); } public void posaljiJednom(Poruka poruka) { db.posaljiJednom(poruka); } public Admin getAdmin() { return admin; } public void setAdmin(Admin admin) { this.admin = admin; } public List<User> getTrenutnoUlogovaniKorisnici() { return trenutnoUlogovaniKorisnici; } public void setTrenutnoUlogovaniKorisnici(List<User> trenutnoUlogovaniKorisnici) { this.trenutnoUlogovaniKorisnici = trenutnoUlogovaniKorisnici; } //DBBroker login public Admin login(Admin admin) { Admin a=null; try { String upit="SELECT * FROM admin WHERE korisnickoIme=? AND lozinka=?"; PreparedStatement ps=Konekcija.getInstanca().getKonekcija().prepareStatement(upit); ps.setString(1, admin.getUsername()); ps.setString(2, admin.getLozinka()); ResultSet rs=ps.executeQuery(); if(rs.next()) { int adminID=rs.getInt("adminId"); String ime=rs.getString("ime"); String prezime=rs.getString("prezime"); a=new Admin(adminID, admin.getUsername(), admin.getLozinka(), ime, prezime); System.out.println("Admin "+a); return a; } } catch (SQLException ex) { Logger.getLogger(DBBroker.class.getName()).log(Level.SEVERE, null, ex); } return a; } //PopuniTabelu KlijentskiZahtev kz=new KlijentskiZahtev(Operacije.VRATI_ULOGOVANE_KORISNIKE, null); Komunikacija.getInstanca().posaljiZahtev(kz); ServerskiOdgovor so=Komunikacija.getInstanca().primiOdgovor(); List<User> listaKorisnika=(List<User>) so.getOdgovor(); ModelTabeleKorisnici mtk=new ModelTabeleKorisnici(listaKorisnika); tblKorisnici.setModel(mtk); //ZA SVE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //Izvlacenje i property fajla Properties probaj=new Properties(); try { probaj.load(new FileInputStream("Probaj1.properties")); } catch (Exception ex) { Logger.getLogger(Proba.class.getName()).log(Level.SEVERE, null, ex); } Double sr=Double.parseDouble(probaj.getProperty("SREDNJI_KURS_NBS")); System.out.println("Srednji kurs je "+sr); //Da se server pokrene kao konzolna aplikacija public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("Uneti dozvoljen broj klijenata"); int limit=scanner.nextInt(); Kontroler.getInstanca().setLimit(limit); PokreniServer ps=new PokreniServer(); ps.start(); } //Pretvaranje iz Date u String dateFormat.format(nastavnik.getDatumOd()); //Pretvaranje iz Stringa u Date s.parse(dateFormat.getTime()); //Pretvaraje sql u util datum java.sql.Date datumSQL=rs.getDate("datum"); java.util.Date datum=new java.util.Date(datumSQL.getTime()); //Validacija forme //Korisnicko ime samo slova boolean svaSlova=korisnickoIme.matches("[a-zA-Z]+"); //Lozinka mora da sadrzi i cifru i slovo boolean imaCifru=lozinka.matches(".*[0-9].*"); boolean imaSlovo=lozinka.matches(".*[a-zA-Z].*"); //Korisnicko ime mora da bude jedinstveno boolean jedinstveno=Kontroler.getInstanca().proveriKorisnickoIme(korisnickoIme); }
Leave a Comment